Integrate mainline
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Mon Jul 30 06:47:25 EET DST 2001 [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 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 from=''
169 run=''
170 targetarch=''
171 to=''
172 usecrosscompile=''
173 perllibs=''
174 dynamic_ext=''
175 extensions=''
176 known_extensions=''
177 nonxs_ext=''
178 static_ext=''
179 useopcode=''
180 useposix=''
181 extras=''
182 d_bsd=''
183 d_eunice=''
184 d_xenix=''
185 eunicefix=''
186 Mcc=''
187 ar=''
188 awk=''
189 bash=''
190 bison=''
191 byacc=''
192 cat=''
193 chgrp=''
194 chmod=''
195 chown=''
196 comm=''
197 compress=''
198 cp=''
199 cpio=''
200 cpp=''
201 csh=''
202 date=''
203 echo=''
204 egrep=''
205 emacs=''
206 expr=''
207 find=''
208 flex=''
209 grep=''
210 gzip=''
211 inews=''
212 ksh=''
213 less=''
214 line=''
215 lint=''
216 ln=''
217 lp=''
218 lpr=''
219 ls=''
220 mail=''
221 mailx=''
222 make=''
223 mkdir=''
224 more=''
225 mv=''
226 nm=''
227 nroff=''
228 perl=''
229 pg=''
230 pmake=''
231 pr=''
232 rm=''
233 rmail=''
234 sed=''
235 sendmail=''
236 shar=''
237 sleep=''
238 smail=''
239 sort=''
240 submit=''
241 tail=''
242 tar=''
243 tbl=''
244 tee=''
245 test=''
246 touch=''
247 tr=''
248 troff=''
249 uname=''
250 uniq=''
251 uuname=''
252 vi=''
253 zcat=''
254 zip=''
255 full_ar=''
256 full_sed=''
257 libswanted=''
258 hint=''
259 myuname=''
260 osname=''
261 osvers=''
262 Author=''
263 Date=''
264 Header=''
265 Id=''
266 Locker=''
267 Log=''
268 RCSfile=''
269 Revision=''
270 Source=''
271 State=''
272 _a=''
273 _exe=''
274 _o=''
275 archobjs=''
276 exe_ext=''
277 firstmakefile=''
278 lib_ext=''
279 obj_ext=''
280 path_sep=''
281 afs=''
282 afsroot=''
283 alignbytes=''
284 ansi2knr=''
285 archlib=''
286 archlibexp=''
287 d_archlib=''
288 installarchlib=''
289 archname=''
290 myarchname=''
291 d_atolf=''
292 d_atoll=''
293 baserev=''
294 bin=''
295 binexp=''
296 installbin=''
297 bincompat5005=''
298 d_bincompat5005=''
299 byteorder=''
300 cc=''
301 ccflags=''
302 cppflags=''
303 ldflags=''
304 lkflags=''
305 locincpth=''
306 optimize=''
307 cf_email=''
308 cf_by=''
309 cf_time=''
310 charsize=''
311 contains=''
312 cpp_stuff=''
313 cpplast=''
314 cppminus=''
315 cpprun=''
316 cppstdin=''
317 d__fwalk=''
318 d_access=''
319 d_accessx=''
320 d_alarm=''
321 d_attribut=''
322 d_bcmp=''
323 d_bcopy=''
324 d_bzero=''
325 d_casti32=''
326 castflags=''
327 d_castneg=''
328 d_chown=''
329 d_chroot=''
330 d_chsize=''
331 d_closedir=''
332 d_void_closedir=''
333 d_cmsghdr_s=''
334 d_const=''
335 cryptlib=''
336 d_crypt=''
337 d_csh=''
338 full_csh=''
339 d_cuserid=''
340 d_dbl_dig=''
341 d_dbminitproto=''
342 d_difftime=''
343 d_dlerror=''
344 d_dlopen=''
345 d_dlsymun=''
346 d_dosuid=''
347 d_suidsafe=''
348 d_drand48proto=''
349 d_dup2=''
350 d_eaccess=''
351 d_endgrent=''
352 d_endhent=''
353 d_endnent=''
354 d_endpent=''
355 d_endpwent=''
356 d_endsent=''
357 d_fchdir=''
358 d_fchmod=''
359 d_fchown=''
360 d_fcntl=''
361 d_fcntl_can_lock=''
362 d_fd_macros=''
363 d_fd_set=''
364 d_fds_bits=''
365 d_fgetpos=''
366 d_flexfnam=''
367 d_flock=''
368 d_flockproto=''
369 d_fork=''
370 d_fpos64_t=''
371 d_frexpl=''
372 d_fs_data_s=''
373 d_fseeko=''
374 d_fsetpos=''
375 d_fstatfs=''
376 d_fsync=''
377 d_ftello=''
378 d_ftime=''
379 d_gettimeod=''
380 d_Gconvert=''
381 d_getcwd=''
382 d_getespwnam=''
383 d_getfsstat=''
384 d_getgrent=''
385 d_getgrps=''
386 d_gethbyaddr=''
387 d_gethbyname=''
388 d_gethent=''
389 aphostname=''
390 d_gethname=''
391 d_phostname=''
392 d_uname=''
393 d_gethostprotos=''
394 d_getitimer=''
395 d_getlogin=''
396 d_getmnt=''
397 d_getmntent=''
398 d_getnbyaddr=''
399 d_getnbyname=''
400 d_getnent=''
401 d_getnetprotos=''
402 d_getpagsz=''
403 d_getpent=''
404 d_getpgid=''
405 d_getpgrp2=''
406 d_bsdgetpgrp=''
407 d_getpgrp=''
408 d_getppid=''
409 d_getprior=''
410 d_getpbyname=''
411 d_getpbynumber=''
412 d_getprotoprotos=''
413 d_getprpwnam=''
414 d_getpwent=''
415 d_getsent=''
416 d_getservprotos=''
417 d_getspnam=''
418 d_getsbyname=''
419 d_getsbyport=''
420 d_gnulibc=''
421 d_hasmntopt=''
422 d_htonl=''
423 d_iconv=''
424 d_inetaton=''
425 d_int64_t=''
426 d_isascii=''
427 d_isnan=''
428 d_isnanl=''
429 d_killpg=''
430 d_lchown=''
431 d_ldbl_dig=''
432 d_link=''
433 d_locconv=''
434 d_lockf=''
435 d_longdbl=''
436 longdblsize=''
437 d_longlong=''
438 longlongsize=''
439 d_lseekproto=''
440 d_lstat=''
441 d_madvise=''
442 d_mblen=''
443 d_mbstowcs=''
444 d_mbtowc=''
445 d_memchr=''
446 d_memcmp=''
447 d_memcpy=''
448 d_memmove=''
449 d_memset=''
450 d_mkdir=''
451 d_mkdtemp=''
452 d_mkfifo=''
453 d_mkstemp=''
454 d_mkstemps=''
455 d_mktime=''
456 d_mmap=''
457 mmaptype=''
458 d_modfl=''
459 d_modfl_pow32_bug=''
460 d_mprotect=''
461 d_msg=''
462 d_msgctl=''
463 d_msgget=''
464 d_msghdr_s=''
465 d_msgrcv=''
466 d_msgsnd=''
467 d_msync=''
468 d_munmap=''
469 d_nice=''
470 d_nl_langinfo=''
471 d_off64_t=''
472 d_open3=''
473 d_fpathconf=''
474 d_pathconf=''
475 d_pause=''
476 d_pipe=''
477 d_poll=''
478 d_portable=''
479 d_old_pthread_create_joinable=''
480 old_pthread_create_joinable=''
481 d_pthread_atfork=''
482 d_pthread_yield=''
483 d_sched_yield=''
484 sched_yield=''
485 d_qgcvt=''
486 d_readdir=''
487 d_rewinddir=''
488 d_seekdir=''
489 d_telldir=''
490 d_readlink=''
491 d_readv=''
492 d_recvmsg=''
493 d_rename=''
494 d_rmdir=''
495 d_safebcpy=''
496 d_safemcpy=''
497 d_sanemcmp=''
498 d_sbrkproto=''
499 d_select=''
500 d_sem=''
501 d_semctl=''
502 d_semget=''
503 d_semop=''
504 d_sendmsg=''
505 d_setegid=''
506 d_seteuid=''
507 d_setgrent=''
508 d_setgrps=''
509 d_sethent=''
510 d_setitimer=''
511 d_setlinebuf=''
512 d_setlocale=''
513 d_setnent=''
514 d_setpent=''
515 d_setpgid=''
516 d_setpgrp2=''
517 d_bsdsetpgrp=''
518 d_setpgrp=''
519 d_setprior=''
520 d_setproctitle=''
521 d_setpwent=''
522 d_setregid=''
523 d_setresgid=''
524 d_setresuid=''
525 d_setreuid=''
526 d_setrgid=''
527 d_setruid=''
528 d_setsent=''
529 d_setsid=''
530 d_setvbuf=''
531 d_sfio=''
532 usesfio=''
533 d_shm=''
534 d_shmat=''
535 d_shmatprototype=''
536 shmattype=''
537 d_shmctl=''
538 d_shmdt=''
539 d_shmget=''
540 d_sigaction=''
541 d_sigprocmask=''
542 d_sigsetjmp=''
543 d_sockatmark=''
544 d_sockatmarkproto=''
545 d_msg_ctrunc=''
546 d_msg_dontroute=''
547 d_msg_oob=''
548 d_msg_peek=''
549 d_msg_proxy=''
550 d_oldsock=''
551 d_scm_rights=''
552 d_socket=''
553 d_sockpair=''
554 sockethdr=''
555 socketlib=''
556 d_socklen_t=''
557 d_socks5_init=''
558 d_sqrtl=''
559 d_sresgproto=''
560 d_sresuproto=''
561 d_statblks=''
562 d_statfs_f_flags=''
563 d_statfs_s=''
564 d_fstatvfs=''
565 d_statvfs=''
566 d_stdio_cnt_lval=''
567 d_stdio_ptr_lval=''
568 d_stdio_ptr_lval_nochange_cnt=''
569 d_stdio_ptr_lval_sets_cnt=''
570 d_stdiobase=''
571 d_stdstdio=''
572 stdio_base=''
573 stdio_bufsiz=''
574 stdio_cnt=''
575 stdio_filbuf=''
576 stdio_ptr=''
577 d_index=''
578 d_strchr=''
579 d_strcoll=''
580 d_strctcpy=''
581 d_strerrm=''
582 d_strerror=''
583 d_sysernlst=''
584 d_syserrlst=''
585 d_strftime=''
586 d_strtod=''
587 d_strtol=''
588 d_strtold=''
589 d_strtoll=''
590 d_strtoq=''
591 d_strtoul=''
592 d_strtoull=''
593 d_strtouq=''
594 d_strxfrm=''
595 d_symlink=''
596 d_syscall=''
597 d_syscallproto=''
598 d_sysconf=''
599 d_system=''
600 d_tcgetpgrp=''
601 d_tcsetpgrp=''
602 d_telldirproto=''
603 d_time=''
604 timetype=''
605 clocktype=''
606 d_times=''
607 d_truncate=''
608 d_tzname=''
609 d_u32align=''
610 d_ualarm=''
611 d_umask=''
612 d_semctl_semid_ds=''
613 d_semctl_semun=''
614 d_union_semun=''
615 d_usleep=''
616 d_usleepproto=''
617 d_ustat=''
618 d_vfork=''
619 usevfork=''
620 d_voidsig=''
621 signal_t=''
622 d_volatile=''
623 d_charvspr=''
624 d_vprintf=''
625 d_wait4=''
626 d_waitpid=''
627 d_wcstombs=''
628 d_wctomb=''
629 d_writev=''
630 dlext=''
631 cccdlflags=''
632 ccdlflags=''
633 dlsrc=''
634 ld=''
635 lddlflags=''
636 usedl=''
637 doublesize=''
638 ebcdic=''
639 fflushNULL=''
640 fflushall=''
641 fpossize=''
642 fpostype=''
643 gccosandvers=''
644 gccversion=''
645 gidformat=''
646 gidsign=''
647 gidsize=''
648 gidtype=''
649 groupstype=''
650 h_fcntl=''
651 h_sysfile=''
652 i_arpainet=''
653 db_hashtype=''
654 db_prefixtype=''
655 db_version_major=''
656 db_version_minor=''
657 db_version_patch=''
658 i_db=''
659 i_dbm=''
660 i_rpcsvcdbm=''
661 d_dirnamlen=''
662 direntrytype=''
663 i_dirent=''
664 i_dld=''
665 i_dlfcn=''
666 i_fcntl=''
667 i_float=''
668 i_gdbm=''
669 d_grpasswd=''
670 i_grp=''
671 i_iconv=''
672 i_ieeefp=''
673 i_inttypes=''
674 i_langinfo=''
675 i_libutil=''
676 i_limits=''
677 i_locale=''
678 i_machcthr=''
679 i_malloc=''
680 i_math=''
681 i_memory=''
682 i_mntent=''
683 i_ndbm=''
684 i_netdb=''
685 i_neterrno=''
686 i_netinettcp=''
687 i_niin=''
688 i_sysin=''
689 i_poll=''
690 i_prot=''
691 i_pthread=''
692 d_pwage=''
693 d_pwchange=''
694 d_pwclass=''
695 d_pwcomment=''
696 d_pwexpire=''
697 d_pwgecos=''
698 d_pwpasswd=''
699 d_pwquota=''
700 i_pwd=''
701 i_sfio=''
702 i_shadow=''
703 i_socks=''
704 i_stddef=''
705 i_stdlib=''
706 i_string=''
707 strings=''
708 i_sunmath=''
709 i_sysaccess=''
710 i_sysdir=''
711 i_sysfile=''
712 d_voidtty=''
713 i_bsdioctl=''
714 i_sysfilio=''
715 i_sysioctl=''
716 i_syssockio=''
717 i_syslog=''
718 i_sysmman=''
719 i_sysmode=''
720 i_sysmount=''
721 i_sysndir=''
722 i_sysparam=''
723 i_sysresrc=''
724 i_syssecrt=''
725 i_sysselct=''
726 i_sysstat=''
727 i_sysstatfs=''
728 i_sysstatvfs=''
729 i_systimes=''
730 i_systypes=''
731 i_sysuio=''
732 i_sysun=''
733 i_sysutsname=''
734 i_sysvfs=''
735 i_syswait=''
736 i_sgtty=''
737 i_termio=''
738 i_termios=''
739 i_systime=''
740 i_systimek=''
741 i_time=''
742 timeincl=''
743 i_unistd=''
744 i_ustat=''
745 i_utime=''
746 i_values=''
747 i_stdarg=''
748 i_varargs=''
749 i_varhdr=''
750 i_vfork=''
751 inc_version_list=''
752 inc_version_list_init=''
753 installprefix=''
754 installprefixexp=''
755 installstyle=''
756 installusrbinperl=''
757 intsize=''
758 longsize=''
759 shortsize=''
760 issymlink=''
761 libc=''
762 ldlibpthname=''
763 libperl=''
764 shrpenv=''
765 useshrplib=''
766 glibpth=''
767 libpth=''
768 loclibpth=''
769 plibpth=''
770 xlibpth=''
771 ignore_versioned_solibs=''
772 libs=''
773 libsdirs=''
774 libsfiles=''
775 libsfound=''
776 libspath=''
777 lns=''
778 d_PRIEUldbl=''
779 d_PRIFUldbl=''
780 d_PRIGUldbl=''
781 d_PRIeldbl=''
782 d_PRIfldbl=''
783 d_PRIgldbl=''
784 d_SCNfldbl=''
785 sPRIEUldbl=''
786 sPRIFUldbl=''
787 sPRIGUldbl=''
788 sPRIeldbl=''
789 sPRIfldbl=''
790 sPRIgldbl=''
791 sSCNfldbl=''
792 lseeksize=''
793 lseektype=''
794 make_set_make=''
795 d_mymalloc=''
796 freetype=''
797 mallocobj=''
798 mallocsrc=''
799 malloctype=''
800 usemymalloc=''
801 installman1dir=''
802 man1dir=''
803 man1direxp=''
804 man1ext=''
805 installman3dir=''
806 man3dir=''
807 man3direxp=''
808 man3ext=''
809 modetype=''
810 multiarch=''
811 mydomain=''
812 myhostname=''
813 phostname=''
814 c=''
815 n=''
816 d_eofnblk=''
817 eagain=''
818 o_nonblock=''
819 rd_nodata=''
820 need_va_copy=''
821 netdb_hlen_type=''
822 netdb_host_type=''
823 netdb_name_type=''
824 netdb_net_type=''
825 groupcat=''
826 hostcat=''
827 passcat=''
828 orderlib=''
829 ranlib=''
830 d_perl_otherlibdirs=''
831 otherlibdirs=''
832 package=''
833 spackage=''
834 pager=''
835 api_revision=''
836 api_subversion=''
837 api_version=''
838 api_versionstring=''
839 patchlevel=''
840 perl_patchlevel=''
841 revision=''
842 subversion=''
843 version=''
844 version_patchlevel_string=''
845 perl5=''
846 perladmin=''
847 perlpath=''
848 d_nv_preserves_uv=''
849 d_nv_preserves_uv_bits=''
850 i16size=''
851 i16type=''
852 i32size=''
853 i32type=''
854 i64size=''
855 i64type=''
856 i8size=''
857 i8type=''
858 ivsize=''
859 ivtype=''
860 nvsize=''
861 nvtype=''
862 u16size=''
863 u16type=''
864 u32size=''
865 u32type=''
866 u64size=''
867 u64type=''
868 u8size=''
869 u8type=''
870 uvsize=''
871 uvtype=''
872 ivdformat=''
873 nvEUformat=''
874 nvFUformat=''
875 nvGUformat=''
876 nveformat=''
877 nvfformat=''
878 nvgformat=''
879 uvXUformat=''
880 uvoformat=''
881 uvuformat=''
882 uvxformat=''
883 pidtype=''
884 prefix=''
885 prefixexp=''
886 installprivlib=''
887 privlib=''
888 privlibexp=''
889 prototype=''
890 ptrsize=''
891 d_PRIXU64=''
892 d_PRId64=''
893 d_PRIi64=''
894 d_PRIo64=''
895 d_PRIu64=''
896 d_PRIx64=''
897 sPRIXU64=''
898 sPRId64=''
899 sPRIi64=''
900 sPRIo64=''
901 sPRIu64=''
902 sPRIx64=''
903 d_quad=''
904 quadkind=''
905 quadtype=''
906 uquadtype=''
907 drand01=''
908 randbits=''
909 randfunc=''
910 randseedtype=''
911 seedfunc=''
912 installscript=''
913 scriptdir=''
914 scriptdirexp=''
915 selectminbits=''
916 selecttype=''
917 sh=''
918 sig_count=''
919 sig_name=''
920 sig_name_init=''
921 sig_num=''
922 sig_num_init=''
923 sig_size=''
924 installsitearch=''
925 sitearch=''
926 sitearchexp=''
927 installsitebin=''
928 sitebin=''
929 sitebinexp=''
930 installsitelib=''
931 sitelib=''
932 sitelib_stem=''
933 sitelibexp=''
934 siteprefix=''
935 siteprefixexp=''
936 sizesize=''
937 sizetype=''
938 so=''
939 socksizetype=''
940 sharpbang=''
941 shsharp=''
942 spitshell=''
943 src=''
944 ssizetype=''
945 startperl=''
946 startsh=''
947 stdchar=''
948 d_stdio_stream_array=''
949 stdio_stream_array=''
950 sysman=''
951 trnl=''
952 uidformat=''
953 uidsign=''
954 uidsize=''
955 uidtype=''
956 archname64=''
957 use64bitall=''
958 use64bitint=''
959 ccflags_uselargefiles=''
960 ldflags_uselargefiles=''
961 libswanted_uselargefiles=''
962 uselargefiles=''
963 uselongdouble=''
964 usemorebits=''
965 usemultiplicity=''
966 nm_opt=''
967 nm_so_opt=''
968 runnm=''
969 usenm=''
970 useperlio=''
971 usesocks=''
972 d_oldpthreads=''
973 use5005threads=''
974 useithreads=''
975 usereentrant=''
976 usethreads=''
977 incpath=''
978 mips_type=''
979 usrinc=''
980 d_vendorarch=''
981 installvendorarch=''
982 vendorarch=''
983 vendorarchexp=''
984 d_vendorbin=''
985 installvendorbin=''
986 vendorbin=''
987 vendorbinexp=''
988 d_vendorlib=''
989 installvendorlib=''
990 vendorlib=''
991 vendorlib_stem=''
992 vendorlibexp=''
993 usevendorprefix=''
994 vendorprefix=''
995 vendorprefixexp=''
996 versiononly=''
997 defvoidused=''
998 voidflags=''
999 pm_apiversion=''
1000 xs_apiversion=''
1001 yacc=''
1002 yaccflags=''
1003 CONFIG=''
1004
1005 define='define'
1006 undef='undef'
1007 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1008 rmlist=''
1009
1010 : We must find out about Eunice early
1011 eunicefix=':'
1012 if test -f /etc/unixtovms; then
1013         eunicefix=/etc/unixtovms
1014 fi
1015 if test -f /etc/unixtovms.exe; then
1016         eunicefix=/etc/unixtovms.exe
1017 fi
1018
1019 i_whoami=''
1020 ccname=''
1021 ccversion=''
1022 perllibs=''
1023 : set useposix=false in your hint file to disable the POSIX extension.
1024 useposix=true
1025 : set useopcode=false in your hint file to disable the Opcode extension.
1026 useopcode=true
1027 : Trailing extension.  Override this in a hint file, if needed.
1028 _exe=''
1029 : Extra object files, if any, needed on this platform.
1030 archobjs=''
1031 archname=''
1032 : Possible local include directories to search.
1033 : Set locincpth to "" in a hint file to defeat local include searches.
1034 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1035 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1036 :
1037 : no include file wanted by default
1038 inclwanted=''
1039
1040 groupstype=''
1041 libnames=''
1042 : change the next line if compiling for Xenix/286 on Xenix/386
1043 xlibpth='/usr/lib/386 /lib/386'
1044 : Possible local library directories to search.
1045 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1046 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1047
1048 : general looking path for locating libraries
1049 glibpth="/lib /usr/lib $xlibpth"
1050 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1051 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1052 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1053
1054 : Private path used by Configure to find libraries.  Its value
1055 : is prepended to libpth. This variable takes care of special
1056 : machines, like the mips.  Usually, it should be empty.
1057 plibpth=''
1058
1059 : default library list
1060 libswanted=''
1061 : some systems want to use only the non-versioned libso:s
1062 ignore_versioned_solibs=''
1063 archname64=''
1064 ccflags_uselargefiles=''
1065 ldflags_uselargefiles=''
1066 libswanted_uselargefiles=''
1067 : set usemultiplicity on the Configure command line to enable multiplicity.
1068 : set usesocks on the Configure command line to enable socks.
1069 : set usethreads on the Configure command line to enable threads.
1070 usereentrant='undef'
1071 : full support for void wanted by default
1072 defvoidused=15
1073
1074 : List of libraries we want.
1075 : If anyone needs -lnet, put it in a hint file.
1076 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1077 libswanted="$libswanted dld ld sun m c cposix posix"
1078 libswanted="$libswanted ndir dir crypt sec"
1079 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1080 : We probably want to search /usr/shlib before most other libraries.
1081 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1082 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1083 glibpth="/usr/shlib $glibpth"
1084 : Do not use vfork unless overridden by a hint file.
1085 usevfork=false
1086
1087 : Find the basic shell for Bourne shell scripts
1088 case "$sh" in
1089 '')
1090         case "$SYSTYPE" in
1091         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1092         *) xxx='/bin/sh';;
1093         esac
1094         if test -f "$xxx"; then
1095                 sh="$xxx"
1096         else
1097                 : Build up a list and do a single loop so we can 'break' out.
1098                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1099                 for xxx in sh bash ksh pdksh ash; do
1100                         for p in $pth; do
1101                                 try="$try ${p}/${xxx}"
1102                         done
1103                 done
1104                 for xxx in $try; do
1105                         if test -f "$xxx"; then
1106                                 sh="$xxx";
1107                                 break
1108                         elif test -f "$xxx.exe"; then
1109                                 sh="$xxx";
1110                                 break
1111                         fi
1112                 done
1113         fi
1114         ;;
1115 esac
1116
1117 case "$sh" in
1118 '')     cat <<EOM >&2
1119 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1120
1121 Usually it's in /bin/sh.  How did you even get this far?
1122 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1123 we'll try to straighten this all out.
1124 EOM
1125         exit 1
1126         ;;
1127 esac
1128
1129 : see if sh knows # comments
1130 if `$sh -c '#' >/dev/null 2>&1`; then
1131         shsharp=true
1132         spitshell=cat
1133         xcat=/bin/cat
1134         test -f $xcat || xcat=/usr/bin/cat
1135         echo "#!$xcat" >sharp
1136         $eunicefix sharp
1137         chmod +x sharp
1138         ./sharp > today
1139         if test -s today; then
1140                 sharpbang='#!'
1141         else
1142                 echo "#! $xcat" > sharp
1143                 $eunicefix sharp
1144                 chmod +x sharp
1145                 ./sharp > today
1146                 if test -s today; then
1147                         sharpbang='#! '
1148                 else
1149                         sharpbang=': use '
1150                 fi
1151         fi
1152 else
1153         echo " "
1154         echo "Your $sh doesn't grok # comments--I will strip them later on."
1155         shsharp=false
1156         cd ..
1157         echo "exec grep -v '^[  ]*#'" >spitshell
1158         chmod +x spitshell
1159         $eunicefix spitshell
1160         spitshell=`pwd`/spitshell
1161         cd UU
1162         echo "I presume that if # doesn't work, #! won't work either!"
1163         sharpbang=': use '
1164 fi
1165 rm -f sharp today
1166
1167 : figure out how to guarantee sh startup
1168 case "$startsh" in
1169 '') startsh=${sharpbang}${sh} ;;
1170 *)
1171 esac
1172 cat >sharp <<EOSS
1173 $startsh
1174 set abc
1175 test "$?abc" != 1
1176 EOSS
1177
1178 chmod +x sharp
1179 $eunicefix sharp
1180 if ./sharp; then
1181         : echo "Yup, it does."
1182 else
1183         echo "Hmm... '$startsh' does not guarantee sh startup..."
1184         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1185 fi
1186 rm -f sharp
1187
1188
1189 : Save command line options in file UU/cmdline.opt for later use in
1190 : generating config.sh.
1191 cat > cmdline.opt <<EOSH
1192 # Configure command line arguments.
1193 config_arg0='$0'
1194 config_args='$*'
1195 config_argc=$#
1196 EOSH
1197 argn=1
1198 args_exp=''
1199 args_sep=''
1200 for arg in "$@"; do
1201         cat >>cmdline.opt <<EOSH
1202 config_arg$argn='$arg'
1203 EOSH
1204         # Extreme backslashitis: replace each ' by '"'"'
1205         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1206 $arg
1207 EOC
1208         arg_exp=`cat cmdl.opt`
1209         args_exp="$args_exp$args_sep'$arg_exp'"
1210         argn=`expr $argn + 1`
1211         args_sep=' '
1212 done
1213 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1214 # used by ./hints/os2.sh
1215 rm -f cmdl.opt
1216
1217 : produce awk script to parse command line options
1218 cat >options.awk <<'EOF'
1219 BEGIN {
1220         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1221
1222         len = length(optstr);
1223         for (i = 1; i <= len; i++) {
1224                 c = substr(optstr, i, 1);
1225                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1226                 if (a == ":") {
1227                         arg[c] = 1;
1228                         i++;
1229                 }
1230                 opt[c] = 1;
1231         }
1232 }
1233 {
1234         expect = 0;
1235         str = $0;
1236         if (substr(str, 1, 1) != "-") {
1237                 printf("'%s'\n", str);
1238                 next;
1239         }
1240         len = length($0);
1241         for (i = 2; i <= len; i++) {
1242                 c = substr(str, i, 1);
1243                 if (!opt[c]) {
1244                         printf("-%s\n", substr(str, i));
1245                         next;
1246                 }
1247                 printf("-%s\n", c);
1248                 if (arg[c]) {
1249                         if (i < len)
1250                                 printf("'%s'\n", substr(str, i + 1));
1251                         else
1252                                 expect = 1;
1253                         next;
1254                 }
1255         }
1256 }
1257 END {
1258         if (expect)
1259                 print "?";
1260 }
1261 EOF
1262
1263 : process the command line options
1264 set X `for arg in "$@"; do echo "X$arg"; done |
1265         sed -e s/X// | awk -f options.awk`
1266 eval "set $*"
1267 shift
1268 rm -f options.awk
1269
1270 : set up default values
1271 fastread=''
1272 reuseval=false
1273 config_sh=''
1274 alldone=''
1275 error=''
1276 silent=''
1277 extractsh=''
1278 override=''
1279 knowitall=''
1280 rm -f optdef.sh posthint.sh
1281 cat >optdef.sh <<EOS
1282 $startsh
1283 EOS
1284
1285
1286 : option parsing
1287 while test $# -gt 0; do
1288         case "$1" in
1289         -d) shift; fastread=yes;;
1290         -e) shift; alldone=cont;;
1291         -f)
1292                 shift
1293                 cd ..
1294                 if test -r "$1"; then
1295                         config_sh="$1"
1296                 else
1297                         echo "$me: cannot read config file $1." >&2
1298                         error=true
1299                 fi
1300                 cd UU
1301                 shift;;
1302         -h) shift; error=true;;
1303         -r) shift; reuseval=true;;
1304         -s) shift; silent=true; realsilent=true;;
1305         -E) shift; alldone=exit;;
1306         -K) shift; knowitall=true;;
1307         -O) shift; override=true;;
1308         -S) shift; silent=true; extractsh=true;;
1309         -D)
1310                 shift
1311                 case "$1" in
1312                 *=)
1313                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1314                         echo "$me: ignoring -D $1" >&2
1315                         ;;
1316                 *=*) echo "$1" | \
1317                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1318                 *) echo "$1='define'" >> optdef.sh;;
1319                 esac
1320                 shift
1321                 ;;
1322         -U)
1323                 shift
1324                 case "$1" in
1325                 *=) echo "$1" >> optdef.sh;;
1326                 *=*)
1327                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1328                         echo "$me: ignoring -U $1" >&2
1329                         ;;
1330                 *) echo "$1='undef'" >> optdef.sh;;
1331                 esac
1332                 shift
1333                 ;;
1334         -A)
1335             shift
1336             xxx=''
1337             yyy="$1"
1338             zzz=''
1339             uuu=undef
1340             case "$yyy" in
1341             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1342                  case "$zzz" in
1343                  *:*) zzz='' ;;
1344                  *)   xxx=append
1345                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1346                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1347                  esac
1348                  ;;
1349             esac
1350             case "$xxx" in
1351             '')  case "$yyy" in
1352                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1353                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1354                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1355                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1356                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1357                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1358                  esac
1359                  ;;       
1360             esac
1361             case "$xxx" in
1362             append)
1363                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1364             clear)
1365                 echo "$yyy=''"                  >> posthint.sh ;;
1366             define)
1367                 case "$zzz" in
1368                 '') zzz=define ;;
1369                 esac
1370                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1371             eval)
1372                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1373             prepend)
1374                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1375             undef)
1376                 case "$zzz" in
1377                 '') zzz="$uuu" ;;
1378                 esac
1379                 echo "$yyy=$zzz"                >> posthint.sh ;;
1380             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1381             esac
1382             shift
1383             ;;
1384         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1385             exit 0;;
1386         --) break;;
1387         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1388         *) break;;
1389         esac
1390 done
1391
1392 case "$error" in
1393 true)
1394         cat >&2 <<EOM
1395 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1396                  [-U symbol] [-U symbol=] [-A command:symbol...]
1397   -d : use defaults for all answers.
1398   -e : go on without questioning past the production of config.sh.
1399   -f : specify an alternate default configuration file.
1400   -h : print this help message and exit (with an error status).
1401   -r : reuse C symbols value if possible (skips costly nm extraction).
1402   -s : silent mode, only echoes questions and essential information.
1403   -D : define symbol to have some value:
1404          -D symbol         symbol gets the value 'define'
1405          -D symbol=value   symbol gets the value 'value'
1406   -E : stop at the end of questions, after having produced config.sh.
1407   -K : do not use unless you know what you are doing.
1408   -O : let -D and -U override definitions from loaded configuration file.
1409   -S : perform variable substitutions on all .SH files (can mix with -f)
1410   -U : undefine symbol:
1411          -U symbol    symbol gets the value 'undef'
1412          -U symbol=   symbol gets completely empty
1413   -A : manipulate symbol after the platform specific hints have been applied:
1414          -A symbol=value                append " "value to symbol
1415          -A append:symbol=value         append value to symbol
1416          -A define:symbol=value         define symbol to have value
1417          -A clear:symbol                define symbol to be ''
1418          -A define:symbol               define symbol to be 'define'
1419          -A eval:symbol=value           define symbol to be eval of value
1420          -A prepend:symbol=value        prepend value to symbol
1421          -A undef:symbol                define symbol to be 'undef'
1422          -A undef:symbol=               define symbol to be ''
1423   -V : print version number and exit (with a zero status).
1424 EOM
1425         exit 1
1426         ;;
1427 esac
1428
1429 : Sanity checks
1430 case "$fastread$alldone" in
1431 yescont|yesexit) ;;
1432 *)
1433         case "$extractsh" in
1434         true) ;;
1435         *)
1436                 if test ! -t 0; then
1437                         echo "Say 'sh Configure', not 'sh <Configure'"
1438                         exit 1
1439                 fi
1440                 ;;
1441         esac
1442         ;;
1443 esac
1444
1445 exec 4>&1
1446 case "$silent" in
1447 true) exec 1>/dev/null;;
1448 esac
1449
1450 : run the defines and the undefines, if any, but leave the file out there...
1451 touch optdef.sh
1452 . ./optdef.sh
1453 : create the posthint manipulation script and leave the file out there...
1454 touch posthint.sh
1455
1456 : set package name
1457 package=perl5
1458 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1459 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1460 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1461 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1462 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1463 esac
1464
1465 : Some greps do not return status, grrr.
1466 echo "grimblepritz" >grimble
1467 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1468         contains=contains
1469 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1470         contains=grep
1471 else
1472         contains=contains
1473 fi
1474 rm -f grimble
1475 : the following should work in any shell
1476 case "$contains" in
1477 contains*)
1478         echo " "
1479         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1480         cat >contains <<'EOSS'
1481 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1482 EOSS
1483 chmod +x contains
1484 esac
1485
1486 : Find the path to the source tree
1487 case "$src" in
1488 '') case "$0" in
1489     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1490          case "$src" in
1491          /*)    ;;
1492          .)     ;;
1493          *)     src=`cd ../$src && pwd` ;;
1494          esac
1495          ;;
1496     *)   src='.';;
1497     esac;;
1498 esac
1499 case "$src" in
1500 '')     src=/
1501         rsrc=/
1502         ;;
1503 /*) rsrc="$src";;
1504 *) rsrc="../$src";;
1505 esac
1506 if test -f $rsrc/Configure && \
1507         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1508 then
1509    : found it, so we are ok.
1510 else
1511         rsrc=''
1512         for src in . .. ../.. ../../.. ../../../..; do
1513                 if test -f ../$src/Configure && \
1514                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1515                 then
1516                         rsrc=../$src
1517                         break
1518                 fi
1519         done
1520 fi
1521 case "$rsrc" in
1522 '')
1523         cat <<EOM >&4
1524
1525 Sorry, I can't seem to locate the source dir for $package.  Please start
1526 Configure with an explicit path -- i.e. /some/path/Configure.
1527
1528 EOM
1529         exit 1
1530         ;;
1531 ../.)   rsrc='..';;
1532 *)
1533         echo " "
1534         echo "Sources for $package found in \"$src\"." >&4
1535         ;;
1536 esac
1537
1538 : script used to extract .SH files with variable substitutions
1539 cat >extract <<'EOS'
1540 PERL_CONFIG_SH=true
1541 echo "Doing variable substitutions on .SH files..."
1542 if test -f MANIFEST; then
1543         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1544 else
1545         echo "(Looking for .SH files under the source directory.)"
1546         set x `(cd $src; find . -name "*.SH" -print)`
1547 fi
1548 shift
1549 case $# in
1550 0) set x `(cd $src; echo *.SH)`; shift;;
1551 esac
1552 if test ! -f $src/$1; then
1553         shift
1554 fi
1555 mkdir_p='
1556 name=$1;
1557 create="";
1558 while test $name; do
1559         if test ! -d "$name"; then
1560                 create="$name $create";
1561                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1562                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1563         else
1564                 name="";
1565         fi;
1566 done;
1567 for file in $create; do
1568         mkdir $file;
1569 done
1570 '
1571 for file in $*; do
1572         case "$src" in
1573         ".")
1574                 case "$file" in
1575                 */*)
1576                         dir=`expr X$file : 'X\(.*\)/'`
1577                         file=`expr X$file : 'X.*/\(.*\)'`
1578                         (cd $dir && . ./$file)
1579                         ;;
1580                 *)
1581                         . ./$file
1582                         ;;
1583                 esac
1584                 ;;
1585         *)
1586                 case "$file" in
1587                 */*)
1588                         dir=`expr X$file : 'X\(.*\)/'`
1589                         file=`expr X$file : 'X.*/\(.*\)'`
1590                         (set x $dir; shift; eval $mkdir_p)
1591                         sh <$src/$dir/$file
1592                         ;;
1593                 *)
1594                         sh <$src/$file
1595                         ;;
1596                 esac
1597                 ;;
1598         esac
1599 done
1600 if test -f $src/config_h.SH; then
1601         if test ! -f config.h; then
1602         : oops, they left it out of MANIFEST, probably, so do it anyway.
1603         . $src/config_h.SH
1604         fi
1605 fi
1606 EOS
1607
1608 : extract files and exit if asked to do so
1609 case "$extractsh" in
1610 true)
1611         case "$realsilent" in
1612         true) ;;
1613         *) exec 1>&4;;
1614         esac
1615         case "$config_sh" in
1616         '') config_sh='config.sh';;
1617         esac
1618         echo " "
1619         echo "Fetching answers from $config_sh..."
1620         cd ..
1621         . $config_sh
1622         test "$override" && . ./optdef.sh
1623         echo " "
1624         . UU/extract
1625         rm -rf UU
1626         echo "Extraction done."
1627         exit 0
1628         ;;
1629 esac
1630
1631 : Eunice requires " " instead of "", can you believe it
1632 echo " "
1633 : Here we go...
1634 echo "Beginning of configuration questions for $package."
1635
1636 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1637
1638 : first determine how to suppress newline on echo command
1639 echo " "
1640 echo "Checking echo to see how to suppress newlines..."
1641 (echo "hi there\c" ; echo " ") >.echotmp
1642 if $contains c .echotmp >/dev/null 2>&1 ; then
1643         echo "...using -n."
1644         n='-n'
1645         c=''
1646 else
1647         cat <<'EOM'
1648 ...using \c
1649 EOM
1650         n=''
1651         c='\c'
1652 fi
1653 echo $n "The star should be here-->$c"
1654 echo '*'
1655 rm -f .echotmp
1656
1657 : Now test for existence of everything in MANIFEST
1658 echo " "
1659 if test -f $rsrc/MANIFEST; then
1660         echo "First let's make sure your kit is complete.  Checking..." >&4
1661         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1662         rm -f missing
1663         tmppwd=`pwd`
1664         for filelist in x??; do
1665                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1666         done
1667         if test -s missing; then
1668                 cat missing >&4
1669                 cat >&4 <<'EOM'
1670
1671 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1672
1673 You have the option of continuing the configuration process, despite the
1674 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1675 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1676 and contact the author (perlbug@perl.org).
1677
1678 EOM
1679                 echo $n "Continue? [n] $c" >&4
1680                 read ans
1681                 case "$ans" in
1682                 y*)
1683                         echo "Continuing..." >&4
1684                         rm -f missing
1685                         ;;
1686                 *)
1687                         echo "ABORTING..." >&4
1688                         kill $$
1689                         ;;
1690                 esac
1691         else
1692                 echo "Looks good..."
1693         fi
1694 else
1695         echo "There is no MANIFEST file.  I hope your kit is complete !"
1696 fi
1697 rm -f missing x??
1698
1699 echo " "
1700 : Find the appropriate value for a newline for tr
1701 if test -n "$DJGPP"; then
1702        trnl='\012'
1703 fi
1704 if test X"$trnl" = X; then
1705         case "`echo foo|tr '\n' x 2>/dev/null`" in
1706         foox) trnl='\n' ;;
1707         esac
1708 fi
1709 if test X"$trnl" = X; then
1710         case "`echo foo|tr '\012' x 2>/dev/null`" in
1711         foox) trnl='\012' ;;
1712         esac
1713 fi
1714 if test X"$trnl" = X; then
1715         cat <<EOM >&2
1716
1717 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1718
1719 EOM
1720         exit 1
1721 fi
1722
1723 : compute the number of columns on the terminal for proper question formatting
1724 case "$COLUMNS" in
1725 '') COLUMNS='80';;
1726 esac
1727
1728 : set up the echo used in my read
1729 myecho="case \"\$xxxm\" in
1730 '') echo $n \"\$rp $c\" >&4;;
1731 *) case \"\$rp\" in
1732         '') echo $n \"[\$xxxm] $c\";;
1733         *)
1734                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1735                         echo \"\$rp\" >&4
1736                         echo $n \"[\$xxxm] $c\" >&4
1737                 else
1738                         echo $n \"\$rp [\$xxxm] $c\" >&4
1739                 fi
1740                 ;;
1741         esac;;
1742 esac"
1743
1744 : now set up to do reads with possible shell escape and default assignment
1745 cat <<EOSC >myread
1746 $startsh
1747 xxxm=\$dflt
1748 $myecho
1749 ans='!'
1750 case "\$fastread" in
1751 yes) case "\$dflt" in
1752         '') ;;
1753         *) ans='';
1754                 case "\$silent-\$rp" in
1755                 true-) ;;
1756                 *) echo " " >&4;;
1757                 esac;;
1758         esac;;
1759 *) case "\$silent" in
1760         true) case "\$rp" in
1761                 '') ans='';;
1762                 esac;;
1763         esac;;
1764 esac
1765 while expr "X\$ans" : "X!" >/dev/null; do
1766         read answ
1767         set x \$xxxm
1768         shift
1769         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1770         case  "\$answ" in
1771         "!")
1772                 sh 1>&4
1773                 echo " "
1774                 $myecho
1775                 ;;
1776         !*)
1777                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1778                 shift
1779                 sh 1>&4 -c "\$*"
1780                 echo " "
1781                 $myecho
1782                 ;;
1783         "\$ans")
1784                 case "\$ans" in
1785                 \\&*)
1786                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1787                         shift
1788                         case "\$1" in
1789                         -d)
1790                                 fastread=yes
1791                                 echo "(OK, I'll run with -d after this question.)" >&4
1792                                 ;;
1793                         -*)
1794                                 echo "*** Sorry, \$1 not supported yet." >&4
1795                                 ;;
1796                         esac
1797                         $myecho
1798                         ans=!
1799                         ;;
1800                 esac;;
1801         *)
1802                 case "\$aok" in
1803                 y)
1804                         echo "*** Substitution done -- please confirm."
1805                         xxxm="\$ans"
1806                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1807                         xxxm="\$ans"
1808                         ans=!
1809                         ;;
1810                 *)
1811                         echo "*** Error -- try again."
1812                         ans=!
1813                         ;;
1814                 esac
1815                 $myecho
1816                 ;;
1817         esac
1818         case "\$ans\$xxxm\$nostick" in
1819         '')
1820                 ans=!
1821                 $myecho
1822                 ;;
1823         esac
1824 done
1825 case "\$ans" in
1826 '') ans="\$xxxm";;
1827 esac
1828 EOSC
1829
1830 : create .config dir to save info across Configure sessions
1831 test -d ../.config || mkdir ../.config
1832 cat >../.config/README <<EOF
1833 This directory created by Configure to save information that should
1834 persist across sessions for $package.
1835
1836 You may safely delete it if you wish.
1837 EOF
1838
1839 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1840 case "$usedevel" in
1841 $define|true|[yY]*) ;;
1842 *) case "$xversion" in
1843    *[13579])
1844         cat >&4 <<EOH
1845 *** WHOA THERE!!! ***
1846
1847     This is an UNSTABLE DEVELOPMENT release.
1848     The version of this $package distribution is $xversion, that is, odd,
1849     (as opposed to even) and that signifies a development release.
1850     If you want a maintenance release, you want an even-numbered version.
1851
1852     Do ***NOT*** install this into production use.
1853     Data corruption and crashes are possible.
1854
1855     It is most seriously suggested that you do not continue any further
1856     unless you want to help in developing and debugging Perl.
1857
1858     If you *still* want to build perl, you can answer 'y' now,
1859     or pass -Dusedevel to Configure.
1860
1861 EOH
1862         rp='Do you really want to continue?'
1863         dflt='n'
1864         . ./myread
1865         case "$ans" in
1866         [yY]) echo >&4 "Okay, continuing."
1867               usedevel="$define" ;;
1868         *) echo >&4 "Okay, bye."
1869            exit 1
1870            ;;
1871         esac
1872         ;;
1873     esac
1874     ;;
1875 esac
1876 case "$usedevel" in
1877 $define|true|[yY]*)
1878         case "$versiononly" in
1879         '') versiononly="$define" ;;
1880         esac
1881         case "$installusrbinperl" in
1882         '') installusrbinperl="$undef" ;;
1883         esac
1884         ;;
1885 esac
1886
1887 : general instructions
1888 needman=true
1889 firsttime=true
1890 user=`(logname) 2>/dev/null`
1891 case "$user" in
1892 '') user=`whoami 2>&1`;;
1893 esac
1894 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1895         firsttime=false
1896         echo " "
1897         rp='Would you like to see the instructions?'
1898         dflt=n
1899         . ./myread
1900         case "$ans" in
1901         [yY]*) ;;
1902         *) needman=false;;
1903         esac
1904 fi
1905 if $needman; then
1906         cat <<EOH
1907
1908 This installation shell script will examine your system and ask you questions
1909 to determine how the perl5 package should be installed. If you get
1910 stuck on a question, you may use a ! shell escape to start a subshell or
1911 execute a command.  Many of the questions will have default answers in square
1912 brackets; typing carriage return will give you the default.
1913
1914 On some of the questions which ask for file or directory names you are allowed
1915 to use the ~name construct to specify the login directory belonging to "name",
1916 even if you don't have a shell which knows about that.  Questions where this is
1917 allowed will be marked "(~name ok)".
1918
1919 EOH
1920         rp=''
1921         dflt='Type carriage return to continue'
1922         . ./myread
1923         cat <<'EOH'
1924
1925 The prompter used in this script allows you to use shell variables and
1926 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1927 in the default answer, as if the default line was a set of arguments given to a
1928 script shell.  This means you may also use $* to repeat the whole default line,
1929 so you do not have to re-type everything to add something to the default.
1930
1931 Everytime there is a substitution, you will have to confirm.  If there is an
1932 error (e.g. an unmatched backtick), the default answer will remain unchanged
1933 and you will be prompted again.
1934
1935 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1936 the questions and use the computed defaults (or the previous answers if there
1937 was already a config.sh file). Type 'Configure -h' for a list of options.
1938 You may also start interactively and then answer '& -d' at any prompt to turn
1939 on the non-interactive behaviour for the remainder of the execution.
1940
1941 EOH
1942         . ./myread
1943         cat <<EOH
1944
1945 Much effort has been expended to ensure that this shell script will run on any
1946 Unix system.  If despite that it blows up on yours, your best bet is to edit
1947 Configure and run it again.  If you can't run Configure for some reason,
1948 you'll have to generate a config.sh file by hand.  Whatever problems you
1949 have, let me (perlbug@perl.org) know how I blew it.
1950
1951 This installation script affects things in two ways:
1952
1953 1) it may do direct variable substitutions on some of the files included
1954    in this kit.
1955 2) it builds a config.h file for inclusion in C programs.  You may edit
1956    any of these files as the need arises after running this script.
1957
1958 If you make a mistake on a question, there is no easy way to back up to it
1959 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1960 files.  Configure will offer to let you do this before it runs the SH files.
1961
1962 EOH
1963         dflt='Type carriage return to continue'
1964         . ./myread
1965         case "$firsttime" in
1966         true) echo $user >>../.config/instruct;;
1967         esac
1968 fi
1969
1970 : find out where common programs are
1971 echo " "
1972 echo "Locating common programs..." >&4
1973 cat <<EOSC >loc
1974 $startsh
1975 case \$# in
1976 0) exit 1;;
1977 esac
1978 thing=\$1
1979 shift
1980 dflt=\$1
1981 shift
1982 for dir in \$*; do
1983         case "\$thing" in
1984         .)
1985         if test -d \$dir/\$thing; then
1986                 echo \$dir
1987                 exit 0
1988         fi
1989         ;;
1990         *)
1991         for thisthing in \$dir/\$thing; do
1992                 : just loop through to pick last item
1993         done
1994         if test -f \$thisthing; then
1995                 echo \$thisthing
1996                 exit 0
1997         elif test -f \$dir/\$thing.exe; then
1998                 if test -n "$DJGPP"; then
1999                         echo \$dir/\$thing.exe
2000                 else
2001                         : on Eunice apparently
2002                         echo \$dir/\$thing
2003                 fi
2004                 exit 0
2005         fi
2006         ;;
2007         esac
2008 done
2009 echo \$dflt
2010 exit 1
2011 EOSC
2012 chmod +x loc
2013 $eunicefix loc
2014 loclist="
2015 awk
2016 cat
2017 chmod
2018 comm
2019 cp
2020 echo
2021 expr
2022 grep
2023 ls
2024 make
2025 mkdir
2026 rm
2027 sed
2028 sort
2029 touch
2030 tr
2031 uniq
2032 "
2033 trylist="
2034 Mcc
2035 ar
2036 bison
2037 byacc
2038 cpp
2039 csh
2040 date
2041 egrep
2042 gzip
2043 less
2044 ln
2045 more
2046 nm
2047 nroff
2048 pg
2049 test
2050 uname
2051 zip
2052 "
2053 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2054 pth="$pth /lib /usr/lib"
2055 for file in $loclist; do
2056         eval xxx=\$$file
2057         case "$xxx" in
2058         /*|?:[\\/]*)
2059                 if test -f "$xxx"; then
2060                         : ok
2061                 else
2062                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2063                         xxx=`./loc $file $file $pth`
2064                 fi
2065                 ;;
2066         '') xxx=`./loc $file $file $pth`;;
2067         *) xxx=`./loc $xxx $xxx $pth`;;
2068         esac
2069         eval $file=$xxx
2070         eval _$file=$xxx
2071         case "$xxx" in
2072         /*)
2073                 echo $file is in $xxx.
2074                 ;;
2075         ?:[\\/]*)
2076                 echo $file is in $xxx.
2077                 ;;
2078         *)
2079                 echo "I don't know where '$file' is, and my life depends on it." >&4
2080                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2081                 exit 1
2082                 ;;
2083         esac
2084 done
2085 echo " "
2086 echo "Don't worry if any of the following aren't found..."
2087 say=offhand
2088 for file in $trylist; do
2089         eval xxx=\$$file
2090         case "$xxx" in
2091         /*|?:[\\/]*)
2092                 if test -f "$xxx"; then
2093                         : ok
2094                 else
2095                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2096                         xxx=`./loc $file $file $pth`
2097                 fi
2098                 ;;
2099         '') xxx=`./loc $file $file $pth`;;
2100         *) xxx=`./loc $xxx $xxx $pth`;;
2101         esac
2102         eval $file=$xxx
2103         eval _$file=$xxx
2104         case "$xxx" in
2105         /*)
2106                 echo $file is in $xxx.
2107                 ;;
2108         ?:[\\/]*)
2109                 echo $file is in $xxx.
2110                 ;;
2111         *)
2112                 echo "I don't see $file out there, $say."
2113                 say=either
2114                 ;;
2115         esac
2116 done
2117 case "$egrep" in
2118 egrep)
2119         echo "Substituting grep for egrep."
2120         egrep=$grep
2121         ;;
2122 esac
2123 case "$ln" in
2124 ln)
2125         echo "Substituting cp for ln."
2126         ln=$cp
2127         ;;
2128 esac
2129 case "$test" in
2130 test)
2131         echo "Hopefully test is built into your sh."
2132         ;;
2133 *)
2134         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2135                 echo "Using the test built into your sh."
2136                 test=test
2137                 _test=test
2138         fi
2139         ;;
2140 esac
2141 case "$echo" in
2142 echo)
2143         echo "Hopefully echo is built into your sh."
2144         ;;
2145 '') ;;
2146 *)
2147         echo " "
2148 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2149         $echo $n "hi there$c" >foo1
2150         echo $n "hi there$c" >foo2
2151         if cmp foo1 foo2 >/dev/null 2>&1; then
2152                 echo "They are compatible.  In fact, they may be identical."
2153         else
2154                 case "$n" in
2155                 '-n') n='' c='\c';;
2156                 *) n='-n' c='';;
2157                 esac
2158                 cat <<FOO
2159 They are not compatible!  You are probably running ksh on a non-USG system.
2160 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2161 have echo built in and we may have to run some Bourne shell scripts.  That
2162 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2163
2164 FOO
2165                 $echo $n "The star should be here-->$c"
2166                 $echo "*"
2167         fi
2168         $rm -f foo1 foo2
2169         ;;
2170 esac
2171
2172 cat <<EOS >checkcc
2173 $startsh
2174 EOS
2175 cat <<'EOSC' >>checkcc
2176 case "$cc" in
2177 '') ;;
2178 *)  $rm -f try try.*
2179     $cat >try.c <<EOM
2180 int main(int argc, char *argv[]) {
2181   return 0;
2182 }
2183 EOM
2184     if $cc -o try $ccflags $ldflags try.c; then
2185        :
2186     else
2187         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2188         despair=yes
2189         trygcc=yes
2190         case "$cc" in
2191         *gcc*) trygcc=no ;;
2192         esac
2193         case "`$cc -v -c try.c 2>&1`" in
2194         *gcc*) trygcc=no ;;
2195         esac
2196         if $test X"$trygcc" = Xyes; then
2197             if gcc -o try -c try.c; then
2198                 echo " "
2199                 echo "You seem to have a working gcc, though." >&4
2200                 rp="Would you like to use it?"
2201                 dflt=y
2202                 if $test -f myread; then
2203                     . ./myread
2204                 else
2205                     if $test -f UU/myread; then
2206                         . ./UU/myread
2207                     else
2208                         echo "Cannot find myread, sorry.  Aborting." >&2
2209                         exit 1
2210                     fi
2211                 fi  
2212                 case "$ans" in
2213                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2214                 esac
2215             fi
2216         fi
2217         if $test X"$despair" = Xyes; then
2218             $cat >&4 <<EOM
2219 You need to find a working C compiler.
2220 Either (purchase and) install the C compiler supplied by your OS vendor,
2221 or for a free C compiler try http://gcc.gnu.org/
2222 I cannot continue any further, aborting.
2223 EOM
2224             exit 1
2225         fi
2226     fi
2227     $rm -f try try.*
2228     ;;
2229 esac
2230 EOSC
2231
2232 : determine whether symbolic links are supported
2233 echo " "
2234 $touch blurfl
2235 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2236         echo "Symbolic links are supported." >&4
2237         lns="$ln -s"
2238 else
2239         echo "Symbolic links are NOT supported." >&4
2240         lns="$ln"
2241 fi
2242 $rm -f blurfl sym
2243
2244 : determine whether symbolic links are supported
2245 echo " "
2246 case "$lns" in
2247 *"ln -s")
2248         echo "Checking how to test for symbolic links..." >&4
2249         $lns blurfl sym
2250         if $test "X$issymlink" = X; then
2251                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2252                 if test $? = 0; then
2253                         issymlink="test -h"
2254                 fi              
2255         fi
2256         if $test "X$issymlink" = X; then
2257                 if  $test -h >/dev/null 2>&1; then
2258                         issymlink="$test -h"
2259                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2260                 fi              
2261         fi
2262         if $test "X$issymlink" = X; then
2263                 if $test -L sym 2>/dev/null; then
2264                         issymlink="$test -L"
2265                 fi
2266         fi
2267         if $test "X$issymlink" != X; then
2268                 echo "You can test for symbolic links with '$issymlink'." >&4
2269         else
2270                 echo "I do not know how you can test for symbolic links." >&4
2271         fi
2272         $rm -f blurfl sym
2273         ;;
2274 *)      echo "No symbolic links, so not testing for their testing..." >&4
2275         ;;
2276 esac
2277 echo " "
2278
2279
2280 case "$mksymlinks" in
2281 $define|true|[yY]*)
2282         case "$src" in
2283         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2284                 exit 1
2285                 ;;
2286         *)      case "$lns:$issymlink" in
2287                 *"ln -s:"*"test -"?)
2288                         echo "Creating the symbolic links..." >&4
2289                         echo "(First creating the subdirectories...)" >&4
2290                         cd ..
2291                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2292                                 read directory
2293                                 test -z "$directory" && break
2294                                 mkdir -p $directory
2295                         done
2296                         # Sanity check 1.
2297                         if test ! -d t/base; then
2298                                 echo "Failed to create the subdirectories.  Aborting." >&4
2299                                 exit 1
2300                         fi
2301                         echo "(Then creating the symlinks...)" >&4
2302                         awk '{print $1}' $src/MANIFEST | while true; do
2303                                 read filename
2304                                 test -z "$filename" && break
2305                                 if test -f $filename; then
2306                                         if $issymlink $filename; then
2307                                                 rm -f $filename
2308                                         fi
2309                                 fi
2310                                 if test -f $filename; then
2311                                         echo "$filename already exists, not symlinking."
2312                                 else
2313                                         ln -s $src/$filename $filename
2314                                 fi
2315                         done
2316                         # Sanity check 2.
2317                         if test ! -f t/base/lex.t; then
2318                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2319                                 exit 1
2320                         fi
2321                         cd UU
2322                         ;;
2323                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2324                         ;;
2325                 esac
2326                 ;;
2327         esac
2328         ;;
2329 esac
2330
2331
2332 case "$usecrosscompile" in
2333 $define|true|[yY]*)
2334         $echo "Cross-compiling..."
2335         croak=''
2336         case "$cc" in
2337         *-*-gcc) # A cross-compiling gcc, probably.
2338             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2339             ar=$targetarch-ar
2340             # leave out ld, choosing it is more complex
2341             nm=$targetarch-nm
2342             ranlib=$targetarch-ranlib
2343             $echo 'extern int foo;' > try.c
2344             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2345             shift
2346             if $test $# -gt 0; then
2347                 incpth="$incpth $*"
2348                 incpth="`$echo $incpth|$sed 's/^ //'`"
2349                 echo "Guessing incpth '$incpth'." >&4
2350                 for i in $*; do
2351                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2352                     if $test -d $j; then
2353                         libpth="$libpth $j"
2354                     fi
2355                 done   
2356                 libpth="`$echo $libpth|$sed 's/^ //'`"
2357                 echo "Guessing libpth '$libpth'." >&4
2358             fi
2359             $rm -f try.c
2360             ;;
2361         esac
2362         case "$targetarch" in
2363         '') echo "Targetarch not defined." >&4; croak=y ;;
2364         *)  echo "Using targetarch $targetarch." >&4 ;;
2365         esac
2366         case "$incpth" in
2367         '') echo "Incpth not defined." >&4; croak=y ;;
2368         *)  echo "Using incpth '$incpth'." >&4 ;;
2369         esac
2370         case "$libpth" in
2371         '') echo "Libpth not defined." >&4; croak=y ;;
2372         *)  echo "Using libpth '$libpth'." >&4 ;;
2373         esac
2374         case "$usrinc" in
2375         '') for i in $incpth; do
2376                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2377                     usrinc=$i
2378                     echo "Guessing usrinc $usrinc." >&4
2379                     break
2380                 fi
2381             done
2382             case "$usrinc" in
2383             '') echo "Usrinc not defined." >&4; croak=y ;;
2384             esac
2385             ;;
2386         *)  echo "Using usrinc $usrinc." >&4 ;;
2387         esac
2388         case "$targethost" in
2389         '') echo "Targethost not defined." >&4; croak=y ;;
2390         *)  echo "Using targethost $targethost." >&4
2391         esac
2392         locincpth=' '
2393         loclibpth=' '
2394         case "$croak" in
2395         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2396         esac
2397         case "$src" in
2398         /*) run=$src/Cross/run
2399             targetmkdir=$src/Cross/mkdir
2400             to=$src/Cross/to
2401             from=$src/Cross/from
2402             ;;
2403         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2404             run=$pwd/Cross/run
2405             targetmkdir=$pwd/Cross/mkdir
2406             to=$pwd/Cross/to
2407             from=$pwd/Cross/from
2408             ;;
2409         esac
2410         case "$targetrun" in
2411         '') targetrun=ssh ;;
2412         esac
2413         case "$targetto" in
2414         '') targetto=scp ;;
2415         esac
2416         case "$targetfrom" in
2417         '') targetfrom=scp ;;
2418         esac
2419         run=$run-$targetrun
2420         to=$to-$targetto
2421         from=$from-$targetfrom
2422         case "$targetdir" in
2423         '')  targetdir=/tmp
2424              echo "Guessing targetdir $targetdir." >&4
2425              ;;
2426         esac
2427         case "$targetuser" in
2428         '')  targetuser=root
2429              echo "Guessing targetuser $targetuser." >&4
2430              ;;
2431         esac
2432         case "$targetfrom" in
2433         scp)    q=-q ;;
2434         *)      q='' ;;
2435         esac
2436         case "$targetrun" in
2437         ssh|rsh)
2438             cat >$run <<EOF
2439 #!/bin/sh
2440 case "\$1" in
2441 -cwd)
2442   shift
2443   cwd=\$1
2444   shift
2445   ;;
2446 esac
2447 case "\$cwd" in
2448 '') cwd=$targetdir ;;
2449 esac
2450 exe=\$1
2451 shift
2452 if $test ! -f \$exe.xok; then
2453   $to \$exe
2454   $touch \$exe.xok
2455 fi
2456 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2457 EOF
2458             ;;
2459         *)  echo "Unknown targetrun '$targetrun'" >&4
2460             exit 1
2461             ;;
2462         esac
2463         case "$targetmkdir" in
2464         */Cross/mkdir)
2465             cat >$targetmkdir <<EOF
2466 #!/bin/sh
2467 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2468 EOF
2469             $chmod a+rx $targetmkdir
2470             ;;
2471         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2472             exit 1
2473             ;;
2474         esac
2475         case "$targetto" in
2476         scp|rcp)
2477             cat >$to <<EOF
2478 #!/bin/sh
2479 for f in \$@
2480 do
2481   case "\$f" in
2482   /*)
2483     $targetmkdir \`dirname \$f\`
2484     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2485     ;;
2486   *)
2487     $targetmkdir $targetdir/\`dirname \$f\`
2488     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2489     ;;
2490   esac
2491 done
2492 exit 0
2493 EOF
2494             ;;
2495         cp) cat >$to <<EOF
2496 #!/bin/sh
2497 for f in \$@
2498 do
2499   case "\$f" in
2500   /*)
2501     $mkdir -p $targetdir/\`dirname \$f\`
2502     $cp \$f $targetdir/\$f || exit 1
2503     ;;
2504   *)
2505     $targetmkdir $targetdir/\`dirname \$f\`
2506     $cp \$f $targetdir/\$f || exit 1
2507     ;;
2508   esac
2509 done
2510 exit 0
2511 EOF
2512             ;;
2513         *)  echo "Unknown targetto '$targetto'" >&4
2514             exit 1
2515             ;;
2516         esac
2517         case "$targetfrom" in
2518         scp|rcp)
2519           cat >$from <<EOF
2520 #!/bin/sh
2521 for f in \$@
2522 do
2523   $rm -f \$f
2524   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2525 done
2526 exit 0
2527 EOF
2528             ;;
2529         cp) cat >$from <<EOF
2530 #!/bin/sh
2531 for f in \$@
2532 do
2533   $rm -f \$f
2534   cp $targetdir/\$f . || exit 1
2535 done
2536 exit 0
2537 EOF
2538             ;;
2539         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2540             exit 1
2541             ;;
2542         esac
2543         if $test ! -f $run; then
2544             echo "Target 'run' script '$run' not found." >&4
2545         else
2546             $chmod a+rx $run
2547         fi
2548         if $test ! -f $to; then
2549             echo "Target 'to' script '$to' not found." >&4
2550         else
2551             $chmod a+rx $to
2552         fi
2553         if $test ! -f $from; then
2554             echo "Target 'from' script '$from' not found." >&4
2555         else
2556             $chmod a+rx $from
2557         fi
2558         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2559             exit 1
2560         fi
2561         cat >&4 <<EOF
2562 Using '$run' for remote execution,
2563 and '$from' and '$to'
2564 for remote file transfer.
2565 EOF
2566         ;;
2567 *)      run=''
2568         to=:
2569         from=:
2570         usecrosscompile='undef'
2571         targetarch=''
2572         ;;
2573 esac
2574
2575 : see whether [:lower:] and [:upper:] are supported character classes
2576 echo " "
2577 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2578 ABYZ)
2579         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2580         up='[:upper:]'
2581         low='[:lower:]'
2582         ;;
2583 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2584         # (0xc9 and 0xd1), therefore that is a nice testing point.
2585         if test "X$up" = X -o "X$low" = X; then
2586             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2587             ij) up='[A-Z]'
2588                 low='[a-z]'
2589                 ;;
2590             esac
2591         fi
2592         if test "X$up" = X -o "X$low" = X; then
2593             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2594             ij) up='A-Z'
2595                 low='a-z'
2596                 ;;
2597             esac
2598         fi
2599         if test "X$up" = X -o "X$low" = X; then
2600             case "`echo IJ | od -x 2>/dev/null`" in
2601             *C9D1*|*c9d1*)
2602                 echo "Hey, this might be EBCDIC." >&4
2603                 if test "X$up" = X -o "X$low" = X; then
2604                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2605                     ij) up='[A-IJ-RS-Z]'
2606                         low='[a-ij-rs-z]'
2607                         ;;
2608                     esac
2609                 fi
2610                 if test "X$up" = X -o "X$low" = X; then
2611                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2612                     ij) up='A-IJ-RS-Z'
2613                         low='a-ij-rs-z'
2614                         ;;
2615                     esac
2616                 fi
2617                 ;;
2618             esac
2619         fi
2620 esac
2621 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2622 ij)
2623     echo "Using $up and $low to convert case." >&4
2624     ;;
2625 *)
2626     echo "I don't know how to translate letters from upper to lower case." >&4
2627     echo "Your tr is not acting any way I know of." >&4
2628     exit 1
2629     ;;
2630 esac
2631 : set up the translation script tr, must be called with ./tr of course
2632 cat >tr <<EOSC
2633 $startsh
2634 case "\$1\$2" in
2635 '[A-Z][a-z]') exec $tr '$up' '$low';;
2636 '[a-z][A-Z]') exec $tr '$low' '$up';;
2637 esac
2638 exec $tr "\$@"
2639 EOSC
2640 chmod +x tr
2641 $eunicefix tr
2642
2643 : Try to determine whether config.sh was made on this system
2644 case "$config_sh" in
2645 '')
2646 myuname=`$uname -a 2>/dev/null`
2647 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2648 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2649 # because the A-Z/a-z are not consecutive.
2650 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2651         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2652 newmyuname="$myuname"
2653 dflt=n
2654 case "$knowitall" in
2655 '')
2656         if test -f ../config.sh; then
2657                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2658                         eval "`grep myuname= ../config.sh`"
2659                 fi
2660                 if test "X$myuname" = "X$newmyuname"; then
2661                         dflt=y
2662                 fi
2663         fi
2664         ;;
2665 *) dflt=y;;
2666 esac
2667
2668 : Get old answers from old config file if Configure was run on the
2669 : same system, otherwise use the hints.
2670 hint=default
2671 cd ..
2672 if test -f config.sh; then
2673         echo " "
2674         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2675         . UU/myread
2676         case "$ans" in
2677         n*|N*) echo "OK, I'll ignore it."
2678                 mv config.sh config.sh.old
2679                 myuname="$newmyuname"
2680                 ;;
2681         *)  echo "Fetching default answers from your old config.sh file..." >&4
2682                 tmp_n="$n"
2683                 tmp_c="$c"
2684                 tmp_sh="$sh"
2685                 . ./config.sh
2686                 cp config.sh UU
2687                 n="$tmp_n"
2688                 c="$tmp_c"
2689                 : Older versions did not always set $sh.  Catch re-use of such
2690                 : an old config.sh.
2691                 case "$sh" in
2692                 '') sh="$tmp_sh" ;;
2693                 esac
2694                 hint=previous
2695                 ;;
2696         esac
2697 fi
2698 . ./UU/checkcc
2699 if test ! -f config.sh; then
2700         $cat <<EOM
2701
2702 First time through, eh?  I have some defaults handy for some systems
2703 that need some extra help getting the Configure answers right:
2704
2705 EOM
2706         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2707         dflt=''
2708         : Half the following guesses are probably wrong... If you have better
2709         : tests or hints, please send them to perlbug@perl.org
2710         : The metaconfig authors would also appreciate a copy...
2711         $test -f /irix && osname=irix
2712         $test -f /xenix && osname=sco_xenix
2713         $test -f /dynix && osname=dynix
2714         $test -f /dnix && osname=dnix
2715         $test -f /lynx.os && osname=lynxos
2716         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2717         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2718         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2719         $test -f /bin/mips && /bin/mips && osname=mips
2720         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2721                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2722         $test -d /usr/apollo/bin && osname=apollo
2723         $test -f /etc/saf/_sactab && osname=svr4
2724         $test -d /usr/include/minix && osname=minix
2725         if $test -d /MachTen -o -d /MachTen_Folder; then
2726                 osname=machten
2727                 if $test -x /sbin/version; then
2728                         osvers=`/sbin/version | $awk '{print $2}' |
2729                         $sed -e 's/[A-Za-z]$//'`
2730                 elif $test -x /usr/etc/version; then
2731                         osvers=`/usr/etc/version | $awk '{print $2}' |
2732                         $sed -e 's/[A-Za-z]$//'`
2733                 else
2734                         osvers="$2.$3"
2735                 fi
2736         fi
2737
2738         $test -f /sys/posix.dll &&
2739                 $test -f /usr/bin/what &&
2740                 set X `/usr/bin/what /sys/posix.dll` &&
2741                 $test "$3" = UWIN &&
2742                 osname=uwin &&
2743                 osvers="$5"
2744
2745         if $test -f $uname; then
2746                 set X $myuname
2747                 shift
2748
2749                 case "$5" in
2750                 fps*) osname=fps ;;
2751                 mips*)
2752                         case "$4" in
2753                         umips) osname=umips ;;
2754                         *) osname=mips ;;
2755                         esac;;
2756                 [23]100) osname=mips ;;
2757                 next*) osname=next ;;
2758                 i386*)
2759                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2760                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2761                                 osname='sco'
2762                                 osvers=$tmp
2763                         elif $test -f /etc/kconfig; then
2764                                 osname=isc
2765                                 if test "$lns" = "$ln -s"; then
2766                                         osvers=4
2767                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2768                                         osvers=3
2769                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2770                                         osvers=2
2771                                 fi
2772                         fi
2773                         tmp=''
2774                         ;;
2775                 pc*)
2776                         if test -n "$DJGPP"; then
2777                                 osname=dos
2778                                 osvers=djgpp
2779                         fi
2780                         ;;
2781                 esac
2782
2783                 case "$1" in
2784                 aix) osname=aix
2785                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2786                         case "$tmp" in
2787                         'not found') osvers="$4"."$3" ;;
2788                         '<3240'|'<>3240') osvers=3.2.0 ;;
2789                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2790                         '=3250'|'>3250') osvers=3.2.5 ;;
2791                         *) osvers=$tmp;;
2792                         esac
2793                         ;;
2794                 bsd386) osname=bsd386
2795                         osvers=`$uname -r`
2796                         ;;
2797                 cygwin*) osname=cygwin
2798                         osvers="$3"
2799                         ;;
2800                 *dc.osx) osname=dcosx
2801                         osvers="$3"
2802                         ;;
2803                 dnix) osname=dnix
2804                         osvers="$3"
2805                         ;;
2806                 domainos) osname=apollo
2807                         osvers="$3"
2808                         ;;
2809                 dgux) osname=dgux 
2810                         osvers="$3"
2811                         ;;
2812                 dynixptx*) osname=dynixptx
2813                         osvers=`echo "$4"|sed 's/^v//'`
2814                         ;;
2815                 freebsd) osname=freebsd 
2816                         osvers="$3" ;;
2817                 genix) osname=genix ;;
2818                 hp*) osname=hpux 
2819                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2820                         ;;
2821                 irix*) osname=irix
2822                         case "$3" in
2823                         4*) osvers=4 ;;
2824                         5*) osvers=5 ;;
2825                         *)      osvers="$3" ;;
2826                         esac
2827                         ;;
2828                 linux) osname=linux
2829                         case "$3" in
2830                         *)      osvers="$3" ;;
2831                         esac
2832                         ;;
2833                 MiNT) osname=mint
2834                         ;;
2835                 netbsd*) osname=netbsd
2836                         osvers="$3"
2837                         ;;
2838                 news-os) osvers="$3"
2839                         case "$3" in
2840                         4*) osname=newsos4 ;;
2841                         *) osname=newsos ;;
2842                         esac
2843                         ;;
2844                 next*) osname=next ;;
2845                 nonstop-ux) osname=nonstopux ;;
2846                 POSIX-BC | posix-bc ) osname=posix-bc
2847                         osvers="$3"
2848                         ;;
2849                 powerux | power_ux | powermax_os | powermaxos | \
2850                 powerunix | power_unix) osname=powerux
2851                         osvers="$3"
2852                         ;;
2853                 qnx) osname=qnx
2854                         osvers="$4"
2855                         ;;
2856                 solaris) osname=solaris
2857                         case "$3" in
2858                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2859                         *)      osvers="$3" ;;
2860                         esac
2861                         ;;
2862                 sunos) osname=sunos
2863                         case "$3" in
2864                         5*) osname=solaris
2865                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2866                         *)      osvers="$3" ;;
2867                         esac
2868                         ;;
2869                 titanos) osname=titanos
2870                         case "$3" in
2871                         1*) osvers=1 ;;
2872                         2*) osvers=2 ;;
2873                         3*) osvers=3 ;;
2874                         4*) osvers=4 ;;
2875                         *)      osvers="$3" ;;
2876                         esac
2877                         ;;
2878                 ultrix) osname=ultrix
2879                         osvers="$3"
2880                         ;;
2881                 osf1|mls+)      case "$5" in
2882                                 alpha)
2883                                         osname=dec_osf
2884                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2885                                         case "$osvers" in
2886                                         [1-9].[0-9]*) ;;
2887                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2888                                         esac
2889                                         ;;
2890                         hp*)    osname=hp_osf1  ;;
2891                         mips)   osname=mips_osf1 ;;
2892                         esac
2893                         ;;
2894                 unixware) osname=svr5
2895                         osvers="$4"
2896                         ;;
2897                 uts) osname=uts
2898                         osvers="$3"
2899                         ;;
2900                 $2) case "$osname" in
2901                         *isc*) ;;
2902                         *freebsd*) ;;
2903                         svr*)
2904                                 : svr4.x or possibly later
2905                                 case "svr$3" in 
2906                                 ${osname}*)
2907                                         osname=svr$3
2908                                         osvers=$4
2909                                         ;;
2910                                 esac
2911                                 case "$osname" in
2912                                 svr4.0)
2913                                         : Check for ESIX
2914                                         if test -f /stand/boot ; then
2915                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2916                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2917                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2918                                                         if test -n "$isesix"; then
2919                                                                 osname=esix4
2920                                                         fi
2921                                                 fi
2922                                         fi
2923                                         ;;
2924                                 esac
2925                                 ;;
2926                         *)      if test -f /etc/systemid; then
2927                                         osname=sco
2928                                         set `echo $3 | $sed 's/\./ /g'` $4
2929                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2930                                                 osvers=$1.$2.$3
2931                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2932                                                 osvers=$1.$2
2933                                         elif $test -f $src/hints/sco_$1.sh; then
2934                                                 osvers=$1
2935                                         fi
2936                                 else
2937                                         case "$osname" in
2938                                         '') : Still unknown.  Probably a generic Sys V.
2939                                                 osname="sysv"
2940                                                 osvers="$3"
2941                                                 ;;
2942                                         esac
2943                                 fi
2944                                 ;;
2945                         esac
2946                         ;;
2947                 *)      case "$osname" in
2948                         '') : Still unknown.  Probably a generic BSD.
2949                                 osname="$1"
2950                                 osvers="$3"
2951                                 ;;
2952                         esac
2953                         ;;
2954                 esac
2955         else
2956                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2957                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2958                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2959                                 osname=news_os
2960                         fi
2961                         $rm -f UU/kernel.what
2962                 elif test -d c:/.; then
2963                         set X $myuname
2964                         osname=os2
2965                         osvers="$5"
2966                 fi
2967         fi
2968         
2969         case "$targetarch" in
2970         '') ;;
2971         *)  hostarch=$osname
2972             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2973             osvers=''
2974             ;;
2975         esac
2976
2977         : Now look for a hint file osname_osvers, unless one has been
2978         : specified already.
2979         case "$hintfile" in
2980         ''|' ')
2981                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2982                 : Also try without trailing minor version numbers.
2983                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2984                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2985                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2986                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2987                 case "$file" in
2988                 '') dflt=none ;;
2989                 *)  case "$osvers" in
2990                         '') dflt=$file
2991                                 ;;
2992                         *)  if $test -f $src/hints/$file.sh ; then
2993                                         dflt=$file
2994                                 elif $test -f $src/hints/$xfile.sh ; then
2995                                         dflt=$xfile
2996                                 elif $test -f $src/hints/$xxfile.sh ; then
2997                                         dflt=$xxfile
2998                                 elif $test -f $src/hints/$xxxfile.sh ; then
2999                                         dflt=$xxxfile
3000                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3001                                         dflt=$xxxxfile
3002                                 elif $test -f "$src/hints/${osname}.sh" ; then
3003                                         dflt="${osname}"
3004                                 else
3005                                         dflt=none
3006                                 fi
3007                                 ;;
3008                         esac
3009                         ;;
3010                 esac
3011                 if $test -f Policy.sh ; then
3012                         case "$dflt" in
3013                         *Policy*) ;;
3014                         none) dflt="Policy" ;;
3015                         *) dflt="Policy $dflt" ;;
3016                         esac
3017                 fi
3018                 ;;
3019         *)
3020                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3021                 ;;
3022         esac
3023
3024         if $test -f Policy.sh ; then
3025                 $cat <<EOM
3026
3027 There's also a Policy hint file available, which should make the
3028 site-specific (policy) questions easier to answer.
3029 EOM
3030
3031         fi
3032
3033         $cat <<EOM
3034
3035 You may give one or more space-separated answers, or "none" if appropriate.
3036 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3037 is a good thing.  DO NOT give a wrong version or a wrong OS.
3038
3039 EOM
3040
3041         rp="Which of these apply, if any?"
3042         . UU/myread
3043         tans=$ans
3044         for file in $tans; do
3045                 if $test X$file = XPolicy -a -f Policy.sh; then
3046                         . Policy.sh
3047                         $cat Policy.sh >> UU/config.sh
3048                 elif $test -f $src/hints/$file.sh; then
3049                         . $src/hints/$file.sh
3050                         $cat $src/hints/$file.sh >> UU/config.sh
3051                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3052                         : nothing
3053                 else
3054                         : Give one chance to correct a possible typo.
3055                         echo "$file.sh does not exist"
3056                         dflt=$file
3057                         rp="hint to use instead?"
3058                         . UU/myread
3059                         for file in $ans; do
3060                                 if $test -f "$src/hints/$file.sh"; then
3061                                         . $src/hints/$file.sh
3062                                         $cat $src/hints/$file.sh >> UU/config.sh
3063                                 elif $test X$ans = X -o X$ans = Xnone ; then
3064                                         : nothing
3065                                 else
3066                                         echo "$file.sh does not exist -- ignored."
3067                                 fi
3068                         done
3069                 fi
3070         done
3071
3072         hint=recommended
3073         : Remember our hint file for later.
3074         if $test -f "$src/hints/$file.sh" ; then
3075                 hintfile="$file"
3076         else
3077                 hintfile=''
3078         fi
3079 fi
3080 cd UU
3081 ;;
3082 *)
3083         echo " "
3084         echo "Fetching default answers from $config_sh..." >&4
3085         tmp_n="$n"
3086         tmp_c="$c"
3087         cd ..
3088         cp $config_sh config.sh 2>/dev/null
3089         chmod +w config.sh
3090         . ./config.sh
3091         cd UU
3092         cp ../config.sh .
3093         n="$tmp_n"
3094         c="$tmp_c"
3095         hint=previous
3096         ;;
3097 esac
3098 test "$override" && . ./optdef.sh
3099
3100 : Restore computed paths
3101 for file in $loclist $trylist; do
3102         eval $file="\$_$file"
3103 done
3104
3105 cat << EOM
3106
3107 Configure uses the operating system name and version to set some defaults.
3108 The default value is probably right if the name rings a bell. Otherwise,
3109 since spelling matters for me, either accept the default or answer "none"
3110 to leave it blank.
3111
3112 EOM
3113 case "$osname" in
3114         ''|' ')
3115                 case "$hintfile" in
3116                 ''|' '|none) dflt=none ;;
3117                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3118                 esac
3119                 ;;
3120         *) dflt="$osname" ;;
3121 esac
3122 rp="Operating system name?"
3123 . ./myread
3124 case "$ans" in
3125 none)  osname='' ;;
3126 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3127 esac
3128 echo " "
3129 case "$osvers" in
3130         ''|' ')
3131                 case "$hintfile" in
3132                 ''|' '|none) dflt=none ;;
3133                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3134                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3135                         case "$dflt" in
3136                         ''|' ') dflt=none ;;
3137                         esac
3138                         ;;
3139                 esac
3140                 ;;
3141         *) dflt="$osvers" ;;
3142 esac
3143 rp="Operating system version?"
3144 . ./myread
3145 case "$ans" in
3146 none)  osvers='' ;;
3147 *) osvers="$ans" ;;
3148 esac
3149
3150
3151 . ./posthint.sh
3152
3153 : who configured the system
3154 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3155 cf_by=`(logname) 2>/dev/null`
3156 case "$cf_by" in
3157 "")
3158         cf_by=`(whoami) 2>/dev/null`
3159         case "$cf_by" in
3160         "") cf_by=unknown ;;
3161         esac ;;
3162 esac
3163
3164 : set up the script used to warn in case of inconsistency
3165 cat <<EOS >whoa
3166 $startsh
3167 EOS
3168 cat <<'EOSC' >>whoa
3169 dflt=y
3170 echo " "
3171 echo "*** WHOA THERE!!! ***" >&4
3172 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3173 rp="    Keep the $hint value?"
3174 . ./myread
3175 case "$ans" in
3176 y) td=$was; tu=$was;;
3177 esac
3178 EOSC
3179
3180 : function used to set $1 to $val
3181 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3182 case "$val$was" in
3183 $define$undef) . ./whoa; eval "$var=\$td";;
3184 $undef$define) . ./whoa; eval "$var=\$tu";;
3185 *) eval "$var=$val";;
3186 esac'
3187
3188 case "$usethreads" in
3189 $define|true|[yY]*)     dflt='y';;
3190 *) dflt='n';;
3191 esac
3192 cat <<EOM
3193
3194 Perl can be built to take advantage of threads on some systems.
3195 To do so, Configure can be run with -Dusethreads.
3196
3197 Note that threading is a highly experimental feature, and
3198 some known race conditions still remain.  If you choose to try
3199 it, be very sure to not actually deploy it for production
3200 purposes.  README.threads has more details, and is required
3201 reading if you enable threads.
3202
3203 If this doesn't make any sense to you, just accept the default '$dflt'.
3204 EOM
3205 rp='Build a threading Perl?'
3206 . ./myread
3207 case "$ans" in
3208 y|Y)    val="$define" ;;
3209 *)      val="$undef" ;;
3210 esac
3211 set usethreads
3212 eval $setvar
3213
3214 case "$usethreads" in
3215 $define)
3216         $cat <<EOM
3217
3218 As of 5.5.640, Perl has two different internal threading implementations,
3219 the 5.005 version (5005threads) and an interpreter-based version
3220 (ithreads) that has one interpreter per thread.  Both are very 
3221 experimental.  This arrangement exists to help developers work out
3222 which one is better.
3223
3224 If you're a casual user, you probably don't want interpreter-threads
3225 at this time.  There doesn't yet exist a way to create threads from
3226 within Perl in this model, i.e., "use Thread;" will NOT work.
3227 EOM
3228         : Default to ithreads unless overridden on command line or with
3229         : old config.sh
3230         dflt='y'
3231         case "$use5005threads" in
3232                 $define|true|[yY]*) dflt='n';;
3233         esac
3234         case "$useithreads" in
3235                 $undef|false|[nN]*) dflt='n';;
3236         esac
3237         rp='Use interpreter-based ithreads?'
3238         . ./myread
3239         case "$ans" in
3240         y|Y)    val="$define" ;;
3241         *)      val="$undef" ;;
3242         esac
3243         set useithreads
3244         eval $setvar
3245         : Now set use5005threads to the opposite value.
3246         case "$useithreads" in
3247         $define) val="$undef" ;;
3248         *) val="$define" ;;
3249         esac
3250         set use5005threads
3251         eval $setvar
3252         ;;
3253 *)
3254         useithreads="$undef"
3255         use5005threads="$undef"
3256         ;;
3257 esac
3258
3259 case "$useithreads$use5005threads" in
3260 "$define$define")
3261         $cat >&4 <<EOM
3262
3263 You cannot have both the ithreads and the 5.005 threads enabled
3264 at the same time.  Disabling the 5.005 threads since they are
3265 much less stable than the ithreads.
3266
3267 EOM
3268         use5005threads="$undef"
3269         ;;
3270 esac
3271
3272 case "$d_oldpthreads" in
3273 '')     : Configure tests would be welcome here.  For now, assume undef.
3274         val="$undef" ;;
3275 *)      val="$d_oldpthreads" ;;
3276 esac
3277 set d_oldpthreads
3278 eval $setvar
3279
3280
3281 case "$usethreads" in
3282 "$define"|true|[yY]*)
3283 : Look for a hint-file generated 'call-back-unit'.  If the
3284 : user has specified that a threading perl is to be built,
3285 : we may need to set or change some other defaults.
3286         if $test -f usethreads.cbu; then
3287                 echo "Your platform has some specific hints for threaded builds, using them..."
3288                 . ./usethreads.cbu
3289         else
3290                 $cat <<EOM
3291 (Your platform doesn't have any specific hints for threaded builds.
3292  Assuming POSIX threads, then.)
3293 EOM
3294         fi
3295         ;;
3296 esac
3297
3298 cat <<EOM
3299
3300 Perl can be built so that multiple Perl interpreters can coexist
3301 within the same Perl executable.
3302 EOM
3303
3304 case "$useithreads" in
3305 $define)
3306         cat <<EOM
3307 This multiple interpreter support is required for interpreter-based threads.
3308 EOM
3309         val="$define"
3310         ;;
3311 *)      case "$usemultiplicity" in
3312         $define|true|[yY]*)     dflt='y';;
3313         *) dflt='n';;
3314         esac
3315         echo " "
3316         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3317         rp='Build Perl for multiplicity?'
3318         . ./myread
3319         case "$ans" in
3320         y|Y)    val="$define" ;;
3321         *)      val="$undef" ;;
3322         esac
3323         ;;
3324 esac
3325 set usemultiplicity
3326 eval $setvar
3327
3328
3329 case "$usemorebits" in
3330 "$define"|true|[yY]*)
3331         use64bitint="$define"
3332         uselongdouble="$define"
3333         usemorebits="$define"
3334         ;;
3335 *)      usemorebits="$undef"
3336         ;;
3337 esac
3338
3339 : make some quick guesses about what we are up against
3340 echo " "
3341 $echo $n "Hmm...  $c"
3342 echo exit 1 >bsd
3343 echo exit 1 >usg
3344 echo exit 1 >v7
3345 echo exit 1 >osf1
3346 echo exit 1 >eunice
3347 echo exit 1 >xenix
3348 echo exit 1 >venix
3349 echo exit 1 >os2
3350 d_bsd="$undef"
3351 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3352 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3353 then
3354         echo "Looks kind of like an OSF/1 system, but we'll see..."
3355         echo exit 0 >osf1
3356 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3357         xxx=`./loc addbib blurfl $pth`
3358         if $test -f $xxx; then
3359         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3360                 echo exit 0 >bsd
3361                 echo exit 0 >usg
3362         else
3363                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3364                         echo "Looks kind of like an extended USG system, but we'll see..."
3365                 else
3366                         echo "Looks kind of like a USG system, but we'll see..."
3367                 fi
3368                 echo exit 0 >usg
3369         fi
3370 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3371         echo "Looks kind of like a BSD system, but we'll see..."
3372         d_bsd="$define"
3373         echo exit 0 >bsd
3374 else
3375         echo "Looks kind of like a Version 7 system, but we'll see..."
3376         echo exit 0 >v7
3377 fi
3378 case "$eunicefix" in
3379 *unixtovms*)
3380         $cat <<'EOI'
3381 There is, however, a strange, musty smell in the air that reminds me of
3382 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3383 EOI
3384         echo exit 0 >eunice
3385         d_eunice="$define"
3386 : it so happens the Eunice I know will not run shell scripts in Unix format
3387         ;;
3388 *)
3389         echo " "
3390         echo "Congratulations.  You aren't running Eunice."
3391         d_eunice="$undef"
3392         ;;
3393 esac
3394 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3395 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3396 : semicolon as a patch separator
3397 case "$p_" in
3398 :) ;;
3399 *)
3400         $cat <<'EOI'
3401 I have the feeling something is not exactly right, however...don't tell me...
3402 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3403 (Or you may be running DOS with DJGPP.)
3404 EOI
3405         echo exit 0 >os2
3406         ;;
3407 esac
3408 if test -f /xenix; then
3409         echo "Actually, this looks more like a XENIX system..."
3410         echo exit 0 >xenix
3411         d_xenix="$define"
3412 else
3413         echo " "
3414         echo "It's not Xenix..."
3415         d_xenix="$undef"
3416 fi
3417 chmod +x xenix
3418 $eunicefix xenix
3419 if test -f /venix; then
3420         echo "Actually, this looks more like a VENIX system..."
3421         echo exit 0 >venix
3422 else
3423         echo " "
3424         if ./xenix; then
3425                 : null
3426         else
3427                 echo "Nor is it Venix..."
3428         fi
3429 fi
3430 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3431 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3432 $rm -f foo
3433
3434 case "$cc" in
3435 '') dflt=cc;;
3436 *) dflt="$cc";;
3437 esac
3438 rp="Use which C compiler?"
3439 . ./myread
3440 cc="$ans"
3441 : Look for a hint-file generated 'call-back-unit'.  Now that the
3442 : user has specified the compiler, we may need to set or change some
3443 : other defaults.
3444 if $test -f cc.cbu; then
3445     . ./cc.cbu
3446 fi
3447 . ./checkcc
3448
3449 echo " "
3450 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3451 $cat >try.c <<EOM
3452 #include <stdio.h>
3453 int main() {
3454 #ifdef __GNUC__
3455 #ifdef __VERSION__
3456         printf("%s\n", __VERSION__);
3457 #else
3458         printf("%s\n", "1");
3459 #endif
3460 #endif
3461         exit(0);
3462 }
3463 EOM
3464 if $cc -o try $ccflags $ldflags try.c; then
3465         gccversion=`$run ./try`
3466         case "$gccversion" in
3467         '') echo "You are not using GNU cc." ;;
3468         *)  echo "You are using GNU cc $gccversion."
3469             ccname=gcc  
3470             ;;
3471         esac
3472 else
3473         echo " "
3474         echo "*** WHOA THERE!!! ***" >&4
3475         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3476         case "$knowitall" in
3477         '')
3478         echo "    You'd better start hunting for one and let me know about it." >&4
3479                 exit 1
3480                 ;;
3481         esac
3482 fi
3483 $rm -f try try.*
3484 case "$gccversion" in
3485 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3486 esac
3487 case "$gccversion" in
3488 '') gccosandvers='' ;;
3489 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3490    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3491    gccshortvers=''
3492    case "$gccosandvers" in
3493    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3494    $osname$osvers) ;; # looking good
3495    $osname*) cat <<EOM >&4
3496
3497 *** WHOA THERE!!! ***
3498
3499     Your gcc has not been compiled for the exact release of
3500     your operating system ($gccosandvers versus $osname$osvers).
3501
3502     In general it is a good idea to keep gcc synchronized with
3503     the operating system because otherwise serious problems
3504     may ensue when trying to compile software, like Perl.
3505
3506     I'm trying to be optimistic here, though, and will continue.
3507     If later during the configuration and build icky compilation
3508     problems appear (headerfile conflicts being the most common
3509     manifestation), I suggest reinstalling the gcc to match
3510     your operating system release.
3511
3512 EOM
3513       ;;
3514    *) gccosandvers='' ;; # failed to parse, better be silent
3515    esac
3516    ;;
3517 esac
3518 case "$ccname" in
3519 '') ccname="$cc" ;;
3520 esac
3521
3522 case "$gccversion" in
3523 '') ;;
3524 *)  case "$ccflags" in
3525     *-Wall*) ;;
3526     *) ccflags="$ccflags -Wall" ;;
3527     esac
3528     ;;
3529 esac
3530
3531 : decide how portable to be.  Allow command line overrides.
3532 case "$d_portable" in
3533 "$undef") ;;
3534 *)      d_portable="$define" ;;
3535 esac
3536
3537 : set up shell script to do ~ expansion
3538 cat >filexp <<EOSS
3539 $startsh
3540 : expand filename
3541 case "\$1" in
3542  ~/*|~)
3543         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3544         ;;
3545  ~*)
3546         if $test -f /bin/csh; then
3547                 /bin/csh -f -c "glob \$1"
3548                 failed=\$?
3549                 echo ""
3550                 exit \$failed
3551         else
3552                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3553                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3554                 if $test ! -d "\$dir"; then
3555                         me=\`basename \$0\`
3556                         echo "\$me: can't locate home directory for: \$name" >&2
3557                         exit 1
3558                 fi
3559                 case "\$1" in
3560                 */*)
3561                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3562                         ;;
3563                 *)
3564                         echo \$dir
3565                         ;;
3566                 esac
3567         fi
3568         ;;
3569 *)
3570         echo \$1
3571         ;;
3572 esac
3573 EOSS
3574 chmod +x filexp
3575 $eunicefix filexp
3576
3577 : now set up to get a file name
3578 cat <<EOS >getfile
3579 $startsh
3580 EOS
3581 cat <<'EOSC' >>getfile
3582 tilde=''
3583 fullpath=''
3584 already=''
3585 skip=''
3586 none_ok=''
3587 exp_file=''
3588 nopath_ok=''
3589 orig_rp="$rp"
3590 orig_dflt="$dflt"
3591 case "$gfpth" in
3592 '') gfpth='.' ;;
3593 esac
3594
3595 case "$fn" in
3596 *\(*)
3597         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3598         fn=`echo $fn | sed 's/(.*)//'`
3599         ;;
3600 esac
3601
3602 case "$fn" in
3603 *:*)
3604         loc_file=`expr $fn : '.*:\(.*\)'`
3605         fn=`expr $fn : '\(.*\):.*'`
3606         ;;
3607 esac
3608
3609 case "$fn" in
3610 *~*) tilde=true;;
3611 esac
3612 case "$fn" in
3613 */*) fullpath=true;;
3614 esac
3615 case "$fn" in
3616 *+*) skip=true;;
3617 esac
3618 case "$fn" in
3619 *n*) none_ok=true;;
3620 esac
3621 case "$fn" in
3622 *e*) exp_file=true;;
3623 esac
3624 case "$fn" in
3625 *p*) nopath_ok=true;;
3626 esac
3627
3628 case "$fn" in
3629 *f*) type='File';;
3630 *d*) type='Directory';;
3631 *l*) type='Locate';;
3632 esac
3633
3634 what="$type"
3635 case "$what" in
3636 Locate) what='File';;
3637 esac
3638
3639 case "$exp_file" in
3640 '')
3641         case "$d_portable" in
3642         "$define") ;;
3643         *) exp_file=true;;
3644         esac
3645         ;;
3646 esac
3647
3648 cd ..
3649 while test "$type"; do
3650         redo=''
3651         rp="$orig_rp"
3652         dflt="$orig_dflt"
3653         case "$tilde" in
3654         true) rp="$rp (~name ok)";;
3655         esac
3656         . UU/myread
3657         if test -f UU/getfile.ok && \
3658                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3659         then
3660                 value="$ans"
3661                 ansexp="$ans"
3662                 break
3663         fi
3664         case "$ans" in
3665         none)
3666                 value=''
3667                 ansexp=''
3668                 case "$none_ok" in
3669                 true) type='';;
3670                 esac
3671                 ;;
3672         *)
3673                 case "$tilde" in
3674                 '') value="$ans"
3675                         ansexp="$ans";;
3676                 *)
3677                         value=`UU/filexp $ans`
3678                         case $? in
3679                         0)
3680                                 if test "$ans" != "$value"; then
3681                                         echo "(That expands to $value on this system.)"
3682                                 fi
3683                                 ;;
3684                         *) value="$ans";;
3685                         esac
3686                         ansexp="$value"
3687                         case "$exp_file" in
3688                         '') value="$ans";;
3689                         esac
3690                         ;;
3691                 esac
3692                 case "$fullpath" in
3693                 true)
3694                         case "$ansexp" in
3695                         /*) value="$ansexp" ;;
3696                         [a-zA-Z]:/*) value="$ansexp" ;;
3697                         *)
3698                                 redo=true
3699                                 case "$already" in
3700                                 true)
3701                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3702                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3703                                         ;;
3704                                 *)
3705                                 echo "Please give a full path name, starting with slash." >&4
3706                                         case "$tilde" in
3707                                         true)
3708                                 echo "Note that using ~name is ok provided it expands well." >&4
3709                                                 already=true
3710                                                 ;;
3711                                         esac
3712                                 esac
3713                                 ;;
3714                         esac
3715                         ;;
3716                 esac
3717                 case "$redo" in
3718                 '')
3719                         case "$type" in
3720                         File)
3721                                 for fp in $gfpth; do
3722                                         if test "X$fp" = X.; then
3723                                             pf="$ansexp"
3724                                         else    
3725                                             pf="$fp/$ansexp"
3726                                         fi
3727                                         if test -f "$pf"; then
3728                                                 type=''
3729                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3730                                         then
3731                                                 echo "($value is not a plain file, but that's ok.)"
3732                                                 type=''
3733                                         fi
3734                                         if test X"$type" = X; then
3735                                             value="$pf"
3736                                             break
3737                                         fi
3738                                 done
3739                                 ;;
3740                         Directory)
3741                                 for fp in $gfpth; do
3742                                         if test "X$fp" = X.; then
3743                                             dir="$ans"
3744                                             direxp="$ansexp"
3745                                         else    
3746                                             dir="$fp/$ansexp"
3747                                             direxp="$fp/$ansexp"
3748                                         fi
3749                                         if test -d "$direxp"; then
3750                                                 type=''
3751                                                 value="$dir"
3752                                                 break
3753                                         fi
3754                                 done
3755                                 ;;
3756                         Locate)
3757                                 if test -d "$ansexp"; then
3758                                         echo "(Looking for $loc_file in directory $value.)"
3759                                         value="$value/$loc_file"
3760                                         ansexp="$ansexp/$loc_file"
3761                                 fi
3762                                 if test -f "$ansexp"; then
3763                                         type=''
3764                                 fi
3765                                 case "$nopath_ok" in
3766                                 true)   case "$value" in
3767                                         */*) ;;
3768                                         *)      echo "Assuming $value will be in people's path."
3769                                                 type=''
3770                                                 ;;
3771                                         esac
3772                                         ;;
3773                                 esac
3774                                 ;;
3775                         esac
3776
3777                         case "$skip" in
3778                         true) type='';
3779                         esac
3780
3781                         case "$type" in
3782                         '') ;;
3783                         *)
3784                                 if test "$fastread" = yes; then
3785                                         dflt=y
3786                                 else
3787                                         dflt=n
3788                                 fi
3789                                 rp="$what $value doesn't exist.  Use that name anyway?"
3790                                 . UU/myread
3791                                 dflt=''
3792                                 case "$ans" in
3793                                 y*) type='';;
3794                                 *) echo " ";;
3795                                 esac
3796                                 ;;
3797                         esac
3798                         ;;
3799                 esac
3800                 ;;
3801         esac
3802 done
3803 cd UU
3804 ans="$value"
3805 rp="$orig_rp"
3806 dflt="$orig_dflt"
3807 rm -f getfile.ok
3808 test "X$gfpthkeep" != Xy && gfpth=""
3809 EOSC
3810
3811 : What should the include directory be ?
3812 echo " "
3813 $echo $n "Hmm...  $c"
3814 dflt='/usr/include'
3815 incpath=''
3816 mips_type=''
3817 if $test -f /bin/mips && /bin/mips; then
3818         echo "Looks like a MIPS system..."
3819         $cat >usr.c <<'EOCP'
3820 #ifdef SYSTYPE_BSD43
3821 /bsd43
3822 #endif
3823 EOCP
3824         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3825                 dflt='/bsd43/usr/include'
3826                 incpath='/bsd43'
3827                 mips_type='BSD 4.3'
3828         else
3829                 mips_type='System V'
3830         fi
3831         $rm -f usr.c usr.out
3832         echo "and you're compiling with the $mips_type compiler and libraries."
3833         xxx_prompt=y
3834         echo "exit 0" >mips
3835 else
3836         echo "Doesn't look like a MIPS system."
3837         xxx_prompt=n
3838         echo "exit 1" >mips
3839 fi
3840 chmod +x mips
3841 $eunicefix mips
3842 case "$usrinc" in
3843 '') ;;
3844 *) dflt="$usrinc";;
3845 esac
3846 case "$xxx_prompt" in
3847 y)      fn=d/
3848         echo " "
3849         rp='Where are the include files you want to use?'
3850         . ./getfile
3851         usrinc="$ans"
3852         ;;
3853 *)      usrinc="$dflt"
3854         ;;
3855 esac
3856
3857 : see how we invoke the C preprocessor
3858 echo " "
3859 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3860 cat <<'EOT' >testcpp.c
3861 #define ABC abc
3862 #define XYZ xyz
3863 ABC.XYZ
3864 EOT
3865 cd ..
3866 if test ! -f cppstdin; then
3867         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3868                 # AIX cc -E doesn't show the absolute headerfile
3869                 # locations but we'll cheat by using the -M flag.
3870                 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
3871         else
3872                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3873         fi
3874 else
3875         echo "Keeping your $hint cppstdin wrapper."
3876 fi
3877 chmod 755 cppstdin
3878 wrapper=`pwd`/cppstdin
3879 ok='false'
3880 cd UU
3881
3882 if $test "X$cppstdin" != "X" && \
3883         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3884         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3885 then
3886         echo "You used to use $cppstdin $cppminus so we'll use that again."
3887         case "$cpprun" in
3888         '') echo "But let's see if we can live without a wrapper..." ;;
3889         *)
3890                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3891                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3892                 then
3893                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3894                         ok='true'
3895                 else
3896                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3897                 fi
3898                 ;;
3899         esac
3900 else
3901         case "$cppstdin" in
3902         '') ;;
3903         *)
3904                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3905                 ;;
3906         esac
3907 fi
3908
3909 if $ok; then
3910         : nothing
3911 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3912         $cc -E <testcpp.c >testcpp.out 2>&1; \
3913         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3914         echo "Yup, it does."
3915         x_cpp="$cc -E"
3916         x_minus='';
3917 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3918         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3919         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3920         echo "Yup, it does."
3921         x_cpp="$cc -E"
3922         x_minus='-';
3923 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3924         $cc -P <testcpp.c >testcpp.out 2>&1; \
3925         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3926         echo "Yipee, that works!"
3927         x_cpp="$cc -P"
3928         x_minus='';
3929 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3930         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3931         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3932         echo "At long last!"
3933         x_cpp="$cc -P"
3934         x_minus='-';
3935 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3936         $cpp <testcpp.c >testcpp.out 2>&1; \
3937         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3938         echo "It works!"
3939         x_cpp="$cpp"
3940         x_minus='';
3941 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3942         $cpp - <testcpp.c >testcpp.out 2>&1; \
3943         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3944         echo "Hooray, it works!  I was beginning to wonder."
3945         x_cpp="$cpp"
3946         x_minus='-';
3947 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3948         $wrapper <testcpp.c >testcpp.out 2>&1; \
3949         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3950         x_cpp="$wrapper"
3951         x_minus=''
3952         echo "Eureka!"
3953 else
3954         dflt=''
3955         rp="No dice.  I can't find a C preprocessor.  Name one:"
3956         . ./myread
3957         x_cpp="$ans"
3958         x_minus=''
3959         $x_cpp <testcpp.c >testcpp.out 2>&1
3960         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3961                 echo "OK, that will do." >&4
3962         else
3963 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3964                 exit 1
3965         fi
3966 fi
3967
3968 case "$ok" in
3969 false)
3970         cppstdin="$x_cpp"
3971         cppminus="$x_minus"
3972         cpprun="$x_cpp"
3973         cpplast="$x_minus"
3974         set X $x_cpp
3975         shift
3976         case "$1" in
3977         "$cpp")
3978                 echo "Perhaps can we force $cc -E using a wrapper..."
3979                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3980                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3981                 then
3982                         echo "Yup, we can."
3983                         cppstdin="$wrapper"
3984                         cppminus='';
3985                 else
3986                         echo "Nope, we'll have to live without it..."
3987                 fi
3988                 ;;
3989         esac
3990         case "$cpprun" in
3991         "$wrapper")
3992                 cpprun=''
3993                 cpplast=''
3994                 ;;
3995         esac
3996         ;;
3997 esac
3998
3999 case "$cppstdin" in
4000 "$wrapper"|'cppstdin') ;;
4001 *) $rm -f $wrapper;;
4002 esac
4003 $rm -f testcpp.c testcpp.out
4004
4005 : Set private lib path
4006 case "$plibpth" in
4007 '') if ./mips; then
4008                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4009         fi;;
4010 esac
4011 case "$libpth" in
4012 ' ') dlist='';;
4013 '') dlist="$loclibpth $plibpth $glibpth";;
4014 *) dlist="$libpth";;
4015 esac
4016
4017 : Now check and see which directories actually exist, avoiding duplicates
4018 libpth=''
4019 for xxx in $dlist
4020 do
4021     if $test -d $xxx; then
4022                 case " $libpth " in
4023                 *" $xxx "*) ;;
4024                 *) libpth="$libpth $xxx";;
4025                 esac
4026     fi
4027 done
4028 $cat <<'EOM'
4029
4030 Some systems have incompatible or broken versions of libraries.  Among
4031 the directories listed in the question below, please remove any you
4032 know not to be holding relevant libraries, and add any that are needed.
4033 Say "none" for none.
4034
4035 EOM
4036 case "$libpth" in
4037 '') dflt='none';;
4038 *)
4039         set X $libpth
4040         shift
4041         dflt=${1+"$@"}
4042         ;;
4043 esac
4044 rp="Directories to use for library searches?"
4045 . ./myread
4046 case "$ans" in
4047 none) libpth=' ';;
4048 *) libpth="$ans";;
4049 esac
4050
4051 : compute shared library extension
4052 case "$so" in
4053 '')
4054         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4055                 dflt='sl'
4056         else
4057                 dflt='so'
4058         fi
4059         ;;
4060 *) dflt="$so";;
4061 esac
4062 $cat <<EOM
4063
4064 On some systems, shared libraries may be available.  Answer 'none' if
4065 you want to suppress searching of shared libraries for the remainder
4066 of this configuration.
4067
4068 EOM
4069 rp='What is the file extension used for shared libraries?'
4070 . ./myread
4071 so="$ans"
4072
4073 : Define several unixisms.
4074 : Hints files or command line option can be used to override them.
4075 : The convoluted testing is in case hints files set either the old
4076 : or the new name.
4077 case "$_exe" in
4078 '')     case "$exe_ext" in
4079     '') ;;
4080         *)      _exe="$exe_ext" ;;
4081         esac
4082         ;;
4083 esac
4084 case "$_a" in
4085 '')     case "$lib_ext" in
4086     '') _a='.a';;
4087         *)      _a="$lib_ext" ;;
4088         esac
4089         ;;
4090 esac
4091 case "$_o" in
4092 '') case "$obj_ext" in
4093         '')     _o='.o';;
4094         *)      _o="$obj_ext";;
4095         esac
4096         ;;
4097 esac
4098 case "$p_" in
4099 '') case "$path_sep" in
4100         '')     p_=':';;
4101         *)      p_="$path_sep";;
4102         esac
4103         ;;
4104 esac
4105 exe_ext=$_exe
4106 lib_ext=$_a
4107 obj_ext=$_o
4108 path_sep=$p_
4109
4110 : Which makefile gets called first.  This is used by make depend.
4111 case "$firstmakefile" in
4112 '') firstmakefile='makefile';;
4113 esac
4114
4115 case "$usesocks" in
4116 $define|true|[yY]*)     dflt='y';;
4117 *) dflt='n';;
4118 esac
4119 cat <<EOM
4120
4121 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4122 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4123 to use the PerlIO abstraction layer, this will be implicitly selected.
4124
4125 If this doesn't make any sense to you, just accept the default '$dflt'.
4126 EOM
4127 rp='Build Perl for SOCKS?'
4128 . ./myread
4129 case "$ans" in
4130 y|Y)    val="$define" ;;     
4131 *)      val="$undef" ;;
4132 esac
4133 set usesocks
4134 eval $setvar
4135
4136 case "$usesocks" in
4137 $define|true|[yY]*) useperlio="$define";;
4138 esac
4139
4140 : Looking for optional libraries
4141 echo " "
4142 echo "Checking for optional libraries..." >&4
4143 case "$libs" in
4144 ' '|'') dflt='';;
4145 *) dflt="$libs";;
4146 esac
4147 case "$libswanted" in
4148 '') libswanted='c_s';;
4149 esac
4150 case "$usesocks" in
4151 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4152 esac
4153 libsfound=''
4154 libsfiles=''
4155 libsdirs=''
4156 libspath=''
4157 for thisdir in $libpth $xlibpth; do
4158   test -d $thisdir && libspath="$libspath $thisdir"
4159 done
4160 for thislib in $libswanted; do
4161         for thisdir in $libspath; do
4162             xxx=''
4163             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4164                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4165                 $test -f "$xxx" && eval $libscheck
4166                 $test -f "$xxx" && libstyle=shared
4167             fi
4168             if test ! -f "$xxx"; then
4169                 xxx=$thisdir/lib$thislib.$so
4170                 $test -f "$xxx" && eval $libscheck
4171                 $test -f "$xxx" && libstyle=shared
4172             fi  
4173             if test ! -f "$xxx"; then
4174                 xxx=$thisdir/lib$thislib$_a
4175                 $test -f "$xxx" && eval $libscheck
4176                 $test -f "$xxx" && libstyle=static
4177             fi
4178             if test ! -f "$xxx"; then
4179                 xxx=$thisdir/$thislib$_a
4180                 $test -f "$xxx" && eval $libscheck
4181                 $test -f "$xxx" && libstyle=static
4182             fi
4183             if test ! -f "$xxx"; then
4184                 xxx=$thisdir/lib${thislib}_s$_a
4185                 $test -f "$xxx" && eval $libscheck
4186                 $test -f "$xxx" && libstyle=static
4187                 $test -f "$xxx" && thislib=${thislib}_s
4188             fi
4189             if test ! -f "$xxx"; then
4190                 xxx=$thisdir/Slib$thislib$_a
4191                 $test -f "$xxx" && eval $libscheck
4192                 $test -f "$xxx" && libstyle=static
4193             fi
4194             if $test -f "$xxx"; then
4195                 case "$libstyle" in
4196                 shared) echo "Found -l$thislib (shared)." ;;
4197                 static) echo "Found -l$thislib." ;;
4198                 *)      echo "Found -l$thislib ($libstyle)." ;;
4199                 esac
4200                 case " $dflt " in
4201                 *"-l$thislib "*);;
4202                 *) dflt="$dflt -l$thislib"
4203                    libsfound="$libsfound $xxx"
4204                    yyy=`basename $xxx`
4205                    libsfiles="$libsfiles $yyy"
4206                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4207                    case " $libsdirs " in
4208                    *" $yyy "*) ;;
4209                    *) libsdirs="$libsdirs $yyy" ;;
4210                    esac
4211                    ;;
4212                 esac
4213                 break
4214             fi  
4215         done
4216         if $test ! -f "$xxx"; then
4217             echo "No -l$thislib."
4218         fi
4219 done
4220 set X $dflt
4221 shift
4222 dflt="$*"
4223 case "$libs" in
4224 '') dflt="$dflt";;
4225 *) dflt="$libs";;
4226 esac
4227 case "$dflt" in
4228 ' '|'') dflt='none';;
4229 esac
4230
4231 $cat <<EOM
4232
4233 In order to compile $package on your machine, a number of libraries
4234 are usually needed.  Include any other special libraries here as well.
4235 Say "none" for none.  The default list is almost always right.
4236 EOM
4237
4238 echo " "
4239 rp="What libraries to use?"
4240 . ./myread
4241 case "$ans" in
4242 none) libs=' ';;
4243 *) libs="$ans";;
4244 esac
4245
4246 : determine optimization, if desired, or use for debug flag also
4247 case "$optimize" in
4248 ' '|$undef) dflt='none';;
4249 '') dflt='-O';;
4250 *) dflt="$optimize";;
4251 esac
4252 $cat <<EOH
4253
4254 By default, $package compiles with the -O flag to use the optimizer.
4255 Alternately, you might want to use the symbolic debugger, which uses
4256 the -g flag (on traditional Unix systems).  Either flag can be
4257 specified here.  To use neither flag, specify the word "none".
4258
4259 EOH
4260 rp="What optimizer/debugger flag should be used?"
4261 . ./myread
4262 optimize="$ans"
4263 case "$optimize" in
4264 'none') optimize=" ";;
4265 esac
4266
4267 dflt=''
4268 : We will not override a previous value, but we might want to
4269 : augment a hint file
4270 case "$hint" in
4271 default|recommended)
4272         case "$gccversion" in
4273         1*) dflt='-fpcc-struct-return' ;;
4274         esac
4275         case "$optimize" in
4276         *-g*) dflt="$dflt -DDEBUGGING";;
4277         esac
4278         case "$gccversion" in
4279         2*) if test -d /etc/conf/kconfig.d &&
4280                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4281                 then
4282                         dflt="$dflt -posix"
4283                 fi
4284                 ;;
4285         esac
4286         case "$gccversion" in
4287         1*) ;;
4288         2.[0-8]*) ;;
4289         ?*)     echo " "
4290                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4291                 echo 'int main(void) { return 0; }' > gcctest.c
4292                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4293                         echo "Yes, it does." 2>&1
4294                         case "$ccflags" in
4295                         *strict-aliasing*) 
4296                                 echo "Leaving current flags $ccflags alone." 2>&1
4297                                 ;;
4298                         *) dflt="$dflt -fno-strict-aliasing" ;;
4299                         esac
4300                 else
4301                         echo "Nope, it doesn't, but that's ok." 2>&1
4302                 fi
4303                 ;;
4304         esac
4305         ;;
4306 esac
4307
4308 case "$mips_type" in
4309 *BSD*|'') inclwanted="$locincpth $usrinc";;
4310 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4311 esac
4312 for thisincl in $inclwanted; do
4313         if $test -d $thisincl; then
4314                 if $test x$thisincl != x$usrinc; then
4315                         case "$dflt" in
4316                         *" -I$thisincl "*);;
4317                         *) dflt="$dflt -I$thisincl ";;
4318                         esac
4319                 fi
4320         fi
4321 done
4322
4323 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4324         xxx=true;
4325 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4326         xxx=true;
4327 else
4328         xxx=false;
4329 fi;
4330 if $xxx; then
4331         case "$dflt" in
4332         *$2*);;
4333         *) dflt="$dflt -D$2";;
4334         esac;
4335 fi'
4336
4337 set signal.h LANGUAGE_C; eval $inctest
4338
4339 case "$usesocks" in
4340 $define)
4341         ccflags="$ccflags -DSOCKS"
4342         ;;
4343 esac
4344
4345 case "$hint" in
4346 default|recommended) dflt="$ccflags $dflt" ;;
4347 *) dflt="$ccflags";;
4348 esac
4349
4350 case "$dflt" in
4351 ''|' ') dflt=none;;
4352 esac
4353
4354 $cat <<EOH
4355
4356 Your C compiler may want other flags.  For this question you should include
4357 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4358 but you should NOT include libraries or ld flags like -lwhatever.  If you
4359 want $package to honor its debug switch, you should include -DDEBUGGING here.
4360 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4361
4362 To use no flags, specify the word "none".
4363
4364 EOH
4365 set X $dflt
4366 shift
4367 dflt=${1+"$@"}
4368 rp="Any additional cc flags?"
4369 . ./myread
4370 case "$ans" in
4371 none) ccflags='';;
4372 *) ccflags="$ans";;
4373 esac
4374
4375 : the following weeds options from ccflags that are of no interest to cpp
4376 case "$cppflags" in
4377 '') cppflags="$ccflags" ;;
4378 *)  cppflags="$cppflags $ccflags" ;;
4379 esac
4380 case "$gccversion" in
4381 1*) cppflags="$cppflags -D__GNUC__"
4382 esac
4383 case "$mips_type" in
4384 '');;
4385 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4386 esac
4387 case "$cppflags" in
4388 '');;
4389 *)
4390         echo " "
4391         echo "Let me guess what the preprocessor flags are..." >&4
4392         set X $cppflags
4393         shift
4394         cppflags=''
4395         $cat >cpp.c <<'EOM'
4396 #define BLURFL foo
4397
4398 BLURFL xx LFRULB
4399 EOM
4400         previous=''
4401         for flag in $*
4402         do
4403                 case "$flag" in
4404                 -*) ftry="$flag";;
4405                 *) ftry="$previous $flag";;
4406                 esac
4407                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4408                         >cpp1.out 2>/dev/null && \
4409                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4410                         >cpp2.out 2>/dev/null && \
4411                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4412                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4413                 then
4414                         cppflags="$cppflags $ftry"
4415                         previous=''
4416                 else
4417                         previous="$flag"
4418                 fi
4419         done
4420         set X $cppflags
4421         shift
4422         cppflags=${1+"$@"}
4423         case "$cppflags" in
4424         *-*)  echo "They appear to be: $cppflags";;
4425         esac
4426         $rm -f cpp.c cpp?.out
4427         ;;
4428 esac
4429
4430 : flags used in final linking phase
4431 case "$ldflags" in
4432 '') if ./venix; then
4433                 dflt='-i -z'
4434         else
4435                 dflt=''
4436         fi
4437         case "$ccflags" in
4438         *-posix*) dflt="$dflt -posix" ;;
4439         esac
4440         ;;
4441 *) dflt="$ldflags";;
4442 esac
4443
4444 : Try to guess additional flags to pick up local libraries.
4445 for thislibdir in $libpth; do
4446         case " $loclibpth " in
4447         *" $thislibdir "*)
4448                 case "$dflt " in 
4449                 *"-L$thislibdir "*) ;;
4450                 *)  dflt="$dflt -L$thislibdir" ;;
4451                 esac
4452                 ;;
4453         esac
4454 done
4455
4456 case "$dflt" in
4457 '') dflt='none' ;;
4458 esac
4459
4460 $cat <<EOH
4461
4462 Your C linker may need flags.  For this question you should
4463 include -L/whatever and any other flags used by the C linker, but you
4464 should NOT include libraries like -lwhatever.
4465
4466 Make sure you include the appropriate -L/path flags if your C linker
4467 does not normally search all of the directories you specified above,
4468 namely
4469         $libpth
4470 To use no flags, specify the word "none".
4471
4472 EOH
4473
4474 rp="Any additional ld flags (NOT including libraries)?"
4475 . ./myread
4476 case "$ans" in
4477 none) ldflags='';;
4478 *) ldflags="$ans";;
4479 esac
4480 rmlist="$rmlist pdp11"
4481
4482 : coherency check
4483 echo " "
4484 echo "Checking your choice of C compiler and flags for coherency..." >&4
4485 $cat > try.c <<'EOF'
4486 #include <stdio.h>
4487 int main() { printf("Ok\n"); exit(0); }
4488 EOF
4489 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4490 shift
4491 $cat >try.msg <<'EOM'
4492 I've tried to compile and run the following simple program:
4493
4494 EOM
4495 $cat try.c >> try.msg
4496
4497 $cat >> try.msg <<EOM
4498
4499 I used the command:
4500
4501         $*
4502         $run ./try
4503
4504 and I got the following output:
4505
4506 EOM
4507 dflt=y
4508 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4509         if $sh -c "$run ./try" >>try.msg 2>&1; then
4510                 xxx=`$run ./try`
4511                 case "$xxx" in
4512                 "Ok") dflt=n ;;
4513                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4514                         case " $libs " in
4515                         *" -lsfio "*)
4516                                 cat >> try.msg <<'EOQS'
4517 If $libs contains -lsfio, and sfio is mis-configured, then it
4518 sometimes (apparently) runs and exits with a 0 status, but with no
4519 output!  It may have to do with sfio's use of _exit vs. exit.
4520
4521 EOQS
4522                                 rp="You have a big problem.  Shall I abort Configure"
4523                                 dflt=y
4524                                 ;;
4525                         esac
4526                         ;;
4527                 esac
4528         else
4529                 echo "The program compiled OK, but exited with status $?." >>try.msg
4530                 rp="You have a problem.  Shall I abort Configure"
4531                 dflt=y
4532         fi
4533 else
4534         echo "I can't compile the test program." >>try.msg
4535         rp="You have a BIG problem.  Shall I abort Configure"
4536         dflt=y
4537 fi
4538 case "$dflt" in
4539 y)
4540         $cat try.msg >&4
4541         case "$knowitall" in
4542         '')
4543                 echo "(The supplied flags or libraries might be incorrect.)"
4544                 ;;
4545         *) dflt=n;;
4546         esac
4547         echo " "
4548         . ./myread
4549         case "$ans" in
4550         n*|N*) ;;
4551         *)      echo "Ok.  Stopping Configure." >&4
4552                 exit 1
4553                 ;;
4554         esac
4555         ;;
4556 n) echo "OK, that should do.";;
4557 esac
4558 $rm -f try try.* core
4559
4560 : define a shorthand compile call
4561 compile='
4562 mc_file=$1;
4563 shift;
4564 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4565 : define a shorthand compile call for compilations that should be ok.
4566 compile_ok='
4567 mc_file=$1;
4568 shift;
4569 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4570
4571 : check for lengths of integral types
4572 echo " "
4573 case "$intsize" in
4574 '')
4575         echo "Checking to see how big your integers are..." >&4
4576         $cat >try.c <<'EOCP'
4577 #include <stdio.h>
4578 int main()
4579 {
4580         printf("intsize=%d;\n", (int)sizeof(int));
4581         printf("longsize=%d;\n", (int)sizeof(long));
4582         printf("shortsize=%d;\n", (int)sizeof(short));
4583         exit(0);
4584 }
4585 EOCP
4586         set try
4587         if eval $compile_ok && $run ./try > /dev/null; then
4588                 eval `$run ./try`
4589                 echo "Your integers are $intsize bytes long."
4590                 echo "Your long integers are $longsize bytes long."
4591                 echo "Your short integers are $shortsize bytes long."
4592         else
4593                 $cat >&4 <<EOM
4594 !
4595 Help! I can't compile and run the intsize test program: please enlighten me!
4596 (This is probably a misconfiguration in your system or libraries, and
4597 you really ought to fix it.  Still, I'll try anyway.)
4598 !
4599 EOM
4600                 dflt=4
4601                 rp="What is the size of an integer (in bytes)?"
4602                 . ./myread
4603                 intsize="$ans"
4604                 dflt=$intsize
4605                 rp="What is the size of a long integer (in bytes)?"
4606                 . ./myread
4607                 longsize="$ans"
4608                 dflt=2
4609                 rp="What is the size of a short integer (in bytes)?"
4610                 . ./myread
4611                 shortsize="$ans"
4612         fi
4613         ;;
4614 esac
4615 $rm -f try try.*
4616
4617 : check for void type
4618 echo " "
4619 echo "Checking to see how well your C compiler groks the void type..." >&4
4620 case "$voidflags" in
4621 '')
4622         $cat >try.c <<'EOCP'
4623 #if TRY & 1
4624 void sub() {
4625 #else
4626 sub() {
4627 #endif
4628         extern void moo();      /* function returning void */
4629         void (*goo)();          /* ptr to func returning void */
4630 #if TRY & 8
4631         void *hue;              /* generic ptr */
4632 #endif
4633 #if TRY & 2
4634         void (*foo[10])();
4635 #endif
4636
4637 #if TRY & 4
4638         if(goo == moo) {
4639                 exit(0);
4640         }
4641 #endif
4642         exit(0);
4643 }
4644 int main() { sub(); }
4645 EOCP
4646         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4647                 voidflags=$defvoidused
4648         echo "Good.  It appears to support void to the level $package wants.">&4
4649                 if $contains warning .out >/dev/null 2>&1; then
4650                         echo "However, you might get some warnings that look like this:"
4651                         $cat .out
4652                 fi
4653         else
4654 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4655                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4656                         echo "It supports 1..."
4657                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4658                                 echo "It also supports 2..."
4659                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4660                                         voidflags=7
4661                                         echo "And it supports 4 but not 8 definitely."
4662                                 else
4663                                         echo "It doesn't support 4..."
4664                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4665                                                 voidflags=11
4666                                                 echo "But it supports 8."
4667                                         else
4668                                                 voidflags=3
4669                                                 echo "Neither does it support 8."
4670                                         fi
4671                                 fi
4672                         else
4673                                 echo "It does not support 2..."
4674                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4675                                         voidflags=13
4676                                         echo "But it supports 4 and 8."
4677                                 else
4678                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4679                                                 voidflags=5
4680                                                 echo "And it supports 4 but has not heard about 8."
4681                                         else
4682                                                 echo "However it supports 8 but not 4."
4683                                         fi
4684                                 fi
4685                         fi
4686                 else
4687                         echo "There is no support at all for void."
4688                         voidflags=0
4689                 fi
4690         fi
4691 esac
4692 case "$voidflags" in
4693 "$defvoidused") ;;
4694 *)      $cat >&4 <<'EOM'
4695   Support flag bits are:
4696     1: basic void declarations.
4697     2: arrays of pointers to functions returning void.
4698     4: operations between pointers to and addresses of void functions.
4699     8: generic void pointers.
4700 EOM
4701         dflt="$voidflags";
4702         rp="Your void support flags add up to what?"
4703         . ./myread
4704         voidflags="$ans"
4705         ;;
4706 esac
4707 $rm -f try.* .out
4708
4709 : check for length of pointer
4710 echo " "
4711 case "$ptrsize" in
4712 '')
4713         echo "Checking to see how big your pointers are..." >&4
4714         if test "$voidflags" -gt 7; then
4715                 echo '#define VOID_PTR char *' > try.c
4716         else
4717                 echo '#define VOID_PTR void *' > try.c
4718         fi
4719         $cat >>try.c <<'EOCP'
4720 #include <stdio.h>
4721 int main()
4722 {
4723     printf("%d\n", (int)sizeof(VOID_PTR));
4724     exit(0);
4725 }
4726 EOCP
4727         set try
4728         if eval $compile_ok; then
4729                 ptrsize=`$run ./try`
4730                 echo "Your pointers are $ptrsize bytes long."
4731         else
4732                 dflt='4'
4733                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4734                 rp="What is the size of a pointer (in bytes)?"
4735                 . ./myread
4736                 ptrsize="$ans"
4737         fi
4738         ;;
4739 esac
4740 $rm -f try.c try
4741
4742 : check for long long
4743 echo " "
4744 echo "Checking to see if you have long long..." >&4
4745 echo 'int main() { long long x = 7; return 0; }' > try.c
4746 set try
4747 if eval $compile; then
4748         val="$define"
4749         echo "You have long long."
4750 else
4751         val="$undef"
4752         echo "You do not have long long."
4753 fi
4754 $rm try.*
4755 set d_longlong
4756 eval $setvar
4757
4758 : check for length of long long
4759 case "${d_longlong}${longlongsize}" in
4760 $define)
4761         echo " "
4762         echo "Checking to see how big your long longs are..." >&4
4763         $cat >try.c <<'EOCP'
4764 #include <stdio.h>
4765 int main()
4766 {
4767     printf("%d\n", (int)sizeof(long long));
4768     return(0);
4769 }
4770 EOCP
4771         set try
4772         if eval $compile_ok; then
4773                 longlongsize=`$run ./try`
4774                 echo "Your long longs are $longlongsize bytes long."
4775         else
4776                 dflt='8'
4777                 echo " "
4778                 echo "(I can't seem to compile the test program.  Guessing...)"
4779                 rp="What is the size of a long long (in bytes)?"
4780                 . ./myread
4781                 longlongsize="$ans"
4782         fi
4783         if $test "X$longsize" = "X$longlongsize"; then
4784                 echo "(That isn't any different from an ordinary long.)"
4785         fi      
4786         ;;
4787 esac
4788 $rm -f try.* try
4789
4790 : determine filename position in cpp output
4791 echo " "
4792 echo "Computing filename position in cpp output for #include directives..." >&4
4793 echo '#include <stdio.h>' > foo.c
4794 $cat >fieldn <<EOF
4795 $startsh
4796 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4797 $grep '^[       ]*#.*stdio\.h' | \
4798 while read cline; do
4799         pos=1
4800         set \$cline
4801         while $test \$# -gt 0; do
4802                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4803                         echo "\$pos"
4804                         exit 0
4805                 fi
4806                 shift
4807                 pos=\`expr \$pos + 1\`
4808         done
4809 done
4810 EOF
4811 chmod +x fieldn
4812 fieldn=`./fieldn`
4813 $rm -f foo.c fieldn
4814 case $fieldn in
4815 '') pos='???';;
4816 1) pos=first;;
4817 2) pos=second;;
4818 3) pos=third;;
4819 *) pos="${fieldn}th";;
4820 esac
4821 echo "Your cpp writes the filename in the $pos field of the line."
4822
4823 : locate header file
4824 $cat >findhdr <<EOF
4825 $startsh
4826 wanted=\$1
4827 name=''
4828 for usrincdir in $usrinc
4829 do
4830         if test -f \$usrincdir/\$wanted; then
4831                 echo "\$usrincdir/\$wanted"
4832                 exit 0
4833         fi
4834 done
4835 awkprg='{ print \$$fieldn }'
4836 echo "#include <\$wanted>" > foo\$\$.c
4837 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4838 $grep "^[       ]*#.*\$wanted" | \
4839 while read cline; do
4840         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4841         case "\$name" in
4842         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4843         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4844         *) exit 2;;
4845         esac;
4846 done;
4847 #
4848 # status = 0: grep returned 0 lines, case statement not executed
4849 # status = 1: headerfile found
4850 # status = 2: while loop executed, no headerfile found
4851 #
4852 status=\$?
4853 $rm -f foo\$\$.c;
4854 if test \$status -eq 1; then
4855         exit 0;
4856 fi
4857 exit 1
4858 EOF
4859 chmod +x findhdr
4860
4861 : define an alternate in-header-list? function
4862 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4863 cont=true; xxf="echo \"<\$1> found.\" >&4";
4864 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4865 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4866 esac;
4867 case $# in 4) instead=instead;; *) instead="at last";; esac;
4868 while $test "$cont"; do
4869         xxx=`./findhdr $1`
4870         var=$2; eval "was=\$$2";
4871         if $test "$xxx" && $test -r "$xxx";
4872         then eval $xxf;
4873         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4874                 cont="";
4875         else eval $xxnf;
4876         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4877         set $yyy; shift; shift; yyy=$@;
4878         case $# in 0) cont="";;
4879         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4880                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4881         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4882                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4883         esac;
4884 done;
4885 while $test "$yyy";
4886 do set $yyy; var=$2; eval "was=\$$2";
4887         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4888         set $yyy; shift; shift; yyy=$@;
4889 done'
4890
4891 : see if inttypes.h is available
4892 : we want a real compile instead of Inhdr because some systems
4893 : have an inttypes.h which includes non-existent headers
4894 echo " "
4895 $cat >try.c <<EOCP
4896 #include <inttypes.h>
4897 int main() {
4898         static int32_t foo32 = 0x12345678;
4899 }
4900 EOCP
4901 set try
4902 if eval $compile; then
4903         echo "<inttypes.h> found." >&4
4904         val="$define"
4905 else
4906         echo "<inttypes.h> NOT found." >&4
4907         val="$undef"
4908 fi
4909 $rm -f try.c try
4910 set i_inttypes
4911 eval $setvar
4912
4913 : check for int64_t
4914 echo " "
4915 echo "Checking to see if you have int64_t..." >&4
4916 $cat >try.c <<EOCP
4917 #include <sys/types.h>
4918 #$i_inttypes I_INTTYPES
4919 #ifdef I_INTTYPES
4920 #include <inttypes.h>
4921 #endif
4922 int main() { int64_t x = 7; }
4923 EOCP
4924 set try
4925 if eval $compile; then
4926         val="$define"
4927         echo "You have int64_t."
4928 else
4929         val="$undef"
4930         echo "You do not have int64_t."
4931 fi
4932 $rm -f try try.*
4933 set d_int64_t
4934 eval $setvar
4935
4936
4937 echo " "
4938 echo "Checking which 64-bit integer type we could use..." >&4
4939
4940 case "$intsize" in
4941 8) val=int
4942    set quadtype
4943    eval $setvar
4944    val='"unsigned int"'
4945    set uquadtype
4946    eval $setvar
4947    quadkind=1
4948    ;;
4949 *) case "$longsize" in
4950    8) val=long
4951       set quadtype
4952       eval $setvar
4953       val='"unsigned long"'
4954       set uquadtype
4955       eval $setvar
4956       quadkind=2
4957       ;;
4958    *) case "$d_longlong:$longlongsize" in
4959       define:8)
4960         val='"long long"'
4961         set quadtype
4962         eval $setvar
4963         val='"unsigned long long"'
4964         set uquadtype
4965         eval $setvar
4966         quadkind=3
4967         ;;
4968       *) case "$d_int64_t" in
4969          define)
4970            val=int64_t
4971            set quadtype
4972            eval $setvar
4973            val=uint64_t
4974            set uquadtype
4975            eval $setvar
4976            quadkind=4
4977            ;;
4978          esac
4979          ;;
4980       esac
4981       ;;
4982    esac
4983    ;;
4984 esac
4985
4986 case "$quadtype" in
4987 '')     echo "Alas, no 64-bit integer types in sight." >&4
4988         d_quad="$undef"
4989         ;;
4990 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4991         d_quad="$define"
4992         ;;
4993 esac
4994
4995
4996 case "$uselonglong" in
4997 "$define"|true|[yY]*)
4998         cat <<EOM >&4
4999
5000 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5001 EOM
5002         use64bitint="$define"
5003         ;;
5004 esac                          
5005 case "$use64bits" in
5006 "$define"|true|[yY]*)
5007         cat <<EOM >&4
5008
5009 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5010 EOM
5011         use64bitint="$define"
5012         ;;
5013 esac                          
5014 case "$use64bitints" in
5015 "$define"|true|[yY]*)
5016         cat <<EOM >&4
5017
5018 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5019 EOM
5020         use64bitint="$define"
5021         ;;
5022 esac                          
5023 case "$use64bitsint" in
5024 "$define"|true|[yY]*)
5025         cat <<EOM >&4
5026
5027 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5028 EOM
5029         use64bitint="$define"
5030         ;;
5031 esac                          
5032 case "$uselonglongs" in
5033 "$define"|true|[yY]*)
5034         cat <<EOM >&4
5035
5036 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5037 EOM
5038         use64bitint="$define"
5039         ;;
5040 esac                          
5041 case "$use64bitsall" in
5042 "$define"|true|[yY]*)
5043         cat <<EOM >&4
5044
5045 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5046 EOM
5047         use64bitall="$define"
5048         ;;
5049 esac                          
5050
5051 case "$ccflags" in
5052 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5053 esac
5054 case "$use64bitall" in
5055 "$define"|true|[yY]*) use64bitint="$define" ;;
5056 esac
5057
5058 case "$longsize" in
5059 8) cat <<EOM
5060
5061 You have natively 64-bit long integers.
5062 EOM
5063    val="$define"
5064    ;;
5065 *) case "$use64bitint" in
5066    "$define"|true|[yY]*) dflt='y';;
5067    *) dflt='n';;
5068    esac
5069    case "$d_quad" in
5070    "$define") ;;
5071    *) dflt='n' ;;
5072    esac
5073    cat <<EOM
5074
5075 Perl can be built to take advantage of 64-bit integer types
5076 on some systems.  To do so, Configure can be run with -Duse64bitint.
5077 Choosing this option will most probably introduce binary incompatibilities.
5078
5079 If this doesn't make any sense to you, just accept the default '$dflt'.
5080 (The default has been chosen based on your configuration.)
5081 EOM
5082    rp='Try to use 64-bit integers, if available?'
5083    . ./myread
5084    case "$ans" in
5085    [yY]*) val="$define" ;;
5086    *)     val="$undef"  ;;
5087    esac
5088    ;;
5089 esac
5090 set use64bitint
5091 eval $setvar
5092
5093 case "$use64bitall" in
5094 "$define"|true|[yY]*) dflt='y' ;;
5095 *) case "$longsize" in
5096    8) dflt='y' ;;
5097    *) dflt='n' ;;
5098    esac
5099    ;;
5100 esac    
5101 cat <<EOM
5102
5103 You may also choose to try maximal 64-bitness.  It means using as much
5104 64-bitness as possible on the platform.  This in turn means even more
5105 binary incompatibilities.  On the other hand, your platform may not
5106 have any more 64-bitness available than what you already have chosen.
5107
5108 If this doesn't make any sense to you, just accept the default '$dflt'.
5109 (The default has been chosen based on your configuration.)
5110 EOM
5111 rp='Try to use maximal 64-bit support, if available?'
5112 . ./myread
5113 case "$ans" in
5114 [yY]*) val="$define" ;;
5115 *)     val="$undef"  ;;
5116 esac
5117 set use64bitall
5118 eval $setvar
5119 case "$use64bitall" in
5120 "$define")
5121         case "$use64bitint" in
5122         "$undef")
5123                 cat <<EOM
5124
5125 Since you have chosen a maximally 64-bit build, I'm also turning on
5126 the use of 64-bit integers.
5127 EOM
5128                 use64bitint="$define" ;;
5129         esac
5130         ;;
5131 esac
5132
5133 case "$use64bitall" in
5134 "$define"|true|[yY]*)
5135         case "$ptrsize" in
5136         4)      cat <<EOM >&4
5137
5138 *** You have chosen a maximally 64-bit build, but your pointers
5139 *** are only 4 bytes wide, disabling maximal 64-bitness.
5140
5141 EOM
5142                 use64bitall="$undef"
5143                 case "$use64bitint" in
5144                 "$define"|true|[yY]*) ;;
5145                 *)      cat <<EOM >&4
5146
5147 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5148
5149 EOM
5150                         use64bitint="$define"
5151                         ;;
5152                 esac
5153                 ;;
5154         esac
5155         ;;
5156 esac
5157
5158 case "$use64bitint" in
5159 "$define"|true|[yY]*)
5160 : Look for a hint-file generated 'call-back-unit'.  If the
5161 : user has specified that a 64-bit perl is to be built,
5162 : we may need to set or change some other defaults.
5163         if $test -f use64bitint.cbu; then
5164                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5165                 . ./use64bitint.cbu
5166         fi
5167         case "$longsize" in
5168         4) case "$archname64" in
5169            '') archname64=64int ;;
5170            esac
5171            ;;
5172         esac
5173         ;;
5174 esac
5175
5176 case "$use64bitall" in
5177 "$define"|true|[yY]*)
5178 : Look for a hint-file generated 'call-back-unit'.  If the
5179 : user has specified that a maximally 64-bit perl is to be built,
5180 : we may need to set or change some other defaults.
5181         if $test -f use64bitall.cbu; then
5182                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5183                 . ./use64bitall.cbu
5184         fi
5185         case "$longsize" in
5186         4) case "$archname64" in
5187            ''|64int) archname64=64all ;;
5188            esac
5189            ;;
5190         esac
5191         ;;
5192 esac
5193
5194 echo " "
5195 echo "Checking for GNU C Library..." >&4
5196 cat >try.c <<EOM
5197 #include <stdio.h>
5198 int main()
5199 {
5200 #ifdef __GLIBC__
5201     exit(0);
5202 #else
5203     exit(1);
5204 #endif
5205 }
5206 EOM
5207 set try
5208 if eval $compile_ok && $run ./try; then
5209         val="$define"
5210         echo "You are using the GNU C Library"
5211 else
5212         val="$undef"
5213         echo "You are not using the GNU C Library"
5214 fi
5215 $rm -f try try.*
5216 set d_gnulibc
5217 eval $setvar
5218
5219 : see if nm is to be used to determine whether a symbol is defined or not
5220 case "$usenm" in
5221 '')
5222         dflt=''
5223         case "$d_gnulibc" in
5224         "$define")
5225                 echo " "
5226                 echo "nm probably won't work on the GNU C Library." >&4
5227                 dflt=n
5228                 ;;
5229         esac
5230         case "$dflt" in
5231         '') 
5232                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5233                         echo " "
5234                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5235                         echo "'nm' won't be sufficient on this sytem." >&4
5236                         dflt=n
5237                 fi
5238                 ;;
5239         esac
5240         case "$dflt" in
5241         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5242                 if $test $dflt -gt 20; then
5243                         dflt=y
5244                 else
5245                         dflt=n
5246                 fi
5247                 ;;
5248         esac
5249         ;;
5250 *)
5251         case "$usenm" in
5252         true|$define) dflt=y;;
5253         *) dflt=n;;
5254         esac
5255         ;;
5256 esac
5257 $cat <<EOM
5258
5259 I can use $nm to extract the symbols from your C libraries. This
5260 is a time consuming task which may generate huge output on the disk (up
5261 to 3 megabytes) but that should make the symbols extraction faster. The
5262 alternative is to skip the 'nm' extraction part and to compile a small
5263 test program instead to determine whether each symbol is present. If
5264 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5265 this may be the best solution.
5266
5267 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5268
5269 EOM
5270 rp="Shall I use $nm to extract C symbols from the libraries?"
5271 . ./myread
5272 case "$ans" in
5273 [Nn]*) usenm=false;;
5274 *) usenm=true;;
5275 esac
5276
5277 runnm=$usenm
5278 case "$reuseval" in
5279 true) runnm=false;;
5280 esac
5281
5282 : nm options which may be necessary
5283 case "$nm_opt" in
5284 '') if $test -f /mach_boot; then
5285                 nm_opt=''       # Mach
5286         elif $test -d /usr/ccs/lib; then
5287                 nm_opt='-p'     # Solaris (and SunOS?)
5288         elif $test -f /dgux; then
5289                 nm_opt='-p'     # DG-UX
5290         elif $test -f /lib64/rld; then
5291                 nm_opt='-p'     # 64-bit Irix
5292         else
5293                 nm_opt=''
5294         fi;;
5295 esac
5296
5297 : nm options which may be necessary for shared libraries but illegal
5298 : for archive libraries.  Thank you, Linux.
5299 case "$nm_so_opt" in
5300 '')     case "$myuname" in
5301         *linux*)
5302                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5303                         nm_so_opt='--dynamic'
5304                 fi
5305                 ;;
5306         esac
5307         ;;
5308 esac
5309
5310 case "$runnm" in
5311 true)
5312 : get list of predefined functions in a handy place
5313 echo " "
5314 case "$libc" in
5315 '') libc=unknown
5316         case "$libs" in
5317         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5318         esac
5319         ;;
5320 esac
5321 case "$libs" in
5322 '') ;;
5323 *)  for thislib in $libs; do
5324         case "$thislib" in
5325         -lc|-lc_s)
5326                 : Handle C library specially below.
5327                 ;;
5328         -l*)
5329                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5330                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5331                         :
5332                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5333                         :
5334                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5335                         :
5336                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5337                         :
5338                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5339                         :
5340                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5341                         :
5342                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5343                         :
5344                 else
5345                         try=''
5346                 fi
5347                 libnames="$libnames $try"
5348                 ;;
5349         *) libnames="$libnames $thislib" ;;
5350         esac
5351         done
5352         ;;
5353 esac
5354 xxx=normal
5355 case "$libc" in
5356 unknown)
5357         set /lib/libc.$so
5358         for xxx in $libpth; do
5359                 $test -r $1 || set $xxx/libc.$so
5360                 : The messy sed command sorts on library version numbers.
5361                 $test -r $1 || \
5362                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5363                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5364                                 h
5365                                 s/[0-9][0-9]*/0000&/g
5366                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5367                                 G
5368                                 s/\n/ /' | \
5369                          $sort | $sed -e 's/^.* //'`
5370                 eval set \$$#
5371         done
5372         $test -r $1 || set /usr/ccs/lib/libc.$so
5373         $test -r $1 || set /lib/libsys_s$_a
5374         ;;
5375 *)
5376         set blurfl
5377         ;;
5378 esac
5379 if $test -r "$1"; then
5380         echo "Your (shared) C library seems to be in $1."
5381         libc="$1"
5382 elif $test -r /lib/libc && $test -r /lib/clib; then
5383         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5384         xxx=apollo
5385         libc='/lib/clib /lib/libc'
5386         if $test -r /lib/syslib; then
5387                 echo "(Your math library is in /lib/syslib.)"
5388                 libc="$libc /lib/syslib"
5389         fi
5390 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5391         echo "Your C library seems to be in $libc, as you said before."
5392 elif $test -r $incpath/usr/lib/libc$_a; then
5393         libc=$incpath/usr/lib/libc$_a;
5394         echo "Your C library seems to be in $libc.  That's fine."
5395 elif $test -r /lib/libc$_a; then
5396         libc=/lib/libc$_a;
5397         echo "Your C library seems to be in $libc.  You're normal."
5398 else
5399         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5400                 :
5401         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5402                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5403         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5404                 :
5405         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5406                 :
5407         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5408                 :
5409         else
5410                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5411         fi
5412         if $test -r "$tans"; then
5413                 echo "Your C library seems to be in $tans, of all places."
5414                 libc=$tans
5415         else
5416                 libc='blurfl'
5417         fi
5418 fi
5419 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5420         dflt="$libc"
5421         cat <<EOM
5422
5423 If the guess above is wrong (which it might be if you're using a strange
5424 compiler, or your machine supports multiple models), you can override it here.
5425
5426 EOM
5427 else
5428         dflt=''
5429         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5430         cat >&4 <<EOM
5431 I can't seem to find your C library.  I've looked in the following places:
5432
5433 EOM
5434         $sed 's/^/      /' libpath
5435         cat <<EOM
5436
5437 None of these seems to contain your C library. I need to get its name...
5438
5439 EOM
5440 fi
5441 fn=f
5442 rp='Where is your C library?'
5443 . ./getfile
5444 libc="$ans"
5445
5446 echo " "
5447 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5448 set X `cat libnames`
5449 shift
5450 xxx=files
5451 case $# in 1) xxx=file; esac
5452 echo "Extracting names from the following $xxx for later perusal:" >&4
5453 echo " "
5454 $sed 's/^/      /' libnames >&4
5455 echo " "
5456 $echo $n "This may take a while...$c" >&4
5457
5458 for file in $*; do
5459         case $file in
5460         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5461         *) $nm $nm_opt $file 2>/dev/null;;
5462         esac
5463 done >libc.tmp
5464
5465 $echo $n ".$c"
5466 $grep fprintf libc.tmp > libc.ptf
5467 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5468 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5469 xxx='[ADTSIW]'
5470 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5471         eval $xscan;\
5472         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5473                 eval $xrun
5474 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5475         eval $xscan;\
5476         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5477                 eval $xrun
5478 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5479         eval $xscan;\
5480         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5481                 eval $xrun
5482 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5483         eval $xscan;\
5484         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5485                 eval $xrun
5486 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5487         eval $xscan;\
5488         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5489                 eval $xrun
5490 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5491         eval $xscan;\
5492         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5493                 eval $xrun
5494 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5495                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5496         eval $xscan;\
5497         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5498                 eval $xrun
5499 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5500         eval $xscan;\
5501         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5502                 eval $xrun
5503 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5504         eval $xscan;\
5505         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5506                 eval $xrun
5507 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5508         eval $xscan;\
5509         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5510                 eval $xrun
5511 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5512         eval $xscan;\
5513         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5514                 eval $xrun
5515 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5516         eval $xscan;\
5517         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5518                 eval $xrun
5519 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5520         eval $xscan;\
5521         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5522                 eval $xrun
5523 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5524         eval $xscan;\
5525         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5526                 eval $xrun
5527 else
5528         $nm -p $* 2>/dev/null >libc.tmp
5529         $grep fprintf libc.tmp > libc.ptf
5530         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5531                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5532         then
5533                 nm_opt='-p'
5534                 eval $xrun
5535         else
5536                 echo " "
5537                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5538                 com=''
5539                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5540                         for thisname in $libnames $libc; do
5541                                 $ar t $thisname >>libc.tmp
5542                         done
5543                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5544                         echo "Ok." >&4
5545                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5546                         # Repeat libc to extract forwarders to DLL entries too
5547                         for thisname in $libnames $libc; do
5548                                 $ar tv $thisname >>libc.tmp
5549                                 # Revision 50 of EMX has bug in $ar.
5550                                 # it will not extract forwarders to DLL entries
5551                                 # Use emximp which will extract exactly them.
5552                                 emximp -o tmp.imp $thisname \
5553                                     2>/dev/null && \
5554                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5555                                     < tmp.imp >>libc.tmp
5556                                 $rm tmp.imp
5557                         done
5558                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5559                         echo "Ok." >&4
5560                 else
5561                         echo "$ar didn't seem to work right." >&4
5562                         echo "Maybe this is a Cray...trying bld instead..." >&4
5563                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5564                         then
5565                                 for thisname in $libnames; do
5566                                         bld t $libnames | \
5567                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5568                                         $ar t $thisname >>libc.tmp
5569                                 done
5570                                 echo "Ok." >&4
5571                         else
5572                                 echo "That didn't work either.  Giving up." >&4
5573                                 exit 1
5574                         fi
5575                 fi
5576         fi
5577 fi
5578 nm_extract="$com"
5579 if $test -f /lib/syscalls.exp; then
5580         echo " "
5581         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5582         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5583 fi
5584 ;;
5585 esac
5586 $rm -f libnames libpath
5587
5588 : is a C symbol defined?
5589 csym='tlook=$1;
5590 case "$3" in
5591 -v) tf=libc.tmp; tc=""; tdc="";;
5592 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5593 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5594 esac;
5595 tx=yes;
5596 case "$reuseval-$4" in
5597 true-) ;;
5598 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5599 esac;
5600 case "$tx" in
5601 yes)
5602         case "$runnm" in
5603         true)
5604                 if $contains $tlook $tf >/dev/null 2>&1;
5605                 then tval=true;
5606                 else tval=false;
5607                 fi;;
5608         *)
5609                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5610                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5611                 then tval=true;
5612                 else tval=false;
5613                 fi;
5614                 $rm -f t t.c;;
5615         esac;;
5616 *)
5617         case "$tval" in
5618         $define) tval=true;;
5619         *) tval=false;;
5620         esac;;
5621 esac;
5622 eval "$2=$tval"'
5623
5624 : define an is-in-libc? function
5625 inlibc='echo " "; td=$define; tu=$undef;
5626 sym=$1; var=$2; eval "was=\$$2";
5627 tx=yes;
5628 case "$reuseval$was" in
5629 true) ;;
5630 true*) tx=no;;
5631 esac;
5632 case "$tx" in
5633 yes)
5634         set $sym tres -f;
5635         eval $csym;
5636         case "$tres" in
5637         true)
5638                 echo "$sym() found." >&4;
5639                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5640         *)
5641                 echo "$sym() NOT found." >&4;
5642                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5643         esac;;
5644 *)
5645         case "$was" in
5646         $define) echo "$sym() found." >&4;;
5647         *) echo "$sym() NOT found." >&4;;
5648         esac;;
5649 esac'
5650
5651 : see if sqrtl exists
5652 set sqrtl d_sqrtl
5653 eval $inlibc
5654
5655 case "$ccflags" in
5656 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5657 esac
5658
5659 case "$uselongdouble" in
5660 $define|true|[yY]*)     dflt='y';;
5661 *) dflt='n';;
5662 esac
5663 cat <<EOM
5664
5665 Perl can be built to take advantage of long doubles which
5666 (if available) may give more accuracy and range for floating point numbers.
5667
5668 If this doesn't make any sense to you, just accept the default '$dflt'.
5669 EOM
5670 rp='Try to use long doubles if available?'
5671 . ./myread
5672 case "$ans" in
5673 y|Y)    val="$define"   ;;
5674 *)      val="$undef"    ;;
5675 esac
5676 set uselongdouble
5677 eval $setvar
5678
5679 case "$uselongdouble" in
5680 true|[yY]*) uselongdouble="$define" ;;
5681 esac
5682
5683 case "$uselongdouble" in
5684 $define)
5685 : Look for a hint-file generated 'call-back-unit'.  If the
5686 : user has specified that long doubles should be used,
5687 : we may need to set or change some other defaults.
5688         if $test -f uselongdouble.cbu; then
5689                 echo "Your platform has some specific hints for long doubles, using them..."
5690                 . ./uselongdouble.cbu
5691         else
5692                 $cat <<EOM
5693 (Your platform doesn't have any specific hints for long doubles.)
5694 EOM
5695         fi
5696         ;;
5697 esac
5698
5699 case "$uselongdouble:$d_sqrtl" in
5700 $define:$undef)
5701                 $cat <<EOM >&4
5702
5703 *** You requested the use of long doubles but you do not seem to have
5704 *** the mathematic functions for long doubles.  I'm disabling the use
5705 *** of long doubles.
5706
5707 EOM
5708         uselongdouble=$undef
5709         ;;
5710 esac
5711
5712 : check for length of double
5713 echo " "
5714 case "$doublesize" in
5715 '')
5716         echo "Checking to see how big your double precision numbers are..." >&4
5717         $cat >try.c <<'EOCP'
5718 #include <stdio.h>
5719 int main()
5720 {
5721     printf("%d\n", (int)sizeof(double));
5722     exit(0);
5723 }
5724 EOCP
5725         set try
5726         if eval $compile_ok; then
5727                 doublesize=`$run ./try`
5728                 echo "Your double is $doublesize bytes long."
5729         else
5730                 dflt='8'
5731                 echo "(I can't seem to compile the test program.  Guessing...)"
5732                 rp="What is the size of a double precision number (in bytes)?"
5733                 . ./myread
5734                 doublesize="$ans"
5735         fi
5736         ;;
5737 esac
5738 $rm -f try.c try
5739
5740 : check for long doubles
5741 echo " "
5742 echo "Checking to see if you have long double..." >&4
5743 echo 'int main() { long double x = 7.0; }' > try.c
5744 set try
5745 if eval $compile; then
5746         val="$define"
5747         echo "You have long double."
5748 else
5749         val="$undef"
5750         echo "You do not have long double."
5751 fi
5752 $rm try.*
5753 set d_longdbl
5754 eval $setvar
5755
5756 : check for length of long double
5757 case "${d_longdbl}${longdblsize}" in
5758 $define)
5759         echo " "
5760         echo "Checking to see how big your long doubles are..." >&4
5761         $cat >try.c <<'EOCP'
5762 #include <stdio.h>
5763 int main()
5764 {
5765         printf("%d\n", sizeof(long double));
5766 }
5767 EOCP
5768         set try
5769         set try
5770         if eval $compile; then
5771                 longdblsize=`$run ./try`
5772                 echo "Your long doubles are $longdblsize bytes long."
5773         else
5774                 dflt='8'
5775                 echo " "
5776                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5777                 rp="What is the size of a long double (in bytes)?"
5778                 . ./myread
5779                 longdblsize="$ans"
5780         fi
5781         if $test "X$doublesize" = "X$longdblsize"; then
5782                 echo "(That isn't any different from an ordinary double.)"
5783         fi      
5784         ;;
5785 esac
5786 $rm -f try.* try
5787
5788 case "$useperlio" in
5789 $define|true|[yY]*|'')  dflt='y';;
5790 *) dflt='n';;
5791 esac
5792 cat <<EOM
5793
5794 Previous version of $package used the standard IO mechanisms as
5795 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5796 alternate IO mechanisms via the PerlIO abstraction layer, but the
5797 stdio mechanism is still available if needed.  The abstraction layer
5798 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5799 Using PerlIO with sfio may cause problems with some extension modules.
5800
5801 If this doesn't make any sense to you, just accept the default '$dflt'.
5802 EOM
5803 rp='Use the PerlIO abstraction layer?'
5804 . ./myread
5805 case "$ans" in
5806 y|Y) 
5807         val="$define"
5808         ;;
5809 *)      
5810         echo "Ok, doing things the stdio way."
5811         val="$undef"
5812         ;;
5813 esac
5814 set useperlio
5815 eval $setvar 
5816
5817 case "$usesocks" in
5818 $define|true|[yY]*)
5819         case "$useperlio" in
5820         $define|true|[yY]*) ;;
5821         *)      cat >&4 <<EOM
5822
5823 You are using the SOCKS proxy protocol library which means that you
5824 should also use the PerlIO layer.  You may be headed for trouble.
5825
5826 EOM
5827                 ;;
5828         esac
5829         ;;
5830 esac
5831
5832         
5833 : determine the architecture name
5834 echo " "
5835 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5836         tarch=`arch`"-$osname"
5837 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5838         if uname -m > tmparch 2>&1 ; then
5839                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5840                         -e 's/$/'"-$osname/" tmparch`
5841         else
5842                 tarch="$osname"
5843         fi
5844         $rm -f tmparch
5845 else
5846         tarch="$osname"
5847 fi
5848 case "$myarchname" in
5849 ''|"$tarch") ;;
5850 *)
5851         echo "(Your architecture name used to be $myarchname.)"
5852         archname=''
5853         ;;
5854 esac
5855 case "$targetarch" in
5856 '') ;;
5857 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5858 esac
5859 myarchname="$tarch"
5860 case "$archname" in
5861 '') dflt="$tarch";;
5862 *) dflt="$archname";;
5863 esac
5864 rp='What is your architecture name'
5865 . ./myread
5866 archname="$ans"
5867 case "$usethreads" in
5868 $define)
5869         echo "Threads selected." >&4
5870         case "$archname" in
5871         *-thread*) echo "...and architecture name already has -thread." >&4
5872                 ;;
5873         *)      archname="$archname-thread"
5874                 echo "...setting architecture name to $archname." >&4
5875                 ;;
5876         esac
5877         ;;
5878 esac
5879 case "$usemultiplicity" in
5880 $define)
5881         echo "Multiplicity selected." >&4
5882         case "$archname" in
5883         *-multi*) echo "...and architecture name already has -multi." >&4
5884                 ;;
5885         *)      archname="$archname-multi"
5886                 echo "...setting architecture name to $archname." >&4
5887                 ;;
5888         esac
5889         ;;
5890 esac
5891 case "$use64bitint$use64bitall" in
5892 *"$define"*)
5893         case "$archname64" in
5894         '')
5895                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5896                 ;;
5897         *)
5898                 case "$use64bitint" in
5899                 "$define") echo "64 bit integers selected." >&4 ;;
5900                 esac
5901                 case "$use64bitall" in
5902                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5903                 esac
5904                 case "$archname" in
5905                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5906                         ;;
5907                 *)      archname="$archname-$archname64"
5908                         echo "...setting architecture name to $archname." >&4
5909                         ;;
5910                 esac
5911                 ;;
5912         esac
5913 esac
5914 case "$uselongdouble" in
5915 $define)
5916         echo "Long doubles selected." >&4
5917         case "$longdblsize" in
5918         $doublesize)
5919                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5920                 ;;
5921         *)
5922                 case "$archname" in
5923                 *-ld*) echo "...and architecture name already has -ld." >&4
5924                         ;;
5925                 *)      archname="$archname-ld"
5926                         echo "...setting architecture name to $archname." >&4
5927                         ;;
5928                 esac
5929                 ;;
5930         esac
5931         ;;
5932 esac
5933 case "$useperlio" in
5934 $define)
5935         echo "Perlio selected." >&4
5936         ;;
5937 *)
5938         echo "Perlio not selected, using stdio." >&4
5939         case "$archname" in
5940         *-stdio*) echo "...and architecture name already has -stdio." >&4
5941                 ;;
5942         *)      archname="$archname-stdio"
5943                 echo "...setting architecture name to $archname." >&4
5944                 ;;
5945         esac
5946         ;;
5947 esac
5948
5949 : determine root of directory hierarchy where package will be installed.
5950 case "$prefix" in
5951 '')
5952         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5953         ;;
5954 *)
5955         dflt="$prefix"
5956         ;;
5957 esac
5958 $cat <<EOM
5959
5960 By default, $package will be installed in $dflt/bin, manual pages
5961 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5962 installation directories. Typically this is something like /usr/local.
5963 If you wish to have binaries under /usr/bin but other parts of the
5964 installation under /usr/local, that's ok: you will be prompted
5965 separately for each of the installation directories, the prefix being
5966 only used to set the defaults.
5967
5968 EOM
5969 fn=d~
5970 rp='Installation prefix to use?'
5971 . ./getfile
5972 oldprefix=''
5973 case "$prefix" in
5974 '') ;;
5975 *)
5976         case "$ans" in
5977         "$prefix") ;;
5978         *) oldprefix="$prefix";;
5979         esac
5980         ;;
5981 esac
5982 prefix="$ans"
5983 prefixexp="$ansexp"
5984
5985 case "$afsroot" in
5986 '')     afsroot=/afs ;;
5987 *)      afsroot=$afsroot ;;
5988 esac
5989
5990 : is AFS running?
5991 echo " "
5992 case "$afs" in
5993 $define|true)   afs=true ;;
5994 $undef|false)   afs=false ;;
5995 *)      if test -d $afsroot; then
5996                 afs=true
5997         else
5998                 afs=false
5999         fi
6000         ;;
6001 esac
6002 if $afs; then
6003         echo "AFS may be running... I'll be extra cautious then..." >&4
6004 else
6005         echo "AFS does not seem to be running..." >&4
6006 fi
6007
6008 : determine installation prefix for where package is to be installed.
6009 if $afs; then 
6010 $cat <<EOM
6011
6012 Since you are running AFS, I need to distinguish the directory in which
6013 files will reside from the directory in which they are installed (and from
6014 which they are presumably copied to the former directory by occult means).
6015
6016 EOM
6017         case "$installprefix" in
6018         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6019         *) dflt="$installprefix";;
6020         esac
6021 else
6022 $cat <<EOM
6023
6024 In some special cases, particularly when building $package for distribution,
6025 it is convenient to distinguish between the directory in which files should 
6026 be installed from the directory ($prefix) in which they 
6027 will eventually reside.  For most users, these two directories are the same.
6028
6029 EOM
6030         case "$installprefix" in
6031         '') dflt=$prefix ;;
6032         *) dflt=$installprefix;;
6033         esac
6034 fi
6035 fn=d~
6036 rp='What installation prefix should I use for installing files?'
6037 . ./getfile
6038 installprefix="$ans"
6039 installprefixexp="$ansexp"
6040
6041 : set the prefixit variable, to compute a suitable default value
6042 prefixit='case "$3" in
6043 ""|none)
6044         case "$oldprefix" in
6045         "") eval "$1=\"\$$2\"";;
6046         *)
6047                 case "$3" in
6048                 "") eval "$1=";;
6049                 none)
6050                         eval "tp=\"\$$2\"";
6051                         case "$tp" in
6052                         ""|" ") eval "$1=\"\$$2\"";;
6053                         *) eval "$1=";;
6054                         esac;;
6055                 esac;;
6056         esac;;
6057 *)
6058         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6059         case "$tp" in
6060         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6061         /*-$oldprefix/*|\~*-$oldprefix/*)
6062                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6063         *) eval "$1=\"\$$2\"";;
6064         esac;;
6065 esac'
6066
6067 : get the patchlevel
6068 echo " "
6069 echo "Getting the current patchlevel..." >&4
6070 if $test -r $rsrc/patchlevel.h;then
6071         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6072         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6073         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6074         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6075         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6076         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6077        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6078 else
6079         revision=0
6080         patchlevel=0
6081         subversion=0
6082         api_revision=0
6083         api_version=0
6084         api_subversion=0
6085         perl_patchlevel=0
6086         $echo "(You do not have patchlevel.h.  Eek.)"
6087 fi
6088 if $test -r $rsrc/.patch ; then  
6089         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6090                 perl_patchlevel=`cat $rsrc/.patch`
6091         fi
6092 fi
6093 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6094 version_patchlevel_string="version $patchlevel subversion $subversion"
6095 case "$perl_patchlevel" in
6096 0|'') ;;
6097 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6098 esac
6099
6100 $echo "(You have $package $version_patchlevel_string.)"
6101
6102 case "$osname" in
6103 dos|vms)
6104         : XXX Should be a Configure test for double-dots in filenames.
6105         version=`echo $revision $patchlevel $subversion | \
6106                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6107         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6108                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6109         ;;
6110 *)
6111         version=`echo $revision $patchlevel $subversion | \
6112                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6113         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6114                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6115         ;;
6116 esac
6117 : Special case the 5.005_xx maintenance series, which used 5.005
6118 : without any subversion label as a subdirectory in $sitelib
6119 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6120         api_versionstring='5.005'
6121 fi
6122
6123 : determine installation style
6124 : For now, try to deduce it from prefix unless it is already set.
6125 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6126 case "$installstyle" in
6127 '')     case "$prefix" in
6128                 *perl*) dflt='lib';;
6129                 *) dflt='lib/perl5' ;;
6130         esac
6131         ;;
6132 *)      dflt="$installstyle" ;;
6133 esac
6134 : Probably not worth prompting for this since we prompt for all
6135 : the directories individually, and the prompt would be too long and
6136 : confusing anyway.
6137 installstyle=$dflt
6138
6139 : determine where private library files go
6140 : Usual default is /usr/local/lib/perl5/$version.
6141 : Also allow things like /opt/perl/lib/$version, since 
6142 : /opt/perl/lib/perl5... would be redundant.
6143 : The default "style" setting is made in installstyle.U
6144 case "$installstyle" in
6145 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6146 *)       set dflt privlib lib/$version ;;
6147 esac
6148 eval $prefixit
6149 $cat <<EOM
6150
6151 There are some auxiliary files for $package that need to be put into a
6152 private library directory that is accessible by everyone.
6153
6154 EOM
6155 fn=d~+
6156 rp='Pathname where the private library files will reside?'
6157 . ./getfile
6158 privlib="$ans"
6159 privlibexp="$ansexp"
6160 : Change installation prefix, if necessary.
6161 if $test X"$prefix" != X"$installprefix"; then
6162         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6163 else
6164         installprivlib="$privlibexp"
6165 fi
6166
6167 : set the prefixup variable, to restore leading tilda escape
6168 prefixup='case "$prefixexp" in
6169 "$prefix") ;;
6170 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6171 esac'
6172
6173 : determine where public architecture dependent libraries go
6174 set archlib archlib
6175 eval $prefixit
6176 : privlib default is /usr/local/lib/$package/$version
6177 : archlib default is /usr/local/lib/$package/$version/$archname
6178 : privlib may have an optional trailing /share.
6179 tdflt=`echo $privlib | $sed 's,/share$,,'`
6180 tdflt=$tdflt/$archname
6181 case "$archlib" in
6182 '')     dflt=$tdflt
6183         ;;
6184 *)      dflt="$archlib"
6185     ;;
6186 esac
6187 $cat <<EOM
6188
6189 $spackage contains architecture-dependent library files.  If you are
6190 sharing libraries in a heterogeneous environment, you might store
6191 these files in a separate location.  Otherwise, you can just include
6192 them with the rest of the public library files.
6193
6194 EOM
6195 fn=d+~
6196 rp='Where do you want to put the public architecture-dependent libraries?'
6197 . ./getfile
6198 archlib="$ans"
6199 archlibexp="$ansexp"
6200 if $test X"$archlib" = X"$privlib"; then
6201         d_archlib="$undef"
6202 else
6203         d_archlib="$define"
6204 fi
6205 : Change installation prefix, if necessary.
6206 if $test X"$prefix" != X"$installprefix"; then
6207         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6208 else
6209         installarchlib="$archlibexp"
6210 fi
6211
6212
6213 : Binary compatibility with 5.005 is not possible for builds
6214 : with advanced features
6215 case "$usethreads$usemultiplicity" in
6216 *define*)
6217         bincompat5005="$undef"
6218         d_bincompat5005="$undef"
6219         ;;
6220 *)      $cat <<EOM
6221
6222 This version of Perl can be compiled for binary compatibility with 5.005.
6223 If you decide to do so, you will be able to continue using most of the
6224 extensions that were compiled for Perl 5.005.
6225
6226 EOM
6227         case "$bincompat5005$d_bincompat5005" in
6228         *"$undef"*) dflt=n ;;
6229         *) dflt=y ;;
6230         esac
6231         rp='Binary compatibility with Perl 5.005?'
6232         . ./myread
6233         case "$ans" in
6234         y*) val="$define" ;;
6235         *)  val="$undef" ;;
6236         esac
6237         set d_bincompat5005
6238         eval $setvar
6239         case "$d_bincompat5005" in
6240         "$define")
6241                 bincompat5005="$define"
6242                 ;;
6243         *)      bincompat5005="$undef"
6244                 d_bincompat5005="$undef"
6245                 ;;
6246         esac
6247         ;;
6248 esac
6249
6250
6251 : see if setuid scripts can be secure
6252 $cat <<EOM
6253
6254 Some kernels have a bug that prevents setuid #! scripts from being
6255 secure.  Some sites have disabled setuid #! scripts because of this.
6256
6257 First let's decide if your kernel supports secure setuid #! scripts.
6258 (If setuid #! scripts would be secure but have been disabled anyway,
6259 don't say that they are secure if asked.)
6260
6261 EOM
6262
6263 val="$undef"
6264 if $test -d /dev/fd; then
6265         echo "#!$ls" >reflect
6266         chmod +x,u+s reflect
6267         ./reflect >flect 2>&1
6268         if $contains "/dev/fd" flect >/dev/null; then
6269                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6270                 val="$define"
6271         else
6272                 $cat <<EOM
6273 If you are not sure if they are secure, I can check but I'll need a
6274 username and password different from the one you are using right now.
6275 If you don't have such a username or don't want me to test, simply
6276 enter 'none'.
6277
6278 EOM
6279                 rp='Other username to test security of setuid scripts with?'
6280                 dflt='none'
6281                 . ./myread
6282                 case "$ans" in
6283                 n|none)
6284                         case "$d_suidsafe" in
6285                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6286                                 dflt=n;;
6287                         "$undef")
6288                                 echo "Well, the $hint value is *not* secure." >&4
6289                                 dflt=n;;
6290                         *)      echo "Well, the $hint value *is* secure." >&4
6291                                 dflt=y;;
6292                         esac
6293                         ;;
6294                 *)
6295                         $rm -f reflect flect
6296                         echo "#!$ls" >reflect
6297                         chmod +x,u+s reflect
6298                         echo >flect
6299                         chmod a+w flect
6300                         echo '"su" will (probably) prompt you for '"$ans's password."
6301                         su $ans -c './reflect >flect'
6302                         if $contains "/dev/fd" flect >/dev/null; then
6303                                 echo "Okay, it looks like setuid scripts are secure." >&4
6304                                 dflt=y
6305                         else
6306                                 echo "I don't think setuid scripts are secure." >&4
6307                                 dflt=n
6308                         fi
6309                         ;;
6310                 esac
6311                 rp='Does your kernel have *secure* setuid scripts?'
6312                 . ./myread
6313                 case "$ans" in
6314                 [yY]*)  val="$define";;
6315                 *)      val="$undef";;
6316                 esac
6317         fi
6318 else
6319         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6320         echo "(That's for file descriptors, not floppy disks.)"
6321         val="$undef"
6322 fi
6323 set d_suidsafe
6324 eval $setvar
6325
6326 $rm -f reflect flect
6327
6328 : now see if they want to do setuid emulation
6329 echo " "
6330 val="$undef"
6331 case "$d_suidsafe" in
6332 "$define")
6333         val="$undef"
6334         echo "No need to emulate SUID scripts since they are secure here." >& 4
6335         ;;
6336 *)
6337         $cat <<EOM
6338 Some systems have disabled setuid scripts, especially systems where
6339 setuid scripts cannot be secure.  On systems where setuid scripts have
6340 been disabled, the setuid/setgid bits on scripts are currently
6341 useless.  It is possible for $package to detect those bits and emulate
6342 setuid/setgid in a secure fashion.  This emulation will only work if
6343 setuid scripts have been disabled in your kernel.
6344
6345 EOM
6346         case "$d_dosuid" in
6347         "$define") dflt=y ;;
6348         *) dflt=n ;;
6349         esac
6350         rp="Do you want to do setuid/setgid emulation?"
6351         . ./myread
6352         case "$ans" in
6353         [yY]*)  val="$define";;
6354         *)      val="$undef";;
6355         esac
6356         ;;
6357 esac
6358 set d_dosuid
6359 eval $setvar
6360
6361 : see if this is a malloc.h system
6362 set malloc.h i_malloc
6363 eval $inhdr
6364
6365 : see if stdlib is available
6366 set stdlib.h i_stdlib
6367 eval $inhdr
6368
6369 : determine which malloc to compile in
6370 echo " "
6371 case "$usemymalloc" in
6372 [yY]*|true|$define)     dflt='y' ;;
6373 [nN]*|false|$undef)     dflt='n' ;;
6374 *)      case "$ptrsize" in
6375         4) dflt='y' ;;
6376         *) dflt='n' ;;
6377         esac
6378         ;;
6379 esac
6380 rp="Do you wish to attempt to use the malloc that comes with $package?"
6381 . ./myread
6382 usemymalloc="$ans"
6383 case "$ans" in
6384 y*|true)
6385         usemymalloc='y'
6386         mallocsrc='malloc.c'
6387         mallocobj="malloc$_o"
6388         d_mymalloc="$define"
6389         case "$libs" in
6390         *-lmalloc*)
6391                 : Remove malloc from list of libraries to use
6392                 echo "Removing unneeded -lmalloc from library list" >&4
6393                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6394                 shift
6395                 libs="$*"
6396                 echo "libs = $libs" >&4
6397                 ;;
6398         esac
6399         ;;
6400 *)
6401         usemymalloc='n'
6402         mallocsrc=''
6403         mallocobj=''
6404         d_mymalloc="$undef"
6405         ;;
6406 esac
6407
6408 : compute the return types of malloc and free
6409 echo " "
6410 $cat >malloc.c <<END
6411 #$i_malloc I_MALLOC
6412 #$i_stdlib I_STDLIB
6413 #include <stdio.h>
6414 #include <sys/types.h>
6415 #ifdef I_MALLOC
6416 #include <malloc.h>
6417 #endif
6418 #ifdef I_STDLIB
6419 #include <stdlib.h>
6420 #endif
6421 #ifdef TRY_MALLOC
6422 void *malloc();
6423 #endif
6424 #ifdef TRY_FREE
6425 void free();
6426 #endif
6427 END
6428 case "$malloctype" in
6429 '')
6430         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6431                 malloctype='void *'
6432         else
6433                 malloctype='char *'
6434         fi
6435         ;;
6436 esac
6437 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6438
6439 case "$freetype" in
6440 '')
6441         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6442                 freetype='void'
6443         else
6444                 freetype='int'
6445         fi
6446         ;;
6447 esac
6448 echo "Your system uses $freetype free(), it would seem." >&4
6449 $rm -f malloc.[co]
6450 $cat <<EOM
6451
6452 After $package is installed, you may wish to install various
6453 add-on modules and utilities.  Typically, these add-ons will
6454 be installed under $prefix with the rest
6455 of this package.  However, you may wish to install such add-ons
6456 elsewhere under a different prefix.
6457
6458 If you do not wish to put everything under a single prefix, that's
6459 ok.  You will be prompted for the individual locations; this siteprefix
6460 is only used to suggest the defaults.
6461
6462 The default should be fine for most people.
6463
6464 EOM
6465 fn=d~+
6466 rp='Installation prefix to use for add-on modules and utilities?'
6467 : XXX Here might be another good place for an installstyle setting.
6468 case "$siteprefix" in
6469 '') dflt=$prefix ;;
6470 *)  dflt=$siteprefix ;;
6471 esac
6472 . ./getfile
6473 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6474 oldsiteprefix=''
6475 case "$siteprefix" in
6476 '') ;;
6477 *)      case "$ans" in
6478         "$prefix") ;;
6479         *) oldsiteprefix="$prefix";;
6480         esac
6481         ;;
6482 esac
6483 siteprefix="$ans"
6484 siteprefixexp="$ansexp"
6485
6486 : determine where site specific libraries go.
6487 : Usual default is /usr/local/lib/perl5/site_perl/$version
6488 : The default "style" setting is made in installstyle.U
6489 : XXX No longer works with Prefixit stuff.
6490 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6491 case "$sitelib" in
6492 '') case "$installstyle" in
6493         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6494         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6495         esac
6496         ;;
6497 *)      dflt="$sitelib"
6498         ;;
6499 esac
6500 $cat <<EOM
6501
6502 The installation process will create a directory for
6503 site-specific extensions and modules.  Most users find it convenient
6504 to place all site-specific files in this directory rather than in the
6505 main distribution directory.
6506
6507 EOM
6508 fn=d~+
6509 rp='Pathname for the site-specific library files?'
6510 . ./getfile
6511 sitelib="$ans"
6512 sitelibexp="$ansexp"
6513 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6514 : Change installation prefix, if necessary.
6515 if $test X"$prefix" != X"$installprefix"; then
6516         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6517 else
6518         installsitelib="$sitelibexp"
6519 fi
6520
6521 : determine where site specific architecture-dependent libraries go.
6522 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6523 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6524 : sitelib may have an optional trailing /share.
6525 case "$sitearch" in
6526 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6527         dflt="$dflt/$archname"
6528         ;;
6529 *)      dflt="$sitearch"
6530         ;;
6531 esac
6532 set sitearch sitearch none
6533 eval $prefixit
6534 $cat <<EOM
6535
6536 The installation process will also create a directory for
6537 architecture-dependent site-specific extensions and modules.
6538
6539 EOM
6540 fn=d~+
6541 rp='Pathname for the site-specific architecture-dependent library files?'
6542 . ./getfile
6543 sitearch="$ans"
6544 sitearchexp="$ansexp"
6545 : Change installation prefix, if necessary.
6546 if $test X"$prefix" != X"$installprefix"; then
6547         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6548 else
6549         installsitearch="$sitearchexp"
6550 fi
6551
6552 $cat <<EOM
6553
6554 The installation process will also create a directory for
6555 vendor-supplied add-ons.  Vendors who supply perl with their system
6556 may find it convenient to place all vendor-supplied files in this
6557 directory rather than in the main distribution directory.  This will
6558 ease upgrades between binary-compatible maintenance versions of perl.
6559
6560 Of course you may also use these directories in whatever way you see
6561 fit.  For example, you might use them to access modules shared over a
6562 company-wide network.
6563
6564 The default answer should be fine for most people.
6565 This causes further questions about vendor add-ons to be skipped
6566 and no vendor-specific directories will be configured for perl.
6567
6568 EOM
6569 rp='Do you want to configure vendor-specific add-on directories?'
6570 case "$usevendorprefix" in
6571 define|true|[yY]*) dflt=y ;;
6572 *)      : User may have set vendorprefix directly on Configure command line.
6573         case "$vendorprefix" in
6574         ''|' ') dflt=n ;;
6575         *)      dflt=y ;;
6576         esac
6577         ;;
6578 esac
6579 . ./myread
6580 case "$ans" in
6581 [yY]*)  fn=d~+
6582         rp='Installation prefix to use for vendor-supplied add-ons?'
6583         case "$vendorprefix" in
6584         '') dflt='' ;;
6585         *)  dflt=$vendorprefix ;;
6586         esac
6587         . ./getfile
6588         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6589         oldvendorprefix=''
6590         case "$vendorprefix" in
6591         '') ;;
6592         *)      case "$ans" in
6593                 "$prefix") ;;
6594                 *) oldvendorprefix="$prefix";;
6595                 esac
6596                 ;;
6597         esac
6598         usevendorprefix="$define"
6599         vendorprefix="$ans"
6600         vendorprefixexp="$ansexp"
6601         ;;
6602 *)      usevendorprefix="$undef"
6603         vendorprefix=''
6604         vendorprefixexp=''
6605         ;;
6606 esac
6607
6608 case "$vendorprefix" in
6609 '')     d_vendorlib="$undef"
6610         vendorlib=''
6611         vendorlibexp=''
6612         ;;
6613 *)      d_vendorlib="$define"
6614         : determine where vendor-supplied modules go.
6615         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6616         case "$vendorlib" in
6617         '')
6618                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6619                 case "$installstyle" in
6620                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6621                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6622                 esac
6623                 ;;
6624         *)      dflt="$vendorlib"
6625                 ;;
6626         esac
6627         fn=d~+
6628         rp='Pathname for the vendor-supplied library files?'
6629         . ./getfile
6630         vendorlib="$ans"
6631         vendorlibexp="$ansexp"
6632         ;;
6633 esac
6634 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6635 : Change installation prefix, if necessary.
6636 if $test X"$prefix" != X"$installprefix"; then
6637         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6638 else
6639         installvendorlib="$vendorlibexp"
6640 fi
6641
6642 case "$vendorprefix" in
6643 '')     d_vendorarch="$undef"
6644         vendorarch=''
6645         vendorarchexp=''
6646         ;;
6647 *)      d_vendorarch="$define"
6648         : determine where vendor-supplied architecture-dependent libraries go.
6649         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6650         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6651         : vendorlib may have an optional trailing /share.
6652         case "$vendorarch" in
6653         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6654                 dflt="$dflt/$archname"
6655                 ;;
6656         *)      dflt="$vendorarch" ;;
6657         esac
6658         fn=d~+
6659         rp='Pathname for vendor-supplied architecture-dependent files?'
6660         . ./getfile
6661         vendorarch="$ans"
6662         vendorarchexp="$ansexp"
6663         ;;
6664 esac
6665 : Change installation prefix, if necessary.
6666 if $test X"$prefix" != X"$installprefix"; then
6667         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6668 else
6669         installvendorarch="$vendorarchexp"
6670 fi
6671
6672 : Final catch-all directories to search
6673 $cat <<EOM
6674
6675 Lastly, you can have perl look in other directories for extensions and
6676 modules in addition to those already specified.
6677 These directories will be searched after 
6678         $sitearch 
6679         $sitelib 
6680 EOM
6681 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6682 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6683 echo ' '
6684 case "$otherlibdirs" in
6685 ''|' ') dflt='none' ;;
6686 *)      dflt="$otherlibdirs" ;;
6687 esac
6688 $cat <<EOM
6689 Enter a colon-separated set of extra paths to include in perl's @INC
6690 search path, or enter 'none' for no extra paths.
6691
6692 EOM
6693
6694 rp='Colon-separated list of additional directories for perl to search?'
6695 . ./myread
6696 case "$ans" in
6697 ' '|''|none)    otherlibdirs=' ' ;;     
6698 *)      otherlibdirs="$ans" ;;
6699 esac
6700 case "$otherlibdirs" in
6701 ' ') val=$undef ;;
6702 *)      val=$define ;;
6703 esac
6704 set d_perl_otherlibdirs
6705 eval $setvar
6706
6707 : Cruising for prototypes
6708 echo " "
6709 echo "Checking out function prototypes..." >&4
6710 $cat >prototype.c <<'EOCP'
6711 int main(int argc, char *argv[]) {
6712         exit(0);}
6713 EOCP
6714 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6715         echo "Your C compiler appears to support function prototypes."
6716         val="$define"
6717 else
6718         echo "Your C compiler doesn't seem to understand function prototypes."
6719         val="$undef"
6720 fi
6721 set prototype
6722 eval $setvar
6723 $rm -f prototype*
6724
6725 case "$prototype" in
6726 "$define") ;;
6727 *)      ansi2knr='ansi2knr'
6728         echo " "
6729         cat <<EOM >&4
6730
6731 $me:  FATAL ERROR:
6732 This version of $package can only be compiled by a compiler that 
6733 understands function prototypes.  Unfortunately, your C compiler 
6734         $cc $ccflags
6735 doesn't seem to understand them.  Sorry about that.
6736
6737 If GNU cc is available for your system, perhaps you could try that instead.  
6738
6739 Eventually, we hope to support building Perl with pre-ANSI compilers.
6740 If you would like to help in that effort, please contact <perlbug@perl.org>.
6741
6742 Aborting Configure now.
6743 EOM
6744         exit 2
6745         ;;
6746 esac
6747
6748 : determine where public executables go
6749 echo " "
6750 set dflt bin bin
6751 eval $prefixit
6752 fn=d~
6753 rp='Pathname where the public executables will reside?'
6754 . ./getfile
6755 if $test "X$ansexp" != "X$binexp"; then
6756         installbin=''
6757 fi
6758 bin="$ans"
6759 binexp="$ansexp"
6760 : Change installation prefix, if necessary.
6761 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6762 if $test X"$prefix" != X"$installprefix"; then
6763         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6764 else
6765         installbin="$binexp"
6766 fi
6767
6768 echo " "
6769 case "$extras" in
6770 '') dflt='n';;
6771 *) dflt='y';;
6772 esac
6773 cat <<EOM
6774 Perl can be built with extra modules or bundles of modules which
6775 will be fetched from the CPAN and installed alongside Perl.
6776
6777 Notice that you will need access to the CPAN; either via the Internet,
6778 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6779 be asked later to configure the CPAN.pm module which will in turn do
6780 the installation of the rest of the extra modules or bundles.)
6781
6782 Notice also that if the modules require any external software such as
6783 libraries (the libz library for the Compress::Zlib module, for example)
6784 you *NEED* to have any such external software already installed, this
6785 configuration process will not install such things for you.
6786
6787 If this doesn't make any sense to you, just accept the default '$dflt'.
6788 EOM
6789 rp='Install any extra modules (y or n) ?'
6790 . ./myread
6791 case "$ans" in
6792 y|Y)
6793         cat <<EOM
6794
6795 Please list any extra modules or bundles to be installed from CPAN,
6796 with spaces between the names.  The names can be in any format the
6797 'install' command of CPAN.pm will understand.  (Answer 'none' the
6798 quotes, to install no extra modules or bundles.)
6799 EOM
6800         rp='Extras?'
6801         dflt="$extras"
6802         . ./myread
6803         extras="$ans"
6804 esac
6805 case "$extras" in
6806 ''|'none')
6807         val=''
6808         $rm -f ../extras.lst
6809         ;;
6810 *)      echo "(Saving the list of extras for later...)"
6811         echo $extras > ../extras.lst
6812         val="$extras"
6813         ;;
6814 esac
6815 set extras
6816 eval $setvar
6817 echo " "
6818
6819 : Find perl5.005 or later.
6820 echo "Looking for a previously installed perl5.005 or later... "
6821 case "$perl5" in
6822 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6823                 : Check if this perl is recent and can load a simple module
6824                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6825                         perl5=$tdir/perl
6826                         break;
6827                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6828                         perl5=$tdir/perl5
6829                         break;
6830                 fi
6831         done
6832         ;;
6833 *)      perl5="$perl5"
6834         ;;
6835 esac
6836 case "$perl5" in
6837 '')     echo "None found.  That's ok.";;
6838 *)      echo "Using $perl5." ;;
6839 esac
6840
6841 : Determine list of previous versions to include in @INC
6842 $cat > getverlist <<EOPL
6843 #!$perl5 -w
6844 use File::Basename;
6845 \$api_versionstring = "$api_versionstring";
6846 \$version = "$version";
6847 \$stem = "$sitelib_stem";
6848 \$archname = "$archname";
6849 EOPL
6850         $cat >> getverlist <<'EOPL'
6851 # Can't have leading @ because metaconfig interprets it as a command!
6852 ;@inc_version_list=();
6853 # XXX Redo to do opendir/readdir? 
6854 if (-d $stem) {
6855     chdir($stem);
6856     ;@candidates = glob("5.*");
6857 }
6858 else {
6859     ;@candidates = ();
6860 }
6861
6862 # XXX ToDo:  These comparisons must be reworked when two-digit
6863 # subversions come along, so that 5.7.10 compares as greater than
6864 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6865 # widespread that we can use the built-in version vectors rather
6866 # than reinventing them here.  For 5.6.0, however, we must
6867 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6868 foreach $d (@candidates) {
6869     if ($d lt $version) {
6870         if ($d ge $api_versionstring) {
6871             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6872         }
6873         elsif ($d ge "5.005") {
6874             unshift(@inc_version_list, grep { -d } $d);
6875         }
6876     }
6877     else {
6878         # Skip newer version.  I.e. don't look in
6879         # 5.7.0 if we're installing 5.6.1.
6880     }
6881 }
6882
6883 if (@inc_version_list) {
6884     print join(' ', @inc_version_list);
6885 }
6886 else {
6887     # Blank space to preserve value for next Configure run.
6888     print " ";
6889 }
6890 EOPL
6891 chmod +x getverlist
6892 case "$inc_version_list" in
6893 '')     if test -x "$perl5$exe_ext"; then
6894                 dflt=`$perl5 getverlist`
6895         else
6896                 dflt='none'
6897         fi
6898         ;;
6899 $undef) dflt='none' ;;
6900 *)  eval dflt=\"$inc_version_list\" ;;
6901 esac
6902 case "$dflt" in
6903 ''|' ') dflt=none ;;
6904 esac
6905 case "$dflt" in
6906 5.005) case "$bincompat5005" in
6907        $define|true|[yY]*) ;;
6908        *) dflt=none ;;
6909        esac
6910        ;;
6911 esac
6912 $cat <<'EOM'
6913
6914 In order to ease the process of upgrading, this version of perl 
6915 can be configured to use modules built and installed with earlier 
6916 versions of perl that were installed under $prefix.  Specify here
6917 the list of earlier versions that this version of perl should check.
6918 If Configure detected no earlier versions of perl installed under
6919 $prefix, then the list will be empty.  Answer 'none' to tell perl
6920 to not search earlier versions.
6921
6922 The default should almost always be sensible, so if you're not sure,
6923 just accept the default.
6924 EOM
6925
6926 rp='List of earlier versions to include in @INC?'
6927 . ./myread
6928 case "$ans" in
6929 [Nn]one|''|' ') inc_version_list=' ' ;;
6930 *) inc_version_list="$ans" ;;
6931 esac
6932 case "$inc_version_list" in
6933 ''|' ') 
6934         inc_version_list_init='0';;
6935 *)      inc_version_list_init=`echo $inc_version_list |
6936                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6937         ;;
6938 esac
6939 $rm -f getverlist
6940
6941 : determine whether to install perl also as /usr/bin/perl
6942
6943 echo " "
6944 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6945         $cat <<EOM
6946 Many scripts expect perl to be installed as /usr/bin/perl.
6947 I can install the perl you are about to compile also as /usr/bin/perl
6948 (in addition to $installbin/perl).
6949 EOM
6950         case "$installusrbinperl" in
6951         "$undef"|[nN]*) dflt='n';;
6952         *)              dflt='y';;
6953         esac
6954         rp="Do you want to install perl as /usr/bin/perl?"
6955         . ./myread
6956         case "$ans" in
6957         [yY]*)  val="$define";;
6958         *)      val="$undef" ;;
6959         esac
6960 else
6961         val="$undef"
6962 fi
6963 set installusrbinperl
6964 eval $setvar
6965
6966 : see if dld is available
6967 set dld.h i_dld
6968 eval $inhdr
6969
6970 : see if dlopen exists
6971 xxx_runnm="$runnm"
6972 runnm=false
6973 set dlopen d_dlopen
6974 eval $inlibc
6975 runnm="$xxx_runnm"
6976
6977 : determine which dynamic loading, if any, to compile in
6978 echo " "
6979 dldir="ext/DynaLoader"
6980 case "$usedl" in
6981 $define|y|true)
6982         dflt='y'
6983         usedl="$define"
6984         ;;
6985 $undef|n|false)
6986         dflt='n'
6987         usedl="$undef"
6988         ;;
6989 *) 
6990         dflt='n'
6991         case "$d_dlopen" in
6992             $define) dflt='y' ;;
6993         esac
6994         case "$i_dld" in
6995             $define) dflt='y' ;;
6996         esac
6997         : Does a dl_xxx.xs file exist for this operating system
6998         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6999         ;;
7000 esac
7001 rp="Do you wish to use dynamic loading?"
7002 . ./myread
7003 usedl="$ans"
7004 case "$ans" in
7005 y*) usedl="$define"
7006         case "$dlsrc" in
7007         '')
7008                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7009                         dflt="$dldir/dl_${osname}.xs"
7010                 elif $test "$d_dlopen" = "$define" ; then
7011                         dflt="$dldir/dl_dlopen.xs"
7012                 elif $test "$i_dld" = "$define" ; then
7013                         dflt="$dldir/dl_dld.xs"
7014                 else
7015                         dflt=''
7016                 fi
7017                 ;;
7018         *)      dflt="$dldir/$dlsrc"
7019                 ;;
7020         esac
7021     echo "The following dynamic loading files are available:"
7022         : Can not go over to $dldir because getfile has path hard-coded in.
7023         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7024         rp="Source file to use for dynamic loading"
7025         fn="fne"
7026         gfpth="$src"
7027         . ./getfile
7028         usedl="$define"
7029         : emulate basename
7030         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7031
7032         $cat << EOM
7033
7034 Some systems may require passing special flags to $cc -c to
7035 compile modules that will be used to create a shared library.
7036 To use no flags, say "none".
7037
7038 EOM
7039     case "$cccdlflags" in
7040     '') case "$gccversion" in
7041                 '') case "$osname" in
7042                         hpux)   dflt='+z' ;;
7043                         next)   dflt='none' ;;
7044                         irix*)  dflt='-KPIC' ;;
7045                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7046                         sunos)  dflt='-pic' ;;
7047                         *)      dflt='none' ;;
7048                     esac
7049                         ;;
7050                 *)  case "$osname" in
7051                         darwin) dflt='none' ;;
7052                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7053                         *)      dflt='-fpic' ;;
7054                     esac ;;
7055             esac ;;
7056         ' ') dflt='none' ;;
7057     *)  dflt="$cccdlflags" ;;
7058     esac
7059     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7060     . ./myread
7061     case "$ans" in
7062     none) cccdlflags=' ' ;;
7063     *) cccdlflags="$ans" ;;
7064     esac
7065
7066     cat << EOM
7067
7068 Some systems use ld to create libraries that can be dynamically loaded,
7069 while other systems (such as those using ELF) use $cc.
7070
7071 EOM
7072         case "$ld" in
7073         '')     $cat >try.c <<'EOM'
7074 /* Test for whether ELF binaries are produced */
7075 #include <fcntl.h>
7076 #include <stdlib.h>
7077 int main() {
7078         char b[4];
7079         int i = open("a.out",O_RDONLY);
7080         if(i == -1) 
7081                 exit(1); /* fail */
7082         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7083                 exit(0); /* succeed (yes, it's ELF) */
7084         else
7085                 exit(1); /* fail */
7086 }
7087 EOM
7088                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7089                         cat <<EOM
7090 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7091 EOM
7092                         dflt="$cc"
7093                 else
7094                         echo "I'll use ld to build dynamic libraries."
7095                         dflt='ld'
7096                 fi
7097                 rm -f try.c a.out
7098                 ;;
7099         *)      dflt="$ld"
7100                 ;;
7101         esac
7102
7103     rp="What command should be used to create dynamic libraries?"
7104     . ./myread
7105         ld="$ans"
7106
7107     cat << EOM
7108
7109 Some systems may require passing special flags to $ld to create a
7110 library that can be dynamically loaded.  If your ld flags include
7111 -L/other/path options to locate libraries outside your loader's normal
7112 search path, you may need to specify those -L options here as well.  To
7113 use no flags, say "none".
7114
7115 EOM
7116     case "$lddlflags" in
7117     '') case "$osname" in
7118                         beos) dflt='-nostart' ;;
7119                         hpux) dflt='-b';
7120                               case "$gccversion" in
7121                               '') dflt="$dflt +vnocompatwarnings" ;;
7122                               esac
7123                               ;;        
7124                         linux|irix*)    dflt='-shared' ;;
7125                         next)  dflt='none' ;;
7126                         solaris) dflt='-G' ;;
7127                         sunos) dflt='-assert nodefinitions' ;;
7128                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7129                 *)     dflt='none' ;;
7130                         esac
7131                         ;;
7132     *) dflt="$lddlflags" ;;
7133     esac
7134
7135         : Try to guess additional flags to pick up local libraries.
7136         : Be careful not to append to a plain 'none'
7137         case "$dflt" in
7138         none) dflt='' ;;
7139         esac
7140         for thisflag in $ldflags; do
7141                 case "$thisflag" in
7142                 -L*|-R*)
7143                         case " $dflt " in
7144                         *" $thisflag "*) ;;
7145                         *) dflt="$dflt $thisflag" ;;
7146                         esac
7147                         ;;
7148                 esac
7149         done
7150
7151         case "$dflt" in
7152         ''|' ') dflt='none' ;;
7153         esac
7154
7155     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7156     . ./myread
7157     case "$ans" in
7158     none) lddlflags=' ' ;;
7159     *) lddlflags="$ans" ;;
7160     esac
7161
7162         cat <<EOM
7163
7164 Some systems may require passing special flags to $cc to indicate that
7165 the resulting executable will use dynamic linking.  To use no flags,
7166 say "none".
7167
7168 EOM
7169     case "$ccdlflags" in
7170     '') case "$osname" in
7171                 hpux)   dflt='-Wl,-E' ;;
7172                 linux)  dflt='-rdynamic' ;;
7173                 next)   dflt='none' ;;
7174                 sunos)  dflt='none' ;;
7175                 *)      dflt='none' ;;
7176             esac ;;
7177     ' ')  dflt='none' ;;
7178     *)  dflt="$ccdlflags" ;;
7179     esac
7180     rp="Any special flags to pass to $cc to use dynamic linking?"
7181     . ./myread
7182     case "$ans" in
7183     none) ccdlflags=' ' ;;
7184     *) ccdlflags="$ans" ;;
7185     esac
7186     ;;
7187 *)  usedl="$undef"
7188         ld='ld'
7189     dlsrc='dl_none.xs'
7190     lddlflags=''
7191     ccdlflags=''
7192     ;;
7193 esac
7194
7195 also=''
7196 case "$usedl" in
7197 $undef)
7198         # No dynamic loading being used, so don't bother even to prompt.
7199         useshrplib='false'
7200         ;;
7201 *)      case "$useshrplib" in
7202         '')     case "$osname" in
7203                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7204                         dflt=y
7205                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7206                         ;;
7207                 next*)
7208                         case "$osvers" in
7209                         4*)     dflt=y
7210                                 also='Building a shared libperl is needed for MAB support.'
7211                                 ;;
7212                         *)      dflt=n
7213                                 ;;
7214                         esac
7215                         ;;
7216                 *)      dflt=n
7217                         ;;
7218                 esac
7219                 ;;
7220         $define|true|[Yy]*)
7221                 dflt=y
7222                 ;;
7223         *)      dflt=n
7224                 ;;
7225         esac
7226         $cat << EOM
7227
7228 The perl executable is normally obtained by linking perlmain.c with
7229 libperl${_a}, any static extensions (usually just DynaLoader), and
7230 any other libraries needed on this system (such as -lm, etc.).  Since
7231 your system supports dynamic loading, it is probably possible to build
7232 a shared libperl.$so.  If you will have more than one executable linked
7233 to libperl.$so, this will significantly reduce the size of each
7234 executable, but it may have a noticeable affect on performance.  The
7235 default is probably sensible for your system.
7236 $also
7237
7238 EOM
7239         rp="Build a shared libperl.$so (y/n)"
7240         . ./myread
7241         case "$ans" in
7242         true|$define|[Yy]*)
7243                 useshrplib='true'  ;;
7244         *)      useshrplib='false' ;;
7245         esac
7246         ;;
7247 esac
7248
7249 case "$useshrplib" in
7250 true)
7251         case "$libperl" in
7252         '')
7253                 # Figure out a good name for libperl.so.  Since it gets stored in
7254                 # a version-specific architecture-dependent library, the version
7255                 # number isn't really that important, except for making cc/ld happy.
7256                 #
7257                 # A name such as libperl.so.3.1
7258                 majmin="libperl.$so.$patchlevel.$subversion"
7259                 # A name such as libperl.so.301
7260                 majonly=`echo $patchlevel $subversion |
7261                         $awk '{printf "%d%02d", $1, $2}'`
7262                 majonly=libperl.$so.$majonly
7263                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7264                 # rely on figuring it out from the naming of libc.
7265                 case "${osname}${osvers}" in
7266                 next4*)
7267                         dflt=libperl.5.$so
7268                         # XXX How handle the --version stuff for MAB?
7269                         ;;
7270                 linux*)  # ld won't link with a bare -lperl otherwise.
7271                         dflt=libperl.$so
7272                         ;;
7273                 cygwin*) # include version
7274                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7275                         ;;
7276                 *)      # Try to guess based on whether libc has major.minor.
7277                         case "$libc" in
7278                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7279                         *libc.$so.[0-9]*) dflt=$majonly ;;
7280                         *)      dflt=libperl.$so ;;
7281                         esac
7282                         ;;
7283                 esac
7284                 ;;
7285         *)      dflt=$libperl
7286                 ;;
7287         esac
7288         cat << EOM
7289
7290 I need to select a good name for the shared libperl.  If your system uses
7291 library names with major and minor numbers, then you might want something
7292 like $majmin.  Alternatively, if your system uses a single version
7293 number for shared libraries, then you might want to use $majonly.
7294 Or, your system might be quite happy with a simple libperl.$so.
7295
7296 Since the shared libperl will get installed into a version-specific
7297 architecture-dependent directory, the version number of the shared perl
7298 library probably isn't important, so the default should be o.k.
7299
7300 EOM
7301         rp='What name do you want to give to the shared libperl?'
7302         . ./myread
7303         libperl=$ans
7304         echo "Ok, I'll use $libperl"
7305         ;;
7306 *)
7307         libperl="libperl${_a}"
7308         ;;
7309 esac
7310
7311 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7312 case "$shrpdir" in
7313 '') ;;
7314 *)      $cat >&4 <<EOM
7315 WARNING:  Use of the shrpdir variable for the installation location of
7316 the shared $libperl is not supported.  It was never documented and
7317 will not work in this version.  Let me (perlbug@perl.org)
7318 know of any problems this may cause.
7319
7320 EOM
7321         case "$shrpdir" in
7322         "$archlibexp/CORE")
7323                 $cat >&4 <<EOM
7324 But your current setting of $shrpdir is
7325 the default anyway, so it's harmless.
7326 EOM
7327                 ;;
7328         *)
7329                 $cat >&4 <<EOM
7330 Further, your current attempted setting of $shrpdir
7331 conflicts with the value of $archlibexp/CORE
7332 that installperl will use.
7333 EOM
7334                 ;;
7335         esac
7336         ;;
7337 esac
7338
7339 # How will the perl executable find the installed shared $libperl?
7340 # Add $xxx to ccdlflags.
7341 # If we can't figure out a command-line option, use $shrpenv to
7342 # set env LD_RUN_PATH.  The main perl makefile uses this.
7343 shrpdir=$archlibexp/CORE
7344 xxx=''
7345 tmp_shrpenv=''
7346 if "$useshrplib"; then
7347     case "$osname" in 
7348         aix)
7349                 # We'll set it in Makefile.SH...
7350                 ;;
7351         solaris|netbsd)
7352                 xxx="-R $shrpdir"
7353                 ;;
7354         freebsd)
7355                 xxx="-Wl,-R$shrpdir"
7356                 ;;
7357         linux|irix*|dec_osf)
7358                 xxx="-Wl,-rpath,$shrpdir"
7359                 ;;
7360         next)
7361                 # next doesn't like the default...
7362                 ;;
7363         beos)
7364                 # beos doesn't like the default, either.
7365                 ;;
7366         hpux*)
7367                 # hpux doesn't like the default, either.
7368                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7369                 ;;
7370         *)
7371                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7372                 ;;
7373         esac
7374         case "$xxx" in
7375         '') ;;
7376         *)      
7377                 # Only add $xxx if it isn't already in ccdlflags.
7378                 case " $ccdlflags " in
7379                 *" $xxx "*)     ;;
7380                 *)      ccdlflags="$ccdlflags $xxx"
7381                         cat <<EOM >&4
7382
7383 Adding $xxx to the flags
7384 passed to $ld so that the perl executable will find the 
7385 installed shared $libperl.
7386
7387 EOM
7388                         ;;
7389                 esac
7390                 ;;
7391         esac
7392 fi
7393 # Fix ccdlflags in AIX for building external extensions.
7394 # (For building Perl itself bare -bE:perl.exp is needed,
7395 #  Makefile.SH takes care of this.)
7396 case "$osname" in
7397 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7398 esac
7399 # Respect a hint or command-line value.
7400 case "$shrpenv" in
7401 '') shrpenv="$tmp_shrpenv" ;;
7402 esac
7403 case "$ldlibpthname" in
7404 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7405 none)   ldlibpthname='' ;;
7406 esac
7407
7408 : determine where manual pages are on this system
7409 echo " "
7410 case "$sysman" in
7411 '') 
7412         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7413         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7414         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7415         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7416         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7417         sysman=`./loc . /usr/man/man1 $syspath`
7418         ;;
7419 esac
7420 if $test -d "$sysman"; then
7421         echo "System manual is in $sysman." >&4
7422 else
7423         echo "Could not find manual pages in source form." >&4
7424 fi
7425
7426 : determine where manual pages go
7427 set man1dir man1dir none
7428 eval $prefixit
7429 $cat <<EOM
7430
7431 $spackage has manual pages available in source form.
7432 EOM
7433 case "$nroff" in
7434 nroff)
7435         echo "However, you don't have nroff, so they're probably useless to you."
7436         case "$man1dir" in
7437         '') man1dir="none";;
7438         esac;;
7439 esac
7440 echo "If you don't want the manual sources installed, answer 'none'."
7441 case "$man1dir" in
7442 ' ') dflt=none
7443         ;;
7444 '')
7445         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7446         lookpath="$lookpath $prefixexp/man/p_man/man1"
7447         lookpath="$lookpath $prefixexp/man/u_man/man1"
7448         lookpath="$lookpath $prefixexp/man/man.1"
7449         case "$sysman" in
7450         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7451         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7452         esac
7453         set dflt
7454         eval $prefixup
7455         ;;
7456 *)  dflt="$man1dir"
7457         ;;
7458 esac
7459 echo " "
7460 fn=dn+~
7461 rp="Where do the main $spackage manual pages (source) go?"
7462 . ./getfile
7463 if $test "X$man1direxp" != "X$ansexp"; then
7464         installman1dir=''
7465 fi
7466 man1dir="$ans"
7467 man1direxp="$ansexp"
7468 case "$man1dir" in
7469 '')     man1dir=' '
7470         installman1dir='';;
7471 esac
7472
7473 : Change installation prefix, if necessary.
7474 if $test X"$prefix" != X"$installprefix"; then
7475         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7476 else
7477         installman1dir="$man1direxp"
7478 fi
7479
7480 : What suffix to use on installed man pages
7481
7482 case "$man1dir" in
7483 ' ')
7484         man1ext='0'
7485         ;;
7486 *)
7487         rp="What suffix should be used for the main $spackage man pages?"
7488         case "$man1ext" in
7489         '')     case "$man1dir" in
7490                 *1)  dflt=1 ;;
7491                 *1p) dflt=1p ;;
7492                 *1pm) dflt=1pm ;;
7493                 *l) dflt=l;;
7494                 *n) dflt=n;;
7495                 *o) dflt=o;;
7496                 *p) dflt=p;;
7497                 *C) dflt=C;;
7498                 *L) dflt=L;;
7499                 *L1) dflt=L1;;
7500                 *) dflt=1;;
7501                 esac
7502                 ;;
7503         *)      dflt="$man1ext";;
7504         esac
7505         . ./myread
7506         man1ext="$ans"
7507         ;;
7508 esac
7509
7510 : see if we can have long filenames
7511 echo " "
7512 first=123456789abcdef
7513 $rm -f $first
7514 if (echo hi >$first) 2>/dev/null; then
7515         if $test -f 123456789abcde; then
7516                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7517                 val="$undef"
7518         else
7519                 echo 'You can have filenames longer than 14 characters.'>&4
7520                 val="$define"
7521         fi
7522 else
7523         $cat <<'EOM'
7524 You can't have filenames longer than 14 chars.
7525 You can't even think about them!
7526 EOM
7527         val="$undef"
7528 fi 
7529 set d_flexfnam
7530 eval $setvar
7531 $rm -rf 123456789abcde*
7532
7533 : determine where library module manual pages go
7534 set man3dir man3dir none
7535 eval $prefixit
7536 $cat <<EOM
7537
7538 $spackage has manual pages for many of the library modules.
7539 EOM
7540
7541 case "$nroff" in
7542 nroff)
7543         $cat <<'EOM'
7544 However, you don't have nroff, so they're probably useless to you.
7545 EOM
7546         case "$man3dir" in
7547         '') man3dir="none";;
7548         esac;;
7549 esac
7550
7551 case "$d_flexfnam" in
7552 undef)
7553         $cat <<'EOM'
7554 However, your system can't handle the long file names like File::Basename.3. 
7555 EOM
7556         case "$man3dir" in
7557         '') man3dir="none";;
7558         esac;;
7559 esac
7560
7561 echo "If you don't want the manual sources installed, answer 'none'."
7562 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7563 case "$man3dir" in
7564 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7565         if $test -d "$privlib/man/man3"; then
7566                 cat <<EOM >&4
7567
7568 WARNING:  Previous versions of perl installed man3 pages into
7569 $privlib/man/man3.  This version will suggest a 
7570 new default of $dflt.  
7571 EOM
7572                 tdflt=$dflt
7573                 dflt='n'
7574                 rp='Do you wish to preserve the old behavior?(y/n)'
7575                 . ./myread
7576                 case "$ans" in
7577                 y*) dflt="$privlib/man/man3" ;;
7578                 *)  dflt=$tdflt ;;
7579                 esac
7580     fi
7581         ;;
7582 *)      dflt="$man3dir" ;;
7583 esac
7584 case "$dflt" in
7585 ' ') dflt=none ;;
7586 esac
7587 echo " "
7588 fn=dn+~
7589 rp="Where do the $package library man pages (source) go?"
7590 . ./getfile
7591 man3dir="$ans"
7592 man3direxp="$ansexp"
7593 case "$man3dir" in
7594 '')     man3dir=' '
7595         installman3dir='';;
7596 esac
7597
7598 : Change installation prefix, if necessary.
7599 if $test X"$prefix" != X"$installprefix"; then
7600         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7601 else
7602         installman3dir="$man3direxp"
7603 fi
7604
7605 : What suffix to use on installed man pages
7606 case "$man3dir" in
7607 ' ')
7608         man3ext='0'
7609         ;;
7610 *)
7611         rp="What suffix should be used for the $package library man pages?"
7612         case "$man3ext" in
7613         '')     case "$man3dir" in
7614                 *3)  dflt=3 ;;
7615                 *3p) dflt=3p ;;
7616                 *3pm) dflt=3pm ;;
7617                 *l) dflt=l;;
7618                 *n) dflt=n;;
7619                 *o) dflt=o;;
7620                 *p) dflt=p;;
7621                 *C) dflt=C;;
7622                 *L) dflt=L;;
7623                 *L3) dflt=L3;;
7624                 *) dflt=3;;
7625                 esac
7626                 ;;
7627         *)      dflt="$man3ext";;
7628         esac
7629         . ./myread
7630         man3ext="$ans"
7631         ;;
7632 esac
7633
7634 : see if we have to deal with yellow pages, now NIS.
7635 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7636         if $test -f /usr/etc/nibindd; then
7637                 echo " "
7638                 echo "I'm fairly confident you're on a NeXT."
7639                 echo " "
7640                 rp='Do you get the hosts file via NetInfo?'
7641                 dflt=y
7642                 case "$hostcat" in
7643                 nidump*) ;;
7644                 '') ;;
7645                 *) dflt=n;;
7646                 esac
7647                 . ./myread
7648                 case "$ans" in
7649                 y*) hostcat='nidump hosts .';;
7650                 *)      case "$hostcat" in
7651                         nidump*) hostcat='';;
7652                         esac
7653                         ;;
7654                 esac
7655         fi
7656         case "$hostcat" in
7657         nidump*) ;;
7658         *)
7659                 case "$hostcat" in
7660                 *ypcat*) dflt=y;;
7661                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7662                                 dflt=y
7663                         else
7664                                 dflt=n
7665                         fi;;
7666                 *) dflt=n;;
7667                 esac
7668                 echo " "
7669                 rp='Are you getting the hosts file via yellow pages?'
7670                 . ./myread
7671                 case "$ans" in
7672                 y*) hostcat='ypcat hosts';;
7673                 *) hostcat='cat /etc/hosts';;
7674                 esac
7675                 ;;
7676         esac
7677 fi
7678 case "$hostcat" in
7679 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7680 esac
7681 case "$groupcat" in
7682 '') test -f /etc/group && groupcat='cat /etc/group';;
7683 esac
7684 case "$passcat" in
7685 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7686 esac
7687
7688 : now get the host name
7689 echo " "
7690 echo "Figuring out host name..." >&4
7691 case "$myhostname" in
7692 '') cont=true
7693         echo 'Maybe "hostname" will work...'
7694         if tans=`sh -c hostname 2>&1` ; then
7695                 myhostname=$tans
7696                 phostname=hostname
7697                 cont=''
7698         fi
7699         ;;
7700 *) cont='';;
7701 esac
7702 if $test "$cont"; then
7703         if ./xenix; then
7704                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7705                 if tans=`cat /etc/systemid 2>&1` ; then
7706                         myhostname=$tans
7707                         phostname='cat /etc/systemid'
7708                         echo "Whadyaknow.  Xenix always was a bit strange..."
7709                         cont=''
7710                 fi
7711         elif $test -r /etc/systemid; then
7712                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7713         fi
7714 fi
7715 if $test "$cont"; then
7716         echo 'No, maybe "uuname -l" will work...'
7717         if tans=`sh -c 'uuname -l' 2>&1` ; then
7718                 myhostname=$tans
7719                 phostname='uuname -l'
7720         else
7721                 echo 'Strange.  Maybe "uname -n" will work...'
7722                 if tans=`sh -c 'uname -n' 2>&1` ; then
7723                         myhostname=$tans
7724                         phostname='uname -n'
7725                 else
7726                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7727                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7728                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7729                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7730                         else
7731                                 case "$myhostname" in
7732                                 '') echo "Does this machine have an identity crisis or something?"
7733                                         phostname='';;
7734                                 *)
7735                                         echo "Well, you said $myhostname before..."
7736                                         phostname='echo $myhostname';;
7737                                 esac
7738                         fi
7739                 fi
7740         fi
7741 fi
7742 : you do not want to know about this
7743 set $myhostname
7744 myhostname=$1
7745
7746 : verify guess
7747 if $test "$myhostname" ; then
7748         dflt=y
7749         rp='Your host name appears to be "'$myhostname'".'" Right?"
7750         . ./myread
7751         case "$ans" in
7752         y*) ;;
7753         *) myhostname='';;
7754         esac
7755 fi
7756
7757 : bad guess or no guess
7758 while $test "X$myhostname" = X ; do
7759         dflt=''
7760         rp="Please type the (one word) name of your host:"
7761         . ./myread
7762         myhostname="$ans"
7763 done
7764
7765 : translate upper to lower if necessary
7766 case "$myhostname" in
7767 *[A-Z]*)
7768         echo "(Normalizing case in your host name)"
7769         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7770         ;;
7771 esac
7772
7773 case "$myhostname" in
7774 *.*)
7775         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7776         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7777         echo "(Trimming domain name from host name--host name is now $myhostname)"
7778         ;;
7779 *) case "$mydomain" in
7780         '')
7781                 {
7782                         test "X$hostcat" = "Xypcat hosts" &&
7783                         ypmatch "$myhostname" hosts 2>/dev/null |\
7784                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7785                         $test -s hosts
7786                 } || {
7787                         test "X$hostcat" != "X" &&
7788                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7789                                         /[       ]$myhostname[  . ]/p" > hosts
7790                 }
7791                 tmp_re="[       . ]"
7792                 if $test -f hosts; then
7793                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7794                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7795                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7796                                 hosts | $sort | $uniq | \
7797                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7798                         case `$echo X$dflt` in
7799                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7800                                 dflt=.
7801                                 ;;
7802                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7803                                 ;;
7804                         esac
7805                 else
7806                         echo "(I cannot locate a hosts database anywhere)"
7807                         dflt=.
7808                 fi
7809                 case "$dflt" in
7810                 .)
7811                         tans=`./loc resolv.conf X /etc /usr/etc`
7812                         if $test -f "$tans"; then
7813                                 echo "(Attempting domain name extraction from $tans)"
7814                                 dflt=.`$sed -n -e 's/   / /g' \
7815                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7816                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7817                                 case "$dflt" in
7818                                 .) dflt=.`$sed -n -e 's/        / /g' \
7819                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7820                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7821                                         ;;
7822                                 esac
7823                         fi
7824                         ;;
7825                 esac
7826                 case "$dflt" in
7827                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7828                         dflt=.`sh -c domainname 2>/dev/null`
7829                         case "$dflt" in
7830                         '') dflt='.';;
7831                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7832                         esac
7833                         ;;
7834                 esac
7835                 case "$dflt$osname" in
7836                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7837                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7838                         ;;
7839                 esac
7840                 case "$dflt" in
7841                 .) echo "(Lost all hope -- silly guess then)"
7842                         dflt='.uucp'
7843                         ;;
7844                 esac
7845                 $rm -f hosts
7846                 ;;
7847         *) dflt="$mydomain";;
7848         esac;;
7849 esac
7850 echo " "
7851 rp="What is your domain name?"
7852 . ./myread
7853 tans="$ans"
7854 case "$ans" in
7855 '') ;;
7856 .*) ;;
7857 *) tans=".$tans";;
7858 esac
7859 mydomain="$tans"
7860
7861 : translate upper to lower if necessary
7862 case "$mydomain" in
7863 *[A-Z]*)
7864         echo "(Normalizing case in your domain name)"
7865         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7866         ;;
7867 esac
7868
7869 : a little sanity check here
7870 case "$phostname" in
7871 '') ;;
7872 *)
7873         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7874         $myhostname$mydomain|$myhostname) ;;
7875         *)
7876                 case "$phostname" in
7877                 sed*)
7878                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7879                         ;;
7880                 *)
7881                         echo "(That doesn't agree with your $phostname command, by the way.)"
7882                         ;;
7883                 esac
7884         ;;
7885         esac
7886         ;;
7887 esac
7888
7889 $cat <<EOM
7890
7891 I need to get your e-mail address in Internet format if possible, i.e.
7892 something like user@host.domain. Please answer accurately since I have
7893 no easy means to double check it. The default value provided below
7894 is most probably close to reality but may not be valid from outside
7895 your organization...
7896
7897 EOM
7898 cont=x
7899 while test "$cont"; do
7900         case "$cf_email" in
7901         '') dflt="$cf_by@$myhostname$mydomain";;
7902         *) dflt="$cf_email";;
7903         esac
7904         rp='What is your e-mail address?'
7905         . ./myread
7906         cf_email="$ans"
7907         case "$cf_email" in
7908         *@*.*) cont='' ;;
7909         *)
7910                 rp='Address does not look like an Internet one.  Use it anyway?'
7911                 case "$fastread" in
7912                 yes) dflt=y ;;
7913                 *) dflt=n ;;
7914                 esac
7915                 . ./myread
7916                 case "$ans" in
7917                 y*) cont='' ;;
7918                 *) echo " " ;;
7919                 esac
7920                 ;;
7921         esac
7922 done
7923
7924 $cat <<EOM
7925
7926 If you or somebody else will be maintaining perl at your site, please
7927 fill in the correct e-mail address here so that they may be contacted
7928 if necessary. Currently, the "perlbug" program included with perl
7929 will send mail to this address in addition to perlbug@perl.org. You may
7930 enter "none" for no administrator.
7931
7932 EOM
7933 case "$perladmin" in
7934 '') dflt="$cf_email";;
7935 *) dflt="$perladmin";;
7936 esac
7937 rp='Perl administrator e-mail address'
7938 . ./myread
7939 perladmin="$ans"
7940
7941 : determine whether to only install version-specific parts.
7942 echo " "
7943 $cat <<EOM
7944 Do you want to install only the version-specific parts of the perl
7945 distribution?  Usually you do *not* want to do this.
7946 EOM
7947 case "$versiononly" in
7948 "$define"|[Yy]*|true) dflt='y' ;;
7949 *) dflt='n';
7950 esac
7951 rp="Do you want to install only the version-specific parts of perl?"
7952 . ./myread
7953 case "$ans" in
7954 [yY]*)  val="$define";;
7955 *)      val="$undef" ;;
7956 esac
7957 set versiononly
7958 eval $setvar
7959
7960 : figure out how to guarantee perl startup
7961 case "$startperl" in
7962 '')
7963         case "$sharpbang" in
7964         *!)
7965                 $cat <<EOH
7966
7967 I can use the #! construct to start perl on your system. This will
7968 make startup of perl scripts faster, but may cause problems if you
7969 want to share those scripts and perl is not in a standard place
7970 ($binexp/perl) on all your platforms. The alternative is to force
7971 a shell by starting the script with a single ':' character.
7972
7973 EOH
7974                 case "$versiononly" in
7975                 "$define")      dflt="$binexp/perl$version";;  
7976                 *)              dflt="$binexp/perl";;
7977                 esac
7978                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7979                 . ./myread
7980                 case "$ans" in
7981                 none)   startperl=": # use perl";;
7982                 *)      startperl="#!$ans"
7983                         if $test 30 -lt `echo "$ans" | wc -c`; then
7984                                 $cat >&4 <<EOM
7985
7986 WARNING:  Some systems limit the #! command to 32 characters.
7987 If you experience difficulty running Perl scripts with #!, try
7988 installing Perl in a directory with a shorter pathname.
7989
7990 EOM
7991                         fi ;;
7992                 esac
7993                 ;;
7994         *) startperl=": # use perl"
7995                 ;;
7996         esac
7997         ;;
7998 esac
7999 echo "I'll use $startperl to start perl scripts."
8000
8001 : figure best path for perl in scripts
8002 case "$perlpath" in
8003 '')
8004         perlpath="$binexp/perl"
8005         case "$startperl" in
8006         *!*) ;;
8007         *)
8008                 $cat <<EOH
8009
8010 I will use the "eval 'exec'" idiom to start Perl on your system.
8011 I can use the full path of your Perl binary for this purpose, but
8012 doing so may cause problems if you want to share those scripts and
8013 Perl is not always in a standard place ($binexp/perl).
8014
8015 EOH
8016                 dflt="$binexp/perl"
8017                 rp="What path shall I use in \"eval 'exec'\"?"
8018                 . ./myread
8019                 perlpath="$ans"
8020                 ;;
8021         esac
8022         ;;
8023 esac
8024 case "$startperl" in
8025 *!*)    ;;
8026 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8027 esac
8028
8029 : determine where public executable scripts go
8030 set scriptdir scriptdir
8031 eval $prefixit
8032 case "$scriptdir" in
8033 '')
8034         dflt="$bin"
8035         : guess some guesses
8036         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8037         $test -d /usr/share/bin     && dflt=/usr/share/bin
8038         $test -d /usr/local/script  && dflt=/usr/local/script
8039         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8040         $test -d $prefixexp/script  && dflt=$prefixexp/script
8041         set dflt
8042         eval $prefixup
8043         ;;
8044 *)  dflt="$scriptdir"
8045         ;;
8046 esac
8047 $cat <<EOM
8048  
8049 Some installations have a separate directory just for executable scripts so
8050 that they can mount it across multiple architectures but keep the scripts in
8051 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8052 Or you might just lump your scripts in with all your other executables.
8053  
8054 EOM
8055 fn=d~
8056 rp='Where do you keep publicly executable scripts?'
8057 . ./getfile
8058 if $test "X$ansexp" != "X$scriptdirexp"; then
8059         installscript=''
8060 fi
8061 scriptdir="$ans"
8062 scriptdirexp="$ansexp"
8063 : Change installation prefix, if necessary.
8064 if $test X"$prefix" != X"$installprefix"; then
8065         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8066 else
8067         installscript="$scriptdirexp"
8068 fi
8069
8070 : determine where add-on public executables go
8071 case "$sitebin" in
8072 '')     dflt=$siteprefix/bin ;;
8073 *)      dflt=$sitebin ;;
8074 esac
8075 fn=d~
8076 rp='Pathname where the add-on public executables should be installed?'
8077 . ./getfile
8078 sitebin="$ans"
8079 sitebinexp="$ansexp"
8080 : Change installation prefix, if necessary.
8081 if $test X"$prefix" != X"$installprefix"; then
8082         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8083 else
8084         installsitebin="$sitebinexp"
8085 fi
8086
8087 : define an is-a-typedef? function
8088 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8089 case "$inclist" in
8090 "") inclist="sys/types.h";;
8091 esac;
8092 eval "varval=\$$var";
8093 case "$varval" in
8094 "")
8095         $rm -f temp.c;
8096         for inc in $inclist; do
8097                 echo "#include <$inc>" >>temp.c;
8098         done;
8099         echo "#ifdef $type" >> temp.c;
8100         echo "printf(\"We have $type\");" >> temp.c;
8101         echo "#endif" >> temp.c;
8102         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8103         if $contains $type temp.E >/dev/null 2>&1; then
8104                 eval "$var=\$type";
8105         else
8106                 eval "$var=\$def";
8107         fi;
8108         $rm -f temp.?;;
8109 *) eval "$var=\$varval";;
8110 esac'
8111
8112 : define an is-a-typedef? function that prompts if the type is not available.
8113 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8114 case "$inclist" in
8115 "") inclist="sys/types.h";;
8116 esac;
8117 eval "varval=\$$var";
8118 case "$varval" in
8119 "")
8120         $rm -f temp.c;
8121         for inc in $inclist; do
8122                 echo "#include <$inc>" >>temp.c;
8123         done;
8124         echo "#ifdef $type" >> temp.c;
8125         echo "printf(\"We have $type\");" >> temp.c;
8126         echo "#endif" >> temp.c;
8127         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8128         echo " " ;
8129         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8130         if $contains $type temp.E >/dev/null 2>&1; then
8131                 echo "$type found." >&4;
8132                 eval "$var=\$type";
8133         else
8134                 echo "$type NOT found." >&4;
8135                 dflt="$def";
8136                 . ./myread ;
8137                 eval "$var=\$ans";
8138         fi;
8139         $rm -f temp.?;;
8140 *) eval "$var=\$varval";;
8141 esac'
8142
8143 : see what type lseek is declared as in the kernel
8144 rp="What is the type used for lseek's offset on this system?"
8145 set off_t lseektype long stdio.h sys/types.h
8146 eval $typedef_ask
8147
8148 echo " "
8149 echo "Checking to see how big your file offsets are..." >&4
8150 $cat >try.c <<EOCP
8151 #include <sys/types.h>
8152 #include <stdio.h>
8153 int main()
8154 {
8155     printf("%d\n", (int)sizeof($lseektype));
8156     return(0); 
8157 }
8158 EOCP
8159 set try
8160 if eval $compile_ok; then
8161         lseeksize=`$run ./try`
8162         echo "Your file offsets are $lseeksize bytes long."
8163 else
8164         dflt=$longsize
8165         echo " "
8166         echo "(I can't seem to compile the test program.  Guessing...)"
8167         rp="What is the size of your file offsets (in bytes)?"
8168         . ./myread
8169         lseeksize="$ans"
8170 fi
8171 $rm -f try.c try
8172
8173 : see what type file positions are declared as in the library
8174 rp="What is the type for file position used by fsetpos()?"
8175 set fpos_t fpostype long stdio.h sys/types.h
8176 eval $typedef_ask
8177
8178 echo " "
8179 case "$fpostype" in
8180 *_t) zzz="$fpostype"    ;;
8181 *)   zzz="fpos_t"       ;;
8182 esac
8183 echo "Checking the size of $zzz..." >&4 
8184 cat > try.c <<EOCP
8185 #include <sys/types.h>
8186 #include <stdio.h>
8187 int main() {
8188     printf("%d\n", (int)sizeof($fpostype));
8189     exit(0);
8190 }
8191 EOCP
8192 set try
8193 if eval $compile_ok; then
8194         yyy=`$run ./try`
8195         case "$yyy" in
8196         '')     fpossize=4
8197                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8198                 ;;
8199         *)      fpossize=$yyy
8200                 echo "Your $zzz is $fpossize bytes long."
8201                 ;;
8202         esac
8203 else
8204         dflt="$longsize"
8205         echo " " >&4
8206         echo "(I can't compile the test program.  Guessing...)" >&4
8207         rp="What is the size of your file positions (in bytes)?"
8208         . ./myread
8209         fpossize="$ans"
8210 fi
8211
8212
8213
8214 # Backward compatibility (uselfs is deprecated).
8215 case "$uselfs" in
8216 "$define"|true|[yY]*)
8217         cat <<EOM >&4
8218
8219 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8220 EOM
8221         uselargefiles="$define"
8222         ;;
8223 esac                          
8224
8225 case "$lseeksize:$fpossize" in
8226 8:8) cat <<EOM
8227
8228 You can have files larger than 2 gigabytes.
8229 EOM
8230    val="$define" ;;
8231 *)    case "$uselargefiles" in
8232    "$undef"|false|[nN]*) dflt='n' ;;
8233    *)   dflt='y' ;;
8234    esac
8235    cat <<EOM
8236
8237 Perl can be built to understand large files (files larger than 2 gigabytes)
8238 on some systems.  To do so, Configure can be run with -Duselargefiles.
8239
8240 If this doesn't make any sense to you, just accept the default '$dflt'.
8241 EOM
8242    rp='Try to understand large files, if available?'
8243    . ./myread
8244    case "$ans" in
8245    y|Y)         val="$define" ;;
8246    *)           val="$undef"  ;;
8247    esac
8248    ;;
8249 esac
8250 set uselargefiles
8251 eval $setvar
8252 case "$uselargefiles" in
8253 "$define")
8254 : Look for a hint-file generated 'call-back-unit'.  If the
8255 : user has specified that a large files perl is to be built,
8256 : we may need to set or change some other defaults.
8257         if $test -f uselargefiles.cbu; then
8258                 echo "Your platform has some specific hints for large file builds, using them..."
8259                 . ./uselargefiles.cbu
8260                 echo " "
8261                 echo "Rechecking to see how big your file offsets are..." >&4
8262                 $cat >try.c <<EOCP
8263 #include <sys/types.h>
8264 #include <stdio.h>
8265 int main()
8266 {
8267     printf("%d\n", (int)sizeof($lseektype));
8268     return(0); 
8269 }
8270 EOCP
8271                 set try
8272                 if eval $compile_ok; then
8273                         lseeksize=`$run ./try`
8274                         $echo "Your file offsets are now $lseeksize bytes long."
8275                 else
8276                         dflt="$lseeksize"
8277                         echo " "
8278                         echo "(I can't seem to compile the test program.  Guessing...)"
8279                         rp="What is the size of your file offsets (in bytes)?"
8280                         . ./myread
8281                         lseeksize="$ans"
8282                 fi
8283                 case "$fpostype" in
8284                 *_t) zzz="$fpostype"    ;;
8285                 *)   zzz="fpos_t"       ;;
8286                 esac
8287                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8288                 $cat > try.c <<EOCP
8289 #include <sys/types.h>
8290 #include <stdio.h>
8291 int main() {
8292     printf("%d\n", (int)sizeof($fpostype));
8293     exit(0);
8294 }
8295 EOCP
8296                 set try
8297                 if eval $compile_ok; then
8298                         yyy=`$run ./try`
8299                         dflt="$lseeksize"
8300                         case "$yyy" in
8301                         '')     echo " "
8302                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8303                                 ;;
8304                         *)      fpossize=$yyy
8305                                 echo " $fpossize bytes." >&4
8306                                 ;;
8307                         esac
8308                 else
8309                         dflt="$fpossize"
8310                         echo " "
8311                         echo "(I can't compile the test program.  Guessing...)" >&4
8312                         rp="What is the size of your file positions (in bytes)?"
8313                         . ./myread
8314                         fpossize="$ans"
8315                 fi
8316                 $rm -f try.c try
8317         fi
8318         ;;
8319 esac
8320
8321 case "$vendorprefix" in
8322 '')     d_vendorbin="$undef"
8323         vendorbin=''
8324         vendorbinexp=''
8325         ;;
8326 *)      d_vendorbin="$define"
8327         : determine where vendor-supplied executables go.
8328         case "$vendorbin" in
8329         '') dflt=$vendorprefix/bin ;;
8330         *)      dflt="$vendorbin" ;;
8331         esac
8332         fn=d~+
8333         rp='Pathname for the vendor-supplied executables directory?'
8334         . ./getfile
8335         vendorbin="$ans"
8336         vendorbinexp="$ansexp"
8337         ;;
8338 esac
8339 : Change installation prefix, if necessary.
8340 if $test X"$prefix" != X"$installprefix"; then
8341         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8342 else
8343         installvendorbin="$vendorbinexp"
8344 fi
8345
8346 : see if qgcvt exists
8347 set qgcvt d_qgcvt
8348 eval $inlibc
8349
8350 echo " "
8351
8352 if $test X"$d_longdbl" = X"$define"; then
8353
8354 echo "Checking how to print long doubles..." >&4
8355
8356 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8357         $cat >try.c <<'EOCP'
8358 #include <sys/types.h>
8359 #include <stdio.h>
8360 int main() {
8361   double d = 123.456;
8362   printf("%.3f\n", d);
8363 }
8364 EOCP
8365         set try
8366         if eval $compile; then
8367                 yyy=`$run ./try`
8368                 case "$yyy" in
8369                 123.456)
8370                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8371                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8372                         echo "We will use %f."
8373                         ;;
8374                 esac
8375         fi
8376 fi
8377
8378 if $test X"$sPRIfldbl" = X; then
8379         $cat >try.c <<'EOCP'
8380 #include <sys/types.h>
8381 #include <stdio.h>
8382 int main() {
8383   long double d = 123.456;
8384   printf("%.3Lf\n", d);
8385 }
8386 EOCP
8387         set try
8388         if eval $compile; then
8389                 yyy=`$run ./try`
8390                 case "$yyy" in
8391                 123.456)
8392                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8393                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8394                         echo "We will use %Lf."
8395                         ;;
8396                 esac
8397         fi
8398 fi
8399
8400 if $test X"$sPRIfldbl" = X; then
8401         $cat >try.c <<'EOCP'
8402 #include <sys/types.h>
8403 #include <stdio.h>
8404 int main() {
8405   long double d = 123.456;
8406   printf("%.3llf\n", d);
8407 }
8408 EOCP
8409         set try
8410         if eval $compile; then
8411                 yyy=`$run ./try`
8412                 case "$yyy" in
8413                 123.456)
8414                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8415                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8416                         echo "We will use %llf."
8417                         ;;
8418                 esac
8419         fi
8420 fi
8421
8422 if $test X"$sPRIfldbl" = X; then
8423         $cat >try.c <<'EOCP'
8424 #include <sys/types.h>
8425 #include <stdio.h>
8426 int main() {
8427   long double d = 123.456;
8428   printf("%.3lf\n", d);
8429 }
8430 EOCP
8431         set try
8432         if eval $compile; then
8433                 yyy=`$run ./try`
8434                 case "$yyy" in
8435                 123.456)
8436                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8437                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8438                         echo "We will use %lf."
8439                         ;;
8440                 esac
8441         fi
8442 fi
8443
8444 if $test X"$sPRIfldbl" = X; then
8445         echo "Cannot figure out how to print long doubles." >&4
8446 else
8447         sSCNfldbl=$sPRIfldbl    # expect consistency
8448 fi
8449
8450 $rm -f try try.*
8451
8452 fi # d_longdbl
8453
8454 case "$sPRIfldbl" in
8455 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8456         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8457         d_SCNfldbl="$undef";
8458         ;;
8459 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8460         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8461         d_SCNfldbl="$define";
8462         ;;
8463 esac
8464
8465 : Check how to convert floats to strings.
8466 echo " "
8467 echo "Checking for an efficient way to convert floats to strings."
8468 echo " " > try.c
8469 case "$uselongdouble" in
8470 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8471 esac
8472 case "$d_longdbl" in
8473 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8474 esac
8475 case "$d_PRIgldbl" in
8476 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8477 esac
8478 $cat >>try.c <<EOP
8479 #ifdef TRY_gconvert
8480 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8481 char *myname = "gconvert";
8482 #endif
8483 #ifdef TRY_gcvt
8484 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8485 char *myname = "gcvt";
8486 #endif
8487 #ifdef TRY_qgcvt
8488 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8489 char *myname = "qgcvt";
8490 #define DOUBLETYPE long double
8491 #endif
8492 #ifdef TRY_sprintf
8493 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8494 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8495 #else
8496 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8497 #endif
8498 char *myname = "sprintf";
8499 #endif
8500
8501 #ifndef DOUBLETYPE
8502 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8503 #define DOUBLETYPE long double
8504 #else
8505 #define DOUBLETYPE double
8506 #endif
8507 #endif
8508
8509 #include <stdio.h>
8510
8511 #define I_STDLIB $i_stdlib
8512 #ifdef I_STDLIB
8513 #include <stdlib.h>
8514 #endif
8515
8516 int
8517 checkit(expect, got)
8518 char *expect;
8519 char *got;
8520 {
8521     if (strcmp(expect, got)) {
8522                 printf("%s oddity:  Expected %s, got %s\n",
8523                         myname, expect, got);
8524                 exit(1);
8525         }
8526 }
8527
8528 int main()
8529
8530         char buf[64]; 
8531         buf[63] = '\0';
8532
8533         /* This must be 1st test on (which?) platform */
8534         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8535         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8536         checkit("0.1", buf);
8537
8538         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8539         checkit("1", buf);
8540
8541         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8542         checkit("1.1", buf);
8543
8544         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8545         checkit("1.01", buf);
8546
8547         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8548         checkit("1.001", buf);
8549
8550         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8551         checkit("1.0001", buf);
8552
8553         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8554         checkit("1.00001", buf);
8555
8556         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8557         checkit("1.000001", buf);
8558
8559         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8560         checkit("0", buf);
8561
8562         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8563         checkit("-1", buf);
8564
8565         /* Some Linux gcvt's give 1.e+5 here. */
8566         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8567         checkit("100000", buf);
8568         
8569         /* Some Linux gcvt's give -1.e+5 here. */
8570         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8571         checkit("-100000", buf);
8572
8573         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8574         checkit("123.456", buf);
8575
8576         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8577         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8578         if (strlen(buf) > 5)
8579             checkit("1e+030", buf); /* for Microsoft */
8580         else
8581             checkit("1e+30", buf);
8582
8583         exit(0);
8584 }
8585 EOP
8586 case "$d_Gconvert" in
8587 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8588 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8589 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8590 *) xxx_list='gconvert gcvt sprintf' ;;
8591 esac
8592
8593 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8594 "$define$define$define")
8595     # for long doubles prefer first qgcvt, then sprintf
8596     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8597     xxx_list="sprintf $xxx_list"
8598     case "$d_qgcvt" in
8599     "$define") xxx_list="qgcvt $xxx_list" ;;
8600     esac
8601     ;;
8602 esac
8603
8604 for xxx_convert in $xxx_list; do
8605         echo "Trying $xxx_convert..."
8606         $rm -f try try$_o
8607         set try -DTRY_$xxx_convert
8608         if eval $compile; then
8609                 echo "$xxx_convert() found." >&4
8610                 if $run ./try; then
8611                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8612                         break;
8613                 else
8614                         echo "...But $xxx_convert didn't work as I expected."
8615                 fi
8616         else
8617                 echo "$xxx_convert NOT found." >&4
8618         fi
8619 done
8620         
8621 case "$xxx_convert" in
8622 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8623 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8624 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8625 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8626    "$define$define$define")
8627       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8628    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8629    esac
8630    ;;  
8631 esac
8632
8633 : see if _fwalk exists
8634 set fwalk d__fwalk
8635 eval $inlibc
8636
8637 : Initialize h_fcntl
8638 h_fcntl=false
8639
8640 : Initialize h_sysfile
8641 h_sysfile=false
8642
8643 : access call always available on UNIX
8644 set access d_access
8645 eval $inlibc
8646
8647 : locate the flags for 'access()'
8648 case "$d_access" in
8649 "$define")
8650         echo " "
8651         $cat >access.c <<'EOCP'
8652 #include <sys/types.h>
8653 #ifdef I_FCNTL
8654 #include <fcntl.h>
8655 #endif
8656 #ifdef I_SYS_FILE
8657 #include <sys/file.h>
8658 #endif
8659 #ifdef I_UNISTD
8660 #include <unistd.h>
8661 #endif
8662 int main() {
8663         exit(R_OK);
8664 }
8665 EOCP
8666         : check sys/file.h first, no particular reason here
8667         if $test `./findhdr sys/file.h` && \
8668                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8669                 h_sysfile=true;
8670                 echo "<sys/file.h> defines the *_OK access constants." >&4
8671         elif $test `./findhdr fcntl.h` && \
8672                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8673                 h_fcntl=true;
8674                 echo "<fcntl.h> defines the *_OK access constants." >&4
8675         elif $test `./findhdr unistd.h` && \
8676                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8677                 echo "<unistd.h> defines the *_OK access constants." >&4
8678         else
8679                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8680         fi
8681         ;;
8682 esac
8683 $rm -f access*
8684
8685 : see if accessx exists
8686 set accessx d_accessx
8687 eval $inlibc
8688
8689 : see if alarm exists
8690 set alarm d_alarm
8691 eval $inlibc
8692
8693 : see if atolf exists
8694 set atolf d_atolf
8695 eval $inlibc
8696
8697 : see if atoll exists
8698 set atoll d_atoll
8699 eval $inlibc
8700
8701 : Look for GNU-cc style attribute checking
8702 echo " "
8703 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8704 $cat >attrib.c <<'EOCP'
8705 #include <stdio.h>
8706 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8707 EOCP
8708 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8709         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8710                 echo "Your C compiler doesn't fully support __attribute__."
8711                 val="$undef"
8712         else
8713                 echo "Your C compiler supports __attribute__."
8714                 val="$define"
8715         fi
8716 else
8717         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8718         val="$undef"
8719 fi
8720 set d_attribut
8721 eval $setvar
8722 $rm -f attrib*
8723
8724 : see if bcmp exists
8725 set bcmp d_bcmp
8726 eval $inlibc
8727
8728 : see if bcopy exists
8729 set bcopy d_bcopy
8730 eval $inlibc
8731
8732 : see if this is a unistd.h system
8733 set unistd.h i_unistd
8734 eval $inhdr
8735
8736 : see if getpgrp exists
8737 set getpgrp d_getpgrp
8738 eval $inlibc
8739
8740 case "$d_getpgrp" in
8741 "$define")
8742         echo " "
8743         echo "Checking to see which flavor of getpgrp is in use..."
8744         $cat >try.c <<EOP
8745 #$i_unistd I_UNISTD
8746 #include <sys/types.h>
8747 #ifdef I_UNISTD
8748 #  include <unistd.h>
8749 #endif
8750 int main()
8751 {
8752         if (getuid() == 0) {
8753                 printf("(I see you are running Configure as super-user...)\n");
8754                 setuid(1);
8755         }
8756 #ifdef TRY_BSD_PGRP
8757         if (getpgrp(1) == 0)
8758                 exit(0);
8759 #else
8760         if (getpgrp() > 0)
8761                 exit(0);
8762 #endif
8763         exit(1);
8764 }
8765 EOP
8766         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8767                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8768                 val="$define"
8769         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8770                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8771                 val="$undef"
8772         else
8773                 echo "I can't seem to compile and run the test program."
8774                 if ./usg; then
8775                         xxx="a USG one, i.e. you use getpgrp()."
8776                 else
8777                         # SVR4 systems can appear rather BSD-ish.
8778                         case "$i_unistd" in
8779                         $undef)
8780                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8781                                 val="$define"
8782                                 ;;
8783                         $define)
8784                                 xxx="probably a USG one, i.e. you use getpgrp()."
8785                                 val="$undef"
8786                                 ;;
8787                         esac
8788                 fi
8789                 echo "Assuming your getpgrp is $xxx" >&4
8790         fi
8791         ;;
8792 *) val="$undef";;
8793 esac
8794 set d_bsdgetpgrp
8795 eval $setvar
8796 $rm -f try try.*
8797
8798 : see if setpgrp exists
8799 set setpgrp d_setpgrp
8800 eval $inlibc
8801
8802 case "$d_setpgrp" in
8803 "$define")
8804         echo " "
8805         echo "Checking to see which flavor of setpgrp is in use..."
8806         $cat >try.c <<EOP
8807 #$i_unistd I_UNISTD
8808 #include <sys/types.h>
8809 #ifdef I_UNISTD
8810 #  include <unistd.h>
8811 #endif
8812 int main()
8813 {
8814         if (getuid() == 0) {
8815                 printf("(I see you are running Configure as super-user...)\n");
8816                 setuid(1);
8817         }
8818 #ifdef TRY_BSD_PGRP
8819         if (-1 == setpgrp(1, 1))
8820                 exit(0);
8821 #else
8822         if (setpgrp() != -1)
8823                 exit(0);
8824 #endif
8825         exit(1);
8826 }
8827 EOP
8828         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8829                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8830                 val="$define"
8831         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8832                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8833                 val="$undef"
8834         else
8835                 echo "(I can't seem to compile and run the test program.)"
8836                 if ./usg; then
8837                         xxx="a USG one, i.e. you use setpgrp()."
8838                 else
8839                         # SVR4 systems can appear rather BSD-ish.
8840                         case "$i_unistd" in
8841                         $undef)
8842                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8843                                 val="$define"
8844                                 ;;
8845                         $define)
8846                                 xxx="probably a USG one, i.e. you use setpgrp()."
8847                                 val="$undef"
8848                                 ;;
8849                         esac
8850                 fi
8851                 echo "Assuming your setpgrp is $xxx" >&4
8852         fi
8853         ;;
8854 *) val="$undef";;
8855 esac
8856 set d_bsdsetpgrp
8857 eval $setvar
8858 $rm -f try try.*
8859 : see if bzero exists
8860 set bzero d_bzero
8861 eval $inlibc
8862
8863 : see if signal is declared as pointer to function returning int or void
8864 echo " "
8865 xxx=`./findhdr signal.h`
8866 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8867 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8868         echo "You have int (*signal())() instead of void." >&4
8869         val="$undef"
8870 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8871         echo "You have void (*signal())()." >&4
8872         val="$define"
8873 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8874         echo "You have int (*signal())() instead of void." >&4
8875         val="$undef"
8876 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8877         echo "You have void (*signal())()." >&4
8878         val="$define"
8879 else
8880         case "$d_voidsig" in
8881         '')
8882         echo "I can't determine whether signal handler returns void or int..." >&4
8883                 dflt=void
8884                 rp="What type does your signal handler return?"
8885                 . ./myread
8886                 case "$ans" in
8887                 v*) val="$define";;
8888                 *) val="$undef";;
8889                 esac;;
8890         "$define")
8891                 echo "As you already told me, signal handler returns void." >&4
8892                 val="$define"
8893                 ;;
8894         *)      echo "As you already told me, signal handler returns int." >&4
8895                 val="$undef"
8896                 ;;
8897         esac
8898 fi
8899 set d_voidsig
8900 eval $setvar
8901 case "$d_voidsig" in
8902 "$define") signal_t="void";;
8903 *) signal_t="int";;
8904 esac
8905 $rm -f $$.tmp
8906
8907 : check for ability to cast large floats to 32-bit ints.
8908 echo " "
8909 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8910 if $test "$intsize" -ge 4; then
8911         xxx=int
8912 else
8913         xxx=long
8914 fi
8915 $cat >try.c <<EOCP
8916 #include <stdio.h>
8917 #include <sys/types.h>
8918 #include <signal.h>
8919 $signal_t blech(s) int s; { exit(3); }
8920 int main()
8921 {
8922         $xxx i32;
8923         double f, g;
8924         int result = 0;
8925         char str[16];
8926         signal(SIGFPE, blech);
8927
8928         /* Don't let compiler optimize the test away.  Store the number 
8929            in a writable string for gcc to pass to sscanf under HP/UX.
8930         */
8931         sprintf(str, "2147483647");
8932         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8933         g = 10 * f;
8934         i32  = ($xxx) g;
8935
8936         /* x86 processors will probably give 0x8000 0000, which is a
8937        sign change.  We don't want that.  We want to mimic SPARC
8938            behavior here, which is to preserve the sign and give
8939            back 0x7fff ffff.
8940         */
8941         if (i32 != ($xxx) f)
8942                 result |= 1;
8943         exit(result);
8944 }
8945 EOCP
8946 set try
8947 if eval $compile_ok; then
8948         $run ./try
8949         yyy=$?
8950 else
8951         echo "(I can't seem to compile the test program--assuming it can't)"
8952         yyy=1
8953 fi
8954 case "$yyy" in
8955 0)      val="$define"
8956         echo "Yup, it can."
8957         ;;
8958 *)      val="$undef"
8959         echo "Nope, it can't."
8960         ;;
8961 esac
8962 set d_casti32
8963 eval $setvar
8964 $rm -f try try.*
8965
8966 : check for ability to cast negative floats to unsigned
8967 echo " "
8968 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8969 $cat >try.c <<EOCP
8970 #include <stdio.h>
8971 #include <sys/types.h>
8972 #include <signal.h>
8973 $signal_t blech(s) int s; { exit(7); }
8974 $signal_t blech_in_list(s) int s; { exit(4); }
8975 unsigned long dummy_long(p) unsigned long p; { return p; }
8976 unsigned int dummy_int(p) unsigned int p; { return p; }
8977 unsigned short dummy_short(p) unsigned short p; { return p; }
8978 int main()
8979 {
8980         double f;
8981         unsigned long along;
8982         unsigned int aint;
8983         unsigned short ashort;
8984         int result = 0;
8985         char str[16];
8986         
8987         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8988            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8989            optimized the whole file away
8990         */
8991         /* Store the number in a writable string for gcc to pass to 
8992            sscanf under HP/UX.
8993         */
8994         sprintf(str, "-123");
8995         sscanf(str, "%lf", &f);  /* f = -123.; */
8996
8997         signal(SIGFPE, blech);
8998         along = (unsigned long)f;
8999         aint = (unsigned int)f;
9000         ashort = (unsigned short)f;
9001         if (along != (unsigned long)-123)
9002                 result |= 1;
9003         if (aint != (unsigned int)-123)
9004                 result |= 1;
9005         if (ashort != (unsigned short)-123)
9006                 result |= 1;
9007         sprintf(str, "1073741824.");
9008         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9009         f = f + f;
9010         along = 0;
9011         along = (unsigned long)f;
9012         if (along != 0x80000000)
9013                 result |= 2;
9014         f -= 1.;
9015         along = 0;
9016         along = (unsigned long)f;
9017         if (along != 0x7fffffff)
9018                 result |= 1;
9019         f += 2.;
9020         along = 0;
9021         along = (unsigned long)f;
9022         if (along != 0x80000001)
9023                 result |= 2;
9024         if (result)
9025                 exit(result);
9026         signal(SIGFPE, blech_in_list);
9027         sprintf(str, "123.");
9028         sscanf(str, "%lf", &f);  /* f = 123.; */
9029         along = dummy_long((unsigned long)f);
9030         aint = dummy_int((unsigned int)f);
9031         ashort = dummy_short((unsigned short)f);
9032         if (along != (unsigned long)123)
9033                 result |= 4;
9034         if (aint != (unsigned int)123)
9035                 result |= 4;
9036         if (ashort != (unsigned short)123)
9037                 result |= 4;
9038         exit(result);
9039
9040 }
9041 EOCP
9042 set try
9043 if eval $compile_ok; then
9044         $run ./try
9045         castflags=$?
9046 else
9047         echo "(I can't seem to compile the test program--assuming it can't)"
9048         castflags=7
9049 fi
9050 case "$castflags" in
9051 0)      val="$define"
9052         echo "Yup, it can."
9053         ;;
9054 *)      val="$undef"
9055         echo "Nope, it can't."
9056         ;;
9057 esac
9058 set d_castneg
9059 eval $setvar
9060 $rm -f try.*
9061
9062 : see if vprintf exists
9063 echo " "
9064 if set vprintf val -f d_vprintf; eval $csym; $val; then
9065         echo 'vprintf() found.' >&4
9066         val="$define"
9067         $cat >try.c <<'EOF'
9068 #include <varargs.h>
9069
9070 int main() { xxx("foo"); }
9071
9072 xxx(va_alist)
9073 va_dcl
9074 {
9075         va_list args;
9076         char buf[10];
9077
9078         va_start(args);
9079         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9080 }
9081 EOF
9082         set try
9083         if eval $compile && $run ./try; then
9084                 echo "Your vsprintf() returns (int)." >&4
9085                 val2="$undef"
9086         else
9087                 echo "Your vsprintf() returns (char*)." >&4
9088                 val2="$define"
9089         fi
9090 else
9091         echo 'vprintf() NOT found.' >&4
9092                 val="$undef"
9093                 val2="$undef"
9094 fi
9095 $rm -f try try.*
9096 set d_vprintf
9097 eval $setvar
9098 val=$val2
9099 set d_charvspr
9100 eval $setvar
9101
9102 : see if chown exists
9103 set chown d_chown
9104 eval $inlibc
9105
9106 : see if chroot exists
9107 set chroot d_chroot
9108 eval $inlibc
9109
9110 : see if chsize exists
9111 set chsize d_chsize
9112 eval $inlibc
9113
9114 hasstruct='varname=$1; struct=$2; shift; shift;
9115 while $test $# -ge 2; do
9116         case "$1" in
9117         $define) echo "#include <$2>";;
9118         esac ;
9119     shift 2;
9120 done > try.c;
9121 echo "int main () { struct $struct foo; }" >> try.c;
9122 set try;
9123 if eval $compile; then
9124         val="$define";
9125 else
9126         val="$undef";
9127 fi;
9128 set $varname;
9129 eval $setvar;
9130 $rm -f try.c try.o'
9131
9132 : see if sys/types.h has to be included
9133 set sys/types.h i_systypes
9134 eval $inhdr
9135
9136 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9137 while $test $# -ge 2; do
9138         case "$1" in
9139         $define) echo "#include <$2>";;
9140         esac ;
9141     shift 2;
9142 done > try.c;
9143 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9144 set try;
9145 if eval $compile; then
9146         val="$define";
9147 else
9148         val="$undef";
9149 fi;
9150 set $varname;
9151 eval $setvar;
9152 $rm -f try.c try.o'
9153
9154 socketlib=''
9155 sockethdr=''
9156 : see whether socket exists
9157 echo " "
9158 $echo $n "Hmm... $c" >&4
9159 if set socket val -f d_socket; eval $csym; $val; then
9160         echo "Looks like you have Berkeley networking support." >&4
9161         d_socket="$define"
9162         if set setsockopt val -f; eval $csym; $val; then
9163                 d_oldsock="$undef"
9164         else
9165                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9166                 d_oldsock="$define"
9167         fi
9168 else
9169         if $contains socklib libc.list >/dev/null 2>&1; then
9170                 echo "Looks like you have Berkeley networking support." >&4
9171                 d_socket="$define"
9172                 : we will have to assume that it supports the 4.2 BSD interface
9173                 d_oldsock="$undef"
9174         else
9175                 echo "You don't have Berkeley networking in libc$_a..." >&4
9176                 if test "X$d_socket" = "X$define"; then
9177                    echo "...but you seem to believe that you have sockets." >&4
9178                 else
9179                         for net in net socket
9180                         do
9181                                 if test -f /usr/lib/lib$net$_a; then
9182                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9183                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9184                                         if $contains socket libc.list >/dev/null 2>&1; then
9185                                                 d_socket="$define"
9186                                                 socketlib="-l$net"
9187                                                 case "$net" in
9188                                                 net)
9189                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9190                                                         sockethdr="-I/usr/netinclude"
9191                                                         ;;
9192                                                 esac
9193                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9194                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9195                                                         d_oldsock="$undef"
9196                                                 else
9197                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9198                                                         d_oldsock="$define"
9199                                                 fi
9200                                                 break
9201                                         fi
9202                                 fi
9203                         done
9204                         if test "X$d_socket" != "X$define"; then
9205                            echo "or anywhere else I see." >&4
9206                            d_socket="$undef"
9207                            d_oldsock="$undef"
9208                         fi
9209                 fi
9210         fi
9211 fi
9212
9213 : see if socketpair exists
9214 set socketpair d_sockpair
9215 eval $inlibc
9216
9217
9218 echo " "
9219 echo "Checking the availability of certain socket constants..." >& 4
9220 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9221         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9222         $cat >try.c <<EOF
9223 #include <sys/types.h>
9224 #include <sys/socket.h>
9225 int main() {
9226     int i = $ENUM;
9227 }
9228 EOF
9229         val="$undef"
9230         set try; if eval $compile; then
9231                 val="$define"
9232         fi
9233         set d_${enum}; eval $setvar
9234         $rm -f try.c try
9235 done
9236
9237 : see if this is a sys/uio.h system
9238 set sys/uio.h i_sysuio
9239 eval $inhdr
9240
9241
9242 echo " "
9243 echo "Checking to see if your system supports struct cmsghdr..." >&4
9244 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9245 eval $hasstruct
9246 case "$d_cmsghdr_s" in
9247 "$define")      echo "Yes, it does."   ;;
9248 *)              echo "No, it doesn't." ;;
9249 esac
9250
9251
9252 : check for const keyword
9253 echo " "
9254 echo 'Checking to see if your C compiler knows about "const"...' >&4
9255 $cat >const.c <<'EOCP'
9256 typedef struct spug { int drokk; } spug;
9257 int main()
9258 {
9259         const char *foo;
9260         const spug y;
9261 }
9262 EOCP
9263 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9264         val="$define"
9265         echo "Yup, it does."
9266 else
9267         val="$undef"
9268         echo "Nope, it doesn't."
9269 fi
9270 set d_const
9271 eval $setvar
9272
9273 : see if crypt exists
9274 echo " "
9275 if set crypt val -f d_crypt; eval $csym; $val; then
9276         echo 'crypt() found.' >&4
9277         val="$define"
9278         cryptlib=''
9279 else
9280         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9281         if $test -z "$cryptlib"; then
9282                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9283         else
9284                 cryptlib=-lcrypt
9285         fi
9286         if $test -z "$cryptlib"; then
9287                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9288         else
9289                 cryptlib=-lcrypt
9290         fi
9291         if $test -z "$cryptlib"; then
9292                 cryptlib=`./loc libcrypt$_a "" $libpth`
9293         else
9294                 cryptlib=-lcrypt
9295         fi
9296         if $test -z "$cryptlib"; then
9297                 echo 'crypt() NOT found.' >&4
9298                 val="$undef"
9299         else
9300                 val="$define"
9301         fi
9302 fi
9303 set d_crypt
9304 eval $setvar
9305
9306 : get csh whereabouts
9307 case "$csh" in
9308 'csh') val="$undef" ;;
9309 *) val="$define" ;;
9310 esac
9311 set d_csh
9312 eval $setvar
9313 : Respect a hint or command line value for full_csh.
9314 case "$full_csh" in
9315 '') full_csh=$csh ;;
9316 esac
9317
9318 : see if cuserid exists
9319 set cuserid d_cuserid
9320 eval $inlibc
9321
9322 : see if this is a limits.h system
9323 set limits.h i_limits
9324 eval $inhdr
9325
9326 : see if this is a float.h system
9327 set float.h i_float
9328 eval $inhdr
9329
9330 : See if number of significant digits in a double precision number is known
9331 echo " "
9332 $cat >dbl_dig.c <<EOM
9333 #$i_limits I_LIMITS
9334 #$i_float I_FLOAT
9335 #ifdef I_LIMITS
9336 #include <limits.h>
9337 #endif
9338 #ifdef I_FLOAT
9339 #include <float.h>
9340 #endif
9341 #ifdef DBL_DIG
9342 printf("Contains DBL_DIG");
9343 #endif
9344 EOM
9345 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9346 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9347         echo "DBL_DIG found." >&4
9348         val="$define"
9349 else
9350         echo "DBL_DIG NOT found." >&4
9351         val="$undef"
9352 fi
9353 $rm -f dbl_dig.?
9354 set d_dbl_dig
9355 eval $setvar
9356
9357 hasproto='varname=$1; func=$2; shift; shift;
9358 while $test $# -ge 2; do
9359         case "$1" in
9360         $define) echo "#include <$2>";;
9361         esac ;
9362     shift 2;
9363 done > try.c;
9364 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9365 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9366         echo "$func() prototype found.";
9367         val="$define";
9368 else
9369         echo "$func() prototype NOT found.";
9370         val="$undef";
9371 fi;
9372 set $varname;
9373 eval $setvar;
9374 $rm -f try.c tryout.c'
9375
9376 : see if dbm.h is available
9377 : see if dbmclose exists
9378 set dbmclose d_dbmclose
9379 eval $inlibc
9380
9381 case "$d_dbmclose" in
9382 $define)
9383         set dbm.h i_dbm
9384         eval $inhdr
9385         case "$i_dbm" in
9386         $define)
9387                 val="$undef"
9388                 set i_rpcsvcdbm
9389                 eval $setvar
9390                 ;;
9391         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9392                 eval $inhdr
9393                 ;;
9394         esac
9395         ;;
9396 *)      echo "We won't be including <dbm.h>"
9397         val="$undef"
9398         set i_dbm
9399         eval $setvar
9400         val="$undef"
9401         set i_rpcsvcdbm
9402         eval $setvar
9403         ;;
9404 esac
9405
9406 : see if prototype for dbminit is available
9407 echo " "
9408 set d_dbminitproto dbminit $i_dbm dbm.h
9409 eval $hasproto
9410
9411 : see if difftime exists
9412 set difftime d_difftime
9413 eval $inlibc
9414
9415 : see if this is a dirent system
9416 echo " "
9417 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9418         val="$define"
9419         echo "<dirent.h> found." >&4
9420 else
9421         val="$undef"
9422         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9423                 echo "<sys/dir.h> found." >&4
9424                 echo " "
9425         else
9426                 xinc=`./findhdr sys/ndir.h`
9427         fi
9428         echo "<dirent.h> NOT found." >&4
9429 fi
9430 set i_dirent
9431 eval $setvar
9432
9433 : Look for type of directory structure.
9434 echo " "
9435 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9436
9437 case "$direntrytype" in
9438 ''|' ')
9439         case "$i_dirent" in
9440         $define) guess1='struct dirent' ;;
9441         *) guess1='struct direct'  ;;
9442         esac
9443         ;;
9444 *)      guess1="$direntrytype"
9445         ;;
9446 esac
9447
9448 case "$guess1" in
9449 'struct dirent') guess2='struct direct' ;;
9450 *) guess2='struct dirent' ;;
9451 esac
9452                 
9453 if $contains "$guess1" try.c >/dev/null 2>&1; then
9454         direntrytype="$guess1"
9455         echo "Your directory entries are $direntrytype." >&4
9456 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9457         direntrytype="$guess2"
9458         echo "Your directory entries seem to be $direntrytype." >&4
9459 else
9460         echo "I don't recognize your system's directory entries." >&4
9461         rp="What type is used for directory entries on this system?"
9462         dflt="$guess1"
9463         . ./myread
9464         direntrytype="$ans"
9465 fi
9466 $rm -f try.c
9467
9468
9469 : see if the directory entry stores field length
9470 echo " "
9471 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9472 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9473         echo "Good, your directory entry keeps length information in d_namlen." >&4
9474         val="$define"
9475 else
9476         echo "Your directory entry does not know about the d_namlen field." >&4
9477         val="$undef"
9478 fi
9479 set d_dirnamlen
9480 eval $setvar
9481 $rm -f try.c
9482
9483 : see if dlerror exists
9484 xxx_runnm="$runnm"
9485 runnm=false
9486 set dlerror d_dlerror
9487 eval $inlibc
9488 runnm="$xxx_runnm"
9489
9490 : see if dlfcn is available
9491 set dlfcn.h i_dlfcn
9492 eval $inhdr
9493
9494 case "$usedl" in
9495 $define|y|true)
9496         $cat << EOM
9497
9498 On a few systems, the dynamically loaded modules that perl generates and uses
9499 will need a different extension than shared libs. The default will probably
9500 be appropriate.
9501
9502 EOM
9503         case "$dlext" in
9504         '')     dflt="$so" ;;
9505         *)      dflt="$dlext" ;;
9506         esac
9507         rp='What is the extension of dynamically loaded modules'
9508         . ./myread
9509         dlext="$ans"
9510         ;;
9511 *)
9512         dlext="none"
9513         ;;
9514 esac
9515
9516 : Check if dlsym need a leading underscore
9517 echo " "
9518 val="$undef"
9519
9520 case "$dlsrc" in
9521 dl_dlopen.xs)
9522         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9523         $cat >dyna.c <<'EOM'
9524 fred () { }
9525 EOM
9526
9527 $cat >fred.c<<EOM
9528
9529 #include <stdio.h>
9530 #$i_dlfcn I_DLFCN
9531 #ifdef I_DLFCN
9532 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9533 #else
9534 #include <sys/types.h>
9535 #include <nlist.h>
9536 #include <link.h>
9537 #endif
9538
9539 extern int fred() ;
9540
9541 int main()
9542 {
9543     void * handle ;
9544     void * symbol ;
9545 #ifndef RTLD_LAZY
9546     int mode = 1 ;
9547 #else
9548     int mode = RTLD_LAZY ;
9549 #endif
9550     handle = dlopen("./dyna.$dlext", mode) ;
9551     if (handle == NULL) {
9552         printf ("1\n") ;
9553         fflush (stdout) ;
9554         exit(0);
9555     }
9556     symbol = dlsym(handle, "fred") ;
9557     if (symbol == NULL) {
9558         /* try putting a leading underscore */
9559         symbol = dlsym(handle, "_fred") ;
9560         if (symbol == NULL) {
9561             printf ("2\n") ;
9562             fflush (stdout) ;
9563             exit(0);
9564         }
9565         printf ("3\n") ;
9566     }
9567     else
9568         printf ("4\n") ;
9569     fflush (stdout) ;
9570     exit(0);
9571 }
9572 EOM
9573         : Call the object file tmp-dyna.o in case dlext=o.
9574         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9575                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9576                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9577                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9578                 xxx=`$run ./fred`
9579                 case $xxx in
9580                 1)      echo "Test program failed using dlopen." >&4
9581                         echo "Perhaps you should not use dynamic loading." >&4;;
9582                 2)      echo "Test program failed using dlsym." >&4
9583                         echo "Perhaps you should not use dynamic loading." >&4;;
9584                 3)      echo "dlsym needs a leading underscore" >&4
9585                         val="$define" ;;
9586                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9587                 esac
9588         else
9589                 echo "I can't compile and run the test program." >&4
9590                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9591         fi
9592         ;;
9593 esac
9594                 
9595 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9596
9597 set d_dlsymun
9598 eval $setvar
9599
9600 : see if prototype for drand48 is available
9601 echo " "
9602 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9603 eval $hasproto
9604
9605 : see if dup2 exists
9606 set dup2 d_dup2
9607 eval $inlibc
9608
9609 : see if eaccess exists
9610 set eaccess d_eaccess
9611 eval $inlibc
9612
9613 : see if endgrent exists
9614 set endgrent d_endgrent
9615 eval $inlibc
9616
9617 : see if endhostent exists
9618 set endhostent d_endhent
9619 eval $inlibc
9620
9621 : see if endnetent exists
9622 set endnetent d_endnent
9623 eval $inlibc
9624
9625 : see if endprotoent exists
9626 set endprotoent d_endpent
9627 eval $inlibc
9628
9629 : see if endpwent exists
9630 set endpwent d_endpwent
9631 eval $inlibc
9632
9633 : see if endservent exists
9634 set endservent d_endsent
9635 eval $inlibc
9636
9637 : Locate the flags for 'open()'
9638 echo " "
9639 $cat >try.c <<'EOCP'
9640 #include <sys/types.h>
9641 #ifdef I_FCNTL
9642 #include <fcntl.h>
9643 #endif
9644 #ifdef I_SYS_FILE
9645 #include <sys/file.h>
9646 #endif
9647 int main() {
9648         if(O_RDONLY);
9649 #ifdef O_TRUNC
9650         exit(0);
9651 #else
9652         exit(1);
9653 #endif
9654 }
9655 EOCP
9656 : check sys/file.h first to get FREAD on Sun
9657 if $test `./findhdr sys/file.h` && \
9658                 set try -DI_SYS_FILE && eval $compile; then
9659         h_sysfile=true;
9660         echo "<sys/file.h> defines the O_* constants..." >&4
9661         if $run ./try; then
9662                 echo "and you have the 3 argument form of open()." >&4
9663                 val="$define"
9664         else
9665                 echo "but not the 3 argument form of open().  Oh, well." >&4
9666                 val="$undef"
9667         fi
9668 elif $test `./findhdr fcntl.h` && \
9669                 set try -DI_FCNTL && eval $compile; then
9670         h_fcntl=true;
9671         echo "<fcntl.h> defines the O_* constants..." >&4
9672         if $run ./try; then
9673                 echo "and you have the 3 argument form of open()." >&4
9674                 val="$define"
9675         else
9676                 echo "but not the 3 argument form of open().  Oh, well." >&4
9677                 val="$undef"
9678         fi
9679 else
9680         val="$undef"
9681         echo "I can't find the O_* constant definitions!  You got problems." >&4
9682 fi
9683 set d_open3
9684 eval $setvar
9685 $rm -f try try.*
9686
9687 : see which of string.h or strings.h is needed
9688 echo " "
9689 strings=`./findhdr string.h`
9690 if $test "$strings" && $test -r "$strings"; then
9691         echo "Using <string.h> instead of <strings.h>." >&4
9692         val="$define"
9693 else
9694         val="$undef"
9695         strings=`./findhdr strings.h`
9696         if $test "$strings" && $test -r "$strings"; then
9697                 echo "Using <strings.h> instead of <string.h>." >&4
9698         else
9699                 echo "No string header found -- You'll surely have problems." >&4
9700         fi
9701 fi
9702 set i_string
9703 eval $setvar
9704 case "$i_string" in
9705 "$undef") strings=`./findhdr strings.h`;;
9706 *)        strings=`./findhdr string.h`;;
9707 esac
9708
9709 : check for non-blocking I/O stuff
9710 case "$h_sysfile" in
9711 true) echo "#include <sys/file.h>" > head.c;;
9712 *)
9713        case "$h_fcntl" in
9714        true) echo "#include <fcntl.h>" > head.c;;
9715        *) echo "#include <sys/fcntl.h>" > head.c;;
9716        esac
9717        ;;
9718 esac
9719 echo " "
9720 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9721 case "$o_nonblock" in
9722 '')
9723         $cat head.c > try.c
9724         $cat >>try.c <<'EOCP'
9725 #include <stdio.h>
9726 #include <stdlib.h>
9727 int main() {
9728 #ifdef O_NONBLOCK
9729         printf("O_NONBLOCK\n");
9730         exit(0);
9731 #endif
9732 #ifdef O_NDELAY
9733         printf("O_NDELAY\n");
9734         exit(0);
9735 #endif
9736 #ifdef FNDELAY
9737         printf("FNDELAY\n");
9738         exit(0);
9739 #endif
9740         exit(0);
9741 }
9742 EOCP
9743         set try
9744         if eval $compile_ok; then
9745                 o_nonblock=`$run ./try`
9746                 case "$o_nonblock" in
9747                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9748                 *) echo "Seems like we can use $o_nonblock.";;
9749                 esac
9750         else
9751                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9752         fi
9753         ;;
9754 *) echo "Using $hint value $o_nonblock.";;
9755 esac
9756 $rm -f try try.* .out core
9757
9758 echo " "
9759 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9760 case "$eagain" in
9761 '')
9762         $cat head.c > try.c
9763         $cat >>try.c <<EOCP
9764 #include <errno.h>
9765 #include <sys/types.h>
9766 #include <signal.h>
9767 #include <stdio.h> 
9768 #include <stdlib.h> 
9769 #define MY_O_NONBLOCK $o_nonblock
9770 #ifndef errno  /* XXX need better Configure test */
9771 extern int errno;
9772 #endif
9773 #$i_unistd I_UNISTD
9774 #ifdef I_UNISTD
9775 #include <unistd.h>
9776 #endif
9777 #$i_string I_STRING
9778 #ifdef I_STRING
9779 #include <string.h>
9780 #else
9781 #include <strings.h>
9782 #endif
9783 $signal_t blech(x) int x; { exit(3); }
9784 EOCP
9785         $cat >> try.c <<'EOCP'
9786 int main()
9787 {
9788         int pd[2];
9789         int pu[2];
9790         char buf[1];
9791         char string[100];
9792
9793         pipe(pd);       /* Down: child -> parent */
9794         pipe(pu);       /* Up: parent -> child */
9795         if (0 != fork()) {
9796                 int ret;
9797                 close(pd[1]);   /* Parent reads from pd[0] */
9798                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9799 #ifdef F_SETFL
9800                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9801                         exit(1);
9802 #else
9803                 exit(4);
9804 #endif
9805                 signal(SIGALRM, blech);
9806                 alarm(5);
9807                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9808                         exit(2);
9809                 sprintf(string, "%d\n", ret);
9810                 write(2, string, strlen(string));
9811                 alarm(0);
9812 #ifdef EAGAIN
9813                 if (errno == EAGAIN) {
9814                         printf("EAGAIN\n");
9815                         goto ok;
9816                 }
9817 #endif
9818 #ifdef EWOULDBLOCK
9819                 if (errno == EWOULDBLOCK)
9820                         printf("EWOULDBLOCK\n");
9821 #endif
9822         ok:
9823                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9824                 sleep(2);                               /* Give it time to close our pipe */
9825                 alarm(5);
9826                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9827                 alarm(0);
9828                 sprintf(string, "%d\n", ret);
9829                 write(3, string, strlen(string));
9830                 exit(0);
9831         }
9832
9833         close(pd[0]);                   /* We write to pd[1] */
9834         close(pu[1]);                   /* We read from pu[0] */
9835         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9836         close(pd[1]);                   /* Pipe pd is now fully closed! */
9837         exit(0);                                /* Bye bye, thank you for playing! */
9838 }
9839 EOCP
9840         set try
9841         if eval $compile_ok; then
9842                 echo "$startsh" >mtry
9843                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9844                 chmod +x mtry
9845                 ./mtry >/dev/null 2>&1
9846                 case $? in
9847                 0) eagain=`$cat try.out`;;
9848                 1) echo "Could not perform non-blocking setting!";;
9849                 2) echo "I did a successful read() for something that was not there!";;
9850                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9851                 4) echo "Could not find F_SETFL!";;
9852                 *) echo "Something terribly wrong happened during testing.";;
9853                 esac
9854                 rd_nodata=`$cat try.ret`
9855                 echo "A read() system call with no data present returns $rd_nodata."
9856                 case "$rd_nodata" in
9857                 0|-1) ;;
9858                 *)
9859                         echo "(That's peculiar, fixing that to be -1.)"
9860                         rd_nodata=-1
9861                         ;;
9862                 esac
9863                 case "$eagain" in
9864                 '')
9865                         echo "Forcing errno EAGAIN on read() with no data available."
9866                         eagain=EAGAIN
9867                         ;;
9868                 *)
9869                         echo "Your read() sets errno to $eagain when no data is available."
9870                         ;;
9871                 esac
9872                 status=`$cat try.err`
9873                 case "$status" in
9874                 0) echo "And it correctly returns 0 to signal EOF.";;
9875                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9876                 *) echo "However, your read() returns '$status' on EOF??";;
9877                 esac
9878                 val="$define"
9879                 if test "$status" = "$rd_nodata"; then
9880                         echo "WARNING: you can't distinguish between EOF and no data!"
9881                         val="$undef"
9882                 fi
9883         else
9884                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9885                 eagain=EAGAIN
9886         fi
9887         set d_eofnblk
9888         eval $setvar
9889         ;;
9890 *)
9891         echo "Using $hint value $eagain."
9892         echo "Your read() returns $rd_nodata when no data is present."
9893         case "$d_eofnblk" in
9894         "$define") echo "And you can see EOF because read() returns 0.";;
9895         "$undef") echo "But you can't see EOF status from read() returned value.";;
9896         *)
9897                 echo "(Assuming you can't see EOF status from read anyway.)"
9898                 d_eofnblk=$undef
9899                 ;;
9900         esac
9901         ;;
9902 esac
9903 $rm -f try try.* .out core head.c mtry
9904
9905 : see if fchdir exists
9906 set fchdir d_fchdir
9907 eval $inlibc
9908
9909 : see if fchmod exists
9910 set fchmod d_fchmod
9911 eval $inlibc
9912
9913 : see if fchown exists
9914 set fchown d_fchown
9915 eval $inlibc
9916
9917 : see if this is an fcntl system
9918 set fcntl d_fcntl
9919 eval $inlibc
9920
9921 echo " "
9922 : See if fcntl-based locking works.
9923 $cat >try.c <<EOCP
9924 #include <stdlib.h>
9925 #include <unistd.h>
9926 #include <fcntl.h>
9927 #include <signal.h>
9928 $signal_t blech(x) int x; { exit(3); }
9929 int main() {
9930 #if defined(F_SETLK) && defined(F_SETLKW)
9931      struct flock flock;
9932      int retval, fd;
9933      fd = open("try.c", O_RDONLY);
9934      flock.l_type = F_RDLCK;
9935      flock.l_whence = SEEK_SET;
9936      flock.l_start = flock.l_len = 0;
9937      signal(SIGALRM, blech);
9938      alarm(10);
9939      retval = fcntl(fd, F_SETLK, &flock);
9940      close(fd);
9941      (retval < 0 ? exit(2) : exit(0));
9942 #else
9943      exit(2);
9944 #endif
9945 }
9946 EOCP
9947 echo "Checking if fcntl-based file locking works... "
9948 case "$d_fcntl" in
9949 "$define")
9950         set try
9951         if eval $compile_ok; then
9952                 if $run ./try; then
9953                         echo "Yes, it seems to work."
9954                         val="$define"
9955                 else
9956                         echo "Nope, it didn't work."
9957                         val="$undef"
9958                         case "$?" in
9959                         3) $cat >&4 <<EOM
9960 ***
9961 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9962 *** This is (almost) impossible.
9963 *** If your NFS lock daemons are not feeling well, something like
9964 *** this may happen, please investigate.  Cannot continue, aborting.
9965 ***
9966 EOM
9967                                 exit 1
9968                                 ;;
9969                         esac
9970                 fi
9971         else
9972                 echo "I'm unable to compile the test program, so I'll assume not."
9973                 val="$undef"
9974         fi
9975         ;;
9976 *) val="$undef";
9977         echo "Nope, since you don't even have fcntl()."
9978         ;;
9979 esac
9980 set d_fcntl_can_lock
9981 eval $setvar
9982 $rm -f try*
9983
9984
9985 : see if sys/select.h has to be included
9986 set sys/select.h i_sysselct
9987 eval $inhdr
9988
9989 : see if we should include time.h, sys/time.h, or both
9990 echo " "
9991 if test "X$timeincl" = X; then
9992         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9993         $echo $n "I'm now running the test program...$c"
9994         $cat >try.c <<'EOCP'
9995 #include <sys/types.h>
9996 #ifdef I_TIME
9997 #include <time.h>
9998 #endif
9999 #ifdef I_SYSTIME
10000 #ifdef SYSTIMEKERNEL
10001 #define KERNEL
10002 #endif
10003 #include <sys/time.h>
10004 #endif
10005 #ifdef I_SYSSELECT
10006 #include <sys/select.h>
10007 #endif
10008 int main()
10009 {
10010         struct tm foo;
10011 #ifdef S_TIMEVAL
10012         struct timeval bar;
10013 #endif
10014 #ifdef S_TIMEZONE
10015         struct timezone tzp;
10016 #endif
10017         if (foo.tm_sec == foo.tm_sec)
10018                 exit(0);
10019 #ifdef S_TIMEVAL
10020         if (bar.tv_sec == bar.tv_sec)
10021                 exit(0);
10022 #endif
10023         exit(1);
10024 }
10025 EOCP
10026         flags=''
10027         for s_timezone in '-DS_TIMEZONE' ''; do
10028         sysselect=''
10029         for s_timeval in '-DS_TIMEVAL' ''; do
10030         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10031         for i_time in '' '-DI_TIME'; do
10032         for i_systime in '-DI_SYSTIME' ''; do
10033                 case "$flags" in
10034                 '') $echo $n ".$c"
10035                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10036                         if eval $compile; then
10037                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10038                                 shift
10039                                 flags="$*"
10040                                 echo " "
10041                                 $echo $n "Succeeded with $flags$c"
10042                         fi
10043                         ;;
10044                 esac
10045         done
10046         done
10047         done
10048         done
10049         done
10050         timeincl=''
10051         echo " "
10052         case "$flags" in
10053         *SYSTIMEKERNEL*) i_systimek="$define"
10054                 timeincl=`./findhdr sys/time.h`
10055                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10056         *) i_systimek="$undef";;
10057         esac
10058         case "$flags" in
10059         *I_TIME*) i_time="$define"
10060                 timeincl=`./findhdr time.h`" $timeincl"
10061                 echo "We'll include <time.h>." >&4;;
10062         *) i_time="$undef";;
10063         esac
10064         case "$flags" in
10065         *I_SYSTIME*) i_systime="$define"
10066                 timeincl=`./findhdr sys/time.h`" $timeincl"
10067                 echo "We'll include <sys/time.h>." >&4;;
10068         *) i_systime="$undef";;
10069         esac
10070         $rm -f try.c try
10071 fi
10072
10073 : check for fd_set items
10074 $cat <<EOM
10075
10076 Checking to see how well your C compiler handles fd_set and friends ...
10077 EOM
10078 $cat >try.c <<EOCP
10079 #$i_systime I_SYS_TIME
10080 #$i_sysselct I_SYS_SELECT
10081 #$d_socket HAS_SOCKET
10082 #include <sys/types.h>
10083 #ifdef HAS_SOCKET
10084 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10085 #endif
10086 #ifdef I_SYS_TIME
10087 #include <sys/time.h>
10088 #endif
10089 #ifdef I_SYS_SELECT
10090 #include <sys/select.h>
10091 #endif
10092 int main() {
10093         fd_set fds;
10094
10095 #ifdef TRYBITS
10096         if(fds.fds_bits);
10097 #endif
10098
10099 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10100         exit(0);
10101 #else
10102         exit(1);
10103 #endif
10104 }
10105 EOCP
10106 set try -DTRYBITS
10107 if eval $compile; then
10108         d_fds_bits="$define"
10109         d_fd_set="$define"
10110         echo "Well, your system knows about the normal fd_set typedef..." >&4
10111         if $run ./try; then
10112                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10113                 d_fd_macros="$define"
10114         else
10115                 $cat >&4 <<'EOM'
10116 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10117 EOM
10118                 d_fd_macros="$undef"
10119         fi
10120 else
10121         $cat <<'EOM'
10122 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10123 EOM
10124         set try
10125         if eval $compile; then
10126                 d_fds_bits="$undef"
10127                 d_fd_set="$define"
10128                 echo "Well, your system has some sort of fd_set available..." >&4
10129                 if $run ./try; then
10130                         echo "and you have the normal fd_set macros." >&4
10131                         d_fd_macros="$define"
10132                 else
10133                         $cat <<'EOM'
10134 but not the normal fd_set macros!  Gross!  More work for me...
10135 EOM
10136                         d_fd_macros="$undef"
10137                 fi
10138         else
10139         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10140                 d_fd_set="$undef"
10141                 d_fds_bits="$undef"
10142                 d_fd_macros="$undef"
10143         fi
10144 fi
10145 $rm -f try try.*
10146
10147 : see if fgetpos exists
10148 set fgetpos d_fgetpos
10149 eval $inlibc
10150
10151 : see if flock exists
10152 set flock d_flock
10153 eval $inlibc
10154
10155 : see if this is a sys/file.h system
10156 val=''
10157 set sys/file.h val
10158 eval $inhdr
10159
10160 : do we need to include sys/file.h ?
10161 case "$val" in
10162 "$define")
10163         echo " "
10164         if $h_sysfile; then
10165                 val="$define"
10166                 echo "We'll be including <sys/file.h>." >&4
10167         else
10168                 val="$undef"
10169                 echo "We won't be including <sys/file.h>." >&4
10170         fi
10171         ;;
10172 *)
10173         h_sysfile=false
10174         ;;
10175 esac
10176 set i_sysfile
10177 eval $setvar
10178
10179 : see if prototype for flock is available
10180 echo " "
10181 set d_flockproto flock $i_sysfile sys/file.h
10182 eval $hasproto
10183
10184 : see if fork exists
10185 set fork d_fork
10186 eval $inlibc
10187
10188 : see if pathconf exists
10189 set pathconf d_pathconf
10190 eval $inlibc
10191
10192 : see if fpathconf exists
10193 set fpathconf d_fpathconf
10194 eval $inlibc
10195
10196
10197 : check for fpos64_t
10198 echo " "
10199 echo "Checking to see if you have fpos64_t..." >&4
10200 $cat >try.c <<EOCP
10201 #include <stdio.h>
10202 int main() { fpos64_t x = 7; }
10203 EOCP
10204 set try
10205 if eval $compile; then
10206         val="$define"
10207         echo "You have fpos64_t."
10208 else
10209         val="$undef"
10210         echo "You do not have fpos64_t."
10211         case "$fpossize" in
10212         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10213         esac
10214 fi
10215 $rm -f try.* try
10216 set d_fpos64_t
10217 eval $setvar
10218
10219 : see if frexpl exists
10220 set frexpl d_frexpl
10221 eval $inlibc
10222
10223 : see if this is a sys/param system
10224 set sys/param.h i_sysparam
10225 eval $inhdr
10226
10227 : see if this is a sys/mount.h system
10228 set sys/mount.h i_sysmount
10229 eval $inhdr
10230
10231
10232 echo " "
10233 echo "Checking to see if your system supports struct fs_data..." >&4
10234 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10235 eval $hasstruct
10236 case "$d_fs_data_s" in
10237 "$define")      echo "Yes, it does."   ;;
10238 *)              echo "No, it doesn't." ;;
10239 esac
10240
10241 : see if fseeko exists
10242 set fseeko d_fseeko
10243 eval $inlibc
10244 case "$longsize" in
10245 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10246 esac
10247
10248 : see if fsetpos exists
10249 set fsetpos d_fsetpos
10250 eval $inlibc
10251
10252
10253 : see if fstatfs exists
10254 set fstatfs d_fstatfs
10255 eval $inlibc
10256
10257
10258 : see if statvfs exists
10259 set statvfs d_statvfs
10260 eval $inlibc
10261
10262 : see if fstatvfs exists
10263 set fstatvfs d_fstatvfs
10264 eval $inlibc
10265
10266
10267 : see if fsync exists
10268 set fsync d_fsync
10269 eval $inlibc
10270
10271 : see if ftello exists
10272 set ftello d_ftello
10273 eval $inlibc
10274 case "$longsize" in
10275 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10276 esac
10277
10278 : see if getcwd exists
10279 set getcwd d_getcwd
10280 eval $inlibc
10281
10282 : see if getespwnam exists
10283 set getespwnam d_getespwnam
10284 eval $inlibc
10285
10286
10287 : see if getfsstat exists
10288 set getfsstat d_getfsstat
10289 eval $inlibc
10290
10291 : see if getgrent exists
10292 set getgrent d_getgrent
10293 eval $inlibc
10294
10295 : see if gethostbyaddr exists
10296 set gethostbyaddr d_gethbyaddr
10297 eval $inlibc
10298
10299 : see if gethostbyname exists
10300 set gethostbyname d_gethbyname
10301 eval $inlibc
10302
10303 : see if gethostent exists
10304 set gethostent d_gethent
10305 eval $inlibc
10306
10307 : see how we will look up host name
10308 echo " "
10309 call=''
10310 if set gethostname val -f d_gethname; eval $csym; $val; then
10311         echo 'gethostname() found.' >&4
10312         d_gethname="$define"
10313         call=gethostname
10314 fi
10315 if set uname val -f d_uname; eval $csym; $val; then
10316         if ./xenix; then
10317                 $cat <<'EOM'
10318 uname() was found, but you're running xenix, and older versions of xenix
10319 have a broken uname(). If you don't really know whether your xenix is old
10320 enough to have a broken system call, use the default answer.
10321
10322 EOM
10323                 dflt=y
10324                 case "$d_uname" in
10325                 "$define") dflt=n;;
10326                 esac
10327                 rp='Is your uname() broken?'
10328                 . ./myread
10329                 case "$ans" in
10330                 n*) d_uname="$define"; call=uname;;
10331                 esac
10332         else
10333                 echo 'uname() found.' >&4
10334                 d_uname="$define"
10335                 case "$call" in
10336                 '') call=uname ;;
10337                 esac
10338         fi
10339 fi
10340 case "$d_gethname" in
10341 '') d_gethname="$undef";;
10342 esac
10343 case "$d_uname" in
10344 '') d_uname="$undef";;
10345 esac
10346 case "$d_uname$d_gethname" in
10347 *define*)
10348         dflt=n
10349         cat <<EOM
10350  
10351 Every now and then someone has a $call() that lies about the hostname
10352 but can't be fixed for political or economic reasons.  If you wish, I can
10353 pretend $call() isn't there and maybe compute hostname at run-time
10354 thanks to the '$phostname' command.
10355
10356 EOM
10357         rp="Shall I ignore $call() from now on?"
10358         . ./myread
10359         case "$ans" in
10360         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10361         esac;;
10362 esac
10363 case "$phostname" in
10364 '') aphostname='';;
10365 *) case "$aphostname" in
10366         /*) ;;
10367         *) set X $phostname
10368                 shift
10369                 file=$1
10370                 shift
10371                 file=`./loc $file $file $pth`
10372                 aphostname=`echo $file $*`
10373                 ;;
10374         esac
10375         ;;
10376 esac
10377 case "$d_uname$d_gethname" in
10378 *define*) ;;
10379 *)
10380         case "$phostname" in
10381         '')
10382                 echo "There will be no way for $package to get your hostname." >&4;;
10383         *)
10384         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10385                 ;;
10386         esac;;
10387 esac
10388 case "$d_phostname" in
10389 '') d_phostname="$undef";;
10390 esac
10391
10392 : see if this is a netdb.h system
10393 set netdb.h i_netdb
10394 eval $inhdr
10395
10396 : see if prototypes for various gethostxxx netdb.h functions are available
10397 echo " "
10398 set d_gethostprotos gethostent $i_netdb netdb.h
10399 eval $hasproto
10400
10401 : see if getitimer exists
10402 set getitimer d_getitimer
10403 eval $inlibc
10404
10405 : see if getlogin exists
10406 set getlogin d_getlogin
10407 eval $inlibc
10408
10409 : see if getmnt exists
10410 set getmnt d_getmnt
10411 eval $inlibc
10412
10413 : see if getmntent exists
10414 set getmntent d_getmntent
10415 eval $inlibc
10416
10417 : see if getnetbyaddr exists
10418 set getnetbyaddr d_getnbyaddr
10419 eval $inlibc
10420
10421 : see if getnetbyname exists
10422 set getnetbyname d_getnbyname
10423 eval $inlibc
10424
10425 : see if getnetent exists
10426 set getnetent d_getnent
10427 eval $inlibc
10428
10429 : see if prototypes for various getnetxxx netdb.h functions are available
10430 echo " "
10431 set d_getnetprotos getnetent $i_netdb netdb.h
10432 eval $hasproto
10433
10434 : see if getpagesize exists
10435 set getpagesize d_getpagsz
10436 eval $inlibc
10437
10438
10439 : see if getprotobyname exists
10440 set getprotobyname d_getpbyname
10441 eval $inlibc
10442
10443 : see if getprotobynumber exists
10444 set getprotobynumber d_getpbynumber
10445 eval $inlibc
10446
10447 : see if getprotoent exists
10448 set getprotoent d_getpent
10449 eval $inlibc
10450
10451 : see if getpgid exists
10452 set getpgid d_getpgid
10453 eval $inlibc
10454
10455 : see if getpgrp2 exists
10456 set getpgrp2 d_getpgrp2
10457 eval $inlibc
10458
10459 : see if getppid exists
10460 set getppid d_getppid
10461 eval $inlibc
10462
10463 : see if getpriority exists
10464 set getpriority d_getprior
10465 eval $inlibc
10466
10467 : see if prototypes for various getprotoxxx netdb.h functions are available
10468 echo " "
10469 set d_getprotoprotos getprotoent $i_netdb netdb.h
10470 eval $hasproto
10471
10472 : see if getprpwnam exists
10473 set getprpwnam d_getprpwnam
10474 eval $inlibc
10475
10476 : see if getpwent exists
10477 set getpwent d_getpwent
10478 eval $inlibc
10479
10480
10481 : see if getservbyname exists
10482 set getservbyname d_getsbyname
10483 eval $inlibc
10484
10485 : see if getservbyport exists
10486 set getservbyport d_getsbyport
10487 eval $inlibc
10488
10489 : see if getservent exists
10490 set getservent d_getsent
10491 eval $inlibc
10492
10493 : see if prototypes for various getservxxx netdb.h functions are available
10494 echo " "
10495 set d_getservprotos getservent $i_netdb netdb.h
10496 eval $hasproto
10497
10498 : see if getspnam exists
10499 set getspnam d_getspnam
10500 eval $inlibc
10501
10502 : see if gettimeofday or ftime exists
10503 set gettimeofday d_gettimeod
10504 eval $inlibc
10505 case "$d_gettimeod" in
10506 "$undef")
10507         set ftime d_ftime 
10508         eval $inlibc
10509         ;;
10510 *)
10511         val="$undef"; set d_ftime; eval $setvar
10512         ;;
10513 esac
10514 case "$d_gettimeod$d_ftime" in
10515 "$undef$undef")
10516         echo " "
10517         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10518         ;;
10519 esac
10520
10521 : see if this is an grp system
10522 set grp.h i_grp
10523 eval $inhdr
10524
10525 case "$i_grp" in
10526 $define)
10527         xxx=`./findhdr grp.h`
10528         $cppstdin $cppflags $cppminus < $xxx >$$.h
10529
10530         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10531                 val="$define"
10532         else
10533                 val="$undef"
10534         fi
10535         set d_grpasswd
10536         eval $setvar
10537
10538         $rm -f $$.h
10539         ;;
10540 *)
10541         val="$undef";
10542         set d_grpasswd; eval $setvar
10543         ;;
10544 esac
10545
10546 : see if hasmntopt exists
10547 set hasmntopt d_hasmntopt
10548 eval $inlibc
10549
10550 : see if this is a netinet/in.h or sys/in.h system
10551 set netinet/in.h i_niin sys/in.h i_sysin
10552 eval $inhdr
10553
10554 : see if arpa/inet.h has to be included
10555 set arpa/inet.h i_arpainet
10556 eval $inhdr
10557
10558 : see if htonl --and friends-- exists
10559 val=''
10560 set htonl val
10561 eval $inlibc
10562
10563 : Maybe they are macros.
10564 case "$val" in
10565 $undef)
10566         $cat >htonl.c <<EOM
10567 #include <stdio.h>
10568 #include <sys/types.h>
10569 #$i_niin I_NETINET_IN
10570 #$i_sysin I_SYS_IN
10571 #$i_arpainet I_ARPA_INET
10572 #ifdef I_NETINET_IN
10573 #include <netinet/in.h>
10574 #endif
10575 #ifdef I_SYS_IN
10576 #include <sys/in.h>
10577 #endif
10578 #ifdef I_ARPA_INET
10579 #include <arpa/inet.h>
10580 #endif
10581 #ifdef htonl
10582 printf("Defined as a macro.");
10583 #endif
10584 EOM
10585         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10586         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10587                 val="$define"
10588                 echo "But it seems to be defined as a macro." >&4
10589         fi
10590         $rm -f htonl.?
10591         ;;
10592 esac
10593 set d_htonl
10594 eval $setvar
10595
10596 : see if iconv exists
10597 set iconv d_iconv
10598 eval $inlibc
10599
10600 : index or strchr
10601 echo " "
10602 if set index val -f; eval $csym; $val; then
10603         if set strchr val -f d_strchr; eval $csym; $val; then
10604                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10605                         val="$define"
10606                         vali="$undef"
10607                         echo "strchr() found." >&4
10608                 else
10609                         val="$undef"
10610                         vali="$define"
10611                         echo "index() found." >&4
10612                 fi
10613         else
10614                 val="$undef"
10615                 vali="$define"
10616                 echo "index() found." >&4
10617         fi
10618 else
10619         if set strchr val -f d_strchr; eval $csym; $val; then
10620                 val="$define"
10621                 vali="$undef"
10622                 echo "strchr() found." >&4
10623         else
10624                 echo "No index() or strchr() found!" >&4
10625                 val="$undef"
10626                 vali="$undef"
10627         fi
10628 fi
10629 set d_strchr; eval $setvar
10630 val="$vali"
10631 set d_index; eval $setvar
10632
10633 : check whether inet_aton exists
10634 set inet_aton d_inetaton
10635 eval $inlibc
10636
10637 : Look for isascii
10638 echo " "
10639 $cat >isascii.c <<'EOCP'
10640 #include <stdio.h>
10641 #include <ctype.h>
10642 int main() {
10643         int c = 'A';
10644         if (isascii(c))
10645                 exit(0);
10646         else
10647                 exit(1);
10648 }
10649 EOCP
10650 set isascii
10651 if eval $compile; then
10652         echo "isascii() found." >&4
10653         val="$define"
10654 else
10655         echo "isascii() NOT found." >&4
10656         val="$undef"
10657 fi
10658 set d_isascii
10659 eval $setvar
10660 $rm -f isascii*
10661
10662 : see if isnan exists
10663 set isnan d_isnan
10664 eval $inlibc
10665
10666 : see if isnanl exists
10667 set isnanl d_isnanl
10668 eval $inlibc
10669
10670 : see if killpg exists
10671 set killpg d_killpg
10672 eval $inlibc
10673
10674 : see if lchown exists
10675 echo " "
10676 $cat > try.c <<'EOCP'
10677 /* System header to define __stub macros and hopefully few prototypes,
10678     which can conflict with char lchown(); below.  */
10679 #include <assert.h>
10680 /* Override any gcc2 internal prototype to avoid an error.  */
10681 /* We use char because int might match the return type of a gcc2
10682    builtin and then its argument prototype would still apply.  */
10683 char lchown();
10684 int main() {
10685     /*  The GNU C library defines this for functions which it implements
10686         to always fail with ENOSYS.  Some functions are actually named
10687         something starting with __ and the normal name is an alias.  */
10688 #if defined (__stub_lchown) || defined (__stub___lchown)
10689 choke me
10690 #else
10691 lchown();
10692 #endif
10693 ; return 0; }
10694 EOCP
10695 set try
10696 if eval $compile; then
10697     $echo "lchown() found." >&4
10698     val="$define"
10699 else
10700     $echo "lchown() NOT found." >&4
10701     val="$undef"
10702 fi
10703 set d_lchown
10704 eval $setvar
10705
10706 : See if number of significant digits in a double precision number is known
10707 echo " "
10708 $cat >ldbl_dig.c <<EOM
10709 #$i_limits I_LIMITS
10710 #$i_float I_FLOAT
10711 #ifdef I_LIMITS
10712 #include <limits.h>
10713 #endif
10714 #ifdef I_FLOAT
10715 #include <float.h>
10716 #endif
10717 #ifdef LDBL_DIG
10718 printf("Contains LDBL_DIG");
10719 #endif
10720 EOM
10721 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10722 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10723         echo "LDBL_DIG found." >&4
10724         val="$define"
10725 else
10726         echo "LDBL_DIG NOT found." >&4
10727         val="$undef"
10728 fi
10729 $rm -f ldbl_dig.?
10730 set d_ldbl_dig
10731 eval $setvar
10732
10733 : see if link exists
10734 set link d_link
10735 eval $inlibc
10736
10737 : see if localeconv exists
10738 set localeconv d_locconv
10739 eval $inlibc
10740
10741 : see if lockf exists
10742 set lockf d_lockf
10743 eval $inlibc
10744
10745 : see if prototype for lseek is available
10746 echo " "
10747 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10748 eval $hasproto
10749
10750 : see if lstat exists
10751 set lstat d_lstat
10752 eval $inlibc
10753
10754 : see if madvise exists
10755 set madvise d_madvise
10756 eval $inlibc
10757
10758 : see if mblen exists
10759 set mblen d_mblen
10760 eval $inlibc
10761
10762 : see if mbstowcs exists
10763 set mbstowcs d_mbstowcs
10764 eval $inlibc
10765
10766 : see if mbtowc exists
10767 set mbtowc d_mbtowc
10768 eval $inlibc
10769
10770 : see if memchr exists
10771 set memchr d_memchr
10772 eval $inlibc
10773
10774 : see if memcmp exists
10775 set memcmp d_memcmp
10776 eval $inlibc
10777
10778 : see if memcpy exists
10779 set memcpy d_memcpy
10780 eval $inlibc
10781
10782 : see if memmove exists
10783 set memmove d_memmove
10784 eval $inlibc
10785
10786 : see if memset exists
10787 set memset d_memset
10788 eval $inlibc
10789
10790 : see if mkdir exists
10791 set mkdir d_mkdir
10792 eval $inlibc
10793
10794 : see if mkdtemp exists
10795 set mkdtemp d_mkdtemp
10796 eval $inlibc
10797
10798 : see if mkfifo exists
10799 set mkfifo d_mkfifo
10800 eval $inlibc
10801
10802 : see if mkstemp exists
10803 set mkstemp d_mkstemp
10804 eval $inlibc
10805
10806 : see if mkstemps exists
10807 set mkstemps d_mkstemps
10808 eval $inlibc
10809
10810 : see if mktime exists
10811 set mktime d_mktime
10812 eval $inlibc
10813
10814 : see if this is a sys/mman.h system
10815 set sys/mman.h i_sysmman
10816 eval $inhdr
10817
10818 : see if mmap exists
10819 set mmap d_mmap
10820 eval $inlibc
10821 : see what shmat returns
10822 : default to something harmless
10823 mmaptype='void *'
10824 case "$i_sysmman$d_mmap" in
10825 "$define$define")
10826         $cat >mmap.c <<'END'
10827 #include <sys/mman.h>
10828 void *mmap();
10829 END
10830         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10831                 mmaptype='void *'
10832         else
10833                 mmaptype='caddr_t'
10834         fi
10835         echo "and it returns ($mmaptype)." >&4
10836         ;;
10837 esac
10838
10839
10840
10841 : see if modfl exists
10842 set modfl d_modfl
10843 eval $inlibc
10844
10845 d_modfl_pow32_bug="$undef"
10846
10847 case "$d_longdbl$d_modfl" in
10848 $define$define)
10849         $cat <<EOM
10850 Checking to see whether your modfl() is okay for large values...
10851 EOM
10852 $cat >try.c <<EOCP
10853 #include <math.h> 
10854 #include <stdio.h>
10855 int main() {
10856     long double nv = 4294967303.15;
10857     long double v, w;
10858     v = modfl(nv, &w);         
10859 #ifdef __GLIBC__
10860     printf("glibc");
10861 #endif
10862     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10863     return 0;
10864 }
10865 EOCP
10866         case "$osname:$gccversion" in
10867         aix:)   saveccflags="$ccflags"
10868                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10869         esac
10870         set try
10871         if eval $compile; then
10872                 foo=`$run ./try`
10873                 case "$foo" in
10874                 *" 4294967303.150000 1.150000 4294967302.000000")
10875                         echo >&4 "Your modfl() is broken for large values."
10876                         d_modfl_pow32_bug="$define"
10877                         case "$foo" in
10878                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10879                         ;;
10880                         esac
10881                         ;;
10882                 *" 4294967303.150000 0.150000 4294967303.000000")
10883                         echo >&4 "Your modfl() seems okay for large values."
10884                         ;;
10885                 *)      echo >&4 "I don't understand your modfl() at all."
10886                         d_modfl="$undef"
10887                         ;;
10888                 esac
10889                 $rm -f try.* try core core.try.*
10890         else
10891                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10892                 d_modfl="$undef"
10893         fi
10894         case "$osname:$gccversion" in
10895         aix:)   ccflags="$saveccflags" ;; # restore
10896         esac
10897         ;;
10898 esac
10899
10900 : see if mprotect exists
10901 set mprotect d_mprotect
10902 eval $inlibc
10903
10904 : see if msgctl exists
10905 set msgctl d_msgctl
10906 eval $inlibc
10907
10908 : see if msgget exists
10909 set msgget d_msgget
10910 eval $inlibc
10911
10912 : see if msgsnd exists
10913 set msgsnd d_msgsnd
10914 eval $inlibc
10915
10916 : see if msgrcv exists
10917 set msgrcv d_msgrcv
10918 eval $inlibc
10919
10920 : see how much of the 'msg*(2)' library is present.
10921 h_msg=true
10922 echo " "
10923 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10924 *"$undef"*) h_msg=false;;
10925 esac
10926 case "$osname" in
10927 freebsd)
10928     case "`ipcs 2>&1`" in
10929     "SVID messages"*"not configured"*)
10930         echo "Your $osname does not have the msg*(2) configured." >&4
10931         h_msg=false
10932         val="$undef"
10933         set msgctl d_msgctl
10934         eval $setvar
10935         set msgget d_msgget
10936         eval $setvar
10937         set msgsnd d_msgsnd
10938         eval $setvar
10939         set msgrcv d_msgrcv
10940         eval $setvar
10941         ;;
10942     esac
10943     ;;
10944 esac
10945 : we could also check for sys/ipc.h ...
10946 if $h_msg && $test `./findhdr sys/msg.h`; then
10947         echo "You have the full msg*(2) library." >&4
10948         val="$define"
10949 else
10950         echo "You don't have the full msg*(2) library." >&4
10951         val="$undef"
10952 fi
10953 set d_msg
10954 eval $setvar
10955
10956
10957 echo " "
10958 echo "Checking to see if your system supports struct msghdr..." >&4
10959 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10960 eval $hasstruct
10961 case "$d_msghdr_s" in
10962 "$define")      echo "Yes, it does."   ;;
10963 *)              echo "No, it doesn't." ;;
10964 esac
10965
10966
10967 : see if msync exists
10968 set msync d_msync
10969 eval $inlibc
10970
10971 : see if munmap exists
10972 set munmap d_munmap
10973 eval $inlibc
10974
10975 : see if nice exists
10976 set nice d_nice
10977 eval $inlibc
10978
10979 : see if this is a langinfo.h system
10980 set langinfo.h i_langinfo
10981 eval $inhdr
10982
10983 : see if nl_langinfo exists
10984 set nl_langinfo d_nl_langinfo
10985 eval $inlibc
10986
10987 : check for length of character
10988 echo " "
10989 case "$charsize" in
10990 '')
10991         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10992         $cat >try.c <<'EOCP'
10993 #include <stdio.h>
10994 int main()
10995 {
10996     printf("%d\n", (int)sizeof(char));
10997     exit(0);
10998 }
10999 EOCP
11000         set try
11001         if eval $compile_ok; then
11002                 dflt=`$run ./try`
11003         else
11004                 dflt='1'
11005                 echo "(I can't seem to compile the test program.  Guessing...)"
11006         fi
11007         ;;
11008 *)
11009         dflt="$charsize"
11010         ;;
11011 esac
11012 rp="What is the size of a character (in bytes)?"
11013 . ./myread
11014 charsize="$ans"
11015 $rm -f try.c try
11016
11017 : check for volatile keyword
11018 echo " "
11019 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11020 $cat >try.c <<'EOCP'
11021 int main()
11022 {
11023         typedef struct _goo_struct goo_struct;
11024         goo_struct * volatile goo = ((goo_struct *)0);
11025         struct _goo_struct {
11026                 long long_int;
11027                 int reg_int;
11028                 char char_var;
11029         };
11030         typedef unsigned short foo_t;
11031         char *volatile foo;
11032         volatile int bar;
11033         volatile foo_t blech;
11034         foo = foo;
11035 }
11036 EOCP
11037 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11038         val="$define"
11039         echo "Yup, it does."
11040 else
11041         val="$undef"
11042         echo "Nope, it doesn't."
11043 fi
11044 set d_volatile
11045 eval $setvar
11046 $rm -f try.*
11047
11048
11049 echo " "
11050 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11051
11052 case "$use64bitint:$d_quad:$quadtype" in
11053 define:define:?*)
11054         ivtype="$quadtype"
11055         uvtype="$uquadtype"
11056         ivsize=8
11057         uvsize=8
11058         ;;
11059 *)      ivtype="long"
11060         uvtype="unsigned long"
11061         ivsize=$longsize
11062         uvsize=$longsize
11063         ;;
11064 esac
11065
11066 case "$uselongdouble:$d_longdbl" in
11067 define:define)
11068         nvtype="long double"
11069         nvsize=$longdblsize
11070         ;;
11071 *)      nvtype=double
11072         nvsize=$doublesize
11073         ;;
11074 esac
11075
11076 $echo "(IV will be "$ivtype", $ivsize bytes)"
11077 $echo "(UV will be "$uvtype", $uvsize bytes)"
11078 $echo "(NV will be "$nvtype", $nvsize bytes)"
11079
11080 $cat >try.c <<EOCP
11081 #$i_inttypes I_INTTYPES
11082 #ifdef I_INTTYPES
11083 #include <inttypes.h>
11084 #endif
11085 #include <stdio.h>
11086 int main() {
11087 #ifdef INT8
11088    int8_t i =  INT8_MAX;
11089   uint8_t u = UINT8_MAX;
11090   printf("int8_t\n");
11091 #endif
11092 #ifdef INT16
11093    int16_t i =  INT16_MAX;
11094   uint16_t i = UINT16_MAX;
11095   printf("int16_t\n");
11096 #endif
11097 #ifdef INT32
11098    int32_t i =  INT32_MAX;
11099   uint32_t u = UINT32_MAX;
11100   printf("int32_t\n");
11101 #endif
11102 }
11103 EOCP
11104
11105 case "$i8type" in
11106 '')     case "$charsize" in
11107         1)      i8type=char
11108                 u8type="unsigned char"
11109                 i8size=$charsize
11110                 u8size=$charsize
11111                 ;;
11112         esac
11113         ;;
11114 esac
11115 case "$i8type" in
11116 '')     set try -DINT8
11117         if eval $compile; then
11118                 case "`$run ./try`" in
11119                 int8_t) i8type=int8_t
11120                         u8type=uint8_t
11121                         i8size=1
11122                         u8size=1
11123                         ;;
11124                 esac
11125         fi
11126         ;;
11127 esac
11128 case "$i8type" in
11129 '')     if $test $charsize -ge 1; then
11130                 i8type=char
11131                 u8type="unsigned char"
11132                 i8size=$charsize
11133                 u8size=$charsize
11134         fi
11135         ;;
11136 esac
11137
11138 case "$i16type" in
11139 '')     case "$shortsize" in
11140         2)      i16type=short
11141                 u16type="unsigned short"
11142                 i16size=$shortsize
11143                 u16size=$shortsize
11144                 ;;
11145         esac
11146         ;;
11147 esac
11148 case "$i16type" in
11149 '')     set try -DINT16
11150         if eval $compile; then
11151                 case "`$run ./try`" in
11152                 int16_t)
11153                         i16type=int16_t
11154                         u16type=uint16_t
11155                         i16size=2
11156                         u16size=2
11157                         ;;
11158                 esac
11159         fi
11160         ;;
11161 esac
11162 case "$i16type" in
11163 '')     if $test $shortsize -ge 2; then
11164                 i16type=short
11165                 u16type="unsigned short"
11166                 i16size=$shortsize
11167                 u16size=$shortsize
11168         fi
11169         ;;
11170 esac
11171
11172 case "$i32type" in
11173 '')     case "$longsize" in
11174         4)      i32type=long
11175                 u32type="unsigned long"
11176                 i32size=$longsize
11177                 u32size=$longsize
11178                 ;;
11179         *)      case "$intsize" in
11180                 4)      i32type=int
11181                         u32type="unsigned int"
11182                         i32size=$intsize
11183                         u32size=$intsize
11184                         ;;
11185                 esac
11186                 ;;
11187         esac
11188         ;;
11189 esac
11190 case "$i32type" in
11191 '')     set try -DINT32
11192         if eval $compile; then
11193                 case "`$run ./try`" in
11194                 int32_t)
11195                         i32type=int32_t
11196                         u32type=uint32_t
11197                         i32size=4
11198                         u32size=4
11199                         ;;
11200                 esac
11201         fi
11202         ;;
11203 esac
11204 case "$i32type" in
11205 '')     if $test $intsize -ge 4; then
11206                 i32type=int
11207                 u32type="unsigned int"
11208                 i32size=$intsize
11209                 u32size=$intsize
11210         fi
11211         ;;
11212 esac
11213
11214 case "$i64type" in
11215 '')     case "$d_quad:$quadtype" in
11216         define:?*)
11217                 i64type="$quadtype"
11218                 u64type="$uquadtype"
11219                 i64size=8
11220                 u64size=8
11221                 ;;
11222         esac
11223         ;;
11224 esac
11225
11226 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11227 : volatile so that the compiler has to store it out to memory.
11228 if test X"$d_volatile" = X"$define"; then
11229         volatile=volatile
11230 fi
11231 $cat <<EOP >try.c
11232 #include <stdio.h>
11233 #include <sys/types.h>
11234 #include <signal.h>
11235 #ifdef SIGFPE
11236 $volatile int bletched = 0;
11237 $signal_t blech(s) int s; { bletched = 1; }
11238 #endif
11239 int main() {
11240     $uvtype u = 0;
11241     $nvtype d;
11242     int     n = 8 * $uvsize;
11243     int     i;
11244 #ifdef SIGFPE
11245     signal(SIGFPE, blech);
11246 #endif
11247
11248     for (i = 0; i < n; i++) {
11249       u = u << 1 | ($uvtype)1;
11250       d = ($nvtype)u;
11251       if (($uvtype)d != u)
11252         break;
11253       if (d <= 0)
11254         break;
11255       d = ($nvtype)(u - 1);
11256       if (($uvtype)d != (u - 1))
11257         break;
11258 #ifdef SIGFPE
11259       if (bletched) {
11260         break;
11261 #endif
11262       } 
11263     }
11264     printf("%d\n", ((i == n) ? -n : i));
11265     exit(0);
11266 }
11267 EOP
11268 set try
11269
11270 d_nv_preserves_uv="$undef"
11271 if eval $compile; then
11272         d_nv_preserves_uv_bits="`$run ./try`"
11273 fi
11274 case "$d_nv_preserves_uv_bits" in
11275 \-[1-9]*)       
11276         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11277         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11278         d_nv_preserves_uv="$define"
11279         ;;
11280 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11281         d_nv_preserves_uv="$undef" ;;
11282 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11283         d_nv_preserves_uv_bits="$undef" ;;
11284 esac
11285
11286 $rm -f try.* try
11287
11288
11289 : check for off64_t
11290 echo " "
11291 echo "Checking to see if you have off64_t..." >&4
11292 $cat >try.c <<EOCP
11293 #include <sys/types.h>
11294 #include <unistd.h>
11295 int main() { off64_t x = 7; }
11296 EOCP
11297 set try
11298 if eval $compile; then
11299         val="$define"
11300         echo "You have off64_t."
11301 else
11302         val="$undef"
11303         echo "You do not have off64_t."
11304         case "$lseeksize" in
11305         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11306         esac
11307 fi
11308 $rm -f try.* try
11309 set d_off64_t
11310 eval $setvar
11311
11312 : see if POSIX threads are available
11313 set pthread.h i_pthread
11314 eval $inhdr
11315
11316
11317
11318
11319 : how to create joinable pthreads
11320 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11321         echo " "
11322         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11323         $cat >try.c <<'EOCP'
11324 #include <pthread.h>
11325 int main() {
11326     int detachstate = JOINABLE;
11327 }
11328 EOCP
11329         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11330         if eval $compile; then
11331                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11332                 val="$undef" # Yes, undef.
11333                 set d_old_pthread_create_joinable
11334                 eval $setvar
11335                 val=""
11336                 set old_pthread_create_joinable
11337                 eval $setvar
11338         else
11339                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11340                 if eval $compile; then
11341                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11342                         val="$define"
11343                         set d_old_pthread_create_joinable
11344                         eval $setvar
11345                         val=PTHREAD_CREATE_UNDETACHED
11346                         set old_pthread_create_joinable
11347                         eval $setvar
11348                 else            
11349                         set try -DJOINABLE=__UNDETACHED
11350                         if eval $compile; then
11351                                 echo "You seem to use __UNDETACHED." >&4
11352                                 val="$define"
11353                                 set d_old_pthread_create_joinable
11354                                 eval $setvar
11355                                 val=__UNDETACHED
11356                                 set old_pthread_create_joinable
11357                                 eval $setvar
11358                         else
11359                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11360                                 val="$define"
11361                                 set d_old_pthread_create_joinable
11362                                 eval $setvar
11363                                 val=0
11364                                 set old_pthread_create_joinable
11365                                 eval $setvar
11366                         fi
11367                 fi
11368         fi
11369         $rm -f try try.*
11370 else
11371     d_old_pthread_create_joinable="$undef"
11372     old_pthread_create_joinable=""
11373 fi
11374
11375 : see if pause exists
11376 set pause d_pause
11377 eval $inlibc
11378
11379 : see if pipe exists
11380 set pipe d_pipe
11381 eval $inlibc
11382
11383 : see if poll exists
11384 set poll d_poll
11385 eval $inlibc
11386
11387 : see if pthread_atfork exists
11388 set pthread_atfork d_pthread_atfork
11389 eval $inlibc
11390
11391
11392 : see whether the various POSIXish _yields exist
11393 $cat >try.c <<EOP
11394 #include <pthread.h>
11395 #include <stdio.h>
11396 int main() {
11397 #ifdef SCHED_YIELD
11398         sched_yield();
11399 #else
11400 #ifdef PTHREAD_YIELD
11401         pthread_yield();
11402 #else
11403 #ifdef PTHREAD_YIELD_NULL
11404         pthread_yield(NULL);
11405 #endif
11406 #endif
11407 #endif
11408 }
11409 EOP
11410 : see if sched_yield exists
11411 set try -DSCHED_YIELD
11412 if eval $compile; then
11413     val="$define"
11414     sched_yield='sched_yield()'
11415 else
11416     val="$undef"
11417 fi
11418 case "$usethreads" in
11419 $define)
11420         case "$val" in
11421         $define) echo 'sched_yield() found.' >&4        ;;
11422         *)       echo 'sched_yield() NOT found.' >&4    ;;
11423         esac
11424 esac
11425 set d_sched_yield
11426 eval $setvar
11427
11428 : see if pthread_yield exists
11429 set try -DPTHREAD_YIELD
11430 if eval $compile; then
11431     val="$define"
11432     case "$sched_yield" in
11433     '') sched_yield='pthread_yield()' ;;
11434     esac
11435 else
11436     set try -DPTHREAD_YIELD_NULL
11437     if eval $compile; then
11438         val="$define"
11439         case "$sched_yield" in
11440         '') sched_yield='pthread_yield(NULL)' ;;
11441         esac
11442     else
11443         val="$undef"
11444     fi
11445 fi
11446 case "$usethreads" in
11447 $define)
11448         case "$val" in
11449         $define) echo 'pthread_yield() found.' >&4      ;;
11450         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11451         esac
11452         ;;
11453 esac
11454 set d_pthread_yield
11455 eval $setvar
11456
11457 case "$sched_yield" in
11458 '') sched_yield=undef ;;
11459 esac
11460
11461 $rm -f try try.*
11462
11463 : see if this is a pwd.h system
11464 set pwd.h i_pwd
11465 eval $inhdr
11466
11467 case "$i_pwd" in
11468 $define)
11469         xxx=`./findhdr pwd.h`
11470         $cppstdin $cppflags $cppminus < $xxx >$$.h
11471
11472         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11473                 val="$define"
11474         else
11475                 val="$undef"
11476         fi
11477         set d_pwquota
11478         eval $setvar
11479
11480         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11481                 val="$define"
11482         else
11483                 val="$undef"
11484         fi
11485         set d_pwage
11486         eval $setvar
11487
11488         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11489                 val="$define"
11490         else
11491                 val="$undef"
11492         fi
11493         set d_pwchange
11494         eval $setvar
11495
11496         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11497                 val="$define"
11498         else
11499                 val="$undef"
11500         fi
11501         set d_pwclass
11502         eval $setvar
11503
11504         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11505                 val="$define"
11506         else
11507                 val="$undef"
11508         fi
11509         set d_pwexpire
11510         eval $setvar
11511
11512         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11513                 val="$define"
11514         else
11515                 val="$undef"
11516         fi
11517         set d_pwcomment
11518         eval $setvar
11519
11520         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11521                 val="$define"
11522         else
11523                 val="$undef"
11524         fi
11525         set d_pwgecos
11526         eval $setvar
11527
11528         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11529                 val="$define"
11530         else
11531                 val="$undef"
11532         fi
11533         set d_pwpasswd
11534         eval $setvar
11535
11536         $rm -f $$.h
11537         ;;
11538 *)
11539         val="$undef"; 
11540         set d_pwquota; eval $setvar
11541         set d_pwage; eval $setvar
11542         set d_pwchange; eval $setvar
11543         set d_pwclass; eval $setvar
11544         set d_pwexpire; eval $setvar
11545         set d_pwcomment; eval $setvar
11546         set d_pwgecos; eval $setvar
11547         set d_pwpasswd; eval $setvar
11548         ;;
11549 esac
11550
11551 : see if readdir and friends exist
11552 set readdir d_readdir
11553 eval $inlibc
11554 set seekdir d_seekdir
11555 eval $inlibc
11556 set telldir d_telldir
11557 eval $inlibc
11558 set rewinddir d_rewinddir
11559 eval $inlibc
11560
11561 : see if readlink exists
11562 set readlink d_readlink
11563 eval $inlibc
11564
11565 : see if readv exists
11566 set readv d_readv
11567 eval $inlibc
11568
11569 : see if recvmsg exists
11570 set recvmsg d_recvmsg
11571 eval $inlibc
11572
11573 : see if rename exists
11574 set rename d_rename
11575 eval $inlibc
11576
11577 : see if rmdir exists
11578 set rmdir d_rmdir
11579 eval $inlibc
11580
11581 : see if memory.h is available.
11582 val=''
11583 set memory.h val
11584 eval $inhdr
11585
11586 : See if it conflicts with string.h
11587 case "$val" in
11588 $define)
11589         case "$strings" in
11590         '') ;;
11591         *)
11592                 $cppstdin $cppflags $cppminus < $strings > mem.h
11593                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11594                         echo " "
11595                         echo "We won't be including <memory.h>."
11596                         val="$undef"
11597                 fi
11598                 $rm -f mem.h
11599                 ;;
11600         esac
11601 esac
11602 set i_memory
11603 eval $setvar
11604
11605 : can bcopy handle overlapping blocks?
11606 echo " "
11607 val="$undef"
11608 case "$d_memmove" in
11609 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11610 *)      case "$d_bcopy" in
11611         "$define")
11612                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11613                 $cat >try.c <<EOCP
11614 #$i_memory I_MEMORY
11615 #$i_stdlib I_STDLIB
11616 #$i_string I_STRING
11617 #$i_unistd I_UNISTD
11618 EOCP
11619         $cat >>try.c <<'EOCP'
11620 #include <stdio.h>
11621 #ifdef I_MEMORY
11622 #  include <memory.h>
11623 #endif
11624 #ifdef I_STDLIB
11625 #  include <stdlib.h>
11626 #endif
11627 #ifdef I_STRING
11628 #  include <string.h>
11629 #else
11630 #  include <strings.h>
11631 #endif
11632 #ifdef I_UNISTD
11633 #  include <unistd.h>  /* Needed for NetBSD */
11634 #endif
11635 int main()
11636 {
11637 char buf[128], abc[128];
11638 char *b;
11639 int len;
11640 int off;
11641 int align;
11642
11643 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11644    try to store the string in read-only memory. */
11645 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11646
11647 for (align = 7; align >= 0; align--) {
11648         for (len = 36; len; len--) {
11649                 b = buf+align;
11650                 bcopy(abc, b, len);
11651                 for (off = 1; off <= len; off++) {
11652                         bcopy(b, b+off, len);
11653                         bcopy(b+off, b, len);
11654                         if (bcmp(b, abc, len))
11655                                 exit(1);
11656                 }
11657         }
11658 }
11659 exit(0);
11660 }
11661 EOCP
11662                 set try
11663                 if eval $compile_ok; then
11664                         if ./try 2>/dev/null; then
11665                                 echo "Yes, it can."
11666                                 val="$define"
11667                         else
11668                                 echo "It can't, sorry."
11669                         fi
11670                 else
11671                         echo "(I can't compile the test program, so we'll assume not...)"
11672                 fi
11673                 ;;
11674         esac
11675         $rm -f try.* try core
11676         ;;
11677 esac
11678 set d_safebcpy
11679 eval $setvar
11680
11681 : can memcpy handle overlapping blocks?
11682 echo " "
11683 val="$undef"
11684 case "$d_memmove" in
11685 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11686 *)      case "$d_memcpy" in
11687         "$define")
11688                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11689                 $cat >try.c <<EOCP
11690 #$i_memory I_MEMORY
11691 #$i_stdlib I_STDLIB
11692 #$i_string I_STRING
11693 #$i_unistd I_UNISTD
11694 EOCP
11695         $cat >>try.c <<'EOCP'
11696 #include <stdio.h>
11697 #ifdef I_MEMORY
11698 #  include <memory.h>
11699 #endif
11700 #ifdef I_STDLIB
11701 #  include <stdlib.h>
11702 #endif
11703 #ifdef I_STRING
11704 #  include <string.h>
11705 #else
11706 #  include <strings.h>
11707 #endif
11708 #ifdef I_UNISTD
11709 #  include <unistd.h>  /* Needed for NetBSD */
11710 #endif
11711 int main()
11712 {
11713 char buf[128], abc[128];
11714 char *b;
11715 int len;
11716 int off;
11717 int align;
11718
11719 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11720    try to store the string in read-only memory. */
11721 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11722
11723 for (align = 7; align >= 0; align--) {
11724         for (len = 36; len; len--) {
11725                 b = buf+align;
11726                 memcpy(b, abc, len);
11727                 for (off = 1; off <= len; off++) {
11728                         memcpy(b+off, b, len);
11729                         memcpy(b, b+off, len);
11730                         if (memcmp(b, abc, len))
11731                                 exit(1);
11732                 }
11733         }
11734 }
11735 exit(0);
11736 }
11737 EOCP
11738                 set try
11739                 if eval $compile_ok; then
11740                         if ./try 2>/dev/null; then
11741                                 echo "Yes, it can."
11742                                 val="$define"
11743                         else
11744                                 echo "It can't, sorry."
11745                         fi
11746                 else
11747                         echo "(I can't compile the test program, so we'll assume not...)"
11748                 fi
11749                 ;;
11750         esac
11751         $rm -f try.* try core
11752         ;;
11753 esac
11754 set d_safemcpy
11755 eval $setvar
11756
11757 : can memcmp be trusted to compare relative magnitude?
11758 val="$undef"
11759 case "$d_memcmp" in
11760 "$define")
11761         echo " "
11762         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11763         $cat >try.c <<EOCP
11764 #$i_memory I_MEMORY
11765 #$i_stdlib I_STDLIB
11766 #$i_string I_STRING
11767 #$i_unistd I_UNISTD
11768 EOCP
11769         $cat >>try.c <<'EOCP'
11770 #include <stdio.h>
11771 #ifdef I_MEMORY
11772 #  include <memory.h>
11773 #endif
11774 #ifdef I_STDLIB
11775 #  include <stdlib.h>
11776 #endif
11777 #ifdef I_STRING
11778 #  include <string.h>
11779 #else
11780 #  include <strings.h>
11781 #endif
11782 #ifdef I_UNISTD
11783 #  include <unistd.h>  /* Needed for NetBSD */
11784 #endif
11785 int main()
11786 {
11787 char a = -1;
11788 char b = 0;
11789 if ((a < b) && memcmp(&a, &b, 1) < 0)
11790         exit(1);
11791 exit(0);
11792 }
11793 EOCP
11794         set try
11795         if eval $compile_ok; then
11796                 if $run ./try 2>/dev/null; then
11797                         echo "Yes, it can."
11798                         val="$define"
11799                 else
11800                         echo "No, it can't (it uses signed chars)."
11801                 fi
11802         else
11803                 echo "(I can't compile the test program, so we'll assume not...)"
11804         fi
11805         ;;
11806 esac
11807 $rm -f try.* try core
11808 set d_sanemcmp
11809 eval $setvar
11810
11811 : see if prototype for sbrk is available
11812 echo " "
11813 set d_sbrkproto sbrk $i_unistd unistd.h
11814 eval $hasproto
11815
11816 : see if select exists
11817 set select d_select
11818 eval $inlibc
11819
11820 : see if semctl exists
11821 set semctl d_semctl
11822 eval $inlibc
11823
11824 : see if semget exists
11825 set semget d_semget
11826 eval $inlibc
11827
11828 : see if semop exists
11829 set semop d_semop
11830 eval $inlibc
11831
11832 : see how much of the 'sem*(2)' library is present.
11833 h_sem=true
11834 echo " "
11835 case "$d_semctl$d_semget$d_semop" in
11836 *"$undef"*) h_sem=false;;
11837 esac
11838 case "$osname" in
11839 freebsd)
11840     case "`ipcs 2>&1`" in
11841     "SVID messages"*"not configured"*)
11842         echo "Your $osname does not have the sem*(2) configured." >&4
11843         h_sem=false
11844         val="$undef"
11845         set semctl d_semctl
11846         eval $setvar
11847         set semget d_semget
11848         eval $setvar
11849         set semop d_semop
11850         eval $setvar
11851         ;;
11852     esac
11853     ;;
11854 esac
11855 : we could also check for sys/ipc.h ...
11856 if $h_sem && $test `./findhdr sys/sem.h`; then
11857         echo "You have the full sem*(2) library." >&4
11858         val="$define"
11859 else
11860         echo "You don't have the full sem*(2) library." >&4
11861         val="$undef"
11862 fi
11863 set d_sem
11864 eval $setvar
11865
11866 : see whether sys/sem.h defines union semun
11867 echo " "
11868 $cat > try.c <<'END'
11869 #include <sys/types.h>
11870 #include <sys/ipc.h>
11871 #include <sys/sem.h>
11872 int main () { union semun semun; semun.buf = 0; }
11873 END
11874 set try
11875 if eval $compile; then
11876     echo "You have union semun in <sys/sem.h>." >&4
11877     val="$define"
11878 else
11879     echo "You do not have union semun in <sys/sem.h>." >&4
11880     val="$undef"
11881 fi
11882 $rm -f try try.c try.h
11883 set d_union_semun
11884 eval $setvar
11885
11886 : see how to do semctl IPC_STAT
11887 case "$d_sem" in
11888 $define)
11889     : see whether semctl IPC_STAT can use union semun
11890     echo " "
11891     $cat > try.h <<END
11892 #ifndef S_IRUSR
11893 #   ifdef S_IREAD
11894 #       define S_IRUSR S_IREAD
11895 #       define S_IWUSR S_IWRITE
11896 #       define S_IXUSR S_IEXEC
11897 #   else
11898 #       define S_IRUSR 0400
11899 #       define S_IWUSR 0200
11900 #       define S_IXUSR 0100
11901 #   endif
11902 #   define S_IRGRP (S_IRUSR>>3)
11903 #   define S_IWGRP (S_IWUSR>>3)
11904 #   define S_IXGRP (S_IXUSR>>3)
11905 #   define S_IROTH (S_IRUSR>>6)
11906 #   define S_IWOTH (S_IWUSR>>6)
11907 #   define S_IXOTH (S_IXUSR>>6)
11908 #endif
11909 #ifndef S_IRWXU
11910 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11911 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11912 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11913 #endif
11914 END
11915
11916     $cat > try.c <<END
11917 #include <sys/types.h>
11918 #include <sys/ipc.h>
11919 #include <sys/sem.h>
11920 #include <sys/stat.h>
11921 #include <stdio.h>
11922 #include <errno.h>
11923 #include "try.h"
11924 #ifndef errno
11925 extern int errno;
11926 #endif
11927 #$d_union_semun HAS_UNION_SEMUN
11928 int main() {
11929     union semun
11930 #ifndef HAS_UNION_SEMUN
11931     {
11932         int val;
11933         struct semid_ds *buf;
11934         unsigned short *array;
11935     }
11936 #endif
11937     arg;
11938     int sem, st;
11939
11940 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11941     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11942     if (sem > -1) {
11943         struct semid_ds argbuf;
11944         arg.buf = &argbuf;
11945 #       ifdef IPC_STAT
11946         st = semctl(sem, 0, IPC_STAT, arg);
11947         if (st == 0)
11948             printf("semun\n");
11949         else
11950 #       endif /* IPC_STAT */
11951             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11952 #       ifdef IPC_RMID
11953         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11954 #       endif /* IPC_RMID */
11955             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11956     } else
11957 #endif /* IPC_PRIVATE && ... */
11958         printf("semget failed: errno = %d\n", errno);
11959   return 0;
11960 }
11961 END
11962     val="$undef"
11963     set try
11964     if eval $compile; then
11965         xxx=`$run ./try`
11966         case "$xxx" in
11967         semun) val="$define" ;;
11968         esac
11969     fi
11970     $rm -f try try.c
11971     set d_semctl_semun
11972     eval $setvar
11973     case "$d_semctl_semun" in
11974     $define)
11975         echo "You can use union semun for semctl IPC_STAT." >&4
11976         also='also'
11977         ;;
11978     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11979         also=''
11980         ;;
11981     esac
11982
11983     : see whether semctl IPC_STAT can use struct semid_ds pointer
11984     $cat > try.c <<'END'
11985 #include <sys/types.h>
11986 #include <sys/ipc.h>
11987 #include <sys/sem.h>
11988 #include <sys/stat.h>
11989 #include "try.h"
11990 #include <stdio.h>
11991 #include <errno.h>
11992 #ifndef errno
11993 extern int errno;
11994 #endif
11995 int main() {
11996     struct semid_ds arg;
11997     int sem, st;
11998
11999 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
12000     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
12001     if (sem > -1) {
12002 #       ifdef IPC_STAT
12003         st = semctl(sem, 0, IPC_STAT, &arg);
12004         if (st == 0)
12005             printf("semid_ds\n");
12006         else
12007 #       endif /* IPC_STAT */
12008             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12009 #       ifdef IPC_RMID
12010         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12011 #       endif /* IPC_RMID */
12012             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12013     } else
12014 #endif /* IPC_PRIVATE && ... */
12015         printf("semget failed: errno = %d\n", errno);
12016
12017     return 0;
12018 }
12019 END
12020     val="$undef"
12021     set try
12022     if eval $compile; then
12023         xxx=`$run ./try`
12024         case "$xxx" in
12025         semid_ds) val="$define" ;;
12026         esac
12027     fi
12028     $rm -f try try.c
12029     set d_semctl_semid_ds
12030     eval $setvar
12031     case "$d_semctl_semid_ds" in
12032     $define)
12033         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12034         ;;
12035     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12036         ;;
12037     esac
12038     $rm -f try.h
12039     ;;
12040 *)  val="$undef"
12041
12042     # We do not have the full sem*(2) library, so assume we can not
12043     # use either.
12044
12045     set d_semctl_semun
12046     eval $setvar
12047
12048     set d_semctl_semid_ds
12049     eval $setvar
12050     ;;
12051 esac
12052
12053 : see if sendmsg exists
12054 set sendmsg d_sendmsg
12055 eval $inlibc
12056
12057 : see if setegid exists
12058 set setegid d_setegid
12059 eval $inlibc
12060
12061 : see if seteuid exists
12062 set seteuid d_seteuid
12063 eval $inlibc
12064
12065 : see if setgrent exists
12066 set setgrent d_setgrent
12067 eval $inlibc
12068
12069 : see if sethostent exists
12070 set sethostent d_sethent
12071 eval $inlibc
12072
12073 : see if setitimer exists
12074 set setitimer d_setitimer
12075 eval $inlibc
12076
12077 : see if setlinebuf exists
12078 set setlinebuf d_setlinebuf
12079 eval $inlibc
12080
12081 : see if setlocale exists
12082 set setlocale d_setlocale
12083 eval $inlibc
12084
12085 : see if setnetent exists
12086 set setnetent d_setnent
12087 eval $inlibc
12088
12089 : see if setprotoent exists
12090 set setprotoent d_setpent
12091 eval $inlibc
12092
12093 : see if setpgid exists
12094 set setpgid d_setpgid
12095 eval $inlibc
12096
12097 : see if setpgrp2 exists
12098 set setpgrp2 d_setpgrp2
12099 eval $inlibc
12100
12101 : see if setpriority exists
12102 set setpriority d_setprior
12103 eval $inlibc
12104
12105 : see if setproctitle exists
12106 set setproctitle d_setproctitle
12107 eval $inlibc
12108
12109 : see if setpwent exists
12110 set setpwent d_setpwent
12111 eval $inlibc
12112
12113 : see if setregid exists
12114 set setregid d_setregid
12115 eval $inlibc
12116 set setresgid d_setresgid
12117 eval $inlibc
12118
12119 : see if setreuid exists
12120 set setreuid d_setreuid
12121 eval $inlibc
12122 set setresuid d_setresuid
12123 eval $inlibc
12124
12125 : see if setrgid exists
12126 set setrgid d_setrgid
12127 eval $inlibc
12128
12129 : see if setruid exists
12130 set setruid d_setruid
12131 eval $inlibc
12132
12133 : see if setservent exists
12134 set setservent d_setsent
12135 eval $inlibc
12136
12137 : see if setsid exists
12138 set setsid d_setsid
12139 eval $inlibc
12140
12141 : see if setvbuf exists
12142 set setvbuf d_setvbuf
12143 eval $inlibc
12144
12145 : see if sfio.h is available
12146 set sfio.h i_sfio
12147 eval $inhdr
12148
12149
12150 : see if sfio library is available
12151 case "$i_sfio" in
12152 $define)
12153         val=''
12154         set sfreserve val
12155         eval $inlibc
12156         ;;
12157 *)
12158         val="$undef"
12159         ;;
12160 esac
12161 : Ok, but do we want to use it.
12162 case "$val" in
12163 $define)
12164         case "$usesfio" in
12165         true|$define|[yY]*) dflt='y';;
12166         *) dflt='n';;
12167         esac
12168         echo "$package can use the sfio library, but it is experimental."
12169         case "$useperlio" in
12170         "$undef")
12171             echo "For sfio also the PerlIO abstraction layer is needed."
12172             echo "Earlier you said you wouldn't want that."
12173             ;;
12174         esac
12175         rp="You seem to have sfio available, do you want to try using it?"
12176         . ./myread
12177         case "$ans" in
12178         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12179                 useperlio="$define"
12180                 val="$define"
12181                 ;;
12182         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12183                 val="$undef"
12184                 ;;
12185         esac
12186         ;;
12187 *)      case "$usesfio" in
12188         true|$define|[yY]*)
12189                 echo "Sorry, cannot find sfio on this machine." >&4
12190                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12191                 val="$undef"
12192                 ;;
12193         esac
12194         ;;
12195 esac
12196 set d_sfio
12197 eval $setvar
12198 case "$d_sfio" in
12199 $define) usesfio='true';;
12200 *) usesfio='false';;
12201 esac
12202 case "$d_sfio" in
12203 $define) ;;
12204 *)      : Remove sfio from list of libraries to use
12205         case "$libs" in
12206         *-lsfio*)
12207                 echo "Removing unneeded -lsfio from library list" >&4
12208                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12209                 shift
12210                 libs="$*"
12211                 echo "libs = $libs" >&4
12212                 ;;
12213         esac
12214 ;;
12215 esac
12216
12217
12218 : see if shmctl exists
12219 set shmctl d_shmctl
12220 eval $inlibc
12221
12222 : see if shmget exists
12223 set shmget d_shmget
12224 eval $inlibc
12225
12226 : see if shmat exists
12227 set shmat d_shmat
12228 eval $inlibc
12229 : see what shmat returns
12230 case "$d_shmat" in
12231 "$define")
12232         $cat >shmat.c <<'END'
12233 #include <sys/shm.h>
12234 void *shmat();
12235 END
12236         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12237                 shmattype='void *'
12238         else
12239                 shmattype='char *'
12240         fi
12241         echo "and it returns ($shmattype)." >&4
12242         : see if a prototype for shmat is available
12243         xxx=`./findhdr sys/shm.h`
12244         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12245         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12246                 val="$define"
12247         else
12248                 val="$undef"
12249         fi
12250         $rm -f shmat.[co]
12251         ;;
12252 *)
12253         val="$undef"
12254         ;;
12255 esac
12256 set d_shmatprototype
12257 eval $setvar
12258
12259 : see if shmdt exists
12260 set shmdt d_shmdt
12261 eval $inlibc
12262
12263 : see how much of the 'shm*(2)' library is present.
12264 h_shm=true
12265 echo " "
12266 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12267 *"$undef"*) h_shm=false;;
12268 esac
12269 case "$osname" in
12270 freebsd)
12271     case "`ipcs 2>&1`" in
12272     "SVID shared memory"*"not configured"*)
12273         echo "Your $osname does not have the shm*(2) configured." >&4
12274         h_shm=false
12275         val="$undef"
12276         set shmctl d_shmctl
12277         evat $setvar
12278         set shmget d_shmget
12279         evat $setvar
12280         set shmat d_shmat
12281         evat $setvar
12282         set shmdt d_shmdt
12283         evat $setvar
12284         ;;
12285     esac
12286     ;;
12287 esac
12288 : we could also check for sys/ipc.h ...
12289 if $h_shm && $test `./findhdr sys/shm.h`; then
12290         echo "You have the full shm*(2) library." >&4
12291         val="$define"
12292 else
12293         echo "You don't have the full shm*(2) library." >&4
12294         val="$undef"
12295 fi
12296 set d_shm
12297 eval $setvar
12298
12299 echo " "
12300 : see if we have sigaction
12301 if set sigaction val -f d_sigaction; eval $csym; $val; then
12302         echo 'sigaction() found.' >&4
12303         $cat > try.c <<'EOP'
12304 #include <stdio.h>
12305 #include <sys/types.h>
12306 #include <signal.h>
12307 int main()
12308 {
12309     struct sigaction act, oact;
12310     act.sa_flags = 0;
12311     oact.sa_handler = 0;
12312     /* so that act and oact are used */
12313     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12314 }
12315 EOP
12316         set try
12317         if eval $compile_ok; then
12318                 val="$define"
12319         else
12320                 echo "But you don't seem to have a useable struct sigaction." >&4
12321                 val="$undef"
12322         fi
12323 else
12324         echo 'sigaction NOT found.' >&4
12325         val="$undef"
12326 fi
12327 set d_sigaction; eval $setvar
12328 $rm -f try try$_o try.c
12329
12330 : see if sigprocmask exists
12331 set sigprocmask d_sigprocmask
12332 eval $inlibc
12333
12334 : see if sigsetjmp exists
12335 echo " "
12336 case "$d_sigsetjmp" in
12337 '')
12338         $cat >try.c <<'EOP'
12339 #include <setjmp.h>
12340 sigjmp_buf env;
12341 int set = 1;
12342 int main()
12343 {
12344         if (sigsetjmp(env,1))
12345                 exit(set);
12346         set = 0;
12347         siglongjmp(env, 1);
12348         exit(1);
12349 }
12350 EOP
12351         set try
12352         if eval $compile; then
12353                 if $run ./try >/dev/null 2>&1; then
12354                         echo "POSIX sigsetjmp found." >&4
12355                         val="$define"
12356                 else
12357                         $cat >&4 <<EOM
12358 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12359 I'll ignore them.
12360 EOM
12361                         val="$undef"
12362                 fi
12363         else
12364                 echo "sigsetjmp not found." >&4
12365                 val="$undef"
12366         fi
12367         ;;
12368 *) val="$d_sigsetjmp"
12369         case "$d_sigsetjmp" in
12370         $define) echo "POSIX sigsetjmp found." >&4;;
12371         $undef) echo "sigsetjmp not found." >&4;;
12372         esac
12373         ;;
12374 esac
12375 set d_sigsetjmp
12376 eval $setvar
12377 $rm -f try.c try
12378
12379 : see if sockatmark exists
12380 set sockatmark d_sockatmark
12381 eval $inlibc
12382
12383 : see if prototype for sockatmark is available
12384 echo " "
12385 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12386 eval $hasproto
12387
12388 : see if socks5_init exists
12389 set socks5_init d_socks5_init
12390 eval $inlibc
12391
12392 : see if prototype for setresgid is available
12393 echo " "
12394 set d_sresgproto setresgid $i_unistd unistd.h
12395 eval $hasproto
12396
12397 : see if prototype for setresuid is available
12398 echo " "
12399 set d_sresuproto setresuid $i_unistd unistd.h
12400 eval $hasproto
12401
12402 : see if sys/stat.h is available
12403 set sys/stat.h i_sysstat
12404 eval $inhdr
12405
12406
12407 : see if stat knows about block sizes
12408 echo " "
12409 echo "Checking to see if your struct stat has st_blocks field..." >&4
12410 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12411 eval $hasfield
12412
12413
12414 : see if this is a sys/vfs.h system
12415 set sys/vfs.h i_sysvfs
12416 eval $inhdr
12417
12418
12419 : see if this is a sys/statfs.h system
12420 set sys/statfs.h i_sysstatfs
12421 eval $inhdr
12422
12423
12424 echo " "
12425 echo "Checking to see if your system supports struct statfs..." >&4
12426 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
12427 eval $hasstruct
12428 case "$d_statfs_s" in
12429 "$define")      echo "Yes, it does."   ;;
12430 *)              echo "No, it doesn't." ;;
12431 esac
12432
12433
12434
12435 : see if struct statfs knows about f_flags
12436 case "$d_statfs_s" in
12437 define) 
12438         echo " "
12439         echo "Checking to see if your struct statfs has f_flags field..." >&4
12440         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
12441         eval $hasfield
12442         ;;
12443 *)      val="$undef"
12444         set d_statfs_f_flags
12445         eval $setvar
12446         ;;
12447 esac
12448 case "$d_statfs_f_flags" in
12449 "$define")      echo "Yes, it does."   ;;
12450 *)              echo "No, it doesn't." ;;
12451 esac
12452
12453 : see if _ptr and _cnt from stdio act std
12454 echo " "
12455
12456 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12457         echo "(Looks like you have stdio.h from BSD.)"
12458         case "$stdio_ptr" in
12459         '') stdio_ptr='((fp)->_p)'
12460                 ptr_lval=$define
12461                 ;;
12462         *)      ptr_lval=$d_stdio_ptr_lval;;
12463         esac
12464         case "$stdio_cnt" in
12465         '') stdio_cnt='((fp)->_r)'
12466                 cnt_lval=$define
12467                 ;;
12468         *)      cnt_lval=$d_stdio_cnt_lval;;
12469         esac
12470         case "$stdio_base" in
12471         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12472         esac
12473         case "$stdio_bufsiz" in
12474         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12475         esac
12476 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12477         echo "(Looks like you have stdio.h from Linux.)"
12478         case "$stdio_ptr" in
12479         '') stdio_ptr='((fp)->_IO_read_ptr)'
12480                 ptr_lval=$define
12481                 ;;
12482         *)      ptr_lval=$d_stdio_ptr_lval;;
12483         esac
12484         case "$stdio_cnt" in
12485         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12486                 cnt_lval=$undef
12487                 ;;
12488         *)      cnt_lval=$d_stdio_cnt_lval;;
12489         esac
12490         case "$stdio_base" in
12491         '') stdio_base='((fp)->_IO_read_base)';;
12492         esac
12493         case "$stdio_bufsiz" in
12494         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12495         esac
12496 else
12497         case "$stdio_ptr" in
12498         '') stdio_ptr='((fp)->_ptr)'
12499                 ptr_lval=$define
12500                 ;;
12501         *)      ptr_lval=$d_stdio_ptr_lval;;
12502         esac
12503         case "$stdio_cnt" in
12504         '') stdio_cnt='((fp)->_cnt)'
12505                 cnt_lval=$define
12506                 ;;
12507         *)      cnt_lval=$d_stdio_cnt_lval;;
12508         esac
12509         case "$stdio_base" in
12510         '') stdio_base='((fp)->_base)';;
12511         esac
12512         case "$stdio_bufsiz" in
12513         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12514         esac
12515 fi
12516
12517 : test whether _ptr and _cnt really work
12518 echo "Checking how std your stdio is..." >&4
12519 $cat >try.c <<EOP
12520 #include <stdio.h>
12521 #define FILE_ptr(fp)    $stdio_ptr
12522 #define FILE_cnt(fp)    $stdio_cnt
12523 int main() {
12524         FILE *fp = fopen("try.c", "r");
12525         char c = getc(fp);
12526         if (
12527                 18 <= FILE_cnt(fp) &&
12528                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12529         )
12530                 exit(0);
12531         exit(1);
12532 }
12533 EOP
12534 val="$undef"
12535 set try
12536 if eval $compile && $to try.c; then
12537         if $run ./try; then
12538                 echo "Your stdio acts pretty std."
12539                 val="$define"
12540         else
12541                 echo "Your stdio isn't very std."
12542         fi
12543 else
12544         echo "Your stdio doesn't appear very std."
12545 fi
12546 $rm -f try.c try
12547 set d_stdstdio
12548 eval $setvar
12549
12550 : Can _ptr be used as an lvalue?
12551 case "$d_stdstdio$ptr_lval" in
12552 $define$define) val=$define ;;
12553 *) val=$undef ;;
12554 esac
12555 set d_stdio_ptr_lval
12556 eval $setvar
12557
12558 : Can _cnt be used as an lvalue?
12559 case "$d_stdstdio$cnt_lval" in
12560 $define$define) val=$define ;;
12561 *) val=$undef ;;
12562 esac
12563 set d_stdio_cnt_lval
12564 eval $setvar
12565
12566
12567 : test whether setting _ptr sets _cnt as a side effect
12568 d_stdio_ptr_lval_sets_cnt="$undef"
12569 d_stdio_ptr_lval_nochange_cnt="$undef"
12570 case "$d_stdio_ptr_lval$d_stdstdio" in
12571 $define$define)
12572         echo "Checking to see what happens if we set the stdio ptr..." >&4
12573 $cat >try.c <<EOP
12574 #include <stdio.h>
12575 /* Can we scream? */
12576 /* Eat dust sed :-) */
12577 /* In the buffer space, no one can hear you scream. */
12578 #define FILE_ptr(fp)    $stdio_ptr
12579 #define FILE_cnt(fp)    $stdio_cnt
12580 #include <sys/types.h>
12581 int main() {
12582         FILE *fp = fopen("try.c", "r");
12583         int c;
12584         char *ptr;
12585         size_t cnt;
12586         if (!fp) {
12587             puts("Fail even to read");
12588             exit(1);
12589         }
12590         c = getc(fp); /* Read away the first # */
12591         if (c == EOF) {
12592             puts("Fail even to read");
12593             exit(1);
12594         }
12595         if (!(
12596                 18 <= FILE_cnt(fp) &&
12597                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12598         )) {
12599                 puts("Fail even to read");
12600                 exit (1);
12601         }
12602         ptr = (char*) FILE_ptr(fp);
12603         cnt = (size_t)FILE_cnt(fp);
12604
12605         FILE_ptr(fp) += 42;
12606
12607         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12608                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12609                 exit (1);
12610         }
12611         if (FILE_cnt(fp) <= 20) {
12612                 printf ("Fail (<20 chars to test)");
12613                 exit (1);
12614         }
12615         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12616                 puts("Fail compare");
12617                 exit (1);
12618         }
12619         if (cnt == FILE_cnt(fp)) {
12620                 puts("Pass_unchanged");
12621                 exit (0);
12622         }       
12623         if (FILE_cnt(fp) == (cnt - 42)) {
12624                 puts("Pass_changed");
12625                 exit (0);
12626         }
12627         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12628         return 1;
12629
12630 }
12631 EOP
12632         set try
12633         if eval $compile && $to try.c; then
12634                 case `$run ./try` in
12635                 Pass_changed)
12636                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12637                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12638                 Pass_unchanged)
12639                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12640                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12641                 Fail*)
12642                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12643                 *)
12644                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12645         esac
12646         else
12647                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12648         fi
12649         $rm -f try.c try
12650         ;;
12651 esac
12652
12653 : see if _base is also standard
12654 val="$undef"
12655 case "$d_stdstdio" in
12656 $define)
12657         $cat >try.c <<EOP
12658 #include <stdio.h>
12659 #define FILE_base(fp)   $stdio_base
12660 #define FILE_bufsiz(fp) $stdio_bufsiz
12661 int main() {
12662         FILE *fp = fopen("try.c", "r");
12663         char c = getc(fp);
12664         if (
12665                 19 <= FILE_bufsiz(fp) &&
12666                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12667         )
12668                 exit(0);
12669         exit(1);
12670 }
12671 EOP
12672         set try
12673         if eval $compile && $to try.c; then
12674                 if $run ./try; then
12675                         echo "And its _base field acts std."
12676                         val="$define"
12677                 else
12678                         echo "But its _base field isn't std."
12679                 fi
12680         else
12681                 echo "However, it seems to be lacking the _base field."
12682         fi
12683         $rm -f try.c try
12684         ;;
12685 esac
12686 set d_stdiobase
12687 eval $setvar
12688
12689 $cat >&4 <<EOM
12690 Checking how to access stdio streams by file descriptor number...
12691 EOM
12692 case "$stdio_stream_array" in
12693 '')     $cat >try.c <<EOCP
12694 #include <stdio.h>
12695 int main() {
12696   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12697     printf("yes\n");
12698 }
12699 EOCP
12700         for s in _iob __iob __sF
12701         do
12702                 set try -DSTDIO_STREAM_ARRAY=$s
12703                 if eval $compile; then
12704                         case "`$run ./try`" in
12705                         yes)    stdio_stream_array=$s; break ;;
12706                         esac
12707                 fi
12708         done
12709         $rm -f try.* try$exe_ext
12710 esac
12711 case "$stdio_stream_array" in
12712 '')     $cat >&4 <<EOM
12713 I can't figure out how to access stdio streams by file descriptor number.
12714 EOM
12715         d_stdio_stream_array="$undef"
12716         ;;
12717 *)      $cat >&4 <<EOM
12718 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12719 EOM
12720         d_stdio_stream_array="$define"
12721         ;;
12722 esac
12723
12724 : see if strcoll exists
12725 set strcoll d_strcoll
12726 eval $inlibc
12727
12728 : check for structure copying
12729 echo " "
12730 echo "Checking to see if your C compiler can copy structs..." >&4
12731 $cat >try.c <<'EOCP'
12732 int main()
12733 {
12734         struct blurfl {
12735                 int dyick;
12736         } foo, bar;
12737
12738         foo = bar;
12739 }
12740 EOCP
12741 if $cc -c try.c >/dev/null 2>&1 ; then
12742         val="$define"
12743         echo "Yup, it can."
12744 else
12745         val="$undef"
12746         echo "Nope, it can't."
12747 fi
12748 set d_strctcpy
12749 eval $setvar
12750 $rm -f try.*
12751
12752 : see if strerror and/or sys_errlist[] exist
12753 echo " "
12754 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12755     if set strerror val -f d_strerror; eval $csym; $val; then
12756                 echo 'strerror() found.' >&4
12757                 d_strerror="$define"
12758                 d_strerrm='strerror(e)'
12759                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12760                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12761                         d_syserrlst="$define"
12762                 else
12763                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12764                         d_syserrlst="$undef"
12765                 fi
12766     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12767                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12768                 echo 'strerror() found in string header.' >&4
12769                 d_strerror="$define"
12770                 d_strerrm='strerror(e)'
12771                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12772                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12773                                 d_syserrlst="$define"
12774                 else
12775                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12776                         d_syserrlst="$undef"
12777                 fi
12778     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12779                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12780                 d_strerror="$undef"
12781                 d_syserrlst="$define"
12782                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12783     else
12784                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12785                 d_strerror="$undef"
12786                 d_syserrlst="$undef"
12787                 d_strerrm='"unknown"'
12788     fi
12789 fi
12790
12791 : see if strftime exists
12792 set strftime d_strftime
12793 eval $inlibc
12794
12795 : see if strtod exists
12796 set strtod d_strtod
12797 eval $inlibc
12798
12799 : see if strtol exists
12800 set strtol d_strtol
12801 eval $inlibc
12802
12803 : see if strtold exists
12804 set strtold d_strtold
12805 eval $inlibc
12806
12807 : see if strtoll exists
12808 set strtoll d_strtoll
12809 eval $inlibc
12810
12811 case "$d_longlong-$d_strtoll" in
12812 "$define-$define")
12813         $cat <<EOM
12814 Checking whether your strtoll() works okay...
12815 EOM
12816         $cat >try.c <<'EOCP'
12817 #include <errno.h>
12818 #ifdef __hpux
12819 #define strtoll __strtoll
12820 #endif
12821 #ifdef __EMX__
12822 #define strtoll _strtoll
12823 #endif
12824 #include <stdio.h>
12825 extern long long int strtoll(char *s, char **, int); 
12826 static int bad = 0;
12827 int check(char *s, long long ell, int een) {
12828         long long gll;
12829         errno = 0;
12830         gll = strtoll(s, 0, 10);
12831         if (!((gll == ell) && (errno == een)))
12832                 bad++;
12833 }
12834 int main() {
12835         check(" 1",                                      1LL, 0);
12836         check(" 0",                                      0LL, 0);
12837         check("-1",                                     -1LL, 0);
12838         check("-9223372036854775808", -9223372036854775808LL, 0);
12839         check("-9223372036854775808", -9223372036854775808LL, 0);
12840         check(" 9223372036854775807",  9223372036854775807LL, 0);
12841         check("-9223372036854775808", -9223372036854775808LL, 0);
12842         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12843         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12844         if (!bad)
12845                 printf("ok\n");
12846 }
12847 EOCP
12848         set try
12849         if eval $compile; then
12850                 yyy=`$run ./try`
12851                 case "$yyy" in
12852                 ok) echo "Your strtoll() seems to be working okay." ;;
12853                 *) cat <<EOM >&4
12854 Your strtoll() doesn't seem to be working okay.
12855 EOM
12856                    d_strtoll="$undef"
12857                    ;;
12858                 esac
12859         else
12860                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12861                 d_strtoll="$undef"
12862         fi
12863         ;;
12864 esac
12865
12866 : see if strtoq exists
12867 set strtoq d_strtoq
12868 eval $inlibc
12869
12870 : see if strtoul exists
12871 set strtoul d_strtoul
12872 eval $inlibc
12873
12874 case "$d_strtoul" in
12875 "$define")
12876         $cat <<EOM
12877 Checking whether your strtoul() works okay...
12878 EOM
12879         $cat >try.c <<'EOCP'
12880 #include <errno.h>
12881 #include <stdio.h>
12882 extern unsigned long int strtoul(char *s, char **, int); 
12883 static int bad = 0;
12884 void check(char *s, unsigned long eul, int een) {
12885         unsigned long gul;
12886         errno = 0;
12887         gul = strtoul(s, 0, 10);
12888         if (!((gul == eul) && (errno == een)))
12889                 bad++;
12890 }
12891 int main() {
12892         check(" 1", 1L, 0);
12893         check(" 0", 0L, 0);
12894 EOCP
12895         case "$longsize" in
12896         8)
12897             $cat >>try.c <<'EOCP'
12898         check("18446744073709551615", 18446744073709551615UL, 0);
12899         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12900 #if 0 /* strtoul() for /^-/ strings is undefined. */
12901         check("-1", 18446744073709551615UL, 0);
12902         check("-18446744073709551614", 2, 0);
12903         check("-18446744073709551615", 1, 0);
12904         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12905         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12906 #endif
12907 EOCP
12908                 ;;
12909         4)
12910                     $cat >>try.c <<'EOCP'
12911         check("4294967295", 4294967295UL, 0);
12912         check("4294967296", 4294967295UL, ERANGE);
12913 #if 0 /* strtoul() for /^-/ strings is undefined. */
12914         check("-1", 4294967295UL, 0);
12915         check("-4294967294", 2, 0);
12916         check("-4294967295", 1, 0);
12917         check("-4294967296", 4294967295UL, ERANGE);
12918         check("-4294967297", 4294967295UL, ERANGE);
12919 #endif
12920 EOCP
12921                 ;;
12922         *)
12923 : Should we write these tests to be more portable by sprintf-ing
12924 : ~0 and then manipulating that char string as input for strtol?
12925                 ;;
12926         esac
12927         $cat >>try.c <<'EOCP'
12928         if (!bad)
12929                 printf("ok\n");
12930         return 0;
12931 }
12932 EOCP
12933         set try
12934         if eval $compile; then
12935                 case "`$run ./try`" in
12936                 ok) echo "Your strtoul() seems to be working okay." ;;
12937                 *) cat <<EOM >&4
12938 Your strtoul() doesn't seem to be working okay.
12939 EOM
12940                    d_strtoul="$undef"
12941                    ;;
12942                 esac
12943         fi
12944         ;;
12945 esac
12946
12947 : see if strtoull exists
12948 set strtoull d_strtoull
12949 eval $inlibc
12950
12951 case "$d_longlong-$d_strtoull" in
12952 "$define-$define")
12953         $cat <<EOM
12954 Checking whether your strtoull() works okay...
12955 EOM
12956         $cat >try.c <<'EOCP'
12957 #include <errno.h>
12958 #ifdef __hpux
12959 #define strtoull __strtoull
12960 #endif
12961 #include <stdio.h>
12962 extern unsigned long long int strtoull(char *s, char **, int); 
12963 static int bad = 0;
12964 int check(char *s, long long eull, int een) {
12965         long long gull;
12966         errno = 0;
12967         gull = strtoull(s, 0, 10);
12968         if (!((gull == eull) && (errno == een)))
12969                 bad++;
12970 }
12971 int main() {
12972         check(" 1",                                        1LL, 0);
12973         check(" 0",                                        0LL, 0);
12974         check("18446744073709551615",  18446744073709551615ULL, 0);
12975         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12976 #if 0 /* strtoull() for /^-/ strings is undefined. */
12977         check("-1",                    18446744073709551615ULL, 0);
12978         check("-18446744073709551614",                     2LL, 0);
12979         check("-18446744073709551615",                     1LL, 0);
12980         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12981         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12982 #endif
12983         if (!bad)
12984                 printf("ok\n");
12985 }
12986 EOCP
12987         set try
12988         if eval $compile; then
12989                 case "`$run ./try`" in
12990                 ok) echo "Your strtoull() seems to be working okay." ;;
12991                 *) cat <<EOM >&4
12992 Your strtoull() doesn't seem to be working okay.
12993 EOM
12994                    d_strtoull="$undef"
12995                    ;;
12996                 esac
12997         fi
12998         ;;
12999 esac
13000
13001 : see if strtouq exists
13002 set strtouq d_strtouq
13003 eval $inlibc
13004
13005 case "$d_strtouq" in
13006 "$define")
13007         $cat <<EOM
13008 Checking whether your strtouq() works okay...
13009 EOM
13010         $cat >try.c <<'EOCP'
13011 #include <errno.h>
13012 #include <stdio.h>
13013 extern unsigned long long int strtouq(char *s, char **, int); 
13014 static int bad = 0;
13015 void check(char *s, unsigned long long eull, int een) {
13016         unsigned long long gull;
13017         errno = 0;
13018         gull = strtouq(s, 0, 10);
13019         if (!((gull == eull) && (errno == een)))
13020                 bad++;
13021 }
13022 int main() {
13023         check(" 1",                                        1LL, 0);
13024         check(" 0",                                        0LL, 0);
13025         check("18446744073709551615",  18446744073709551615ULL, 0);
13026         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13027 #if 0 /* strtouq() for /^-/ strings is undefined. */
13028         check("-1",                    18446744073709551615ULL, 0);
13029         check("-18446744073709551614",                     2LL, 0);
13030         check("-18446744073709551615",                     1LL, 0);
13031         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13032         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13033 #endif
13034         if (!bad)
13035                 printf("ok\n");
13036         return 0;
13037 }
13038 EOCP
13039         set try
13040         if eval $compile; then
13041                 case "`$run ./try`" in
13042                 ok) echo "Your strtouq() seems to be working okay." ;;
13043                 *) cat <<EOM >&4
13044 Your strtouq() doesn't seem to be working okay.
13045 EOM
13046                    d_strtouq="$undef"
13047                    ;;
13048                 esac
13049         fi
13050         ;;
13051 esac
13052
13053 : see if strxfrm exists
13054 set strxfrm d_strxfrm
13055 eval $inlibc
13056
13057 : see if symlink exists
13058 set symlink d_symlink
13059 eval $inlibc
13060
13061 : see if syscall exists
13062 set syscall d_syscall
13063 eval $inlibc
13064
13065 : see if prototype for syscall is available
13066 echo " "
13067 set d_syscallproto syscall $i_unistd unistd.h
13068 eval $hasproto
13069
13070 : see if sysconf exists
13071 set sysconf d_sysconf
13072 eval $inlibc
13073
13074 : see if system exists
13075 set system d_system
13076 eval $inlibc
13077
13078 : see if tcgetpgrp exists
13079 set tcgetpgrp d_tcgetpgrp
13080 eval $inlibc
13081
13082 : see if tcsetpgrp exists
13083 set tcsetpgrp d_tcsetpgrp
13084 eval $inlibc
13085
13086 : see if prototype for telldir is available
13087 echo " "
13088 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13089 eval $hasproto
13090
13091 : see if this is a sys/times.h system
13092 set sys/times.h i_systimes
13093 eval $inhdr
13094
13095 : see if times exists
13096 echo " "
13097 if set times val -f d_times; eval $csym; $val; then
13098         echo 'times() found.' >&4
13099         d_times="$define"
13100         inc=''
13101         case "$i_systimes" in
13102         "$define") inc='sys/times.h';;
13103         esac
13104         rp="What is the type returned by times() on this system?"
13105         set clock_t clocktype long stdio.h sys/types.h $inc
13106         eval $typedef_ask
13107 else
13108         echo 'times() NOT found, hope that will do.' >&4
13109         d_times="$undef"
13110         clocktype='int'
13111 fi
13112
13113 : see if truncate exists
13114 set truncate d_truncate
13115 eval $inlibc
13116
13117 : see if tzname[] exists
13118 echo " "
13119 if set tzname val -a d_tzname; eval $csym; $val; then
13120         val="$define"
13121         echo 'tzname[] found.' >&4
13122 else
13123         val="$undef"
13124         echo 'tzname[] NOT found.' >&4
13125 fi
13126 set d_tzname
13127 eval $setvar
13128
13129 case "$osname" in
13130 next|rhapsody|darwin) multiarch="$define" ;;
13131 esac
13132 case "$multiarch" in
13133 ''|[nN]*) multiarch="$undef" ;;
13134 esac
13135
13136 : check for ordering of bytes in a long
13137 echo " "
13138 case "$usecrosscompile$multiarch" in
13139 *$define*)
13140         $cat <<EOM
13141 You seem to be either cross-compiling or doing a multiarchitecture build,
13142 skipping the byteorder check.
13143
13144 EOM
13145         byteorder='ffff'
13146         ;;
13147 *)
13148         case "$byteorder" in
13149         '')
13150                 $cat <<'EOM'
13151 In the following, larger digits indicate more significance.  A big-endian
13152 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13153 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13154 machines may have weird orders like 3412.  A Cray will report 87654321,
13155 an Alpha will report 12345678. If the test program works the default is
13156 probably right.
13157 I'm now running the test program...
13158 EOM
13159                 $cat >try.c <<'EOCP'
13160 #include <stdio.h>
13161 int main()
13162 {
13163         int i;
13164         union {
13165                 unsigned long l;
13166                 char c[sizeof(long)];
13167         } u;
13168
13169         if (sizeof(long) > 4)
13170                 u.l = (0x08070605L << 32) | 0x04030201L;
13171         else
13172                 u.l = 0x04030201L;
13173         for (i = 0; i < sizeof(long); i++)
13174                 printf("%c", u.c[i]+'0');
13175         printf("\n");
13176         exit(0);
13177 }
13178 EOCP
13179                 xxx_prompt=y
13180                 set try
13181                 if eval $compile && ./try > /dev/null; then
13182                         dflt=`$run ./try`
13183                         case "$dflt" in
13184                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13185                                 echo "(The test program ran ok.)"
13186                                 echo "byteorder=$dflt"
13187                                 xxx_prompt=n
13188                         ;;
13189                         ????|????????) echo "(The test program ran ok.)" ;;
13190                         *) echo "(The test program didn't run right for some reason.)" ;;
13191                         esac
13192                 else
13193                         dflt='4321'
13194                         cat <<'EOM'
13195 (I can't seem to compile the test program.  Guessing big-endian...)
13196 EOM
13197                 fi
13198                 case "$xxx_prompt" in
13199                 y)
13200                         rp="What is the order of bytes in a long?"
13201                         . ./myread
13202                         byteorder="$ans"
13203                         ;;
13204                 *)      byteorder=$dflt
13205                         ;;
13206                 esac
13207                 ;;
13208         esac
13209         $rm -f try.c try
13210         ;;
13211 esac
13212
13213
13214 $cat <<EOM
13215
13216 Checking to see whether you can access character data unalignedly...
13217 EOM
13218 $cat >try.c <<EOCP
13219 #include <stdio.h>
13220 #define U32 $u32type
13221 #define BYTEORDER $byteorder
13222 int main() {
13223 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13224     U8 buf[] = "\0\0\0\1\0\0\0\0";
13225     U32 *up;
13226     int i;
13227
13228     if (sizeof(U32) != 4) {
13229         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13230         exit(1);
13231     }
13232
13233     fflush(stdout);
13234
13235     for (i = 0; i < 4; i++) {
13236         up = (U32*)(buf + i);
13237         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13238                (*up == 1 << (8*(3-i)))  /* little-endian */
13239               )
13240            )
13241         {
13242             printf("read failed (%x)\n", *up);
13243             exit(2);
13244         }
13245     }
13246
13247     /* write test */
13248     for (i = 0; i < 4; i++) {
13249         up = (U32*)(buf + i);
13250         *up = 0xBeef;
13251         if (*up != 0xBeef) {
13252             printf("write failed (%x)\n", *up);
13253             exit(3);
13254         }
13255     }
13256
13257     exit(0);
13258 #else
13259     printf("1\n");
13260     exit(1);
13261 #endif
13262     return 0;
13263 }
13264 EOCP
13265 set try
13266 if eval $compile_ok; then
13267         echo "(Testing for character data alignment may dump core.)" >&4
13268         $run ./try 2>&1 >/dev/null
13269         case "$?" in
13270         0)      cat >&4 <<EOM
13271 You can access character data pretty unalignedly.
13272 EOM
13273                 d_u32align="$undef"
13274                 ;;
13275         *)      cat >&4 <<EOM
13276 It seems that you must access character data in an aligned manner.
13277 EOM
13278                 d_u32align="$define"
13279                 ;;
13280         esac
13281         $rm -f core core.try.* try.core
13282 else
13283         rp='Can you access character data at unaligned addresses?'
13284         dflt='n'
13285         . ./myread
13286         case "$ans" in
13287         [yY]*)  d_u32align="$undef"  ;;
13288         *)      d_u32align="$define" ;;
13289         esac
13290 fi
13291
13292 : see if ualarm exists
13293 set ualarm d_ualarm
13294 eval $inlibc
13295
13296 : see if umask exists
13297 set umask d_umask
13298 eval $inlibc
13299
13300 : see if usleep exists
13301 set usleep d_usleep
13302 eval $inlibc
13303
13304 : see if prototype for usleep is available
13305 echo " "
13306 set d_usleepproto usleep $i_unistd unistd.h
13307 eval $hasproto
13308
13309 : see if ustat exists
13310 set ustat d_ustat
13311 eval $inlibc
13312
13313 : backward compatibility for d_hvfork
13314 if test X$d_hvfork != X; then
13315         d_vfork="$d_hvfork"
13316         d_hvfork=''
13317 fi
13318 : see if there is a vfork
13319 val=''
13320 set vfork val
13321 eval $inlibc
13322
13323 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13324 : perl on Solaris 2.x, and probably elsewhere.
13325 case "$val" in
13326 $define)
13327         echo " "
13328         case "$usevfork" in
13329         false) dflt='n';;
13330         *) dflt='y';;
13331         esac
13332         cat <<'EOM'
13333  
13334 Perl can only use a vfork() that doesn't suffer from strict
13335 restrictions on calling functions or modifying global data in
13336 the child.  For example, glibc-2.1 contains such a vfork()
13337 that is unsuitable.  If your system provides a proper fork()
13338 call, chances are that you do NOT want perl to use vfork().
13339
13340 EOM
13341         rp="Do you still want to use vfork()?"
13342         . ./myread
13343         case "$ans" in
13344         y|Y) ;;
13345         *)
13346                 echo "Ok, we won't use vfork()."
13347                 val="$undef"
13348                 ;;
13349         esac
13350         ;;
13351 esac
13352 set d_vfork
13353 eval $setvar
13354 case "$d_vfork" in
13355 $define) usevfork='true';;
13356 *) usevfork='false';;
13357 esac
13358
13359 : see if this is an sysdir system
13360 set sys/dir.h i_sysdir
13361 eval $inhdr
13362
13363 : see if this is an sysndir system
13364 set sys/ndir.h i_sysndir
13365 eval $inhdr
13366
13367 : see if closedir exists
13368 set closedir d_closedir
13369 eval $inlibc
13370
13371 case "$d_closedir" in
13372 "$define")
13373         echo " "
13374         echo "Checking whether closedir() returns a status..." >&4
13375         cat > try.c <<EOM
13376 #$i_dirent I_DIRENT             /**/
13377 #$i_sysdir I_SYS_DIR            /**/
13378 #$i_sysndir I_SYS_NDIR          /**/
13379 #$i_systypes I_SYS_TYPES        /**/
13380
13381 #if defined(I_SYS_TYPES)
13382 #include <sys/types.h>
13383 #endif
13384 #if defined(I_DIRENT)
13385 #include <dirent.h>
13386 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13387 #include <sys/dir.h>
13388 #endif
13389 #else
13390 #ifdef I_SYS_NDIR
13391 #include <sys/ndir.h>
13392 #else
13393 #ifdef I_SYS_DIR
13394 #ifdef hp9000s500
13395 #include <ndir.h>       /* may be wrong in the future */
13396 #else
13397 #include <sys/dir.h>
13398 #endif
13399 #endif
13400 #endif
13401 #endif 
13402 int main() { return closedir(opendir(".")); }
13403 EOM
13404         set try
13405         if eval $compile_ok; then
13406                 if $run ./try > /dev/null 2>&1 ; then
13407                         echo "Yes, it does."
13408                         val="$undef"
13409                 else
13410                         echo "No, it doesn't."
13411                         val="$define"
13412                 fi
13413         else
13414                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13415                 val="$define"
13416         fi
13417         ;;
13418 *)
13419         val="$undef";
13420         ;;
13421 esac
13422 set d_void_closedir
13423 eval $setvar
13424 $rm -f try try.*
13425 : see if there is a wait4
13426 set wait4 d_wait4
13427 eval $inlibc
13428
13429 : see if waitpid exists
13430 set waitpid d_waitpid
13431 eval $inlibc
13432
13433 : see if wcstombs exists
13434 set wcstombs d_wcstombs
13435 eval $inlibc
13436
13437 : see if wctomb exists
13438 set wctomb d_wctomb
13439 eval $inlibc
13440
13441 : see if writev exists
13442 set writev d_writev
13443 eval $inlibc
13444
13445 : preserve RCS keywords in files with variable substitution, grrr
13446 Date='$Date'
13447 Id='$Id'
13448 Log='$Log'
13449 RCSfile='$RCSfile'
13450 Revision='$Revision'
13451
13452 : check for alignment requirements
13453 echo " "
13454 case "$usecrosscompile$multiarch" in
13455 *$define*)
13456         $cat <<EOM
13457 You seem to be either cross-compiling or doing a multiarchitecture build,
13458 skipping the memory alignment check.
13459
13460 EOM
13461         case "$alignbytes" in
13462         '') alignbytes=8 ;;
13463         esac
13464         ;;
13465 *)
13466         case "$alignbytes" in
13467         '') echo "Checking alignment constraints..." >&4
13468                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13469                         $cat >try.c <<'EOCP'
13470 typedef long double NV;
13471 EOCP
13472                 else
13473                         $cat >try.c <<'EOCP'
13474 typedef double NV;
13475 EOCP
13476                 fi
13477                 $cat >>try.c <<'EOCP'
13478 #include <stdio.h>
13479 struct foobar {
13480         char foo;
13481         NV bar;
13482 } try_algn;
13483 int main()
13484 {
13485     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13486     return(0);
13487 }
13488 EOCP
13489                 set try
13490                 if eval $compile_ok; then
13491                         dflt=`$run ./try`
13492                 else
13493                         dflt='8'
13494                         echo "(I can't seem to compile the test program...)"
13495                 fi
13496                 ;;
13497         *) dflt="$alignbytes"
13498                 ;;
13499         esac
13500         rp="Doubles must be aligned on a how-many-byte boundary?"
13501         . ./myread
13502         alignbytes="$ans"
13503         $rm -f try.c try
13504         ;;
13505 esac
13506
13507
13508 : set the base revision
13509 baserev=5.0
13510
13511 : how do we catenate cpp tokens here?
13512 echo " "
13513 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13514 $cat >cpp_stuff.c <<'EOCP'
13515 #define RCAT(a,b)a/**/b
13516 #define ACAT(a,b)a ## b
13517 RCAT(Rei,ser)
13518 ACAT(Cir,cus)
13519 EOCP
13520 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13521 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13522         echo "Oh!  Smells like ANSI's been here." >&4
13523         echo "We can catify or stringify, separately or together!"
13524         cpp_stuff=42
13525 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13526         echo "Ah, yes!  The good old days!" >&4
13527         echo "However, in the good old days we don't know how to stringify and"
13528         echo "catify at the same time."
13529         cpp_stuff=1
13530 else
13531         $cat >&4 <<EOM
13532 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13533 to have to edit the values of CAT[2-5] in config.h...
13534 EOM
13535         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13536 fi
13537 $rm -f cpp_stuff.*
13538
13539 : see if this is a db.h system
13540 set db.h i_db
13541 eval $inhdr
13542
13543 case "$i_db" in
13544 $define)
13545         : Check db version.
13546         echo " "
13547         echo "Checking Berkeley DB version ..." >&4
13548         $cat >try.c <<EOCP
13549 #$d_const HASCONST
13550 #ifndef HASCONST
13551 #define const
13552 #endif
13553 #include <sys/types.h>
13554 #include <stdio.h>
13555 #include <db.h>
13556 int main(int argc, char *argv[])
13557 {
13558 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13559     int Major, Minor, Patch ;
13560     unsigned long Version ;
13561     (void)db_version(&Major, &Minor, &Patch) ;
13562     if (argc == 2) {
13563         printf("%d %d %d %d %d %d\n",
13564                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13565                Major, Minor, Patch);
13566         exit(0);
13567     }
13568     printf("You have Berkeley DB Version 2 or greater.\n");
13569
13570     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13571                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13572     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13573                 Major, Minor, Patch) ;
13574
13575     /* check that db.h & libdb are compatible */
13576     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13577         printf("db.h and libdb are incompatible.\n") ;
13578         exit(3);        
13579     }
13580
13581     printf("db.h and libdb are compatible.\n") ;
13582
13583     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13584                 + DB_VERSION_PATCH ;
13585
13586     /* needs to be >= 2.3.4 */
13587     if (Version < 2003004) {
13588     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13589         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13590         exit(2);        
13591     }
13592
13593     exit(0);
13594 #else
13595 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13596     if (argc == 2) {
13597         printf("1 0 0\n");
13598         exit(0);
13599     }
13600     printf("You have Berkeley DB Version 1.\n");
13601     exit(0);    /* DB version < 2: the coast is clear. */
13602 #else
13603     exit(1);    /* <db.h> not Berkeley DB? */
13604 #endif
13605 #endif
13606 }
13607 EOCP
13608         set try
13609         if eval $compile_ok && $run ./try; then
13610                 echo 'Looks OK.' >&4
13611                 set `$run ./try 1`
13612                 db_version_major=$1
13613                 db_version_minor=$2
13614                 db_version_patch=$3
13615         else
13616                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13617                 i_db=$undef
13618                 case " $libs " in
13619                 *"-ldb "*)
13620                         : Remove db from list of libraries to use
13621                         echo "Removing unusable -ldb from library list" >&4
13622                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13623                         shift
13624                         libs="$*"
13625                         echo "libs = $libs" >&4
13626                         ;;
13627                 esac
13628         fi
13629         $rm -f try.*
13630         ;;
13631 esac
13632
13633 case "$i_db" in
13634 define)
13635         : Check the return type needed for hash 
13636         echo " "
13637         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13638         $cat >try.c <<EOCP
13639 #$d_const HASCONST
13640 #ifndef HASCONST
13641 #define const
13642 #endif
13643 #include <sys/types.h>
13644 #include <db.h>
13645
13646 #ifndef DB_VERSION_MAJOR
13647 u_int32_t hash_cb (ptr, size)
13648 const void *ptr;
13649 size_t size;
13650 {
13651 }
13652 HASHINFO info;
13653 int main()
13654 {
13655         info.hash = hash_cb;
13656 }
13657 #endif
13658 EOCP
13659         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13660                 if $contains warning try.out >>/dev/null 2>&1 ; then
13661                         db_hashtype='int'
13662                 else
13663                         db_hashtype='u_int32_t'
13664                 fi
13665         else
13666                 : XXX Maybe we should just give up here.
13667                 db_hashtype=u_int32_t
13668                 $cat try.out >&4
13669                 echo "Help:  I can't seem to compile the db test program." >&4
13670                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13671         fi
13672         $rm -f try.*
13673         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13674         ;;
13675 *)      db_hashtype=u_int32_t
13676         ;;
13677 esac
13678 case "$i_db" in
13679 define)
13680         : Check the return type needed for prefix 
13681         echo " "
13682         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13683         cat >try.c <<EOCP
13684 #$d_const HASCONST
13685 #ifndef HASCONST
13686 #define const
13687 #endif
13688 #include <sys/types.h>
13689 #include <db.h>
13690
13691 #ifndef DB_VERSION_MAJOR
13692 size_t prefix_cb (key1, key2)
13693 const DBT *key1;
13694 const DBT *key2;
13695 {
13696 }
13697 BTREEINFO info;
13698 int main()
13699 {
13700         info.prefix = prefix_cb;
13701 }
13702 #endif
13703 EOCP
13704         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13705                 if $contains warning try.out >>/dev/null 2>&1 ; then
13706                         db_prefixtype='int'
13707                 else
13708                         db_prefixtype='size_t'
13709                 fi
13710         else
13711                 db_prefixtype='size_t'
13712                 : XXX Maybe we should just give up here.
13713                 $cat try.out >&4
13714                 echo "Help:  I can't seem to compile the db test program." >&4
13715                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13716         fi
13717         $rm -f try.*
13718         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13719         ;;
13720 *)      db_prefixtype='size_t'
13721         ;;
13722 esac
13723
13724
13725 : How can we generate normalized random numbers ?
13726 echo " "
13727 echo "Looking for a random number function..." >&4
13728 case "$randfunc" in
13729 '')
13730         if set drand48 val -f; eval $csym; $val; then
13731                 dflt="drand48"
13732                 echo "Good, found drand48()." >&4
13733         elif set random val -f; eval $csym; $val; then
13734                 dflt="random"
13735                 echo "OK, found random()." >&4
13736         else
13737                 dflt="rand"
13738                 echo "Yick, looks like I have to use rand()." >&4
13739         fi
13740         echo " "
13741         ;;
13742 *)
13743         dflt="$randfunc"
13744         ;;
13745 esac
13746 cont=true
13747
13748 case "$ccflags" in
13749 *-Dmy_rand=*|*-Dmy_srand=*)
13750         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13751         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13752         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13753         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13754         ;;
13755 esac
13756
13757 while $test "$cont"; do
13758         rp="Use which function to generate random numbers?"
13759         . ./myread
13760         if $test "$ans" = "$dflt"; then
13761                 : null
13762         else
13763                 randbits=''
13764         fi
13765         randfunc="$ans"
13766         if set $ans val -f; eval $csym; $val; then
13767                 cont=''
13768         else
13769                 dflt=y
13770                 rp="I cannot find function $ans. Use that name anyway?"
13771                 . ./myread
13772                 dflt=rand
13773                 case "$ans" in
13774                         [yY]*) cont='';;
13775                 esac
13776         fi
13777         case "$cont" in
13778         '')
13779                 case "$randfunc" in
13780                 drand48)
13781                         drand01="drand48()"
13782                         seedfunc="srand48"
13783                         randbits=48
13784                         randseedtype=long
13785                         ;;
13786                 rand|random)
13787                         case "$randbits" in
13788                         '')
13789 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13790                                 $cat >try.c <<EOCP
13791 #$i_unistd I_UNISTD
13792 #$i_stdlib I_STDLIB
13793 #include <stdio.h>
13794 #ifdef I_UNISTD
13795 #  include <unistd.h>
13796 #endif
13797 #ifdef I_STDLIB
13798 #  include <stdlib.h>
13799 #endif
13800 int main()
13801 {
13802         register int i;
13803         register unsigned long tmp;
13804         register unsigned long max = 0L;
13805
13806         for (i = 1000; i; i--) {
13807                 tmp = (unsigned long) $randfunc();
13808                 if (tmp > max) max = tmp;
13809         }
13810         for (i = 0; max; i++)
13811                 max /= 2;
13812         printf("%d\n",i);
13813 }
13814 EOCP
13815                                 set try
13816                                 if eval $compile_ok; then
13817                                         dflt=`try`
13818                                 else
13819                                         dflt='?'
13820                                         echo "(I can't seem to compile the test program...)"
13821                                 fi
13822                                 ;;
13823                         *)
13824                                 dflt="$randbits"
13825                                 ;;
13826                         esac
13827                         rp="How many bits does your $randfunc() function produce?"
13828                         . ./myread
13829                         randbits="$ans"
13830                         $rm -f try.c try
13831                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13832                         seedfunc="s$randfunc"
13833                         randseedtype=unsigned
13834                         ;;
13835                 *)
13836                         dflt="31"
13837                         rp="How many bits does your $randfunc() function produce?"
13838                         . ./myread
13839                         randbits="$ans"
13840                         seedfunc="s$randfunc"
13841                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13842                         if set $seedfunc val -f; eval $csym; $val; then
13843                                 echo "(Using $seedfunc() to seed random generator)"
13844                         else
13845                                 echo "(Warning: no $seedfunc() to seed random generator)"
13846                                 seedfunc=rand
13847                         fi
13848                         randseedtype=unsigned
13849                         ;;
13850                 esac
13851                 ;;
13852         esac
13853 done
13854
13855 echo " "
13856 echo "Determining whether or not we are on an EBCDIC system..." >&4
13857 $cat >try.c <<'EOM'
13858 int main()
13859 {
13860   if ('M'==0xd4) return 0;
13861   return 1;
13862 }
13863 EOM
13864
13865 val=$undef
13866 set try
13867 if eval $compile_ok; then
13868         if $run ./try; then
13869                 echo "You seem to speak EBCDIC." >&4
13870                 val="$define"
13871         else
13872                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13873         fi
13874 else
13875         echo "I'm unable to compile the test program." >&4
13876         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13877 fi
13878 $rm -f try try.*
13879 set ebcdic
13880 eval $setvar
13881
13882 echo " "
13883 $cat >&4 <<EOM
13884 Checking how to flush all pending stdio output...
13885 EOM
13886 # I only know how to find the first 32 possibly open files on SunOS.
13887 # See also hints/sunos_4_1.sh and util.c  --AD
13888 case "$osname" in
13889 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13890 esac
13891 $cat >>try.c <<EOCP
13892 #include <stdio.h>
13893 #$i_unistd I_UNISTD
13894 #ifdef I_UNISTD
13895 # include <unistd.h>
13896 #endif
13897 #$d_sysconf HAS_SYSCONF
13898 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13899 #ifdef HAS_STDIO_STREAM_ARRAY
13900 # define STDIO_STREAM_ARRAY $stdio_stream_array
13901 #endif
13902 int main() {
13903   FILE* p;
13904   unlink("try.out");
13905   p = fopen("try.out", "w");
13906 #ifdef TRY_FPUTC
13907   fputc('x', p);
13908 #else
13909 # ifdef TRY_FPRINTF
13910   fprintf(p, "x");
13911 # endif
13912 #endif
13913 #ifdef TRY_FFLUSH_NULL
13914   fflush(NULL);
13915 #endif
13916 #ifdef TRY_FFLUSH_ALL
13917   {
13918     long open_max = -1;
13919 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13920     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13921 # else
13922 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13923     open_max = sysconf(_SC_OPEN_MAX);
13924 #  else
13925 #   ifdef FOPEN_MAX
13926     open_max = FOPEN_MAX;
13927 #   else
13928 #    ifdef OPEN_MAX
13929     open_max = OPEN_MAX;
13930 #    else
13931 #     ifdef _NFILE
13932     open_max = _NFILE;
13933 #     endif
13934 #    endif
13935 #   endif
13936 #  endif
13937 # endif 
13938 # ifdef HAS_STDIO_STREAM_ARRAY
13939     if (open_max > 0) {
13940       long i;
13941       for (i = 0; i < open_max; i++)
13942             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13943                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13944                 STDIO_STREAM_ARRAY[i]._flag)
13945                 fflush(&STDIO_STREAM_ARRAY[i]);
13946     }   
13947   }
13948 # endif
13949 #endif
13950   _exit(42);
13951 }
13952 EOCP
13953 : first we have to find out how _not_ to flush
13954 $to try.c
13955 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13956     output=''
13957     set try -DTRY_FPUTC
13958     if eval $compile; then
13959             $run ./try 2>/dev/null
13960             code="$?"
13961             $from try.out
13962             if $test ! -s try.out -a "X$code" = X42; then
13963                 output=-DTRY_FPUTC
13964             fi
13965     fi
13966     case "$output" in
13967     '')
13968             set try -DTRY_FPRINTF
13969             if eval $compile; then
13970                     $run ./try 2>/dev/null
13971                     code="$?"
13972                     $from try.out
13973                     if $test ! -s try.out -a "X$code" = X42; then
13974                         output=-DTRY_FPRINTF
13975                     fi
13976             fi
13977         ;;
13978     esac
13979 fi
13980 : check for fflush NULL behaviour
13981 case "$fflushNULL" in
13982 '')     set try -DTRY_FFLUSH_NULL $output
13983         if eval $compile; then
13984                 $run ./try 2>/dev/null
13985                 code="$?"
13986                 $from try.out
13987                 if $test -s try.out -a "X$code" = X42; then
13988                         fflushNULL="`$cat try.out`"
13989                 else
13990                         if $test "X$code" != X42; then
13991                                 $cat >&4 <<EOM
13992 (If this test failed, don't worry, we'll try another method shortly.)
13993 EOM
13994                         fi
13995                 fi
13996         fi
13997         $rm -f core try.core core.try.*
13998         case "$fflushNULL" in
13999         x)      $cat >&4 <<EOM
14000 Your fflush(NULL) works okay for output streams.
14001 Let's see if it clobbers input pipes...
14002 EOM
14003 # As of mid-March 2000 all versions of Solaris appear to have a stdio
14004 # bug that improperly flushes the input end of pipes.  So we avoid the
14005 # autoflush on fork/system/exec support for now. :-(
14006 $cat >tryp.c <<EOCP
14007 #include <stdio.h>
14008 int
14009 main(int argc, char **argv)
14010 {
14011     char buf[1024];
14012     int i;
14013     char *bp = buf;
14014     while (1) {
14015         while ((i = getc(stdin)) != -1
14016                && (*bp++ = i) != '\n'
14017                && bp < &buf[1024])
14018         /* DO NOTHING */ ;
14019         *bp = '\0';
14020         fprintf(stdout, "%s", buf);
14021         fflush(NULL);
14022         if (i == -1)
14023             return 0;
14024         bp = buf;
14025     }
14026 }
14027 EOCP
14028                 fflushNULL="$define"
14029                 set tryp
14030                 if eval $compile; then
14031                     $rm -f tryp.out
14032                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14033                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14034                        $cat >&4 <<EOM
14035 fflush(NULL) seems to behave okay with input streams.
14036 EOM
14037                         fflushNULL="$define"
14038                     else
14039                         $cat >&4 <<EOM
14040 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14041 EOM
14042                         fflushNULL="$undef"
14043                     fi
14044                 fi
14045                 $rm -f core tryp.c tryp.core core.tryp.*
14046                 ;;
14047         '')     $cat >&4 <<EOM
14048 Your fflush(NULL) isn't working (contrary to ANSI C).
14049 EOM
14050                 fflushNULL="$undef"
14051                 ;;
14052         *)      $cat >&4 <<EOM
14053 Cannot figure out whether your fflush(NULL) works or not.
14054 I'm assuming it doesn't (contrary to ANSI C).
14055 EOM
14056                 fflushNULL="$undef"
14057                 ;;
14058         esac
14059         ;;
14060 $define|true|[yY]*)
14061         fflushNULL="$define"
14062         ;;
14063 *)
14064         fflushNULL="$undef"
14065         ;;
14066 esac
14067 : check explicit looping only if NULL did not work, and if the pipe
14068 : bug does not show up on an explicit flush too
14069 case "$fflushNULL" in
14070 "$undef")
14071         $cat >tryp.c <<EOCP
14072 #include <stdio.h>
14073 int
14074 main(int argc, char **argv)
14075 {
14076     char buf[1024];
14077     int i;
14078     char *bp = buf;
14079     while (1) {
14080         while ((i = getc(stdin)) != -1
14081                && (*bp++ = i) != '\n'
14082                && bp < &buf[1024])
14083         /* DO NOTHING */ ;
14084         *bp = '\0';
14085         fprintf(stdout, "%s", buf);
14086         fflush(stdin);
14087         if (i == -1)
14088             return 0;
14089         bp = buf;
14090     }
14091 }
14092 EOCP
14093         set tryp
14094         if eval $compile; then
14095             $rm -f tryp.out
14096             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14097             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14098                $cat >&4 <<EOM
14099 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14100 EOM
14101                 : now check for fflushall behaviour
14102                 case "$fflushall" in
14103                 '')     set try -DTRY_FFLUSH_ALL $output
14104                         if eval $compile; then
14105                                 $cat >&4 <<EOM
14106 (Now testing the other method--but note that this also may fail.)
14107 EOM
14108                                 $run ./try 2>/dev/null
14109                                 code=$?
14110                                 $from try.out
14111                                 if $test -s try.out -a "X$code" = X42; then
14112                                         fflushall="`$cat try.out`"
14113                                 fi
14114                         fi
14115                         $rm -f core try.core core.try.*
14116                         case "$fflushall" in
14117                         x)      $cat >&4 <<EOM
14118 Whew. Flushing explicitly all the stdio streams works.
14119 EOM
14120                                 fflushall="$define"
14121                                 ;;
14122                         '')     $cat >&4 <<EOM
14123 Sigh. Flushing explicitly all the stdio streams doesn't work.
14124 EOM
14125                                 fflushall="$undef"
14126                                 ;;
14127                         *)      $cat >&4 <<EOM
14128 Cannot figure out whether flushing stdio streams explicitly works or not.
14129 I'm assuming it doesn't.
14130 EOM
14131                                 fflushall="$undef"
14132                                 ;;
14133                         esac
14134                         ;;
14135                 "$define"|true|[yY]*)
14136                         fflushall="$define"
14137                         ;;
14138                 *)
14139                         fflushall="$undef"
14140                         ;;
14141                 esac
14142             else
14143                 $cat >&4 <<EOM
14144 All is futile.  Even fflush(stdin) clobbers input pipes!
14145 EOM
14146                 fflushall="$undef"
14147             fi
14148         else
14149             fflushall="$undef"
14150         fi
14151         $rm -f core tryp.c tryp.core core.tryp.*
14152         ;;
14153 *)      fflushall="$undef"
14154         ;;
14155 esac
14156
14157 case "$fflushNULL$fflushall" in
14158 undefundef)
14159         $cat <<EOM
14160 OK, I give up.  I cannot figure out how to flush pending stdio output.
14161 We won't be flushing handles at all before fork/exec/popen.
14162 EOM
14163         ;;
14164 esac
14165 $rm -f try.* try$exe_ext
14166
14167 : Store the full pathname to the ar program for use in the C program
14168 : Respect a hint or command line value for full_ar.
14169 case "$full_ar" in
14170 '') full_ar=$ar ;;
14171 esac
14172
14173 : Store the full pathname to the sed program for use in the C program
14174 full_sed=$sed
14175
14176 : see what type gids are declared as in the kernel
14177 echo " "
14178 echo "Looking for the type for group ids returned by getgid()."
14179 set gid_t gidtype xxx stdio.h sys/types.h
14180 eval $typedef
14181 case "$gidtype" in
14182 xxx)
14183         xxx=`./findhdr sys/user.h`
14184         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14185         case $1 in
14186         unsigned) dflt="$1 $2" ;;
14187         *) dflt="$1" ;;
14188         esac
14189         ;;
14190 *) dflt="$gidtype";;
14191 esac
14192 case "$gidtype" in
14193 gid_t) echo "gid_t found." ;;
14194 *)      rp="What is the type for group ids returned by getgid()?"
14195         . ./myread
14196         gidtype="$ans"
14197         ;;
14198 esac
14199
14200 echo " "
14201 case "$gidtype" in
14202 *_t) zzz="$gidtype"     ;;
14203 *)   zzz="gid"          ;;
14204 esac
14205 echo "Checking the size of $zzz..." >&4 
14206 cat > try.c <<EOCP
14207 #include <sys/types.h>
14208 #include <stdio.h>
14209 int main() {
14210     printf("%d\n", (int)sizeof($gidtype));
14211     exit(0);
14212 }
14213 EOCP
14214 set try
14215 if eval $compile_ok; then
14216         yyy=`$run ./try`
14217         case "$yyy" in
14218         '')     gidsize=4
14219                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14220                 ;;
14221         *)      gidsize=$yyy
14222                 echo "Your $zzz is $gidsize bytes long."
14223                 ;;
14224         esac
14225 else
14226         gidsize=4
14227         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14228 fi
14229
14230
14231 echo " "
14232 case "$gidtype" in
14233 *_t) zzz="$gidtype"     ;;
14234 *)   zzz="gid"          ;;
14235 esac
14236 echo "Checking the sign of $zzz..." >&4 
14237 cat > try.c <<EOCP
14238 #include <sys/types.h>
14239 #include <stdio.h>
14240 int main() {
14241         $gidtype foo = -1;
14242         if (foo < 0)
14243                 printf("-1\n");
14244         else
14245                 printf("1\n");
14246 }
14247 EOCP
14248 set try
14249 if eval $compile; then
14250         yyy=`$run ./try`
14251         case "$yyy" in
14252         '')     gidsign=1
14253                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14254                 ;;
14255         *)      gidsign=$yyy
14256                 case "$gidsign" in
14257                  1) echo "Your $zzz is unsigned." ;;
14258                 -1) echo "Your $zzz is signed."   ;;
14259                 esac
14260                 ;;
14261         esac
14262 else
14263         gidsign=1
14264         echo "(I can't compile the test program--guessing unsigned.)" >&4
14265 fi
14266
14267
14268 echo " "
14269
14270 if $test X"$quadtype" != X; then
14271
14272 echo "Checking how to print 64-bit integers..." >&4
14273
14274 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14275         $cat >try.c <<'EOCP'
14276 #include <sys/types.h>
14277 #include <stdio.h>
14278 int main() {
14279   int q = 12345678901;
14280   printf("%ld\n", q);
14281 }
14282 EOCP
14283         set try
14284         if eval $compile; then
14285                 yyy=`$run ./try`
14286                 case "$yyy" in
14287                 12345678901)
14288                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14289                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14290                         echo "We will use %d."
14291                         ;;
14292                 esac
14293         fi
14294 fi
14295
14296 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14297         $cat >try.c <<'EOCP'
14298 #include <sys/types.h>
14299 #include <stdio.h>
14300 int main() {
14301   long q = 12345678901;
14302   printf("%ld\n", q);
14303 }
14304 EOCP
14305         set try
14306         if eval $compile; then
14307                 yyy=`$run ./try`
14308                 case "$yyy" in
14309                 12345678901)
14310                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14311                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14312                         echo "We will use %ld."
14313                         ;;
14314                 esac
14315         fi
14316 fi
14317
14318 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14319         $cat >try.c <<'EOCP'
14320 #include <sys/types.h>
14321 #include <inttypes.h>
14322 #include <stdio.h>
14323 int main() {
14324   int64_t q = 12345678901;
14325   printf("%" PRId64 "\n", q);
14326 }
14327 EOCP
14328         set try
14329         if eval $compile; then
14330                 yyy=`$run ./try`
14331                 case "$yyy" in
14332                 12345678901)
14333                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14334                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14335                         echo "We will use the C9X style."
14336                         ;;
14337                 esac
14338         fi
14339 fi
14340
14341 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14342         $cat >try.c <<EOCP
14343 #include <sys/types.h>
14344 #include <stdio.h>
14345 int main() {
14346   $quadtype q = 12345678901;
14347   printf("%Ld\n", q);
14348 }
14349 EOCP
14350         set try
14351         if eval $compile; then
14352                 yyy=`$run ./try`
14353                 case "$yyy" in
14354                 12345678901)
14355                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14356                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14357                         echo "We will use %Ld."
14358                         ;;
14359                 esac
14360         fi
14361 fi
14362
14363 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14364         $cat >try.c <<'EOCP'
14365 #include <sys/types.h>
14366 #include <stdio.h>
14367 int main() {
14368   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14369   printf("%lld\n", q);
14370 }
14371 EOCP
14372         set try
14373         if eval $compile; then
14374                 yyy=`$run ./try`
14375                 case "$yyy" in
14376                 12345678901)
14377                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14378                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14379                         echo "We will use the %lld style."
14380                         ;;
14381                 esac
14382         fi
14383 fi
14384
14385 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14386         $cat >try.c <<EOCP
14387 #include <sys/types.h>
14388 #include <stdio.h>
14389 int main() {
14390   $quadtype q = 12345678901;
14391   printf("%qd\n", q);
14392 }
14393 EOCP
14394         set try
14395         if eval $compile; then
14396                 yyy=`$run ./try`
14397                 case "$yyy" in
14398                 12345678901)
14399                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14400                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14401                         echo "We will use %qd."
14402                         ;;
14403                 esac
14404         fi
14405 fi
14406
14407 if $test X"$sPRId64" = X; then
14408         echo "Cannot figure out how to print 64-bit integers." >&4
14409 fi
14410
14411 $rm -f try try.*
14412
14413 fi
14414
14415 case "$sPRId64" in
14416 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14417         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14418         ;;
14419 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14420         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14421         ;;
14422 esac
14423
14424
14425 echo " "
14426 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14427
14428 if $test X"$ivsize" = X8; then
14429         ivdformat="$sPRId64"
14430         uvuformat="$sPRIu64"
14431         uvoformat="$sPRIo64"
14432         uvxformat="$sPRIx64"
14433         uvXUformat="$sPRIXU64"
14434 else
14435         if $test X"$ivsize" = X"$longsize"; then
14436                 ivdformat='"ld"'
14437                 uvuformat='"lu"'
14438                 uvoformat='"lo"'
14439                 uvxformat='"lx"'
14440                 uvXUformat='"lX"'
14441         else
14442                 if $test X"$ivsize" = X"$intsize"; then
14443                         ivdformat='"d"'
14444                         uvuformat='"u"'
14445                         uvoformat='"o"'
14446                         uvxformat='"x"'
14447                         uvXUformat='"X"'
14448                 else
14449                         : far out
14450                         if $test X"$ivsize" = X"$shortsize"; then
14451                                 ivdformat='"hd"'
14452                                 uvuformat='"hu"'
14453                                 uvoformat='"ho"'
14454                                 uvxformat='"hx"'
14455                                 uvXUformat='"hX"'
14456                         fi
14457                 fi
14458         fi
14459 fi
14460
14461 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14462         nveformat="$sPRIeldbl"
14463         nvfformat="$sPRIfldbl"
14464         nvgformat="$sPRIgldbl"
14465         nvEUformat="$sPRIEUldbl"
14466         nvFUformat="$sPRIFUldbl"
14467         nvGUformat="$sPRIGUldbl"
14468 else
14469         nveformat='"e"'
14470         nvfformat='"f"'
14471         nvgformat='"g"'
14472         nvEUformat='"E"'
14473         nvFUformat='"F"'
14474         nvGUformat='"G"'
14475 fi
14476
14477 case "$ivdformat" in
14478 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14479     exit 1
14480     ;;
14481 esac
14482
14483
14484 echo " "
14485 $echo "Checking the format string to be used for gids..." >&4
14486
14487 case "$gidsign" in
14488 -1)     if $test X"$gidsize" = X"$ivsize"; then
14489                 gidformat="$ivdformat"
14490         else
14491                 if $test X"$gidsize" = X"$longsize"; then
14492                         gidformat='"ld"'
14493                 else
14494                         if $test X"$gidsize" = X"$intsize"; then
14495                                 gidformat='"d"'
14496                         else
14497                                 if $test X"$gidsize" = X"$shortsize"; then
14498                                         gidformat='"hd"'
14499                                 fi
14500                         fi
14501                 fi
14502         fi
14503         ;;
14504 *)      if $test X"$gidsize" = X"$uvsize"; then
14505                 gidformat="$uvuformat"
14506         else
14507                 if $test X"$gidsize" = X"$longsize"; then
14508                         gidformat='"lu"'
14509                 else
14510                         if $test X"$gidsize" = X"$intsize"; then
14511                                 gidformat='"u"'
14512                         else
14513                                 if $test X"$gidsize" = X"$shortsize"; then
14514                                         gidformat='"hu"'
14515                                 fi
14516                         fi
14517                 fi
14518         fi
14519         ;;
14520 esac
14521
14522 : see if getgroups exists
14523 set getgroups d_getgrps
14524 eval $inlibc
14525
14526 : see if setgroups exists
14527 set setgroups d_setgrps
14528 eval $inlibc
14529
14530
14531 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14532 echo " "
14533 case "$d_getgrps$d_setgrps" in
14534 *define*)
14535         case "$groupstype" in
14536         '') dflt="$gidtype" ;;
14537         *)  dflt="$groupstype" ;;
14538         esac
14539         $cat <<EOM
14540 What type of pointer is the second argument to getgroups() and setgroups()?
14541 Usually this is the same as group ids, $gidtype, but not always.
14542
14543 EOM
14544         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14545         . ./myread
14546         groupstype="$ans"
14547         ;;
14548 *)  groupstype="$gidtype";;
14549 esac
14550
14551 echo " "
14552 echo "Checking if your $make program sets \$(MAKE)..." >&4
14553 case "$make_set_make" in
14554 '')
14555         $sed 's/^X //' > testmake.mak << 'EOF'
14556 Xall:
14557 X       @echo 'maketemp="$(MAKE)"'
14558 EOF
14559         case "`$make -f testmake.mak 2>/dev/null`" in
14560         *maketemp=*) make_set_make='#' ;;
14561         *)      make_set_make="MAKE=$make" ;;
14562         esac
14563         $rm -f testmake.mak
14564         ;;
14565 esac
14566 case "$make_set_make" in
14567 '#') echo "Yup, it does.";;
14568 *) echo "Nope, it doesn't.";;
14569 esac
14570
14571 : see what type is used for mode_t
14572 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14573 set mode_t modetype int stdio.h sys/types.h
14574 eval $typedef_ask
14575
14576 : see if stdarg is available
14577 echo " "
14578 if $test `./findhdr stdarg.h`; then
14579         echo "<stdarg.h> found." >&4
14580         valstd="$define"
14581 else
14582         echo "<stdarg.h> NOT found." >&4
14583         valstd="$undef"
14584 fi
14585
14586 : see if varags is available
14587 echo " "
14588 if $test `./findhdr varargs.h`; then
14589         echo "<varargs.h> found." >&4
14590 else
14591         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14592 fi
14593
14594 : set up the varargs testing programs
14595 $cat > varargs.c <<EOP
14596 #ifdef I_STDARG
14597 #include <stdarg.h>
14598 #endif
14599 #ifdef I_VARARGS
14600 #include <varargs.h>
14601 #endif
14602
14603 #ifdef I_STDARG
14604 int f(char *p, ...)
14605 #else
14606 int f(va_alist)
14607 va_dcl
14608 #endif
14609 {
14610         va_list ap;
14611 #ifndef I_STDARG
14612         char *p;
14613 #endif
14614 #ifdef I_STDARG
14615         va_start(ap,p);
14616 #else
14617         va_start(ap);
14618         p = va_arg(ap, char *);
14619 #endif
14620         va_end(ap);
14621 }
14622 EOP
14623 $cat > varargs <<EOP
14624 $startsh
14625 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14626         echo "true"
14627 else
14628         echo "false"
14629 fi
14630 $rm -f varargs$_o
14631 EOP
14632 chmod +x varargs
14633
14634 : now check which varargs header should be included
14635 echo " "
14636 i_varhdr=''
14637 case "$valstd" in
14638 "$define")
14639         if `./varargs I_STDARG`; then
14640                 val='stdarg.h'
14641         elif `./varargs I_VARARGS`; then
14642                 val='varargs.h'
14643         fi
14644         ;;
14645 *)
14646         if `./varargs I_VARARGS`; then
14647                 val='varargs.h'
14648         fi
14649         ;;
14650 esac
14651 case "$val" in
14652 '')
14653 echo "I could not find the definition for va_dcl... You have problems..." >&4
14654         val="$undef"; set i_stdarg; eval $setvar
14655         val="$undef"; set i_varargs; eval $setvar
14656         ;;
14657 *) 
14658         set i_varhdr
14659         eval $setvar
14660         case "$i_varhdr" in
14661         stdarg.h)
14662                 val="$define"; set i_stdarg; eval $setvar
14663                 val="$undef"; set i_varargs; eval $setvar
14664                 ;;
14665         varargs.h)
14666                 val="$undef"; set i_stdarg; eval $setvar
14667                 val="$define"; set i_varargs; eval $setvar
14668                 ;;
14669         esac
14670         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14671 esac
14672 $rm -f varargs*
14673
14674 : see if we need va_copy
14675 echo " "
14676 case "$i_stdarg" in
14677 "$define")
14678         $cat >try.c <<EOCP
14679 #include <stdarg.h>
14680 #include <stdio.h>
14681 #$i_stdlib I_STDLIB
14682 #ifdef I_STDLIB
14683 #include <stdlib.h>
14684 #endif
14685 #include <signal.h>
14686
14687 int
14688 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14689 {
14690   return vfprintf(f, fmt, *valp);
14691 }
14692  
14693 int    
14694 myvfprintf(FILE *f, const  char *fmt, va_list val)
14695 {
14696   return ivfprintf(f, fmt, &val);
14697 }
14698       
14699 int
14700 myprintf(char *fmt, ...) 
14701 {
14702   va_list val;
14703   va_start(val, fmt);
14704   return myvfprintf(stdout, fmt, val); 
14705 }         
14706
14707 int
14708 main(int ac, char **av)
14709 {
14710   signal(SIGSEGV, exit);
14711
14712   myprintf("%s%cs all right, then\n", "that", '\'');                            
14713   exit(0);      
14714 }
14715 EOCP
14716         set try
14717         if eval $compile && $run ./try 2>&1 >/dev/null; then
14718                 case "`$run ./try`" in
14719                 "that's all right, then")
14720                         okay=yes
14721                         ;;
14722                 esac
14723         fi
14724         case "$okay" in
14725         yes)    echo "It seems that you don't need va_copy()." >&4
14726                 need_va_copy="$undef"
14727                 ;;
14728         *)      echo "It seems that va_copy() or similar will be needed." >&4
14729                 need_va_copy="$define"
14730                 ;;
14731         esac
14732         $rm -f try.* core core.* *.core *.core.*
14733         ;;
14734 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14735         ;;
14736 esac
14737
14738 : define a fucntion to check prototypes
14739 $cat > protochk <<EOSH
14740 $startsh
14741 cc="$cc"
14742 optimize="$optimize"
14743 ccflags="$ccflags"
14744 prototype="$prototype"
14745 define="$define"
14746 rm=$rm
14747 EOSH
14748
14749 $cat >> protochk <<'EOSH'
14750
14751 $rm -f try.c
14752 foo="$1"
14753 shift
14754 while test $# -ge 2; do
14755         case "$1" in
14756                 $define) echo "#include <$2>" >> try.c ;;
14757                 literal) echo "$2" >> try.c ;;
14758         esac
14759     shift 2
14760 done
14761 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14762 cat >> try.c <<'EOCP'
14763 #ifdef CAN_PROTOTYPE
14764 #define _(args) args
14765 #else
14766 #define _(args) ()
14767 #endif
14768 EOCP
14769 echo "$foo" >> try.c
14770 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14771 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14772 status=$?
14773 $rm -f try.[co]
14774 exit $status
14775 EOSH
14776 chmod +x protochk
14777 $eunicefix protochk
14778
14779 : see what type is used for size_t
14780 rp="What is the type used for the length parameter for string functions?"
14781 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14782 eval $typedef_ask
14783
14784 : check for type of arguments to gethostbyaddr. 
14785 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14786         case "$d_gethbyaddr" in
14787         $define)
14788                 $cat <<EOM
14789
14790 Checking to see what type of arguments are accepted by gethostbyaddr().
14791 EOM
14792                 hdrs="$define sys/types.h
14793                         $d_socket sys/socket.h 
14794                         $i_niin netinet/in.h 
14795                         $i_netdb netdb.h
14796                         $i_unistd unistd.h"
14797                 : The first arg can 'char *' or 'void *'
14798                 : The second arg is some of integral type
14799                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14800                         for yyy in size_t long int; do
14801                                 case "$netdb_host_type" in
14802                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14803                                         if ./protochk "$try" $hdrs; then
14804                                                 echo "Your system accepts $xxx for the first arg."
14805                                                 echo "...and $yyy for the second arg."
14806                                                 netdb_host_type="$xxx"
14807                                                 netdb_hlen_type="$yyy"
14808                                         fi
14809                                         ;;
14810                                 esac
14811                         done
14812                 done
14813                 : In case none of those worked, prompt the user.
14814                 case "$netdb_host_type" in
14815                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14816                         dflt='char *'
14817                         . ./myread
14818                         netdb_host_type=$ans
14819                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14820                         dflt="$sizetype"
14821                         . ./myread
14822                         netdb_hlen_type=$ans
14823                         ;;
14824                 esac
14825                 ;;
14826         *)      : no gethostbyaddr, so pick harmless defaults
14827                 netdb_host_type='char *'
14828                 netdb_hlen_type="$sizetype"
14829                 ;;
14830         esac
14831         # Remove the "const" if needed. -- but then we'll have a 
14832         # prototype clash!
14833         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14834 fi
14835
14836 : check for type of argument to gethostbyname. 
14837 if test "X$netdb_name_type" = X ; then
14838         case "$d_gethbyname" in
14839         $define)
14840                 $cat <<EOM
14841
14842 Checking to see what type of argument is accepted by gethostbyname().
14843 EOM
14844                 hdrs="$define sys/types.h
14845                         $d_socket sys/socket.h 
14846                         $i_niin netinet/in.h 
14847                         $i_netdb netdb.h
14848                         $i_unistd unistd.h"
14849                 for xxx in "const char *" "char *"; do
14850                         case "$netdb_name_type" in
14851                         '')     try="extern struct hostent *gethostbyname($xxx);"
14852                                 if ./protochk "$try" $hdrs; then
14853                                         echo "Your system accepts $xxx."
14854                                         netdb_name_type="$xxx"
14855                                 fi
14856                                 ;;
14857                         esac
14858                 done
14859                 : In case none of those worked, prompt the user.
14860                 case "$netdb_name_type" in
14861                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14862                         dflt='char *'
14863                         . ./myread
14864                         netdb_name_type=$ans
14865                         ;;
14866                 esac
14867                 ;;
14868         *)      : no gethostbyname, so pick harmless default
14869                 netdb_name_type='char *'
14870                 ;;
14871         esac
14872 fi
14873
14874 : check for type of 1st argument to getnetbyaddr. 
14875 if test "X$netdb_net_type" = X ; then
14876         case "$d_getnbyaddr" in
14877         $define)
14878                 $cat <<EOM
14879
14880 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14881 EOM
14882                 hdrs="$define sys/types.h
14883                         $d_socket sys/socket.h 
14884                         $i_niin netinet/in.h 
14885                         $i_netdb netdb.h
14886                         $i_unistd unistd.h"
14887                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14888                         case "$netdb_net_type" in
14889                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14890                                 if ./protochk "$try" $hdrs; then
14891                                         echo "Your system accepts $xxx."
14892                                         netdb_net_type="$xxx"
14893                                 fi
14894                                 ;;
14895                         esac
14896                 done
14897                 : In case none of those worked, prompt the user.
14898                 case "$netdb_net_type" in
14899                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14900                         dflt='long'
14901                         . ./myread
14902                         netdb_net_type=$ans
14903                         ;;
14904                 esac
14905                 ;;
14906         *)      : no getnetbyaddr, so pick harmless default
14907                 netdb_net_type='long'
14908                 ;;
14909         esac
14910 fi
14911 : locate the preferred pager for this system
14912 case "$pager" in
14913 '')
14914         dflt=''
14915         case "$pg" in
14916         /*) dflt=$pg;;
14917         [a-zA-Z]:/*) dflt=$pg;;
14918         esac
14919         case "$more" in
14920         /*) dflt=$more;;
14921         [a-zA-Z]:/*) dflt=$more;;
14922         esac
14923         case "$less" in
14924         /*) dflt=$less;;
14925         [a-zA-Z]:/*) dflt=$less;;
14926         esac
14927         case "$dflt" in
14928         '') dflt=/usr/ucb/more;;
14929         esac
14930         ;;
14931 *) dflt="$pager";;
14932 esac
14933 echo " "
14934 fn=f/
14935 rp='What pager is used on your system?'
14936 . ./getfile
14937 pager="$ans"
14938
14939 : see what type pids are declared as in the kernel
14940 rp="What is the type of process ids on this system?"
14941 set pid_t pidtype int stdio.h sys/types.h
14942 eval $typedef_ask
14943
14944 : Find earliest binary compatible site_perl subdirectory perl can use.
14945 case "$bincompat5005" in
14946 "$define") xs_apiversion='5.005' ;;
14947 *) xs_apiversion=$version ;;   # The current site_perl version.
14948 esac
14949 : Find earliest pure perl site_perl subdirectory perl can use.
14950 : The versioned directories started at 5.005.
14951 pm_apiversion='5.005'
14952
14953 : see if ar generates random libraries by itself
14954 echo " "
14955 echo "Checking how to generate random libraries on your machine..." >&4
14956 echo 'int bar1() { return bar2(); }' > bar1.c
14957 echo 'int bar2() { return 2; }' > bar2.c
14958 $cat > foo.c <<'EOP'
14959 int main() { printf("%d\n", bar1()); exit(0); }
14960 EOP
14961 $cc $ccflags -c bar1.c >/dev/null 2>&1
14962 $cc $ccflags -c bar2.c >/dev/null 2>&1
14963 $cc $ccflags -c foo.c >/dev/null 2>&1
14964 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14965 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14966         $run ./foobar >/dev/null 2>&1; then
14967         echo "$ar appears to generate random libraries itself."
14968         orderlib=false
14969         ranlib=":"
14970 elif $ar ts bar$_a >/dev/null 2>&1 &&
14971         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14972         $run ./foobar >/dev/null 2>&1; then
14973                 echo "a table of contents needs to be added with '$ar ts'."
14974                 orderlib=false
14975                 ranlib="$ar ts"
14976 else
14977         case "$ranlib" in
14978         :) ranlib='';;
14979         '')
14980                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14981                 $test -f $ranlib || ranlib=''
14982                 ;;
14983         esac
14984         if $test -n "$ranlib"; then
14985                 echo "your system has '$ranlib'; we'll use that."
14986                 orderlib=false
14987         else
14988                 echo "your system doesn't seem to support random libraries"
14989                 echo "so we'll use lorder and tsort to order the libraries."
14990                 orderlib=true
14991                 ranlib=":"
14992         fi
14993 fi
14994 $rm -f foo* bar* 
14995
14996 : check for type of arguments to select. 
14997 case "$selecttype" in
14998 '') case "$d_select" in
14999         $define)
15000                 echo " "
15001                 $cat <<EOM
15002 Checking to see what type of arguments are accepted by select().
15003 EOM
15004                 hdrs="$define sys/types.h
15005                         $i_systime sys/time.h 
15006                         $i_sysselct sys/select.h
15007                         $d_socket sys/socket.h"
15008                 : The first arg can be int, unsigned, or size_t
15009                 : The last arg may or may not be 'const'
15010                 val=''
15011                 : void pointer has been seen but using that
15012                 : breaks the selectminbits test
15013                 for xxx in 'fd_set *' 'int *'; do
15014                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15015                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15016                                         case "$val" in
15017                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15018                                                 if ./protochk "$try" $hdrs; then
15019                                                         echo "Your system accepts $xxx."
15020                                                         val="$xxx"
15021                                                 fi
15022                                                 ;;
15023                                         esac
15024                                 done
15025                         done
15026                 done
15027                 case "$val" in
15028                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15029                         case "$d_fd_set" in
15030                                 $define) dflt="fd_set *" ;;
15031                                 *)              dflt="int *" ;;
15032                         esac
15033                         . ./myread
15034                         val=$ans
15035                         ;;
15036                 esac
15037                 selecttype="$val"
15038                 ;;
15039         *)      : no select, so pick a harmless default
15040                 selecttype='int *'
15041                 ;;
15042         esac
15043         ;;
15044 esac
15045
15046 : check for the select 'width'
15047 case "$selectminbits" in
15048 '') case "$d_select" in
15049         $define)
15050                 $cat <<EOM
15051
15052 Checking to see on how many bits at a time your select() operates...
15053 EOM
15054                 $cat >try.c <<EOCP
15055 #include <sys/types.h>
15056 #$i_time I_TIME
15057 #$i_systime I_SYS_TIME
15058 #$i_systimek I_SYS_TIME_KERNEL
15059 #ifdef I_TIME
15060 #   include <time.h>
15061 #endif
15062 #ifdef I_SYS_TIME
15063 #   ifdef I_SYS_TIME_KERNEL
15064 #       define KERNEL
15065 #   endif
15066 #   include <sys/time.h>
15067 #   ifdef I_SYS_TIME_KERNEL
15068 #       undef KERNEL
15069 #   endif
15070 #endif
15071 #$i_sysselct I_SYS_SELECT
15072 #ifdef I_SYS_SELECT
15073 #include <sys/select.h>
15074 #endif
15075 #$d_socket HAS_SOCKET
15076 #ifdef HAS_SOCKET
15077 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15078 #endif
15079 #include <stdio.h>
15080 $selecttype b;
15081 #define S sizeof(*(b))
15082 #define MINBITS 64
15083 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15084 #define NBITS  (NBYTES * 8)
15085 int main() {
15086     char s[NBYTES];
15087     struct timeval t;
15088     int i;
15089     FILE* fp;
15090     int fd;
15091
15092     fclose(stdin);
15093     fp = fopen("try.c", "r");
15094     if (fp == 0)
15095       exit(1);
15096     fd = fileno(fp);
15097     if (fd < 0)
15098       exit(2);
15099     b = ($selecttype)s;
15100     for (i = 0; i < NBITS; i++)
15101         FD_SET(i, b);
15102     t.tv_sec  = 0;
15103     t.tv_usec = 0;
15104     select(fd + 1, b, 0, 0, &t);
15105     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15106     printf("%d\n", i + 1);
15107     return 0;
15108 }
15109 EOCP
15110                 set try
15111                 if eval $compile_ok; then
15112                         selectminbits=`$run ./try`
15113                         case "$selectminbits" in
15114                         '')     cat >&4 <<EOM
15115 Cannot figure out on how many bits at a time your select() operates.
15116 I'll play safe and guess it is 32 bits.
15117 EOM
15118                                 selectminbits=32
15119                                 bits="32 bits"
15120                                 ;;
15121                         1)      bits="1 bit" ;;
15122                         *)      bits="$selectminbits bits" ;;
15123                         esac
15124                         echo "Your select() operates on $bits at a time." >&4
15125                 else
15126                         rp='What is the minimum number of bits your select() operates on?'
15127                         case "$byteorder" in
15128                         1234|12345678)  dflt=32 ;;
15129                         *)              dflt=1  ;;
15130                         esac
15131                         . ./myread
15132                         val=$ans
15133                         selectminbits="$val"
15134                 fi
15135                 $rm -f try.* try
15136                 ;;
15137         *)      : no select, so pick a harmless default
15138                 selectminbits='32'
15139                 ;;
15140         esac
15141         ;;
15142 esac
15143
15144 : Trace out the files included by signal.h, then look for SIGxxx names.
15145 : Remove SIGARRAYSIZE used by HPUX.
15146 : Remove SIGSTKSIZE used by Linux.
15147 : Remove SIGSTKSZ used by Posix.
15148 : Remove SIGTYP void lines used by OS2.
15149 : Some cpps, like os390, dont give the file name anywhere
15150 if [ "X$fieldn" = X ]; then
15151         : Just make some guesses.  We check them later.
15152         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15153 else
15154         xxx=`echo '#include <signal.h>' |
15155         $cppstdin $cppminus $cppflags 2>/dev/null |
15156         $grep '^[       ]*#.*include' | 
15157         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15158 fi
15159 : Check this list of files to be sure we have parsed the cpp output ok.
15160 : This will also avoid potentially non-existent files, such 
15161 : as ../foo/bar.h
15162 xxxfiles=''
15163 for xx in $xxx /dev/null ; do
15164         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15165 done
15166 : If we have found no files, at least try signal.h
15167 case "$xxxfiles" in
15168 '')     xxxfiles=`./findhdr signal.h` ;;
15169 esac
15170 xxx=`awk '
15171 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15172         print substr($2, 4, 20)
15173 }
15174 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15175         print substr($3, 4, 20)
15176 }' $xxxfiles`
15177 : Append some common names just in case the awk scan failed.
15178 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15179 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15180 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15181 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15182 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15183
15184 : generate a few handy files for later
15185 $cat > signal.c <<'EOCP'
15186 #include <sys/types.h>
15187 #include <signal.h>
15188 #include <stdio.h>
15189 int main() {
15190
15191 /* Strange style to avoid deeply-nested #if/#else/#endif */
15192 #ifndef NSIG
15193 #  ifdef _NSIG
15194 #    define NSIG (_NSIG)
15195 #  endif
15196 #endif
15197
15198 #ifndef NSIG
15199 #  ifdef SIGMAX
15200 #    define NSIG (SIGMAX+1)
15201 #  endif
15202 #endif
15203
15204 #ifndef NSIG
15205 #  ifdef SIG_MAX
15206 #    define NSIG (SIG_MAX+1)
15207 #  endif
15208 #endif
15209
15210 #ifndef NSIG
15211 #  ifdef MAXSIG
15212 #    define NSIG (MAXSIG+1)
15213 #  endif
15214 #endif
15215
15216 #ifndef NSIG
15217 #  ifdef MAX_SIG
15218 #    define NSIG (MAX_SIG+1)
15219 #  endif
15220 #endif
15221
15222 #ifndef NSIG
15223 #  ifdef SIGARRAYSIZE
15224 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15225 #  endif
15226 #endif
15227
15228 #ifndef NSIG
15229 #  ifdef _sys_nsig
15230 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15231 #  endif
15232 #endif
15233
15234 /* Default to some arbitrary number that's big enough to get most
15235    of the common signals.
15236 */
15237 #ifndef NSIG
15238 #    define NSIG 50
15239 #endif
15240
15241 printf("NSIG %d\n", NSIG);
15242
15243 #ifndef JUST_NSIG
15244
15245 EOCP
15246
15247 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15248 {
15249         printf "#ifdef SIG"; printf $1; printf "\n"
15250         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15251         printf $1; printf ");\n"
15252         printf "#endif\n"
15253 }
15254 END {
15255         printf "#endif /* JUST_NSIG */\n";
15256         printf "exit(0);\n}\n";
15257 }
15258 ' >>signal.c
15259 $cat >signal.awk <<'EOP'
15260 BEGIN { ndups = 0 }
15261 $1 ~ /^NSIG$/ { nsig = $2 }
15262 ($1 !~ /^NSIG$/) && (NF == 2) {
15263     if ($2 > maxsig) { maxsig = $2 }
15264     if (sig_name[$2]) {
15265         dup_name[ndups] = $1
15266         dup_num[ndups] = $2
15267         ndups++ 
15268     }
15269     else {
15270         sig_name[$2] = $1
15271         sig_num[$2] = $2
15272     }
15273 }
15274 END { 
15275     if (nsig == 0) {
15276         nsig = maxsig + 1
15277     }
15278     printf("NSIG %d\n", nsig);
15279     for (n = 1; n < nsig; n++) {
15280         if (sig_name[n]) {
15281             printf("%s %d\n", sig_name[n], sig_num[n])
15282         }
15283         else {
15284             printf("NUM%d %d\n", n, n) 
15285         }
15286     }
15287     for (n = 0; n < ndups; n++) {
15288         printf("%s %d\n", dup_name[n], dup_num[n])
15289     }
15290 }
15291 EOP
15292 $cat >signal_cmd <<EOS
15293 $startsh
15294 if $test -s signal.lst; then
15295     echo "Using your existing signal.lst file"
15296         exit 0
15297 fi
15298 xxx="$xxx"
15299 EOS
15300 $cat >>signal_cmd <<'EOS'
15301
15302 set signal
15303 if eval $compile_ok; then
15304         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15305 else
15306         echo "(I can't seem be able to compile the whole test program)" >&4
15307         echo "(I'll try it in little pieces.)" >&4
15308         set signal -DJUST_NSIG
15309         if eval $compile_ok; then
15310                 $run ./signal$_exe > signal.nsg
15311                 $cat signal.nsg
15312         else
15313                 echo "I can't seem to figure out how many signals you have." >&4
15314                 echo "Guessing 50." >&4
15315                 echo 'NSIG 50' > signal.nsg
15316         fi
15317         : Now look at all the signal names, one at a time.
15318         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15319                 $cat > signal.c <<EOCP
15320 #include <sys/types.h>
15321 #include <signal.h>
15322 #include <stdio.h>
15323 int main() {
15324 printf("$xx %d\n", SIG${xx});
15325 return 0;
15326 }
15327 EOCP
15328                 set signal
15329                 if eval $compile; then
15330                         echo "SIG${xx} found."
15331                         $run ./signal$_exe  >> signal.ls1
15332                 else
15333                         echo "SIG${xx} NOT found."
15334                 fi
15335         done
15336         if $test -s signal.ls1; then
15337                 $cat signal.nsg signal.ls1 |
15338                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15339         fi
15340
15341 fi
15342 if $test -s signal.lst; then
15343         :
15344 else
15345         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15346         echo 'kill -l' >signal
15347         set X `csh -f <signal`
15348         $rm -f signal
15349         shift
15350         case $# in
15351         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15352         esac
15353         echo $@ | $tr ' ' $trnl | \
15354             $awk '{ printf "%s %d\n", $1, ++s; }
15355                   END { printf "NSIG %d\n", ++s }' >signal.lst
15356 fi
15357 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15358 EOS
15359 chmod a+x signal_cmd
15360 $eunicefix signal_cmd
15361
15362 : generate list of signal names
15363 echo " "
15364 case "$sig_name_init" in
15365 '') doinit=yes ;;
15366 *)  case "$sig_num_init" in
15367     ''|*,*) doinit=yes ;;
15368     esac ;;
15369 esac
15370 case "$doinit" in
15371 yes)
15372         echo "Generating a list of signal names and numbers..." >&4
15373         . ./signal_cmd
15374         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15375         sig_name=`$awk 'BEGIN { printf "ZERO " }
15376                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15377         sig_num=`$awk  'BEGIN { printf "0 " }
15378                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15379         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15380                              !/^NSIG/   { printf "\"%s\", ", $1 }
15381                              END        { printf "0\n" }' signal.lst`
15382         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15383                              !/^NSIG/   { printf "%d, ", $2}
15384                              END        { printf "0\n"}' signal.lst`
15385         ;;
15386 esac
15387 echo "The following $sig_count signals are available:"
15388 echo " "
15389 echo $sig_name | $awk \
15390 'BEGIN { linelen = 0 }
15391 {
15392         for (i = 1; i <= NF; i++) {
15393                 name = "SIG" $i " "
15394                 linelen = linelen + length(name)
15395                 if (linelen > 70) {
15396                         printf "\n"
15397                         linelen = length(name)
15398                 }
15399                 printf "%s", name
15400         }
15401         printf "\n"
15402 }'
15403 sig_size=`echo $sig_name | awk '{print NF}'`
15404 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15405
15406 echo " "
15407 case "$sizetype" in
15408 *_t) zzz="$sizetype"    ;;
15409 *)   zzz="filesize"     ;;
15410 esac
15411 echo "Checking the size of $zzz..." >&4 
15412 cat > try.c <<EOCP
15413 #include <sys/types.h>
15414 #include <stdio.h>
15415 int main() {
15416     printf("%d\n", (int)sizeof($sizetype));
15417     exit(0);
15418 }
15419 EOCP
15420 set try
15421 if eval $compile_ok; then
15422         yyy=`$run ./try`
15423         case "$yyy" in
15424         '')     sizesize=4
15425                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15426                 ;;
15427         *)      sizesize=$yyy
15428                 echo "Your $zzz size is $sizesize bytes."
15429                 ;;
15430         esac
15431 else
15432         sizesize=4
15433         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15434 fi
15435
15436
15437 : check for socklen_t
15438 echo " "
15439 echo "Checking to see if you have socklen_t..." >&4
15440 $cat >try.c <<EOCP
15441 #include <sys/types.h>
15442 #$d_socket HAS_SOCKET
15443 #ifdef HAS_SOCKET
15444 #include <sys/socket.h>
15445 #endif
15446 int main() { socklen_t x = 16; }
15447 EOCP
15448 set try
15449 if eval $compile; then
15450         val="$define"
15451         echo "You have socklen_t."
15452 else
15453         val="$undef"
15454         echo "You do not have socklen_t."
15455         case "$sizetype" in
15456         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15457         esac
15458 fi
15459 $rm -f try try.*
15460 set d_socklen_t
15461 eval $setvar
15462
15463 : see if this is a socks.h system
15464 set socks.h i_socks
15465 eval $inhdr
15466
15467 : check for type of the size argument to socket calls
15468 case "$d_socket" in
15469 "$define")
15470         $cat <<EOM
15471
15472 Checking to see what type is the last argument of accept().
15473 EOM
15474         yyy=''
15475         case "$d_socklen_t" in
15476         "$define") yyy="$yyy socklen_t"
15477         esac
15478         yyy="$yyy $sizetype int long unsigned"
15479         for xxx in $yyy; do
15480                 case "$socksizetype" in
15481                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15482                         case "$usesocks" in
15483                         "$define")
15484                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15485                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15486                                         socksizetype="$xxx"
15487                                 fi
15488                                 ;;
15489                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15490                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15491                                         socksizetype="$xxx"
15492                                 fi
15493                                 ;;
15494                         esac
15495                         ;;
15496                 esac
15497         done
15498 : In case none of those worked, prompt the user.
15499         case "$socksizetype" in
15500         '')     rp='What is the type for socket address structure sizes?'
15501                 dflt='int'
15502                 . ./myread
15503                 socksizetype=$ans
15504                 ;;
15505         esac
15506         ;;
15507 *)      : no sockets, so pick relatively harmless default
15508         socksizetype='int'
15509         ;;
15510 esac
15511
15512 : see what type is used for signed size_t
15513 set ssize_t ssizetype int stdio.h sys/types.h
15514 eval $typedef
15515 dflt="$ssizetype"
15516 $cat > try.c <<EOM
15517 #include <stdio.h>
15518 #include <sys/types.h>
15519 #define Size_t $sizetype
15520 #define SSize_t $dflt
15521 int main()
15522 {
15523         if (sizeof(Size_t) == sizeof(SSize_t))
15524                 printf("$dflt\n");
15525         else if (sizeof(Size_t) == sizeof(int))
15526                 printf("int\n");
15527         else 
15528                 printf("long\n");
15529         exit(0);
15530 }
15531 EOM
15532 echo " "
15533 set try
15534 if eval $compile_ok && $run ./try > /dev/null; then
15535         ssizetype=`$run ./try`
15536         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15537 else
15538         $cat >&4 <<EOM
15539 Help! I can't compile and run the ssize_t test program: please enlighten me!
15540 (This is probably a misconfiguration in your system or libraries, and
15541 you really ought to fix it.  Still, I'll try anyway.)
15542
15543 I need a type that is the same size as $sizetype, but is guaranteed to
15544 be signed.  Common values are ssize_t, int and long.
15545
15546 EOM
15547         rp="What signed type is the same size as $sizetype?"
15548         . ./myread
15549         ssizetype="$ans"
15550 fi
15551 $rm -f try try.*
15552
15553 : see what type of char stdio uses.
15554 echo " "
15555 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15556 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15557         echo "Your stdio uses unsigned chars." >&4
15558         stdchar="unsigned char"
15559 else
15560         echo "Your stdio uses signed chars." >&4
15561         stdchar="char"
15562 fi
15563 $rm -f stdioh
15564
15565
15566
15567 : see if time exists
15568 echo " "
15569 if test "X$d_time" = X -o X"$timetype" = X; then
15570     if set time val -f d_time; eval $csym; $val; then
15571                 echo 'time() found.' >&4
15572                 val="$define"
15573                 rp="What is the type returned by time() on this system?"
15574                 set time_t timetype long stdio.h sys/types.h
15575                 eval $typedef_ask
15576     else
15577                 echo 'time() not found, hope that will do.' >&4
15578                 val="$undef"
15579                 timetype='int';
15580     fi
15581     set d_time
15582     eval $setvar
15583 fi
15584
15585 : see what type uids are declared as in the kernel
15586 echo " "
15587 echo "Looking for the type for user ids returned by getuid()."
15588 set uid_t uidtype xxx stdio.h sys/types.h
15589 eval $typedef
15590 case "$uidtype" in
15591 xxx)
15592         xxx=`./findhdr sys/user.h`
15593         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15594         case $1 in
15595         unsigned) dflt="$1 $2" ;;
15596         *) dflt="$1" ;;
15597         esac
15598         ;;
15599 *) dflt="$uidtype";;
15600 esac
15601 case "$uidtype" in
15602 uid_t)  echo "uid_t found." ;;
15603 *)      rp="What is the type for user ids returned by getuid()?"
15604         . ./myread
15605         uidtype="$ans"
15606         ;;
15607 esac
15608
15609 echo " "
15610 case "$uidtype" in
15611 *_t) zzz="$uidtype"     ;;
15612 *)   zzz="uid"          ;;
15613 esac
15614 echo "Checking the size of $zzz..." >&4 
15615 cat > try.c <<EOCP
15616 #include <sys/types.h>
15617 #include <stdio.h>
15618 int main() {
15619     printf("%d\n", (int)sizeof($uidtype));
15620     exit(0);
15621 }
15622 EOCP
15623 set try
15624 if eval $compile_ok; then
15625         yyy=`$run ./try`
15626         case "$yyy" in
15627         '')     uidsize=4
15628                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15629                 ;;
15630         *)      uidsize=$yyy
15631                 echo "Your $zzz is $uidsize bytes long."
15632                 ;;
15633         esac
15634 else
15635         uidsize=4
15636         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15637 fi
15638
15639 echo " "
15640 case "$uidtype" in
15641 *_t) zzz="$uidtype"     ;;
15642 *)   zzz="uid"          ;;
15643 esac
15644 echo "Checking the sign of $zzz..." >&4
15645 cat > try.c <<EOCP
15646 #include <sys/types.h>
15647 #include <stdio.h>
15648 int main() {
15649         $uidtype foo = -1;
15650         if (foo < 0)
15651                 printf("-1\n");
15652         else
15653                 printf("1\n");
15654 }
15655 EOCP
15656 set try
15657 if eval $compile; then
15658         yyy=`$run ./try`
15659         case "$yyy" in
15660         '')     uidsign=1
15661                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15662                 ;;
15663         *)      uidsign=$yyy
15664                 case "$uidsign" in
15665                  1) echo "Your $zzz is unsigned." ;;
15666                 -1) echo "Your $zzz is signed."   ;;
15667                 esac
15668                 ;;
15669         esac
15670 else
15671         uidsign=1
15672         echo "(I can't compile the test program--guessing unsigned.)" >&4
15673 fi
15674
15675
15676
15677 echo " "
15678 $echo "Checking the format string to be used for uids..." >&4
15679
15680 case "$uidsign" in
15681 -1)     if $test X"$uidsize" = X"$ivsize"; then
15682                 uidformat="$ivdformat"
15683         else
15684                 if $test X"$uidsize" = X"$longsize"; then
15685                         uidformat='"ld"'
15686                 else
15687                         if $test X"$uidsize" = X"$intsize"; then
15688                                 uidformat='"d"'
15689                         else
15690                                 if $test X"$uidsize" = X"$shortsize"; then
15691                                         uidformat='"hd"'
15692                                 fi
15693                         fi
15694                 fi
15695         fi
15696         ;;
15697 *)      if $test X"$uidsize" = X"$uvsize"; then
15698                 uidformat="$uvuformat"
15699         else
15700                 if $test X"$uidsize" = X"$longsize"; then
15701                         uidformat='"lu"'
15702                 else
15703                         if $test X"$uidsize" = X"$intsize"; then
15704                                 uidformat='"u"'
15705                         else
15706                                 if $test X"$uidsize" = X"$shortsize"; then
15707                                         uidformat='"hu"'
15708                                 fi
15709                         fi
15710                 fi
15711         fi
15712         ;;
15713 esac
15714
15715 : determine compiler compiler
15716 case "$yacc" in
15717 '')
15718         dflt=yacc;;
15719 *)
15720         dflt="$yacc";;
15721 esac
15722 echo " "
15723 comp='yacc'
15724 if $test -f "$byacc"; then
15725         dflt="$byacc"
15726         comp="byacc or $comp"
15727 fi
15728 if $test -f "$bison"; then
15729         comp="$comp or bison -y"
15730 fi
15731 rp="Which compiler compiler ($comp) shall I use?"
15732 . ./myread
15733 yacc="$ans"
15734 case "$yacc" in
15735 *bis*)
15736         case "$yacc" in
15737         *-y*) ;;
15738         *)
15739                 yacc="$yacc -y"
15740                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15741                 ;;
15742         esac
15743         ;;
15744 esac
15745
15746 : see if fcntl.h is there
15747 val=''
15748 set fcntl.h val
15749 eval $inhdr
15750
15751 : see if we can include fcntl.h
15752 case "$val" in
15753 "$define")
15754         echo " "
15755         if $h_fcntl; then
15756                 val="$define"
15757                 echo "We'll be including <fcntl.h>." >&4
15758         else
15759                 val="$undef"
15760                 if $h_sysfile; then
15761         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15762                 else
15763                         echo "We won't be including <fcntl.h>." >&4
15764                 fi
15765         fi
15766         ;;
15767 *)
15768         h_fcntl=false
15769         val="$undef"
15770         ;;
15771 esac
15772 set i_fcntl
15773 eval $setvar
15774
15775 : see if this is a iconv.h system
15776 set iconv.h i_iconv
15777 eval $inhdr
15778
15779 : see if this is a ieeefp.h system
15780 set ieeefp.h i_ieeefp
15781 eval $inhdr
15782
15783 : see if this is a libutil.h system
15784 set libutil.h i_libutil
15785 eval $inhdr
15786
15787 : see if locale.h is available
15788 set locale.h i_locale
15789 eval $inhdr
15790
15791 : see if mach cthreads are available
15792 if test "X$usethreads" = "X$define"; then
15793         set mach/cthreads.h i_machcthr
15794         eval $inhdr
15795 else
15796         i_machcthr="$undef"
15797 fi
15798
15799
15800
15801 : see if this is a math.h system
15802 set math.h i_math
15803 eval $inhdr
15804
15805 : see if this is a mntent.h system
15806 set mntent.h i_mntent
15807 eval $inhdr
15808
15809 : see if ndbm.h is available
15810 set ndbm.h t_ndbm
15811 eval $inhdr
15812 case "$t_ndbm" in
15813 $define)
15814         : see if dbm_open exists
15815         set dbm_open d_dbm_open
15816         eval $inlibc
15817         case "$d_dbm_open" in
15818         $undef)
15819                 t_ndbm="$undef"
15820                 echo "We won't be including <ndbm.h>"
15821                 ;;
15822         esac
15823         ;;
15824 esac
15825 val="$t_ndbm"
15826 set i_ndbm
15827 eval $setvar
15828
15829 : see if net/errno.h is available
15830 val=''
15831 set net/errno.h val
15832 eval $inhdr
15833
15834 : Unfortunately, it causes problems on some systems.  Arrgh.
15835 case "$val" in
15836 $define)
15837         cat > try.c <<'EOM'
15838 #include <stdio.h>
15839 #include <errno.h>
15840 #include <net/errno.h>
15841 int func()
15842 {
15843         return ENOTSOCK;
15844 }
15845 EOM
15846         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15847                 echo "We'll be including <net/errno.h>." >&4
15848         else
15849                 echo "We won't be including <net/errno.h>." >&4
15850                 val="$undef"
15851         fi
15852         $rm -f try.* try
15853         ;;
15854 esac
15855 set i_neterrno
15856 eval $setvar
15857
15858 : see if netinet/tcp.h is available
15859 set netinet/tcp.h i_netinettcp
15860 eval $inhdr
15861
15862 : see if this is a poll.h system
15863 set poll.h i_poll
15864 eval $inhdr
15865
15866 : see if this is a prot.h system
15867 set prot.h i_prot
15868 eval $inhdr
15869
15870 echo " "
15871 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15872 $cat <<'EOSH' > Cppsym.know
15873 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15874 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15875 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15876 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15877 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15878 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15879 bull c cadmus clipper CMU COFF COMPILER_VERSION
15880 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15881 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15882 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15883 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15884 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15885 H3050R H3050RX hbullx20 hcx host_mips
15886 hp200 hp300 hp700 HP700 hp800 hp9000
15887 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15888 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15889 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15890 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15891 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15892 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15893 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15894 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15895 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15896 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15897 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15898 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15899 MATH_HAS_NO_SIDE_EFFECTS
15900 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15901 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15902 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15903 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15904 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15905 NetBSD news1500 news1700 news1800 news1900 news3700
15906 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15907 ns32016 ns32332 ns32k nsc32000
15908 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15909 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15910 pc532 pdp11 PGC PIC plexus PORTAR posix
15911 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15912 POSIX_C_SOURCE POSIX_SOURCE POWER
15913 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15914 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15915 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15916 sony sony_news sonyrisc sparc sparclite spectrum
15917 stardent stdc STDC_EXT stratos sun sun3 sun386
15918 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15919 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15920 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15921 sysV68 sysV88 Tek4132 Tek4300 titan
15922 TM3200 TM5400 TM5600
15923 tower tower32 tower32_200 tower32_600 tower32_700
15924 tower32_800 tower32_850 tss
15925 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15926 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15927 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15928 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15929 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15930 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15931 z8000
15932 EOSH
15933 # Maybe put other stuff here too.
15934 cat <<EOSH >>Cppsym.know
15935 $osname
15936 EOSH
15937 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15938 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15939 $cat Cppsym.know > Cppsym.c
15940 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15941 $rm -f Cppsym.a Cppsym.b Cppsym.c
15942 cat <<EOSH > Cppsym
15943 $startsh
15944 if $test \$# -gt 0; then
15945     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15946     if $test -s Cppsym.got; then
15947         $rm -f Cppsym.got
15948         exit 0
15949     fi
15950     $rm -f Cppsym.got
15951     exit 1
15952 else
15953     $tr " " "$trnl" | ./Cppsym.try
15954     exit 0
15955 fi
15956 EOSH
15957 chmod +x Cppsym
15958 $eunicefix Cppsym
15959 cat <<EOSH > Cppsym.try
15960 $startsh
15961 cat <<'EOCP' > try.c
15962 #include <stdio.h>
15963 int main() {
15964 EOCP
15965 $awk \\
15966 EOSH
15967 cat <<'EOSH' >> Cppsym.try
15968 'length($1) > 0 {
15969     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
15970     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
15971     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
15972     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
15973 }'       >> try.c
15974 echo 'return 0;}' >> try.c
15975 EOSH
15976 cat <<EOSH >> Cppsym.try
15977 ccflags="$ccflags"
15978 case "$osname-$gccversion" in
15979 irix-) ccflags="\$ccflags -woff 1178" ;;
15980 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15981 esac
15982 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15983 EOSH
15984 chmod +x Cppsym.try
15985 $eunicefix Cppsym.try
15986 ./Cppsym < Cppsym.know > Cppsym.true
15987 : now check the C compiler for additional symbols
15988 postprocess_cc_v=''
15989 case "$osname" in
15990 aix) postprocess_cc_v="|$tr , ' '" ;;
15991 esac
15992 $cat >ccsym <<EOS
15993 $startsh
15994 $cat >tmp.c <<EOF
15995 extern int foo;
15996 EOF
15997 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15998 do
15999         case "\$i" in
16000         -D*) echo "\$i" | $sed 's/^-D//';;
16001         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
16002         esac
16003 done
16004 $rm -f try.c
16005 EOS
16006 postprocess_cc_v=''
16007 chmod +x ccsym
16008 $eunicefix ccsym
16009 ./ccsym > ccsym1.raw
16010 if $test -s ccsym1.raw; then
16011        $sort ccsym1.raw | $uniq >ccsym.raw
16012 else
16013        mv ccsym1.raw ccsym.raw
16014 fi
16015
16016 $awk '/\=/ { print $0; next }
16017         { print $0"=1" }' ccsym.raw >ccsym.list
16018 $awk '/\=/ { print $0; next }
16019         { print $0"=1" }' Cppsym.true >ccsym.true
16020 $comm -13 ccsym.true ccsym.list >ccsym.own
16021 $comm -12 ccsym.true ccsym.list >ccsym.com
16022 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16023 also=''
16024 if $test -z ccsym.raw; then
16025         echo "Your C compiler doesn't seem to define any symbols!" >&4
16026         echo " "
16027         echo "However, your C preprocessor defines the following symbols:"
16028         $cat Cppsym.true
16029         ccsymbols=''
16030         cppsymbols=`$cat Cppsym.true`
16031         cppsymbols=`echo $cppsymbols`
16032         cppccsymbols="$cppsymbols"
16033 else
16034         if $test -s ccsym.com; then
16035                 echo "Your C compiler and pre-processor define these symbols:"
16036                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16037                 also='also '
16038                 symbols='ones'
16039                 cppccsymbols=`$cat ccsym.com`
16040                 cppccsymbols=`echo $cppccsymbols`
16041                 $test "$silent" || sleep 1
16042         fi
16043         if $test -s ccsym.cpp; then
16044                 $test "$also" && echo " "
16045                 echo "Your C pre-processor ${also}defines the following symbols:"
16046                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16047                 also='further '
16048                 cppsymbols=`$cat ccsym.cpp`
16049                 cppsymbols=`echo $cppsymbols`
16050                 $test "$silent" || sleep 1
16051         fi
16052         if $test -s ccsym.own; then
16053                 $test "$also" && echo " "
16054                 echo "Your C compiler ${also}defines the following cpp symbols:"
16055                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16056                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16057                 ccsymbols=`$cat ccsym.own`
16058                 ccsymbols=`echo $ccsymbols`
16059                 $test "$silent" || sleep 1
16060         fi
16061 fi
16062
16063 : see if this is a termio system
16064 val="$undef"
16065 val2="$undef"
16066 val3="$undef"
16067 if $test `./findhdr termios.h`; then
16068         set tcsetattr i_termios
16069         eval $inlibc
16070         val3="$i_termios"
16071 fi
16072 echo " "
16073 case "$val3" in
16074 "$define") echo "You have POSIX termios.h... good!" >&4;;
16075 *) if ./Cppsym pyr; then
16076                 case "`/bin/universe`" in
16077                 ucb) if $test `./findhdr sgtty.h`; then
16078                                 val2="$define"
16079                                 echo "<sgtty.h> found." >&4
16080                         else
16081                                 echo "System is pyramid with BSD universe."
16082                                 echo "<sgtty.h> not found--you could have problems." >&4
16083                         fi;;
16084                 *) if $test `./findhdr termio.h`; then
16085                                 val="$define"
16086                                 echo "<termio.h> found." >&4
16087                         else
16088                                 echo "System is pyramid with USG universe."
16089                                 echo "<termio.h> not found--you could have problems." >&4
16090                         fi;;
16091                 esac
16092         elif ./usg; then
16093                 if $test `./findhdr termio.h`; then
16094                         echo "<termio.h> found." >&4
16095                         val="$define"
16096                 elif $test `./findhdr sgtty.h`; then
16097                         echo "<sgtty.h> found." >&4
16098                         val2="$define"
16099                 else
16100 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16101                 fi
16102         else
16103                 if $test `./findhdr sgtty.h`; then
16104                         echo "<sgtty.h> found." >&4
16105                         val2="$define"
16106                 elif $test `./findhdr termio.h`; then
16107                         echo "<termio.h> found." >&4
16108                         val="$define"
16109                 else
16110 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16111                 fi
16112         fi;;
16113 esac
16114 set i_termio; eval $setvar
16115 val=$val2; set i_sgtty; eval $setvar
16116 val=$val3; set i_termios; eval $setvar
16117
16118 : see if this is a shadow.h system
16119 set shadow.h i_shadow
16120 eval $inhdr
16121
16122 : see if stddef is available
16123 set stddef.h i_stddef
16124 eval $inhdr
16125
16126 : see if this is a sunmath.h system
16127 set sunmath.h i_sunmath
16128 eval $inhdr
16129
16130 : see if sys/access.h is available
16131 set sys/access.h i_sysaccess
16132 eval $inhdr
16133
16134 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16135 set sys/filio.h i_sysfilio
16136 eval $inhdr
16137 echo " "
16138 if $test `./findhdr sys/ioctl.h`; then
16139         val="$define"
16140         echo '<sys/ioctl.h> found.' >&4
16141 else
16142         val="$undef"
16143         if $test $i_sysfilio = "$define"; then
16144             echo '<sys/ioctl.h> NOT found.' >&4
16145         else
16146                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16147                 $test $i_termio = "$define" && xxx="termio.h"
16148                 $test $i_termios = "$define" && xxx="termios.h"
16149 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16150         fi
16151 fi
16152 set i_sysioctl
16153 eval $setvar
16154
16155 : see if socket ioctl defs are in sys/sockio.h
16156 echo " "
16157 xxx=`./findhdr sys/sockio.h`
16158 if $test "$xxx"; then
16159         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16160                 val="$define"
16161                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16162         else
16163                 val="$undef"
16164                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16165         fi
16166 else
16167         val="$undef"
16168         $cat <<EOM
16169 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16170 EOM
16171 fi
16172 set i_syssockio
16173 eval $setvar
16174
16175
16176 : see if this is a syslog.h system
16177 set syslog.h i_syslog
16178 eval $inhdr
16179
16180
16181 : see if this is a sys/mode.h system
16182 set sys/mode.h i_sysmode
16183 eval $inhdr
16184
16185 : see if sys/resource.h has to be included
16186 set sys/resource.h i_sysresrc
16187 eval $inhdr
16188
16189 : see if sys/security.h is available
16190 set sys/security.h i_syssecrt
16191 eval $inhdr
16192
16193 : see if this is a sys/statvfs.h system
16194 set sys/statvfs.h i_sysstatvfs
16195 eval $inhdr
16196
16197 : see if this is a sys/un.h system
16198 set sys/un.h i_sysun
16199 eval $inhdr
16200
16201
16202 : see if this is a sys/utsname.h system
16203 set sys/utsname.h i_sysutsname
16204 eval $inhdr
16205
16206 : see if this is a syswait system
16207 set sys/wait.h i_syswait
16208 eval $inhdr
16209
16210 : see if this is a ustat.h system
16211 set ustat.h i_ustat
16212 eval $inhdr
16213
16214 : see if this is an utime system
16215 set utime.h i_utime
16216 eval $inhdr
16217
16218 : see if this is a values.h system
16219 set values.h i_values
16220 eval $inhdr
16221
16222 : see if this is a vfork system
16223 case "$d_vfork" in
16224 "$define")
16225         set vfork.h i_vfork
16226         eval $inhdr
16227         ;;
16228 *)
16229         i_vfork="$undef"
16230         ;;
16231 esac
16232
16233 : see if gdbm.h is available
16234 set gdbm.h t_gdbm
16235 eval $inhdr
16236 case "$t_gdbm" in
16237 $define)
16238         : see if gdbm_open exists
16239         set gdbm_open d_gdbm_open
16240         eval $inlibc
16241         case "$d_gdbm_open" in
16242         $undef)
16243                 t_gdbm="$undef"
16244                 echo "We won't be including <gdbm.h>"
16245                 ;;
16246         esac
16247         ;;
16248 esac
16249 val="$t_gdbm"
16250 set i_gdbm
16251 eval $setvar
16252
16253 echo " "
16254 echo "Looking for extensions..." >&4
16255 : If we are using the old config.sh, known_extensions may contain
16256 : old or inaccurate or duplicate values.
16257 known_extensions=''
16258 nonxs_extensions=''
16259 : We do not use find because it might not be available.
16260 : We do not just use MANIFEST because the user may have dropped
16261 : some additional extensions into the source tree and expect them
16262 : to be built.
16263
16264 : Function to recursively find available extensions, ignoring DynaLoader
16265 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16266 find_extensions='
16267     for xxx in *; do
16268        case "$xxx" in
16269            DynaLoader|dynaload) ;;
16270            *)
16271            if $test -f $xxx/$xxx.xs; then
16272                known_extensions="$known_extensions $1$xxx";
16273            elif $test -f $xxx/Makefile.PL; then
16274                nonxs_extensions="$nonxs_extensions $1$xxx";
16275            else
16276                if $test -d $xxx -a $# -lt 10; then
16277                    set $1$xxx/ $*;
16278                    cd $xxx;
16279                    eval $find_extensions;
16280                    cd ..;
16281                    shift;
16282                fi;
16283            fi
16284            ;;
16285        esac;
16286     done'
16287 tdir=`pwd`
16288 cd $rsrc/ext
16289 set X
16290 shift
16291 eval $find_extensions
16292 set X $nonxs_extensions
16293 shift
16294 nonxs_extensions="$*"
16295 set X $known_extensions
16296 shift
16297 known_extensions="$*"
16298 cd $tdir
16299
16300 : Now see which are supported on this system.
16301 avail_ext=''
16302 for xxx in $known_extensions ; do
16303         case "$xxx" in
16304         DB_File|db_file)
16305                 case "$i_db" in
16306                 $define) avail_ext="$avail_ext $xxx" ;;
16307                 esac
16308                 ;;
16309         GDBM_File|gdbm_fil)
16310                 case "$i_gdbm" in 
16311                 $define) avail_ext="$avail_ext $xxx" ;;
16312                 esac
16313                 ;;
16314         I18N/Langinfo|i18n_lan)
16315                 case "$i_langinfo$d_nl_langinfo" in 
16316                 $define$define) avail_ext="$avail_ext $xxx" ;;
16317                 esac
16318                 ;;
16319         NDBM_File|ndbm_fil)
16320                 case "$i_ndbm" in
16321                 $define)
16322                     case "$osname-$use64bitint" in
16323                     cygwin-*|hpux-define)
16324                         case "$libs" in
16325                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16326                         esac
16327                         ;;
16328                     *) avail_ext="$avail_ext $xxx" ;;
16329                     esac
16330                     ;;
16331                 esac
16332                 ;;
16333         ODBM_File|odbm_fil) 
16334                 case "${i_dbm}${i_rpcsvcdbm}" in
16335                 *"${define}"*)
16336                     case "$osname-$use64bitint" in
16337                     cygwin-*|hpux-define)
16338                         case "$libs" in
16339                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16340                         esac
16341                         ;;
16342                     *) avail_ext="$avail_ext $xxx" ;;
16343                     esac
16344                     ;;
16345                 esac
16346                 ;;
16347         POSIX|posix)
16348                 case "$useposix" in
16349                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16350                 esac
16351                 ;;
16352         Opcode|opcode)
16353                 case "$useopcode" in
16354                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16355                 esac
16356                 ;;
16357         Socket|socket)
16358                 case "$d_socket" in 
16359                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16360                 esac
16361                 ;;
16362         Sys/Syslog|sys/syslog)
16363                 : XXX syslog requires socket
16364                 case "$d_socket" in 
16365                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16366                 esac
16367                 ;;
16368         Thread|thread)
16369                 case "$usethreads" in
16370                 true|$define|y)
16371                         case "$useithreads" in
16372                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16373                         esac
16374                 esac
16375                 ;;
16376         IPC/SysV|ipc/sysv)
16377                 : XXX Do we need a useipcsysv variable here
16378                 case "${d_msg}${d_sem}${d_shm}" in 
16379                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16380                 esac
16381                 ;;
16382         *)      avail_ext="$avail_ext $xxx"
16383                 ;;
16384         esac
16385 done
16386
16387 set X $avail_ext
16388 shift
16389 avail_ext="$*"
16390
16391 : Now see which nonxs extensions are supported on this system.
16392 : For now assume all are.
16393 nonxs_ext=''
16394 for xxx in $nonxs_extensions ; do
16395         case "$xxx" in
16396         *)      nonxs_ext="$nonxs_ext $xxx"
16397                 ;;
16398         esac
16399 done
16400
16401 set X $nonxs_ext
16402 shift
16403 nonxs_ext="$*"
16404
16405 case $usedl in
16406 $define)
16407         $cat <<EOM
16408 A number of extensions are supplied with $package.  You may choose to
16409 compile these extensions for dynamic loading (the default), compile
16410 them into the $package executable (static loading), or not include
16411 them at all.  Answer "none" to include no extensions.
16412 Note that DynaLoader is always built and need not be mentioned here.
16413
16414 EOM
16415         case "$dynamic_ext" in
16416         '') dflt="$avail_ext" ;;
16417         *)      dflt="$dynamic_ext"
16418                 # Perhaps we are reusing an old out-of-date config.sh.
16419                 case "$hint" in
16420                 previous)
16421                         if test X"$dynamic_ext" != X"$avail_ext"; then
16422                                 $cat <<EOM
16423 NOTICE:  Your previous config.sh list may be incorrect. 
16424 The extensions now available to you are 
16425         ${avail_ext}
16426 but the default list from your previous config.sh is
16427         ${dynamic_ext} 
16428
16429 EOM
16430                         fi
16431                         ;;
16432                 esac
16433                 ;;
16434         esac
16435         case "$dflt" in
16436         '')     dflt=none;;
16437         esac
16438         rp="What extensions do you wish to load dynamically?"
16439         . ./myread
16440         case "$ans" in
16441         none) dynamic_ext=' ' ;;
16442         *) dynamic_ext="$ans" ;;
16443         esac
16444
16445         case "$static_ext" in
16446         '')
16447                 : Exclude those already listed in dynamic linking
16448                 dflt=''
16449                 for xxx in $avail_ext; do
16450                         case " $dynamic_ext " in
16451                         *" $xxx "*) ;;
16452                         *) dflt="$dflt $xxx" ;;
16453                         esac
16454                 done
16455                 set X $dflt
16456                 shift
16457                 dflt="$*"
16458                 ;;
16459         *)  dflt="$static_ext" 
16460                 ;;
16461         esac
16462
16463         case "$dflt" in
16464         '')     dflt=none;;
16465         esac
16466         rp="What extensions do you wish to load statically?"
16467         . ./myread
16468         case "$ans" in
16469         none) static_ext=' ' ;;
16470         *) static_ext="$ans" ;;
16471         esac
16472         ;;
16473 *)
16474         $cat <<EOM
16475 A number of extensions are supplied with $package.  Answer "none" 
16476 to include no extensions. 
16477 Note that DynaLoader is always built and need not be mentioned here.
16478
16479 EOM
16480         case "$static_ext" in
16481         '') dflt="$avail_ext" ;;
16482         *)      dflt="$static_ext"
16483                 # Perhaps we are reusing an old out-of-date config.sh.
16484                 case "$hint" in
16485                 previous)
16486                         if test X"$static_ext" != X"$avail_ext"; then
16487                                 $cat <<EOM
16488 NOTICE:  Your previous config.sh list may be incorrect. 
16489 The extensions now available to you are 
16490         ${avail_ext}
16491 but the default list from your previous config.sh is
16492         ${static_ext} 
16493
16494 EOM
16495                         fi
16496                         ;;
16497                 esac
16498                 ;;
16499         esac
16500         : Exclude those that are not xs extensions
16501         case "$dflt" in
16502         '')     dflt=none;;
16503         esac
16504         rp="What extensions do you wish to include?"
16505         . ./myread
16506         case "$ans" in
16507         none) static_ext=' ' ;;
16508         *) static_ext="$ans" ;;
16509         esac
16510         ;;
16511 esac
16512
16513 set X $dynamic_ext $static_ext $nonxs_ext
16514 shift
16515 extensions="$*"
16516
16517 : Remove libraries needed only for extensions
16518 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16519 : The exception is SunOS 4.x, which needs them.
16520 case "${osname}X${osvers}" in
16521 sunos*X4*)
16522     perllibs="$libs"
16523     ;;
16524 *) case "$usedl" in
16525     $define|true|[yY]*)
16526             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16527             shift
16528             perllibs="$*"
16529             ;;
16530     *)  perllibs="$libs"
16531             ;;
16532     esac
16533     ;;
16534 esac
16535
16536 : Remove build directory name from cppstdin so it can be used from
16537 : either the present location or the final installed location.
16538 echo " "
16539 : Get out of the UU directory to get correct path name.
16540 cd ..
16541 case "$cppstdin" in
16542 `pwd`/cppstdin)
16543         echo "Stripping down cppstdin path name"
16544         cppstdin=cppstdin
16545         ;;
16546 esac
16547 cd UU
16548
16549 : end of configuration questions
16550 echo " "
16551 echo "End of configuration questions."
16552 echo " "
16553
16554 : back to where it started
16555 if test -d ../UU; then
16556         cd ..
16557 fi
16558
16559 : configuration may be patched via a 'config.over' file
16560 if $test -f config.over; then
16561         echo " "
16562         dflt=y
16563         rp='I see a config.over file.  Do you wish to load it?'
16564         . UU/myread
16565         case "$ans" in
16566         n*) echo "OK, I'll ignore it.";;
16567         *)      . ./config.over
16568                 echo "Configuration override changes have been loaded."
16569                 ;;
16570         esac
16571 fi
16572
16573 : in case they want portability, strip down executable paths
16574 case "$d_portable" in
16575 "$define")
16576         echo " "
16577         echo "Stripping down executable paths..." >&4
16578         for file in $loclist $trylist; do
16579                 eval temp=\$$file
16580                 eval $file=`basename $temp`
16581         done
16582         ;;
16583 esac
16584
16585 : create config.sh file
16586 echo " "
16587 echo "Creating config.sh..." >&4
16588 $spitshell <<EOT >config.sh
16589 $startsh
16590 #
16591 # This file was produced by running the Configure script. It holds all the
16592 # definitions figured out by Configure. Should you modify one of these values,
16593 # do not forget to propagate your changes by running "Configure -der". You may
16594 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16595 #
16596
16597 # Package name      : $package
16598 # Source directory  : $src
16599 # Configuration time: $cf_time
16600 # Configured by     : $cf_by
16601 # Target system     : $myuname
16602
16603 Author='$Author'
16604 Date='$Date'
16605 Header='$Header'
16606 Id='$Id'
16607 Locker='$Locker'
16608 Log='$Log'
16609 Mcc='$Mcc'
16610 RCSfile='$RCSfile'
16611 Revision='$Revision'
16612 Source='$Source'
16613 State='$State'
16614 _a='$_a'
16615 _exe='$_exe'
16616 _o='$_o'
16617 afs='$afs'
16618 afsroot='$afsroot'
16619 alignbytes='$alignbytes'
16620 ansi2knr='$ansi2knr'
16621 aphostname='$aphostname'
16622 api_revision='$api_revision'
16623 api_subversion='$api_subversion'
16624 api_version='$api_version'
16625 api_versionstring='$api_versionstring'
16626 ar='$ar'
16627 archlib='$archlib'
16628 archlibexp='$archlibexp'
16629 archname64='$archname64'
16630 archname='$archname'
16631 archobjs='$archobjs'
16632 awk='$awk'
16633 baserev='$baserev'
16634 bash='$bash'
16635 bin='$bin'
16636 bincompat5005='$bincompat5005'
16637 binexp='$binexp'
16638 bison='$bison'
16639 byacc='$byacc'
16640 byteorder='$byteorder'
16641 c='$c'
16642 castflags='$castflags'
16643 cat='$cat'
16644 cc='$cc'
16645 cccdlflags='$cccdlflags'
16646 ccdlflags='$ccdlflags'
16647 ccflags='$ccflags'
16648 ccflags_uselargefiles='$ccflags_uselargefiles'
16649 ccname='$ccname'
16650 ccsymbols='$ccsymbols'
16651 ccversion='$ccversion'
16652 cf_by='$cf_by'
16653 cf_email='$cf_email'
16654 cf_time='$cf_time'
16655 charsize='$charsize'
16656 chgrp='$chgrp'
16657 chmod='$chmod'
16658 chown='$chown'
16659 clocktype='$clocktype'
16660 comm='$comm'
16661 compress='$compress'
16662 contains='$contains'
16663 cp='$cp'
16664 cpio='$cpio'
16665 cpp='$cpp'
16666 cpp_stuff='$cpp_stuff'
16667 cppccsymbols='$cppccsymbols'
16668 cppflags='$cppflags'
16669 cpplast='$cpplast'
16670 cppminus='$cppminus'
16671 cpprun='$cpprun'
16672 cppstdin='$cppstdin'
16673 cppsymbols='$cppsymbols'
16674 cryptlib='$cryptlib'
16675 csh='$csh'
16676 d_Gconvert='$d_Gconvert'
16677 d_PRIEUldbl='$d_PRIEUldbl'
16678 d_PRIFUldbl='$d_PRIFUldbl'
16679 d_PRIGUldbl='$d_PRIGUldbl'
16680 d_PRIXU64='$d_PRIXU64'
16681 d_PRId64='$d_PRId64'
16682 d_PRIeldbl='$d_PRIeldbl'
16683 d_PRIfldbl='$d_PRIfldbl'
16684 d_PRIgldbl='$d_PRIgldbl'
16685 d_PRIi64='$d_PRIi64'
16686 d_PRIo64='$d_PRIo64'
16687 d_PRIu64='$d_PRIu64'
16688 d_PRIx64='$d_PRIx64'
16689 d_SCNfldbl='$d_SCNfldbl'
16690 d__fwalk='$d__fwalk'
16691 d_access='$d_access'
16692 d_accessx='$d_accessx'
16693 d_alarm='$d_alarm'
16694 d_archlib='$d_archlib'
16695 d_atolf='$d_atolf'
16696 d_atoll='$d_atoll'
16697 d_attribut='$d_attribut'
16698 d_bcmp='$d_bcmp'
16699 d_bcopy='$d_bcopy'
16700 d_bincompat5005='$d_bincompat5005'
16701 d_bsd='$d_bsd'
16702 d_bsdgetpgrp='$d_bsdgetpgrp'
16703 d_bsdsetpgrp='$d_bsdsetpgrp'
16704 d_bzero='$d_bzero'
16705 d_casti32='$d_casti32'
16706 d_castneg='$d_castneg'
16707 d_charvspr='$d_charvspr'
16708 d_chown='$d_chown'
16709 d_chroot='$d_chroot'
16710 d_chsize='$d_chsize'
16711 d_closedir='$d_closedir'
16712 d_cmsghdr_s='$d_cmsghdr_s'
16713 d_const='$d_const'
16714 d_crypt='$d_crypt'
16715 d_csh='$d_csh'
16716 d_cuserid='$d_cuserid'
16717 d_dbl_dig='$d_dbl_dig'
16718 d_dbminitproto='$d_dbminitproto'
16719 d_difftime='$d_difftime'
16720 d_dirnamlen='$d_dirnamlen'
16721 d_dlerror='$d_dlerror'
16722 d_dlopen='$d_dlopen'
16723 d_dlsymun='$d_dlsymun'
16724 d_dosuid='$d_dosuid'
16725 d_drand48proto='$d_drand48proto'
16726 d_dup2='$d_dup2'
16727 d_eaccess='$d_eaccess'
16728 d_endgrent='$d_endgrent'
16729 d_endhent='$d_endhent'
16730 d_endnent='$d_endnent'
16731 d_endpent='$d_endpent'
16732 d_endpwent='$d_endpwent'
16733 d_endsent='$d_endsent'
16734 d_eofnblk='$d_eofnblk'
16735 d_eunice='$d_eunice'
16736 d_fchdir='$d_fchdir'
16737 d_fchmod='$d_fchmod'
16738 d_fchown='$d_fchown'
16739 d_fcntl='$d_fcntl'
16740 d_fcntl_can_lock='$d_fcntl_can_lock'
16741 d_fd_macros='$d_fd_macros'
16742 d_fd_set='$d_fd_set'
16743 d_fds_bits='$d_fds_bits'
16744 d_fgetpos='$d_fgetpos'
16745 d_flexfnam='$d_flexfnam'
16746 d_flock='$d_flock'
16747 d_flockproto='$d_flockproto'
16748 d_fork='$d_fork'
16749 d_fpathconf='$d_fpathconf'
16750 d_fpos64_t='$d_fpos64_t'
16751 d_frexpl='$d_frexpl'
16752 d_fs_data_s='$d_fs_data_s'
16753 d_fseeko='$d_fseeko'
16754 d_fsetpos='$d_fsetpos'
16755 d_fstatfs='$d_fstatfs'
16756 d_fstatvfs='$d_fstatvfs'
16757 d_fsync='$d_fsync'
16758 d_ftello='$d_ftello'
16759 d_ftime='$d_ftime'
16760 d_getcwd='$d_getcwd'
16761 d_getespwnam='$d_getespwnam'
16762 d_getfsstat='$d_getfsstat'
16763 d_getgrent='$d_getgrent'
16764 d_getgrps='$d_getgrps'
16765 d_gethbyaddr='$d_gethbyaddr'
16766 d_gethbyname='$d_gethbyname'
16767 d_gethent='$d_gethent'
16768 d_gethname='$d_gethname'
16769 d_gethostprotos='$d_gethostprotos'
16770 d_getitimer='$d_getitimer'
16771 d_getlogin='$d_getlogin'
16772 d_getmnt='$d_getmnt'
16773 d_getmntent='$d_getmntent'
16774 d_getnbyaddr='$d_getnbyaddr'
16775 d_getnbyname='$d_getnbyname'
16776 d_getnent='$d_getnent'
16777 d_getnetprotos='$d_getnetprotos'
16778 d_getpagsz='$d_getpagsz'
16779 d_getpbyname='$d_getpbyname'
16780 d_getpbynumber='$d_getpbynumber'
16781 d_getpent='$d_getpent'
16782 d_getpgid='$d_getpgid'
16783 d_getpgrp2='$d_getpgrp2'
16784 d_getpgrp='$d_getpgrp'
16785 d_getppid='$d_getppid'
16786 d_getprior='$d_getprior'
16787 d_getprotoprotos='$d_getprotoprotos'
16788 d_getprpwnam='$d_getprpwnam'
16789 d_getpwent='$d_getpwent'
16790 d_getsbyname='$d_getsbyname'
16791 d_getsbyport='$d_getsbyport'
16792 d_getsent='$d_getsent'
16793 d_getservprotos='$d_getservprotos'
16794 d_getspnam='$d_getspnam'
16795 d_gettimeod='$d_gettimeod'
16796 d_gnulibc='$d_gnulibc'
16797 d_grpasswd='$d_grpasswd'
16798 d_hasmntopt='$d_hasmntopt'
16799 d_htonl='$d_htonl'
16800 d_iconv='$d_iconv'
16801 d_index='$d_index'
16802 d_inetaton='$d_inetaton'
16803 d_int64_t='$d_int64_t'
16804 d_isascii='$d_isascii'
16805 d_isnan='$d_isnan'
16806 d_isnanl='$d_isnanl'
16807 d_killpg='$d_killpg'
16808 d_lchown='$d_lchown'
16809 d_ldbl_dig='$d_ldbl_dig'
16810 d_link='$d_link'
16811 d_locconv='$d_locconv'
16812 d_lockf='$d_lockf'
16813 d_longdbl='$d_longdbl'
16814 d_longlong='$d_longlong'
16815 d_lseekproto='$d_lseekproto'
16816 d_lstat='$d_lstat'
16817 d_madvise='$d_madvise'
16818 d_mblen='$d_mblen'
16819 d_mbstowcs='$d_mbstowcs'
16820 d_mbtowc='$d_mbtowc'
16821 d_memchr='$d_memchr'
16822 d_memcmp='$d_memcmp'
16823 d_memcpy='$d_memcpy'
16824 d_memmove='$d_memmove'
16825 d_memset='$d_memset'
16826 d_mkdir='$d_mkdir'
16827 d_mkdtemp='$d_mkdtemp'
16828 d_mkfifo='$d_mkfifo'
16829 d_mkstemp='$d_mkstemp'
16830 d_mkstemps='$d_mkstemps'
16831 d_mktime='$d_mktime'
16832 d_mmap='$d_mmap'
16833 d_modfl='$d_modfl'
16834 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16835 d_mprotect='$d_mprotect'
16836 d_msg='$d_msg'
16837 d_msg_ctrunc='$d_msg_ctrunc'
16838 d_msg_dontroute='$d_msg_dontroute'
16839 d_msg_oob='$d_msg_oob'
16840 d_msg_peek='$d_msg_peek'
16841 d_msg_proxy='$d_msg_proxy'
16842 d_msgctl='$d_msgctl'
16843 d_msgget='$d_msgget'
16844 d_msghdr_s='$d_msghdr_s'
16845 d_msgrcv='$d_msgrcv'
16846 d_msgsnd='$d_msgsnd'
16847 d_msync='$d_msync'
16848 d_munmap='$d_munmap'
16849 d_mymalloc='$d_mymalloc'
16850 d_nice='$d_nice'
16851 d_nl_langinfo='$d_nl_langinfo'
16852 d_nv_preserves_uv='$d_nv_preserves_uv'
16853 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16854 d_off64_t='$d_off64_t'
16855 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16856 d_oldpthreads='$d_oldpthreads'
16857 d_oldsock='$d_oldsock'
16858 d_open3='$d_open3'
16859 d_pathconf='$d_pathconf'
16860 d_pause='$d_pause'
16861 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16862 d_phostname='$d_phostname'
16863 d_pipe='$d_pipe'
16864 d_poll='$d_poll'
16865 d_portable='$d_portable'
16866 d_pthread_atfork='$d_pthread_atfork'
16867 d_pthread_yield='$d_pthread_yield'
16868 d_pwage='$d_pwage'
16869 d_pwchange='$d_pwchange'
16870 d_pwclass='$d_pwclass'
16871 d_pwcomment='$d_pwcomment'
16872 d_pwexpire='$d_pwexpire'
16873 d_pwgecos='$d_pwgecos'
16874 d_pwpasswd='$d_pwpasswd'
16875 d_pwquota='$d_pwquota'
16876 d_qgcvt='$d_qgcvt'
16877 d_quad='$d_quad'
16878 d_readdir='$d_readdir'
16879 d_readlink='$d_readlink'
16880 d_readv='$d_readv'
16881 d_recvmsg='$d_recvmsg'
16882 d_rename='$d_rename'
16883 d_rewinddir='$d_rewinddir'
16884 d_rmdir='$d_rmdir'
16885 d_safebcpy='$d_safebcpy'
16886 d_safemcpy='$d_safemcpy'
16887 d_sanemcmp='$d_sanemcmp'
16888 d_sbrkproto='$d_sbrkproto'
16889 d_sched_yield='$d_sched_yield'
16890 d_scm_rights='$d_scm_rights'
16891 d_seekdir='$d_seekdir'
16892 d_select='$d_select'
16893 d_sem='$d_sem'
16894 d_semctl='$d_semctl'
16895 d_semctl_semid_ds='$d_semctl_semid_ds'
16896 d_semctl_semun='$d_semctl_semun'
16897 d_semget='$d_semget'
16898 d_semop='$d_semop'
16899 d_sendmsg='$d_sendmsg'
16900 d_setegid='$d_setegid'
16901 d_seteuid='$d_seteuid'
16902 d_setgrent='$d_setgrent'
16903 d_setgrps='$d_setgrps'
16904 d_sethent='$d_sethent'
16905 d_setitimer='$d_setitimer'
16906 d_setlinebuf='$d_setlinebuf'
16907 d_setlocale='$d_setlocale'
16908 d_setnent='$d_setnent'
16909 d_setpent='$d_setpent'
16910 d_setpgid='$d_setpgid'
16911 d_setpgrp2='$d_setpgrp2'
16912 d_setpgrp='$d_setpgrp'
16913 d_setprior='$d_setprior'
16914 d_setproctitle='$d_setproctitle'
16915 d_setpwent='$d_setpwent'
16916 d_setregid='$d_setregid'
16917 d_setresgid='$d_setresgid'
16918 d_setresuid='$d_setresuid'
16919 d_setreuid='$d_setreuid'
16920 d_setrgid='$d_setrgid'
16921 d_setruid='$d_setruid'
16922 d_setsent='$d_setsent'
16923 d_setsid='$d_setsid'
16924 d_setvbuf='$d_setvbuf'
16925 d_sfio='$d_sfio'
16926 d_shm='$d_shm'
16927 d_shmat='$d_shmat'
16928 d_shmatprototype='$d_shmatprototype'
16929 d_shmctl='$d_shmctl'
16930 d_shmdt='$d_shmdt'
16931 d_shmget='$d_shmget'
16932 d_sigaction='$d_sigaction'
16933 d_sigprocmask='$d_sigprocmask'
16934 d_sigsetjmp='$d_sigsetjmp'
16935 d_sockatmark='$d_sockatmark'
16936 d_sockatmarkproto='$d_sockatmarkproto'
16937 d_socket='$d_socket'
16938 d_socklen_t='$d_socklen_t'
16939 d_sockpair='$d_sockpair'
16940 d_socks5_init='$d_socks5_init'
16941 d_sqrtl='$d_sqrtl'
16942 d_sresgproto='$d_sresgproto'
16943 d_sresuproto='$d_sresuproto'
16944 d_statblks='$d_statblks'
16945 d_statfs_f_flags='$d_statfs_f_flags'
16946 d_statfs_s='$d_statfs_s'
16947 d_statvfs='$d_statvfs'
16948 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16949 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16950 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16951 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16952 d_stdio_stream_array='$d_stdio_stream_array'
16953 d_stdiobase='$d_stdiobase'
16954 d_stdstdio='$d_stdstdio'
16955 d_strchr='$d_strchr'
16956 d_strcoll='$d_strcoll'
16957 d_strctcpy='$d_strctcpy'
16958 d_strerrm='$d_strerrm'
16959 d_strerror='$d_strerror'
16960 d_strftime='$d_strftime'
16961 d_strtod='$d_strtod'
16962 d_strtol='$d_strtol'
16963 d_strtold='$d_strtold'
16964 d_strtoll='$d_strtoll'
16965 d_strtoq='$d_strtoq'
16966 d_strtoul='$d_strtoul'
16967 d_strtoull='$d_strtoull'
16968 d_strtouq='$d_strtouq'
16969 d_strxfrm='$d_strxfrm'
16970 d_suidsafe='$d_suidsafe'
16971 d_symlink='$d_symlink'
16972 d_syscall='$d_syscall'
16973 d_syscallproto='$d_syscallproto'
16974 d_sysconf='$d_sysconf'
16975 d_sysernlst='$d_sysernlst'
16976 d_syserrlst='$d_syserrlst'
16977 d_system='$d_system'
16978 d_tcgetpgrp='$d_tcgetpgrp'
16979 d_tcsetpgrp='$d_tcsetpgrp'
16980 d_telldir='$d_telldir'
16981 d_telldirproto='$d_telldirproto'
16982 d_time='$d_time'
16983 d_times='$d_times'
16984 d_truncate='$d_truncate'
16985 d_tzname='$d_tzname'
16986 d_u32align='$d_u32align'
16987 d_ualarm='$d_ualarm'
16988 d_umask='$d_umask'
16989 d_uname='$d_uname'
16990 d_union_semun='$d_union_semun'
16991 d_usleep='$d_usleep'
16992 d_usleepproto='$d_usleepproto'
16993 d_ustat='$d_ustat'
16994 d_vendorarch='$d_vendorarch'
16995 d_vendorbin='$d_vendorbin'
16996 d_vendorlib='$d_vendorlib'
16997 d_vfork='$d_vfork'
16998 d_void_closedir='$d_void_closedir'
16999 d_voidsig='$d_voidsig'
17000 d_voidtty='$d_voidtty'
17001 d_volatile='$d_volatile'
17002 d_vprintf='$d_vprintf'
17003 d_wait4='$d_wait4'
17004 d_waitpid='$d_waitpid'
17005 d_wcstombs='$d_wcstombs'
17006 d_wctomb='$d_wctomb'
17007 d_writev='$d_writev'
17008 d_xenix='$d_xenix'
17009 date='$date'
17010 db_hashtype='$db_hashtype'
17011 db_prefixtype='$db_prefixtype'
17012 db_version_major='$db_version_major'
17013 db_version_minor='$db_version_minor'
17014 db_version_patch='$db_version_patch'
17015 defvoidused='$defvoidused'
17016 direntrytype='$direntrytype'
17017 dlext='$dlext'
17018 dlsrc='$dlsrc'
17019 doublesize='$doublesize'
17020 drand01='$drand01'
17021 dynamic_ext='$dynamic_ext'
17022 eagain='$eagain'
17023 ebcdic='$ebcdic'
17024 echo='$echo'
17025 egrep='$egrep'
17026 emacs='$emacs'
17027 eunicefix='$eunicefix'
17028 exe_ext='$exe_ext'
17029 expr='$expr'
17030 extensions='$extensions'
17031 extras='$extras'
17032 fflushNULL='$fflushNULL'
17033 fflushall='$fflushall'
17034 find='$find'
17035 firstmakefile='$firstmakefile'
17036 flex='$flex'
17037 fpossize='$fpossize'
17038 fpostype='$fpostype'
17039 freetype='$freetype'
17040 from='$from'
17041 full_ar='$full_ar'
17042 full_csh='$full_csh'
17043 full_sed='$full_sed'
17044 gccosandvers='$gccosandvers'
17045 gccversion='$gccversion'
17046 gidformat='$gidformat'
17047 gidsign='$gidsign'
17048 gidsize='$gidsize'
17049 gidtype='$gidtype'
17050 glibpth='$glibpth'
17051 grep='$grep'
17052 groupcat='$groupcat'
17053 groupstype='$groupstype'
17054 gzip='$gzip'
17055 h_fcntl='$h_fcntl'
17056 h_sysfile='$h_sysfile'
17057 hint='$hint'
17058 hostcat='$hostcat'
17059 i16size='$i16size'
17060 i16type='$i16type'
17061 i32size='$i32size'
17062 i32type='$i32type'
17063 i64size='$i64size'
17064 i64type='$i64type'
17065 i8size='$i8size'
17066 i8type='$i8type'
17067 i_arpainet='$i_arpainet'
17068 i_bsdioctl='$i_bsdioctl'
17069 i_db='$i_db'
17070 i_dbm='$i_dbm'
17071 i_dirent='$i_dirent'
17072 i_dld='$i_dld'
17073 i_dlfcn='$i_dlfcn'
17074 i_fcntl='$i_fcntl'
17075 i_float='$i_float'
17076 i_gdbm='$i_gdbm'
17077 i_grp='$i_grp'
17078 i_iconv='$i_iconv'
17079 i_ieeefp='$i_ieeefp'
17080 i_inttypes='$i_inttypes'
17081 i_langinfo='$i_langinfo'
17082 i_libutil='$i_libutil'
17083 i_limits='$i_limits'
17084 i_locale='$i_locale'
17085 i_machcthr='$i_machcthr'
17086 i_malloc='$i_malloc'
17087 i_math='$i_math'
17088 i_memory='$i_memory'
17089 i_mntent='$i_mntent'
17090 i_ndbm='$i_ndbm'
17091 i_netdb='$i_netdb'
17092 i_neterrno='$i_neterrno'
17093 i_netinettcp='$i_netinettcp'
17094 i_niin='$i_niin'
17095 i_poll='$i_poll'
17096 i_prot='$i_prot'
17097 i_pthread='$i_pthread'
17098 i_pwd='$i_pwd'
17099 i_rpcsvcdbm='$i_rpcsvcdbm'
17100 i_sfio='$i_sfio'
17101 i_sgtty='$i_sgtty'
17102 i_shadow='$i_shadow'
17103 i_socks='$i_socks'
17104 i_stdarg='$i_stdarg'
17105 i_stddef='$i_stddef'
17106 i_stdlib='$i_stdlib'
17107 i_string='$i_string'
17108 i_sunmath='$i_sunmath'
17109 i_sysaccess='$i_sysaccess'
17110 i_sysdir='$i_sysdir'
17111 i_sysfile='$i_sysfile'
17112 i_sysfilio='$i_sysfilio'
17113 i_sysin='$i_sysin'
17114 i_sysioctl='$i_sysioctl'
17115 i_syslog='$i_syslog'
17116 i_sysmman='$i_sysmman'
17117 i_sysmode='$i_sysmode'
17118 i_sysmount='$i_sysmount'
17119 i_sysndir='$i_sysndir'
17120 i_sysparam='$i_sysparam'
17121 i_sysresrc='$i_sysresrc'
17122 i_syssecrt='$i_syssecrt'
17123 i_sysselct='$i_sysselct'
17124 i_syssockio='$i_syssockio'
17125 i_sysstat='$i_sysstat'
17126 i_sysstatfs='$i_sysstatfs'
17127 i_sysstatvfs='$i_sysstatvfs'
17128 i_systime='$i_systime'
17129 i_systimek='$i_systimek'
17130 i_systimes='$i_systimes'
17131 i_systypes='$i_systypes'
17132 i_sysuio='$i_sysuio'
17133 i_sysun='$i_sysun'
17134 i_sysutsname='$i_sysutsname'
17135 i_sysvfs='$i_sysvfs'
17136 i_syswait='$i_syswait'
17137 i_termio='$i_termio'
17138 i_termios='$i_termios'
17139 i_time='$i_time'
17140 i_unistd='$i_unistd'
17141 i_ustat='$i_ustat'
17142 i_utime='$i_utime'
17143 i_values='$i_values'
17144 i_varargs='$i_varargs'
17145 i_varhdr='$i_varhdr'
17146 i_vfork='$i_vfork'
17147 ignore_versioned_solibs='$ignore_versioned_solibs'
17148 inc_version_list='$inc_version_list'
17149 inc_version_list_init='$inc_version_list_init'
17150 incpath='$incpath'
17151 inews='$inews'
17152 installarchlib='$installarchlib'
17153 installbin='$installbin'
17154 installman1dir='$installman1dir'
17155 installman3dir='$installman3dir'
17156 installprefix='$installprefix'
17157 installprefixexp='$installprefixexp'
17158 installprivlib='$installprivlib'
17159 installscript='$installscript'
17160 installsitearch='$installsitearch'
17161 installsitebin='$installsitebin'
17162 installsitelib='$installsitelib'
17163 installstyle='$installstyle'
17164 installusrbinperl='$installusrbinperl'
17165 installvendorarch='$installvendorarch'
17166 installvendorbin='$installvendorbin'
17167 installvendorlib='$installvendorlib'
17168 intsize='$intsize'
17169 issymlink='$issymlink'
17170 ivdformat='$ivdformat'
17171 ivsize='$ivsize'
17172 ivtype='$ivtype'
17173 known_extensions='$known_extensions'
17174 ksh='$ksh'
17175 ld='$ld'
17176 lddlflags='$lddlflags'
17177 ldflags='$ldflags'
17178 ldflags_uselargefiles='$ldflags_uselargefiles'
17179 ldlibpthname='$ldlibpthname'
17180 less='$less'
17181 lib_ext='$lib_ext'
17182 libc='$libc'
17183 libperl='$libperl'
17184 libpth='$libpth'
17185 libs='$libs'
17186 libsdirs='$libsdirs'
17187 libsfiles='$libsfiles'
17188 libsfound='$libsfound'
17189 libspath='$libspath'
17190 libswanted='$libswanted'
17191 libswanted_uselargefiles='$libswanted_uselargefiles'
17192 line='$line'
17193 lint='$lint'
17194 lkflags='$lkflags'
17195 ln='$ln'
17196 lns='$lns'
17197 locincpth='$locincpth'
17198 loclibpth='$loclibpth'
17199 longdblsize='$longdblsize'
17200 longlongsize='$longlongsize'
17201 longsize='$longsize'
17202 lp='$lp'
17203 lpr='$lpr'
17204 ls='$ls'
17205 lseeksize='$lseeksize'
17206 lseektype='$lseektype'
17207 mail='$mail'
17208 mailx='$mailx'
17209 make='$make'
17210 make_set_make='$make_set_make'
17211 mallocobj='$mallocobj'
17212 mallocsrc='$mallocsrc'
17213 malloctype='$malloctype'
17214 man1dir='$man1dir'
17215 man1direxp='$man1direxp'
17216 man1ext='$man1ext'
17217 man3dir='$man3dir'
17218 man3direxp='$man3direxp'
17219 man3ext='$man3ext'
17220 mips_type='$mips_type'
17221 mkdir='$mkdir'
17222 mmaptype='$mmaptype'
17223 modetype='$modetype'
17224 more='$more'
17225 multiarch='$multiarch'
17226 mv='$mv'
17227 myarchname='$myarchname'
17228 mydomain='$mydomain'
17229 myhostname='$myhostname'
17230 myuname='$myuname'
17231 n='$n'
17232 need_va_copy='$need_va_copy'
17233 netdb_hlen_type='$netdb_hlen_type'
17234 netdb_host_type='$netdb_host_type'
17235 netdb_name_type='$netdb_name_type'
17236 netdb_net_type='$netdb_net_type'
17237 nm='$nm'
17238 nm_opt='$nm_opt'
17239 nm_so_opt='$nm_so_opt'
17240 nonxs_ext='$nonxs_ext'
17241 nroff='$nroff'
17242 nvEUformat='$nvEUformat'
17243 nvFUformat='$nvFUformat'
17244 nvGUformat='$nvGUformat'
17245 nveformat='$nveformat'
17246 nvfformat='$nvfformat'
17247 nvgformat='$nvgformat'
17248 nvsize='$nvsize'
17249 nvtype='$nvtype'
17250 o_nonblock='$o_nonblock'
17251 obj_ext='$obj_ext'
17252 old_pthread_create_joinable='$old_pthread_create_joinable'
17253 optimize='$optimize'
17254 orderlib='$orderlib'
17255 osname='$osname'
17256 osvers='$osvers'
17257 otherlibdirs='$otherlibdirs'
17258 package='$package'
17259 pager='$pager'
17260 passcat='$passcat'
17261 patchlevel='$patchlevel'
17262 path_sep='$path_sep'
17263 perl5='$perl5'
17264 perl='$perl'
17265 perl_patchlevel='$perl_patchlevel'
17266 perladmin='$perladmin'
17267 perllibs='$perllibs'
17268 perlpath='$perlpath'
17269 pg='$pg'
17270 phostname='$phostname'
17271 pidtype='$pidtype'
17272 plibpth='$plibpth'
17273 pm_apiversion='$pm_apiversion'
17274 pmake='$pmake'
17275 pr='$pr'
17276 prefix='$prefix'
17277 prefixexp='$prefixexp'
17278 privlib='$privlib'
17279 privlibexp='$privlibexp'
17280 prototype='$prototype'
17281 ptrsize='$ptrsize'
17282 quadkind='$quadkind'
17283 quadtype='$quadtype'
17284 randbits='$randbits'
17285 randfunc='$randfunc'
17286 randseedtype='$randseedtype'
17287 ranlib='$ranlib'
17288 rd_nodata='$rd_nodata'
17289 revision='$revision'
17290 rm='$rm'
17291 rmail='$rmail'
17292 run='$run'
17293 runnm='$runnm'
17294 sPRIEUldbl='$sPRIEUldbl'
17295 sPRIFUldbl='$sPRIFUldbl'
17296 sPRIGUldbl='$sPRIGUldbl'
17297 sPRIXU64='$sPRIXU64'
17298 sPRId64='$sPRId64'
17299 sPRIeldbl='$sPRIeldbl'
17300 sPRIfldbl='$sPRIfldbl'
17301 sPRIgldbl='$sPRIgldbl'
17302 sPRIi64='$sPRIi64'
17303 sPRIo64='$sPRIo64'
17304 sPRIu64='$sPRIu64'
17305 sPRIx64='$sPRIx64'
17306 sSCNfldbl='$sSCNfldbl'
17307 sched_yield='$sched_yield'
17308 scriptdir='$scriptdir'
17309 scriptdirexp='$scriptdirexp'
17310 sed='$sed'
17311 seedfunc='$seedfunc'
17312 selectminbits='$selectminbits'
17313 selecttype='$selecttype'
17314 sendmail='$sendmail'
17315 sh='$sh'
17316 shar='$shar'
17317 sharpbang='$sharpbang'
17318 shmattype='$shmattype'
17319 shortsize='$shortsize'
17320 shrpenv='$shrpenv'
17321 shsharp='$shsharp'
17322 sig_count='$sig_count'
17323 sig_name='$sig_name'
17324 sig_name_init='$sig_name_init'
17325 sig_num='$sig_num'
17326 sig_num_init='$sig_num_init'
17327 sig_size='$sig_size'
17328 signal_t='$signal_t'
17329 sitearch='$sitearch'
17330 sitearchexp='$sitearchexp'
17331 sitebin='$sitebin'
17332 sitebinexp='$sitebinexp'
17333 sitelib='$sitelib'
17334 sitelib_stem='$sitelib_stem'
17335 sitelibexp='$sitelibexp'
17336 siteprefix='$siteprefix'
17337 siteprefixexp='$siteprefixexp'
17338 sizesize='$sizesize'
17339 sizetype='$sizetype'
17340 sleep='$sleep'
17341 smail='$smail'
17342 so='$so'
17343 sockethdr='$sockethdr'
17344 socketlib='$socketlib'
17345 socksizetype='$socksizetype'
17346 sort='$sort'
17347 spackage='$spackage'
17348 spitshell='$spitshell'
17349 src='$src'
17350 ssizetype='$ssizetype'
17351 startperl='$startperl'
17352 startsh='$startsh'
17353 static_ext='$static_ext'
17354 stdchar='$stdchar'
17355 stdio_base='$stdio_base'
17356 stdio_bufsiz='$stdio_bufsiz'
17357 stdio_cnt='$stdio_cnt'
17358 stdio_filbuf='$stdio_filbuf'
17359 stdio_ptr='$stdio_ptr'
17360 stdio_stream_array='$stdio_stream_array'
17361 strings='$strings'
17362 submit='$submit'
17363 subversion='$subversion'
17364 sysman='$sysman'
17365 tail='$tail'
17366 tar='$tar'
17367 targetarch='$targetarch'
17368 tbl='$tbl'
17369 tee='$tee'
17370 test='$test'
17371 timeincl='$timeincl'
17372 timetype='$timetype'
17373 to='$to'
17374 touch='$touch'
17375 tr='$tr'
17376 trnl='$trnl'
17377 troff='$troff'
17378 u16size='$u16size'
17379 u16type='$u16type'
17380 u32size='$u32size'
17381 u32type='$u32type'
17382 u64size='$u64size'
17383 u64type='$u64type'
17384 u8size='$u8size'
17385 u8type='$u8type'
17386 uidformat='$uidformat'
17387 uidsign='$uidsign'
17388 uidsize='$uidsize'
17389 uidtype='$uidtype'
17390 uname='$uname'
17391 uniq='$uniq'
17392 uquadtype='$uquadtype'
17393 use5005threads='$use5005threads'
17394 use64bitall='$use64bitall'
17395 use64bitint='$use64bitint'
17396 usecrosscompile='$usecrosscompile'
17397 usedl='$usedl'
17398 useithreads='$useithreads'
17399 uselargefiles='$uselargefiles'
17400 uselongdouble='$uselongdouble'
17401 usemorebits='$usemorebits'
17402 usemultiplicity='$usemultiplicity'
17403 usemymalloc='$usemymalloc'
17404 usenm='$usenm'
17405 useopcode='$useopcode'
17406 useperlio='$useperlio'
17407 useposix='$useposix'
17408 usereentrant='$usereentrant'
17409 usesfio='$usesfio'
17410 useshrplib='$useshrplib'
17411 usesocks='$usesocks'
17412 usethreads='$usethreads'
17413 usevendorprefix='$usevendorprefix'
17414 usevfork='$usevfork'
17415 usrinc='$usrinc'
17416 uuname='$uuname'
17417 uvXUformat='$uvXUformat'
17418 uvoformat='$uvoformat'
17419 uvsize='$uvsize'
17420 uvtype='$uvtype'
17421 uvuformat='$uvuformat'
17422 uvxformat='$uvxformat'
17423 vendorarch='$vendorarch'
17424 vendorarchexp='$vendorarchexp'
17425 vendorbin='$vendorbin'
17426 vendorbinexp='$vendorbinexp'
17427 vendorlib='$vendorlib'
17428 vendorlib_stem='$vendorlib_stem'
17429 vendorlibexp='$vendorlibexp'
17430 vendorprefix='$vendorprefix'
17431 vendorprefixexp='$vendorprefixexp'
17432 version='$version'
17433 version_patchlevel_string='$version_patchlevel_string'
17434 versiononly='$versiononly'
17435 vi='$vi'
17436 voidflags='$voidflags'
17437 xlibpth='$xlibpth'
17438 xs_apiversion='$xs_apiversion'
17439 yacc='$yacc'
17440 yaccflags='$yaccflags'
17441 zcat='$zcat'
17442 zip='$zip'
17443 EOT
17444
17445 : Add in command line options if available
17446 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17447
17448 : add special variables
17449 $test -f $src/patchlevel.h && \
17450 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17451 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17452 echo "PERL_CONFIG_SH=true" >>config.sh
17453
17454 : propagate old symbols
17455 if $test -f UU/config.sh; then
17456         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17457         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17458         $sort | $uniq -u >UU/oldsyms
17459         set X `cat UU/oldsyms`
17460         shift
17461         case $# in
17462         0) ;;
17463         *)
17464                 cat <<EOM
17465 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17466 EOM
17467                 echo "# Variables propagated from previous config.sh file." >>config.sh
17468                 for sym in `cat UU/oldsyms`; do
17469                         echo "    Propagating $hint variable "'$'"$sym..."
17470                         eval 'tmp="$'"${sym}"'"'
17471                         echo "$tmp" | \
17472                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17473                 done
17474                 ;;
17475         esac
17476 fi
17477
17478 : Finish up by extracting the .SH files
17479 case "$alldone" in
17480 exit)
17481         $rm -rf UU
17482         echo "Extraction done."
17483         exit 0
17484         ;;
17485 cont)
17486         ;;
17487 '')
17488         dflt=''
17489         nostick=true
17490         $cat <<EOM
17491
17492 If you'd like to make any changes to the config.sh file before I begin
17493 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17494
17495 EOM
17496         rp="Press return or use a shell escape to edit config.sh:"
17497         . UU/myread
17498         nostick=''
17499         case "$ans" in
17500         '') ;;
17501         *) : in case they cannot read
17502                 sh 1>&4 -c "$ans";;
17503         esac
17504         ;;
17505 esac
17506
17507 : if this fails, just run all the .SH files by hand
17508 . ./config.sh
17509
17510 echo " "
17511 exec 1>&4
17512 pwd=`pwd`
17513 . ./UU/extract
17514 cd $pwd
17515
17516 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17517         dflt=y
17518         case "$silent" in
17519         true) ;;
17520         *)
17521                 $cat <<EOM
17522
17523 Now you need to generate make dependencies by running "$make depend".
17524 You might prefer to run it in background: "$make depend > makedepend.out &"
17525 It can take a while, so you might not want to run it right now.
17526
17527 EOM
17528                 ;;
17529         esac
17530         rp="Run $make depend now?"
17531         . UU/myread
17532         case "$ans" in
17533         y*)
17534                 $make depend && echo "Now you must run '$make'."
17535                 ;;
17536         *)
17537                 echo "You must run '$make depend' then '$make'."
17538                 ;;
17539         esac
17540 elif test -f [Mm]akefile; then
17541         echo " "
17542         echo "Now you must run a $make."
17543 else
17544         echo "Configure done."
17545 fi
17546
17547 if $test -f Policy.sh; then
17548     $cat <<EOM
17549
17550 If you compile $package on a different machine or from a different object
17551 directory, copy the Policy.sh file from this object directory to the
17552 new one before you run Configure -- this will help you with most of
17553 the policy defaults.
17554
17555 EOM
17556 fi
17557 if $test -f config.msg; then
17558     echo "Hmm.  I also noted the following information while running:"
17559     echo " "
17560     $cat config.msg >&4
17561     $rm -f config.msg
17562 fi
17563 $rm -f kit*isdone ark*isdone
17564 $rm -rf UU
17565
17566 : End of Configure
17567