This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
B && BEGIN handling
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Wed Aug  1 02:58:53 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
3523 : decide how portable to be.  Allow command line overrides.
3524 case "$d_portable" in
3525 "$undef") ;;
3526 *)      d_portable="$define" ;;
3527 esac
3528
3529 : set up shell script to do ~ expansion
3530 cat >filexp <<EOSS
3531 $startsh
3532 : expand filename
3533 case "\$1" in
3534  ~/*|~)
3535         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3536         ;;
3537  ~*)
3538         if $test -f /bin/csh; then
3539                 /bin/csh -f -c "glob \$1"
3540                 failed=\$?
3541                 echo ""
3542                 exit \$failed
3543         else
3544                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3545                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3546                 if $test ! -d "\$dir"; then
3547                         me=\`basename \$0\`
3548                         echo "\$me: can't locate home directory for: \$name" >&2
3549                         exit 1
3550                 fi
3551                 case "\$1" in
3552                 */*)
3553                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3554                         ;;
3555                 *)
3556                         echo \$dir
3557                         ;;
3558                 esac
3559         fi
3560         ;;
3561 *)
3562         echo \$1
3563         ;;
3564 esac
3565 EOSS
3566 chmod +x filexp
3567 $eunicefix filexp
3568
3569 : now set up to get a file name
3570 cat <<EOS >getfile
3571 $startsh
3572 EOS
3573 cat <<'EOSC' >>getfile
3574 tilde=''
3575 fullpath=''
3576 already=''
3577 skip=''
3578 none_ok=''
3579 exp_file=''
3580 nopath_ok=''
3581 orig_rp="$rp"
3582 orig_dflt="$dflt"
3583 case "$gfpth" in
3584 '') gfpth='.' ;;
3585 esac
3586
3587 case "$fn" in
3588 *\(*)
3589         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3590         fn=`echo $fn | sed 's/(.*)//'`
3591         ;;
3592 esac
3593
3594 case "$fn" in
3595 *:*)
3596         loc_file=`expr $fn : '.*:\(.*\)'`
3597         fn=`expr $fn : '\(.*\):.*'`
3598         ;;
3599 esac
3600
3601 case "$fn" in
3602 *~*) tilde=true;;
3603 esac
3604 case "$fn" in
3605 */*) fullpath=true;;
3606 esac
3607 case "$fn" in
3608 *+*) skip=true;;
3609 esac
3610 case "$fn" in
3611 *n*) none_ok=true;;
3612 esac
3613 case "$fn" in
3614 *e*) exp_file=true;;
3615 esac
3616 case "$fn" in
3617 *p*) nopath_ok=true;;
3618 esac
3619
3620 case "$fn" in
3621 *f*) type='File';;
3622 *d*) type='Directory';;
3623 *l*) type='Locate';;
3624 esac
3625
3626 what="$type"
3627 case "$what" in
3628 Locate) what='File';;
3629 esac
3630
3631 case "$exp_file" in
3632 '')
3633         case "$d_portable" in
3634         "$define") ;;
3635         *) exp_file=true;;
3636         esac
3637         ;;
3638 esac
3639
3640 cd ..
3641 while test "$type"; do
3642         redo=''
3643         rp="$orig_rp"
3644         dflt="$orig_dflt"
3645         case "$tilde" in
3646         true) rp="$rp (~name ok)";;
3647         esac
3648         . UU/myread
3649         if test -f UU/getfile.ok && \
3650                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3651         then
3652                 value="$ans"
3653                 ansexp="$ans"
3654                 break
3655         fi
3656         case "$ans" in
3657         none)
3658                 value=''
3659                 ansexp=''
3660                 case "$none_ok" in
3661                 true) type='';;
3662                 esac
3663                 ;;
3664         *)
3665                 case "$tilde" in
3666                 '') value="$ans"
3667                         ansexp="$ans";;
3668                 *)
3669                         value=`UU/filexp $ans`
3670                         case $? in
3671                         0)
3672                                 if test "$ans" != "$value"; then
3673                                         echo "(That expands to $value on this system.)"
3674                                 fi
3675                                 ;;
3676                         *) value="$ans";;
3677                         esac
3678                         ansexp="$value"
3679                         case "$exp_file" in
3680                         '') value="$ans";;
3681                         esac
3682                         ;;
3683                 esac
3684                 case "$fullpath" in
3685                 true)
3686                         case "$ansexp" in
3687                         /*) value="$ansexp" ;;
3688                         [a-zA-Z]:/*) value="$ansexp" ;;
3689                         *)
3690                                 redo=true
3691                                 case "$already" in
3692                                 true)
3693                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3694                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3695                                         ;;
3696                                 *)
3697                                 echo "Please give a full path name, starting with slash." >&4
3698                                         case "$tilde" in
3699                                         true)
3700                                 echo "Note that using ~name is ok provided it expands well." >&4
3701                                                 already=true
3702                                                 ;;
3703                                         esac
3704                                 esac
3705                                 ;;
3706                         esac
3707                         ;;
3708                 esac
3709                 case "$redo" in
3710                 '')
3711                         case "$type" in
3712                         File)
3713                                 for fp in $gfpth; do
3714                                         if test "X$fp" = X.; then
3715                                             pf="$ansexp"
3716                                         else    
3717                                             pf="$fp/$ansexp"
3718                                         fi
3719                                         if test -f "$pf"; then
3720                                                 type=''
3721                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3722                                         then
3723                                                 echo "($value is not a plain file, but that's ok.)"
3724                                                 type=''
3725                                         fi
3726                                         if test X"$type" = X; then
3727                                             value="$pf"
3728                                             break
3729                                         fi
3730                                 done
3731                                 ;;
3732                         Directory)
3733                                 for fp in $gfpth; do
3734                                         if test "X$fp" = X.; then
3735                                             dir="$ans"
3736                                             direxp="$ansexp"
3737                                         else    
3738                                             dir="$fp/$ansexp"
3739                                             direxp="$fp/$ansexp"
3740                                         fi
3741                                         if test -d "$direxp"; then
3742                                                 type=''
3743                                                 value="$dir"
3744                                                 break
3745                                         fi
3746                                 done
3747                                 ;;
3748                         Locate)
3749                                 if test -d "$ansexp"; then
3750                                         echo "(Looking for $loc_file in directory $value.)"
3751                                         value="$value/$loc_file"
3752                                         ansexp="$ansexp/$loc_file"
3753                                 fi
3754                                 if test -f "$ansexp"; then
3755                                         type=''
3756                                 fi
3757                                 case "$nopath_ok" in
3758                                 true)   case "$value" in
3759                                         */*) ;;
3760                                         *)      echo "Assuming $value will be in people's path."
3761                                                 type=''
3762                                                 ;;
3763                                         esac
3764                                         ;;
3765                                 esac
3766                                 ;;
3767                         esac
3768
3769                         case "$skip" in
3770                         true) type='';
3771                         esac
3772
3773                         case "$type" in
3774                         '') ;;
3775                         *)
3776                                 if test "$fastread" = yes; then
3777                                         dflt=y
3778                                 else
3779                                         dflt=n
3780                                 fi
3781                                 rp="$what $value doesn't exist.  Use that name anyway?"
3782                                 . UU/myread
3783                                 dflt=''
3784                                 case "$ans" in
3785                                 y*) type='';;
3786                                 *) echo " ";;
3787                                 esac
3788                                 ;;
3789                         esac
3790                         ;;
3791                 esac
3792                 ;;
3793         esac
3794 done
3795 cd UU
3796 ans="$value"
3797 rp="$orig_rp"
3798 dflt="$orig_dflt"
3799 rm -f getfile.ok
3800 test "X$gfpthkeep" != Xy && gfpth=""
3801 EOSC
3802
3803 : What should the include directory be ?
3804 echo " "
3805 $echo $n "Hmm...  $c"
3806 dflt='/usr/include'
3807 incpath=''
3808 mips_type=''
3809 if $test -f /bin/mips && /bin/mips; then
3810         echo "Looks like a MIPS system..."
3811         $cat >usr.c <<'EOCP'
3812 #ifdef SYSTYPE_BSD43
3813 /bsd43
3814 #endif
3815 EOCP
3816         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3817                 dflt='/bsd43/usr/include'
3818                 incpath='/bsd43'
3819                 mips_type='BSD 4.3'
3820         else
3821                 mips_type='System V'
3822         fi
3823         $rm -f usr.c usr.out
3824         echo "and you're compiling with the $mips_type compiler and libraries."
3825         xxx_prompt=y
3826         echo "exit 0" >mips
3827 else
3828         echo "Doesn't look like a MIPS system."
3829         xxx_prompt=n
3830         echo "exit 1" >mips
3831 fi
3832 chmod +x mips
3833 $eunicefix mips
3834 case "$usrinc" in
3835 '') ;;
3836 *) dflt="$usrinc";;
3837 esac
3838 case "$xxx_prompt" in
3839 y)      fn=d/
3840         echo " "
3841         rp='Where are the include files you want to use?'
3842         . ./getfile
3843         usrinc="$ans"
3844         ;;
3845 *)      usrinc="$dflt"
3846         ;;
3847 esac
3848
3849 : see how we invoke the C preprocessor
3850 echo " "
3851 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3852 cat <<'EOT' >testcpp.c
3853 #define ABC abc
3854 #define XYZ xyz
3855 ABC.XYZ
3856 EOT
3857 cd ..
3858 if test ! -f cppstdin; then
3859         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3860                 # AIX cc -E doesn't show the absolute headerfile
3861                 # locations but we'll cheat by using the -M flag.
3862                 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
3863         else
3864                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3865         fi
3866 else
3867         echo "Keeping your $hint cppstdin wrapper."
3868 fi
3869 chmod 755 cppstdin
3870 wrapper=`pwd`/cppstdin
3871 ok='false'
3872 cd UU
3873
3874 if $test "X$cppstdin" != "X" && \
3875         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3876         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3877 then
3878         echo "You used to use $cppstdin $cppminus so we'll use that again."
3879         case "$cpprun" in
3880         '') echo "But let's see if we can live without a wrapper..." ;;
3881         *)
3882                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3883                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3884                 then
3885                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3886                         ok='true'
3887                 else
3888                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3889                 fi
3890                 ;;
3891         esac
3892 else
3893         case "$cppstdin" in
3894         '') ;;
3895         *)
3896                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3897                 ;;
3898         esac
3899 fi
3900
3901 if $ok; then
3902         : nothing
3903 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3904         $cc -E <testcpp.c >testcpp.out 2>&1; \
3905         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3906         echo "Yup, it does."
3907         x_cpp="$cc -E"
3908         x_minus='';
3909 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3910         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3911         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3912         echo "Yup, it does."
3913         x_cpp="$cc -E"
3914         x_minus='-';
3915 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3916         $cc -P <testcpp.c >testcpp.out 2>&1; \
3917         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3918         echo "Yipee, that works!"
3919         x_cpp="$cc -P"
3920         x_minus='';
3921 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3922         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3923         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3924         echo "At long last!"
3925         x_cpp="$cc -P"
3926         x_minus='-';
3927 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3928         $cpp <testcpp.c >testcpp.out 2>&1; \
3929         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3930         echo "It works!"
3931         x_cpp="$cpp"
3932         x_minus='';
3933 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3934         $cpp - <testcpp.c >testcpp.out 2>&1; \
3935         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3936         echo "Hooray, it works!  I was beginning to wonder."
3937         x_cpp="$cpp"
3938         x_minus='-';
3939 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3940         $wrapper <testcpp.c >testcpp.out 2>&1; \
3941         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3942         x_cpp="$wrapper"
3943         x_minus=''
3944         echo "Eureka!"
3945 else
3946         dflt=''
3947         rp="No dice.  I can't find a C preprocessor.  Name one:"
3948         . ./myread
3949         x_cpp="$ans"
3950         x_minus=''
3951         $x_cpp <testcpp.c >testcpp.out 2>&1
3952         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3953                 echo "OK, that will do." >&4
3954         else
3955 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3956                 exit 1
3957         fi
3958 fi
3959
3960 case "$ok" in
3961 false)
3962         cppstdin="$x_cpp"
3963         cppminus="$x_minus"
3964         cpprun="$x_cpp"
3965         cpplast="$x_minus"
3966         set X $x_cpp
3967         shift
3968         case "$1" in
3969         "$cpp")
3970                 echo "Perhaps can we force $cc -E using a wrapper..."
3971                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3972                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3973                 then
3974                         echo "Yup, we can."
3975                         cppstdin="$wrapper"
3976                         cppminus='';
3977                 else
3978                         echo "Nope, we'll have to live without it..."
3979                 fi
3980                 ;;
3981         esac
3982         case "$cpprun" in
3983         "$wrapper")
3984                 cpprun=''
3985                 cpplast=''
3986                 ;;
3987         esac
3988         ;;
3989 esac
3990
3991 case "$cppstdin" in
3992 "$wrapper"|'cppstdin') ;;
3993 *) $rm -f $wrapper;;
3994 esac
3995 $rm -f testcpp.c testcpp.out
3996
3997 : Set private lib path
3998 case "$plibpth" in
3999 '') if ./mips; then
4000                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4001         fi;;
4002 esac
4003 case "$libpth" in
4004 ' ') dlist='';;
4005 '') dlist="$loclibpth $plibpth $glibpth";;
4006 *) dlist="$libpth";;
4007 esac
4008
4009 : Now check and see which directories actually exist, avoiding duplicates
4010 libpth=''
4011 for xxx in $dlist
4012 do
4013     if $test -d $xxx; then
4014                 case " $libpth " in
4015                 *" $xxx "*) ;;
4016                 *) libpth="$libpth $xxx";;
4017                 esac
4018     fi
4019 done
4020 $cat <<'EOM'
4021
4022 Some systems have incompatible or broken versions of libraries.  Among
4023 the directories listed in the question below, please remove any you
4024 know not to be holding relevant libraries, and add any that are needed.
4025 Say "none" for none.
4026
4027 EOM
4028 case "$libpth" in
4029 '') dflt='none';;
4030 *)
4031         set X $libpth
4032         shift
4033         dflt=${1+"$@"}
4034         ;;
4035 esac
4036 rp="Directories to use for library searches?"
4037 . ./myread
4038 case "$ans" in
4039 none) libpth=' ';;
4040 *) libpth="$ans";;
4041 esac
4042
4043 : compute shared library extension
4044 case "$so" in
4045 '')
4046         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4047                 dflt='sl'
4048         else
4049                 dflt='so'
4050         fi
4051         ;;
4052 *) dflt="$so";;
4053 esac
4054 $cat <<EOM
4055
4056 On some systems, shared libraries may be available.  Answer 'none' if
4057 you want to suppress searching of shared libraries for the remainder
4058 of this configuration.
4059
4060 EOM
4061 rp='What is the file extension used for shared libraries?'
4062 . ./myread
4063 so="$ans"
4064
4065 : Define several unixisms.
4066 : Hints files or command line option can be used to override them.
4067 : The convoluted testing is in case hints files set either the old
4068 : or the new name.
4069 case "$_exe" in
4070 '')     case "$exe_ext" in
4071     '') ;;
4072         *)      _exe="$exe_ext" ;;
4073         esac
4074         ;;
4075 esac
4076 case "$_a" in
4077 '')     case "$lib_ext" in
4078     '') _a='.a';;
4079         *)      _a="$lib_ext" ;;
4080         esac
4081         ;;
4082 esac
4083 case "$_o" in
4084 '') case "$obj_ext" in
4085         '')     _o='.o';;
4086         *)      _o="$obj_ext";;
4087         esac
4088         ;;
4089 esac
4090 case "$p_" in
4091 '') case "$path_sep" in
4092         '')     p_=':';;
4093         *)      p_="$path_sep";;
4094         esac
4095         ;;
4096 esac
4097 exe_ext=$_exe
4098 lib_ext=$_a
4099 obj_ext=$_o
4100 path_sep=$p_
4101
4102 : Which makefile gets called first.  This is used by make depend.
4103 case "$firstmakefile" in
4104 '') firstmakefile='makefile';;
4105 esac
4106
4107 case "$usesocks" in
4108 $define|true|[yY]*)     dflt='y';;
4109 *) dflt='n';;
4110 esac
4111 cat <<EOM
4112
4113 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4114 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4115 to use the PerlIO abstraction layer, this will be implicitly selected.
4116
4117 If this doesn't make any sense to you, just accept the default '$dflt'.
4118 EOM
4119 rp='Build Perl for SOCKS?'
4120 . ./myread
4121 case "$ans" in
4122 y|Y)    val="$define" ;;     
4123 *)      val="$undef" ;;
4124 esac
4125 set usesocks
4126 eval $setvar
4127
4128 case "$usesocks" in
4129 $define|true|[yY]*) useperlio="$define";;
4130 esac
4131
4132 : Looking for optional libraries
4133 echo " "
4134 echo "Checking for optional libraries..." >&4
4135 case "$libs" in
4136 ' '|'') dflt='';;
4137 *) dflt="$libs";;
4138 esac
4139 case "$libswanted" in
4140 '') libswanted='c_s';;
4141 esac
4142 case "$usesocks" in
4143 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4144 esac
4145 libsfound=''
4146 libsfiles=''
4147 libsdirs=''
4148 libspath=''
4149 for thisdir in $libpth $xlibpth; do
4150   test -d $thisdir && libspath="$libspath $thisdir"
4151 done
4152 for thislib in $libswanted; do
4153         for thisdir in $libspath; do
4154             xxx=''
4155             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4156                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4157                 $test -f "$xxx" && eval $libscheck
4158                 $test -f "$xxx" && libstyle=shared
4159             fi
4160             if test ! -f "$xxx"; then
4161                 xxx=$thisdir/lib$thislib.$so
4162                 $test -f "$xxx" && eval $libscheck
4163                 $test -f "$xxx" && libstyle=shared
4164             fi  
4165             if test ! -f "$xxx"; then
4166                 xxx=$thisdir/lib$thislib$_a
4167                 $test -f "$xxx" && eval $libscheck
4168                 $test -f "$xxx" && libstyle=static
4169             fi
4170             if test ! -f "$xxx"; then
4171                 xxx=$thisdir/$thislib$_a
4172                 $test -f "$xxx" && eval $libscheck
4173                 $test -f "$xxx" && libstyle=static
4174             fi
4175             if test ! -f "$xxx"; then
4176                 xxx=$thisdir/lib${thislib}_s$_a
4177                 $test -f "$xxx" && eval $libscheck
4178                 $test -f "$xxx" && libstyle=static
4179                 $test -f "$xxx" && thislib=${thislib}_s
4180             fi
4181             if test ! -f "$xxx"; then
4182                 xxx=$thisdir/Slib$thislib$_a
4183                 $test -f "$xxx" && eval $libscheck
4184                 $test -f "$xxx" && libstyle=static
4185             fi
4186             if $test -f "$xxx"; then
4187                 case "$libstyle" in
4188                 shared) echo "Found -l$thislib (shared)." ;;
4189                 static) echo "Found -l$thislib." ;;
4190                 *)      echo "Found -l$thislib ($libstyle)." ;;
4191                 esac
4192                 case " $dflt " in
4193                 *"-l$thislib "*);;
4194                 *) dflt="$dflt -l$thislib"
4195                    libsfound="$libsfound $xxx"
4196                    yyy=`basename $xxx`
4197                    libsfiles="$libsfiles $yyy"
4198                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4199                    case " $libsdirs " in
4200                    *" $yyy "*) ;;
4201                    *) libsdirs="$libsdirs $yyy" ;;
4202                    esac
4203                    ;;
4204                 esac
4205                 break
4206             fi  
4207         done
4208         if $test ! -f "$xxx"; then
4209             echo "No -l$thislib."
4210         fi
4211 done
4212 set X $dflt
4213 shift
4214 dflt="$*"
4215 case "$libs" in
4216 '') dflt="$dflt";;
4217 *) dflt="$libs";;
4218 esac
4219 case "$dflt" in
4220 ' '|'') dflt='none';;
4221 esac
4222
4223 $cat <<EOM
4224
4225 In order to compile $package on your machine, a number of libraries
4226 are usually needed.  Include any other special libraries here as well.
4227 Say "none" for none.  The default list is almost always right.
4228 EOM
4229
4230 echo " "
4231 rp="What libraries to use?"
4232 . ./myread
4233 case "$ans" in
4234 none) libs=' ';;
4235 *) libs="$ans";;
4236 esac
4237
4238 : determine optimization, if desired, or use for debug flag also
4239 case "$optimize" in
4240 ' '|$undef) dflt='none';;
4241 '') dflt='-O';;
4242 *) dflt="$optimize";;
4243 esac
4244 $cat <<EOH
4245
4246 By default, $package compiles with the -O flag to use the optimizer.
4247 Alternately, you might want to use the symbolic debugger, which uses
4248 the -g flag (on traditional Unix systems).  Either flag can be
4249 specified here.  To use neither flag, specify the word "none".
4250
4251 EOH
4252 rp="What optimizer/debugger flag should be used?"
4253 . ./myread
4254 optimize="$ans"
4255 case "$optimize" in
4256 'none') optimize=" ";;
4257 esac
4258
4259 dflt=''
4260 : We will not override a previous value, but we might want to
4261 : augment a hint file
4262 case "$hint" in
4263 default|recommended)
4264         case "$gccversion" in
4265         1*) dflt='-fpcc-struct-return' ;;
4266         esac
4267         case "$optimize" in
4268         *-g*) dflt="$dflt -DDEBUGGING";;
4269         esac
4270         case "$gccversion" in
4271         2*) if test -d /etc/conf/kconfig.d &&
4272                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4273                 then
4274                         dflt="$dflt -posix"
4275                 fi
4276                 ;;
4277         esac
4278         case "$gccversion" in
4279         1*) ;;
4280         2.[0-8]*) ;;
4281         ?*)     echo " "
4282                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4283                 echo 'int main(void) { return 0; }' > gcctest.c
4284                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4285                         echo "Yes, it does." 2>&1
4286                         case "$ccflags" in
4287                         *strict-aliasing*) 
4288                                 echo "Leaving current flags $ccflags alone." 2>&1
4289                                 ;;
4290                         *) dflt="$dflt -fno-strict-aliasing" ;;
4291                         esac
4292                 else
4293                         echo "Nope, it doesn't, but that's ok." 2>&1
4294                 fi
4295                 ;;
4296         esac
4297         ;;
4298 esac
4299
4300 case "$mips_type" in
4301 *BSD*|'') inclwanted="$locincpth $usrinc";;
4302 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4303 esac
4304 for thisincl in $inclwanted; do
4305         if $test -d $thisincl; then
4306                 if $test x$thisincl != x$usrinc; then
4307                         case "$dflt" in
4308                         *" -I$thisincl "*);;
4309                         *) dflt="$dflt -I$thisincl ";;
4310                         esac
4311                 fi
4312         fi
4313 done
4314
4315 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4316         xxx=true;
4317 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4318         xxx=true;
4319 else
4320         xxx=false;
4321 fi;
4322 if $xxx; then
4323         case "$dflt" in
4324         *$2*);;
4325         *) dflt="$dflt -D$2";;
4326         esac;
4327 fi'
4328
4329 set signal.h LANGUAGE_C; eval $inctest
4330
4331 case "$usesocks" in
4332 $define)
4333         ccflags="$ccflags -DSOCKS"
4334         ;;
4335 esac
4336
4337 case "$hint" in
4338 default|recommended) dflt="$ccflags $dflt" ;;
4339 *) dflt="$ccflags";;
4340 esac
4341
4342 case "$dflt" in
4343 ''|' ') dflt=none;;
4344 esac
4345
4346 $cat <<EOH
4347
4348 Your C compiler may want other flags.  For this question you should include
4349 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4350 but you should NOT include libraries or ld flags like -lwhatever.  If you
4351 want $package to honor its debug switch, you should include -DDEBUGGING here.
4352 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4353
4354 To use no flags, specify the word "none".
4355
4356 EOH
4357 set X $dflt
4358 shift
4359 dflt=${1+"$@"}
4360 rp="Any additional cc flags?"
4361 . ./myread
4362 case "$ans" in
4363 none) ccflags='';;
4364 *) ccflags="$ans";;
4365 esac
4366
4367 : the following weeds options from ccflags that are of no interest to cpp
4368 case "$cppflags" in
4369 '') cppflags="$ccflags" ;;
4370 *)  cppflags="$cppflags $ccflags" ;;
4371 esac
4372 case "$gccversion" in
4373 1*) cppflags="$cppflags -D__GNUC__"
4374 esac
4375 case "$mips_type" in
4376 '');;
4377 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4378 esac
4379 case "$cppflags" in
4380 '');;
4381 *)
4382         echo " "
4383         echo "Let me guess what the preprocessor flags are..." >&4
4384         set X $cppflags
4385         shift
4386         cppflags=''
4387         $cat >cpp.c <<'EOM'
4388 #define BLURFL foo
4389
4390 BLURFL xx LFRULB
4391 EOM
4392         previous=''
4393         for flag in $*
4394         do
4395                 case "$flag" in
4396                 -*) ftry="$flag";;
4397                 *) ftry="$previous $flag";;
4398                 esac
4399                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4400                         >cpp1.out 2>/dev/null && \
4401                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4402                         >cpp2.out 2>/dev/null && \
4403                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4404                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4405                 then
4406                         cppflags="$cppflags $ftry"
4407                         previous=''
4408                 else
4409                         previous="$flag"
4410                 fi
4411         done
4412         set X $cppflags
4413         shift
4414         cppflags=${1+"$@"}
4415         case "$cppflags" in
4416         *-*)  echo "They appear to be: $cppflags";;
4417         esac
4418         $rm -f cpp.c cpp?.out
4419         ;;
4420 esac
4421
4422 : flags used in final linking phase
4423 case "$ldflags" in
4424 '') if ./venix; then
4425                 dflt='-i -z'
4426         else
4427                 dflt=''
4428         fi
4429         case "$ccflags" in
4430         *-posix*) dflt="$dflt -posix" ;;
4431         esac
4432         ;;
4433 *) dflt="$ldflags";;
4434 esac
4435
4436 : Try to guess additional flags to pick up local libraries.
4437 for thislibdir in $libpth; do
4438         case " $loclibpth " in
4439         *" $thislibdir "*)
4440                 case "$dflt " in 
4441                 *"-L$thislibdir "*) ;;
4442                 *)  dflt="$dflt -L$thislibdir" ;;
4443                 esac
4444                 ;;
4445         esac
4446 done
4447
4448 case "$dflt" in
4449 '') dflt='none' ;;
4450 esac
4451
4452 $cat <<EOH
4453
4454 Your C linker may need flags.  For this question you should
4455 include -L/whatever and any other flags used by the C linker, but you
4456 should NOT include libraries like -lwhatever.
4457
4458 Make sure you include the appropriate -L/path flags if your C linker
4459 does not normally search all of the directories you specified above,
4460 namely
4461         $libpth
4462 To use no flags, specify the word "none".
4463
4464 EOH
4465
4466 rp="Any additional ld flags (NOT including libraries)?"
4467 . ./myread
4468 case "$ans" in
4469 none) ldflags='';;
4470 *) ldflags="$ans";;
4471 esac
4472 rmlist="$rmlist pdp11"
4473
4474 : coherency check
4475 echo " "
4476 echo "Checking your choice of C compiler and flags for coherency..." >&4
4477 $cat > try.c <<'EOF'
4478 #include <stdio.h>
4479 int main() { printf("Ok\n"); exit(0); }
4480 EOF
4481 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4482 shift
4483 $cat >try.msg <<'EOM'
4484 I've tried to compile and run the following simple program:
4485
4486 EOM
4487 $cat try.c >> try.msg
4488
4489 $cat >> try.msg <<EOM
4490
4491 I used the command:
4492
4493         $*
4494         $run ./try
4495
4496 and I got the following output:
4497
4498 EOM
4499 dflt=y
4500 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4501         if $sh -c "$run ./try" >>try.msg 2>&1; then
4502                 xxx=`$run ./try`
4503                 case "$xxx" in
4504                 "Ok") dflt=n ;;
4505                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4506                         case " $libs " in
4507                         *" -lsfio "*)
4508                                 cat >> try.msg <<'EOQS'
4509 If $libs contains -lsfio, and sfio is mis-configured, then it
4510 sometimes (apparently) runs and exits with a 0 status, but with no
4511 output!  It may have to do with sfio's use of _exit vs. exit.
4512
4513 EOQS
4514                                 rp="You have a big problem.  Shall I abort Configure"
4515                                 dflt=y
4516                                 ;;
4517                         esac
4518                         ;;
4519                 esac
4520         else
4521                 echo "The program compiled OK, but exited with status $?." >>try.msg
4522                 rp="You have a problem.  Shall I abort Configure"
4523                 dflt=y
4524         fi
4525 else
4526         echo "I can't compile the test program." >>try.msg
4527         rp="You have a BIG problem.  Shall I abort Configure"
4528         dflt=y
4529 fi
4530 case "$dflt" in
4531 y)
4532         $cat try.msg >&4
4533         case "$knowitall" in
4534         '')
4535                 echo "(The supplied flags or libraries might be incorrect.)"
4536                 ;;
4537         *) dflt=n;;
4538         esac
4539         echo " "
4540         . ./myread
4541         case "$ans" in
4542         n*|N*) ;;
4543         *)      echo "Ok.  Stopping Configure." >&4
4544                 exit 1
4545                 ;;
4546         esac
4547         ;;
4548 n) echo "OK, that should do.";;
4549 esac
4550 $rm -f try try.* core
4551
4552 : define a shorthand compile call
4553 compile='
4554 mc_file=$1;
4555 shift;
4556 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4557 : define a shorthand compile call for compilations that should be ok.
4558 compile_ok='
4559 mc_file=$1;
4560 shift;
4561 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4562
4563 : check for lengths of integral types
4564 echo " "
4565 case "$intsize" in
4566 '')
4567         echo "Checking to see how big your integers are..." >&4
4568         $cat >try.c <<'EOCP'
4569 #include <stdio.h>
4570 int main()
4571 {
4572         printf("intsize=%d;\n", (int)sizeof(int));
4573         printf("longsize=%d;\n", (int)sizeof(long));
4574         printf("shortsize=%d;\n", (int)sizeof(short));
4575         exit(0);
4576 }
4577 EOCP
4578         set try
4579         if eval $compile_ok && $run ./try > /dev/null; then
4580                 eval `$run ./try`
4581                 echo "Your integers are $intsize bytes long."
4582                 echo "Your long integers are $longsize bytes long."
4583                 echo "Your short integers are $shortsize bytes long."
4584         else
4585                 $cat >&4 <<EOM
4586 !
4587 Help! I can't compile and run the intsize test program: please enlighten me!
4588 (This is probably a misconfiguration in your system or libraries, and
4589 you really ought to fix it.  Still, I'll try anyway.)
4590 !
4591 EOM
4592                 dflt=4
4593                 rp="What is the size of an integer (in bytes)?"
4594                 . ./myread
4595                 intsize="$ans"
4596                 dflt=$intsize
4597                 rp="What is the size of a long integer (in bytes)?"
4598                 . ./myread
4599                 longsize="$ans"
4600                 dflt=2
4601                 rp="What is the size of a short integer (in bytes)?"
4602                 . ./myread
4603                 shortsize="$ans"
4604         fi
4605         ;;
4606 esac
4607 $rm -f try try.*
4608
4609 : check for void type
4610 echo " "
4611 echo "Checking to see how well your C compiler groks the void type..." >&4
4612 case "$voidflags" in
4613 '')
4614         $cat >try.c <<'EOCP'
4615 #if TRY & 1
4616 void sub() {
4617 #else
4618 sub() {
4619 #endif
4620         extern void moo();      /* function returning void */
4621         void (*goo)();          /* ptr to func returning void */
4622 #if TRY & 8
4623         void *hue;              /* generic ptr */
4624 #endif
4625 #if TRY & 2
4626         void (*foo[10])();
4627 #endif
4628
4629 #if TRY & 4
4630         if(goo == moo) {
4631                 exit(0);
4632         }
4633 #endif
4634         exit(0);
4635 }
4636 int main() { sub(); }
4637 EOCP
4638         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4639                 voidflags=$defvoidused
4640         echo "Good.  It appears to support void to the level $package wants.">&4
4641                 if $contains warning .out >/dev/null 2>&1; then
4642                         echo "However, you might get some warnings that look like this:"
4643                         $cat .out
4644                 fi
4645         else
4646 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4647                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4648                         echo "It supports 1..."
4649                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4650                                 echo "It also supports 2..."
4651                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4652                                         voidflags=7
4653                                         echo "And it supports 4 but not 8 definitely."
4654                                 else
4655                                         echo "It doesn't support 4..."
4656                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4657                                                 voidflags=11
4658                                                 echo "But it supports 8."
4659                                         else
4660                                                 voidflags=3
4661                                                 echo "Neither does it support 8."
4662                                         fi
4663                                 fi
4664                         else
4665                                 echo "It does not support 2..."
4666                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4667                                         voidflags=13
4668                                         echo "But it supports 4 and 8."
4669                                 else
4670                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4671                                                 voidflags=5
4672                                                 echo "And it supports 4 but has not heard about 8."
4673                                         else
4674                                                 echo "However it supports 8 but not 4."
4675                                         fi
4676                                 fi
4677                         fi
4678                 else
4679                         echo "There is no support at all for void."
4680                         voidflags=0
4681                 fi
4682         fi
4683 esac
4684 case "$voidflags" in
4685 "$defvoidused") ;;
4686 *)      $cat >&4 <<'EOM'
4687   Support flag bits are:
4688     1: basic void declarations.
4689     2: arrays of pointers to functions returning void.
4690     4: operations between pointers to and addresses of void functions.
4691     8: generic void pointers.
4692 EOM
4693         dflt="$voidflags";
4694         rp="Your void support flags add up to what?"
4695         . ./myread
4696         voidflags="$ans"
4697         ;;
4698 esac
4699 $rm -f try.* .out
4700
4701 : check for length of pointer
4702 echo " "
4703 case "$ptrsize" in
4704 '')
4705         echo "Checking to see how big your pointers are..." >&4
4706         if test "$voidflags" -gt 7; then
4707                 echo '#define VOID_PTR char *' > try.c
4708         else
4709                 echo '#define VOID_PTR void *' > try.c
4710         fi
4711         $cat >>try.c <<'EOCP'
4712 #include <stdio.h>
4713 int main()
4714 {
4715     printf("%d\n", (int)sizeof(VOID_PTR));
4716     exit(0);
4717 }
4718 EOCP
4719         set try
4720         if eval $compile_ok; then
4721                 ptrsize=`$run ./try`
4722                 echo "Your pointers are $ptrsize bytes long."
4723         else
4724                 dflt='4'
4725                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4726                 rp="What is the size of a pointer (in bytes)?"
4727                 . ./myread
4728                 ptrsize="$ans"
4729         fi
4730         ;;
4731 esac
4732 $rm -f try.c try
4733
4734 : check for long long
4735 echo " "
4736 echo "Checking to see if you have long long..." >&4
4737 echo 'int main() { long long x = 7; return 0; }' > try.c
4738 set try
4739 if eval $compile; then
4740         val="$define"
4741         echo "You have long long."
4742 else
4743         val="$undef"
4744         echo "You do not have long long."
4745 fi
4746 $rm try.*
4747 set d_longlong
4748 eval $setvar
4749
4750 : check for length of long long
4751 case "${d_longlong}${longlongsize}" in
4752 $define)
4753         echo " "
4754         echo "Checking to see how big your long longs are..." >&4
4755         $cat >try.c <<'EOCP'
4756 #include <stdio.h>
4757 int main()
4758 {
4759     printf("%d\n", (int)sizeof(long long));
4760     return(0);
4761 }
4762 EOCP
4763         set try
4764         if eval $compile_ok; then
4765                 longlongsize=`$run ./try`
4766                 echo "Your long longs are $longlongsize bytes long."
4767         else
4768                 dflt='8'
4769                 echo " "
4770                 echo "(I can't seem to compile the test program.  Guessing...)"
4771                 rp="What is the size of a long long (in bytes)?"
4772                 . ./myread
4773                 longlongsize="$ans"
4774         fi
4775         if $test "X$longsize" = "X$longlongsize"; then
4776                 echo "(That isn't any different from an ordinary long.)"
4777         fi      
4778         ;;
4779 esac
4780 $rm -f try.* try
4781
4782 : determine filename position in cpp output
4783 echo " "
4784 echo "Computing filename position in cpp output for #include directives..." >&4
4785 echo '#include <stdio.h>' > foo.c
4786 $cat >fieldn <<EOF
4787 $startsh
4788 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4789 $grep '^[       ]*#.*stdio\.h' | \
4790 while read cline; do
4791         pos=1
4792         set \$cline
4793         while $test \$# -gt 0; do
4794                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4795                         echo "\$pos"
4796                         exit 0
4797                 fi
4798                 shift
4799                 pos=\`expr \$pos + 1\`
4800         done
4801 done
4802 EOF
4803 chmod +x fieldn
4804 fieldn=`./fieldn`
4805 $rm -f foo.c fieldn
4806 case $fieldn in
4807 '') pos='???';;
4808 1) pos=first;;
4809 2) pos=second;;
4810 3) pos=third;;
4811 *) pos="${fieldn}th";;
4812 esac
4813 echo "Your cpp writes the filename in the $pos field of the line."
4814
4815 : locate header file
4816 $cat >findhdr <<EOF
4817 $startsh
4818 wanted=\$1
4819 name=''
4820 for usrincdir in $usrinc
4821 do
4822         if test -f \$usrincdir/\$wanted; then
4823                 echo "\$usrincdir/\$wanted"
4824                 exit 0
4825         fi
4826 done
4827 awkprg='{ print \$$fieldn }'
4828 echo "#include <\$wanted>" > foo\$\$.c
4829 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4830 $grep "^[       ]*#.*\$wanted" | \
4831 while read cline; do
4832         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4833         case "\$name" in
4834         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4835         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4836         *) exit 2;;
4837         esac;
4838 done;
4839 #
4840 # status = 0: grep returned 0 lines, case statement not executed
4841 # status = 1: headerfile found
4842 # status = 2: while loop executed, no headerfile found
4843 #
4844 status=\$?
4845 $rm -f foo\$\$.c;
4846 if test \$status -eq 1; then
4847         exit 0;
4848 fi
4849 exit 1
4850 EOF
4851 chmod +x findhdr
4852
4853 : define an alternate in-header-list? function
4854 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4855 cont=true; xxf="echo \"<\$1> found.\" >&4";
4856 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4857 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4858 esac;
4859 case $# in 4) instead=instead;; *) instead="at last";; esac;
4860 while $test "$cont"; do
4861         xxx=`./findhdr $1`
4862         var=$2; eval "was=\$$2";
4863         if $test "$xxx" && $test -r "$xxx";
4864         then eval $xxf;
4865         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4866                 cont="";
4867         else eval $xxnf;
4868         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4869         set $yyy; shift; shift; yyy=$@;
4870         case $# in 0) cont="";;
4871         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4872                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4873         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4874                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4875         esac;
4876 done;
4877 while $test "$yyy";
4878 do set $yyy; var=$2; eval "was=\$$2";
4879         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4880         set $yyy; shift; shift; yyy=$@;
4881 done'
4882
4883 : see if inttypes.h is available
4884 : we want a real compile instead of Inhdr because some systems
4885 : have an inttypes.h which includes non-existent headers
4886 echo " "
4887 $cat >try.c <<EOCP
4888 #include <inttypes.h>
4889 int main() {
4890         static int32_t foo32 = 0x12345678;
4891 }
4892 EOCP
4893 set try
4894 if eval $compile; then
4895         echo "<inttypes.h> found." >&4
4896         val="$define"
4897 else
4898         echo "<inttypes.h> NOT found." >&4
4899         val="$undef"
4900 fi
4901 $rm -f try.c try
4902 set i_inttypes
4903 eval $setvar
4904
4905 : check for int64_t
4906 echo " "
4907 echo "Checking to see if you have int64_t..." >&4
4908 $cat >try.c <<EOCP
4909 #include <sys/types.h>
4910 #$i_inttypes I_INTTYPES
4911 #ifdef I_INTTYPES
4912 #include <inttypes.h>
4913 #endif
4914 int main() { int64_t x = 7; }
4915 EOCP
4916 set try
4917 if eval $compile; then
4918         val="$define"
4919         echo "You have int64_t."
4920 else
4921         val="$undef"
4922         echo "You do not have int64_t."
4923 fi
4924 $rm -f try try.*
4925 set d_int64_t
4926 eval $setvar
4927
4928
4929 echo " "
4930 echo "Checking which 64-bit integer type we could use..." >&4
4931
4932 case "$intsize" in
4933 8) val=int
4934    set quadtype
4935    eval $setvar
4936    val='"unsigned int"'
4937    set uquadtype
4938    eval $setvar
4939    quadkind=1
4940    ;;
4941 *) case "$longsize" in
4942    8) val=long
4943       set quadtype
4944       eval $setvar
4945       val='"unsigned long"'
4946       set uquadtype
4947       eval $setvar
4948       quadkind=2
4949       ;;
4950    *) case "$d_longlong:$longlongsize" in
4951       define:8)
4952         val='"long long"'
4953         set quadtype
4954         eval $setvar
4955         val='"unsigned long long"'
4956         set uquadtype
4957         eval $setvar
4958         quadkind=3
4959         ;;
4960       *) case "$d_int64_t" in
4961          define)
4962            val=int64_t
4963            set quadtype
4964            eval $setvar
4965            val=uint64_t
4966            set uquadtype
4967            eval $setvar
4968            quadkind=4
4969            ;;
4970          esac
4971          ;;
4972       esac
4973       ;;
4974    esac
4975    ;;
4976 esac
4977
4978 case "$quadtype" in
4979 '')     echo "Alas, no 64-bit integer types in sight." >&4
4980         d_quad="$undef"
4981         ;;
4982 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4983         d_quad="$define"
4984         ;;
4985 esac
4986
4987
4988 case "$uselonglong" in
4989 "$define"|true|[yY]*)
4990         cat <<EOM >&4
4991
4992 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4993 EOM
4994         use64bitint="$define"
4995         ;;
4996 esac                          
4997 case "$use64bits" in
4998 "$define"|true|[yY]*)
4999         cat <<EOM >&4
5000
5001 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5002 EOM
5003         use64bitint="$define"
5004         ;;
5005 esac                          
5006 case "$use64bitints" in
5007 "$define"|true|[yY]*)
5008         cat <<EOM >&4
5009
5010 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5011 EOM
5012         use64bitint="$define"
5013         ;;
5014 esac                          
5015 case "$use64bitsint" in
5016 "$define"|true|[yY]*)
5017         cat <<EOM >&4
5018
5019 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5020 EOM
5021         use64bitint="$define"
5022         ;;
5023 esac                          
5024 case "$uselonglongs" in
5025 "$define"|true|[yY]*)
5026         cat <<EOM >&4
5027
5028 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5029 EOM
5030         use64bitint="$define"
5031         ;;
5032 esac                          
5033 case "$use64bitsall" in
5034 "$define"|true|[yY]*)
5035         cat <<EOM >&4
5036
5037 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5038 EOM
5039         use64bitall="$define"
5040         ;;
5041 esac                          
5042
5043 case "$ccflags" in
5044 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5045 esac
5046 case "$use64bitall" in
5047 "$define"|true|[yY]*) use64bitint="$define" ;;
5048 esac
5049
5050 case "$longsize" in
5051 8) cat <<EOM
5052
5053 You have natively 64-bit long integers.
5054 EOM
5055    val="$define"
5056    ;;
5057 *) case "$use64bitint" in
5058    "$define"|true|[yY]*) dflt='y';;
5059    *) dflt='n';;
5060    esac
5061    case "$d_quad" in
5062    "$define") ;;
5063    *) dflt='n' ;;
5064    esac
5065    cat <<EOM
5066
5067 Perl can be built to take advantage of 64-bit integer types
5068 on some systems.  To do so, Configure can be run with -Duse64bitint.
5069 Choosing this option will most probably introduce binary incompatibilities.
5070
5071 If this doesn't make any sense to you, just accept the default '$dflt'.
5072 (The default has been chosen based on your configuration.)
5073 EOM
5074    rp='Try to use 64-bit integers, if available?'
5075    . ./myread
5076    case "$ans" in
5077    [yY]*) val="$define" ;;
5078    *)     val="$undef"  ;;
5079    esac
5080    ;;
5081 esac
5082 set use64bitint
5083 eval $setvar
5084
5085 case "$use64bitall" in
5086 "$define"|true|[yY]*) dflt='y' ;;
5087 *) case "$longsize" in
5088    8) dflt='y' ;;
5089    *) dflt='n' ;;
5090    esac
5091    ;;
5092 esac    
5093 cat <<EOM
5094
5095 You may also choose to try maximal 64-bitness.  It means using as much
5096 64-bitness as possible on the platform.  This in turn means even more
5097 binary incompatibilities.  On the other hand, your platform may not
5098 have any more 64-bitness available than what you already have chosen.
5099
5100 If this doesn't make any sense to you, just accept the default '$dflt'.
5101 (The default has been chosen based on your configuration.)
5102 EOM
5103 rp='Try to use maximal 64-bit support, if available?'
5104 . ./myread
5105 case "$ans" in
5106 [yY]*) val="$define" ;;
5107 *)     val="$undef"  ;;
5108 esac
5109 set use64bitall
5110 eval $setvar
5111 case "$use64bitall" in
5112 "$define")
5113         case "$use64bitint" in
5114         "$undef")
5115                 cat <<EOM
5116
5117 Since you have chosen a maximally 64-bit build, I'm also turning on
5118 the use of 64-bit integers.
5119 EOM
5120                 use64bitint="$define" ;;
5121         esac
5122         ;;
5123 esac
5124
5125 case "$use64bitall" in
5126 "$define"|true|[yY]*)
5127         case "$ptrsize" in
5128         4)      cat <<EOM >&4
5129
5130 *** You have chosen a maximally 64-bit build, but your pointers
5131 *** are only 4 bytes wide, disabling maximal 64-bitness.
5132
5133 EOM
5134                 use64bitall="$undef"
5135                 case "$use64bitint" in
5136                 "$define"|true|[yY]*) ;;
5137                 *)      cat <<EOM >&4
5138
5139 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5140
5141 EOM
5142                         use64bitint="$define"
5143                         ;;
5144                 esac
5145                 ;;
5146         esac
5147         ;;
5148 esac
5149
5150 case "$use64bitint" in
5151 "$define"|true|[yY]*)
5152 : Look for a hint-file generated 'call-back-unit'.  If the
5153 : user has specified that a 64-bit perl is to be built,
5154 : we may need to set or change some other defaults.
5155         if $test -f use64bitint.cbu; then
5156                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5157                 . ./use64bitint.cbu
5158         fi
5159         case "$longsize" in
5160         4) case "$archname64" in
5161            '') archname64=64int ;;
5162            esac
5163            ;;
5164         esac
5165         ;;
5166 esac
5167
5168 case "$use64bitall" in
5169 "$define"|true|[yY]*)
5170 : Look for a hint-file generated 'call-back-unit'.  If the
5171 : user has specified that a maximally 64-bit perl is to be built,
5172 : we may need to set or change some other defaults.
5173         if $test -f use64bitall.cbu; then
5174                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5175                 . ./use64bitall.cbu
5176         fi
5177         case "$longsize" in
5178         4) case "$archname64" in
5179            ''|64int) archname64=64all ;;
5180            esac
5181            ;;
5182         esac
5183         ;;
5184 esac
5185
5186 echo " "
5187 echo "Checking for GNU C Library..." >&4
5188 cat >try.c <<EOM
5189 #include <stdio.h>
5190 int main()
5191 {
5192 #ifdef __GLIBC__
5193     exit(0);
5194 #else
5195     exit(1);
5196 #endif
5197 }
5198 EOM
5199 set try
5200 if eval $compile_ok && $run ./try; then
5201         val="$define"
5202         echo "You are using the GNU C Library"
5203 else
5204         val="$undef"
5205         echo "You are not using the GNU C Library"
5206 fi
5207 $rm -f try try.*
5208 set d_gnulibc
5209 eval $setvar
5210
5211 : see if nm is to be used to determine whether a symbol is defined or not
5212 case "$usenm" in
5213 '')
5214         dflt=''
5215         case "$d_gnulibc" in
5216         "$define")
5217                 echo " "
5218                 echo "nm probably won't work on the GNU C Library." >&4
5219                 dflt=n
5220                 ;;
5221         esac
5222         case "$dflt" in
5223         '') 
5224                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5225                         echo " "
5226                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5227                         echo "'nm' won't be sufficient on this sytem." >&4
5228                         dflt=n
5229                 fi
5230                 ;;
5231         esac
5232         case "$dflt" in
5233         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5234                 if $test $dflt -gt 20; then
5235                         dflt=y
5236                 else
5237                         dflt=n
5238                 fi
5239                 ;;
5240         esac
5241         ;;
5242 *)
5243         case "$usenm" in
5244         true|$define) dflt=y;;
5245         *) dflt=n;;
5246         esac
5247         ;;
5248 esac
5249 $cat <<EOM
5250
5251 I can use $nm to extract the symbols from your C libraries. This
5252 is a time consuming task which may generate huge output on the disk (up
5253 to 3 megabytes) but that should make the symbols extraction faster. The
5254 alternative is to skip the 'nm' extraction part and to compile a small
5255 test program instead to determine whether each symbol is present. If
5256 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5257 this may be the best solution.
5258
5259 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5260
5261 EOM
5262 rp="Shall I use $nm to extract C symbols from the libraries?"
5263 . ./myread
5264 case "$ans" in
5265 [Nn]*) usenm=false;;
5266 *) usenm=true;;
5267 esac
5268
5269 runnm=$usenm
5270 case "$reuseval" in
5271 true) runnm=false;;
5272 esac
5273
5274 : nm options which may be necessary
5275 case "$nm_opt" in
5276 '') if $test -f /mach_boot; then
5277                 nm_opt=''       # Mach
5278         elif $test -d /usr/ccs/lib; then
5279                 nm_opt='-p'     # Solaris (and SunOS?)
5280         elif $test -f /dgux; then
5281                 nm_opt='-p'     # DG-UX
5282         elif $test -f /lib64/rld; then
5283                 nm_opt='-p'     # 64-bit Irix
5284         else
5285                 nm_opt=''
5286         fi;;
5287 esac
5288
5289 : nm options which may be necessary for shared libraries but illegal
5290 : for archive libraries.  Thank you, Linux.
5291 case "$nm_so_opt" in
5292 '')     case "$myuname" in
5293         *linux*)
5294                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5295                         nm_so_opt='--dynamic'
5296                 fi
5297                 ;;
5298         esac
5299         ;;
5300 esac
5301
5302 case "$runnm" in
5303 true)
5304 : get list of predefined functions in a handy place
5305 echo " "
5306 case "$libc" in
5307 '') libc=unknown
5308         case "$libs" in
5309         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5310         esac
5311         ;;
5312 esac
5313 case "$libs" in
5314 '') ;;
5315 *)  for thislib in $libs; do
5316         case "$thislib" in
5317         -lc|-lc_s)
5318                 : Handle C library specially below.
5319                 ;;
5320         -l*)
5321                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5322                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5323                         :
5324                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5325                         :
5326                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5327                         :
5328                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5329                         :
5330                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5331                         :
5332                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5333                         :
5334                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5335                         :
5336                 else
5337                         try=''
5338                 fi
5339                 libnames="$libnames $try"
5340                 ;;
5341         *) libnames="$libnames $thislib" ;;
5342         esac
5343         done
5344         ;;
5345 esac
5346 xxx=normal
5347 case "$libc" in
5348 unknown)
5349         set /lib/libc.$so
5350         for xxx in $libpth; do
5351                 $test -r $1 || set $xxx/libc.$so
5352                 : The messy sed command sorts on library version numbers.
5353                 $test -r $1 || \
5354                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5355                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5356                                 h
5357                                 s/[0-9][0-9]*/0000&/g
5358                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5359                                 G
5360                                 s/\n/ /' | \
5361                          $sort | $sed -e 's/^.* //'`
5362                 eval set \$$#
5363         done
5364         $test -r $1 || set /usr/ccs/lib/libc.$so
5365         $test -r $1 || set /lib/libsys_s$_a
5366         ;;
5367 *)
5368         set blurfl
5369         ;;
5370 esac
5371 if $test -r "$1"; then
5372         echo "Your (shared) C library seems to be in $1."
5373         libc="$1"
5374 elif $test -r /lib/libc && $test -r /lib/clib; then
5375         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5376         xxx=apollo
5377         libc='/lib/clib /lib/libc'
5378         if $test -r /lib/syslib; then
5379                 echo "(Your math library is in /lib/syslib.)"
5380                 libc="$libc /lib/syslib"
5381         fi
5382 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5383         echo "Your C library seems to be in $libc, as you said before."
5384 elif $test -r $incpath/usr/lib/libc$_a; then
5385         libc=$incpath/usr/lib/libc$_a;
5386         echo "Your C library seems to be in $libc.  That's fine."
5387 elif $test -r /lib/libc$_a; then
5388         libc=/lib/libc$_a;
5389         echo "Your C library seems to be in $libc.  You're normal."
5390 else
5391         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5392                 :
5393         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5394                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5395         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5396                 :
5397         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5398                 :
5399         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5400                 :
5401         else
5402                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5403         fi
5404         if $test -r "$tans"; then
5405                 echo "Your C library seems to be in $tans, of all places."
5406                 libc=$tans
5407         else
5408                 libc='blurfl'
5409         fi
5410 fi
5411 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5412         dflt="$libc"
5413         cat <<EOM
5414
5415 If the guess above is wrong (which it might be if you're using a strange
5416 compiler, or your machine supports multiple models), you can override it here.
5417
5418 EOM
5419 else
5420         dflt=''
5421         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5422         cat >&4 <<EOM
5423 I can't seem to find your C library.  I've looked in the following places:
5424
5425 EOM
5426         $sed 's/^/      /' libpath
5427         cat <<EOM
5428
5429 None of these seems to contain your C library. I need to get its name...
5430
5431 EOM
5432 fi
5433 fn=f
5434 rp='Where is your C library?'
5435 . ./getfile
5436 libc="$ans"
5437
5438 echo " "
5439 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5440 set X `cat libnames`
5441 shift
5442 xxx=files
5443 case $# in 1) xxx=file; esac
5444 echo "Extracting names from the following $xxx for later perusal:" >&4
5445 echo " "
5446 $sed 's/^/      /' libnames >&4
5447 echo " "
5448 $echo $n "This may take a while...$c" >&4
5449
5450 for file in $*; do
5451         case $file in
5452         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5453         *) $nm $nm_opt $file 2>/dev/null;;
5454         esac
5455 done >libc.tmp
5456
5457 $echo $n ".$c"
5458 $grep fprintf libc.tmp > libc.ptf
5459 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5460 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5461 xxx='[ADTSIW]'
5462 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5463         eval $xscan;\
5464         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5465                 eval $xrun
5466 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5467         eval $xscan;\
5468         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5469                 eval $xrun
5470 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5471         eval $xscan;\
5472         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5473                 eval $xrun
5474 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5475         eval $xscan;\
5476         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5477                 eval $xrun
5478 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5479         eval $xscan;\
5480         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5481                 eval $xrun
5482 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5483         eval $xscan;\
5484         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5485                 eval $xrun
5486 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5487                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5488         eval $xscan;\
5489         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5490                 eval $xrun
5491 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5492         eval $xscan;\
5493         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5494                 eval $xrun
5495 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5496         eval $xscan;\
5497         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5498                 eval $xrun
5499 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5500         eval $xscan;\
5501         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5502                 eval $xrun
5503 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5504         eval $xscan;\
5505         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5506                 eval $xrun
5507 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5508         eval $xscan;\
5509         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5510                 eval $xrun
5511 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5512         eval $xscan;\
5513         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5514                 eval $xrun
5515 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5516         eval $xscan;\
5517         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5518                 eval $xrun
5519 else
5520         $nm -p $* 2>/dev/null >libc.tmp
5521         $grep fprintf libc.tmp > libc.ptf
5522         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5523                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5524         then
5525                 nm_opt='-p'
5526                 eval $xrun
5527         else
5528                 echo " "
5529                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5530                 com=''
5531                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5532                         for thisname in $libnames $libc; do
5533                                 $ar t $thisname >>libc.tmp
5534                         done
5535                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5536                         echo "Ok." >&4
5537                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5538                         # Repeat libc to extract forwarders to DLL entries too
5539                         for thisname in $libnames $libc; do
5540                                 $ar tv $thisname >>libc.tmp
5541                                 # Revision 50 of EMX has bug in $ar.
5542                                 # it will not extract forwarders to DLL entries
5543                                 # Use emximp which will extract exactly them.
5544                                 emximp -o tmp.imp $thisname \
5545                                     2>/dev/null && \
5546                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5547                                     < tmp.imp >>libc.tmp
5548                                 $rm tmp.imp
5549                         done
5550                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5551                         echo "Ok." >&4
5552                 else
5553                         echo "$ar didn't seem to work right." >&4
5554                         echo "Maybe this is a Cray...trying bld instead..." >&4
5555                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5556                         then
5557                                 for thisname in $libnames; do
5558                                         bld t $libnames | \
5559                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5560                                         $ar t $thisname >>libc.tmp
5561                                 done
5562                                 echo "Ok." >&4
5563                         else
5564                                 echo "That didn't work either.  Giving up." >&4
5565                                 exit 1
5566                         fi
5567                 fi
5568         fi
5569 fi
5570 nm_extract="$com"
5571 if $test -f /lib/syscalls.exp; then
5572         echo " "
5573         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5574         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5575 fi
5576 ;;
5577 esac
5578 $rm -f libnames libpath
5579
5580 : is a C symbol defined?
5581 csym='tlook=$1;
5582 case "$3" in
5583 -v) tf=libc.tmp; tc=""; tdc="";;
5584 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5585 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5586 esac;
5587 tx=yes;
5588 case "$reuseval-$4" in
5589 true-) ;;
5590 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5591 esac;
5592 case "$tx" in
5593 yes)
5594         case "$runnm" in
5595         true)
5596                 if $contains $tlook $tf >/dev/null 2>&1;
5597                 then tval=true;
5598                 else tval=false;
5599                 fi;;
5600         *)
5601                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5602                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5603                 then tval=true;
5604                 else tval=false;
5605                 fi;
5606                 $rm -f t t.c;;
5607         esac;;
5608 *)
5609         case "$tval" in
5610         $define) tval=true;;
5611         *) tval=false;;
5612         esac;;
5613 esac;
5614 eval "$2=$tval"'
5615
5616 : define an is-in-libc? function
5617 inlibc='echo " "; td=$define; tu=$undef;
5618 sym=$1; var=$2; eval "was=\$$2";
5619 tx=yes;
5620 case "$reuseval$was" in
5621 true) ;;
5622 true*) tx=no;;
5623 esac;
5624 case "$tx" in
5625 yes)
5626         set $sym tres -f;
5627         eval $csym;
5628         case "$tres" in
5629         true)
5630                 echo "$sym() found." >&4;
5631                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5632         *)
5633                 echo "$sym() NOT found." >&4;
5634                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5635         esac;;
5636 *)
5637         case "$was" in
5638         $define) echo "$sym() found." >&4;;
5639         *) echo "$sym() NOT found." >&4;;
5640         esac;;
5641 esac'
5642
5643 : see if sqrtl exists
5644 set sqrtl d_sqrtl
5645 eval $inlibc
5646
5647 case "$ccflags" in
5648 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5649 esac
5650
5651 case "$uselongdouble" in
5652 $define|true|[yY]*)     dflt='y';;
5653 *) dflt='n';;
5654 esac
5655 cat <<EOM
5656
5657 Perl can be built to take advantage of long doubles which
5658 (if available) may give more accuracy and range for floating point numbers.
5659
5660 If this doesn't make any sense to you, just accept the default '$dflt'.
5661 EOM
5662 rp='Try to use long doubles if available?'
5663 . ./myread
5664 case "$ans" in
5665 y|Y)    val="$define"   ;;
5666 *)      val="$undef"    ;;
5667 esac
5668 set uselongdouble
5669 eval $setvar
5670
5671 case "$uselongdouble" in
5672 true|[yY]*) uselongdouble="$define" ;;
5673 esac
5674
5675 case "$uselongdouble" in
5676 $define)
5677 : Look for a hint-file generated 'call-back-unit'.  If the
5678 : user has specified that long doubles should be used,
5679 : we may need to set or change some other defaults.
5680         if $test -f uselongdouble.cbu; then
5681                 echo "Your platform has some specific hints for long doubles, using them..."
5682                 . ./uselongdouble.cbu
5683         else
5684                 $cat <<EOM
5685 (Your platform doesn't have any specific hints for long doubles.)
5686 EOM
5687         fi
5688         ;;
5689 esac
5690
5691 case "$uselongdouble:$d_sqrtl" in
5692 $define:$undef)
5693                 $cat <<EOM >&4
5694
5695 *** You requested the use of long doubles but you do not seem to have
5696 *** the mathematic functions for long doubles.  I'm disabling the use
5697 *** of long doubles.
5698
5699 EOM
5700         uselongdouble=$undef
5701         ;;
5702 esac
5703
5704 : check for length of double
5705 echo " "
5706 case "$doublesize" in
5707 '')
5708         echo "Checking to see how big your double precision numbers are..." >&4
5709         $cat >try.c <<'EOCP'
5710 #include <stdio.h>
5711 int main()
5712 {
5713     printf("%d\n", (int)sizeof(double));
5714     exit(0);
5715 }
5716 EOCP
5717         set try
5718         if eval $compile_ok; then
5719                 doublesize=`$run ./try`
5720                 echo "Your double is $doublesize bytes long."
5721         else
5722                 dflt='8'
5723                 echo "(I can't seem to compile the test program.  Guessing...)"
5724                 rp="What is the size of a double precision number (in bytes)?"
5725                 . ./myread
5726                 doublesize="$ans"
5727         fi
5728         ;;
5729 esac
5730 $rm -f try.c try
5731
5732 : check for long doubles
5733 echo " "
5734 echo "Checking to see if you have long double..." >&4
5735 echo 'int main() { long double x = 7.0; }' > try.c
5736 set try
5737 if eval $compile; then
5738         val="$define"
5739         echo "You have long double."
5740 else
5741         val="$undef"
5742         echo "You do not have long double."
5743 fi
5744 $rm try.*
5745 set d_longdbl
5746 eval $setvar
5747
5748 : check for length of long double
5749 case "${d_longdbl}${longdblsize}" in
5750 $define)
5751         echo " "
5752         echo "Checking to see how big your long doubles are..." >&4
5753         $cat >try.c <<'EOCP'
5754 #include <stdio.h>
5755 int main()
5756 {
5757         printf("%d\n", sizeof(long double));
5758 }
5759 EOCP
5760         set try
5761         set try
5762         if eval $compile; then
5763                 longdblsize=`$run ./try`
5764                 echo "Your long doubles are $longdblsize bytes long."
5765         else
5766                 dflt='8'
5767                 echo " "
5768                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5769                 rp="What is the size of a long double (in bytes)?"
5770                 . ./myread
5771                 longdblsize="$ans"
5772         fi
5773         if $test "X$doublesize" = "X$longdblsize"; then
5774                 echo "(That isn't any different from an ordinary double.)"
5775         fi      
5776         ;;
5777 esac
5778 $rm -f try.* try
5779
5780 case "$useperlio" in
5781 $define|true|[yY]*|'')  dflt='y';;
5782 *) dflt='n';;
5783 esac
5784 cat <<EOM
5785
5786 Previous version of $package used the standard IO mechanisms as
5787 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5788 alternate IO mechanisms via the PerlIO abstraction layer, but the
5789 stdio mechanism is still available if needed.  The abstraction layer
5790 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5791 Using PerlIO with sfio may cause problems with some extension modules.
5792
5793 If this doesn't make any sense to you, just accept the default '$dflt'.
5794 EOM
5795 rp='Use the PerlIO abstraction layer?'
5796 . ./myread
5797 case "$ans" in
5798 y|Y) 
5799         val="$define"
5800         ;;
5801 *)      
5802         echo "Ok, doing things the stdio way."
5803         val="$undef"
5804         ;;
5805 esac
5806 set useperlio
5807 eval $setvar 
5808
5809 case "$usesocks" in
5810 $define|true|[yY]*)
5811         case "$useperlio" in
5812         $define|true|[yY]*) ;;
5813         *)      cat >&4 <<EOM
5814
5815 You are using the SOCKS proxy protocol library which means that you
5816 should also use the PerlIO layer.  You may be headed for trouble.
5817
5818 EOM
5819                 ;;
5820         esac
5821         ;;
5822 esac
5823
5824         
5825 : determine the architecture name
5826 echo " "
5827 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5828         tarch=`arch`"-$osname"
5829 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5830         if uname -m > tmparch 2>&1 ; then
5831                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5832                         -e 's/$/'"-$osname/" tmparch`
5833         else
5834                 tarch="$osname"
5835         fi
5836         $rm -f tmparch
5837 else
5838         tarch="$osname"
5839 fi
5840 case "$myarchname" in
5841 ''|"$tarch") ;;
5842 *)
5843         echo "(Your architecture name used to be $myarchname.)"
5844         archname=''
5845         ;;
5846 esac
5847 case "$targetarch" in
5848 '') ;;
5849 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5850 esac
5851 myarchname="$tarch"
5852 case "$archname" in
5853 '') dflt="$tarch";;
5854 *) dflt="$archname";;
5855 esac
5856 rp='What is your architecture name'
5857 . ./myread
5858 archname="$ans"
5859 case "$usethreads" in
5860 $define)
5861         echo "Threads selected." >&4
5862         case "$archname" in
5863         *-thread*) echo "...and architecture name already has -thread." >&4
5864                 ;;
5865         *)      archname="$archname-thread"
5866                 echo "...setting architecture name to $archname." >&4
5867                 ;;
5868         esac
5869         ;;
5870 esac
5871 case "$usemultiplicity" in
5872 $define)
5873         echo "Multiplicity selected." >&4
5874         case "$archname" in
5875         *-multi*) echo "...and architecture name already has -multi." >&4
5876                 ;;
5877         *)      archname="$archname-multi"
5878                 echo "...setting architecture name to $archname." >&4
5879                 ;;
5880         esac
5881         ;;
5882 esac
5883 case "$use64bitint$use64bitall" in
5884 *"$define"*)
5885         case "$archname64" in
5886         '')
5887                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5888                 ;;
5889         *)
5890                 case "$use64bitint" in
5891                 "$define") echo "64 bit integers selected." >&4 ;;
5892                 esac
5893                 case "$use64bitall" in
5894                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5895                 esac
5896                 case "$archname" in
5897                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5898                         ;;
5899                 *)      archname="$archname-$archname64"
5900                         echo "...setting architecture name to $archname." >&4
5901                         ;;
5902                 esac
5903                 ;;
5904         esac
5905 esac
5906 case "$uselongdouble" in
5907 $define)
5908         echo "Long doubles selected." >&4
5909         case "$longdblsize" in
5910         $doublesize)
5911                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5912                 ;;
5913         *)
5914                 case "$archname" in
5915                 *-ld*) echo "...and architecture name already has -ld." >&4
5916                         ;;
5917                 *)      archname="$archname-ld"
5918                         echo "...setting architecture name to $archname." >&4
5919                         ;;
5920                 esac
5921                 ;;
5922         esac
5923         ;;
5924 esac
5925 case "$useperlio" in
5926 $define)
5927         echo "Perlio selected." >&4
5928         ;;
5929 *)
5930         echo "Perlio not selected, using stdio." >&4
5931         case "$archname" in
5932         *-stdio*) echo "...and architecture name already has -stdio." >&4
5933                 ;;
5934         *)      archname="$archname-stdio"
5935                 echo "...setting architecture name to $archname." >&4
5936                 ;;
5937         esac
5938         ;;
5939 esac
5940
5941 : determine root of directory hierarchy where package will be installed.
5942 case "$prefix" in
5943 '')
5944         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5945         ;;
5946 *)
5947         dflt="$prefix"
5948         ;;
5949 esac
5950 $cat <<EOM
5951
5952 By default, $package will be installed in $dflt/bin, manual pages
5953 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5954 installation directories. Typically this is something like /usr/local.
5955 If you wish to have binaries under /usr/bin but other parts of the
5956 installation under /usr/local, that's ok: you will be prompted
5957 separately for each of the installation directories, the prefix being
5958 only used to set the defaults.
5959
5960 EOM
5961 fn=d~
5962 rp='Installation prefix to use?'
5963 . ./getfile
5964 oldprefix=''
5965 case "$prefix" in
5966 '') ;;
5967 *)
5968         case "$ans" in
5969         "$prefix") ;;
5970         *) oldprefix="$prefix";;
5971         esac
5972         ;;
5973 esac
5974 prefix="$ans"
5975 prefixexp="$ansexp"
5976
5977 case "$afsroot" in
5978 '')     afsroot=/afs ;;
5979 *)      afsroot=$afsroot ;;
5980 esac
5981
5982 : is AFS running?
5983 echo " "
5984 case "$afs" in
5985 $define|true)   afs=true ;;
5986 $undef|false)   afs=false ;;
5987 *)      if test -d $afsroot; then
5988                 afs=true
5989         else
5990                 afs=false
5991         fi
5992         ;;
5993 esac
5994 if $afs; then
5995         echo "AFS may be running... I'll be extra cautious then..." >&4
5996 else
5997         echo "AFS does not seem to be running..." >&4
5998 fi
5999
6000 : determine installation prefix for where package is to be installed.
6001 if $afs; then 
6002 $cat <<EOM
6003
6004 Since you are running AFS, I need to distinguish the directory in which
6005 files will reside from the directory in which they are installed (and from
6006 which they are presumably copied to the former directory by occult means).
6007
6008 EOM
6009         case "$installprefix" in
6010         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6011         *) dflt="$installprefix";;
6012         esac
6013 else
6014 $cat <<EOM
6015
6016 In some special cases, particularly when building $package for distribution,
6017 it is convenient to distinguish between the directory in which files should 
6018 be installed from the directory ($prefix) in which they 
6019 will eventually reside.  For most users, these two directories are the same.
6020
6021 EOM
6022         case "$installprefix" in
6023         '') dflt=$prefix ;;
6024         *) dflt=$installprefix;;
6025         esac
6026 fi
6027 fn=d~
6028 rp='What installation prefix should I use for installing files?'
6029 . ./getfile
6030 installprefix="$ans"
6031 installprefixexp="$ansexp"
6032
6033 : set the prefixit variable, to compute a suitable default value
6034 prefixit='case "$3" in
6035 ""|none)
6036         case "$oldprefix" in
6037         "") eval "$1=\"\$$2\"";;
6038         *)
6039                 case "$3" in
6040                 "") eval "$1=";;
6041                 none)
6042                         eval "tp=\"\$$2\"";
6043                         case "$tp" in
6044                         ""|" ") eval "$1=\"\$$2\"";;
6045                         *) eval "$1=";;
6046                         esac;;
6047                 esac;;
6048         esac;;
6049 *)
6050         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6051         case "$tp" in
6052         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6053         /*-$oldprefix/*|\~*-$oldprefix/*)
6054                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6055         *) eval "$1=\"\$$2\"";;
6056         esac;;
6057 esac'
6058
6059 : get the patchlevel
6060 echo " "
6061 echo "Getting the current patchlevel..." >&4
6062 if $test -r $rsrc/patchlevel.h;then
6063         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6064         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6065         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6066         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6067         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6068         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6069        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6070 else
6071         revision=0
6072         patchlevel=0
6073         subversion=0
6074         api_revision=0
6075         api_version=0
6076         api_subversion=0
6077         perl_patchlevel=0
6078         $echo "(You do not have patchlevel.h.  Eek.)"
6079 fi
6080 if $test -r $rsrc/.patch ; then  
6081         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6082                 perl_patchlevel=`cat $rsrc/.patch`
6083         fi
6084 fi
6085 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6086 version_patchlevel_string="version $patchlevel subversion $subversion"
6087 case "$perl_patchlevel" in
6088 0|'') ;;
6089 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6090 esac
6091
6092 $echo "(You have $package $version_patchlevel_string.)"
6093
6094 case "$osname" in
6095 dos|vms)
6096         : XXX Should be a Configure test for double-dots in filenames.
6097         version=`echo $revision $patchlevel $subversion | \
6098                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6099         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6100                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6101         ;;
6102 *)
6103         version=`echo $revision $patchlevel $subversion | \
6104                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6105         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6106                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6107         ;;
6108 esac
6109 : Special case the 5.005_xx maintenance series, which used 5.005
6110 : without any subversion label as a subdirectory in $sitelib
6111 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6112         api_versionstring='5.005'
6113 fi
6114
6115 : determine installation style
6116 : For now, try to deduce it from prefix unless it is already set.
6117 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6118 case "$installstyle" in
6119 '')     case "$prefix" in
6120                 *perl*) dflt='lib';;
6121                 *) dflt='lib/perl5' ;;
6122         esac
6123         ;;
6124 *)      dflt="$installstyle" ;;
6125 esac
6126 : Probably not worth prompting for this since we prompt for all
6127 : the directories individually, and the prompt would be too long and
6128 : confusing anyway.
6129 installstyle=$dflt
6130
6131 : determine where private library files go
6132 : Usual default is /usr/local/lib/perl5/$version.
6133 : Also allow things like /opt/perl/lib/$version, since 
6134 : /opt/perl/lib/perl5... would be redundant.
6135 : The default "style" setting is made in installstyle.U
6136 case "$installstyle" in
6137 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6138 *)       set dflt privlib lib/$version ;;
6139 esac
6140 eval $prefixit
6141 $cat <<EOM
6142
6143 There are some auxiliary files for $package that need to be put into a
6144 private library directory that is accessible by everyone.
6145
6146 EOM
6147 fn=d~+
6148 rp='Pathname where the private library files will reside?'
6149 . ./getfile
6150 privlib="$ans"
6151 privlibexp="$ansexp"
6152 : Change installation prefix, if necessary.
6153 if $test X"$prefix" != X"$installprefix"; then
6154         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6155 else
6156         installprivlib="$privlibexp"
6157 fi
6158
6159 : set the prefixup variable, to restore leading tilda escape
6160 prefixup='case "$prefixexp" in
6161 "$prefix") ;;
6162 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6163 esac'
6164
6165 : determine where public architecture dependent libraries go
6166 set archlib archlib
6167 eval $prefixit
6168 : privlib default is /usr/local/lib/$package/$version
6169 : archlib default is /usr/local/lib/$package/$version/$archname
6170 : privlib may have an optional trailing /share.
6171 tdflt=`echo $privlib | $sed 's,/share$,,'`
6172 tdflt=$tdflt/$archname
6173 case "$archlib" in
6174 '')     dflt=$tdflt
6175         ;;
6176 *)      dflt="$archlib"
6177     ;;
6178 esac
6179 $cat <<EOM
6180
6181 $spackage contains architecture-dependent library files.  If you are
6182 sharing libraries in a heterogeneous environment, you might store
6183 these files in a separate location.  Otherwise, you can just include
6184 them with the rest of the public library files.
6185
6186 EOM
6187 fn=d+~
6188 rp='Where do you want to put the public architecture-dependent libraries?'
6189 . ./getfile
6190 archlib="$ans"
6191 archlibexp="$ansexp"
6192 if $test X"$archlib" = X"$privlib"; then
6193         d_archlib="$undef"
6194 else
6195         d_archlib="$define"
6196 fi
6197 : Change installation prefix, if necessary.
6198 if $test X"$prefix" != X"$installprefix"; then
6199         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6200 else
6201         installarchlib="$archlibexp"
6202 fi
6203
6204
6205 : Binary compatibility with 5.005 is not possible for builds
6206 : with advanced features
6207 case "$usethreads$usemultiplicity" in
6208 *define*)
6209         bincompat5005="$undef"
6210         d_bincompat5005="$undef"
6211         ;;
6212 *)      $cat <<EOM
6213
6214 This version of Perl can be compiled for binary compatibility with 5.005.
6215 If you decide to do so, you will be able to continue using most of the
6216 extensions that were compiled for Perl 5.005.
6217
6218 EOM
6219         case "$bincompat5005$d_bincompat5005" in
6220         *"$undef"*) dflt=n ;;
6221         *) dflt=y ;;
6222         esac
6223         rp='Binary compatibility with Perl 5.005?'
6224         . ./myread
6225         case "$ans" in
6226         y*) val="$define" ;;
6227         *)  val="$undef" ;;
6228         esac
6229         set d_bincompat5005
6230         eval $setvar
6231         case "$d_bincompat5005" in
6232         "$define")
6233                 bincompat5005="$define"
6234                 ;;
6235         *)      bincompat5005="$undef"
6236                 d_bincompat5005="$undef"
6237                 ;;
6238         esac
6239         ;;
6240 esac
6241
6242
6243 : see if setuid scripts can be secure
6244 $cat <<EOM
6245
6246 Some kernels have a bug that prevents setuid #! scripts from being
6247 secure.  Some sites have disabled setuid #! scripts because of this.
6248
6249 First let's decide if your kernel supports secure setuid #! scripts.
6250 (If setuid #! scripts would be secure but have been disabled anyway,
6251 don't say that they are secure if asked.)
6252
6253 EOM
6254
6255 val="$undef"
6256 if $test -d /dev/fd; then
6257         echo "#!$ls" >reflect
6258         chmod +x,u+s reflect
6259         ./reflect >flect 2>&1
6260         if $contains "/dev/fd" flect >/dev/null; then
6261                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6262                 val="$define"
6263         else
6264                 $cat <<EOM
6265 If you are not sure if they are secure, I can check but I'll need a
6266 username and password different from the one you are using right now.
6267 If you don't have such a username or don't want me to test, simply
6268 enter 'none'.
6269
6270 EOM
6271                 rp='Other username to test security of setuid scripts with?'
6272                 dflt='none'
6273                 . ./myread
6274                 case "$ans" in
6275                 n|none)
6276                         case "$d_suidsafe" in
6277                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6278                                 dflt=n;;
6279                         "$undef")
6280                                 echo "Well, the $hint value is *not* secure." >&4
6281                                 dflt=n;;
6282                         *)      echo "Well, the $hint value *is* secure." >&4
6283                                 dflt=y;;
6284                         esac
6285                         ;;
6286                 *)
6287                         $rm -f reflect flect
6288                         echo "#!$ls" >reflect
6289                         chmod +x,u+s reflect
6290                         echo >flect
6291                         chmod a+w flect
6292                         echo '"su" will (probably) prompt you for '"$ans's password."
6293                         su $ans -c './reflect >flect'
6294                         if $contains "/dev/fd" flect >/dev/null; then
6295                                 echo "Okay, it looks like setuid scripts are secure." >&4
6296                                 dflt=y
6297                         else
6298                                 echo "I don't think setuid scripts are secure." >&4
6299                                 dflt=n
6300                         fi
6301                         ;;
6302                 esac
6303                 rp='Does your kernel have *secure* setuid scripts?'
6304                 . ./myread
6305                 case "$ans" in
6306                 [yY]*)  val="$define";;
6307                 *)      val="$undef";;
6308                 esac
6309         fi
6310 else
6311         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6312         echo "(That's for file descriptors, not floppy disks.)"
6313         val="$undef"
6314 fi
6315 set d_suidsafe
6316 eval $setvar
6317
6318 $rm -f reflect flect
6319
6320 : now see if they want to do setuid emulation
6321 echo " "
6322 val="$undef"
6323 case "$d_suidsafe" in
6324 "$define")
6325         val="$undef"
6326         echo "No need to emulate SUID scripts since they are secure here." >& 4
6327         ;;
6328 *)
6329         $cat <<EOM
6330 Some systems have disabled setuid scripts, especially systems where
6331 setuid scripts cannot be secure.  On systems where setuid scripts have
6332 been disabled, the setuid/setgid bits on scripts are currently
6333 useless.  It is possible for $package to detect those bits and emulate
6334 setuid/setgid in a secure fashion.  This emulation will only work if
6335 setuid scripts have been disabled in your kernel.
6336
6337 EOM
6338         case "$d_dosuid" in
6339         "$define") dflt=y ;;
6340         *) dflt=n ;;
6341         esac
6342         rp="Do you want to do setuid/setgid emulation?"
6343         . ./myread
6344         case "$ans" in
6345         [yY]*)  val="$define";;
6346         *)      val="$undef";;
6347         esac
6348         ;;
6349 esac
6350 set d_dosuid
6351 eval $setvar
6352
6353 : see if this is a malloc.h system
6354 set malloc.h i_malloc
6355 eval $inhdr
6356
6357 : see if stdlib is available
6358 set stdlib.h i_stdlib
6359 eval $inhdr
6360
6361 : determine which malloc to compile in
6362 echo " "
6363 case "$usemymalloc" in
6364 [yY]*|true|$define)     dflt='y' ;;
6365 [nN]*|false|$undef)     dflt='n' ;;
6366 *)      case "$ptrsize" in
6367         4) dflt='y' ;;
6368         *) dflt='n' ;;
6369         esac
6370         ;;
6371 esac
6372 rp="Do you wish to attempt to use the malloc that comes with $package?"
6373 . ./myread
6374 usemymalloc="$ans"
6375 case "$ans" in
6376 y*|true)
6377         usemymalloc='y'
6378         mallocsrc='malloc.c'
6379         mallocobj="malloc$_o"
6380         d_mymalloc="$define"
6381         case "$libs" in
6382         *-lmalloc*)
6383                 : Remove malloc from list of libraries to use
6384                 echo "Removing unneeded -lmalloc from library list" >&4
6385                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6386                 shift
6387                 libs="$*"
6388                 echo "libs = $libs" >&4
6389                 ;;
6390         esac
6391         ;;
6392 *)
6393         usemymalloc='n'
6394         mallocsrc=''
6395         mallocobj=''
6396         d_mymalloc="$undef"
6397         ;;
6398 esac
6399
6400 : compute the return types of malloc and free
6401 echo " "
6402 $cat >malloc.c <<END
6403 #$i_malloc I_MALLOC
6404 #$i_stdlib I_STDLIB
6405 #include <stdio.h>
6406 #include <sys/types.h>
6407 #ifdef I_MALLOC
6408 #include <malloc.h>
6409 #endif
6410 #ifdef I_STDLIB
6411 #include <stdlib.h>
6412 #endif
6413 #ifdef TRY_MALLOC
6414 void *malloc();
6415 #endif
6416 #ifdef TRY_FREE
6417 void free();
6418 #endif
6419 END
6420 case "$malloctype" in
6421 '')
6422         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6423                 malloctype='void *'
6424         else
6425                 malloctype='char *'
6426         fi
6427         ;;
6428 esac
6429 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6430
6431 case "$freetype" in
6432 '')
6433         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6434                 freetype='void'
6435         else
6436                 freetype='int'
6437         fi
6438         ;;
6439 esac
6440 echo "Your system uses $freetype free(), it would seem." >&4
6441 $rm -f malloc.[co]
6442 $cat <<EOM
6443
6444 After $package is installed, you may wish to install various
6445 add-on modules and utilities.  Typically, these add-ons will
6446 be installed under $prefix with the rest
6447 of this package.  However, you may wish to install such add-ons
6448 elsewhere under a different prefix.
6449
6450 If you do not wish to put everything under a single prefix, that's
6451 ok.  You will be prompted for the individual locations; this siteprefix
6452 is only used to suggest the defaults.
6453
6454 The default should be fine for most people.
6455
6456 EOM
6457 fn=d~+
6458 rp='Installation prefix to use for add-on modules and utilities?'
6459 : XXX Here might be another good place for an installstyle setting.
6460 case "$siteprefix" in
6461 '') dflt=$prefix ;;
6462 *)  dflt=$siteprefix ;;
6463 esac
6464 . ./getfile
6465 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6466 oldsiteprefix=''
6467 case "$siteprefix" in
6468 '') ;;
6469 *)      case "$ans" in
6470         "$prefix") ;;
6471         *) oldsiteprefix="$prefix";;
6472         esac
6473         ;;
6474 esac
6475 siteprefix="$ans"
6476 siteprefixexp="$ansexp"
6477
6478 : determine where site specific libraries go.
6479 : Usual default is /usr/local/lib/perl5/site_perl/$version
6480 : The default "style" setting is made in installstyle.U
6481 : XXX No longer works with Prefixit stuff.
6482 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6483 case "$sitelib" in
6484 '') case "$installstyle" in
6485         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6486         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6487         esac
6488         ;;
6489 *)      dflt="$sitelib"
6490         ;;
6491 esac
6492 $cat <<EOM
6493
6494 The installation process will create a directory for
6495 site-specific extensions and modules.  Most users find it convenient
6496 to place all site-specific files in this directory rather than in the
6497 main distribution directory.
6498
6499 EOM
6500 fn=d~+
6501 rp='Pathname for the site-specific library files?'
6502 . ./getfile
6503 sitelib="$ans"
6504 sitelibexp="$ansexp"
6505 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6506 : Change installation prefix, if necessary.
6507 if $test X"$prefix" != X"$installprefix"; then
6508         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6509 else
6510         installsitelib="$sitelibexp"
6511 fi
6512
6513 : determine where site specific architecture-dependent libraries go.
6514 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6515 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6516 : sitelib may have an optional trailing /share.
6517 case "$sitearch" in
6518 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6519         dflt="$dflt/$archname"
6520         ;;
6521 *)      dflt="$sitearch"
6522         ;;
6523 esac
6524 set sitearch sitearch none
6525 eval $prefixit
6526 $cat <<EOM
6527
6528 The installation process will also create a directory for
6529 architecture-dependent site-specific extensions and modules.
6530
6531 EOM
6532 fn=d~+
6533 rp='Pathname for the site-specific architecture-dependent library files?'
6534 . ./getfile
6535 sitearch="$ans"
6536 sitearchexp="$ansexp"
6537 : Change installation prefix, if necessary.
6538 if $test X"$prefix" != X"$installprefix"; then
6539         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6540 else
6541         installsitearch="$sitearchexp"
6542 fi
6543
6544 $cat <<EOM
6545
6546 The installation process will also create a directory for
6547 vendor-supplied add-ons.  Vendors who supply perl with their system
6548 may find it convenient to place all vendor-supplied files in this
6549 directory rather than in the main distribution directory.  This will
6550 ease upgrades between binary-compatible maintenance versions of perl.
6551
6552 Of course you may also use these directories in whatever way you see
6553 fit.  For example, you might use them to access modules shared over a
6554 company-wide network.
6555
6556 The default answer should be fine for most people.
6557 This causes further questions about vendor add-ons to be skipped
6558 and no vendor-specific directories will be configured for perl.
6559
6560 EOM
6561 rp='Do you want to configure vendor-specific add-on directories?'
6562 case "$usevendorprefix" in
6563 define|true|[yY]*) dflt=y ;;
6564 *)      : User may have set vendorprefix directly on Configure command line.
6565         case "$vendorprefix" in
6566         ''|' ') dflt=n ;;
6567         *)      dflt=y ;;
6568         esac
6569         ;;
6570 esac
6571 . ./myread
6572 case "$ans" in
6573 [yY]*)  fn=d~+
6574         rp='Installation prefix to use for vendor-supplied add-ons?'
6575         case "$vendorprefix" in
6576         '') dflt='' ;;
6577         *)  dflt=$vendorprefix ;;
6578         esac
6579         . ./getfile
6580         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6581         oldvendorprefix=''
6582         case "$vendorprefix" in
6583         '') ;;
6584         *)      case "$ans" in
6585                 "$prefix") ;;
6586                 *) oldvendorprefix="$prefix";;
6587                 esac
6588                 ;;
6589         esac
6590         usevendorprefix="$define"
6591         vendorprefix="$ans"
6592         vendorprefixexp="$ansexp"
6593         ;;
6594 *)      usevendorprefix="$undef"
6595         vendorprefix=''
6596         vendorprefixexp=''
6597         ;;
6598 esac
6599
6600 case "$vendorprefix" in
6601 '')     d_vendorlib="$undef"
6602         vendorlib=''
6603         vendorlibexp=''
6604         ;;
6605 *)      d_vendorlib="$define"
6606         : determine where vendor-supplied modules go.
6607         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6608         case "$vendorlib" in
6609         '')
6610                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6611                 case "$installstyle" in
6612                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6613                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6614                 esac
6615                 ;;
6616         *)      dflt="$vendorlib"
6617                 ;;
6618         esac
6619         fn=d~+
6620         rp='Pathname for the vendor-supplied library files?'
6621         . ./getfile
6622         vendorlib="$ans"
6623         vendorlibexp="$ansexp"
6624         ;;
6625 esac
6626 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6627 : Change installation prefix, if necessary.
6628 if $test X"$prefix" != X"$installprefix"; then
6629         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6630 else
6631         installvendorlib="$vendorlibexp"
6632 fi
6633
6634 case "$vendorprefix" in
6635 '')     d_vendorarch="$undef"
6636         vendorarch=''
6637         vendorarchexp=''
6638         ;;
6639 *)      d_vendorarch="$define"
6640         : determine where vendor-supplied architecture-dependent libraries go.
6641         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6642         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6643         : vendorlib may have an optional trailing /share.
6644         case "$vendorarch" in
6645         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6646                 dflt="$dflt/$archname"
6647                 ;;
6648         *)      dflt="$vendorarch" ;;
6649         esac
6650         fn=d~+
6651         rp='Pathname for vendor-supplied architecture-dependent files?'
6652         . ./getfile
6653         vendorarch="$ans"
6654         vendorarchexp="$ansexp"
6655         ;;
6656 esac
6657 : Change installation prefix, if necessary.
6658 if $test X"$prefix" != X"$installprefix"; then
6659         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6660 else
6661         installvendorarch="$vendorarchexp"
6662 fi
6663
6664 : Final catch-all directories to search
6665 $cat <<EOM
6666
6667 Lastly, you can have perl look in other directories for extensions and
6668 modules in addition to those already specified.
6669 These directories will be searched after 
6670         $sitearch 
6671         $sitelib 
6672 EOM
6673 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6674 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6675 echo ' '
6676 case "$otherlibdirs" in
6677 ''|' ') dflt='none' ;;
6678 *)      dflt="$otherlibdirs" ;;
6679 esac
6680 $cat <<EOM
6681 Enter a colon-separated set of extra paths to include in perl's @INC
6682 search path, or enter 'none' for no extra paths.
6683
6684 EOM
6685
6686 rp='Colon-separated list of additional directories for perl to search?'
6687 . ./myread
6688 case "$ans" in
6689 ' '|''|none)    otherlibdirs=' ' ;;     
6690 *)      otherlibdirs="$ans" ;;
6691 esac
6692 case "$otherlibdirs" in
6693 ' ') val=$undef ;;
6694 *)      val=$define ;;
6695 esac
6696 set d_perl_otherlibdirs
6697 eval $setvar
6698
6699 : Cruising for prototypes
6700 echo " "
6701 echo "Checking out function prototypes..." >&4
6702 $cat >prototype.c <<'EOCP'
6703 int main(int argc, char *argv[]) {
6704         exit(0);}
6705 EOCP
6706 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6707         echo "Your C compiler appears to support function prototypes."
6708         val="$define"
6709 else
6710         echo "Your C compiler doesn't seem to understand function prototypes."
6711         val="$undef"
6712 fi
6713 set prototype
6714 eval $setvar
6715 $rm -f prototype*
6716
6717 case "$prototype" in
6718 "$define") ;;
6719 *)      ansi2knr='ansi2knr'
6720         echo " "
6721         cat <<EOM >&4
6722
6723 $me:  FATAL ERROR:
6724 This version of $package can only be compiled by a compiler that 
6725 understands function prototypes.  Unfortunately, your C compiler 
6726         $cc $ccflags
6727 doesn't seem to understand them.  Sorry about that.
6728
6729 If GNU cc is available for your system, perhaps you could try that instead.  
6730
6731 Eventually, we hope to support building Perl with pre-ANSI compilers.
6732 If you would like to help in that effort, please contact <perlbug@perl.org>.
6733
6734 Aborting Configure now.
6735 EOM
6736         exit 2
6737         ;;
6738 esac
6739
6740 : determine where public executables go
6741 echo " "
6742 set dflt bin bin
6743 eval $prefixit
6744 fn=d~
6745 rp='Pathname where the public executables will reside?'
6746 . ./getfile
6747 if $test "X$ansexp" != "X$binexp"; then
6748         installbin=''
6749 fi
6750 bin="$ans"
6751 binexp="$ansexp"
6752 : Change installation prefix, if necessary.
6753 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6754 if $test X"$prefix" != X"$installprefix"; then
6755         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6756 else
6757         installbin="$binexp"
6758 fi
6759
6760 echo " "
6761 case "$extras" in
6762 '') dflt='n';;
6763 *) dflt='y';;
6764 esac
6765 cat <<EOM
6766 Perl can be built with extra modules or bundles of modules which
6767 will be fetched from the CPAN and installed alongside Perl.
6768
6769 Notice that you will need access to the CPAN; either via the Internet,
6770 or a local copy, for example a CD-ROM or a local CPAN mirror.  (You will
6771 be asked later to configure the CPAN.pm module which will in turn do
6772 the installation of the rest of the extra modules or bundles.)
6773
6774 Notice also that if the modules require any external software such as
6775 libraries and headers (the libz library and the zlib.h header for the
6776 Compress::Zlib module, for example) you MUST have any such software
6777 already installed, this configuration process will NOT install such
6778 things for you.
6779
6780 If this doesn't make any sense to you, just accept the default '$dflt'.
6781 EOM
6782 rp='Install any extra modules (y or n)?'
6783 . ./myread
6784 case "$ans" in
6785 y|Y)
6786         cat <<EOM
6787
6788 Please list any extra modules or bundles to be installed from CPAN,
6789 with spaces between the names.  The names can be in any format the
6790 'install' command of CPAN.pm will understand.  (Answer 'none',
6791 without the quotes, to install no extra modules or bundles.)
6792 EOM
6793         rp='Extras?'
6794         dflt="$extras"
6795         . ./myread
6796         extras="$ans"
6797 esac
6798 case "$extras" in
6799 ''|'none')
6800         val=''
6801         $rm -f ../extras.lst
6802         ;;
6803 *)      echo "(Saving the list of extras for later...)"
6804         echo "$extras" > ../extras.lst
6805         val="'$extras'"
6806         ;;
6807 esac
6808 set extras
6809 eval $setvar
6810 echo " "
6811
6812 : Find perl5.005 or later.
6813 echo "Looking for a previously installed perl5.005 or later... "
6814 case "$perl5" in
6815 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6816                 : Check if this perl is recent and can load a simple module
6817                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6818                         perl5=$tdir/perl
6819                         break;
6820                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6821                         perl5=$tdir/perl5
6822                         break;
6823                 fi
6824         done
6825         ;;
6826 *)      perl5="$perl5"
6827         ;;
6828 esac
6829 case "$perl5" in
6830 '')     echo "None found.  That's ok.";;
6831 *)      echo "Using $perl5." ;;
6832 esac
6833
6834 : Determine list of previous versions to include in @INC
6835 $cat > getverlist <<EOPL
6836 #!$perl5 -w
6837 use File::Basename;
6838 \$api_versionstring = "$api_versionstring";
6839 \$version = "$version";
6840 \$stem = "$sitelib_stem";
6841 \$archname = "$archname";
6842 EOPL
6843         $cat >> getverlist <<'EOPL'
6844 # Can't have leading @ because metaconfig interprets it as a command!
6845 ;@inc_version_list=();
6846 # XXX Redo to do opendir/readdir? 
6847 if (-d $stem) {
6848     chdir($stem);
6849     ;@candidates = glob("5.*");
6850 }
6851 else {
6852     ;@candidates = ();
6853 }
6854
6855 # XXX ToDo:  These comparisons must be reworked when two-digit
6856 # subversions come along, so that 5.7.10 compares as greater than
6857 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6858 # widespread that we can use the built-in version vectors rather
6859 # than reinventing them here.  For 5.6.0, however, we must
6860 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6861 foreach $d (@candidates) {
6862     if ($d lt $version) {
6863         if ($d ge $api_versionstring) {
6864             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6865         }
6866         elsif ($d ge "5.005") {
6867             unshift(@inc_version_list, grep { -d } $d);
6868         }
6869     }
6870     else {
6871         # Skip newer version.  I.e. don't look in
6872         # 5.7.0 if we're installing 5.6.1.
6873     }
6874 }
6875
6876 if (@inc_version_list) {
6877     print join(' ', @inc_version_list);
6878 }
6879 else {
6880     # Blank space to preserve value for next Configure run.
6881     print " ";
6882 }
6883 EOPL
6884 chmod +x getverlist
6885 case "$inc_version_list" in
6886 '')     if test -x "$perl5$exe_ext"; then
6887                 dflt=`$perl5 getverlist`
6888         else
6889                 dflt='none'
6890         fi
6891         ;;
6892 $undef) dflt='none' ;;
6893 *)  eval dflt=\"$inc_version_list\" ;;
6894 esac
6895 case "$dflt" in
6896 ''|' ') dflt=none ;;
6897 esac
6898 case "$dflt" in
6899 5.005) case "$bincompat5005" in
6900        $define|true|[yY]*) ;;
6901        *) dflt=none ;;
6902        esac
6903        ;;
6904 esac
6905 $cat <<'EOM'
6906
6907 In order to ease the process of upgrading, this version of perl 
6908 can be configured to use modules built and installed with earlier 
6909 versions of perl that were installed under $prefix.  Specify here
6910 the list of earlier versions that this version of perl should check.
6911 If Configure detected no earlier versions of perl installed under
6912 $prefix, then the list will be empty.  Answer 'none' to tell perl
6913 to not search earlier versions.
6914
6915 The default should almost always be sensible, so if you're not sure,
6916 just accept the default.
6917 EOM
6918
6919 rp='List of earlier versions to include in @INC?'
6920 . ./myread
6921 case "$ans" in
6922 [Nn]one|''|' ') inc_version_list=' ' ;;
6923 *) inc_version_list="$ans" ;;
6924 esac
6925 case "$inc_version_list" in
6926 ''|' ') 
6927         inc_version_list_init='0';;
6928 *)      inc_version_list_init=`echo $inc_version_list |
6929                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6930         ;;
6931 esac
6932 $rm -f getverlist
6933
6934 : determine whether to install perl also as /usr/bin/perl
6935
6936 echo " "
6937 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6938         $cat <<EOM
6939 Many scripts expect perl to be installed as /usr/bin/perl.
6940 I can install the perl you are about to compile also as /usr/bin/perl
6941 (in addition to $installbin/perl).
6942 EOM
6943         case "$installusrbinperl" in
6944         "$undef"|[nN]*) dflt='n';;
6945         *)              dflt='y';;
6946         esac
6947         rp="Do you want to install perl as /usr/bin/perl?"
6948         . ./myread
6949         case "$ans" in
6950         [yY]*)  val="$define";;
6951         *)      val="$undef" ;;
6952         esac
6953 else
6954         val="$undef"
6955 fi
6956 set installusrbinperl
6957 eval $setvar
6958
6959 : see if dld is available
6960 set dld.h i_dld
6961 eval $inhdr
6962
6963 : see if dlopen exists
6964 xxx_runnm="$runnm"
6965 runnm=false
6966 set dlopen d_dlopen
6967 eval $inlibc
6968 runnm="$xxx_runnm"
6969
6970 : determine which dynamic loading, if any, to compile in
6971 echo " "
6972 dldir="ext/DynaLoader"
6973 case "$usedl" in
6974 $define|y|true)
6975         dflt='y'
6976         usedl="$define"
6977         ;;
6978 $undef|n|false)
6979         dflt='n'
6980         usedl="$undef"
6981         ;;
6982 *) 
6983         dflt='n'
6984         case "$d_dlopen" in
6985             $define) dflt='y' ;;
6986         esac
6987         case "$i_dld" in
6988             $define) dflt='y' ;;
6989         esac
6990         : Does a dl_xxx.xs file exist for this operating system
6991         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6992         ;;
6993 esac
6994 rp="Do you wish to use dynamic loading?"
6995 . ./myread
6996 usedl="$ans"
6997 case "$ans" in
6998 y*) usedl="$define"
6999         case "$dlsrc" in
7000         '')
7001                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
7002                         dflt="$dldir/dl_${osname}.xs"
7003                 elif $test "$d_dlopen" = "$define" ; then
7004                         dflt="$dldir/dl_dlopen.xs"
7005                 elif $test "$i_dld" = "$define" ; then
7006                         dflt="$dldir/dl_dld.xs"
7007                 else
7008                         dflt=''
7009                 fi
7010                 ;;
7011         *)      dflt="$dldir/$dlsrc"
7012                 ;;
7013         esac
7014     echo "The following dynamic loading files are available:"
7015         : Can not go over to $dldir because getfile has path hard-coded in.
7016         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
7017         rp="Source file to use for dynamic loading"
7018         fn="fne"
7019         gfpth="$src"
7020         . ./getfile
7021         usedl="$define"
7022         : emulate basename
7023         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
7024
7025         $cat << EOM
7026
7027 Some systems may require passing special flags to $cc -c to
7028 compile modules that will be used to create a shared library.
7029 To use no flags, say "none".
7030
7031 EOM
7032     case "$cccdlflags" in
7033     '') case "$gccversion" in
7034                 '') case "$osname" in
7035                         hpux)   dflt='+z' ;;
7036                         next)   dflt='none' ;;
7037                         irix*)  dflt='-KPIC' ;;
7038                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
7039                         sunos)  dflt='-pic' ;;
7040                         *)      dflt='none' ;;
7041                     esac
7042                         ;;
7043                 *)  case "$osname" in
7044                         darwin) dflt='none' ;;
7045                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7046                         *)      dflt='-fpic' ;;
7047                     esac ;;
7048             esac ;;
7049         ' ') dflt='none' ;;
7050     *)  dflt="$cccdlflags" ;;
7051     esac
7052     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7053     . ./myread
7054     case "$ans" in
7055     none) cccdlflags=' ' ;;
7056     *) cccdlflags="$ans" ;;
7057     esac
7058
7059     cat << EOM
7060
7061 Some systems use ld to create libraries that can be dynamically loaded,
7062 while other systems (such as those using ELF) use $cc.
7063
7064 EOM
7065         case "$ld" in
7066         '')     $cat >try.c <<'EOM'
7067 /* Test for whether ELF binaries are produced */
7068 #include <fcntl.h>
7069 #include <stdlib.h>
7070 int main() {
7071         char b[4];
7072         int i = open("a.out",O_RDONLY);
7073         if(i == -1) 
7074                 exit(1); /* fail */
7075         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7076                 exit(0); /* succeed (yes, it's ELF) */
7077         else
7078                 exit(1); /* fail */
7079 }
7080 EOM
7081                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7082                         cat <<EOM
7083 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7084 EOM
7085                         dflt="$cc"
7086                 else
7087                         echo "I'll use ld to build dynamic libraries."
7088                         dflt='ld'
7089                 fi
7090                 rm -f try.c a.out
7091                 ;;
7092         *)      dflt="$ld"
7093                 ;;
7094         esac
7095
7096     rp="What command should be used to create dynamic libraries?"
7097     . ./myread
7098         ld="$ans"
7099
7100     cat << EOM
7101
7102 Some systems may require passing special flags to $ld to create a
7103 library that can be dynamically loaded.  If your ld flags include
7104 -L/other/path options to locate libraries outside your loader's normal
7105 search path, you may need to specify those -L options here as well.  To
7106 use no flags, say "none".
7107
7108 EOM
7109     case "$lddlflags" in
7110     '') case "$osname" in
7111                         beos) dflt='-nostart' ;;
7112                         hpux) dflt='-b';
7113                               case "$gccversion" in
7114                               '') dflt="$dflt +vnocompatwarnings" ;;
7115                               esac
7116                               ;;        
7117                         linux|irix*)    dflt='-shared' ;;
7118                         next)  dflt='none' ;;
7119                         solaris) dflt='-G' ;;
7120                         sunos) dflt='-assert nodefinitions' ;;
7121                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7122                 *)     dflt='none' ;;
7123                         esac
7124                         ;;
7125     *) dflt="$lddlflags" ;;
7126     esac
7127
7128         : Try to guess additional flags to pick up local libraries.
7129         : Be careful not to append to a plain 'none'
7130         case "$dflt" in
7131         none) dflt='' ;;
7132         esac
7133         for thisflag in $ldflags; do
7134                 case "$thisflag" in
7135                 -L*|-R*)
7136                         case " $dflt " in
7137                         *" $thisflag "*) ;;
7138                         *) dflt="$dflt $thisflag" ;;
7139                         esac
7140                         ;;
7141                 esac
7142         done
7143
7144         case "$dflt" in
7145         ''|' ') dflt='none' ;;
7146         esac
7147
7148     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7149     . ./myread
7150     case "$ans" in
7151     none) lddlflags=' ' ;;
7152     *) lddlflags="$ans" ;;
7153     esac
7154
7155         cat <<EOM
7156
7157 Some systems may require passing special flags to $cc to indicate that
7158 the resulting executable will use dynamic linking.  To use no flags,
7159 say "none".
7160
7161 EOM
7162     case "$ccdlflags" in
7163     '') case "$osname" in
7164                 hpux)   dflt='-Wl,-E' ;;
7165                 linux)  dflt='-rdynamic' ;;
7166                 next)   dflt='none' ;;
7167                 sunos)  dflt='none' ;;
7168                 *)      dflt='none' ;;
7169             esac ;;
7170     ' ')  dflt='none' ;;
7171     *)  dflt="$ccdlflags" ;;
7172     esac
7173     rp="Any special flags to pass to $cc to use dynamic linking?"
7174     . ./myread
7175     case "$ans" in
7176     none) ccdlflags=' ' ;;
7177     *) ccdlflags="$ans" ;;
7178     esac
7179     ;;
7180 *)  usedl="$undef"
7181         ld='ld'
7182     dlsrc='dl_none.xs'
7183     lddlflags=''
7184     ccdlflags=''
7185     ;;
7186 esac
7187
7188 also=''
7189 case "$usedl" in
7190 $undef)
7191         # No dynamic loading being used, so don't bother even to prompt.
7192         useshrplib='false'
7193         ;;
7194 *)      case "$useshrplib" in
7195         '')     case "$osname" in
7196                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7197                         dflt=y
7198                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7199                         ;;
7200                 next*)
7201                         case "$osvers" in
7202                         4*)     dflt=y
7203                                 also='Building a shared libperl is needed for MAB support.'
7204                                 ;;
7205                         *)      dflt=n
7206                                 ;;
7207                         esac
7208                         ;;
7209                 *)      dflt=n
7210                         ;;
7211                 esac
7212                 ;;
7213         $define|true|[Yy]*)
7214                 dflt=y
7215                 ;;
7216         *)      dflt=n
7217                 ;;
7218         esac
7219         $cat << EOM
7220
7221 The perl executable is normally obtained by linking perlmain.c with
7222 libperl${_a}, any static extensions (usually just DynaLoader), and
7223 any other libraries needed on this system (such as -lm, etc.).  Since
7224 your system supports dynamic loading, it is probably possible to build
7225 a shared libperl.$so.  If you will have more than one executable linked
7226 to libperl.$so, this will significantly reduce the size of each
7227 executable, but it may have a noticeable affect on performance.  The
7228 default is probably sensible for your system.
7229 $also
7230
7231 EOM
7232         rp="Build a shared libperl.$so (y/n)"
7233         . ./myread
7234         case "$ans" in
7235         true|$define|[Yy]*)
7236                 useshrplib='true'  ;;
7237         *)      useshrplib='false' ;;
7238         esac
7239         ;;
7240 esac
7241
7242 case "$useshrplib" in
7243 true)
7244         case "$libperl" in
7245         '')
7246                 # Figure out a good name for libperl.so.  Since it gets stored in
7247                 # a version-specific architecture-dependent library, the version
7248                 # number isn't really that important, except for making cc/ld happy.
7249                 #
7250                 # A name such as libperl.so.3.1
7251                 majmin="libperl.$so.$patchlevel.$subversion"
7252                 # A name such as libperl.so.301
7253                 majonly=`echo $patchlevel $subversion |
7254                         $awk '{printf "%d%02d", $1, $2}'`
7255                 majonly=libperl.$so.$majonly
7256                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7257                 # rely on figuring it out from the naming of libc.
7258                 case "${osname}${osvers}" in
7259                 next4*)
7260                         dflt=libperl.5.$so
7261                         # XXX How handle the --version stuff for MAB?
7262                         ;;
7263                 linux*)  # ld won't link with a bare -lperl otherwise.
7264                         dflt=libperl.$so
7265                         ;;
7266                 cygwin*) # include version
7267                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7268                         ;;
7269                 *)      # Try to guess based on whether libc has major.minor.
7270                         case "$libc" in
7271                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7272                         *libc.$so.[0-9]*) dflt=$majonly ;;
7273                         *)      dflt=libperl.$so ;;
7274                         esac
7275                         ;;
7276                 esac
7277                 ;;
7278         *)      dflt=$libperl
7279                 ;;
7280         esac
7281         cat << EOM
7282
7283 I need to select a good name for the shared libperl.  If your system uses
7284 library names with major and minor numbers, then you might want something
7285 like $majmin.  Alternatively, if your system uses a single version
7286 number for shared libraries, then you might want to use $majonly.
7287 Or, your system might be quite happy with a simple libperl.$so.
7288
7289 Since the shared libperl will get installed into a version-specific
7290 architecture-dependent directory, the version number of the shared perl
7291 library probably isn't important, so the default should be o.k.
7292
7293 EOM
7294         rp='What name do you want to give to the shared libperl?'
7295         . ./myread
7296         libperl=$ans
7297         echo "Ok, I'll use $libperl"
7298         ;;
7299 *)
7300         libperl="libperl${_a}"
7301         ;;
7302 esac
7303
7304 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7305 case "$shrpdir" in
7306 '') ;;
7307 *)      $cat >&4 <<EOM
7308 WARNING:  Use of the shrpdir variable for the installation location of
7309 the shared $libperl is not supported.  It was never documented and
7310 will not work in this version.  Let me (perlbug@perl.org)
7311 know of any problems this may cause.
7312
7313 EOM
7314         case "$shrpdir" in
7315         "$archlibexp/CORE")
7316                 $cat >&4 <<EOM
7317 But your current setting of $shrpdir is
7318 the default anyway, so it's harmless.
7319 EOM
7320                 ;;
7321         *)
7322                 $cat >&4 <<EOM
7323 Further, your current attempted setting of $shrpdir
7324 conflicts with the value of $archlibexp/CORE
7325 that installperl will use.
7326 EOM
7327                 ;;
7328         esac
7329         ;;
7330 esac
7331
7332 # How will the perl executable find the installed shared $libperl?
7333 # Add $xxx to ccdlflags.
7334 # If we can't figure out a command-line option, use $shrpenv to
7335 # set env LD_RUN_PATH.  The main perl makefile uses this.
7336 shrpdir=$archlibexp/CORE
7337 xxx=''
7338 tmp_shrpenv=''
7339 if "$useshrplib"; then
7340     case "$osname" in 
7341         aix)
7342                 # We'll set it in Makefile.SH...
7343                 ;;
7344         solaris|netbsd)
7345                 xxx="-R $shrpdir"
7346                 ;;
7347         freebsd)
7348                 xxx="-Wl,-R$shrpdir"
7349                 ;;
7350         linux|irix*|dec_osf)
7351                 xxx="-Wl,-rpath,$shrpdir"
7352                 ;;
7353         next)
7354                 # next doesn't like the default...
7355                 ;;
7356         beos)
7357                 # beos doesn't like the default, either.
7358                 ;;
7359         hpux*)
7360                 # hpux doesn't like the default, either.
7361                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7362                 ;;
7363         *)
7364                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7365                 ;;
7366         esac
7367         case "$xxx" in
7368         '') ;;
7369         *)      
7370                 # Only add $xxx if it isn't already in ccdlflags.
7371                 case " $ccdlflags " in
7372                 *" $xxx "*)     ;;
7373                 *)      ccdlflags="$ccdlflags $xxx"
7374                         cat <<EOM >&4
7375
7376 Adding $xxx to the flags
7377 passed to $ld so that the perl executable will find the 
7378 installed shared $libperl.
7379
7380 EOM
7381                         ;;
7382                 esac
7383                 ;;
7384         esac
7385 fi
7386 # Fix ccdlflags in AIX for building external extensions.
7387 # (For building Perl itself bare -bE:perl.exp is needed,
7388 #  Makefile.SH takes care of this.)
7389 case "$osname" in
7390 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7391 esac
7392 # Respect a hint or command-line value.
7393 case "$shrpenv" in
7394 '') shrpenv="$tmp_shrpenv" ;;
7395 esac
7396 case "$ldlibpthname" in
7397 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7398 none)   ldlibpthname='' ;;
7399 esac
7400
7401 : determine where manual pages are on this system
7402 echo " "
7403 case "$sysman" in
7404 '') 
7405         syspath='/usr/share/man/man1 /usr/man/man1'
7406         syspath="$syspath /usr/man/mann /usr/man/manl /usr/man/local/man1"
7407         syspath="$syspath /usr/man/u_man/man1"
7408         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7409         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7410         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7411         sysman=`./loc . /usr/man/man1 $syspath`
7412         ;;
7413 esac
7414 if $test -d "$sysman"; then
7415         echo "System manual is in $sysman." >&4
7416 else
7417         echo "Could not find manual pages in source form." >&4
7418 fi
7419
7420 : determine where manual pages go
7421 set man1dir man1dir none
7422 eval $prefixit
7423 $cat <<EOM
7424
7425 $spackage has manual pages available in source form.
7426 EOM
7427 case "$nroff" in
7428 nroff)
7429         echo "However, you don't have nroff, so they're probably useless to you."
7430         case "$man1dir" in
7431         '') man1dir="none";;
7432         esac;;
7433 esac
7434 echo "If you don't want the manual sources installed, answer 'none'."
7435 case "$man1dir" in
7436 ' ') dflt=none
7437         ;;
7438 '')
7439         lookpath="$prefixexp/share/man/man1"
7440         lookpath="$lookpath $prefixexp/man/man1 $prefixexp/man/l_man/man1"
7441         lookpath="$lookpath $prefixexp/man/p_man/man1"
7442         lookpath="$lookpath $prefixexp/man/u_man/man1"
7443         lookpath="$lookpath $prefixexp/man/man.1"
7444         case "$sysman" in
7445         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7446         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7447         esac
7448         set dflt
7449         eval $prefixup
7450         ;;
7451 *)  dflt="$man1dir"
7452         ;;
7453 esac
7454 echo " "
7455 fn=dn+~
7456 rp="Where do the main $spackage manual pages (source) go?"
7457 . ./getfile
7458 if $test "X$man1direxp" != "X$ansexp"; then
7459         installman1dir=''
7460 fi
7461 man1dir="$ans"
7462 man1direxp="$ansexp"
7463 case "$man1dir" in
7464 '')     man1dir=' '
7465         installman1dir='';;
7466 esac
7467
7468 : Change installation prefix, if necessary.
7469 if $test X"$prefix" != X"$installprefix"; then
7470         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7471 else
7472         installman1dir="$man1direxp"
7473 fi
7474
7475 : What suffix to use on installed man pages
7476
7477 case "$man1dir" in
7478 ' ')
7479         man1ext='0'
7480         ;;
7481 *)
7482         rp="What suffix should be used for the main $spackage man pages?"
7483         case "$man1ext" in
7484         '')     case "$man1dir" in
7485                 *1)  dflt=1 ;;
7486                 *1p) dflt=1p ;;
7487                 *1pm) dflt=1pm ;;
7488                 *l) dflt=l;;
7489                 *n) dflt=n;;
7490                 *o) dflt=o;;
7491                 *p) dflt=p;;
7492                 *C) dflt=C;;
7493                 *L) dflt=L;;
7494                 *L1) dflt=L1;;
7495                 *) dflt=1;;
7496                 esac
7497                 ;;
7498         *)      dflt="$man1ext";;
7499         esac
7500         . ./myread
7501         man1ext="$ans"
7502         ;;
7503 esac
7504
7505 : see if we can have long filenames
7506 echo " "
7507 first=123456789abcdef
7508 $rm -f $first
7509 if (echo hi >$first) 2>/dev/null; then
7510         if $test -f 123456789abcde; then
7511                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7512                 val="$undef"
7513         else
7514                 echo 'You can have filenames longer than 14 characters.'>&4
7515                 val="$define"
7516         fi
7517 else
7518         $cat <<'EOM'
7519 You can't have filenames longer than 14 chars.
7520 You can't even think about them!
7521 EOM
7522         val="$undef"
7523 fi 
7524 set d_flexfnam
7525 eval $setvar
7526 $rm -rf 123456789abcde*
7527
7528 : determine where library module manual pages go
7529 set man3dir man3dir none
7530 eval $prefixit
7531 $cat <<EOM
7532
7533 $spackage has manual pages for many of the library modules.
7534 EOM
7535
7536 case "$nroff" in
7537 nroff)
7538         $cat <<'EOM'
7539 However, you don't have nroff, so they're probably useless to you.
7540 EOM
7541         case "$man3dir" in
7542         '') man3dir="none";;
7543         esac;;
7544 esac
7545
7546 case "$d_flexfnam" in
7547 undef)
7548         $cat <<'EOM'
7549 However, your system can't handle the long file names like File::Basename.3. 
7550 EOM
7551         case "$man3dir" in
7552         '') man3dir="none";;
7553         esac;;
7554 esac
7555
7556 echo "If you don't want the manual sources installed, answer 'none'."
7557 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7558 case "$man3dir" in
7559 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7560         if $test -d "$privlib/man/man3"; then
7561                 cat <<EOM >&4
7562
7563 WARNING:  Previous versions of perl installed man3 pages into
7564 $privlib/man/man3.  This version will suggest a 
7565 new default of $dflt.  
7566 EOM
7567                 tdflt=$dflt
7568                 dflt='n'
7569                 rp='Do you wish to preserve the old behavior?(y/n)'
7570                 . ./myread
7571                 case "$ans" in
7572                 y*) dflt="$privlib/man/man3" ;;
7573                 *)  dflt=$tdflt ;;
7574                 esac
7575     fi
7576         ;;
7577 *)      dflt="$man3dir" ;;
7578 esac
7579 case "$dflt" in
7580 ' ') dflt=none ;;
7581 esac
7582 echo " "
7583 fn=dn+~
7584 rp="Where do the $package library man pages (source) go?"
7585 . ./getfile
7586 man3dir="$ans"
7587 man3direxp="$ansexp"
7588 case "$man3dir" in
7589 '')     man3dir=' '
7590         installman3dir='';;
7591 esac
7592
7593 : Change installation prefix, if necessary.
7594 if $test X"$prefix" != X"$installprefix"; then
7595         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7596 else
7597         installman3dir="$man3direxp"
7598 fi
7599
7600 : What suffix to use on installed man pages
7601 case "$man3dir" in
7602 ' ')
7603         man3ext='0'
7604         ;;
7605 *)
7606         rp="What suffix should be used for the $package library man pages?"
7607         case "$man3ext" in
7608         '')     case "$man3dir" in
7609                 *3)  dflt=3 ;;
7610                 *3p) dflt=3p ;;
7611                 *3pm) dflt=3pm ;;
7612                 *l) dflt=l;;
7613                 *n) dflt=n;;
7614                 *o) dflt=o;;
7615                 *p) dflt=p;;
7616                 *C) dflt=C;;
7617                 *L) dflt=L;;
7618                 *L3) dflt=L3;;
7619                 *) dflt=3;;
7620                 esac
7621                 ;;
7622         *)      dflt="$man3ext";;
7623         esac
7624         . ./myread
7625         man3ext="$ans"
7626         ;;
7627 esac
7628
7629 : see if we have to deal with yellow pages, now NIS.
7630 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7631         if $test -f /usr/etc/nibindd; then
7632                 echo " "
7633                 echo "I'm fairly confident you're on a NeXT."
7634                 echo " "
7635                 rp='Do you get the hosts file via NetInfo?'
7636                 dflt=y
7637                 case "$hostcat" in
7638                 nidump*) ;;
7639                 '') ;;
7640                 *) dflt=n;;
7641                 esac
7642                 . ./myread
7643                 case "$ans" in
7644                 y*) hostcat='nidump hosts .';;
7645                 *)      case "$hostcat" in
7646                         nidump*) hostcat='';;
7647                         esac
7648                         ;;
7649                 esac
7650         fi
7651         case "$hostcat" in
7652         nidump*) ;;
7653         *)
7654                 case "$hostcat" in
7655                 *ypcat*) dflt=y;;
7656                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7657                                 dflt=y
7658                         else
7659                                 dflt=n
7660                         fi;;
7661                 *) dflt=n;;
7662                 esac
7663                 echo " "
7664                 rp='Are you getting the hosts file via yellow pages?'
7665                 . ./myread
7666                 case "$ans" in
7667                 y*) hostcat='ypcat hosts';;
7668                 *) hostcat='cat /etc/hosts';;
7669                 esac
7670                 ;;
7671         esac
7672 fi
7673 case "$hostcat" in
7674 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7675 esac
7676 case "$groupcat" in
7677 '') test -f /etc/group && groupcat='cat /etc/group';;
7678 esac
7679 case "$passcat" in
7680 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7681 esac
7682
7683 : now get the host name
7684 echo " "
7685 echo "Figuring out host name..." >&4
7686 case "$myhostname" in
7687 '') cont=true
7688         echo 'Maybe "hostname" will work...'
7689         if tans=`sh -c hostname 2>&1` ; then
7690                 myhostname=$tans
7691                 phostname=hostname
7692                 cont=''
7693         fi
7694         ;;
7695 *) cont='';;
7696 esac
7697 if $test "$cont"; then
7698         if ./xenix; then
7699                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7700                 if tans=`cat /etc/systemid 2>&1` ; then
7701                         myhostname=$tans
7702                         phostname='cat /etc/systemid'
7703                         echo "Whadyaknow.  Xenix always was a bit strange..."
7704                         cont=''
7705                 fi
7706         elif $test -r /etc/systemid; then
7707                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7708         fi
7709 fi
7710 if $test "$cont"; then
7711         echo 'No, maybe "uuname -l" will work...'
7712         if tans=`sh -c 'uuname -l' 2>&1` ; then
7713                 myhostname=$tans
7714                 phostname='uuname -l'
7715         else
7716                 echo 'Strange.  Maybe "uname -n" will work...'
7717                 if tans=`sh -c 'uname -n' 2>&1` ; then
7718                         myhostname=$tans
7719                         phostname='uname -n'
7720                 else
7721                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7722                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7723                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7724                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7725                         else
7726                                 case "$myhostname" in
7727                                 '') echo "Does this machine have an identity crisis or something?"
7728                                         phostname='';;
7729                                 *)
7730                                         echo "Well, you said $myhostname before..."
7731                                         phostname='echo $myhostname';;
7732                                 esac
7733                         fi
7734                 fi
7735         fi
7736 fi
7737 : you do not want to know about this
7738 set $myhostname
7739 myhostname=$1
7740
7741 : verify guess
7742 if $test "$myhostname" ; then
7743         dflt=y
7744         rp='Your host name appears to be "'$myhostname'".'" Right?"
7745         . ./myread
7746         case "$ans" in
7747         y*) ;;
7748         *) myhostname='';;
7749         esac
7750 fi
7751
7752 : bad guess or no guess
7753 while $test "X$myhostname" = X ; do
7754         dflt=''
7755         rp="Please type the (one word) name of your host:"
7756         . ./myread
7757         myhostname="$ans"
7758 done
7759
7760 : translate upper to lower if necessary
7761 case "$myhostname" in
7762 *[A-Z]*)
7763         echo "(Normalizing case in your host name)"
7764         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7765         ;;
7766 esac
7767
7768 case "$myhostname" in
7769 *.*)
7770         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7771         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7772         echo "(Trimming domain name from host name--host name is now $myhostname)"
7773         ;;
7774 *) case "$mydomain" in
7775         '')
7776                 {
7777                         test "X$hostcat" = "Xypcat hosts" &&
7778                         ypmatch "$myhostname" hosts 2>/dev/null |\
7779                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7780                         $test -s hosts
7781                 } || {
7782                         test "X$hostcat" != "X" &&
7783                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7784                                         /[       ]$myhostname[  . ]/p" > hosts
7785                 }
7786                 tmp_re="[       . ]"
7787                 if $test -f hosts; then
7788                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7789                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7790                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7791                                 hosts | $sort | $uniq | \
7792                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7793                         case `$echo X$dflt` in
7794                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7795                                 dflt=.
7796                                 ;;
7797                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7798                                 ;;
7799                         esac
7800                 else
7801                         echo "(I cannot locate a hosts database anywhere)"
7802                         dflt=.
7803                 fi
7804                 case "$dflt" in
7805                 .)
7806                         tans=`./loc resolv.conf X /etc /usr/etc`
7807                         if $test -f "$tans"; then
7808                                 echo "(Attempting domain name extraction from $tans)"
7809                                 dflt=.`$sed -n -e 's/   / /g' \
7810                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7811                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7812                                 case "$dflt" in
7813                                 .) dflt=.`$sed -n -e 's/        / /g' \
7814                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7815                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7816                                         ;;
7817                                 esac
7818                         fi
7819                         ;;
7820                 esac
7821                 case "$dflt" in
7822                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7823                         dflt=.`sh -c domainname 2>/dev/null`
7824                         case "$dflt" in
7825                         '') dflt='.';;
7826                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7827                         esac
7828                         ;;
7829                 esac
7830                 case "$dflt$osname" in
7831                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7832                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7833                         ;;
7834                 esac
7835                 case "$dflt" in
7836                 .) echo "(Lost all hope -- silly guess then)"
7837                         dflt='.uucp'
7838                         ;;
7839                 esac
7840                 $rm -f hosts
7841                 ;;
7842         *) dflt="$mydomain";;
7843         esac;;
7844 esac
7845 echo " "
7846 rp="What is your domain name?"
7847 . ./myread
7848 tans="$ans"
7849 case "$ans" in
7850 '') ;;
7851 .*) ;;
7852 *) tans=".$tans";;
7853 esac
7854 mydomain="$tans"
7855
7856 : translate upper to lower if necessary
7857 case "$mydomain" in
7858 *[A-Z]*)
7859         echo "(Normalizing case in your domain name)"
7860         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7861         ;;
7862 esac
7863
7864 : a little sanity check here
7865 case "$phostname" in
7866 '') ;;
7867 *)
7868         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7869         $myhostname$mydomain|$myhostname) ;;
7870         *)
7871                 case "$phostname" in
7872                 sed*)
7873                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7874                         ;;
7875                 *)
7876                         echo "(That doesn't agree with your $phostname command, by the way.)"
7877                         ;;
7878                 esac
7879         ;;
7880         esac
7881         ;;
7882 esac
7883
7884 $cat <<EOM
7885
7886 I need to get your e-mail address in Internet format if possible, i.e.
7887 something like user@host.domain. Please answer accurately since I have
7888 no easy means to double check it. The default value provided below
7889 is most probably close to reality but may not be valid from outside
7890 your organization...
7891
7892 EOM
7893 cont=x
7894 while test "$cont"; do
7895         case "$cf_email" in
7896         '') dflt="$cf_by@$myhostname$mydomain";;
7897         *) dflt="$cf_email";;
7898         esac
7899         rp='What is your e-mail address?'
7900         . ./myread
7901         cf_email="$ans"
7902         case "$cf_email" in
7903         *@*.*) cont='' ;;
7904         *)
7905                 rp='Address does not look like an Internet one.  Use it anyway?'
7906                 case "$fastread" in
7907                 yes) dflt=y ;;
7908                 *) dflt=n ;;
7909                 esac
7910                 . ./myread
7911                 case "$ans" in
7912                 y*) cont='' ;;
7913                 *) echo " " ;;
7914                 esac
7915                 ;;
7916         esac
7917 done
7918
7919 $cat <<EOM
7920
7921 If you or somebody else will be maintaining perl at your site, please
7922 fill in the correct e-mail address here so that they may be contacted
7923 if necessary. Currently, the "perlbug" program included with perl
7924 will send mail to this address in addition to perlbug@perl.org. You may
7925 enter "none" for no administrator.
7926
7927 EOM
7928 case "$perladmin" in
7929 '') dflt="$cf_email";;
7930 *) dflt="$perladmin";;
7931 esac
7932 rp='Perl administrator e-mail address'
7933 . ./myread
7934 perladmin="$ans"
7935
7936 : determine whether to only install version-specific parts.
7937 echo " "
7938 $cat <<EOM
7939 Do you want to install only the version-specific parts of the perl
7940 distribution?  Usually you do *not* want to do this.
7941 EOM
7942 case "$versiononly" in
7943 "$define"|[Yy]*|true) dflt='y' ;;
7944 *) dflt='n';
7945 esac
7946 rp="Do you want to install only the version-specific parts of perl?"
7947 . ./myread
7948 case "$ans" in
7949 [yY]*)  val="$define";;
7950 *)      val="$undef" ;;
7951 esac
7952 set versiononly
7953 eval $setvar
7954
7955 : figure out how to guarantee perl startup
7956 case "$startperl" in
7957 '')
7958         case "$sharpbang" in
7959         *!)
7960                 $cat <<EOH
7961
7962 I can use the #! construct to start perl on your system. This will
7963 make startup of perl scripts faster, but may cause problems if you
7964 want to share those scripts and perl is not in a standard place
7965 ($binexp/perl) on all your platforms. The alternative is to force
7966 a shell by starting the script with a single ':' character.
7967
7968 EOH
7969                 case "$versiononly" in
7970                 "$define")      dflt="$binexp/perl$version";;  
7971                 *)              dflt="$binexp/perl";;
7972                 esac
7973                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7974                 . ./myread
7975                 case "$ans" in
7976                 none)   startperl=": # use perl";;
7977                 *)      startperl="#!$ans"
7978                         if $test 30 -lt `echo "$ans" | wc -c`; then
7979                                 $cat >&4 <<EOM
7980
7981 WARNING:  Some systems limit the #! command to 32 characters.
7982 If you experience difficulty running Perl scripts with #!, try
7983 installing Perl in a directory with a shorter pathname.
7984
7985 EOM
7986                         fi ;;
7987                 esac
7988                 ;;
7989         *) startperl=": # use perl"
7990                 ;;
7991         esac
7992         ;;
7993 esac
7994 echo "I'll use $startperl to start perl scripts."
7995
7996 : figure best path for perl in scripts
7997 case "$perlpath" in
7998 '')
7999         perlpath="$binexp/perl"
8000         case "$startperl" in
8001         *!*) ;;
8002         *)
8003                 $cat <<EOH
8004
8005 I will use the "eval 'exec'" idiom to start Perl on your system.
8006 I can use the full path of your Perl binary for this purpose, but
8007 doing so may cause problems if you want to share those scripts and
8008 Perl is not always in a standard place ($binexp/perl).
8009
8010 EOH
8011                 dflt="$binexp/perl"
8012                 rp="What path shall I use in \"eval 'exec'\"?"
8013                 . ./myread
8014                 perlpath="$ans"
8015                 ;;
8016         esac
8017         ;;
8018 esac
8019 case "$startperl" in
8020 *!*)    ;;
8021 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
8022 esac
8023
8024 : determine where public executable scripts go
8025 set scriptdir scriptdir
8026 eval $prefixit
8027 case "$scriptdir" in
8028 '')
8029         dflt="$bin"
8030         : guess some guesses
8031         $test -d /usr/share/scripts && dflt=/usr/share/scripts
8032         $test -d /usr/share/bin     && dflt=/usr/share/bin
8033         $test -d /usr/local/script  && dflt=/usr/local/script
8034         $test -d /usr/local/scripts && dflt=/usr/local/scripts
8035         $test -d $prefixexp/script  && dflt=$prefixexp/script
8036         set dflt
8037         eval $prefixup
8038         ;;
8039 *)  dflt="$scriptdir"
8040         ;;
8041 esac
8042 $cat <<EOM
8043  
8044 Some installations have a separate directory just for executable scripts so
8045 that they can mount it across multiple architectures but keep the scripts in
8046 one spot.  You might, for example, have a subdirectory of /usr/share for this.
8047 Or you might just lump your scripts in with all your other executables.
8048  
8049 EOM
8050 fn=d~
8051 rp='Where do you keep publicly executable scripts?'
8052 . ./getfile
8053 if $test "X$ansexp" != "X$scriptdirexp"; then
8054         installscript=''
8055 fi
8056 scriptdir="$ans"
8057 scriptdirexp="$ansexp"
8058 : Change installation prefix, if necessary.
8059 if $test X"$prefix" != X"$installprefix"; then
8060         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8061 else
8062         installscript="$scriptdirexp"
8063 fi
8064
8065 : determine where add-on public executables go
8066 case "$sitebin" in
8067 '')     dflt=$siteprefix/bin ;;
8068 *)      dflt=$sitebin ;;
8069 esac
8070 fn=d~
8071 rp='Pathname where the add-on public executables should be installed?'
8072 . ./getfile
8073 sitebin="$ans"
8074 sitebinexp="$ansexp"
8075 : Change installation prefix, if necessary.
8076 if $test X"$prefix" != X"$installprefix"; then
8077         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8078 else
8079         installsitebin="$sitebinexp"
8080 fi
8081
8082 : define an is-a-typedef? function
8083 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8084 case "$inclist" in
8085 "") inclist="sys/types.h";;
8086 esac;
8087 eval "varval=\$$var";
8088 case "$varval" in
8089 "")
8090         $rm -f temp.c;
8091         for inc in $inclist; do
8092                 echo "#include <$inc>" >>temp.c;
8093         done;
8094         echo "#ifdef $type" >> temp.c;
8095         echo "printf(\"We have $type\");" >> temp.c;
8096         echo "#endif" >> temp.c;
8097         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8098         if $contains $type temp.E >/dev/null 2>&1; then
8099                 eval "$var=\$type";
8100         else
8101                 eval "$var=\$def";
8102         fi;
8103         $rm -f temp.?;;
8104 *) eval "$var=\$varval";;
8105 esac'
8106
8107 : define an is-a-typedef? function that prompts if the type is not available.
8108 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8109 case "$inclist" in
8110 "") inclist="sys/types.h";;
8111 esac;
8112 eval "varval=\$$var";
8113 case "$varval" in
8114 "")
8115         $rm -f temp.c;
8116         for inc in $inclist; do
8117                 echo "#include <$inc>" >>temp.c;
8118         done;
8119         echo "#ifdef $type" >> temp.c;
8120         echo "printf(\"We have $type\");" >> temp.c;
8121         echo "#endif" >> temp.c;
8122         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8123         echo " " ;
8124         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8125         if $contains $type temp.E >/dev/null 2>&1; then
8126                 echo "$type found." >&4;
8127                 eval "$var=\$type";
8128         else
8129                 echo "$type NOT found." >&4;
8130                 dflt="$def";
8131                 . ./myread ;
8132                 eval "$var=\$ans";
8133         fi;
8134         $rm -f temp.?;;
8135 *) eval "$var=\$varval";;
8136 esac'
8137
8138 : see what type lseek is declared as in the kernel
8139 rp="What is the type used for lseek's offset on this system?"
8140 set off_t lseektype long stdio.h sys/types.h
8141 eval $typedef_ask
8142
8143 echo " "
8144 echo "Checking to see how big your file offsets are..." >&4
8145 $cat >try.c <<EOCP
8146 #include <sys/types.h>
8147 #include <stdio.h>
8148 int main()
8149 {
8150     printf("%d\n", (int)sizeof($lseektype));
8151     return(0); 
8152 }
8153 EOCP
8154 set try
8155 if eval $compile_ok; then
8156         lseeksize=`$run ./try`
8157         echo "Your file offsets are $lseeksize bytes long."
8158 else
8159         dflt=$longsize
8160         echo " "
8161         echo "(I can't seem to compile the test program.  Guessing...)"
8162         rp="What is the size of your file offsets (in bytes)?"
8163         . ./myread
8164         lseeksize="$ans"
8165 fi
8166 $rm -f try.c try
8167
8168 : see what type file positions are declared as in the library
8169 rp="What is the type for file position used by fsetpos()?"
8170 set fpos_t fpostype long stdio.h sys/types.h
8171 eval $typedef_ask
8172
8173 echo " "
8174 case "$fpostype" in
8175 *_t) zzz="$fpostype"    ;;
8176 *)   zzz="fpos_t"       ;;
8177 esac
8178 echo "Checking the size of $zzz..." >&4 
8179 cat > try.c <<EOCP
8180 #include <sys/types.h>
8181 #include <stdio.h>
8182 int main() {
8183     printf("%d\n", (int)sizeof($fpostype));
8184     exit(0);
8185 }
8186 EOCP
8187 set try
8188 if eval $compile_ok; then
8189         yyy=`$run ./try`
8190         case "$yyy" in
8191         '')     fpossize=4
8192                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8193                 ;;
8194         *)      fpossize=$yyy
8195                 echo "Your $zzz is $fpossize bytes long."
8196                 ;;
8197         esac
8198 else
8199         dflt="$longsize"
8200         echo " " >&4
8201         echo "(I can't compile the test program.  Guessing...)" >&4
8202         rp="What is the size of your file positions (in bytes)?"
8203         . ./myread
8204         fpossize="$ans"
8205 fi
8206
8207
8208
8209 # Backward compatibility (uselfs is deprecated).
8210 case "$uselfs" in
8211 "$define"|true|[yY]*)
8212         cat <<EOM >&4
8213
8214 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8215 EOM
8216         uselargefiles="$define"
8217         ;;
8218 esac                          
8219
8220 case "$lseeksize:$fpossize" in
8221 8:8) cat <<EOM
8222
8223 You can have files larger than 2 gigabytes.
8224 EOM
8225    val="$define" ;;
8226 *)    case "$uselargefiles" in
8227    "$undef"|false|[nN]*) dflt='n' ;;
8228    *)   dflt='y' ;;
8229    esac
8230    cat <<EOM
8231
8232 Perl can be built to understand large files (files larger than 2 gigabytes)
8233 on some systems.  To do so, Configure can be run with -Duselargefiles.
8234
8235 If this doesn't make any sense to you, just accept the default '$dflt'.
8236 EOM
8237    rp='Try to understand large files, if available?'
8238    . ./myread
8239    case "$ans" in
8240    y|Y)         val="$define" ;;
8241    *)           val="$undef"  ;;
8242    esac
8243    ;;
8244 esac
8245 set uselargefiles
8246 eval $setvar
8247 case "$uselargefiles" in
8248 "$define")
8249 : Look for a hint-file generated 'call-back-unit'.  If the
8250 : user has specified that a large files perl is to be built,
8251 : we may need to set or change some other defaults.
8252         if $test -f uselargefiles.cbu; then
8253                 echo "Your platform has some specific hints for large file builds, using them..."
8254                 . ./uselargefiles.cbu
8255                 echo " "
8256                 echo "Rechecking to see how big your file offsets are..." >&4
8257                 $cat >try.c <<EOCP
8258 #include <sys/types.h>
8259 #include <stdio.h>
8260 int main()
8261 {
8262     printf("%d\n", (int)sizeof($lseektype));
8263     return(0); 
8264 }
8265 EOCP
8266                 set try
8267                 if eval $compile_ok; then
8268                         lseeksize=`$run ./try`
8269                         $echo "Your file offsets are now $lseeksize bytes long."
8270                 else
8271                         dflt="$lseeksize"
8272                         echo " "
8273                         echo "(I can't seem to compile the test program.  Guessing...)"
8274                         rp="What is the size of your file offsets (in bytes)?"
8275                         . ./myread
8276                         lseeksize="$ans"
8277                 fi
8278                 case "$fpostype" in
8279                 *_t) zzz="$fpostype"    ;;
8280                 *)   zzz="fpos_t"       ;;
8281                 esac
8282                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8283                 $cat > try.c <<EOCP
8284 #include <sys/types.h>
8285 #include <stdio.h>
8286 int main() {
8287     printf("%d\n", (int)sizeof($fpostype));
8288     exit(0);
8289 }
8290 EOCP
8291                 set try
8292                 if eval $compile_ok; then
8293                         yyy=`$run ./try`
8294                         dflt="$lseeksize"
8295                         case "$yyy" in
8296                         '')     echo " "
8297                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8298                                 ;;
8299                         *)      fpossize=$yyy
8300                                 echo " $fpossize bytes." >&4
8301                                 ;;
8302                         esac
8303                 else
8304                         dflt="$fpossize"
8305                         echo " "
8306                         echo "(I can't compile the test program.  Guessing...)" >&4
8307                         rp="What is the size of your file positions (in bytes)?"
8308                         . ./myread
8309                         fpossize="$ans"
8310                 fi
8311                 $rm -f try.c try
8312         fi
8313         ;;
8314 esac
8315
8316 case "$vendorprefix" in
8317 '')     d_vendorbin="$undef"
8318         vendorbin=''
8319         vendorbinexp=''
8320         ;;
8321 *)      d_vendorbin="$define"
8322         : determine where vendor-supplied executables go.
8323         case "$vendorbin" in
8324         '') dflt=$vendorprefix/bin ;;
8325         *)      dflt="$vendorbin" ;;
8326         esac
8327         fn=d~+
8328         rp='Pathname for the vendor-supplied executables directory?'
8329         . ./getfile
8330         vendorbin="$ans"
8331         vendorbinexp="$ansexp"
8332         ;;
8333 esac
8334 : Change installation prefix, if necessary.
8335 if $test X"$prefix" != X"$installprefix"; then
8336         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8337 else
8338         installvendorbin="$vendorbinexp"
8339 fi
8340
8341 : see if qgcvt exists
8342 set qgcvt d_qgcvt
8343 eval $inlibc
8344
8345 echo " "
8346
8347 if $test X"$d_longdbl" = X"$define"; then
8348
8349 echo "Checking how to print long doubles..." >&4
8350
8351 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8352         $cat >try.c <<'EOCP'
8353 #include <sys/types.h>
8354 #include <stdio.h>
8355 int main() {
8356   double d = 123.456;
8357   printf("%.3f\n", d);
8358 }
8359 EOCP
8360         set try
8361         if eval $compile; then
8362                 yyy=`$run ./try`
8363                 case "$yyy" in
8364                 123.456)
8365                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8366                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8367                         echo "We will use %f."
8368                         ;;
8369                 esac
8370         fi
8371 fi
8372
8373 if $test X"$sPRIfldbl" = X; then
8374         $cat >try.c <<'EOCP'
8375 #include <sys/types.h>
8376 #include <stdio.h>
8377 int main() {
8378   long double d = 123.456;
8379   printf("%.3Lf\n", d);
8380 }
8381 EOCP
8382         set try
8383         if eval $compile; then
8384                 yyy=`$run ./try`
8385                 case "$yyy" in
8386                 123.456)
8387                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8388                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8389                         echo "We will use %Lf."
8390                         ;;
8391                 esac
8392         fi
8393 fi
8394
8395 if $test X"$sPRIfldbl" = X; then
8396         $cat >try.c <<'EOCP'
8397 #include <sys/types.h>
8398 #include <stdio.h>
8399 int main() {
8400   long double d = 123.456;
8401   printf("%.3llf\n", d);
8402 }
8403 EOCP
8404         set try
8405         if eval $compile; then
8406                 yyy=`$run ./try`
8407                 case "$yyy" in
8408                 123.456)
8409                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8410                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8411                         echo "We will use %llf."
8412                         ;;
8413                 esac
8414         fi
8415 fi
8416
8417 if $test X"$sPRIfldbl" = X; then
8418         $cat >try.c <<'EOCP'
8419 #include <sys/types.h>
8420 #include <stdio.h>
8421 int main() {
8422   long double d = 123.456;
8423   printf("%.3lf\n", d);
8424 }
8425 EOCP
8426         set try
8427         if eval $compile; then
8428                 yyy=`$run ./try`
8429                 case "$yyy" in
8430                 123.456)
8431                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8432                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8433                         echo "We will use %lf."
8434                         ;;
8435                 esac
8436         fi
8437 fi
8438
8439 if $test X"$sPRIfldbl" = X; then
8440         echo "Cannot figure out how to print long doubles." >&4
8441 else
8442         sSCNfldbl=$sPRIfldbl    # expect consistency
8443 fi
8444
8445 $rm -f try try.*
8446
8447 fi # d_longdbl
8448
8449 case "$sPRIfldbl" in
8450 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8451         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8452         d_SCNfldbl="$undef";
8453         ;;
8454 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8455         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8456         d_SCNfldbl="$define";
8457         ;;
8458 esac
8459
8460 : Check how to convert floats to strings.
8461 echo " "
8462 echo "Checking for an efficient way to convert floats to strings."
8463 echo " " > try.c
8464 case "$uselongdouble" in
8465 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8466 esac
8467 case "$d_longdbl" in
8468 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8469 esac
8470 case "$d_PRIgldbl" in
8471 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8472 esac
8473 $cat >>try.c <<EOP
8474 #ifdef TRY_gconvert
8475 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8476 char *myname = "gconvert";
8477 #endif
8478 #ifdef TRY_gcvt
8479 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8480 char *myname = "gcvt";
8481 #endif
8482 #ifdef TRY_qgcvt
8483 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8484 char *myname = "qgcvt";
8485 #define DOUBLETYPE long double
8486 #endif
8487 #ifdef TRY_sprintf
8488 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8489 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8490 #else
8491 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8492 #endif
8493 char *myname = "sprintf";
8494 #endif
8495
8496 #ifndef DOUBLETYPE
8497 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8498 #define DOUBLETYPE long double
8499 #else
8500 #define DOUBLETYPE double
8501 #endif
8502 #endif
8503
8504 #include <stdio.h>
8505
8506 #define I_STDLIB $i_stdlib
8507 #ifdef I_STDLIB
8508 #include <stdlib.h>
8509 #endif
8510
8511 int
8512 checkit(expect, got)
8513 char *expect;
8514 char *got;
8515 {
8516     if (strcmp(expect, got)) {
8517                 printf("%s oddity:  Expected %s, got %s\n",
8518                         myname, expect, got);
8519                 exit(1);
8520         }
8521 }
8522
8523 int main()
8524
8525         char buf[64]; 
8526         buf[63] = '\0';
8527
8528         /* This must be 1st test on (which?) platform */
8529         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8530         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8531         checkit("0.1", buf);
8532
8533         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8534         checkit("1", buf);
8535
8536         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8537         checkit("1.1", buf);
8538
8539         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8540         checkit("1.01", buf);
8541
8542         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8543         checkit("1.001", buf);
8544
8545         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8546         checkit("1.0001", buf);
8547
8548         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8549         checkit("1.00001", buf);
8550
8551         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8552         checkit("1.000001", buf);
8553
8554         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8555         checkit("0", buf);
8556
8557         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8558         checkit("-1", buf);
8559
8560         /* Some Linux gcvt's give 1.e+5 here. */
8561         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8562         checkit("100000", buf);
8563         
8564         /* Some Linux gcvt's give -1.e+5 here. */
8565         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8566         checkit("-100000", buf);
8567
8568         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8569         checkit("123.456", buf);
8570
8571         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8572         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8573         if (strlen(buf) > 5)
8574             checkit("1e+030", buf); /* for Microsoft */
8575         else
8576             checkit("1e+30", buf);
8577
8578         exit(0);
8579 }
8580 EOP
8581 case "$d_Gconvert" in
8582 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8583 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8584 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8585 *) xxx_list='gconvert gcvt sprintf' ;;
8586 esac
8587
8588 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8589 "$define$define$define")
8590     # for long doubles prefer first qgcvt, then sprintf
8591     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8592     xxx_list="sprintf $xxx_list"
8593     case "$d_qgcvt" in
8594     "$define") xxx_list="qgcvt $xxx_list" ;;
8595     esac
8596     ;;
8597 esac
8598
8599 for xxx_convert in $xxx_list; do
8600         echo "Trying $xxx_convert..."
8601         $rm -f try try$_o
8602         set try -DTRY_$xxx_convert
8603         if eval $compile; then
8604                 echo "$xxx_convert() found." >&4
8605                 if $run ./try; then
8606                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8607                         break;
8608                 else
8609                         echo "...But $xxx_convert didn't work as I expected."
8610                 fi
8611         else
8612                 echo "$xxx_convert NOT found." >&4
8613         fi
8614 done
8615         
8616 case "$xxx_convert" in
8617 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8618 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8619 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8620 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8621    "$define$define$define")
8622       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8623    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8624    esac
8625    ;;  
8626 esac
8627
8628 : see if _fwalk exists
8629 set fwalk d__fwalk
8630 eval $inlibc
8631
8632 : Initialize h_fcntl
8633 h_fcntl=false
8634
8635 : Initialize h_sysfile
8636 h_sysfile=false
8637
8638 : access call always available on UNIX
8639 set access d_access
8640 eval $inlibc
8641
8642 : locate the flags for 'access()'
8643 case "$d_access" in
8644 "$define")
8645         echo " "
8646         $cat >access.c <<'EOCP'
8647 #include <sys/types.h>
8648 #ifdef I_FCNTL
8649 #include <fcntl.h>
8650 #endif
8651 #ifdef I_SYS_FILE
8652 #include <sys/file.h>
8653 #endif
8654 #ifdef I_UNISTD
8655 #include <unistd.h>
8656 #endif
8657 int main() {
8658         exit(R_OK);
8659 }
8660 EOCP
8661         : check sys/file.h first, no particular reason here
8662         if $test `./findhdr sys/file.h` && \
8663                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8664                 h_sysfile=true;
8665                 echo "<sys/file.h> defines the *_OK access constants." >&4
8666         elif $test `./findhdr fcntl.h` && \
8667                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8668                 h_fcntl=true;
8669                 echo "<fcntl.h> defines the *_OK access constants." >&4
8670         elif $test `./findhdr unistd.h` && \
8671                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8672                 echo "<unistd.h> defines the *_OK access constants." >&4
8673         else
8674                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8675         fi
8676         ;;
8677 esac
8678 $rm -f access*
8679
8680 : see if accessx exists
8681 set accessx d_accessx
8682 eval $inlibc
8683
8684 : see if alarm exists
8685 set alarm d_alarm
8686 eval $inlibc
8687
8688 : see if atolf exists
8689 set atolf d_atolf
8690 eval $inlibc
8691
8692 : see if atoll exists
8693 set atoll d_atoll
8694 eval $inlibc
8695
8696 : Look for GNU-cc style attribute checking
8697 echo " "
8698 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8699 $cat >attrib.c <<'EOCP'
8700 #include <stdio.h>
8701 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8702 EOCP
8703 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8704         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8705                 echo "Your C compiler doesn't fully support __attribute__."
8706                 val="$undef"
8707         else
8708                 echo "Your C compiler supports __attribute__."
8709                 val="$define"
8710         fi
8711 else
8712         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8713         val="$undef"
8714 fi
8715 set d_attribut
8716 eval $setvar
8717 $rm -f attrib*
8718
8719 : see if bcmp exists
8720 set bcmp d_bcmp
8721 eval $inlibc
8722
8723 : see if bcopy exists
8724 set bcopy d_bcopy
8725 eval $inlibc
8726
8727 : see if this is a unistd.h system
8728 set unistd.h i_unistd
8729 eval $inhdr
8730
8731 : see if getpgrp exists
8732 set getpgrp d_getpgrp
8733 eval $inlibc
8734
8735 case "$d_getpgrp" in
8736 "$define")
8737         echo " "
8738         echo "Checking to see which flavor of getpgrp is in use..."
8739         $cat >try.c <<EOP
8740 #$i_unistd I_UNISTD
8741 #include <sys/types.h>
8742 #ifdef I_UNISTD
8743 #  include <unistd.h>
8744 #endif
8745 int main()
8746 {
8747         if (getuid() == 0) {
8748                 printf("(I see you are running Configure as super-user...)\n");
8749                 setuid(1);
8750         }
8751 #ifdef TRY_BSD_PGRP
8752         if (getpgrp(1) == 0)
8753                 exit(0);
8754 #else
8755         if (getpgrp() > 0)
8756                 exit(0);
8757 #endif
8758         exit(1);
8759 }
8760 EOP
8761         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8762                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8763                 val="$define"
8764         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8765                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8766                 val="$undef"
8767         else
8768                 echo "I can't seem to compile and run the test program."
8769                 if ./usg; then
8770                         xxx="a USG one, i.e. you use getpgrp()."
8771                 else
8772                         # SVR4 systems can appear rather BSD-ish.
8773                         case "$i_unistd" in
8774                         $undef)
8775                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8776                                 val="$define"
8777                                 ;;
8778                         $define)
8779                                 xxx="probably a USG one, i.e. you use getpgrp()."
8780                                 val="$undef"
8781                                 ;;
8782                         esac
8783                 fi
8784                 echo "Assuming your getpgrp is $xxx" >&4
8785         fi
8786         ;;
8787 *) val="$undef";;
8788 esac
8789 set d_bsdgetpgrp
8790 eval $setvar
8791 $rm -f try try.*
8792
8793 : see if setpgrp exists
8794 set setpgrp d_setpgrp
8795 eval $inlibc
8796
8797 case "$d_setpgrp" in
8798 "$define")
8799         echo " "
8800         echo "Checking to see which flavor of setpgrp is in use..."
8801         $cat >try.c <<EOP
8802 #$i_unistd I_UNISTD
8803 #include <sys/types.h>
8804 #ifdef I_UNISTD
8805 #  include <unistd.h>
8806 #endif
8807 int main()
8808 {
8809         if (getuid() == 0) {
8810                 printf("(I see you are running Configure as super-user...)\n");
8811                 setuid(1);
8812         }
8813 #ifdef TRY_BSD_PGRP
8814         if (-1 == setpgrp(1, 1))
8815                 exit(0);
8816 #else
8817         if (setpgrp() != -1)
8818                 exit(0);
8819 #endif
8820         exit(1);
8821 }
8822 EOP
8823         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8824                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8825                 val="$define"
8826         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8827                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8828                 val="$undef"
8829         else
8830                 echo "(I can't seem to compile and run the test program.)"
8831                 if ./usg; then
8832                         xxx="a USG one, i.e. you use setpgrp()."
8833                 else
8834                         # SVR4 systems can appear rather BSD-ish.
8835                         case "$i_unistd" in
8836                         $undef)
8837                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8838                                 val="$define"
8839                                 ;;
8840                         $define)
8841                                 xxx="probably a USG one, i.e. you use setpgrp()."
8842                                 val="$undef"
8843                                 ;;
8844                         esac
8845                 fi
8846                 echo "Assuming your setpgrp is $xxx" >&4
8847         fi
8848         ;;
8849 *) val="$undef";;
8850 esac
8851 set d_bsdsetpgrp
8852 eval $setvar
8853 $rm -f try try.*
8854 : see if bzero exists
8855 set bzero d_bzero
8856 eval $inlibc
8857
8858 : see if signal is declared as pointer to function returning int or void
8859 echo " "
8860 xxx=`./findhdr signal.h`
8861 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8862 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8863         echo "You have int (*signal())() instead of void." >&4
8864         val="$undef"
8865 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8866         echo "You have void (*signal())()." >&4
8867         val="$define"
8868 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8869         echo "You have int (*signal())() instead of void." >&4
8870         val="$undef"
8871 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8872         echo "You have void (*signal())()." >&4
8873         val="$define"
8874 else
8875         case "$d_voidsig" in
8876         '')
8877         echo "I can't determine whether signal handler returns void or int..." >&4
8878                 dflt=void
8879                 rp="What type does your signal handler return?"
8880                 . ./myread
8881                 case "$ans" in
8882                 v*) val="$define";;
8883                 *) val="$undef";;
8884                 esac;;
8885         "$define")
8886                 echo "As you already told me, signal handler returns void." >&4
8887                 val="$define"
8888                 ;;
8889         *)      echo "As you already told me, signal handler returns int." >&4
8890                 val="$undef"
8891                 ;;
8892         esac
8893 fi
8894 set d_voidsig
8895 eval $setvar
8896 case "$d_voidsig" in
8897 "$define") signal_t="void";;
8898 *) signal_t="int";;
8899 esac
8900 $rm -f $$.tmp
8901
8902 : check for ability to cast large floats to 32-bit ints.
8903 echo " "
8904 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8905 if $test "$intsize" -ge 4; then
8906         xxx=int
8907 else
8908         xxx=long
8909 fi
8910 $cat >try.c <<EOCP
8911 #include <stdio.h>
8912 #include <sys/types.h>
8913 #include <signal.h>
8914 $signal_t blech(s) int s; { exit(3); }
8915 int main()
8916 {
8917         $xxx i32;
8918         double f, g;
8919         int result = 0;
8920         char str[16];
8921         signal(SIGFPE, blech);
8922
8923         /* Don't let compiler optimize the test away.  Store the number 
8924            in a writable string for gcc to pass to sscanf under HP/UX.
8925         */
8926         sprintf(str, "2147483647");
8927         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8928         g = 10 * f;
8929         i32  = ($xxx) g;
8930
8931         /* x86 processors will probably give 0x8000 0000, which is a
8932        sign change.  We don't want that.  We want to mimic SPARC
8933            behavior here, which is to preserve the sign and give
8934            back 0x7fff ffff.
8935         */
8936         if (i32 != ($xxx) f)
8937                 result |= 1;
8938         exit(result);
8939 }
8940 EOCP
8941 set try
8942 if eval $compile_ok; then
8943         $run ./try
8944         yyy=$?
8945 else
8946         echo "(I can't seem to compile the test program--assuming it can't)"
8947         yyy=1
8948 fi
8949 case "$yyy" in
8950 0)      val="$define"
8951         echo "Yup, it can."
8952         ;;
8953 *)      val="$undef"
8954         echo "Nope, it can't."
8955         ;;
8956 esac
8957 set d_casti32
8958 eval $setvar
8959 $rm -f try try.*
8960
8961 : check for ability to cast negative floats to unsigned
8962 echo " "
8963 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8964 $cat >try.c <<EOCP
8965 #include <stdio.h>
8966 #include <sys/types.h>
8967 #include <signal.h>
8968 $signal_t blech(s) int s; { exit(7); }
8969 $signal_t blech_in_list(s) int s; { exit(4); }
8970 unsigned long dummy_long(p) unsigned long p; { return p; }
8971 unsigned int dummy_int(p) unsigned int p; { return p; }
8972 unsigned short dummy_short(p) unsigned short p; { return p; }
8973 int main()
8974 {
8975         double f;
8976         unsigned long along;
8977         unsigned int aint;
8978         unsigned short ashort;
8979         int result = 0;
8980         char str[16];
8981         
8982         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8983            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8984            optimized the whole file away
8985         */
8986         /* Store the number in a writable string for gcc to pass to 
8987            sscanf under HP/UX.
8988         */
8989         sprintf(str, "-123");
8990         sscanf(str, "%lf", &f);  /* f = -123.; */
8991
8992         signal(SIGFPE, blech);
8993         along = (unsigned long)f;
8994         aint = (unsigned int)f;
8995         ashort = (unsigned short)f;
8996         if (along != (unsigned long)-123)
8997                 result |= 1;
8998         if (aint != (unsigned int)-123)
8999                 result |= 1;
9000         if (ashort != (unsigned short)-123)
9001                 result |= 1;
9002         sprintf(str, "1073741824.");
9003         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
9004         f = f + f;
9005         along = 0;
9006         along = (unsigned long)f;
9007         if (along != 0x80000000)
9008                 result |= 2;
9009         f -= 1.;
9010         along = 0;
9011         along = (unsigned long)f;
9012         if (along != 0x7fffffff)
9013                 result |= 1;
9014         f += 2.;
9015         along = 0;
9016         along = (unsigned long)f;
9017         if (along != 0x80000001)
9018                 result |= 2;
9019         if (result)
9020                 exit(result);
9021         signal(SIGFPE, blech_in_list);
9022         sprintf(str, "123.");
9023         sscanf(str, "%lf", &f);  /* f = 123.; */
9024         along = dummy_long((unsigned long)f);
9025         aint = dummy_int((unsigned int)f);
9026         ashort = dummy_short((unsigned short)f);
9027         if (along != (unsigned long)123)
9028                 result |= 4;
9029         if (aint != (unsigned int)123)
9030                 result |= 4;
9031         if (ashort != (unsigned short)123)
9032                 result |= 4;
9033         exit(result);
9034
9035 }
9036 EOCP
9037 set try
9038 if eval $compile_ok; then
9039         $run ./try
9040         castflags=$?
9041 else
9042         echo "(I can't seem to compile the test program--assuming it can't)"
9043         castflags=7
9044 fi
9045 case "$castflags" in
9046 0)      val="$define"
9047         echo "Yup, it can."
9048         ;;
9049 *)      val="$undef"
9050         echo "Nope, it can't."
9051         ;;
9052 esac
9053 set d_castneg
9054 eval $setvar
9055 $rm -f try.*
9056
9057 : see if vprintf exists
9058 echo " "
9059 if set vprintf val -f d_vprintf; eval $csym; $val; then
9060         echo 'vprintf() found.' >&4
9061         val="$define"
9062         $cat >try.c <<'EOF'
9063 #include <varargs.h>
9064
9065 int main() { xxx("foo"); }
9066
9067 xxx(va_alist)
9068 va_dcl
9069 {
9070         va_list args;
9071         char buf[10];
9072
9073         va_start(args);
9074         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9075 }
9076 EOF
9077         set try
9078         if eval $compile && $run ./try; then
9079                 echo "Your vsprintf() returns (int)." >&4
9080                 val2="$undef"
9081         else
9082                 echo "Your vsprintf() returns (char*)." >&4
9083                 val2="$define"
9084         fi
9085 else
9086         echo 'vprintf() NOT found.' >&4
9087                 val="$undef"
9088                 val2="$undef"
9089 fi
9090 $rm -f try try.*
9091 set d_vprintf
9092 eval $setvar
9093 val=$val2
9094 set d_charvspr
9095 eval $setvar
9096
9097 : see if chown exists
9098 set chown d_chown
9099 eval $inlibc
9100
9101 : see if chroot exists
9102 set chroot d_chroot
9103 eval $inlibc
9104
9105 : see if chsize exists
9106 set chsize d_chsize
9107 eval $inlibc
9108
9109 hasstruct='varname=$1; struct=$2; shift; shift;
9110 while $test $# -ge 2; do
9111         case "$1" in
9112         $define) echo "#include <$2>";;
9113         esac ;
9114     shift 2;
9115 done > try.c;
9116 echo "int main () { struct $struct foo; }" >> try.c;
9117 set try;
9118 if eval $compile; then
9119         val="$define";
9120 else
9121         val="$undef";
9122 fi;
9123 set $varname;
9124 eval $setvar;
9125 $rm -f try.c try.o'
9126
9127 : see if sys/types.h has to be included
9128 set sys/types.h i_systypes
9129 eval $inhdr
9130
9131 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9132 while $test $# -ge 2; do
9133         case "$1" in
9134         $define) echo "#include <$2>";;
9135         esac ;
9136     shift 2;
9137 done > try.c;
9138 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9139 set try;
9140 if eval $compile; then
9141         val="$define";
9142 else
9143         val="$undef";
9144 fi;
9145 set $varname;
9146 eval $setvar;
9147 $rm -f try.c try.o'
9148
9149 socketlib=''
9150 sockethdr=''
9151 : see whether socket exists
9152 echo " "
9153 $echo $n "Hmm... $c" >&4
9154 if set socket val -f d_socket; eval $csym; $val; then
9155         echo "Looks like you have Berkeley networking support." >&4
9156         d_socket="$define"
9157         if set setsockopt val -f; eval $csym; $val; then
9158                 d_oldsock="$undef"
9159         else
9160                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9161                 d_oldsock="$define"
9162         fi
9163 else
9164         if $contains socklib libc.list >/dev/null 2>&1; then
9165                 echo "Looks like you have Berkeley networking support." >&4
9166                 d_socket="$define"
9167                 : we will have to assume that it supports the 4.2 BSD interface
9168                 d_oldsock="$undef"
9169         else
9170                 echo "You don't have Berkeley networking in libc$_a..." >&4
9171                 if test "X$d_socket" = "X$define"; then
9172                    echo "...but you seem to believe that you have sockets." >&4
9173                 else
9174                         for net in net socket
9175                         do
9176                                 if test -f /usr/lib/lib$net$_a; then
9177                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9178                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9179                                         if $contains socket libc.list >/dev/null 2>&1; then
9180                                                 d_socket="$define"
9181                                                 socketlib="-l$net"
9182                                                 case "$net" in
9183                                                 net)
9184                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9185                                                         sockethdr="-I/usr/netinclude"
9186                                                         ;;
9187                                                 esac
9188                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9189                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9190                                                         d_oldsock="$undef"
9191                                                 else
9192                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9193                                                         d_oldsock="$define"
9194                                                 fi
9195                                                 break
9196                                         fi
9197                                 fi
9198                         done
9199                         if test "X$d_socket" != "X$define"; then
9200                            echo "or anywhere else I see." >&4
9201                            d_socket="$undef"
9202                            d_oldsock="$undef"
9203                         fi
9204                 fi
9205         fi
9206 fi
9207
9208 : see if socketpair exists
9209 set socketpair d_sockpair
9210 eval $inlibc
9211
9212
9213 echo " "
9214 echo "Checking the availability of certain socket constants..." >& 4
9215 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9216         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9217         $cat >try.c <<EOF
9218 #include <sys/types.h>
9219 #include <sys/socket.h>
9220 int main() {
9221     int i = $ENUM;
9222 }
9223 EOF
9224         val="$undef"
9225         set try; if eval $compile; then
9226                 val="$define"
9227         fi
9228         set d_${enum}; eval $setvar
9229         $rm -f try.c try
9230 done
9231
9232 : see if this is a sys/uio.h system
9233 set sys/uio.h i_sysuio
9234 eval $inhdr
9235
9236
9237 echo " "
9238 echo "Checking to see if your system supports struct cmsghdr..." >&4
9239 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9240 eval $hasstruct
9241 case "$d_cmsghdr_s" in
9242 "$define")      echo "Yes, it does."   ;;
9243 *)              echo "No, it doesn't." ;;
9244 esac
9245
9246
9247 : check for const keyword
9248 echo " "
9249 echo 'Checking to see if your C compiler knows about "const"...' >&4
9250 $cat >const.c <<'EOCP'
9251 typedef struct spug { int drokk; } spug;
9252 int main()
9253 {
9254         const char *foo;
9255         const spug y;
9256 }
9257 EOCP
9258 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9259         val="$define"
9260         echo "Yup, it does."
9261 else
9262         val="$undef"
9263         echo "Nope, it doesn't."
9264 fi
9265 set d_const
9266 eval $setvar
9267
9268 : see if crypt exists
9269 echo " "
9270 if set crypt val -f d_crypt; eval $csym; $val; then
9271         echo 'crypt() found.' >&4
9272         val="$define"
9273         cryptlib=''
9274 else
9275         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9276         if $test -z "$cryptlib"; then
9277                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9278         else
9279                 cryptlib=-lcrypt
9280         fi
9281         if $test -z "$cryptlib"; then
9282                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9283         else
9284                 cryptlib=-lcrypt
9285         fi
9286         if $test -z "$cryptlib"; then
9287                 cryptlib=`./loc libcrypt$_a "" $libpth`
9288         else
9289                 cryptlib=-lcrypt
9290         fi
9291         if $test -z "$cryptlib"; then
9292                 echo 'crypt() NOT found.' >&4
9293                 val="$undef"
9294         else
9295                 val="$define"
9296         fi
9297 fi
9298 set d_crypt
9299 eval $setvar
9300
9301 : get csh whereabouts
9302 case "$csh" in
9303 'csh') val="$undef" ;;
9304 *) val="$define" ;;
9305 esac
9306 set d_csh
9307 eval $setvar
9308 : Respect a hint or command line value for full_csh.
9309 case "$full_csh" in
9310 '') full_csh=$csh ;;
9311 esac
9312
9313 : see if cuserid exists
9314 set cuserid d_cuserid
9315 eval $inlibc
9316
9317 : see if this is a limits.h system
9318 set limits.h i_limits
9319 eval $inhdr
9320
9321 : see if this is a float.h system
9322 set float.h i_float
9323 eval $inhdr
9324
9325 : See if number of significant digits in a double precision number is known
9326 echo " "
9327 $cat >dbl_dig.c <<EOM
9328 #$i_limits I_LIMITS
9329 #$i_float I_FLOAT
9330 #ifdef I_LIMITS
9331 #include <limits.h>
9332 #endif
9333 #ifdef I_FLOAT
9334 #include <float.h>
9335 #endif
9336 #ifdef DBL_DIG
9337 printf("Contains DBL_DIG");
9338 #endif
9339 EOM
9340 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9341 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9342         echo "DBL_DIG found." >&4
9343         val="$define"
9344 else
9345         echo "DBL_DIG NOT found." >&4
9346         val="$undef"
9347 fi
9348 $rm -f dbl_dig.?
9349 set d_dbl_dig
9350 eval $setvar
9351
9352 hasproto='varname=$1; func=$2; shift; shift;
9353 while $test $# -ge 2; do
9354         case "$1" in
9355         $define) echo "#include <$2>";;
9356         esac ;
9357     shift 2;
9358 done > try.c;
9359 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9360 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9361         echo "$func() prototype found.";
9362         val="$define";
9363 else
9364         echo "$func() prototype NOT found.";
9365         val="$undef";
9366 fi;
9367 set $varname;
9368 eval $setvar;
9369 $rm -f try.c tryout.c'
9370
9371 : see if dbm.h is available
9372 : see if dbmclose exists
9373 set dbmclose d_dbmclose
9374 eval $inlibc
9375
9376 case "$d_dbmclose" in
9377 $define)
9378         set dbm.h i_dbm
9379         eval $inhdr
9380         case "$i_dbm" in
9381         $define)
9382                 val="$undef"
9383                 set i_rpcsvcdbm
9384                 eval $setvar
9385                 ;;
9386         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9387                 eval $inhdr
9388                 ;;
9389         esac
9390         ;;
9391 *)      echo "We won't be including <dbm.h>"
9392         val="$undef"
9393         set i_dbm
9394         eval $setvar
9395         val="$undef"
9396         set i_rpcsvcdbm
9397         eval $setvar
9398         ;;
9399 esac
9400
9401 : see if prototype for dbminit is available
9402 echo " "
9403 set d_dbminitproto dbminit $i_dbm dbm.h
9404 eval $hasproto
9405
9406 : see if difftime exists
9407 set difftime d_difftime
9408 eval $inlibc
9409
9410 : see if this is a dirent system
9411 echo " "
9412 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9413         val="$define"
9414         echo "<dirent.h> found." >&4
9415 else
9416         val="$undef"
9417         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9418                 echo "<sys/dir.h> found." >&4
9419                 echo " "
9420         else
9421                 xinc=`./findhdr sys/ndir.h`
9422         fi
9423         echo "<dirent.h> NOT found." >&4
9424 fi
9425 set i_dirent
9426 eval $setvar
9427
9428 : Look for type of directory structure.
9429 echo " "
9430 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9431
9432 case "$direntrytype" in
9433 ''|' ')
9434         case "$i_dirent" in
9435         $define) guess1='struct dirent' ;;
9436         *) guess1='struct direct'  ;;
9437         esac
9438         ;;
9439 *)      guess1="$direntrytype"
9440         ;;
9441 esac
9442
9443 case "$guess1" in
9444 'struct dirent') guess2='struct direct' ;;
9445 *) guess2='struct dirent' ;;
9446 esac
9447                 
9448 if $contains "$guess1" try.c >/dev/null 2>&1; then
9449         direntrytype="$guess1"
9450         echo "Your directory entries are $direntrytype." >&4
9451 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9452         direntrytype="$guess2"
9453         echo "Your directory entries seem to be $direntrytype." >&4
9454 else
9455         echo "I don't recognize your system's directory entries." >&4
9456         rp="What type is used for directory entries on this system?"
9457         dflt="$guess1"
9458         . ./myread
9459         direntrytype="$ans"
9460 fi
9461 $rm -f try.c
9462
9463
9464 : see if the directory entry stores field length
9465 echo " "
9466 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9467 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9468         echo "Good, your directory entry keeps length information in d_namlen." >&4
9469         val="$define"
9470 else
9471         echo "Your directory entry does not know about the d_namlen field." >&4
9472         val="$undef"
9473 fi
9474 set d_dirnamlen
9475 eval $setvar
9476 $rm -f try.c
9477
9478 : see if dlerror exists
9479 xxx_runnm="$runnm"
9480 runnm=false
9481 set dlerror d_dlerror
9482 eval $inlibc
9483 runnm="$xxx_runnm"
9484
9485 : see if dlfcn is available
9486 set dlfcn.h i_dlfcn
9487 eval $inhdr
9488
9489 case "$usedl" in
9490 $define|y|true)
9491         $cat << EOM
9492
9493 On a few systems, the dynamically loaded modules that perl generates and uses
9494 will need a different extension than shared libs. The default will probably
9495 be appropriate.
9496
9497 EOM
9498         case "$dlext" in
9499         '')     dflt="$so" ;;
9500         *)      dflt="$dlext" ;;
9501         esac
9502         rp='What is the extension of dynamically loaded modules'
9503         . ./myread
9504         dlext="$ans"
9505         ;;
9506 *)
9507         dlext="none"
9508         ;;
9509 esac
9510
9511 : Check if dlsym need a leading underscore
9512 echo " "
9513 val="$undef"
9514
9515 case "$dlsrc" in
9516 dl_dlopen.xs)
9517         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9518         $cat >dyna.c <<'EOM'
9519 fred () { }
9520 EOM
9521
9522 $cat >fred.c<<EOM
9523
9524 #include <stdio.h>
9525 #$i_dlfcn I_DLFCN
9526 #ifdef I_DLFCN
9527 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9528 #else
9529 #include <sys/types.h>
9530 #include <nlist.h>
9531 #include <link.h>
9532 #endif
9533
9534 extern int fred() ;
9535
9536 int main()
9537 {
9538     void * handle ;
9539     void * symbol ;
9540 #ifndef RTLD_LAZY
9541     int mode = 1 ;
9542 #else
9543     int mode = RTLD_LAZY ;
9544 #endif
9545     handle = dlopen("./dyna.$dlext", mode) ;
9546     if (handle == NULL) {
9547         printf ("1\n") ;
9548         fflush (stdout) ;
9549         exit(0);
9550     }
9551     symbol = dlsym(handle, "fred") ;
9552     if (symbol == NULL) {
9553         /* try putting a leading underscore */
9554         symbol = dlsym(handle, "_fred") ;
9555         if (symbol == NULL) {
9556             printf ("2\n") ;
9557             fflush (stdout) ;
9558             exit(0);
9559         }
9560         printf ("3\n") ;
9561     }
9562     else
9563         printf ("4\n") ;
9564     fflush (stdout) ;
9565     exit(0);
9566 }
9567 EOM
9568         : Call the object file tmp-dyna.o in case dlext=o.
9569         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9570                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9571                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9572                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9573                 xxx=`$run ./fred`
9574                 case $xxx in
9575                 1)      echo "Test program failed using dlopen." >&4
9576                         echo "Perhaps you should not use dynamic loading." >&4;;
9577                 2)      echo "Test program failed using dlsym." >&4
9578                         echo "Perhaps you should not use dynamic loading." >&4;;
9579                 3)      echo "dlsym needs a leading underscore" >&4
9580                         val="$define" ;;
9581                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9582                 esac
9583         else
9584                 echo "I can't compile and run the test program." >&4
9585                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9586         fi
9587         ;;
9588 esac
9589                 
9590 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9591
9592 set d_dlsymun
9593 eval $setvar
9594
9595 : see if prototype for drand48 is available
9596 echo " "
9597 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9598 eval $hasproto
9599
9600 : see if dup2 exists
9601 set dup2 d_dup2
9602 eval $inlibc
9603
9604 : see if eaccess exists
9605 set eaccess d_eaccess
9606 eval $inlibc
9607
9608 : see if endgrent exists
9609 set endgrent d_endgrent
9610 eval $inlibc
9611
9612 : see if endhostent exists
9613 set endhostent d_endhent
9614 eval $inlibc
9615
9616 : see if endnetent exists
9617 set endnetent d_endnent
9618 eval $inlibc
9619
9620 : see if endprotoent exists
9621 set endprotoent d_endpent
9622 eval $inlibc
9623
9624 : see if endpwent exists
9625 set endpwent d_endpwent
9626 eval $inlibc
9627
9628 : see if endservent exists
9629 set endservent d_endsent
9630 eval $inlibc
9631
9632 : Locate the flags for 'open()'
9633 echo " "
9634 $cat >try.c <<'EOCP'
9635 #include <sys/types.h>
9636 #ifdef I_FCNTL
9637 #include <fcntl.h>
9638 #endif
9639 #ifdef I_SYS_FILE
9640 #include <sys/file.h>
9641 #endif
9642 int main() {
9643         if(O_RDONLY);
9644 #ifdef O_TRUNC
9645         exit(0);
9646 #else
9647         exit(1);
9648 #endif
9649 }
9650 EOCP
9651 : check sys/file.h first to get FREAD on Sun
9652 if $test `./findhdr sys/file.h` && \
9653                 set try -DI_SYS_FILE && eval $compile; then
9654         h_sysfile=true;
9655         echo "<sys/file.h> defines the O_* constants..." >&4
9656         if $run ./try; then
9657                 echo "and you have the 3 argument form of open()." >&4
9658                 val="$define"
9659         else
9660                 echo "but not the 3 argument form of open().  Oh, well." >&4
9661                 val="$undef"
9662         fi
9663 elif $test `./findhdr fcntl.h` && \
9664                 set try -DI_FCNTL && eval $compile; then
9665         h_fcntl=true;
9666         echo "<fcntl.h> defines the O_* constants..." >&4
9667         if $run ./try; then
9668                 echo "and you have the 3 argument form of open()." >&4
9669                 val="$define"
9670         else
9671                 echo "but not the 3 argument form of open().  Oh, well." >&4
9672                 val="$undef"
9673         fi
9674 else
9675         val="$undef"
9676         echo "I can't find the O_* constant definitions!  You got problems." >&4
9677 fi
9678 set d_open3
9679 eval $setvar
9680 $rm -f try try.*
9681
9682 : see which of string.h or strings.h is needed
9683 echo " "
9684 strings=`./findhdr string.h`
9685 if $test "$strings" && $test -r "$strings"; then
9686         echo "Using <string.h> instead of <strings.h>." >&4
9687         val="$define"
9688 else
9689         val="$undef"
9690         strings=`./findhdr strings.h`
9691         if $test "$strings" && $test -r "$strings"; then
9692                 echo "Using <strings.h> instead of <string.h>." >&4
9693         else
9694                 echo "No string header found -- You'll surely have problems." >&4
9695         fi
9696 fi
9697 set i_string
9698 eval $setvar
9699 case "$i_string" in
9700 "$undef") strings=`./findhdr strings.h`;;
9701 *)        strings=`./findhdr string.h`;;
9702 esac
9703
9704 : check for non-blocking I/O stuff
9705 case "$h_sysfile" in
9706 true) echo "#include <sys/file.h>" > head.c;;
9707 *)
9708        case "$h_fcntl" in
9709        true) echo "#include <fcntl.h>" > head.c;;
9710        *) echo "#include <sys/fcntl.h>" > head.c;;
9711        esac
9712        ;;
9713 esac
9714 echo " "
9715 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9716 case "$o_nonblock" in
9717 '')
9718         $cat head.c > try.c
9719         $cat >>try.c <<'EOCP'
9720 #include <stdio.h>
9721 #include <stdlib.h>
9722 int main() {
9723 #ifdef O_NONBLOCK
9724         printf("O_NONBLOCK\n");
9725         exit(0);
9726 #endif
9727 #ifdef O_NDELAY
9728         printf("O_NDELAY\n");
9729         exit(0);
9730 #endif
9731 #ifdef FNDELAY
9732         printf("FNDELAY\n");
9733         exit(0);
9734 #endif
9735         exit(0);
9736 }
9737 EOCP
9738         set try
9739         if eval $compile_ok; then
9740                 o_nonblock=`$run ./try`
9741                 case "$o_nonblock" in
9742                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9743                 *) echo "Seems like we can use $o_nonblock.";;
9744                 esac
9745         else
9746                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9747         fi
9748         ;;
9749 *) echo "Using $hint value $o_nonblock.";;
9750 esac
9751 $rm -f try try.* .out core
9752
9753 echo " "
9754 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9755 case "$eagain" in
9756 '')
9757         $cat head.c > try.c
9758         $cat >>try.c <<EOCP
9759 #include <errno.h>
9760 #include <sys/types.h>
9761 #include <signal.h>
9762 #include <stdio.h> 
9763 #include <stdlib.h> 
9764 #define MY_O_NONBLOCK $o_nonblock
9765 #ifndef errno  /* XXX need better Configure test */
9766 extern int errno;
9767 #endif
9768 #$i_unistd I_UNISTD
9769 #ifdef I_UNISTD
9770 #include <unistd.h>
9771 #endif
9772 #$i_string I_STRING
9773 #ifdef I_STRING
9774 #include <string.h>
9775 #else
9776 #include <strings.h>
9777 #endif
9778 $signal_t blech(x) int x; { exit(3); }
9779 EOCP
9780         $cat >> try.c <<'EOCP'
9781 int main()
9782 {
9783         int pd[2];
9784         int pu[2];
9785         char buf[1];
9786         char string[100];
9787
9788         pipe(pd);       /* Down: child -> parent */
9789         pipe(pu);       /* Up: parent -> child */
9790         if (0 != fork()) {
9791                 int ret;
9792                 close(pd[1]);   /* Parent reads from pd[0] */
9793                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9794 #ifdef F_SETFL
9795                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9796                         exit(1);
9797 #else
9798                 exit(4);
9799 #endif
9800                 signal(SIGALRM, blech);
9801                 alarm(5);
9802                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9803                         exit(2);
9804                 sprintf(string, "%d\n", ret);
9805                 write(2, string, strlen(string));
9806                 alarm(0);
9807 #ifdef EAGAIN
9808                 if (errno == EAGAIN) {
9809                         printf("EAGAIN\n");
9810                         goto ok;
9811                 }
9812 #endif
9813 #ifdef EWOULDBLOCK
9814                 if (errno == EWOULDBLOCK)
9815                         printf("EWOULDBLOCK\n");
9816 #endif
9817         ok:
9818                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9819                 sleep(2);                               /* Give it time to close our pipe */
9820                 alarm(5);
9821                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9822                 alarm(0);
9823                 sprintf(string, "%d\n", ret);
9824                 write(3, string, strlen(string));
9825                 exit(0);
9826         }
9827
9828         close(pd[0]);                   /* We write to pd[1] */
9829         close(pu[1]);                   /* We read from pu[0] */
9830         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9831         close(pd[1]);                   /* Pipe pd is now fully closed! */
9832         exit(0);                                /* Bye bye, thank you for playing! */
9833 }
9834 EOCP
9835         set try
9836         if eval $compile_ok; then
9837                 echo "$startsh" >mtry
9838                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9839                 chmod +x mtry
9840                 ./mtry >/dev/null 2>&1
9841                 case $? in
9842                 0) eagain=`$cat try.out`;;
9843                 1) echo "Could not perform non-blocking setting!";;
9844                 2) echo "I did a successful read() for something that was not there!";;
9845                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9846                 4) echo "Could not find F_SETFL!";;
9847                 *) echo "Something terribly wrong happened during testing.";;
9848                 esac
9849                 rd_nodata=`$cat try.ret`
9850                 echo "A read() system call with no data present returns $rd_nodata."
9851                 case "$rd_nodata" in
9852                 0|-1) ;;
9853                 *)
9854                         echo "(That's peculiar, fixing that to be -1.)"
9855                         rd_nodata=-1
9856                         ;;
9857                 esac
9858                 case "$eagain" in
9859                 '')
9860                         echo "Forcing errno EAGAIN on read() with no data available."
9861                         eagain=EAGAIN
9862                         ;;
9863                 *)
9864                         echo "Your read() sets errno to $eagain when no data is available."
9865                         ;;
9866                 esac
9867                 status=`$cat try.err`
9868                 case "$status" in
9869                 0) echo "And it correctly returns 0 to signal EOF.";;
9870                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9871                 *) echo "However, your read() returns '$status' on EOF??";;
9872                 esac
9873                 val="$define"
9874                 if test "$status" = "$rd_nodata"; then
9875                         echo "WARNING: you can't distinguish between EOF and no data!"
9876                         val="$undef"
9877                 fi
9878         else
9879                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9880                 eagain=EAGAIN
9881         fi
9882         set d_eofnblk
9883         eval $setvar
9884         ;;
9885 *)
9886         echo "Using $hint value $eagain."
9887         echo "Your read() returns $rd_nodata when no data is present."
9888         case "$d_eofnblk" in
9889         "$define") echo "And you can see EOF because read() returns 0.";;
9890         "$undef") echo "But you can't see EOF status from read() returned value.";;
9891         *)
9892                 echo "(Assuming you can't see EOF status from read anyway.)"
9893                 d_eofnblk=$undef
9894                 ;;
9895         esac
9896         ;;
9897 esac
9898 $rm -f try try.* .out core head.c mtry
9899
9900 : see if fchdir exists
9901 set fchdir d_fchdir
9902 eval $inlibc
9903
9904 : see if fchmod exists
9905 set fchmod d_fchmod
9906 eval $inlibc
9907
9908 : see if fchown exists
9909 set fchown d_fchown
9910 eval $inlibc
9911
9912 : see if this is an fcntl system
9913 set fcntl d_fcntl
9914 eval $inlibc
9915
9916 echo " "
9917 : See if fcntl-based locking works.
9918 $cat >try.c <<EOCP
9919 #include <stdlib.h>
9920 #include <unistd.h>
9921 #include <fcntl.h>
9922 #include <signal.h>
9923 $signal_t blech(x) int x; { exit(3); }
9924 int main() {
9925 #if defined(F_SETLK) && defined(F_SETLKW)
9926      struct flock flock;
9927      int retval, fd;
9928      fd = open("try.c", O_RDONLY);
9929      flock.l_type = F_RDLCK;
9930      flock.l_whence = SEEK_SET;
9931      flock.l_start = flock.l_len = 0;
9932      signal(SIGALRM, blech);
9933      alarm(10);
9934      retval = fcntl(fd, F_SETLK, &flock);
9935      close(fd);
9936      (retval < 0 ? exit(2) : exit(0));
9937 #else
9938      exit(2);
9939 #endif
9940 }
9941 EOCP
9942 echo "Checking if fcntl-based file locking works... "
9943 case "$d_fcntl" in
9944 "$define")
9945         set try
9946         if eval $compile_ok; then
9947                 if $run ./try; then
9948                         echo "Yes, it seems to work."
9949                         val="$define"
9950                 else
9951                         echo "Nope, it didn't work."
9952                         val="$undef"
9953                         case "$?" in
9954                         3) $cat >&4 <<EOM
9955 ***
9956 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9957 *** This is (almost) impossible.
9958 *** If your NFS lock daemons are not feeling well, something like
9959 *** this may happen, please investigate.  Cannot continue, aborting.
9960 ***
9961 EOM
9962                                 exit 1
9963                                 ;;
9964                         esac
9965                 fi
9966         else
9967                 echo "I'm unable to compile the test program, so I'll assume not."
9968                 val="$undef"
9969         fi
9970         ;;
9971 *) val="$undef";
9972         echo "Nope, since you don't even have fcntl()."
9973         ;;
9974 esac
9975 set d_fcntl_can_lock
9976 eval $setvar
9977 $rm -f try*
9978
9979
9980 : see if sys/select.h has to be included
9981 set sys/select.h i_sysselct
9982 eval $inhdr
9983
9984 : see if we should include time.h, sys/time.h, or both
9985 echo " "
9986 if test "X$timeincl" = X; then
9987         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9988         $echo $n "I'm now running the test program...$c"
9989         $cat >try.c <<'EOCP'
9990 #include <sys/types.h>
9991 #ifdef I_TIME
9992 #include <time.h>
9993 #endif
9994 #ifdef I_SYSTIME
9995 #ifdef SYSTIMEKERNEL
9996 #define KERNEL
9997 #endif
9998 #include <sys/time.h>
9999 #endif
10000 #ifdef I_SYSSELECT
10001 #include <sys/select.h>
10002 #endif
10003 int main()
10004 {
10005         struct tm foo;
10006 #ifdef S_TIMEVAL
10007         struct timeval bar;
10008 #endif
10009 #ifdef S_TIMEZONE
10010         struct timezone tzp;
10011 #endif
10012         if (foo.tm_sec == foo.tm_sec)
10013                 exit(0);
10014 #ifdef S_TIMEVAL
10015         if (bar.tv_sec == bar.tv_sec)
10016                 exit(0);
10017 #endif
10018         exit(1);
10019 }
10020 EOCP
10021         flags=''
10022         for s_timezone in '-DS_TIMEZONE' ''; do
10023         sysselect=''
10024         for s_timeval in '-DS_TIMEVAL' ''; do
10025         for i_systimek in '' '-DSYSTIMEKERNEL'; do
10026         for i_time in '' '-DI_TIME'; do
10027         for i_systime in '-DI_SYSTIME' ''; do
10028                 case "$flags" in
10029                 '') $echo $n ".$c"
10030                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
10031                         if eval $compile; then
10032                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
10033                                 shift
10034                                 flags="$*"
10035                                 echo " "
10036                                 $echo $n "Succeeded with $flags$c"
10037                         fi
10038                         ;;
10039                 esac
10040         done
10041         done
10042         done
10043         done
10044         done
10045         timeincl=''
10046         echo " "
10047         case "$flags" in
10048         *SYSTIMEKERNEL*) i_systimek="$define"
10049                 timeincl=`./findhdr sys/time.h`
10050                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10051         *) i_systimek="$undef";;
10052         esac
10053         case "$flags" in
10054         *I_TIME*) i_time="$define"
10055                 timeincl=`./findhdr time.h`" $timeincl"
10056                 echo "We'll include <time.h>." >&4;;
10057         *) i_time="$undef";;
10058         esac
10059         case "$flags" in
10060         *I_SYSTIME*) i_systime="$define"
10061                 timeincl=`./findhdr sys/time.h`" $timeincl"
10062                 echo "We'll include <sys/time.h>." >&4;;
10063         *) i_systime="$undef";;
10064         esac
10065         $rm -f try.c try
10066 fi
10067
10068 : check for fd_set items
10069 $cat <<EOM
10070
10071 Checking to see how well your C compiler handles fd_set and friends ...
10072 EOM
10073 $cat >try.c <<EOCP
10074 #$i_systime I_SYS_TIME
10075 #$i_sysselct I_SYS_SELECT
10076 #$d_socket HAS_SOCKET
10077 #include <sys/types.h>
10078 #ifdef HAS_SOCKET
10079 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10080 #endif
10081 #ifdef I_SYS_TIME
10082 #include <sys/time.h>
10083 #endif
10084 #ifdef I_SYS_SELECT
10085 #include <sys/select.h>
10086 #endif
10087 int main() {
10088         fd_set fds;
10089
10090 #ifdef TRYBITS
10091         if(fds.fds_bits);
10092 #endif
10093
10094 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10095         exit(0);
10096 #else
10097         exit(1);
10098 #endif
10099 }
10100 EOCP
10101 set try -DTRYBITS
10102 if eval $compile; then
10103         d_fds_bits="$define"
10104         d_fd_set="$define"
10105         echo "Well, your system knows about the normal fd_set typedef..." >&4
10106         if $run ./try; then
10107                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10108                 d_fd_macros="$define"
10109         else
10110                 $cat >&4 <<'EOM'
10111 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10112 EOM
10113                 d_fd_macros="$undef"
10114         fi
10115 else
10116         $cat <<'EOM'
10117 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10118 EOM
10119         set try
10120         if eval $compile; then
10121                 d_fds_bits="$undef"
10122                 d_fd_set="$define"
10123                 echo "Well, your system has some sort of fd_set available..." >&4
10124                 if $run ./try; then
10125                         echo "and you have the normal fd_set macros." >&4
10126                         d_fd_macros="$define"
10127                 else
10128                         $cat <<'EOM'
10129 but not the normal fd_set macros!  Gross!  More work for me...
10130 EOM
10131                         d_fd_macros="$undef"
10132                 fi
10133         else
10134         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10135                 d_fd_set="$undef"
10136                 d_fds_bits="$undef"
10137                 d_fd_macros="$undef"
10138         fi
10139 fi
10140 $rm -f try try.*
10141
10142 : see if fgetpos exists
10143 set fgetpos d_fgetpos
10144 eval $inlibc
10145
10146 : see if flock exists
10147 set flock d_flock
10148 eval $inlibc
10149
10150 : see if this is a sys/file.h system
10151 val=''
10152 set sys/file.h val
10153 eval $inhdr
10154
10155 : do we need to include sys/file.h ?
10156 case "$val" in
10157 "$define")
10158         echo " "
10159         if $h_sysfile; then
10160                 val="$define"
10161                 echo "We'll be including <sys/file.h>." >&4
10162         else
10163                 val="$undef"
10164                 echo "We won't be including <sys/file.h>." >&4
10165         fi
10166         ;;
10167 *)
10168         h_sysfile=false
10169         ;;
10170 esac
10171 set i_sysfile
10172 eval $setvar
10173
10174 : see if prototype for flock is available
10175 echo " "
10176 set d_flockproto flock $i_sysfile sys/file.h
10177 eval $hasproto
10178
10179 : see if fork exists
10180 set fork d_fork
10181 eval $inlibc
10182
10183 : see if pathconf exists
10184 set pathconf d_pathconf
10185 eval $inlibc
10186
10187 : see if fpathconf exists
10188 set fpathconf d_fpathconf
10189 eval $inlibc
10190
10191
10192 : check for fpos64_t
10193 echo " "
10194 echo "Checking to see if you have fpos64_t..." >&4
10195 $cat >try.c <<EOCP
10196 #include <stdio.h>
10197 int main() { fpos64_t x = 7; }
10198 EOCP
10199 set try
10200 if eval $compile; then
10201         val="$define"
10202         echo "You have fpos64_t."
10203 else
10204         val="$undef"
10205         echo "You do not have fpos64_t."
10206         case "$fpossize" in
10207         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10208         esac
10209 fi
10210 $rm -f try.* try
10211 set d_fpos64_t
10212 eval $setvar
10213
10214 : see if frexpl exists
10215 set frexpl d_frexpl
10216 eval $inlibc
10217
10218 : see if this is a sys/param system
10219 set sys/param.h i_sysparam
10220 eval $inhdr
10221
10222 : see if this is a sys/mount.h system
10223 set sys/mount.h i_sysmount
10224 eval $inhdr
10225
10226
10227 echo " "
10228 echo "Checking to see if your system supports struct fs_data..." >&4
10229 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10230 eval $hasstruct
10231 case "$d_fs_data_s" in
10232 "$define")      echo "Yes, it does."   ;;
10233 *)              echo "No, it doesn't." ;;
10234 esac
10235
10236 : see if fseeko exists
10237 set fseeko d_fseeko
10238 eval $inlibc
10239 case "$longsize" in
10240 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10241 esac
10242
10243 : see if fsetpos exists
10244 set fsetpos d_fsetpos
10245 eval $inlibc
10246
10247
10248 : see if fstatfs exists
10249 set fstatfs d_fstatfs
10250 eval $inlibc
10251
10252
10253 : see if statvfs exists
10254 set statvfs d_statvfs
10255 eval $inlibc
10256
10257 : see if fstatvfs exists
10258 set fstatvfs d_fstatvfs
10259 eval $inlibc
10260
10261
10262 : see if fsync exists
10263 set fsync d_fsync
10264 eval $inlibc
10265
10266 : see if ftello exists
10267 set ftello d_ftello
10268 eval $inlibc
10269 case "$longsize" in
10270 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10271 esac
10272
10273 : see if getcwd exists
10274 set getcwd d_getcwd
10275 eval $inlibc
10276
10277 : see if getespwnam exists
10278 set getespwnam d_getespwnam
10279 eval $inlibc
10280
10281
10282 : see if getfsstat exists
10283 set getfsstat d_getfsstat
10284 eval $inlibc
10285
10286 : see if getgrent exists
10287 set getgrent d_getgrent
10288 eval $inlibc
10289
10290 : see if gethostbyaddr exists
10291 set gethostbyaddr d_gethbyaddr
10292 eval $inlibc
10293
10294 : see if gethostbyname exists
10295 set gethostbyname d_gethbyname
10296 eval $inlibc
10297
10298 : see if gethostent exists
10299 set gethostent d_gethent
10300 eval $inlibc
10301
10302 : see how we will look up host name
10303 echo " "
10304 call=''
10305 if set gethostname val -f d_gethname; eval $csym; $val; then
10306         echo 'gethostname() found.' >&4
10307         d_gethname="$define"
10308         call=gethostname
10309 fi
10310 if set uname val -f d_uname; eval $csym; $val; then
10311         if ./xenix; then
10312                 $cat <<'EOM'
10313 uname() was found, but you're running xenix, and older versions of xenix
10314 have a broken uname(). If you don't really know whether your xenix is old
10315 enough to have a broken system call, use the default answer.
10316
10317 EOM
10318                 dflt=y
10319                 case "$d_uname" in
10320                 "$define") dflt=n;;
10321                 esac
10322                 rp='Is your uname() broken?'
10323                 . ./myread
10324                 case "$ans" in
10325                 n*) d_uname="$define"; call=uname;;
10326                 esac
10327         else
10328                 echo 'uname() found.' >&4
10329                 d_uname="$define"
10330                 case "$call" in
10331                 '') call=uname ;;
10332                 esac
10333         fi
10334 fi
10335 case "$d_gethname" in
10336 '') d_gethname="$undef";;
10337 esac
10338 case "$d_uname" in
10339 '') d_uname="$undef";;
10340 esac
10341 case "$d_uname$d_gethname" in
10342 *define*)
10343         dflt=n
10344         cat <<EOM
10345  
10346 Every now and then someone has a $call() that lies about the hostname
10347 but can't be fixed for political or economic reasons.  If you wish, I can
10348 pretend $call() isn't there and maybe compute hostname at run-time
10349 thanks to the '$phostname' command.
10350
10351 EOM
10352         rp="Shall I ignore $call() from now on?"
10353         . ./myread
10354         case "$ans" in
10355         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10356         esac;;
10357 esac
10358 case "$phostname" in
10359 '') aphostname='';;
10360 *) case "$aphostname" in
10361         /*) ;;
10362         *) set X $phostname
10363                 shift
10364                 file=$1
10365                 shift
10366                 file=`./loc $file $file $pth`
10367                 aphostname=`echo $file $*`
10368                 ;;
10369         esac
10370         ;;
10371 esac
10372 case "$d_uname$d_gethname" in
10373 *define*) ;;
10374 *)
10375         case "$phostname" in
10376         '')
10377                 echo "There will be no way for $package to get your hostname." >&4;;
10378         *)
10379         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10380                 ;;
10381         esac;;
10382 esac
10383 case "$d_phostname" in
10384 '') d_phostname="$undef";;
10385 esac
10386
10387 : see if this is a netdb.h system
10388 set netdb.h i_netdb
10389 eval $inhdr
10390
10391 : see if prototypes for various gethostxxx netdb.h functions are available
10392 echo " "
10393 set d_gethostprotos gethostent $i_netdb netdb.h
10394 eval $hasproto
10395
10396 : see if getitimer exists
10397 set getitimer d_getitimer
10398 eval $inlibc
10399
10400 : see if getlogin exists
10401 set getlogin d_getlogin
10402 eval $inlibc
10403
10404 : see if getmnt exists
10405 set getmnt d_getmnt
10406 eval $inlibc
10407
10408 : see if getmntent exists
10409 set getmntent d_getmntent
10410 eval $inlibc
10411
10412 : see if getnetbyaddr exists
10413 set getnetbyaddr d_getnbyaddr
10414 eval $inlibc
10415
10416 : see if getnetbyname exists
10417 set getnetbyname d_getnbyname
10418 eval $inlibc
10419
10420 : see if getnetent exists
10421 set getnetent d_getnent
10422 eval $inlibc
10423
10424 : see if prototypes for various getnetxxx netdb.h functions are available
10425 echo " "
10426 set d_getnetprotos getnetent $i_netdb netdb.h
10427 eval $hasproto
10428
10429 : see if getpagesize exists
10430 set getpagesize d_getpagsz
10431 eval $inlibc
10432
10433
10434 : see if getprotobyname exists
10435 set getprotobyname d_getpbyname
10436 eval $inlibc
10437
10438 : see if getprotobynumber exists
10439 set getprotobynumber d_getpbynumber
10440 eval $inlibc
10441
10442 : see if getprotoent exists
10443 set getprotoent d_getpent
10444 eval $inlibc
10445
10446 : see if getpgid exists
10447 set getpgid d_getpgid
10448 eval $inlibc
10449
10450 : see if getpgrp2 exists
10451 set getpgrp2 d_getpgrp2
10452 eval $inlibc
10453
10454 : see if getppid exists
10455 set getppid d_getppid
10456 eval $inlibc
10457
10458 : see if getpriority exists
10459 set getpriority d_getprior
10460 eval $inlibc
10461
10462 : see if prototypes for various getprotoxxx netdb.h functions are available
10463 echo " "
10464 set d_getprotoprotos getprotoent $i_netdb netdb.h
10465 eval $hasproto
10466
10467 : see if getprpwnam exists
10468 set getprpwnam d_getprpwnam
10469 eval $inlibc
10470
10471 : see if getpwent exists
10472 set getpwent d_getpwent
10473 eval $inlibc
10474
10475
10476 : see if getservbyname exists
10477 set getservbyname d_getsbyname
10478 eval $inlibc
10479
10480 : see if getservbyport exists
10481 set getservbyport d_getsbyport
10482 eval $inlibc
10483
10484 : see if getservent exists
10485 set getservent d_getsent
10486 eval $inlibc
10487
10488 : see if prototypes for various getservxxx netdb.h functions are available
10489 echo " "
10490 set d_getservprotos getservent $i_netdb netdb.h
10491 eval $hasproto
10492
10493 : see if getspnam exists
10494 set getspnam d_getspnam
10495 eval $inlibc
10496
10497 : see if gettimeofday or ftime exists
10498 set gettimeofday d_gettimeod
10499 eval $inlibc
10500 case "$d_gettimeod" in
10501 "$undef")
10502         set ftime d_ftime 
10503         eval $inlibc
10504         ;;
10505 *)
10506         val="$undef"; set d_ftime; eval $setvar
10507         ;;
10508 esac
10509 case "$d_gettimeod$d_ftime" in
10510 "$undef$undef")
10511         echo " "
10512         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10513         ;;
10514 esac
10515
10516 : see if this is an grp system
10517 set grp.h i_grp
10518 eval $inhdr
10519
10520 case "$i_grp" in
10521 $define)
10522         xxx=`./findhdr grp.h`
10523         $cppstdin $cppflags $cppminus < $xxx >$$.h
10524
10525         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10526                 val="$define"
10527         else
10528                 val="$undef"
10529         fi
10530         set d_grpasswd
10531         eval $setvar
10532
10533         $rm -f $$.h
10534         ;;
10535 *)
10536         val="$undef";
10537         set d_grpasswd; eval $setvar
10538         ;;
10539 esac
10540
10541 : see if hasmntopt exists
10542 set hasmntopt d_hasmntopt
10543 eval $inlibc
10544
10545 : see if this is a netinet/in.h or sys/in.h system
10546 set netinet/in.h i_niin sys/in.h i_sysin
10547 eval $inhdr
10548
10549 : see if arpa/inet.h has to be included
10550 set arpa/inet.h i_arpainet
10551 eval $inhdr
10552
10553 : see if htonl --and friends-- exists
10554 val=''
10555 set htonl val
10556 eval $inlibc
10557
10558 : Maybe they are macros.
10559 case "$val" in
10560 $undef)
10561         $cat >htonl.c <<EOM
10562 #include <stdio.h>
10563 #include <sys/types.h>
10564 #$i_niin I_NETINET_IN
10565 #$i_sysin I_SYS_IN
10566 #$i_arpainet I_ARPA_INET
10567 #ifdef I_NETINET_IN
10568 #include <netinet/in.h>
10569 #endif
10570 #ifdef I_SYS_IN
10571 #include <sys/in.h>
10572 #endif
10573 #ifdef I_ARPA_INET
10574 #include <arpa/inet.h>
10575 #endif
10576 #ifdef htonl
10577 printf("Defined as a macro.");
10578 #endif
10579 EOM
10580         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10581         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10582                 val="$define"
10583                 echo "But it seems to be defined as a macro." >&4
10584         fi
10585         $rm -f htonl.?
10586         ;;
10587 esac
10588 set d_htonl
10589 eval $setvar
10590
10591 : see if iconv exists
10592 set iconv d_iconv
10593 eval $inlibc
10594
10595 : index or strchr
10596 echo " "
10597 if set index val -f; eval $csym; $val; then
10598         if set strchr val -f d_strchr; eval $csym; $val; then
10599                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10600                         val="$define"
10601                         vali="$undef"
10602                         echo "strchr() found." >&4
10603                 else
10604                         val="$undef"
10605                         vali="$define"
10606                         echo "index() found." >&4
10607                 fi
10608         else
10609                 val="$undef"
10610                 vali="$define"
10611                 echo "index() found." >&4
10612         fi
10613 else
10614         if set strchr val -f d_strchr; eval $csym; $val; then
10615                 val="$define"
10616                 vali="$undef"
10617                 echo "strchr() found." >&4
10618         else
10619                 echo "No index() or strchr() found!" >&4
10620                 val="$undef"
10621                 vali="$undef"
10622         fi
10623 fi
10624 set d_strchr; eval $setvar
10625 val="$vali"
10626 set d_index; eval $setvar
10627
10628 : check whether inet_aton exists
10629 set inet_aton d_inetaton
10630 eval $inlibc
10631
10632 : Look for isascii
10633 echo " "
10634 $cat >isascii.c <<'EOCP'
10635 #include <stdio.h>
10636 #include <ctype.h>
10637 int main() {
10638         int c = 'A';
10639         if (isascii(c))
10640                 exit(0);
10641         else
10642                 exit(1);
10643 }
10644 EOCP
10645 set isascii
10646 if eval $compile; then
10647         echo "isascii() found." >&4
10648         val="$define"
10649 else
10650         echo "isascii() NOT found." >&4
10651         val="$undef"
10652 fi
10653 set d_isascii
10654 eval $setvar
10655 $rm -f isascii*
10656
10657 : see if isnan exists
10658 set isnan d_isnan
10659 eval $inlibc
10660
10661 : see if isnanl exists
10662 set isnanl d_isnanl
10663 eval $inlibc
10664
10665 : see if killpg exists
10666 set killpg d_killpg
10667 eval $inlibc
10668
10669 : see if lchown exists
10670 echo " "
10671 $cat > try.c <<'EOCP'
10672 /* System header to define __stub macros and hopefully few prototypes,
10673     which can conflict with char lchown(); below.  */
10674 #include <assert.h>
10675 /* Override any gcc2 internal prototype to avoid an error.  */
10676 /* We use char because int might match the return type of a gcc2
10677    builtin and then its argument prototype would still apply.  */
10678 char lchown();
10679 int main() {
10680     /*  The GNU C library defines this for functions which it implements
10681         to always fail with ENOSYS.  Some functions are actually named
10682         something starting with __ and the normal name is an alias.  */
10683 #if defined (__stub_lchown) || defined (__stub___lchown)
10684 choke me
10685 #else
10686 lchown();
10687 #endif
10688 ; return 0; }
10689 EOCP
10690 set try
10691 if eval $compile; then
10692     $echo "lchown() found." >&4
10693     val="$define"
10694 else
10695     $echo "lchown() NOT found." >&4
10696     val="$undef"
10697 fi
10698 set d_lchown
10699 eval $setvar
10700
10701 : See if number of significant digits in a double precision number is known
10702 echo " "
10703 $cat >ldbl_dig.c <<EOM
10704 #$i_limits I_LIMITS
10705 #$i_float I_FLOAT
10706 #ifdef I_LIMITS
10707 #include <limits.h>
10708 #endif
10709 #ifdef I_FLOAT
10710 #include <float.h>
10711 #endif
10712 #ifdef LDBL_DIG
10713 printf("Contains LDBL_DIG");
10714 #endif
10715 EOM
10716 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10717 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10718         echo "LDBL_DIG found." >&4
10719         val="$define"
10720 else
10721         echo "LDBL_DIG NOT found." >&4
10722         val="$undef"
10723 fi
10724 $rm -f ldbl_dig.?
10725 set d_ldbl_dig
10726 eval $setvar
10727
10728 : see if link exists
10729 set link d_link
10730 eval $inlibc
10731
10732 : see if localeconv exists
10733 set localeconv d_locconv
10734 eval $inlibc
10735
10736 : see if lockf exists
10737 set lockf d_lockf
10738 eval $inlibc
10739
10740 : see if prototype for lseek is available
10741 echo " "
10742 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10743 eval $hasproto
10744
10745 : see if lstat exists
10746 set lstat d_lstat
10747 eval $inlibc
10748
10749 : see if madvise exists
10750 set madvise d_madvise
10751 eval $inlibc
10752
10753 : see if mblen exists
10754 set mblen d_mblen
10755 eval $inlibc
10756
10757 : see if mbstowcs exists
10758 set mbstowcs d_mbstowcs
10759 eval $inlibc
10760
10761 : see if mbtowc exists
10762 set mbtowc d_mbtowc
10763 eval $inlibc
10764
10765 : see if memchr exists
10766 set memchr d_memchr
10767 eval $inlibc
10768
10769 : see if memcmp exists
10770 set memcmp d_memcmp
10771 eval $inlibc
10772
10773 : see if memcpy exists
10774 set memcpy d_memcpy
10775 eval $inlibc
10776
10777 : see if memmove exists
10778 set memmove d_memmove
10779 eval $inlibc
10780
10781 : see if memset exists
10782 set memset d_memset
10783 eval $inlibc
10784
10785 : see if mkdir exists
10786 set mkdir d_mkdir
10787 eval $inlibc
10788
10789 : see if mkdtemp exists
10790 set mkdtemp d_mkdtemp
10791 eval $inlibc
10792
10793 : see if mkfifo exists
10794 set mkfifo d_mkfifo
10795 eval $inlibc
10796
10797 : see if mkstemp exists
10798 set mkstemp d_mkstemp
10799 eval $inlibc
10800
10801 : see if mkstemps exists
10802 set mkstemps d_mkstemps
10803 eval $inlibc
10804
10805 : see if mktime exists
10806 set mktime d_mktime
10807 eval $inlibc
10808
10809 : see if this is a sys/mman.h system
10810 set sys/mman.h i_sysmman
10811 eval $inhdr
10812
10813 : see if mmap exists
10814 set mmap d_mmap
10815 eval $inlibc
10816 : see what shmat returns
10817 : default to something harmless
10818 mmaptype='void *'
10819 case "$i_sysmman$d_mmap" in
10820 "$define$define")
10821         $cat >mmap.c <<'END'
10822 #include <sys/mman.h>
10823 void *mmap();
10824 END
10825         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10826                 mmaptype='void *'
10827         else
10828                 mmaptype='caddr_t'
10829         fi
10830         echo "and it returns ($mmaptype)." >&4
10831         ;;
10832 esac
10833
10834
10835
10836 : see if modfl exists
10837 set modfl d_modfl
10838 eval $inlibc
10839
10840 d_modfl_pow32_bug="$undef"
10841
10842 case "$d_longdbl$d_modfl" in
10843 $define$define)
10844         $cat <<EOM
10845 Checking to see whether your modfl() is okay for large values...
10846 EOM
10847 $cat >try.c <<EOCP
10848 #include <math.h> 
10849 #include <stdio.h>
10850 int main() {
10851     long double nv = 4294967303.15;
10852     long double v, w;
10853     v = modfl(nv, &w);         
10854 #ifdef __GLIBC__
10855     printf("glibc");
10856 #endif
10857     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10858     return 0;
10859 }
10860 EOCP
10861         case "$osname:$gccversion" in
10862         aix:)   saveccflags="$ccflags"
10863                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10864         esac
10865         set try
10866         if eval $compile; then
10867                 foo=`$run ./try`
10868                 case "$foo" in
10869                 *" 4294967303.150000 1.150000 4294967302.000000")
10870                         echo >&4 "Your modfl() is broken for large values."
10871                         d_modfl_pow32_bug="$define"
10872                         case "$foo" in
10873                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10874                         ;;
10875                         esac
10876                         ;;
10877                 *" 4294967303.150000 0.150000 4294967303.000000")
10878                         echo >&4 "Your modfl() seems okay for large values."
10879                         ;;
10880                 *)      echo >&4 "I don't understand your modfl() at all."
10881                         d_modfl="$undef"
10882                         ;;
10883                 esac
10884                 $rm -f try.* try core core.try.*
10885         else
10886                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10887                 d_modfl="$undef"
10888         fi
10889         case "$osname:$gccversion" in
10890         aix:)   ccflags="$saveccflags" ;; # restore
10891         esac
10892         ;;
10893 esac
10894
10895 : see if mprotect exists
10896 set mprotect d_mprotect
10897 eval $inlibc
10898
10899 : see if msgctl exists
10900 set msgctl d_msgctl
10901 eval $inlibc
10902
10903 : see if msgget exists
10904 set msgget d_msgget
10905 eval $inlibc
10906
10907 : see if msgsnd exists
10908 set msgsnd d_msgsnd
10909 eval $inlibc
10910
10911 : see if msgrcv exists
10912 set msgrcv d_msgrcv
10913 eval $inlibc
10914
10915 : see how much of the 'msg*(2)' library is present.
10916 h_msg=true
10917 echo " "
10918 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10919 *"$undef"*) h_msg=false;;
10920 esac
10921 case "$osname" in
10922 freebsd)
10923     case "`ipcs 2>&1`" in
10924     "SVID messages"*"not configured"*)
10925         echo "Your $osname does not have the msg*(2) configured." >&4
10926         h_msg=false
10927         val="$undef"
10928         set msgctl d_msgctl
10929         eval $setvar
10930         set msgget d_msgget
10931         eval $setvar
10932         set msgsnd d_msgsnd
10933         eval $setvar
10934         set msgrcv d_msgrcv
10935         eval $setvar
10936         ;;
10937     esac
10938     ;;
10939 esac
10940 : we could also check for sys/ipc.h ...
10941 if $h_msg && $test `./findhdr sys/msg.h`; then
10942         echo "You have the full msg*(2) library." >&4
10943         val="$define"
10944 else
10945         echo "You don't have the full msg*(2) library." >&4
10946         val="$undef"
10947 fi
10948 set d_msg
10949 eval $setvar
10950
10951
10952 echo " "
10953 echo "Checking to see if your system supports struct msghdr..." >&4
10954 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10955 eval $hasstruct
10956 case "$d_msghdr_s" in
10957 "$define")      echo "Yes, it does."   ;;
10958 *)              echo "No, it doesn't." ;;
10959 esac
10960
10961
10962 : see if msync exists
10963 set msync d_msync
10964 eval $inlibc
10965
10966 : see if munmap exists
10967 set munmap d_munmap
10968 eval $inlibc
10969
10970 : see if nice exists
10971 set nice d_nice
10972 eval $inlibc
10973
10974 : see if this is a langinfo.h system
10975 set langinfo.h i_langinfo
10976 eval $inhdr
10977
10978 : see if nl_langinfo exists
10979 set nl_langinfo d_nl_langinfo
10980 eval $inlibc
10981
10982 : check for length of character
10983 echo " "
10984 case "$charsize" in
10985 '')
10986         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10987         $cat >try.c <<'EOCP'
10988 #include <stdio.h>
10989 int main()
10990 {
10991     printf("%d\n", (int)sizeof(char));
10992     exit(0);
10993 }
10994 EOCP
10995         set try
10996         if eval $compile_ok; then
10997                 dflt=`$run ./try`
10998         else
10999                 dflt='1'
11000                 echo "(I can't seem to compile the test program.  Guessing...)"
11001         fi
11002         ;;
11003 *)
11004         dflt="$charsize"
11005         ;;
11006 esac
11007 rp="What is the size of a character (in bytes)?"
11008 . ./myread
11009 charsize="$ans"
11010 $rm -f try.c try
11011
11012 : check for volatile keyword
11013 echo " "
11014 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11015 $cat >try.c <<'EOCP'
11016 int main()
11017 {
11018         typedef struct _goo_struct goo_struct;
11019         goo_struct * volatile goo = ((goo_struct *)0);
11020         struct _goo_struct {
11021                 long long_int;
11022                 int reg_int;
11023                 char char_var;
11024         };
11025         typedef unsigned short foo_t;
11026         char *volatile foo;
11027         volatile int bar;
11028         volatile foo_t blech;
11029         foo = foo;
11030 }
11031 EOCP
11032 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11033         val="$define"
11034         echo "Yup, it does."
11035 else
11036         val="$undef"
11037         echo "Nope, it doesn't."
11038 fi
11039 set d_volatile
11040 eval $setvar
11041 $rm -f try.*
11042
11043
11044 echo " "
11045 $echo "Choosing the C types to be used for Perl's internal types..." >&4
11046
11047 case "$use64bitint:$d_quad:$quadtype" in
11048 define:define:?*)
11049         ivtype="$quadtype"
11050         uvtype="$uquadtype"
11051         ivsize=8
11052         uvsize=8
11053         ;;
11054 *)      ivtype="long"
11055         uvtype="unsigned long"
11056         ivsize=$longsize
11057         uvsize=$longsize
11058         ;;
11059 esac
11060
11061 case "$uselongdouble:$d_longdbl" in
11062 define:define)
11063         nvtype="long double"
11064         nvsize=$longdblsize
11065         ;;
11066 *)      nvtype=double
11067         nvsize=$doublesize
11068         ;;
11069 esac
11070
11071 $echo "(IV will be "$ivtype", $ivsize bytes)"
11072 $echo "(UV will be "$uvtype", $uvsize bytes)"
11073 $echo "(NV will be "$nvtype", $nvsize bytes)"
11074
11075 $cat >try.c <<EOCP
11076 #$i_inttypes I_INTTYPES
11077 #ifdef I_INTTYPES
11078 #include <inttypes.h>
11079 #endif
11080 #include <stdio.h>
11081 int main() {
11082 #ifdef INT8
11083    int8_t i =  INT8_MAX;
11084   uint8_t u = UINT8_MAX;
11085   printf("int8_t\n");
11086 #endif
11087 #ifdef INT16
11088    int16_t i =  INT16_MAX;
11089   uint16_t i = UINT16_MAX;
11090   printf("int16_t\n");
11091 #endif
11092 #ifdef INT32
11093    int32_t i =  INT32_MAX;
11094   uint32_t u = UINT32_MAX;
11095   printf("int32_t\n");
11096 #endif
11097 }
11098 EOCP
11099
11100 case "$i8type" in
11101 '')     case "$charsize" in
11102         1)      i8type=char
11103                 u8type="unsigned char"
11104                 i8size=$charsize
11105                 u8size=$charsize
11106                 ;;
11107         esac
11108         ;;
11109 esac
11110 case "$i8type" in
11111 '')     set try -DINT8
11112         if eval $compile; then
11113                 case "`$run ./try`" in
11114                 int8_t) i8type=int8_t
11115                         u8type=uint8_t
11116                         i8size=1
11117                         u8size=1
11118                         ;;
11119                 esac
11120         fi
11121         ;;
11122 esac
11123 case "$i8type" in
11124 '')     if $test $charsize -ge 1; then
11125                 i8type=char
11126                 u8type="unsigned char"
11127                 i8size=$charsize
11128                 u8size=$charsize
11129         fi
11130         ;;
11131 esac
11132
11133 case "$i16type" in
11134 '')     case "$shortsize" in
11135         2)      i16type=short
11136                 u16type="unsigned short"
11137                 i16size=$shortsize
11138                 u16size=$shortsize
11139                 ;;
11140         esac
11141         ;;
11142 esac
11143 case "$i16type" in
11144 '')     set try -DINT16
11145         if eval $compile; then
11146                 case "`$run ./try`" in
11147                 int16_t)
11148                         i16type=int16_t
11149                         u16type=uint16_t
11150                         i16size=2
11151                         u16size=2
11152                         ;;
11153                 esac
11154         fi
11155         ;;
11156 esac
11157 case "$i16type" in
11158 '')     if $test $shortsize -ge 2; then
11159                 i16type=short
11160                 u16type="unsigned short"
11161                 i16size=$shortsize
11162                 u16size=$shortsize
11163         fi
11164         ;;
11165 esac
11166
11167 case "$i32type" in
11168 '')     case "$longsize" in
11169         4)      i32type=long
11170                 u32type="unsigned long"
11171                 i32size=$longsize
11172                 u32size=$longsize
11173                 ;;
11174         *)      case "$intsize" in
11175                 4)      i32type=int
11176                         u32type="unsigned int"
11177                         i32size=$intsize
11178                         u32size=$intsize
11179                         ;;
11180                 esac
11181                 ;;
11182         esac
11183         ;;
11184 esac
11185 case "$i32type" in
11186 '')     set try -DINT32
11187         if eval $compile; then
11188                 case "`$run ./try`" in
11189                 int32_t)
11190                         i32type=int32_t
11191                         u32type=uint32_t
11192                         i32size=4
11193                         u32size=4
11194                         ;;
11195                 esac
11196         fi
11197         ;;
11198 esac
11199 case "$i32type" in
11200 '')     if $test $intsize -ge 4; then
11201                 i32type=int
11202                 u32type="unsigned int"
11203                 i32size=$intsize
11204                 u32size=$intsize
11205         fi
11206         ;;
11207 esac
11208
11209 case "$i64type" in
11210 '')     case "$d_quad:$quadtype" in
11211         define:?*)
11212                 i64type="$quadtype"
11213                 u64type="$uquadtype"
11214                 i64size=8
11215                 u64size=8
11216                 ;;
11217         esac
11218         ;;
11219 esac
11220
11221 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11222 : volatile so that the compiler has to store it out to memory.
11223 if test X"$d_volatile" = X"$define"; then
11224         volatile=volatile
11225 fi
11226 $cat <<EOP >try.c
11227 #include <stdio.h>
11228 #include <sys/types.h>
11229 #include <signal.h>
11230 #ifdef SIGFPE
11231 $volatile int bletched = 0;
11232 $signal_t blech(s) int s; { bletched = 1; }
11233 #endif
11234 int main() {
11235     $uvtype u = 0;
11236     $nvtype d;
11237     int     n = 8 * $uvsize;
11238     int     i;
11239 #ifdef SIGFPE
11240     signal(SIGFPE, blech);
11241 #endif
11242
11243     for (i = 0; i < n; i++) {
11244       u = u << 1 | ($uvtype)1;
11245       d = ($nvtype)u;
11246       if (($uvtype)d != u)
11247         break;
11248       if (d <= 0)
11249         break;
11250       d = ($nvtype)(u - 1);
11251       if (($uvtype)d != (u - 1))
11252         break;
11253 #ifdef SIGFPE
11254       if (bletched) {
11255         break;
11256 #endif
11257       } 
11258     }
11259     printf("%d\n", ((i == n) ? -n : i));
11260     exit(0);
11261 }
11262 EOP
11263 set try
11264
11265 d_nv_preserves_uv="$undef"
11266 if eval $compile; then
11267         d_nv_preserves_uv_bits="`$run ./try`"
11268 fi
11269 case "$d_nv_preserves_uv_bits" in
11270 \-[1-9]*)       
11271         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11272         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11273         d_nv_preserves_uv="$define"
11274         ;;
11275 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11276         d_nv_preserves_uv="$undef" ;;
11277 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11278         d_nv_preserves_uv_bits="$undef" ;;
11279 esac
11280
11281 $rm -f try.* try
11282
11283
11284 : check for off64_t
11285 echo " "
11286 echo "Checking to see if you have off64_t..." >&4
11287 $cat >try.c <<EOCP
11288 #include <sys/types.h>
11289 #include <unistd.h>
11290 int main() { off64_t x = 7; }
11291 EOCP
11292 set try
11293 if eval $compile; then
11294         val="$define"
11295         echo "You have off64_t."
11296 else
11297         val="$undef"
11298         echo "You do not have off64_t."
11299         case "$lseeksize" in
11300         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11301         esac
11302 fi
11303 $rm -f try.* try
11304 set d_off64_t
11305 eval $setvar
11306
11307 : see if POSIX threads are available
11308 set pthread.h i_pthread
11309 eval $inhdr
11310
11311
11312
11313
11314 : how to create joinable pthreads
11315 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11316         echo " "
11317         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11318         $cat >try.c <<'EOCP'
11319 #include <pthread.h>
11320 int main() {
11321     int detachstate = JOINABLE;
11322 }
11323 EOCP
11324         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11325         if eval $compile; then
11326                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11327                 val="$undef" # Yes, undef.
11328                 set d_old_pthread_create_joinable
11329                 eval $setvar
11330                 val=""
11331                 set old_pthread_create_joinable
11332                 eval $setvar
11333         else
11334                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11335                 if eval $compile; then
11336                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11337                         val="$define"
11338                         set d_old_pthread_create_joinable
11339                         eval $setvar
11340                         val=PTHREAD_CREATE_UNDETACHED
11341                         set old_pthread_create_joinable
11342                         eval $setvar
11343                 else            
11344                         set try -DJOINABLE=__UNDETACHED
11345                         if eval $compile; then
11346                                 echo "You seem to use __UNDETACHED." >&4
11347                                 val="$define"
11348                                 set d_old_pthread_create_joinable
11349                                 eval $setvar
11350                                 val=__UNDETACHED
11351                                 set old_pthread_create_joinable
11352                                 eval $setvar
11353                         else
11354                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11355                                 val="$define"
11356                                 set d_old_pthread_create_joinable
11357                                 eval $setvar
11358                                 val=0
11359                                 set old_pthread_create_joinable
11360                                 eval $setvar
11361                         fi
11362                 fi
11363         fi
11364         $rm -f try try.*
11365 else
11366     d_old_pthread_create_joinable="$undef"
11367     old_pthread_create_joinable=""
11368 fi
11369
11370 : see if pause exists
11371 set pause d_pause
11372 eval $inlibc
11373
11374 : see if pipe exists
11375 set pipe d_pipe
11376 eval $inlibc
11377
11378 : see if poll exists
11379 set poll d_poll
11380 eval $inlibc
11381
11382 : see if pthread_atfork exists
11383 set pthread_atfork d_pthread_atfork
11384 eval $inlibc
11385
11386
11387 : see whether the various POSIXish _yields exist
11388 $cat >try.c <<EOP
11389 #include <pthread.h>
11390 #include <stdio.h>
11391 int main() {
11392 #ifdef SCHED_YIELD
11393         sched_yield();
11394 #else
11395 #ifdef PTHREAD_YIELD
11396         pthread_yield();
11397 #else
11398 #ifdef PTHREAD_YIELD_NULL
11399         pthread_yield(NULL);
11400 #endif
11401 #endif
11402 #endif
11403 }
11404 EOP
11405 : see if sched_yield exists
11406 set try -DSCHED_YIELD
11407 if eval $compile; then
11408     val="$define"
11409     sched_yield='sched_yield()'
11410 else
11411     val="$undef"
11412 fi
11413 case "$usethreads" in
11414 $define)
11415         case "$val" in
11416         $define) echo 'sched_yield() found.' >&4        ;;
11417         *)       echo 'sched_yield() NOT found.' >&4    ;;
11418         esac
11419 esac
11420 set d_sched_yield
11421 eval $setvar
11422
11423 : see if pthread_yield exists
11424 set try -DPTHREAD_YIELD
11425 if eval $compile; then
11426     val="$define"
11427     case "$sched_yield" in
11428     '') sched_yield='pthread_yield()' ;;
11429     esac
11430 else
11431     set try -DPTHREAD_YIELD_NULL
11432     if eval $compile; then
11433         val="$define"
11434         case "$sched_yield" in
11435         '') sched_yield='pthread_yield(NULL)' ;;
11436         esac
11437     else
11438         val="$undef"
11439     fi
11440 fi
11441 case "$usethreads" in
11442 $define)
11443         case "$val" in
11444         $define) echo 'pthread_yield() found.' >&4      ;;
11445         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11446         esac
11447         ;;
11448 esac
11449 set d_pthread_yield
11450 eval $setvar
11451
11452 case "$sched_yield" in
11453 '') sched_yield=undef ;;
11454 esac
11455
11456 $rm -f try try.*
11457
11458 : see if this is a pwd.h system
11459 set pwd.h i_pwd
11460 eval $inhdr
11461
11462 case "$i_pwd" in
11463 $define)
11464         xxx=`./findhdr pwd.h`
11465         $cppstdin $cppflags $cppminus < $xxx >$$.h
11466
11467         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11468                 val="$define"
11469         else
11470                 val="$undef"
11471         fi
11472         set d_pwquota
11473         eval $setvar
11474
11475         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11476                 val="$define"
11477         else
11478                 val="$undef"
11479         fi
11480         set d_pwage
11481         eval $setvar
11482
11483         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11484                 val="$define"
11485         else
11486                 val="$undef"
11487         fi
11488         set d_pwchange
11489         eval $setvar
11490
11491         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11492                 val="$define"
11493         else
11494                 val="$undef"
11495         fi
11496         set d_pwclass
11497         eval $setvar
11498
11499         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11500                 val="$define"
11501         else
11502                 val="$undef"
11503         fi
11504         set d_pwexpire
11505         eval $setvar
11506
11507         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11508                 val="$define"
11509         else
11510                 val="$undef"
11511         fi
11512         set d_pwcomment
11513         eval $setvar
11514
11515         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11516                 val="$define"
11517         else
11518                 val="$undef"
11519         fi
11520         set d_pwgecos
11521         eval $setvar
11522
11523         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11524                 val="$define"
11525         else
11526                 val="$undef"
11527         fi
11528         set d_pwpasswd
11529         eval $setvar
11530
11531         $rm -f $$.h
11532         ;;
11533 *)
11534         val="$undef"; 
11535         set d_pwquota; eval $setvar
11536         set d_pwage; eval $setvar
11537         set d_pwchange; eval $setvar
11538         set d_pwclass; eval $setvar
11539         set d_pwexpire; eval $setvar
11540         set d_pwcomment; eval $setvar
11541         set d_pwgecos; eval $setvar
11542         set d_pwpasswd; eval $setvar
11543         ;;
11544 esac
11545
11546 : see if readdir and friends exist
11547 set readdir d_readdir
11548 eval $inlibc
11549 set seekdir d_seekdir
11550 eval $inlibc
11551 set telldir d_telldir
11552 eval $inlibc
11553 set rewinddir d_rewinddir
11554 eval $inlibc
11555
11556 : see if readlink exists
11557 set readlink d_readlink
11558 eval $inlibc
11559
11560 : see if readv exists
11561 set readv d_readv
11562 eval $inlibc
11563
11564 : see if recvmsg exists
11565 set recvmsg d_recvmsg
11566 eval $inlibc
11567
11568 : see if rename exists
11569 set rename d_rename
11570 eval $inlibc
11571
11572 : see if rmdir exists
11573 set rmdir d_rmdir
11574 eval $inlibc
11575
11576 : see if memory.h is available.
11577 val=''
11578 set memory.h val
11579 eval $inhdr
11580
11581 : See if it conflicts with string.h
11582 case "$val" in
11583 $define)
11584         case "$strings" in
11585         '') ;;
11586         *)
11587                 $cppstdin $cppflags $cppminus < $strings > mem.h
11588                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11589                         echo " "
11590                         echo "We won't be including <memory.h>."
11591                         val="$undef"
11592                 fi
11593                 $rm -f mem.h
11594                 ;;
11595         esac
11596 esac
11597 set i_memory
11598 eval $setvar
11599
11600 : can bcopy handle overlapping blocks?
11601 echo " "
11602 val="$undef"
11603 case "$d_memmove" in
11604 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11605 *)      case "$d_bcopy" in
11606         "$define")
11607                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11608                 $cat >try.c <<EOCP
11609 #$i_memory I_MEMORY
11610 #$i_stdlib I_STDLIB
11611 #$i_string I_STRING
11612 #$i_unistd I_UNISTD
11613 EOCP
11614         $cat >>try.c <<'EOCP'
11615 #include <stdio.h>
11616 #ifdef I_MEMORY
11617 #  include <memory.h>
11618 #endif
11619 #ifdef I_STDLIB
11620 #  include <stdlib.h>
11621 #endif
11622 #ifdef I_STRING
11623 #  include <string.h>
11624 #else
11625 #  include <strings.h>
11626 #endif
11627 #ifdef I_UNISTD
11628 #  include <unistd.h>  /* Needed for NetBSD */
11629 #endif
11630 int main()
11631 {
11632 char buf[128], abc[128];
11633 char *b;
11634 int len;
11635 int off;
11636 int align;
11637
11638 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11639    try to store the string in read-only memory. */
11640 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11641
11642 for (align = 7; align >= 0; align--) {
11643         for (len = 36; len; len--) {
11644                 b = buf+align;
11645                 bcopy(abc, b, len);
11646                 for (off = 1; off <= len; off++) {
11647                         bcopy(b, b+off, len);
11648                         bcopy(b+off, b, len);
11649                         if (bcmp(b, abc, len))
11650                                 exit(1);
11651                 }
11652         }
11653 }
11654 exit(0);
11655 }
11656 EOCP
11657                 set try
11658                 if eval $compile_ok; then
11659                         if ./try 2>/dev/null; then
11660                                 echo "Yes, it can."
11661                                 val="$define"
11662                         else
11663                                 echo "It can't, sorry."
11664                         fi
11665                 else
11666                         echo "(I can't compile the test program, so we'll assume not...)"
11667                 fi
11668                 ;;
11669         esac
11670         $rm -f try.* try core
11671         ;;
11672 esac
11673 set d_safebcpy
11674 eval $setvar
11675
11676 : can memcpy handle overlapping blocks?
11677 echo " "
11678 val="$undef"
11679 case "$d_memmove" in
11680 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11681 *)      case "$d_memcpy" in
11682         "$define")
11683                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11684                 $cat >try.c <<EOCP
11685 #$i_memory I_MEMORY
11686 #$i_stdlib I_STDLIB
11687 #$i_string I_STRING
11688 #$i_unistd I_UNISTD
11689 EOCP
11690         $cat >>try.c <<'EOCP'
11691 #include <stdio.h>
11692 #ifdef I_MEMORY
11693 #  include <memory.h>
11694 #endif
11695 #ifdef I_STDLIB
11696 #  include <stdlib.h>
11697 #endif
11698 #ifdef I_STRING
11699 #  include <string.h>
11700 #else
11701 #  include <strings.h>
11702 #endif
11703 #ifdef I_UNISTD
11704 #  include <unistd.h>  /* Needed for NetBSD */
11705 #endif
11706 int main()
11707 {
11708 char buf[128], abc[128];
11709 char *b;
11710 int len;
11711 int off;
11712 int align;
11713
11714 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11715    try to store the string in read-only memory. */
11716 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11717
11718 for (align = 7; align >= 0; align--) {
11719         for (len = 36; len; len--) {
11720                 b = buf+align;
11721                 memcpy(b, abc, len);
11722                 for (off = 1; off <= len; off++) {
11723                         memcpy(b+off, b, len);
11724                         memcpy(b, b+off, len);
11725                         if (memcmp(b, abc, len))
11726                                 exit(1);
11727                 }
11728         }
11729 }
11730 exit(0);
11731 }
11732 EOCP
11733                 set try
11734                 if eval $compile_ok; then
11735                         if ./try 2>/dev/null; then
11736                                 echo "Yes, it can."
11737                                 val="$define"
11738                         else
11739                                 echo "It can't, sorry."
11740                         fi
11741                 else
11742                         echo "(I can't compile the test program, so we'll assume not...)"
11743                 fi
11744                 ;;
11745         esac
11746         $rm -f try.* try core
11747         ;;
11748 esac
11749 set d_safemcpy
11750 eval $setvar
11751
11752 : can memcmp be trusted to compare relative magnitude?
11753 val="$undef"
11754 case "$d_memcmp" in
11755 "$define")
11756         echo " "
11757         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11758         $cat >try.c <<EOCP
11759 #$i_memory I_MEMORY
11760 #$i_stdlib I_STDLIB
11761 #$i_string I_STRING
11762 #$i_unistd I_UNISTD
11763 EOCP
11764         $cat >>try.c <<'EOCP'
11765 #include <stdio.h>
11766 #ifdef I_MEMORY
11767 #  include <memory.h>
11768 #endif
11769 #ifdef I_STDLIB
11770 #  include <stdlib.h>
11771 #endif
11772 #ifdef I_STRING
11773 #  include <string.h>
11774 #else
11775 #  include <strings.h>
11776 #endif
11777 #ifdef I_UNISTD
11778 #  include <unistd.h>  /* Needed for NetBSD */
11779 #endif
11780 int main()
11781 {
11782 char a = -1;
11783 char b = 0;
11784 if ((a < b) && memcmp(&a, &b, 1) < 0)
11785         exit(1);
11786 exit(0);
11787 }
11788 EOCP
11789         set try
11790         if eval $compile_ok; then
11791                 if $run ./try 2>/dev/null; then
11792                         echo "Yes, it can."
11793                         val="$define"
11794                 else
11795                         echo "No, it can't (it uses signed chars)."
11796                 fi
11797         else
11798                 echo "(I can't compile the test program, so we'll assume not...)"
11799         fi
11800         ;;
11801 esac
11802 $rm -f try.* try core
11803 set d_sanemcmp
11804 eval $setvar
11805
11806 : see if prototype for sbrk is available
11807 echo " "
11808 set d_sbrkproto sbrk $i_unistd unistd.h
11809 eval $hasproto
11810
11811 : see if select exists
11812 set select d_select
11813 eval $inlibc
11814
11815 : see if semctl exists
11816 set semctl d_semctl
11817 eval $inlibc
11818
11819 : see if semget exists
11820 set semget d_semget
11821 eval $inlibc
11822
11823 : see if semop exists
11824 set semop d_semop
11825 eval $inlibc
11826
11827 : see how much of the 'sem*(2)' library is present.
11828 h_sem=true
11829 echo " "
11830 case "$d_semctl$d_semget$d_semop" in
11831 *"$undef"*) h_sem=false;;
11832 esac
11833 case "$osname" in
11834 freebsd)
11835     case "`ipcs 2>&1`" in
11836     "SVID messages"*"not configured"*)
11837         echo "Your $osname does not have the sem*(2) configured." >&4
11838         h_sem=false
11839         val="$undef"
11840         set semctl d_semctl
11841         eval $setvar
11842         set semget d_semget
11843         eval $setvar
11844         set semop d_semop
11845         eval $setvar
11846         ;;
11847     esac
11848     ;;
11849 esac
11850 : we could also check for sys/ipc.h ...
11851 if $h_sem && $test `./findhdr sys/sem.h`; then
11852         echo "You have the full sem*(2) library." >&4
11853         val="$define"
11854 else
11855         echo "You don't have the full sem*(2) library." >&4
11856         val="$undef"
11857 fi
11858 set d_sem
11859 eval $setvar
11860
11861 : see whether sys/sem.h defines union semun
11862 echo " "
11863 $cat > try.c <<'END'
11864 #include <sys/types.h>
11865 #include <sys/ipc.h>
11866 #include <sys/sem.h>
11867 int main () { union semun semun; semun.buf = 0; }
11868 END
11869 set try
11870 if eval $compile; then
11871     echo "You have union semun in <sys/sem.h>." >&4
11872     val="$define"
11873 else
11874     echo "You do not have union semun in <sys/sem.h>." >&4
11875     val="$undef"
11876 fi
11877 $rm -f try try.c try.h
11878 set d_union_semun
11879 eval $setvar
11880
11881 : see how to do semctl IPC_STAT
11882 case "$d_sem" in
11883 $define)
11884     : see whether semctl IPC_STAT can use union semun
11885     echo " "
11886     $cat > try.h <<END
11887 #ifndef S_IRUSR
11888 #   ifdef S_IREAD
11889 #       define S_IRUSR S_IREAD
11890 #       define S_IWUSR S_IWRITE
11891 #       define S_IXUSR S_IEXEC
11892 #   else
11893 #       define S_IRUSR 0400
11894 #       define S_IWUSR 0200
11895 #       define S_IXUSR 0100
11896 #   endif
11897 #   define S_IRGRP (S_IRUSR>>3)
11898 #   define S_IWGRP (S_IWUSR>>3)
11899 #   define S_IXGRP (S_IXUSR>>3)
11900 #   define S_IROTH (S_IRUSR>>6)
11901 #   define S_IWOTH (S_IWUSR>>6)
11902 #   define S_IXOTH (S_IXUSR>>6)
11903 #endif
11904 #ifndef S_IRWXU
11905 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11906 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11907 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11908 #endif
11909 END
11910
11911     $cat > try.c <<END
11912 #include <sys/types.h>
11913 #include <sys/ipc.h>
11914 #include <sys/sem.h>
11915 #include <sys/stat.h>
11916 #include <stdio.h>
11917 #include <errno.h>
11918 #include "try.h"
11919 #ifndef errno
11920 extern int errno;
11921 #endif
11922 #$d_union_semun HAS_UNION_SEMUN
11923 int main() {
11924     union semun
11925 #ifndef HAS_UNION_SEMUN
11926     {
11927         int val;
11928         struct semid_ds *buf;
11929         unsigned short *array;
11930     }
11931 #endif
11932     arg;
11933     int sem, st;
11934
11935 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11936     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11937     if (sem > -1) {
11938         struct semid_ds argbuf;
11939         arg.buf = &argbuf;
11940 #       ifdef IPC_STAT
11941         st = semctl(sem, 0, IPC_STAT, arg);
11942         if (st == 0)
11943             printf("semun\n");
11944         else
11945 #       endif /* IPC_STAT */
11946             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11947 #       ifdef IPC_RMID
11948         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11949 #       endif /* IPC_RMID */
11950             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11951     } else
11952 #endif /* IPC_PRIVATE && ... */
11953         printf("semget failed: errno = %d\n", errno);
11954   return 0;
11955 }
11956 END
11957     val="$undef"
11958     set try
11959     if eval $compile; then
11960         xxx=`$run ./try`
11961         case "$xxx" in
11962         semun) val="$define" ;;
11963         esac
11964     fi
11965     $rm -f try try.c
11966     set d_semctl_semun
11967     eval $setvar
11968     case "$d_semctl_semun" in
11969     $define)
11970         echo "You can use union semun for semctl IPC_STAT." >&4
11971         also='also'
11972         ;;
11973     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11974         also=''
11975         ;;
11976     esac
11977
11978     : see whether semctl IPC_STAT can use struct semid_ds pointer
11979     $cat > try.c <<'END'
11980 #include <sys/types.h>
11981 #include <sys/ipc.h>
11982 #include <sys/sem.h>
11983 #include <sys/stat.h>
11984 #include "try.h"
11985 #include <stdio.h>
11986 #include <errno.h>
11987 #ifndef errno
11988 extern int errno;
11989 #endif
11990 int main() {
11991     struct semid_ds arg;
11992     int sem, st;
11993
11994 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11995     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11996     if (sem > -1) {
11997 #       ifdef IPC_STAT
11998         st = semctl(sem, 0, IPC_STAT, &arg);
11999         if (st == 0)
12000             printf("semid_ds\n");
12001         else
12002 #       endif /* IPC_STAT */
12003             printf("semctl IPC_STAT failed: errno = %d\n", errno);
12004 #       ifdef IPC_RMID
12005         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
12006 #       endif /* IPC_RMID */
12007             printf("semctl IPC_RMID failed: errno = %d\n", errno);
12008     } else
12009 #endif /* IPC_PRIVATE && ... */
12010         printf("semget failed: errno = %d\n", errno);
12011
12012     return 0;
12013 }
12014 END
12015     val="$undef"
12016     set try
12017     if eval $compile; then
12018         xxx=`$run ./try`
12019         case "$xxx" in
12020         semid_ds) val="$define" ;;
12021         esac
12022     fi
12023     $rm -f try try.c
12024     set d_semctl_semid_ds
12025     eval $setvar
12026     case "$d_semctl_semid_ds" in
12027     $define)
12028         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
12029         ;;
12030     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
12031         ;;
12032     esac
12033     $rm -f try.h
12034     ;;
12035 *)  val="$undef"
12036
12037     # We do not have the full sem*(2) library, so assume we can not
12038     # use either.
12039
12040     set d_semctl_semun
12041     eval $setvar
12042
12043     set d_semctl_semid_ds
12044     eval $setvar
12045     ;;
12046 esac
12047
12048 : see if sendmsg exists
12049 set sendmsg d_sendmsg
12050 eval $inlibc
12051
12052 : see if setegid exists
12053 set setegid d_setegid
12054 eval $inlibc
12055
12056 : see if seteuid exists
12057 set seteuid d_seteuid
12058 eval $inlibc
12059
12060 : see if setgrent exists
12061 set setgrent d_setgrent
12062 eval $inlibc
12063
12064 : see if sethostent exists
12065 set sethostent d_sethent
12066 eval $inlibc
12067
12068 : see if setitimer exists
12069 set setitimer d_setitimer
12070 eval $inlibc
12071
12072 : see if setlinebuf exists
12073 set setlinebuf d_setlinebuf
12074 eval $inlibc
12075
12076 : see if setlocale exists
12077 set setlocale d_setlocale
12078 eval $inlibc
12079
12080 : see if setnetent exists
12081 set setnetent d_setnent
12082 eval $inlibc
12083
12084 : see if setprotoent exists
12085 set setprotoent d_setpent
12086 eval $inlibc
12087
12088 : see if setpgid exists
12089 set setpgid d_setpgid
12090 eval $inlibc
12091
12092 : see if setpgrp2 exists
12093 set setpgrp2 d_setpgrp2
12094 eval $inlibc
12095
12096 : see if setpriority exists
12097 set setpriority d_setprior
12098 eval $inlibc
12099
12100 : see if setproctitle exists
12101 set setproctitle d_setproctitle
12102 eval $inlibc
12103
12104 : see if setpwent exists
12105 set setpwent d_setpwent
12106 eval $inlibc
12107
12108 : see if setregid exists
12109 set setregid d_setregid
12110 eval $inlibc
12111 set setresgid d_setresgid
12112 eval $inlibc
12113
12114 : see if setreuid exists
12115 set setreuid d_setreuid
12116 eval $inlibc
12117 set setresuid d_setresuid
12118 eval $inlibc
12119
12120 : see if setrgid exists
12121 set setrgid d_setrgid
12122 eval $inlibc
12123
12124 : see if setruid exists
12125 set setruid d_setruid
12126 eval $inlibc
12127
12128 : see if setservent exists
12129 set setservent d_setsent
12130 eval $inlibc
12131
12132 : see if setsid exists
12133 set setsid d_setsid
12134 eval $inlibc
12135
12136 : see if setvbuf exists
12137 set setvbuf d_setvbuf
12138 eval $inlibc
12139
12140 : see if sfio.h is available
12141 set sfio.h i_sfio
12142 eval $inhdr
12143
12144
12145 : see if sfio library is available
12146 case "$i_sfio" in
12147 $define)
12148         val=''
12149         set sfreserve val
12150         eval $inlibc
12151         ;;
12152 *)
12153         val="$undef"
12154         ;;
12155 esac
12156 : Ok, but do we want to use it.
12157 case "$val" in
12158 $define)
12159         case "$usesfio" in
12160         true|$define|[yY]*) dflt='y';;
12161         *) dflt='n';;
12162         esac
12163         echo "$package can use the sfio library, but it is experimental."
12164         case "$useperlio" in
12165         "$undef")
12166             echo "For sfio also the PerlIO abstraction layer is needed."
12167             echo "Earlier you said you wouldn't want that."
12168             ;;
12169         esac
12170         rp="You seem to have sfio available, do you want to try using it?"
12171         . ./myread
12172         case "$ans" in
12173         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12174                 useperlio="$define"
12175                 val="$define"
12176                 ;;
12177         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12178                 val="$undef"
12179                 ;;
12180         esac
12181         ;;
12182 *)      case "$usesfio" in
12183         true|$define|[yY]*)
12184                 echo "Sorry, cannot find sfio on this machine." >&4
12185                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12186                 val="$undef"
12187                 ;;
12188         esac
12189         ;;
12190 esac
12191 set d_sfio
12192 eval $setvar
12193 case "$d_sfio" in
12194 $define) usesfio='true';;
12195 *) usesfio='false';;
12196 esac
12197 case "$d_sfio" in
12198 $define) ;;
12199 *)      : Remove sfio from list of libraries to use
12200         case "$libs" in
12201         *-lsfio*)
12202                 echo "Removing unneeded -lsfio from library list" >&4
12203                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12204                 shift
12205                 libs="$*"
12206                 echo "libs = $libs" >&4
12207                 ;;
12208         esac
12209 ;;
12210 esac
12211
12212
12213 : see if shmctl exists
12214 set shmctl d_shmctl
12215 eval $inlibc
12216
12217 : see if shmget exists
12218 set shmget d_shmget
12219 eval $inlibc
12220
12221 : see if shmat exists
12222 set shmat d_shmat
12223 eval $inlibc
12224 : see what shmat returns
12225 case "$d_shmat" in
12226 "$define")
12227         $cat >shmat.c <<'END'
12228 #include <sys/shm.h>
12229 void *shmat();
12230 END
12231         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12232                 shmattype='void *'
12233         else
12234                 shmattype='char *'
12235         fi
12236         echo "and it returns ($shmattype)." >&4
12237         : see if a prototype for shmat is available
12238         xxx=`./findhdr sys/shm.h`
12239         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12240         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12241                 val="$define"
12242         else
12243                 val="$undef"
12244         fi
12245         $rm -f shmat.[co]
12246         ;;
12247 *)
12248         val="$undef"
12249         ;;
12250 esac
12251 set d_shmatprototype
12252 eval $setvar
12253
12254 : see if shmdt exists
12255 set shmdt d_shmdt
12256 eval $inlibc
12257
12258 : see how much of the 'shm*(2)' library is present.
12259 h_shm=true
12260 echo " "
12261 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12262 *"$undef"*) h_shm=false;;
12263 esac
12264 case "$osname" in
12265 freebsd)
12266     case "`ipcs 2>&1`" in
12267     "SVID shared memory"*"not configured"*)
12268         echo "Your $osname does not have the shm*(2) configured." >&4
12269         h_shm=false
12270         val="$undef"
12271         set shmctl d_shmctl
12272         evat $setvar
12273         set shmget d_shmget
12274         evat $setvar
12275         set shmat d_shmat
12276         evat $setvar
12277         set shmdt d_shmdt
12278         evat $setvar
12279         ;;
12280     esac
12281     ;;
12282 esac
12283 : we could also check for sys/ipc.h ...
12284 if $h_shm && $test `./findhdr sys/shm.h`; then
12285         echo "You have the full shm*(2) library." >&4
12286         val="$define"
12287 else
12288         echo "You don't have the full shm*(2) library." >&4
12289         val="$undef"
12290 fi
12291 set d_shm
12292 eval $setvar
12293
12294 echo " "
12295 : see if we have sigaction
12296 if set sigaction val -f d_sigaction; eval $csym; $val; then
12297         echo 'sigaction() found.' >&4
12298         $cat > try.c <<'EOP'
12299 #include <stdio.h>
12300 #include <sys/types.h>
12301 #include <signal.h>
12302 int main()
12303 {
12304     struct sigaction act, oact;
12305     act.sa_flags = 0;
12306     oact.sa_handler = 0;
12307     /* so that act and oact are used */
12308     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12309 }
12310 EOP
12311         set try
12312         if eval $compile_ok; then
12313                 val="$define"
12314         else
12315                 echo "But you don't seem to have a useable struct sigaction." >&4
12316                 val="$undef"
12317         fi
12318 else
12319         echo 'sigaction NOT found.' >&4
12320         val="$undef"
12321 fi
12322 set d_sigaction; eval $setvar
12323 $rm -f try try$_o try.c
12324
12325 : see if sigprocmask exists
12326 set sigprocmask d_sigprocmask
12327 eval $inlibc
12328
12329 : see if sigsetjmp exists
12330 echo " "
12331 case "$d_sigsetjmp" in
12332 '')
12333         $cat >try.c <<'EOP'
12334 #include <setjmp.h>
12335 sigjmp_buf env;
12336 int set = 1;
12337 int main()
12338 {
12339         if (sigsetjmp(env,1))
12340                 exit(set);
12341         set = 0;
12342         siglongjmp(env, 1);
12343         exit(1);
12344 }
12345 EOP
12346         set try
12347         if eval $compile; then
12348                 if $run ./try >/dev/null 2>&1; then
12349                         echo "POSIX sigsetjmp found." >&4
12350                         val="$define"
12351                 else
12352                         $cat >&4 <<EOM
12353 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12354 I'll ignore them.
12355 EOM
12356                         val="$undef"
12357                 fi
12358         else
12359                 echo "sigsetjmp not found." >&4
12360                 val="$undef"
12361         fi
12362         ;;
12363 *) val="$d_sigsetjmp"
12364         case "$d_sigsetjmp" in
12365         $define) echo "POSIX sigsetjmp found." >&4;;
12366         $undef) echo "sigsetjmp not found." >&4;;
12367         esac
12368         ;;
12369 esac
12370 set d_sigsetjmp
12371 eval $setvar
12372 $rm -f try.c try
12373
12374 : see if sockatmark exists
12375 set sockatmark d_sockatmark
12376 eval $inlibc
12377
12378 : see if prototype for sockatmark is available
12379 echo " "
12380 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12381 eval $hasproto
12382
12383 : see if socks5_init exists
12384 set socks5_init d_socks5_init
12385 eval $inlibc
12386
12387 : see if prototype for setresgid is available
12388 echo " "
12389 set d_sresgproto setresgid $i_unistd unistd.h
12390 eval $hasproto
12391
12392 : see if prototype for setresuid is available
12393 echo " "
12394 set d_sresuproto setresuid $i_unistd unistd.h
12395 eval $hasproto
12396
12397 : see if sys/stat.h is available
12398 set sys/stat.h i_sysstat
12399 eval $inhdr
12400
12401
12402 : see if stat knows about block sizes
12403 echo " "
12404 echo "Checking to see if your struct stat has st_blocks field..." >&4
12405 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12406 eval $hasfield
12407
12408
12409 : see if this is a sys/vfs.h system
12410 set sys/vfs.h i_sysvfs
12411 eval $inhdr
12412
12413
12414 : see if this is a sys/statfs.h system
12415 set sys/statfs.h i_sysstatfs
12416 eval $inhdr
12417
12418
12419 echo " "
12420 echo "Checking to see if your system supports struct statfs..." >&4
12421 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
12422 eval $hasstruct
12423 case "$d_statfs_s" in
12424 "$define")      echo "Yes, it does."   ;;
12425 *)              echo "No, it doesn't." ;;
12426 esac
12427
12428
12429
12430 : see if struct statfs knows about f_flags
12431 case "$d_statfs_s" in
12432 define) 
12433         echo " "
12434         echo "Checking to see if your struct statfs has f_flags field..." >&4
12435         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
12436         eval $hasfield
12437         ;;
12438 *)      val="$undef"
12439         set d_statfs_f_flags
12440         eval $setvar
12441         ;;
12442 esac
12443 case "$d_statfs_f_flags" in
12444 "$define")      echo "Yes, it does."   ;;
12445 *)              echo "No, it doesn't." ;;
12446 esac
12447
12448 : see if _ptr and _cnt from stdio act std
12449 echo " "
12450
12451 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12452         echo "(Looks like you have stdio.h from BSD.)"
12453         case "$stdio_ptr" in
12454         '') stdio_ptr='((fp)->_p)'
12455                 ptr_lval=$define
12456                 ;;
12457         *)      ptr_lval=$d_stdio_ptr_lval;;
12458         esac
12459         case "$stdio_cnt" in
12460         '') stdio_cnt='((fp)->_r)'
12461                 cnt_lval=$define
12462                 ;;
12463         *)      cnt_lval=$d_stdio_cnt_lval;;
12464         esac
12465         case "$stdio_base" in
12466         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12467         esac
12468         case "$stdio_bufsiz" in
12469         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12470         esac
12471 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12472         echo "(Looks like you have stdio.h from Linux.)"
12473         case "$stdio_ptr" in
12474         '') stdio_ptr='((fp)->_IO_read_ptr)'
12475                 ptr_lval=$define
12476                 ;;
12477         *)      ptr_lval=$d_stdio_ptr_lval;;
12478         esac
12479         case "$stdio_cnt" in
12480         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12481                 cnt_lval=$undef
12482                 ;;
12483         *)      cnt_lval=$d_stdio_cnt_lval;;
12484         esac
12485         case "$stdio_base" in
12486         '') stdio_base='((fp)->_IO_read_base)';;
12487         esac
12488         case "$stdio_bufsiz" in
12489         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12490         esac
12491 else
12492         case "$stdio_ptr" in
12493         '') stdio_ptr='((fp)->_ptr)'
12494                 ptr_lval=$define
12495                 ;;
12496         *)      ptr_lval=$d_stdio_ptr_lval;;
12497         esac
12498         case "$stdio_cnt" in
12499         '') stdio_cnt='((fp)->_cnt)'
12500                 cnt_lval=$define
12501                 ;;
12502         *)      cnt_lval=$d_stdio_cnt_lval;;
12503         esac
12504         case "$stdio_base" in
12505         '') stdio_base='((fp)->_base)';;
12506         esac
12507         case "$stdio_bufsiz" in
12508         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12509         esac
12510 fi
12511
12512 : test whether _ptr and _cnt really work
12513 echo "Checking how std your stdio is..." >&4
12514 $cat >try.c <<EOP
12515 #include <stdio.h>
12516 #define FILE_ptr(fp)    $stdio_ptr
12517 #define FILE_cnt(fp)    $stdio_cnt
12518 int main() {
12519         FILE *fp = fopen("try.c", "r");
12520         char c = getc(fp);
12521         if (
12522                 18 <= FILE_cnt(fp) &&
12523                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12524         )
12525                 exit(0);
12526         exit(1);
12527 }
12528 EOP
12529 val="$undef"
12530 set try
12531 if eval $compile && $to try.c; then
12532         if $run ./try; then
12533                 echo "Your stdio acts pretty std."
12534                 val="$define"
12535         else
12536                 echo "Your stdio isn't very std."
12537         fi
12538 else
12539         echo "Your stdio doesn't appear very std."
12540 fi
12541 $rm -f try.c try
12542 set d_stdstdio
12543 eval $setvar
12544
12545 : Can _ptr be used as an lvalue?
12546 case "$d_stdstdio$ptr_lval" in
12547 $define$define) val=$define ;;
12548 *) val=$undef ;;
12549 esac
12550 set d_stdio_ptr_lval
12551 eval $setvar
12552
12553 : Can _cnt be used as an lvalue?
12554 case "$d_stdstdio$cnt_lval" in
12555 $define$define) val=$define ;;
12556 *) val=$undef ;;
12557 esac
12558 set d_stdio_cnt_lval
12559 eval $setvar
12560
12561
12562 : test whether setting _ptr sets _cnt as a side effect
12563 d_stdio_ptr_lval_sets_cnt="$undef"
12564 d_stdio_ptr_lval_nochange_cnt="$undef"
12565 case "$d_stdio_ptr_lval$d_stdstdio" in
12566 $define$define)
12567         echo "Checking to see what happens if we set the stdio ptr..." >&4
12568 $cat >try.c <<EOP
12569 #include <stdio.h>
12570 /* Can we scream? */
12571 /* Eat dust sed :-) */
12572 /* In the buffer space, no one can hear you scream. */
12573 #define FILE_ptr(fp)    $stdio_ptr
12574 #define FILE_cnt(fp)    $stdio_cnt
12575 #include <sys/types.h>
12576 int main() {
12577         FILE *fp = fopen("try.c", "r");
12578         int c;
12579         char *ptr;
12580         size_t cnt;
12581         if (!fp) {
12582             puts("Fail even to read");
12583             exit(1);
12584         }
12585         c = getc(fp); /* Read away the first # */
12586         if (c == EOF) {
12587             puts("Fail even to read");
12588             exit(1);
12589         }
12590         if (!(
12591                 18 <= FILE_cnt(fp) &&
12592                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12593         )) {
12594                 puts("Fail even to read");
12595                 exit (1);
12596         }
12597         ptr = (char*) FILE_ptr(fp);
12598         cnt = (size_t)FILE_cnt(fp);
12599
12600         FILE_ptr(fp) += 42;
12601
12602         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12603                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12604                 exit (1);
12605         }
12606         if (FILE_cnt(fp) <= 20) {
12607                 printf ("Fail (<20 chars to test)");
12608                 exit (1);
12609         }
12610         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12611                 puts("Fail compare");
12612                 exit (1);
12613         }
12614         if (cnt == FILE_cnt(fp)) {
12615                 puts("Pass_unchanged");
12616                 exit (0);
12617         }       
12618         if (FILE_cnt(fp) == (cnt - 42)) {
12619                 puts("Pass_changed");
12620                 exit (0);
12621         }
12622         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12623         return 1;
12624
12625 }
12626 EOP
12627         set try
12628         if eval $compile && $to try.c; then
12629                 case `$run ./try` in
12630                 Pass_changed)
12631                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12632                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12633                 Pass_unchanged)
12634                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12635                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12636                 Fail*)
12637                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12638                 *)
12639                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12640         esac
12641         else
12642                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12643         fi
12644         $rm -f try.c try
12645         ;;
12646 esac
12647
12648 : see if _base is also standard
12649 val="$undef"
12650 case "$d_stdstdio" in
12651 $define)
12652         $cat >try.c <<EOP
12653 #include <stdio.h>
12654 #define FILE_base(fp)   $stdio_base
12655 #define FILE_bufsiz(fp) $stdio_bufsiz
12656 int main() {
12657         FILE *fp = fopen("try.c", "r");
12658         char c = getc(fp);
12659         if (
12660                 19 <= FILE_bufsiz(fp) &&
12661                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12662         )
12663                 exit(0);
12664         exit(1);
12665 }
12666 EOP
12667         set try
12668         if eval $compile && $to try.c; then
12669                 if $run ./try; then
12670                         echo "And its _base field acts std."
12671                         val="$define"
12672                 else
12673                         echo "But its _base field isn't std."
12674                 fi
12675         else
12676                 echo "However, it seems to be lacking the _base field."
12677         fi
12678         $rm -f try.c try
12679         ;;
12680 esac
12681 set d_stdiobase
12682 eval $setvar
12683
12684 $cat >&4 <<EOM
12685 Checking how to access stdio streams by file descriptor number...
12686 EOM
12687 case "$stdio_stream_array" in
12688 '')     $cat >try.c <<EOCP
12689 #include <stdio.h>
12690 int main() {
12691   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12692     printf("yes\n");
12693 }
12694 EOCP
12695         for s in _iob __iob __sF
12696         do
12697                 set try -DSTDIO_STREAM_ARRAY=$s
12698                 if eval $compile; then
12699                         case "`$run ./try`" in
12700                         yes)    stdio_stream_array=$s; break ;;
12701                         esac
12702                 fi
12703         done
12704         $rm -f try.* try$exe_ext
12705 esac
12706 case "$stdio_stream_array" in
12707 '')     $cat >&4 <<EOM
12708 I can't figure out how to access stdio streams by file descriptor number.
12709 EOM
12710         d_stdio_stream_array="$undef"
12711         ;;
12712 *)      $cat >&4 <<EOM
12713 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12714 EOM
12715         d_stdio_stream_array="$define"
12716         ;;
12717 esac
12718
12719 : see if strcoll exists
12720 set strcoll d_strcoll
12721 eval $inlibc
12722
12723 : check for structure copying
12724 echo " "
12725 echo "Checking to see if your C compiler can copy structs..." >&4
12726 $cat >try.c <<'EOCP'
12727 int main()
12728 {
12729         struct blurfl {
12730                 int dyick;
12731         } foo, bar;
12732
12733         foo = bar;
12734 }
12735 EOCP
12736 if $cc -c try.c >/dev/null 2>&1 ; then
12737         val="$define"
12738         echo "Yup, it can."
12739 else
12740         val="$undef"
12741         echo "Nope, it can't."
12742 fi
12743 set d_strctcpy
12744 eval $setvar
12745 $rm -f try.*
12746
12747 : see if strerror and/or sys_errlist[] exist
12748 echo " "
12749 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12750     if set strerror val -f d_strerror; eval $csym; $val; then
12751                 echo 'strerror() found.' >&4
12752                 d_strerror="$define"
12753                 d_strerrm='strerror(e)'
12754                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12755                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12756                         d_syserrlst="$define"
12757                 else
12758                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12759                         d_syserrlst="$undef"
12760                 fi
12761     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12762                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12763                 echo 'strerror() found in string header.' >&4
12764                 d_strerror="$define"
12765                 d_strerrm='strerror(e)'
12766                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12767                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12768                                 d_syserrlst="$define"
12769                 else
12770                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12771                         d_syserrlst="$undef"
12772                 fi
12773     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12774                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12775                 d_strerror="$undef"
12776                 d_syserrlst="$define"
12777                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12778     else
12779                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12780                 d_strerror="$undef"
12781                 d_syserrlst="$undef"
12782                 d_strerrm='"unknown"'
12783     fi
12784 fi
12785
12786 : see if strftime exists
12787 set strftime d_strftime
12788 eval $inlibc
12789
12790 : see if strtod exists
12791 set strtod d_strtod
12792 eval $inlibc
12793
12794 : see if strtol exists
12795 set strtol d_strtol
12796 eval $inlibc
12797
12798 : see if strtold exists
12799 set strtold d_strtold
12800 eval $inlibc
12801
12802 : see if strtoll exists
12803 set strtoll d_strtoll
12804 eval $inlibc
12805
12806 case "$d_longlong-$d_strtoll" in
12807 "$define-$define")
12808         $cat <<EOM
12809 Checking whether your strtoll() works okay...
12810 EOM
12811         $cat >try.c <<'EOCP'
12812 #include <errno.h>
12813 #ifdef __hpux
12814 #define strtoll __strtoll
12815 #endif
12816 #ifdef __EMX__
12817 #define strtoll _strtoll
12818 #endif
12819 #include <stdio.h>
12820 extern long long int strtoll(char *s, char **, int); 
12821 static int bad = 0;
12822 int check(char *s, long long ell, int een) {
12823         long long gll;
12824         errno = 0;
12825         gll = strtoll(s, 0, 10);
12826         if (!((gll == ell) && (errno == een)))
12827                 bad++;
12828 }
12829 int main() {
12830         check(" 1",                                      1LL, 0);
12831         check(" 0",                                      0LL, 0);
12832         check("-1",                                     -1LL, 0);
12833         check("-9223372036854775808", -9223372036854775808LL, 0);
12834         check("-9223372036854775808", -9223372036854775808LL, 0);
12835         check(" 9223372036854775807",  9223372036854775807LL, 0);
12836         check("-9223372036854775808", -9223372036854775808LL, 0);
12837         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12838         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12839         if (!bad)
12840                 printf("ok\n");
12841 }
12842 EOCP
12843         set try
12844         if eval $compile; then
12845                 yyy=`$run ./try`
12846                 case "$yyy" in
12847                 ok) echo "Your strtoll() seems to be working okay." ;;
12848                 *) cat <<EOM >&4
12849 Your strtoll() doesn't seem to be working okay.
12850 EOM
12851                    d_strtoll="$undef"
12852                    ;;
12853                 esac
12854         else
12855                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12856                 d_strtoll="$undef"
12857         fi
12858         ;;
12859 esac
12860
12861 : see if strtoq exists
12862 set strtoq d_strtoq
12863 eval $inlibc
12864
12865 : see if strtoul exists
12866 set strtoul d_strtoul
12867 eval $inlibc
12868
12869 case "$d_strtoul" in
12870 "$define")
12871         $cat <<EOM
12872 Checking whether your strtoul() works okay...
12873 EOM
12874         $cat >try.c <<'EOCP'
12875 #include <errno.h>
12876 #include <stdio.h>
12877 extern unsigned long int strtoul(char *s, char **, int); 
12878 static int bad = 0;
12879 void check(char *s, unsigned long eul, int een) {
12880         unsigned long gul;
12881         errno = 0;
12882         gul = strtoul(s, 0, 10);
12883         if (!((gul == eul) && (errno == een)))
12884                 bad++;
12885 }
12886 int main() {
12887         check(" 1", 1L, 0);
12888         check(" 0", 0L, 0);
12889 EOCP
12890         case "$longsize" in
12891         8)
12892             $cat >>try.c <<'EOCP'
12893         check("18446744073709551615", 18446744073709551615UL, 0);
12894         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12895 #if 0 /* strtoul() for /^-/ strings is undefined. */
12896         check("-1", 18446744073709551615UL, 0);
12897         check("-18446744073709551614", 2, 0);
12898         check("-18446744073709551615", 1, 0);
12899         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12900         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12901 #endif
12902 EOCP
12903                 ;;
12904         4)
12905                     $cat >>try.c <<'EOCP'
12906         check("4294967295", 4294967295UL, 0);
12907         check("4294967296", 4294967295UL, ERANGE);
12908 #if 0 /* strtoul() for /^-/ strings is undefined. */
12909         check("-1", 4294967295UL, 0);
12910         check("-4294967294", 2, 0);
12911         check("-4294967295", 1, 0);
12912         check("-4294967296", 4294967295UL, ERANGE);
12913         check("-4294967297", 4294967295UL, ERANGE);
12914 #endif
12915 EOCP
12916                 ;;
12917         *)
12918 : Should we write these tests to be more portable by sprintf-ing
12919 : ~0 and then manipulating that char string as input for strtol?
12920                 ;;
12921         esac
12922         $cat >>try.c <<'EOCP'
12923         if (!bad)
12924                 printf("ok\n");
12925         return 0;
12926 }
12927 EOCP
12928         set try
12929         if eval $compile; then
12930                 case "`$run ./try`" in
12931                 ok) echo "Your strtoul() seems to be working okay." ;;
12932                 *) cat <<EOM >&4
12933 Your strtoul() doesn't seem to be working okay.
12934 EOM
12935                    d_strtoul="$undef"
12936                    ;;
12937                 esac
12938         fi
12939         ;;
12940 esac
12941
12942 : see if strtoull exists
12943 set strtoull d_strtoull
12944 eval $inlibc
12945
12946 case "$d_longlong-$d_strtoull" in
12947 "$define-$define")
12948         $cat <<EOM
12949 Checking whether your strtoull() works okay...
12950 EOM
12951         $cat >try.c <<'EOCP'
12952 #include <errno.h>
12953 #ifdef __hpux
12954 #define strtoull __strtoull
12955 #endif
12956 #include <stdio.h>
12957 extern unsigned long long int strtoull(char *s, char **, int); 
12958 static int bad = 0;
12959 int check(char *s, long long eull, int een) {
12960         long long gull;
12961         errno = 0;
12962         gull = strtoull(s, 0, 10);
12963         if (!((gull == eull) && (errno == een)))
12964                 bad++;
12965 }
12966 int main() {
12967         check(" 1",                                        1LL, 0);
12968         check(" 0",                                        0LL, 0);
12969         check("18446744073709551615",  18446744073709551615ULL, 0);
12970         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12971 #if 0 /* strtoull() for /^-/ strings is undefined. */
12972         check("-1",                    18446744073709551615ULL, 0);
12973         check("-18446744073709551614",                     2LL, 0);
12974         check("-18446744073709551615",                     1LL, 0);
12975         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12976         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12977 #endif
12978         if (!bad)
12979                 printf("ok\n");
12980 }
12981 EOCP
12982         set try
12983         if eval $compile; then
12984                 case "`$run ./try`" in
12985                 ok) echo "Your strtoull() seems to be working okay." ;;
12986                 *) cat <<EOM >&4
12987 Your strtoull() doesn't seem to be working okay.
12988 EOM
12989                    d_strtoull="$undef"
12990                    ;;
12991                 esac
12992         fi
12993         ;;
12994 esac
12995
12996 : see if strtouq exists
12997 set strtouq d_strtouq
12998 eval $inlibc
12999
13000 case "$d_strtouq" in
13001 "$define")
13002         $cat <<EOM
13003 Checking whether your strtouq() works okay...
13004 EOM
13005         $cat >try.c <<'EOCP'
13006 #include <errno.h>
13007 #include <stdio.h>
13008 extern unsigned long long int strtouq(char *s, char **, int); 
13009 static int bad = 0;
13010 void check(char *s, unsigned long long eull, int een) {
13011         unsigned long long gull;
13012         errno = 0;
13013         gull = strtouq(s, 0, 10);
13014         if (!((gull == eull) && (errno == een)))
13015                 bad++;
13016 }
13017 int main() {
13018         check(" 1",                                        1LL, 0);
13019         check(" 0",                                        0LL, 0);
13020         check("18446744073709551615",  18446744073709551615ULL, 0);
13021         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
13022 #if 0 /* strtouq() for /^-/ strings is undefined. */
13023         check("-1",                    18446744073709551615ULL, 0);
13024         check("-18446744073709551614",                     2LL, 0);
13025         check("-18446744073709551615",                     1LL, 0);
13026         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
13027         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
13028 #endif
13029         if (!bad)
13030                 printf("ok\n");
13031         return 0;
13032 }
13033 EOCP
13034         set try
13035         if eval $compile; then
13036                 case "`$run ./try`" in
13037                 ok) echo "Your strtouq() seems to be working okay." ;;
13038                 *) cat <<EOM >&4
13039 Your strtouq() doesn't seem to be working okay.
13040 EOM
13041                    d_strtouq="$undef"
13042                    ;;
13043                 esac
13044         fi
13045         ;;
13046 esac
13047
13048 : see if strxfrm exists
13049 set strxfrm d_strxfrm
13050 eval $inlibc
13051
13052 : see if symlink exists
13053 set symlink d_symlink
13054 eval $inlibc
13055
13056 : see if syscall exists
13057 set syscall d_syscall
13058 eval $inlibc
13059
13060 : see if prototype for syscall is available
13061 echo " "
13062 set d_syscallproto syscall $i_unistd unistd.h
13063 eval $hasproto
13064
13065 : see if sysconf exists
13066 set sysconf d_sysconf
13067 eval $inlibc
13068
13069 : see if system exists
13070 set system d_system
13071 eval $inlibc
13072
13073 : see if tcgetpgrp exists
13074 set tcgetpgrp d_tcgetpgrp
13075 eval $inlibc
13076
13077 : see if tcsetpgrp exists
13078 set tcsetpgrp d_tcsetpgrp
13079 eval $inlibc
13080
13081 : see if prototype for telldir is available
13082 echo " "
13083 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13084 eval $hasproto
13085
13086 : see if this is a sys/times.h system
13087 set sys/times.h i_systimes
13088 eval $inhdr
13089
13090 : see if times exists
13091 echo " "
13092 if set times val -f d_times; eval $csym; $val; then
13093         echo 'times() found.' >&4
13094         d_times="$define"
13095         inc=''
13096         case "$i_systimes" in
13097         "$define") inc='sys/times.h';;
13098         esac
13099         rp="What is the type returned by times() on this system?"
13100         set clock_t clocktype long stdio.h sys/types.h $inc
13101         eval $typedef_ask
13102 else
13103         echo 'times() NOT found, hope that will do.' >&4
13104         d_times="$undef"
13105         clocktype='int'
13106 fi
13107
13108 : see if truncate exists
13109 set truncate d_truncate
13110 eval $inlibc
13111
13112 : see if tzname[] exists
13113 echo " "
13114 if set tzname val -a d_tzname; eval $csym; $val; then
13115         val="$define"
13116         echo 'tzname[] found.' >&4
13117 else
13118         val="$undef"
13119         echo 'tzname[] NOT found.' >&4
13120 fi
13121 set d_tzname
13122 eval $setvar
13123
13124 case "$osname" in
13125 next|rhapsody|darwin) multiarch="$define" ;;
13126 esac
13127 case "$multiarch" in
13128 ''|[nN]*) multiarch="$undef" ;;
13129 esac
13130
13131 : check for ordering of bytes in a long
13132 echo " "
13133 case "$usecrosscompile$multiarch" in
13134 *$define*)
13135         $cat <<EOM
13136 You seem to be either cross-compiling or doing a multiarchitecture build,
13137 skipping the byteorder check.
13138
13139 EOM
13140         byteorder='ffff'
13141         ;;
13142 *)
13143         case "$byteorder" in
13144         '')
13145                 $cat <<'EOM'
13146 In the following, larger digits indicate more significance.  A big-endian
13147 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13148 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13149 machines may have weird orders like 3412.  A Cray will report 87654321,
13150 an Alpha will report 12345678. If the test program works the default is
13151 probably right.
13152 I'm now running the test program...
13153 EOM
13154                 $cat >try.c <<'EOCP'
13155 #include <stdio.h>
13156 int main()
13157 {
13158         int i;
13159         union {
13160                 unsigned long l;
13161                 char c[sizeof(long)];
13162         } u;
13163
13164         if (sizeof(long) > 4)
13165                 u.l = (0x08070605L << 32) | 0x04030201L;
13166         else
13167                 u.l = 0x04030201L;
13168         for (i = 0; i < sizeof(long); i++)
13169                 printf("%c", u.c[i]+'0');
13170         printf("\n");
13171         exit(0);
13172 }
13173 EOCP
13174                 xxx_prompt=y
13175                 set try
13176                 if eval $compile && ./try > /dev/null; then
13177                         dflt=`$run ./try`
13178                         case "$dflt" in
13179                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13180                                 echo "(The test program ran ok.)"
13181                                 echo "byteorder=$dflt"
13182                                 xxx_prompt=n
13183                         ;;
13184                         ????|????????) echo "(The test program ran ok.)" ;;
13185                         *) echo "(The test program didn't run right for some reason.)" ;;
13186                         esac
13187                 else
13188                         dflt='4321'
13189                         cat <<'EOM'
13190 (I can't seem to compile the test program.  Guessing big-endian...)
13191 EOM
13192                 fi
13193                 case "$xxx_prompt" in
13194                 y)
13195                         rp="What is the order of bytes in a long?"
13196                         . ./myread
13197                         byteorder="$ans"
13198                         ;;
13199                 *)      byteorder=$dflt
13200                         ;;
13201                 esac
13202                 ;;
13203         esac
13204         $rm -f try.c try
13205         ;;
13206 esac
13207
13208
13209 $cat <<EOM
13210
13211 Checking to see whether you can access character data unalignedly...
13212 EOM
13213 $cat >try.c <<EOCP
13214 #include <stdio.h>
13215 #define U32 $u32type
13216 #define BYTEORDER $byteorder
13217 int main() {
13218 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13219     U8 buf[] = "\0\0\0\1\0\0\0\0";
13220     U32 *up;
13221     int i;
13222
13223     if (sizeof(U32) != 4) {
13224         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13225         exit(1);
13226     }
13227
13228     fflush(stdout);
13229
13230     for (i = 0; i < 4; i++) {
13231         up = (U32*)(buf + i);
13232         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13233                (*up == 1 << (8*(3-i)))  /* little-endian */
13234               )
13235            )
13236         {
13237             printf("read failed (%x)\n", *up);
13238             exit(2);
13239         }
13240     }
13241
13242     /* write test */
13243     for (i = 0; i < 4; i++) {
13244         up = (U32*)(buf + i);
13245         *up = 0xBeef;
13246         if (*up != 0xBeef) {
13247             printf("write failed (%x)\n", *up);
13248             exit(3);
13249         }
13250     }
13251
13252     exit(0);
13253 #else
13254     printf("1\n");
13255     exit(1);
13256 #endif
13257     return 0;
13258 }
13259 EOCP
13260 set try
13261 if eval $compile_ok; then
13262         echo "(Testing for character data alignment may dump core.)" >&4
13263         $run ./try 2>&1 >/dev/null
13264         case "$?" in
13265         0)      cat >&4 <<EOM
13266 You can access character data pretty unalignedly.
13267 EOM
13268                 d_u32align="$undef"
13269                 ;;
13270         *)      cat >&4 <<EOM
13271 It seems that you must access character data in an aligned manner.
13272 EOM
13273                 d_u32align="$define"
13274                 ;;
13275         esac
13276         $rm -f core core.try.* try.core
13277 else
13278         rp='Can you access character data at unaligned addresses?'
13279         dflt='n'
13280         . ./myread
13281         case "$ans" in
13282         [yY]*)  d_u32align="$undef"  ;;
13283         *)      d_u32align="$define" ;;
13284         esac
13285 fi
13286
13287 : see if ualarm exists
13288 set ualarm d_ualarm
13289 eval $inlibc
13290
13291 : see if umask exists
13292 set umask d_umask
13293 eval $inlibc
13294
13295 : see if usleep exists
13296 set usleep d_usleep
13297 eval $inlibc
13298
13299 : see if prototype for usleep is available
13300 echo " "
13301 set d_usleepproto usleep $i_unistd unistd.h
13302 eval $hasproto
13303
13304 : see if ustat exists
13305 set ustat d_ustat
13306 eval $inlibc
13307
13308 : backward compatibility for d_hvfork
13309 if test X$d_hvfork != X; then
13310         d_vfork="$d_hvfork"
13311         d_hvfork=''
13312 fi
13313 : see if there is a vfork
13314 val=''
13315 set vfork val
13316 eval $inlibc
13317
13318 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13319 : perl on Solaris 2.x, and probably elsewhere.
13320 case "$val" in
13321 $define)
13322         echo " "
13323         case "$usevfork" in
13324         false) dflt='n';;
13325         *) dflt='y';;
13326         esac
13327         cat <<'EOM'
13328  
13329 Perl can only use a vfork() that doesn't suffer from strict
13330 restrictions on calling functions or modifying global data in
13331 the child.  For example, glibc-2.1 contains such a vfork()
13332 that is unsuitable.  If your system provides a proper fork()
13333 call, chances are that you do NOT want perl to use vfork().
13334
13335 EOM
13336         rp="Do you still want to use vfork()?"
13337         . ./myread
13338         case "$ans" in
13339         y|Y) ;;
13340         *)
13341                 echo "Ok, we won't use vfork()."
13342                 val="$undef"
13343                 ;;
13344         esac
13345         ;;
13346 esac
13347 set d_vfork
13348 eval $setvar
13349 case "$d_vfork" in
13350 $define) usevfork='true';;
13351 *) usevfork='false';;
13352 esac
13353
13354 : see if this is an sysdir system
13355 set sys/dir.h i_sysdir
13356 eval $inhdr
13357
13358 : see if this is an sysndir system
13359 set sys/ndir.h i_sysndir
13360 eval $inhdr
13361
13362 : see if closedir exists
13363 set closedir d_closedir
13364 eval $inlibc
13365
13366 case "$d_closedir" in
13367 "$define")
13368         echo " "
13369         echo "Checking whether closedir() returns a status..." >&4
13370         cat > try.c <<EOM
13371 #$i_dirent I_DIRENT             /**/
13372 #$i_sysdir I_SYS_DIR            /**/
13373 #$i_sysndir I_SYS_NDIR          /**/
13374 #$i_systypes I_SYS_TYPES        /**/
13375
13376 #if defined(I_SYS_TYPES)
13377 #include <sys/types.h>
13378 #endif
13379 #if defined(I_DIRENT)
13380 #include <dirent.h>
13381 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13382 #include <sys/dir.h>
13383 #endif
13384 #else
13385 #ifdef I_SYS_NDIR
13386 #include <sys/ndir.h>
13387 #else
13388 #ifdef I_SYS_DIR
13389 #ifdef hp9000s500
13390 #include <ndir.h>       /* may be wrong in the future */
13391 #else
13392 #include <sys/dir.h>
13393 #endif
13394 #endif
13395 #endif
13396 #endif 
13397 int main() { return closedir(opendir(".")); }
13398 EOM
13399         set try
13400         if eval $compile_ok; then
13401                 if $run ./try > /dev/null 2>&1 ; then
13402                         echo "Yes, it does."
13403                         val="$undef"
13404                 else
13405                         echo "No, it doesn't."
13406                         val="$define"
13407                 fi
13408         else
13409                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13410                 val="$define"
13411         fi
13412         ;;
13413 *)
13414         val="$undef";
13415         ;;
13416 esac
13417 set d_void_closedir
13418 eval $setvar
13419 $rm -f try try.*
13420 : see if there is a wait4
13421 set wait4 d_wait4
13422 eval $inlibc
13423
13424 : see if waitpid exists
13425 set waitpid d_waitpid
13426 eval $inlibc
13427
13428 : see if wcstombs exists
13429 set wcstombs d_wcstombs
13430 eval $inlibc
13431
13432 : see if wctomb exists
13433 set wctomb d_wctomb
13434 eval $inlibc
13435
13436 : see if writev exists
13437 set writev d_writev
13438 eval $inlibc
13439
13440 : preserve RCS keywords in files with variable substitution, grrr
13441 Date='$Date'
13442 Id='$Id'
13443 Log='$Log'
13444 RCSfile='$RCSfile'
13445 Revision='$Revision'
13446
13447 : check for alignment requirements
13448 echo " "
13449 case "$usecrosscompile$multiarch" in
13450 *$define*)
13451         $cat <<EOM
13452 You seem to be either cross-compiling or doing a multiarchitecture build,
13453 skipping the memory alignment check.
13454
13455 EOM
13456         case "$alignbytes" in
13457         '') alignbytes=8 ;;
13458         esac
13459         ;;
13460 *)
13461         case "$alignbytes" in
13462         '') echo "Checking alignment constraints..." >&4
13463                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13464                         $cat >try.c <<'EOCP'
13465 typedef long double NV;
13466 EOCP
13467                 else
13468                         $cat >try.c <<'EOCP'
13469 typedef double NV;
13470 EOCP
13471                 fi
13472                 $cat >>try.c <<'EOCP'
13473 #include <stdio.h>
13474 struct foobar {
13475         char foo;
13476         NV bar;
13477 } try_algn;
13478 int main()
13479 {
13480     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13481     return(0);
13482 }
13483 EOCP
13484                 set try
13485                 if eval $compile_ok; then
13486                         dflt=`$run ./try`
13487                 else
13488                         dflt='8'
13489                         echo "(I can't seem to compile the test program...)"
13490                 fi
13491                 ;;
13492         *) dflt="$alignbytes"
13493                 ;;
13494         esac
13495         rp="Doubles must be aligned on a how-many-byte boundary?"
13496         . ./myread
13497         alignbytes="$ans"
13498         $rm -f try.c try
13499         ;;
13500 esac
13501
13502
13503 : set the base revision
13504 baserev=5.0
13505
13506 : how do we catenate cpp tokens here?
13507 echo " "
13508 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13509 $cat >cpp_stuff.c <<'EOCP'
13510 #define RCAT(a,b)a/**/b
13511 #define ACAT(a,b)a ## b
13512 RCAT(Rei,ser)
13513 ACAT(Cir,cus)
13514 EOCP
13515 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13516 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13517         echo "Oh!  Smells like ANSI's been here." >&4
13518         echo "We can catify or stringify, separately or together!"
13519         cpp_stuff=42
13520 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13521         echo "Ah, yes!  The good old days!" >&4
13522         echo "However, in the good old days we don't know how to stringify and"
13523         echo "catify at the same time."
13524         cpp_stuff=1
13525 else
13526         $cat >&4 <<EOM
13527 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13528 to have to edit the values of CAT[2-5] in config.h...
13529 EOM
13530         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13531 fi
13532 $rm -f cpp_stuff.*
13533
13534 : see if this is a db.h system
13535 set db.h i_db
13536 eval $inhdr
13537
13538 case "$i_db" in
13539 $define)
13540         : Check db version.
13541         echo " "
13542         echo "Checking Berkeley DB version ..." >&4
13543         $cat >try.c <<EOCP
13544 #$d_const HASCONST
13545 #ifndef HASCONST
13546 #define const
13547 #endif
13548 #include <sys/types.h>
13549 #include <stdio.h>
13550 #include <db.h>
13551 int main(int argc, char *argv[])
13552 {
13553 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13554     int Major, Minor, Patch ;
13555     unsigned long Version ;
13556     (void)db_version(&Major, &Minor, &Patch) ;
13557     if (argc == 2) {
13558         printf("%d %d %d %d %d %d\n",
13559                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13560                Major, Minor, Patch);
13561         exit(0);
13562     }
13563     printf("You have Berkeley DB Version 2 or greater.\n");
13564
13565     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13566                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13567     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13568                 Major, Minor, Patch) ;
13569
13570     /* check that db.h & libdb are compatible */
13571     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13572         printf("db.h and libdb are incompatible.\n") ;
13573         exit(3);        
13574     }
13575
13576     printf("db.h and libdb are compatible.\n") ;
13577
13578     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13579                 + DB_VERSION_PATCH ;
13580
13581     /* needs to be >= 2.3.4 */
13582     if (Version < 2003004) {
13583     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13584         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13585         exit(2);        
13586     }
13587
13588     exit(0);
13589 #else
13590 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13591     if (argc == 2) {
13592         printf("1 0 0\n");
13593         exit(0);
13594     }
13595     printf("You have Berkeley DB Version 1.\n");
13596     exit(0);    /* DB version < 2: the coast is clear. */
13597 #else
13598     exit(1);    /* <db.h> not Berkeley DB? */
13599 #endif
13600 #endif
13601 }
13602 EOCP
13603         set try
13604         if eval $compile_ok && $run ./try; then
13605                 echo 'Looks OK.' >&4
13606                 set `$run ./try 1`
13607                 db_version_major=$1
13608                 db_version_minor=$2
13609                 db_version_patch=$3
13610         else
13611                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13612                 i_db=$undef
13613                 case " $libs " in
13614                 *"-ldb "*)
13615                         : Remove db from list of libraries to use
13616                         echo "Removing unusable -ldb from library list" >&4
13617                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13618                         shift
13619                         libs="$*"
13620                         echo "libs = $libs" >&4
13621                         ;;
13622                 esac
13623         fi
13624         $rm -f try.*
13625         ;;
13626 esac
13627
13628 case "$i_db" in
13629 define)
13630         : Check the return type needed for hash 
13631         echo " "
13632         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13633         $cat >try.c <<EOCP
13634 #$d_const HASCONST
13635 #ifndef HASCONST
13636 #define const
13637 #endif
13638 #include <sys/types.h>
13639 #include <db.h>
13640
13641 #ifndef DB_VERSION_MAJOR
13642 u_int32_t hash_cb (ptr, size)
13643 const void *ptr;
13644 size_t size;
13645 {
13646 }
13647 HASHINFO info;
13648 int main()
13649 {
13650         info.hash = hash_cb;
13651 }
13652 #endif
13653 EOCP
13654         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13655                 if $contains warning try.out >>/dev/null 2>&1 ; then
13656                         db_hashtype='int'
13657                 else
13658                         db_hashtype='u_int32_t'
13659                 fi
13660         else
13661                 : XXX Maybe we should just give up here.
13662                 db_hashtype=u_int32_t
13663                 $cat try.out >&4
13664                 echo "Help:  I can't seem to compile the db test program." >&4
13665                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13666         fi
13667         $rm -f try.*
13668         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13669         ;;
13670 *)      db_hashtype=u_int32_t
13671         ;;
13672 esac
13673 case "$i_db" in
13674 define)
13675         : Check the return type needed for prefix 
13676         echo " "
13677         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13678         cat >try.c <<EOCP
13679 #$d_const HASCONST
13680 #ifndef HASCONST
13681 #define const
13682 #endif
13683 #include <sys/types.h>
13684 #include <db.h>
13685
13686 #ifndef DB_VERSION_MAJOR
13687 size_t prefix_cb (key1, key2)
13688 const DBT *key1;
13689 const DBT *key2;
13690 {
13691 }
13692 BTREEINFO info;
13693 int main()
13694 {
13695         info.prefix = prefix_cb;
13696 }
13697 #endif
13698 EOCP
13699         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13700                 if $contains warning try.out >>/dev/null 2>&1 ; then
13701                         db_prefixtype='int'
13702                 else
13703                         db_prefixtype='size_t'
13704                 fi
13705         else
13706                 db_prefixtype='size_t'
13707                 : XXX Maybe we should just give up here.
13708                 $cat try.out >&4
13709                 echo "Help:  I can't seem to compile the db test program." >&4
13710                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13711         fi
13712         $rm -f try.*
13713         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13714         ;;
13715 *)      db_prefixtype='size_t'
13716         ;;
13717 esac
13718
13719
13720 : How can we generate normalized random numbers ?
13721 echo " "
13722 echo "Looking for a random number function..." >&4
13723 case "$randfunc" in
13724 '')
13725         if set drand48 val -f; eval $csym; $val; then
13726                 dflt="drand48"
13727                 echo "Good, found drand48()." >&4
13728         elif set random val -f; eval $csym; $val; then
13729                 dflt="random"
13730                 echo "OK, found random()." >&4
13731         else
13732                 dflt="rand"
13733                 echo "Yick, looks like I have to use rand()." >&4
13734         fi
13735         echo " "
13736         ;;
13737 *)
13738         dflt="$randfunc"
13739         ;;
13740 esac
13741 cont=true
13742
13743 case "$ccflags" in
13744 *-Dmy_rand=*|*-Dmy_srand=*)
13745         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13746         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13747         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13748         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13749         ;;
13750 esac
13751
13752 while $test "$cont"; do
13753         rp="Use which function to generate random numbers?"
13754         . ./myread
13755         if $test "$ans" = "$dflt"; then
13756                 : null
13757         else
13758                 randbits=''
13759         fi
13760         randfunc="$ans"
13761         if set $ans val -f; eval $csym; $val; then
13762                 cont=''
13763         else
13764                 dflt=y
13765                 rp="I cannot find function $ans. Use that name anyway?"
13766                 . ./myread
13767                 dflt=rand
13768                 case "$ans" in
13769                         [yY]*) cont='';;
13770                 esac
13771         fi
13772         case "$cont" in
13773         '')
13774                 case "$randfunc" in
13775                 drand48)
13776                         drand01="drand48()"
13777                         seedfunc="srand48"
13778                         randbits=48
13779                         randseedtype=long
13780                         ;;
13781                 rand|random)
13782                         case "$randbits" in
13783                         '')
13784 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13785                                 $cat >try.c <<EOCP
13786 #$i_unistd I_UNISTD
13787 #$i_stdlib I_STDLIB
13788 #include <stdio.h>
13789 #ifdef I_UNISTD
13790 #  include <unistd.h>
13791 #endif
13792 #ifdef I_STDLIB
13793 #  include <stdlib.h>
13794 #endif
13795 int main()
13796 {
13797         register int i;
13798         register unsigned long tmp;
13799         register unsigned long max = 0L;
13800
13801         for (i = 1000; i; i--) {
13802                 tmp = (unsigned long) $randfunc();
13803                 if (tmp > max) max = tmp;
13804         }
13805         for (i = 0; max; i++)
13806                 max /= 2;
13807         printf("%d\n",i);
13808 }
13809 EOCP
13810                                 set try
13811                                 if eval $compile_ok; then
13812                                         dflt=`try`
13813                                 else
13814                                         dflt='?'
13815                                         echo "(I can't seem to compile the test program...)"
13816                                 fi
13817                                 ;;
13818                         *)
13819                                 dflt="$randbits"
13820                                 ;;
13821                         esac
13822                         rp="How many bits does your $randfunc() function produce?"
13823                         . ./myread
13824                         randbits="$ans"
13825                         $rm -f try.c try
13826                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13827                         seedfunc="s$randfunc"
13828                         randseedtype=unsigned
13829                         ;;
13830                 *)
13831                         dflt="31"
13832                         rp="How many bits does your $randfunc() function produce?"
13833                         . ./myread
13834                         randbits="$ans"
13835                         seedfunc="s$randfunc"
13836                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13837                         if set $seedfunc val -f; eval $csym; $val; then
13838                                 echo "(Using $seedfunc() to seed random generator)"
13839                         else
13840                                 echo "(Warning: no $seedfunc() to seed random generator)"
13841                                 seedfunc=rand
13842                         fi
13843                         randseedtype=unsigned
13844                         ;;
13845                 esac
13846                 ;;
13847         esac
13848 done
13849
13850 echo " "
13851 echo "Determining whether or not we are on an EBCDIC system..." >&4
13852 $cat >try.c <<'EOM'
13853 int main()
13854 {
13855   if ('M'==0xd4) return 0;
13856   return 1;
13857 }
13858 EOM
13859
13860 val=$undef
13861 set try
13862 if eval $compile_ok; then
13863         if $run ./try; then
13864                 echo "You seem to speak EBCDIC." >&4
13865                 val="$define"
13866         else
13867                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13868         fi
13869 else
13870         echo "I'm unable to compile the test program." >&4
13871         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13872 fi
13873 $rm -f try try.*
13874 set ebcdic
13875 eval $setvar
13876
13877 echo " "
13878 $cat >&4 <<EOM
13879 Checking how to flush all pending stdio output...
13880 EOM
13881 # I only know how to find the first 32 possibly open files on SunOS.
13882 # See also hints/sunos_4_1.sh and util.c  --AD
13883 case "$osname" in
13884 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13885 esac
13886 $cat >>try.c <<EOCP
13887 #include <stdio.h>
13888 #$i_unistd I_UNISTD
13889 #ifdef I_UNISTD
13890 # include <unistd.h>
13891 #endif
13892 #$d_sysconf HAS_SYSCONF
13893 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13894 #ifdef HAS_STDIO_STREAM_ARRAY
13895 # define STDIO_STREAM_ARRAY $stdio_stream_array
13896 #endif
13897 int main() {
13898   FILE* p;
13899   unlink("try.out");
13900   p = fopen("try.out", "w");
13901 #ifdef TRY_FPUTC
13902   fputc('x', p);
13903 #else
13904 # ifdef TRY_FPRINTF
13905   fprintf(p, "x");
13906 # endif
13907 #endif
13908 #ifdef TRY_FFLUSH_NULL
13909   fflush(NULL);
13910 #endif
13911 #ifdef TRY_FFLUSH_ALL
13912   {
13913     long open_max = -1;
13914 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13915     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13916 # else
13917 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13918     open_max = sysconf(_SC_OPEN_MAX);
13919 #  else
13920 #   ifdef FOPEN_MAX
13921     open_max = FOPEN_MAX;
13922 #   else
13923 #    ifdef OPEN_MAX
13924     open_max = OPEN_MAX;
13925 #    else
13926 #     ifdef _NFILE
13927     open_max = _NFILE;
13928 #     endif
13929 #    endif
13930 #   endif
13931 #  endif
13932 # endif 
13933 # ifdef HAS_STDIO_STREAM_ARRAY
13934     if (open_max > 0) {
13935       long i;
13936       for (i = 0; i < open_max; i++)
13937             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13938                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13939                 STDIO_STREAM_ARRAY[i]._flag)
13940                 fflush(&STDIO_STREAM_ARRAY[i]);
13941     }   
13942   }
13943 # endif
13944 #endif
13945   _exit(42);
13946 }
13947 EOCP
13948 : first we have to find out how _not_ to flush
13949 $to try.c
13950 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13951     output=''
13952     set try -DTRY_FPUTC
13953     if eval $compile; then
13954             $run ./try 2>/dev/null
13955             code="$?"
13956             $from try.out
13957             if $test ! -s try.out -a "X$code" = X42; then
13958                 output=-DTRY_FPUTC
13959             fi
13960     fi
13961     case "$output" in
13962     '')
13963             set try -DTRY_FPRINTF
13964             if eval $compile; then
13965                     $run ./try 2>/dev/null
13966                     code="$?"
13967                     $from try.out
13968                     if $test ! -s try.out -a "X$code" = X42; then
13969                         output=-DTRY_FPRINTF
13970                     fi
13971             fi
13972         ;;
13973     esac
13974 fi
13975 : check for fflush NULL behaviour
13976 case "$fflushNULL" in
13977 '')     set try -DTRY_FFLUSH_NULL $output
13978         if eval $compile; then
13979                 $run ./try 2>/dev/null
13980                 code="$?"
13981                 $from try.out
13982                 if $test -s try.out -a "X$code" = X42; then
13983                         fflushNULL="`$cat try.out`"
13984                 else
13985                         if $test "X$code" != X42; then
13986                                 $cat >&4 <<EOM
13987 (If this test failed, don't worry, we'll try another method shortly.)
13988 EOM
13989                         fi
13990                 fi
13991         fi
13992         $rm -f core try.core core.try.*
13993         case "$fflushNULL" in
13994         x)      $cat >&4 <<EOM
13995 Your fflush(NULL) works okay for output streams.
13996 Let's see if it clobbers input pipes...
13997 EOM
13998 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13999 # bug that improperly flushes the input end of pipes.  So we avoid the
14000 # autoflush on fork/system/exec support for now. :-(
14001 $cat >tryp.c <<EOCP
14002 #include <stdio.h>
14003 int
14004 main(int argc, char **argv)
14005 {
14006     char buf[1024];
14007     int i;
14008     char *bp = buf;
14009     while (1) {
14010         while ((i = getc(stdin)) != -1
14011                && (*bp++ = i) != '\n'
14012                && bp < &buf[1024])
14013         /* DO NOTHING */ ;
14014         *bp = '\0';
14015         fprintf(stdout, "%s", buf);
14016         fflush(NULL);
14017         if (i == -1)
14018             return 0;
14019         bp = buf;
14020     }
14021 }
14022 EOCP
14023                 fflushNULL="$define"
14024                 set tryp
14025                 if eval $compile; then
14026                     $rm -f tryp.out
14027                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14028                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
14029                        $cat >&4 <<EOM
14030 fflush(NULL) seems to behave okay with input streams.
14031 EOM
14032                         fflushNULL="$define"
14033                     else
14034                         $cat >&4 <<EOM
14035 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
14036 EOM
14037                         fflushNULL="$undef"
14038                     fi
14039                 fi
14040                 $rm -f core tryp.c tryp.core core.tryp.*
14041                 ;;
14042         '')     $cat >&4 <<EOM
14043 Your fflush(NULL) isn't working (contrary to ANSI C).
14044 EOM
14045                 fflushNULL="$undef"
14046                 ;;
14047         *)      $cat >&4 <<EOM
14048 Cannot figure out whether your fflush(NULL) works or not.
14049 I'm assuming it doesn't (contrary to ANSI C).
14050 EOM
14051                 fflushNULL="$undef"
14052                 ;;
14053         esac
14054         ;;
14055 $define|true|[yY]*)
14056         fflushNULL="$define"
14057         ;;
14058 *)
14059         fflushNULL="$undef"
14060         ;;
14061 esac
14062 : check explicit looping only if NULL did not work, and if the pipe
14063 : bug does not show up on an explicit flush too
14064 case "$fflushNULL" in
14065 "$undef")
14066         $cat >tryp.c <<EOCP
14067 #include <stdio.h>
14068 int
14069 main(int argc, char **argv)
14070 {
14071     char buf[1024];
14072     int i;
14073     char *bp = buf;
14074     while (1) {
14075         while ((i = getc(stdin)) != -1
14076                && (*bp++ = i) != '\n'
14077                && bp < &buf[1024])
14078         /* DO NOTHING */ ;
14079         *bp = '\0';
14080         fprintf(stdout, "%s", buf);
14081         fflush(stdin);
14082         if (i == -1)
14083             return 0;
14084         bp = buf;
14085     }
14086 }
14087 EOCP
14088         set tryp
14089         if eval $compile; then
14090             $rm -f tryp.out
14091             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14092             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14093                $cat >&4 <<EOM
14094 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14095 EOM
14096                 : now check for fflushall behaviour
14097                 case "$fflushall" in
14098                 '')     set try -DTRY_FFLUSH_ALL $output
14099                         if eval $compile; then
14100                                 $cat >&4 <<EOM
14101 (Now testing the other method--but note that this also may fail.)
14102 EOM
14103                                 $run ./try 2>/dev/null
14104                                 code=$?
14105                                 $from try.out
14106                                 if $test -s try.out -a "X$code" = X42; then
14107                                         fflushall="`$cat try.out`"
14108                                 fi
14109                         fi
14110                         $rm -f core try.core core.try.*
14111                         case "$fflushall" in
14112                         x)      $cat >&4 <<EOM
14113 Whew. Flushing explicitly all the stdio streams works.
14114 EOM
14115                                 fflushall="$define"
14116                                 ;;
14117                         '')     $cat >&4 <<EOM
14118 Sigh. Flushing explicitly all the stdio streams doesn't work.
14119 EOM
14120                                 fflushall="$undef"
14121                                 ;;
14122                         *)      $cat >&4 <<EOM
14123 Cannot figure out whether flushing stdio streams explicitly works or not.
14124 I'm assuming it doesn't.
14125 EOM
14126                                 fflushall="$undef"
14127                                 ;;
14128                         esac
14129                         ;;
14130                 "$define"|true|[yY]*)
14131                         fflushall="$define"
14132                         ;;
14133                 *)
14134                         fflushall="$undef"
14135                         ;;
14136                 esac
14137             else
14138                 $cat >&4 <<EOM
14139 All is futile.  Even fflush(stdin) clobbers input pipes!
14140 EOM
14141                 fflushall="$undef"
14142             fi
14143         else
14144             fflushall="$undef"
14145         fi
14146         $rm -f core tryp.c tryp.core core.tryp.*
14147         ;;
14148 *)      fflushall="$undef"
14149         ;;
14150 esac
14151
14152 case "$fflushNULL$fflushall" in
14153 undefundef)
14154         $cat <<EOM
14155 OK, I give up.  I cannot figure out how to flush pending stdio output.
14156 We won't be flushing handles at all before fork/exec/popen.
14157 EOM
14158         ;;
14159 esac
14160 $rm -f try.* try$exe_ext
14161
14162 : Store the full pathname to the ar program for use in the C program
14163 : Respect a hint or command line value for full_ar.
14164 case "$full_ar" in
14165 '') full_ar=$ar ;;
14166 esac
14167
14168 : Store the full pathname to the sed program for use in the C program
14169 full_sed=$sed
14170
14171 : see what type gids are declared as in the kernel
14172 echo " "
14173 echo "Looking for the type for group ids returned by getgid()."
14174 set gid_t gidtype xxx stdio.h sys/types.h
14175 eval $typedef
14176 case "$gidtype" in
14177 xxx)
14178         xxx=`./findhdr sys/user.h`
14179         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14180         case $1 in
14181         unsigned) dflt="$1 $2" ;;
14182         *) dflt="$1" ;;
14183         esac
14184         ;;
14185 *) dflt="$gidtype";;
14186 esac
14187 case "$gidtype" in
14188 gid_t) echo "gid_t found." ;;
14189 *)      rp="What is the type for group ids returned by getgid()?"
14190         . ./myread
14191         gidtype="$ans"
14192         ;;
14193 esac
14194
14195 echo " "
14196 case "$gidtype" in
14197 *_t) zzz="$gidtype"     ;;
14198 *)   zzz="gid"          ;;
14199 esac
14200 echo "Checking the size of $zzz..." >&4 
14201 cat > try.c <<EOCP
14202 #include <sys/types.h>
14203 #include <stdio.h>
14204 int main() {
14205     printf("%d\n", (int)sizeof($gidtype));
14206     exit(0);
14207 }
14208 EOCP
14209 set try
14210 if eval $compile_ok; then
14211         yyy=`$run ./try`
14212         case "$yyy" in
14213         '')     gidsize=4
14214                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14215                 ;;
14216         *)      gidsize=$yyy
14217                 echo "Your $zzz is $gidsize bytes long."
14218                 ;;
14219         esac
14220 else
14221         gidsize=4
14222         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14223 fi
14224
14225
14226 echo " "
14227 case "$gidtype" in
14228 *_t) zzz="$gidtype"     ;;
14229 *)   zzz="gid"          ;;
14230 esac
14231 echo "Checking the sign of $zzz..." >&4 
14232 cat > try.c <<EOCP
14233 #include <sys/types.h>
14234 #include <stdio.h>
14235 int main() {
14236         $gidtype foo = -1;
14237         if (foo < 0)
14238                 printf("-1\n");
14239         else
14240                 printf("1\n");
14241 }
14242 EOCP
14243 set try
14244 if eval $compile; then
14245         yyy=`$run ./try`
14246         case "$yyy" in
14247         '')     gidsign=1
14248                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14249                 ;;
14250         *)      gidsign=$yyy
14251                 case "$gidsign" in
14252                  1) echo "Your $zzz is unsigned." ;;
14253                 -1) echo "Your $zzz is signed."   ;;
14254                 esac
14255                 ;;
14256         esac
14257 else
14258         gidsign=1
14259         echo "(I can't compile the test program--guessing unsigned.)" >&4
14260 fi
14261
14262
14263 echo " "
14264
14265 if $test X"$quadtype" != X; then
14266
14267 echo "Checking how to print 64-bit integers..." >&4
14268
14269 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14270         $cat >try.c <<'EOCP'
14271 #include <sys/types.h>
14272 #include <stdio.h>
14273 int main() {
14274   int q = 12345678901;
14275   printf("%ld\n", q);
14276 }
14277 EOCP
14278         set try
14279         if eval $compile; then
14280                 yyy=`$run ./try`
14281                 case "$yyy" in
14282                 12345678901)
14283                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14284                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14285                         echo "We will use %d."
14286                         ;;
14287                 esac
14288         fi
14289 fi
14290
14291 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14292         $cat >try.c <<'EOCP'
14293 #include <sys/types.h>
14294 #include <stdio.h>
14295 int main() {
14296   long q = 12345678901;
14297   printf("%ld\n", q);
14298 }
14299 EOCP
14300         set try
14301         if eval $compile; then
14302                 yyy=`$run ./try`
14303                 case "$yyy" in
14304                 12345678901)
14305                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14306                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14307                         echo "We will use %ld."
14308                         ;;
14309                 esac
14310         fi
14311 fi
14312
14313 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14314         $cat >try.c <<'EOCP'
14315 #include <sys/types.h>
14316 #include <inttypes.h>
14317 #include <stdio.h>
14318 int main() {
14319   int64_t q = 12345678901;
14320   printf("%" PRId64 "\n", q);
14321 }
14322 EOCP
14323         set try
14324         if eval $compile; then
14325                 yyy=`$run ./try`
14326                 case "$yyy" in
14327                 12345678901)
14328                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14329                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14330                         echo "We will use the C9X style."
14331                         ;;
14332                 esac
14333         fi
14334 fi
14335
14336 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14337         $cat >try.c <<EOCP
14338 #include <sys/types.h>
14339 #include <stdio.h>
14340 int main() {
14341   $quadtype q = 12345678901;
14342   printf("%Ld\n", q);
14343 }
14344 EOCP
14345         set try
14346         if eval $compile; then
14347                 yyy=`$run ./try`
14348                 case "$yyy" in
14349                 12345678901)
14350                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14351                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14352                         echo "We will use %Ld."
14353                         ;;
14354                 esac
14355         fi
14356 fi
14357
14358 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14359         $cat >try.c <<'EOCP'
14360 #include <sys/types.h>
14361 #include <stdio.h>
14362 int main() {
14363   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14364   printf("%lld\n", q);
14365 }
14366 EOCP
14367         set try
14368         if eval $compile; then
14369                 yyy=`$run ./try`
14370                 case "$yyy" in
14371                 12345678901)
14372                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14373                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14374                         echo "We will use the %lld style."
14375                         ;;
14376                 esac
14377         fi
14378 fi
14379
14380 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14381         $cat >try.c <<EOCP
14382 #include <sys/types.h>
14383 #include <stdio.h>
14384 int main() {
14385   $quadtype q = 12345678901;
14386   printf("%qd\n", q);
14387 }
14388 EOCP
14389         set try
14390         if eval $compile; then
14391                 yyy=`$run ./try`
14392                 case "$yyy" in
14393                 12345678901)
14394                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14395                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14396                         echo "We will use %qd."
14397                         ;;
14398                 esac
14399         fi
14400 fi
14401
14402 if $test X"$sPRId64" = X; then
14403         echo "Cannot figure out how to print 64-bit integers." >&4
14404 fi
14405
14406 $rm -f try try.*
14407
14408 fi
14409
14410 case "$sPRId64" in
14411 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14412         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14413         ;;
14414 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14415         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14416         ;;
14417 esac
14418
14419
14420 echo " "
14421 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14422
14423 if $test X"$ivsize" = X8; then
14424         ivdformat="$sPRId64"
14425         uvuformat="$sPRIu64"
14426         uvoformat="$sPRIo64"
14427         uvxformat="$sPRIx64"
14428         uvXUformat="$sPRIXU64"
14429 else
14430         if $test X"$ivsize" = X"$longsize"; then
14431                 ivdformat='"ld"'
14432                 uvuformat='"lu"'
14433                 uvoformat='"lo"'
14434                 uvxformat='"lx"'
14435                 uvXUformat='"lX"'
14436         else
14437                 if $test X"$ivsize" = X"$intsize"; then
14438                         ivdformat='"d"'
14439                         uvuformat='"u"'
14440                         uvoformat='"o"'
14441                         uvxformat='"x"'
14442                         uvXUformat='"X"'
14443                 else
14444                         : far out
14445                         if $test X"$ivsize" = X"$shortsize"; then
14446                                 ivdformat='"hd"'
14447                                 uvuformat='"hu"'
14448                                 uvoformat='"ho"'
14449                                 uvxformat='"hx"'
14450                                 uvXUformat='"hX"'
14451                         fi
14452                 fi
14453         fi
14454 fi
14455
14456 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14457         nveformat="$sPRIeldbl"
14458         nvfformat="$sPRIfldbl"
14459         nvgformat="$sPRIgldbl"
14460         nvEUformat="$sPRIEUldbl"
14461         nvFUformat="$sPRIFUldbl"
14462         nvGUformat="$sPRIGUldbl"
14463 else
14464         nveformat='"e"'
14465         nvfformat='"f"'
14466         nvgformat='"g"'
14467         nvEUformat='"E"'
14468         nvFUformat='"F"'
14469         nvGUformat='"G"'
14470 fi
14471
14472 case "$ivdformat" in
14473 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14474     exit 1
14475     ;;
14476 esac
14477
14478
14479 echo " "
14480 $echo "Checking the format string to be used for gids..." >&4
14481
14482 case "$gidsign" in
14483 -1)     if $test X"$gidsize" = X"$ivsize"; then
14484                 gidformat="$ivdformat"
14485         else
14486                 if $test X"$gidsize" = X"$longsize"; then
14487                         gidformat='"ld"'
14488                 else
14489                         if $test X"$gidsize" = X"$intsize"; then
14490                                 gidformat='"d"'
14491                         else
14492                                 if $test X"$gidsize" = X"$shortsize"; then
14493                                         gidformat='"hd"'
14494                                 fi
14495                         fi
14496                 fi
14497         fi
14498         ;;
14499 *)      if $test X"$gidsize" = X"$uvsize"; then
14500                 gidformat="$uvuformat"
14501         else
14502                 if $test X"$gidsize" = X"$longsize"; then
14503                         gidformat='"lu"'
14504                 else
14505                         if $test X"$gidsize" = X"$intsize"; then
14506                                 gidformat='"u"'
14507                         else
14508                                 if $test X"$gidsize" = X"$shortsize"; then
14509                                         gidformat='"hu"'
14510                                 fi
14511                         fi
14512                 fi
14513         fi
14514         ;;
14515 esac
14516
14517 : see if getgroups exists
14518 set getgroups d_getgrps
14519 eval $inlibc
14520
14521 : see if setgroups exists
14522 set setgroups d_setgrps
14523 eval $inlibc
14524
14525
14526 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14527 echo " "
14528 case "$d_getgrps$d_setgrps" in
14529 *define*)
14530         case "$groupstype" in
14531         '') dflt="$gidtype" ;;
14532         *)  dflt="$groupstype" ;;
14533         esac
14534         $cat <<EOM
14535 What type of pointer is the second argument to getgroups() and setgroups()?
14536 Usually this is the same as group ids, $gidtype, but not always.
14537
14538 EOM
14539         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14540         . ./myread
14541         groupstype="$ans"
14542         ;;
14543 *)  groupstype="$gidtype";;
14544 esac
14545
14546 echo " "
14547 echo "Checking if your $make program sets \$(MAKE)..." >&4
14548 case "$make_set_make" in
14549 '')
14550         $sed 's/^X //' > testmake.mak << 'EOF'
14551 Xall:
14552 X       @echo 'maketemp="$(MAKE)"'
14553 EOF
14554         case "`$make -f testmake.mak 2>/dev/null`" in
14555         *maketemp=*) make_set_make='#' ;;
14556         *)      make_set_make="MAKE=$make" ;;
14557         esac
14558         $rm -f testmake.mak
14559         ;;
14560 esac
14561 case "$make_set_make" in
14562 '#') echo "Yup, it does.";;
14563 *) echo "Nope, it doesn't.";;
14564 esac
14565
14566 : see what type is used for mode_t
14567 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14568 set mode_t modetype int stdio.h sys/types.h
14569 eval $typedef_ask
14570
14571 : see if stdarg is available
14572 echo " "
14573 if $test `./findhdr stdarg.h`; then
14574         echo "<stdarg.h> found." >&4
14575         valstd="$define"
14576 else
14577         echo "<stdarg.h> NOT found." >&4
14578         valstd="$undef"
14579 fi
14580
14581 : see if varags is available
14582 echo " "
14583 if $test `./findhdr varargs.h`; then
14584         echo "<varargs.h> found." >&4
14585 else
14586         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14587 fi
14588
14589 : set up the varargs testing programs
14590 $cat > varargs.c <<EOP
14591 #ifdef I_STDARG
14592 #include <stdarg.h>
14593 #endif
14594 #ifdef I_VARARGS
14595 #include <varargs.h>
14596 #endif
14597
14598 #ifdef I_STDARG
14599 int f(char *p, ...)
14600 #else
14601 int f(va_alist)
14602 va_dcl
14603 #endif
14604 {
14605         va_list ap;
14606 #ifndef I_STDARG
14607         char *p;
14608 #endif
14609 #ifdef I_STDARG
14610         va_start(ap,p);
14611 #else
14612         va_start(ap);
14613         p = va_arg(ap, char *);
14614 #endif
14615         va_end(ap);
14616 }
14617 EOP
14618 $cat > varargs <<EOP
14619 $startsh
14620 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14621         echo "true"
14622 else
14623         echo "false"
14624 fi
14625 $rm -f varargs$_o
14626 EOP
14627 chmod +x varargs
14628
14629 : now check which varargs header should be included
14630 echo " "
14631 i_varhdr=''
14632 case "$valstd" in
14633 "$define")
14634         if `./varargs I_STDARG`; then
14635                 val='stdarg.h'
14636         elif `./varargs I_VARARGS`; then
14637                 val='varargs.h'
14638         fi
14639         ;;
14640 *)
14641         if `./varargs I_VARARGS`; then
14642                 val='varargs.h'
14643         fi
14644         ;;
14645 esac
14646 case "$val" in
14647 '')
14648 echo "I could not find the definition for va_dcl... You have problems..." >&4
14649         val="$undef"; set i_stdarg; eval $setvar
14650         val="$undef"; set i_varargs; eval $setvar
14651         ;;
14652 *) 
14653         set i_varhdr
14654         eval $setvar
14655         case "$i_varhdr" in
14656         stdarg.h)
14657                 val="$define"; set i_stdarg; eval $setvar
14658                 val="$undef"; set i_varargs; eval $setvar
14659                 ;;
14660         varargs.h)
14661                 val="$undef"; set i_stdarg; eval $setvar
14662                 val="$define"; set i_varargs; eval $setvar
14663                 ;;
14664         esac
14665         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14666 esac
14667 $rm -f varargs*
14668
14669 : see if we need va_copy
14670 echo " "
14671 case "$i_stdarg" in
14672 "$define")
14673         $cat >try.c <<EOCP
14674 #include <stdarg.h>
14675 #include <stdio.h>
14676 #$i_stdlib I_STDLIB
14677 #ifdef I_STDLIB
14678 #include <stdlib.h>
14679 #endif
14680 #include <signal.h>
14681
14682 int
14683 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14684 {
14685   return vfprintf(f, fmt, *valp);
14686 }
14687  
14688 int    
14689 myvfprintf(FILE *f, const  char *fmt, va_list val)
14690 {
14691   return ivfprintf(f, fmt, &val);
14692 }
14693       
14694 int
14695 myprintf(char *fmt, ...) 
14696 {
14697   va_list val;
14698   va_start(val, fmt);
14699   return myvfprintf(stdout, fmt, val); 
14700 }         
14701
14702 int
14703 main(int ac, char **av)
14704 {
14705   signal(SIGSEGV, exit);
14706
14707   myprintf("%s%cs all right, then\n", "that", '\'');                            
14708   exit(0);      
14709 }
14710 EOCP
14711         set try
14712         if eval $compile && $run ./try 2>&1 >/dev/null; then
14713                 case "`$run ./try`" in
14714                 "that's all right, then")
14715                         okay=yes
14716                         ;;
14717                 esac
14718         fi
14719         case "$okay" in
14720         yes)    echo "It seems that you don't need va_copy()." >&4
14721                 need_va_copy="$undef"
14722                 ;;
14723         *)      echo "It seems that va_copy() or similar will be needed." >&4
14724                 need_va_copy="$define"
14725                 ;;
14726         esac
14727         $rm -f try.* core core.* *.core *.core.*
14728         ;;
14729 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14730         ;;
14731 esac
14732
14733 : define a fucntion to check prototypes
14734 $cat > protochk <<EOSH
14735 $startsh
14736 cc="$cc"
14737 optimize="$optimize"
14738 ccflags="$ccflags"
14739 prototype="$prototype"
14740 define="$define"
14741 rm=$rm
14742 EOSH
14743
14744 $cat >> protochk <<'EOSH'
14745
14746 $rm -f try.c
14747 foo="$1"
14748 shift
14749 while test $# -ge 2; do
14750         case "$1" in
14751                 $define) echo "#include <$2>" >> try.c ;;
14752                 literal) echo "$2" >> try.c ;;
14753         esac
14754     shift 2
14755 done
14756 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14757 cat >> try.c <<'EOCP'
14758 #ifdef CAN_PROTOTYPE
14759 #define _(args) args
14760 #else
14761 #define _(args) ()
14762 #endif
14763 EOCP
14764 echo "$foo" >> try.c
14765 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14766 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14767 status=$?
14768 $rm -f try.[co]
14769 exit $status
14770 EOSH
14771 chmod +x protochk
14772 $eunicefix protochk
14773
14774 : see what type is used for size_t
14775 rp="What is the type used for the length parameter for string functions?"
14776 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14777 eval $typedef_ask
14778
14779 : check for type of arguments to gethostbyaddr. 
14780 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14781         case "$d_gethbyaddr" in
14782         $define)
14783                 $cat <<EOM
14784
14785 Checking to see what type of arguments are accepted by gethostbyaddr().
14786 EOM
14787                 hdrs="$define sys/types.h
14788                         $d_socket sys/socket.h 
14789                         $i_niin netinet/in.h 
14790                         $i_netdb netdb.h
14791                         $i_unistd unistd.h"
14792                 : The first arg can 'char *' or 'void *'
14793                 : The second arg is some of integral type
14794                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14795                         for yyy in size_t long int; do
14796                                 case "$netdb_host_type" in
14797                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14798                                         if ./protochk "$try" $hdrs; then
14799                                                 echo "Your system accepts $xxx for the first arg."
14800                                                 echo "...and $yyy for the second arg."
14801                                                 netdb_host_type="$xxx"
14802                                                 netdb_hlen_type="$yyy"
14803                                         fi
14804                                         ;;
14805                                 esac
14806                         done
14807                 done
14808                 : In case none of those worked, prompt the user.
14809                 case "$netdb_host_type" in
14810                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14811                         dflt='char *'
14812                         . ./myread
14813                         netdb_host_type=$ans
14814                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14815                         dflt="$sizetype"
14816                         . ./myread
14817                         netdb_hlen_type=$ans
14818                         ;;
14819                 esac
14820                 ;;
14821         *)      : no gethostbyaddr, so pick harmless defaults
14822                 netdb_host_type='char *'
14823                 netdb_hlen_type="$sizetype"
14824                 ;;
14825         esac
14826         # Remove the "const" if needed. -- but then we'll have a 
14827         # prototype clash!
14828         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14829 fi
14830
14831 : check for type of argument to gethostbyname. 
14832 if test "X$netdb_name_type" = X ; then
14833         case "$d_gethbyname" in
14834         $define)
14835                 $cat <<EOM
14836
14837 Checking to see what type of argument is accepted by gethostbyname().
14838 EOM
14839                 hdrs="$define sys/types.h
14840                         $d_socket sys/socket.h 
14841                         $i_niin netinet/in.h 
14842                         $i_netdb netdb.h
14843                         $i_unistd unistd.h"
14844                 for xxx in "const char *" "char *"; do
14845                         case "$netdb_name_type" in
14846                         '')     try="extern struct hostent *gethostbyname($xxx);"
14847                                 if ./protochk "$try" $hdrs; then
14848                                         echo "Your system accepts $xxx."
14849                                         netdb_name_type="$xxx"
14850                                 fi
14851                                 ;;
14852                         esac
14853                 done
14854                 : In case none of those worked, prompt the user.
14855                 case "$netdb_name_type" in
14856                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14857                         dflt='char *'
14858                         . ./myread
14859                         netdb_name_type=$ans
14860                         ;;
14861                 esac
14862                 ;;
14863         *)      : no gethostbyname, so pick harmless default
14864                 netdb_name_type='char *'
14865                 ;;
14866         esac
14867 fi
14868
14869 : check for type of 1st argument to getnetbyaddr. 
14870 if test "X$netdb_net_type" = X ; then
14871         case "$d_getnbyaddr" in
14872         $define)
14873                 $cat <<EOM
14874
14875 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14876 EOM
14877                 hdrs="$define sys/types.h
14878                         $d_socket sys/socket.h 
14879                         $i_niin netinet/in.h 
14880                         $i_netdb netdb.h
14881                         $i_unistd unistd.h"
14882                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14883                         case "$netdb_net_type" in
14884                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14885                                 if ./protochk "$try" $hdrs; then
14886                                         echo "Your system accepts $xxx."
14887                                         netdb_net_type="$xxx"
14888                                 fi
14889                                 ;;
14890                         esac
14891                 done
14892                 : In case none of those worked, prompt the user.
14893                 case "$netdb_net_type" in
14894                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14895                         dflt='long'
14896                         . ./myread
14897                         netdb_net_type=$ans
14898                         ;;
14899                 esac
14900                 ;;
14901         *)      : no getnetbyaddr, so pick harmless default
14902                 netdb_net_type='long'
14903                 ;;
14904         esac
14905 fi
14906 : locate the preferred pager for this system
14907 case "$pager" in
14908 '')
14909         dflt=''
14910         case "$pg" in
14911         /*) dflt=$pg;;
14912         [a-zA-Z]:/*) dflt=$pg;;
14913         esac
14914         case "$more" in
14915         /*) dflt=$more;;
14916         [a-zA-Z]:/*) dflt=$more;;
14917         esac
14918         case "$less" in
14919         /*) dflt=$less;;
14920         [a-zA-Z]:/*) dflt=$less;;
14921         esac
14922         case "$dflt" in
14923         '') dflt=/usr/ucb/more;;
14924         esac
14925         ;;
14926 *) dflt="$pager";;
14927 esac
14928 echo " "
14929 fn=f/
14930 rp='What pager is used on your system?'
14931 . ./getfile
14932 pager="$ans"
14933
14934 : see what type pids are declared as in the kernel
14935 rp="What is the type of process ids on this system?"
14936 set pid_t pidtype int stdio.h sys/types.h
14937 eval $typedef_ask
14938
14939 : Find earliest binary compatible site_perl subdirectory perl can use.
14940 case "$bincompat5005" in
14941 "$define") xs_apiversion='5.005' ;;
14942 *) xs_apiversion=$version ;;   # The current site_perl version.
14943 esac
14944 : Find earliest pure perl site_perl subdirectory perl can use.
14945 : The versioned directories started at 5.005.
14946 pm_apiversion='5.005'
14947
14948 : see if ar generates random libraries by itself
14949 echo " "
14950 echo "Checking how to generate random libraries on your machine..." >&4
14951 echo 'int bar1() { return bar2(); }' > bar1.c
14952 echo 'int bar2() { return 2; }' > bar2.c
14953 $cat > foo.c <<'EOP'
14954 int main() { printf("%d\n", bar1()); exit(0); }
14955 EOP
14956 $cc $ccflags -c bar1.c >/dev/null 2>&1
14957 $cc $ccflags -c bar2.c >/dev/null 2>&1
14958 $cc $ccflags -c foo.c >/dev/null 2>&1
14959 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14960 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14961         $run ./foobar >/dev/null 2>&1; then
14962         echo "$ar appears to generate random libraries itself."
14963         orderlib=false
14964         ranlib=":"
14965 elif $ar ts bar$_a >/dev/null 2>&1 &&
14966         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14967         $run ./foobar >/dev/null 2>&1; then
14968                 echo "a table of contents needs to be added with '$ar ts'."
14969                 orderlib=false
14970                 ranlib="$ar ts"
14971 else
14972         case "$ranlib" in
14973         :) ranlib='';;
14974         '')
14975                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14976                 $test -f $ranlib || ranlib=''
14977                 ;;
14978         esac
14979         if $test -n "$ranlib"; then
14980                 echo "your system has '$ranlib'; we'll use that."
14981                 orderlib=false
14982         else
14983                 echo "your system doesn't seem to support random libraries"
14984                 echo "so we'll use lorder and tsort to order the libraries."
14985                 orderlib=true
14986                 ranlib=":"
14987         fi
14988 fi
14989 $rm -f foo* bar* 
14990
14991 : check for type of arguments to select. 
14992 case "$selecttype" in
14993 '') case "$d_select" in
14994         $define)
14995                 echo " "
14996                 $cat <<EOM
14997 Checking to see what type of arguments are accepted by select().
14998 EOM
14999                 hdrs="$define sys/types.h
15000                         $i_systime sys/time.h 
15001                         $i_sysselct sys/select.h
15002                         $d_socket sys/socket.h"
15003                 : The first arg can be int, unsigned, or size_t
15004                 : The last arg may or may not be 'const'
15005                 val=''
15006                 : void pointer has been seen but using that
15007                 : breaks the selectminbits test
15008                 for xxx in 'fd_set *' 'int *'; do
15009                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
15010                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
15011                                         case "$val" in
15012                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
15013                                                 if ./protochk "$try" $hdrs; then
15014                                                         echo "Your system accepts $xxx."
15015                                                         val="$xxx"
15016                                                 fi
15017                                                 ;;
15018                                         esac
15019                                 done
15020                         done
15021                 done
15022                 case "$val" in
15023                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
15024                         case "$d_fd_set" in
15025                                 $define) dflt="fd_set *" ;;
15026                                 *)              dflt="int *" ;;
15027                         esac
15028                         . ./myread
15029                         val=$ans
15030                         ;;
15031                 esac
15032                 selecttype="$val"
15033                 ;;
15034         *)      : no select, so pick a harmless default
15035                 selecttype='int *'
15036                 ;;
15037         esac
15038         ;;
15039 esac
15040
15041 : check for the select 'width'
15042 case "$selectminbits" in
15043 '') case "$d_select" in
15044         $define)
15045                 $cat <<EOM
15046
15047 Checking to see on how many bits at a time your select() operates...
15048 EOM
15049                 $cat >try.c <<EOCP
15050 #include <sys/types.h>
15051 #$i_time I_TIME
15052 #$i_systime I_SYS_TIME
15053 #$i_systimek I_SYS_TIME_KERNEL
15054 #ifdef I_TIME
15055 #   include <time.h>
15056 #endif
15057 #ifdef I_SYS_TIME
15058 #   ifdef I_SYS_TIME_KERNEL
15059 #       define KERNEL
15060 #   endif
15061 #   include <sys/time.h>
15062 #   ifdef I_SYS_TIME_KERNEL
15063 #       undef KERNEL
15064 #   endif
15065 #endif
15066 #$i_sysselct I_SYS_SELECT
15067 #ifdef I_SYS_SELECT
15068 #include <sys/select.h>
15069 #endif
15070 #$d_socket HAS_SOCKET
15071 #ifdef HAS_SOCKET
15072 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15073 #endif
15074 #include <stdio.h>
15075 $selecttype b;
15076 #define S sizeof(*(b))
15077 #define MINBITS 64
15078 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15079 #define NBITS  (NBYTES * 8)
15080 int main() {
15081     char s[NBYTES];
15082     struct timeval t;
15083     int i;
15084     FILE* fp;
15085     int fd;
15086
15087     fclose(stdin);
15088     fp = fopen("try.c", "r");
15089     if (fp == 0)
15090       exit(1);
15091     fd = fileno(fp);
15092     if (fd < 0)
15093       exit(2);
15094     b = ($selecttype)s;
15095     for (i = 0; i < NBITS; i++)
15096         FD_SET(i, b);
15097     t.tv_sec  = 0;
15098     t.tv_usec = 0;
15099     select(fd + 1, b, 0, 0, &t);
15100     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15101     printf("%d\n", i + 1);
15102     return 0;
15103 }
15104 EOCP
15105                 set try
15106                 if eval $compile_ok; then
15107                         selectminbits=`$run ./try`
15108                         case "$selectminbits" in
15109                         '')     cat >&4 <<EOM
15110 Cannot figure out on how many bits at a time your select() operates.
15111 I'll play safe and guess it is 32 bits.
15112 EOM
15113                                 selectminbits=32
15114                                 bits="32 bits"
15115                                 ;;
15116                         1)      bits="1 bit" ;;
15117                         *)      bits="$selectminbits bits" ;;
15118                         esac
15119                         echo "Your select() operates on $bits at a time." >&4
15120                 else
15121                         rp='What is the minimum number of bits your select() operates on?'
15122                         case "$byteorder" in
15123                         1234|12345678)  dflt=32 ;;
15124                         *)              dflt=1  ;;
15125                         esac
15126                         . ./myread
15127                         val=$ans
15128                         selectminbits="$val"
15129                 fi
15130                 $rm -f try.* try
15131                 ;;
15132         *)      : no select, so pick a harmless default
15133                 selectminbits='32'
15134                 ;;
15135         esac
15136         ;;
15137 esac
15138
15139 : Trace out the files included by signal.h, then look for SIGxxx names.
15140 : Remove SIGARRAYSIZE used by HPUX.
15141 : Remove SIGSTKSIZE used by Linux.
15142 : Remove SIGSTKSZ used by Posix.
15143 : Remove SIGTYP void lines used by OS2.
15144 : Some cpps, like os390, dont give the file name anywhere
15145 if [ "X$fieldn" = X ]; then
15146         : Just make some guesses.  We check them later.
15147         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15148 else
15149         xxx=`echo '#include <signal.h>' |
15150         $cppstdin $cppminus $cppflags 2>/dev/null |
15151         $grep '^[       ]*#.*include' | 
15152         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15153 fi
15154 : Check this list of files to be sure we have parsed the cpp output ok.
15155 : This will also avoid potentially non-existent files, such 
15156 : as ../foo/bar.h
15157 xxxfiles=''
15158 for xx in $xxx /dev/null ; do
15159         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15160 done
15161 : If we have found no files, at least try signal.h
15162 case "$xxxfiles" in
15163 '')     xxxfiles=`./findhdr signal.h` ;;
15164 esac
15165 xxx=`awk '
15166 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15167         print substr($2, 4, 20)
15168 }
15169 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15170         print substr($3, 4, 20)
15171 }' $xxxfiles`
15172 : Append some common names just in case the awk scan failed.
15173 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15174 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15175 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15176 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15177 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15178
15179 : generate a few handy files for later
15180 $cat > signal.c <<'EOCP'
15181 #include <sys/types.h>
15182 #include <signal.h>
15183 #include <stdio.h>
15184 int main() {
15185
15186 /* Strange style to avoid deeply-nested #if/#else/#endif */
15187 #ifndef NSIG
15188 #  ifdef _NSIG
15189 #    define NSIG (_NSIG)
15190 #  endif
15191 #endif
15192
15193 #ifndef NSIG
15194 #  ifdef SIGMAX
15195 #    define NSIG (SIGMAX+1)
15196 #  endif
15197 #endif
15198
15199 #ifndef NSIG
15200 #  ifdef SIG_MAX
15201 #    define NSIG (SIG_MAX+1)
15202 #  endif
15203 #endif
15204
15205 #ifndef NSIG
15206 #  ifdef MAXSIG
15207 #    define NSIG (MAXSIG+1)
15208 #  endif
15209 #endif
15210
15211 #ifndef NSIG
15212 #  ifdef MAX_SIG
15213 #    define NSIG (MAX_SIG+1)
15214 #  endif
15215 #endif
15216
15217 #ifndef NSIG
15218 #  ifdef SIGARRAYSIZE
15219 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15220 #  endif
15221 #endif
15222
15223 #ifndef NSIG
15224 #  ifdef _sys_nsig
15225 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15226 #  endif
15227 #endif
15228
15229 /* Default to some arbitrary number that's big enough to get most
15230    of the common signals.
15231 */
15232 #ifndef NSIG
15233 #    define NSIG 50
15234 #endif
15235
15236 printf("NSIG %d\n", NSIG);
15237
15238 #ifndef JUST_NSIG
15239
15240 EOCP
15241
15242 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15243 {
15244         printf "#ifdef SIG"; printf $1; printf "\n"
15245         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15246         printf $1; printf ");\n"
15247         printf "#endif\n"
15248 }
15249 END {
15250         printf "#endif /* JUST_NSIG */\n";
15251         printf "exit(0);\n}\n";
15252 }
15253 ' >>signal.c
15254 $cat >signal.awk <<'EOP'
15255 BEGIN { ndups = 0 }
15256 $1 ~ /^NSIG$/ { nsig = $2 }
15257 ($1 !~ /^NSIG$/) && (NF == 2) {
15258     if ($2 > maxsig) { maxsig = $2 }
15259     if (sig_name[$2]) {
15260         dup_name[ndups] = $1
15261         dup_num[ndups] = $2
15262         ndups++ 
15263     }
15264     else {
15265         sig_name[$2] = $1
15266         sig_num[$2] = $2
15267     }
15268 }
15269 END { 
15270     if (nsig == 0) {
15271         nsig = maxsig + 1
15272     }
15273     printf("NSIG %d\n", nsig);
15274     for (n = 1; n < nsig; n++) {
15275         if (sig_name[n]) {
15276             printf("%s %d\n", sig_name[n], sig_num[n])
15277         }
15278         else {
15279             printf("NUM%d %d\n", n, n) 
15280         }
15281     }
15282     for (n = 0; n < ndups; n++) {
15283         printf("%s %d\n", dup_name[n], dup_num[n])
15284     }
15285 }
15286 EOP
15287 $cat >signal_cmd <<EOS
15288 $startsh
15289 if $test -s signal.lst; then
15290     echo "Using your existing signal.lst file"
15291         exit 0
15292 fi
15293 xxx="$xxx"
15294 EOS
15295 $cat >>signal_cmd <<'EOS'
15296
15297 set signal
15298 if eval $compile_ok; then
15299         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15300 else
15301         echo "(I can't seem be able to compile the whole test program)" >&4
15302         echo "(I'll try it in little pieces.)" >&4
15303         set signal -DJUST_NSIG
15304         if eval $compile_ok; then
15305                 $run ./signal$_exe > signal.nsg
15306                 $cat signal.nsg
15307         else
15308                 echo "I can't seem to figure out how many signals you have." >&4
15309                 echo "Guessing 50." >&4
15310                 echo 'NSIG 50' > signal.nsg
15311         fi
15312         : Now look at all the signal names, one at a time.
15313         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15314                 $cat > signal.c <<EOCP
15315 #include <sys/types.h>
15316 #include <signal.h>
15317 #include <stdio.h>
15318 int main() {
15319 printf("$xx %d\n", SIG${xx});
15320 return 0;
15321 }
15322 EOCP
15323                 set signal
15324                 if eval $compile; then
15325                         echo "SIG${xx} found."
15326                         $run ./signal$_exe  >> signal.ls1
15327                 else
15328                         echo "SIG${xx} NOT found."
15329                 fi
15330         done
15331         if $test -s signal.ls1; then
15332                 $cat signal.nsg signal.ls1 |
15333                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15334         fi
15335
15336 fi
15337 if $test -s signal.lst; then
15338         :
15339 else
15340         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15341         echo 'kill -l' >signal
15342         set X `csh -f <signal`
15343         $rm -f signal
15344         shift
15345         case $# in
15346         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15347         esac
15348         echo $@ | $tr ' ' $trnl | \
15349             $awk '{ printf "%s %d\n", $1, ++s; }
15350                   END { printf "NSIG %d\n", ++s }' >signal.lst
15351 fi
15352 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15353 EOS
15354 chmod a+x signal_cmd
15355 $eunicefix signal_cmd
15356
15357 : generate list of signal names
15358 echo " "
15359 case "$sig_name_init" in
15360 '') doinit=yes ;;
15361 *)  case "$sig_num_init" in
15362     ''|*,*) doinit=yes ;;
15363     esac ;;
15364 esac
15365 case "$doinit" in
15366 yes)
15367         echo "Generating a list of signal names and numbers..." >&4
15368         . ./signal_cmd
15369         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15370         sig_name=`$awk 'BEGIN { printf "ZERO " }
15371                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15372         sig_num=`$awk  'BEGIN { printf "0 " }
15373                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15374         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15375                              !/^NSIG/   { printf "\"%s\", ", $1 }
15376                              END        { printf "0\n" }' signal.lst`
15377         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15378                              !/^NSIG/   { printf "%d, ", $2}
15379                              END        { printf "0\n"}' signal.lst`
15380         ;;
15381 esac
15382 echo "The following $sig_count signals are available:"
15383 echo " "
15384 echo $sig_name | $awk \
15385 'BEGIN { linelen = 0 }
15386 {
15387         for (i = 1; i <= NF; i++) {
15388                 name = "SIG" $i " "
15389                 linelen = linelen + length(name)
15390                 if (linelen > 70) {
15391                         printf "\n"
15392                         linelen = length(name)
15393                 }
15394                 printf "%s", name
15395         }
15396         printf "\n"
15397 }'
15398 sig_size=`echo $sig_name | awk '{print NF}'`
15399 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15400
15401 echo " "
15402 case "$sizetype" in
15403 *_t) zzz="$sizetype"    ;;
15404 *)   zzz="filesize"     ;;
15405 esac
15406 echo "Checking the size of $zzz..." >&4 
15407 cat > try.c <<EOCP
15408 #include <sys/types.h>
15409 #include <stdio.h>
15410 int main() {
15411     printf("%d\n", (int)sizeof($sizetype));
15412     exit(0);
15413 }
15414 EOCP
15415 set try
15416 if eval $compile_ok; then
15417         yyy=`$run ./try`
15418         case "$yyy" in
15419         '')     sizesize=4
15420                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15421                 ;;
15422         *)      sizesize=$yyy
15423                 echo "Your $zzz size is $sizesize bytes."
15424                 ;;
15425         esac
15426 else
15427         sizesize=4
15428         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15429 fi
15430
15431
15432 : check for socklen_t
15433 echo " "
15434 echo "Checking to see if you have socklen_t..." >&4
15435 $cat >try.c <<EOCP
15436 #include <sys/types.h>
15437 #$d_socket HAS_SOCKET
15438 #ifdef HAS_SOCKET
15439 #include <sys/socket.h>
15440 #endif
15441 int main() { socklen_t x = 16; }
15442 EOCP
15443 set try
15444 if eval $compile; then
15445         val="$define"
15446         echo "You have socklen_t."
15447 else
15448         val="$undef"
15449         echo "You do not have socklen_t."
15450         case "$sizetype" in
15451         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15452         esac
15453 fi
15454 $rm -f try try.*
15455 set d_socklen_t
15456 eval $setvar
15457
15458 : see if this is a socks.h system
15459 set socks.h i_socks
15460 eval $inhdr
15461
15462 : check for type of the size argument to socket calls
15463 case "$d_socket" in
15464 "$define")
15465         $cat <<EOM
15466
15467 Checking to see what type is the last argument of accept().
15468 EOM
15469         yyy=''
15470         case "$d_socklen_t" in
15471         "$define") yyy="$yyy socklen_t"
15472         esac
15473         yyy="$yyy $sizetype int long unsigned"
15474         for xxx in $yyy; do
15475                 case "$socksizetype" in
15476                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15477                         case "$usesocks" in
15478                         "$define")
15479                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15480                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15481                                         socksizetype="$xxx"
15482                                 fi
15483                                 ;;
15484                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15485                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15486                                         socksizetype="$xxx"
15487                                 fi
15488                                 ;;
15489                         esac
15490                         ;;
15491                 esac
15492         done
15493 : In case none of those worked, prompt the user.
15494         case "$socksizetype" in
15495         '')     rp='What is the type for socket address structure sizes?'
15496                 dflt='int'
15497                 . ./myread
15498                 socksizetype=$ans
15499                 ;;
15500         esac
15501         ;;
15502 *)      : no sockets, so pick relatively harmless default
15503         socksizetype='int'
15504         ;;
15505 esac
15506
15507 : see what type is used for signed size_t
15508 set ssize_t ssizetype int stdio.h sys/types.h
15509 eval $typedef
15510 dflt="$ssizetype"
15511 $cat > try.c <<EOM
15512 #include <stdio.h>
15513 #include <sys/types.h>
15514 #define Size_t $sizetype
15515 #define SSize_t $dflt
15516 int main()
15517 {
15518         if (sizeof(Size_t) == sizeof(SSize_t))
15519                 printf("$dflt\n");
15520         else if (sizeof(Size_t) == sizeof(int))
15521                 printf("int\n");
15522         else 
15523                 printf("long\n");
15524         exit(0);
15525 }
15526 EOM
15527 echo " "
15528 set try
15529 if eval $compile_ok && $run ./try > /dev/null; then
15530         ssizetype=`$run ./try`
15531         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15532 else
15533         $cat >&4 <<EOM
15534 Help! I can't compile and run the ssize_t test program: please enlighten me!
15535 (This is probably a misconfiguration in your system or libraries, and
15536 you really ought to fix it.  Still, I'll try anyway.)
15537
15538 I need a type that is the same size as $sizetype, but is guaranteed to
15539 be signed.  Common values are ssize_t, int and long.
15540
15541 EOM
15542         rp="What signed type is the same size as $sizetype?"
15543         . ./myread
15544         ssizetype="$ans"
15545 fi
15546 $rm -f try try.*
15547
15548 : see what type of char stdio uses.
15549 echo " "
15550 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15551 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15552         echo "Your stdio uses unsigned chars." >&4
15553         stdchar="unsigned char"
15554 else
15555         echo "Your stdio uses signed chars." >&4
15556         stdchar="char"
15557 fi
15558 $rm -f stdioh
15559
15560
15561
15562 : see if time exists
15563 echo " "
15564 if test "X$d_time" = X -o X"$timetype" = X; then
15565     if set time val -f d_time; eval $csym; $val; then
15566                 echo 'time() found.' >&4
15567                 val="$define"
15568                 rp="What is the type returned by time() on this system?"
15569                 set time_t timetype long stdio.h sys/types.h
15570                 eval $typedef_ask
15571     else
15572                 echo 'time() not found, hope that will do.' >&4
15573                 val="$undef"
15574                 timetype='int';
15575     fi
15576     set d_time
15577     eval $setvar
15578 fi
15579
15580 : see what type uids are declared as in the kernel
15581 echo " "
15582 echo "Looking for the type for user ids returned by getuid()."
15583 set uid_t uidtype xxx stdio.h sys/types.h
15584 eval $typedef
15585 case "$uidtype" in
15586 xxx)
15587         xxx=`./findhdr sys/user.h`
15588         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15589         case $1 in
15590         unsigned) dflt="$1 $2" ;;
15591         *) dflt="$1" ;;
15592         esac
15593         ;;
15594 *) dflt="$uidtype";;
15595 esac
15596 case "$uidtype" in
15597 uid_t)  echo "uid_t found." ;;
15598 *)      rp="What is the type for user ids returned by getuid()?"
15599         . ./myread
15600         uidtype="$ans"
15601         ;;
15602 esac
15603
15604 echo " "
15605 case "$uidtype" in
15606 *_t) zzz="$uidtype"     ;;
15607 *)   zzz="uid"          ;;
15608 esac
15609 echo "Checking the size of $zzz..." >&4 
15610 cat > try.c <<EOCP
15611 #include <sys/types.h>
15612 #include <stdio.h>
15613 int main() {
15614     printf("%d\n", (int)sizeof($uidtype));
15615     exit(0);
15616 }
15617 EOCP
15618 set try
15619 if eval $compile_ok; then
15620         yyy=`$run ./try`
15621         case "$yyy" in
15622         '')     uidsize=4
15623                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15624                 ;;
15625         *)      uidsize=$yyy
15626                 echo "Your $zzz is $uidsize bytes long."
15627                 ;;
15628         esac
15629 else
15630         uidsize=4
15631         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15632 fi
15633
15634 echo " "
15635 case "$uidtype" in
15636 *_t) zzz="$uidtype"     ;;
15637 *)   zzz="uid"          ;;
15638 esac
15639 echo "Checking the sign of $zzz..." >&4
15640 cat > try.c <<EOCP
15641 #include <sys/types.h>
15642 #include <stdio.h>
15643 int main() {
15644         $uidtype foo = -1;
15645         if (foo < 0)
15646                 printf("-1\n");
15647         else
15648                 printf("1\n");
15649 }
15650 EOCP
15651 set try
15652 if eval $compile; then
15653         yyy=`$run ./try`
15654         case "$yyy" in
15655         '')     uidsign=1
15656                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15657                 ;;
15658         *)      uidsign=$yyy
15659                 case "$uidsign" in
15660                  1) echo "Your $zzz is unsigned." ;;
15661                 -1) echo "Your $zzz is signed."   ;;
15662                 esac
15663                 ;;
15664         esac
15665 else
15666         uidsign=1
15667         echo "(I can't compile the test program--guessing unsigned.)" >&4
15668 fi
15669
15670
15671
15672 echo " "
15673 $echo "Checking the format string to be used for uids..." >&4
15674
15675 case "$uidsign" in
15676 -1)     if $test X"$uidsize" = X"$ivsize"; then
15677                 uidformat="$ivdformat"
15678         else
15679                 if $test X"$uidsize" = X"$longsize"; then
15680                         uidformat='"ld"'
15681                 else
15682                         if $test X"$uidsize" = X"$intsize"; then
15683                                 uidformat='"d"'
15684                         else
15685                                 if $test X"$uidsize" = X"$shortsize"; then
15686                                         uidformat='"hd"'
15687                                 fi
15688                         fi
15689                 fi
15690         fi
15691         ;;
15692 *)      if $test X"$uidsize" = X"$uvsize"; then
15693                 uidformat="$uvuformat"
15694         else
15695                 if $test X"$uidsize" = X"$longsize"; then
15696                         uidformat='"lu"'
15697                 else
15698                         if $test X"$uidsize" = X"$intsize"; then
15699                                 uidformat='"u"'
15700                         else
15701                                 if $test X"$uidsize" = X"$shortsize"; then
15702                                         uidformat='"hu"'
15703                                 fi
15704                         fi
15705                 fi
15706         fi
15707         ;;
15708 esac
15709
15710 : determine compiler compiler
15711 case "$yacc" in
15712 '')
15713         dflt=yacc;;
15714 *)
15715         dflt="$yacc";;
15716 esac
15717 echo " "
15718 comp='yacc'
15719 if $test -f "$byacc"; then
15720         dflt="$byacc"
15721         comp="byacc or $comp"
15722 fi
15723 if $test -f "$bison"; then
15724         comp="$comp or bison -y"
15725 fi
15726 rp="Which compiler compiler ($comp) shall I use?"
15727 . ./myread
15728 yacc="$ans"
15729 case "$yacc" in
15730 *bis*)
15731         case "$yacc" in
15732         *-y*) ;;
15733         *)
15734                 yacc="$yacc -y"
15735                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15736                 ;;
15737         esac
15738         ;;
15739 esac
15740
15741 : see if fcntl.h is there
15742 val=''
15743 set fcntl.h val
15744 eval $inhdr
15745
15746 : see if we can include fcntl.h
15747 case "$val" in
15748 "$define")
15749         echo " "
15750         if $h_fcntl; then
15751                 val="$define"
15752                 echo "We'll be including <fcntl.h>." >&4
15753         else
15754                 val="$undef"
15755                 if $h_sysfile; then
15756         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15757                 else
15758                         echo "We won't be including <fcntl.h>." >&4
15759                 fi
15760         fi
15761         ;;
15762 *)
15763         h_fcntl=false
15764         val="$undef"
15765         ;;
15766 esac
15767 set i_fcntl
15768 eval $setvar
15769
15770 : see if this is a iconv.h system
15771 set iconv.h i_iconv
15772 eval $inhdr
15773
15774 : see if this is a ieeefp.h system
15775 set ieeefp.h i_ieeefp
15776 eval $inhdr
15777
15778 : see if this is a libutil.h system
15779 set libutil.h i_libutil
15780 eval $inhdr
15781
15782 : see if locale.h is available
15783 set locale.h i_locale
15784 eval $inhdr
15785
15786 : see if mach cthreads are available
15787 if test "X$usethreads" = "X$define"; then
15788         set mach/cthreads.h i_machcthr
15789         eval $inhdr
15790 else
15791         i_machcthr="$undef"
15792 fi
15793
15794
15795
15796 : see if this is a math.h system
15797 set math.h i_math
15798 eval $inhdr
15799
15800 : see if this is a mntent.h system
15801 set mntent.h i_mntent
15802 eval $inhdr
15803
15804 : see if ndbm.h is available
15805 set ndbm.h t_ndbm
15806 eval $inhdr
15807 case "$t_ndbm" in
15808 $define)
15809         : see if dbm_open exists
15810         set dbm_open d_dbm_open
15811         eval $inlibc
15812         case "$d_dbm_open" in
15813         $undef)
15814                 t_ndbm="$undef"
15815                 echo "We won't be including <ndbm.h>"
15816                 ;;
15817         esac
15818         ;;
15819 esac
15820 val="$t_ndbm"
15821 set i_ndbm
15822 eval $setvar
15823
15824 : see if net/errno.h is available
15825 val=''
15826 set net/errno.h val
15827 eval $inhdr
15828
15829 : Unfortunately, it causes problems on some systems.  Arrgh.
15830 case "$val" in
15831 $define)
15832         cat > try.c <<'EOM'
15833 #include <stdio.h>
15834 #include <errno.h>
15835 #include <net/errno.h>
15836 int func()
15837 {
15838         return ENOTSOCK;
15839 }
15840 EOM
15841         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15842                 echo "We'll be including <net/errno.h>." >&4
15843         else
15844                 echo "We won't be including <net/errno.h>." >&4
15845                 val="$undef"
15846         fi
15847         $rm -f try.* try
15848         ;;
15849 esac
15850 set i_neterrno
15851 eval $setvar
15852
15853 : see if netinet/tcp.h is available
15854 set netinet/tcp.h i_netinettcp
15855 eval $inhdr
15856
15857 : see if this is a poll.h system
15858 set poll.h i_poll
15859 eval $inhdr
15860
15861 : see if this is a prot.h system
15862 set prot.h i_prot
15863 eval $inhdr
15864
15865 echo " "
15866 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15867 $cat <<'EOSH' > Cppsym.know
15868 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15869 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15870 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15871 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15872 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15873 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15874 bull c cadmus clipper CMU COFF COMPILER_VERSION
15875 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15876 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15877 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15878 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15879 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15880 H3050R H3050RX hbullx20 hcx host_mips
15881 hp200 hp300 hp700 HP700 hp800 hp9000
15882 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15883 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15884 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15885 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15886 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15887 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15888 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15889 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15890 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15891 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15892 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15893 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15894 MATH_HAS_NO_SIDE_EFFECTS
15895 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15896 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15897 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15898 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15899 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15900 NetBSD news1500 news1700 news1800 news1900 news3700
15901 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15902 ns32016 ns32332 ns32k nsc32000
15903 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15904 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15905 pc532 pdp11 PGC PIC plexus PORTAR posix
15906 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15907 POSIX_C_SOURCE POSIX_SOURCE POWER
15908 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15909 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15910 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15911 sony sony_news sonyrisc sparc sparclite spectrum
15912 stardent stdc STDC_EXT stratos sun sun3 sun386
15913 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15914 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15915 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15916 sysV68 sysV88 Tek4132 Tek4300 titan
15917 TM3200 TM5400 TM5600
15918 tower tower32 tower32_200 tower32_600 tower32_700
15919 tower32_800 tower32_850 tss
15920 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15921 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15922 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15923 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15924 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15925 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15926 z8000
15927 EOSH
15928 # Maybe put other stuff here too.
15929 cat <<EOSH >>Cppsym.know
15930 $osname
15931 EOSH
15932 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15933 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15934 $cat Cppsym.know > Cppsym.c
15935 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15936 $rm -f Cppsym.a Cppsym.b Cppsym.c
15937 cat <<EOSH > Cppsym
15938 $startsh
15939 if $test \$# -gt 0; then
15940     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15941     if $test -s Cppsym.got; then
15942         $rm -f Cppsym.got
15943         exit 0
15944     fi
15945     $rm -f Cppsym.got
15946     exit 1
15947 else
15948     $tr " " "$trnl" | ./Cppsym.try
15949     exit 0
15950 fi
15951 EOSH
15952 chmod +x Cppsym
15953 $eunicefix Cppsym
15954 cat <<EOSH > Cppsym.try
15955 $startsh
15956 cat <<'EOCP' > try.c
15957 #include <stdio.h>
15958 int main() {
15959 EOCP
15960 $awk \\
15961 EOSH
15962 cat <<'EOSH' >> Cppsym.try
15963 'length($1) > 0 {
15964     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
15965     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
15966     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
15967     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
15968 }'       >> try.c
15969 echo 'return 0;}' >> try.c
15970 EOSH
15971 cat <<EOSH >> Cppsym.try
15972 ccflags="$ccflags"
15973 case "$osname-$gccversion" in
15974 irix-) ccflags="\$ccflags -woff 1178" ;;
15975 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15976 esac
15977 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15978 EOSH
15979 chmod +x Cppsym.try
15980 $eunicefix Cppsym.try
15981 ./Cppsym < Cppsym.know > Cppsym.true
15982 : now check the C compiler for additional symbols
15983 postprocess_cc_v=''
15984 case "$osname" in
15985 aix) postprocess_cc_v="|$tr , ' '" ;;
15986 esac
15987 $cat >ccsym <<EOS
15988 $startsh
15989 $cat >tmp.c <<EOF
15990 extern int foo;
15991 EOF
15992 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15993 do
15994         case "\$i" in
15995         -D*) echo "\$i" | $sed 's/^-D//';;
15996         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15997         esac
15998 done
15999 $rm -f try.c
16000 EOS
16001 postprocess_cc_v=''
16002 chmod +x ccsym
16003 $eunicefix ccsym
16004 ./ccsym > ccsym1.raw
16005 if $test -s ccsym1.raw; then
16006        $sort ccsym1.raw | $uniq >ccsym.raw
16007 else
16008        mv ccsym1.raw ccsym.raw
16009 fi
16010
16011 $awk '/\=/ { print $0; next }
16012         { print $0"=1" }' ccsym.raw >ccsym.list
16013 $awk '/\=/ { print $0; next }
16014         { print $0"=1" }' Cppsym.true >ccsym.true
16015 $comm -13 ccsym.true ccsym.list >ccsym.own
16016 $comm -12 ccsym.true ccsym.list >ccsym.com
16017 $comm -23 ccsym.true ccsym.list >ccsym.cpp
16018 also=''
16019 if $test -z ccsym.raw; then
16020         echo "Your C compiler doesn't seem to define any symbols!" >&4
16021         echo " "
16022         echo "However, your C preprocessor defines the following symbols:"
16023         $cat Cppsym.true
16024         ccsymbols=''
16025         cppsymbols=`$cat Cppsym.true`
16026         cppsymbols=`echo $cppsymbols`
16027         cppccsymbols="$cppsymbols"
16028 else
16029         if $test -s ccsym.com; then
16030                 echo "Your C compiler and pre-processor define these symbols:"
16031                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
16032                 also='also '
16033                 symbols='ones'
16034                 cppccsymbols=`$cat ccsym.com`
16035                 cppccsymbols=`echo $cppccsymbols`
16036                 $test "$silent" || sleep 1
16037         fi
16038         if $test -s ccsym.cpp; then
16039                 $test "$also" && echo " "
16040                 echo "Your C pre-processor ${also}defines the following symbols:"
16041                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
16042                 also='further '
16043                 cppsymbols=`$cat ccsym.cpp`
16044                 cppsymbols=`echo $cppsymbols`
16045                 $test "$silent" || sleep 1
16046         fi
16047         if $test -s ccsym.own; then
16048                 $test "$also" && echo " "
16049                 echo "Your C compiler ${also}defines the following cpp symbols:"
16050                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16051                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16052                 ccsymbols=`$cat ccsym.own`
16053                 ccsymbols=`echo $ccsymbols`
16054                 $test "$silent" || sleep 1
16055         fi
16056 fi
16057
16058 : see if this is a termio system
16059 val="$undef"
16060 val2="$undef"
16061 val3="$undef"
16062 if $test `./findhdr termios.h`; then
16063         set tcsetattr i_termios
16064         eval $inlibc
16065         val3="$i_termios"
16066 fi
16067 echo " "
16068 case "$val3" in
16069 "$define") echo "You have POSIX termios.h... good!" >&4;;
16070 *) if ./Cppsym pyr; then
16071                 case "`/bin/universe`" in
16072                 ucb) if $test `./findhdr sgtty.h`; then
16073                                 val2="$define"
16074                                 echo "<sgtty.h> found." >&4
16075                         else
16076                                 echo "System is pyramid with BSD universe."
16077                                 echo "<sgtty.h> not found--you could have problems." >&4
16078                         fi;;
16079                 *) if $test `./findhdr termio.h`; then
16080                                 val="$define"
16081                                 echo "<termio.h> found." >&4
16082                         else
16083                                 echo "System is pyramid with USG universe."
16084                                 echo "<termio.h> not found--you could have problems." >&4
16085                         fi;;
16086                 esac
16087         elif ./usg; then
16088                 if $test `./findhdr termio.h`; then
16089                         echo "<termio.h> found." >&4
16090                         val="$define"
16091                 elif $test `./findhdr sgtty.h`; then
16092                         echo "<sgtty.h> found." >&4
16093                         val2="$define"
16094                 else
16095 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16096                 fi
16097         else
16098                 if $test `./findhdr sgtty.h`; then
16099                         echo "<sgtty.h> found." >&4
16100                         val2="$define"
16101                 elif $test `./findhdr termio.h`; then
16102                         echo "<termio.h> found." >&4
16103                         val="$define"
16104                 else
16105 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16106                 fi
16107         fi;;
16108 esac
16109 set i_termio; eval $setvar
16110 val=$val2; set i_sgtty; eval $setvar
16111 val=$val3; set i_termios; eval $setvar
16112
16113 : see if this is a shadow.h system
16114 set shadow.h i_shadow
16115 eval $inhdr
16116
16117 : see if stddef is available
16118 set stddef.h i_stddef
16119 eval $inhdr
16120
16121 : see if this is a sunmath.h system
16122 set sunmath.h i_sunmath
16123 eval $inhdr
16124
16125 : see if sys/access.h is available
16126 set sys/access.h i_sysaccess
16127 eval $inhdr
16128
16129 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16130 set sys/filio.h i_sysfilio
16131 eval $inhdr
16132 echo " "
16133 if $test `./findhdr sys/ioctl.h`; then
16134         val="$define"
16135         echo '<sys/ioctl.h> found.' >&4
16136 else
16137         val="$undef"
16138         if $test $i_sysfilio = "$define"; then
16139             echo '<sys/ioctl.h> NOT found.' >&4
16140         else
16141                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16142                 $test $i_termio = "$define" && xxx="termio.h"
16143                 $test $i_termios = "$define" && xxx="termios.h"
16144 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16145         fi
16146 fi
16147 set i_sysioctl
16148 eval $setvar
16149
16150 : see if socket ioctl defs are in sys/sockio.h
16151 echo " "
16152 xxx=`./findhdr sys/sockio.h`
16153 if $test "$xxx"; then
16154         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16155                 val="$define"
16156                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16157         else
16158                 val="$undef"
16159                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16160         fi
16161 else
16162         val="$undef"
16163         $cat <<EOM
16164 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16165 EOM
16166 fi
16167 set i_syssockio
16168 eval $setvar
16169
16170
16171 : see if this is a syslog.h system
16172 set syslog.h i_syslog
16173 eval $inhdr
16174
16175
16176 : see if this is a sys/mode.h system
16177 set sys/mode.h i_sysmode
16178 eval $inhdr
16179
16180 : see if sys/resource.h has to be included
16181 set sys/resource.h i_sysresrc
16182 eval $inhdr
16183
16184 : see if sys/security.h is available
16185 set sys/security.h i_syssecrt
16186 eval $inhdr
16187
16188 : see if this is a sys/statvfs.h system
16189 set sys/statvfs.h i_sysstatvfs
16190 eval $inhdr
16191
16192 : see if this is a sys/un.h system
16193 set sys/un.h i_sysun
16194 eval $inhdr
16195
16196
16197 : see if this is a sys/utsname.h system
16198 set sys/utsname.h i_sysutsname
16199 eval $inhdr
16200
16201 : see if this is a syswait system
16202 set sys/wait.h i_syswait
16203 eval $inhdr
16204
16205 : see if this is a ustat.h system
16206 set ustat.h i_ustat
16207 eval $inhdr
16208
16209 : see if this is an utime system
16210 set utime.h i_utime
16211 eval $inhdr
16212
16213 : see if this is a values.h system
16214 set values.h i_values
16215 eval $inhdr
16216
16217 : see if this is a vfork system
16218 case "$d_vfork" in
16219 "$define")
16220         set vfork.h i_vfork
16221         eval $inhdr
16222         ;;
16223 *)
16224         i_vfork="$undef"
16225         ;;
16226 esac
16227
16228 : see if gdbm.h is available
16229 set gdbm.h t_gdbm
16230 eval $inhdr
16231 case "$t_gdbm" in
16232 $define)
16233         : see if gdbm_open exists
16234         set gdbm_open d_gdbm_open
16235         eval $inlibc
16236         case "$d_gdbm_open" in
16237         $undef)
16238                 t_gdbm="$undef"
16239                 echo "We won't be including <gdbm.h>"
16240                 ;;
16241         esac
16242         ;;
16243 esac
16244 val="$t_gdbm"
16245 set i_gdbm
16246 eval $setvar
16247
16248 echo " "
16249 echo "Looking for extensions..." >&4
16250 : If we are using the old config.sh, known_extensions may contain
16251 : old or inaccurate or duplicate values.
16252 known_extensions=''
16253 nonxs_extensions=''
16254 : We do not use find because it might not be available.
16255 : We do not just use MANIFEST because the user may have dropped
16256 : some additional extensions into the source tree and expect them
16257 : to be built.
16258
16259 : Function to recursively find available extensions, ignoring DynaLoader
16260 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16261 find_extensions='
16262     for xxx in *; do
16263        case "$xxx" in
16264            DynaLoader|dynaload) ;;
16265            *)
16266            if $test -f $xxx/$xxx.xs; then
16267                known_extensions="$known_extensions $1$xxx";
16268            elif $test -f $xxx/Makefile.PL; then
16269                nonxs_extensions="$nonxs_extensions $1$xxx";
16270            else
16271                if $test -d $xxx -a $# -lt 10; then
16272                    set $1$xxx/ $*;
16273                    cd $xxx;
16274                    eval $find_extensions;
16275                    cd ..;
16276                    shift;
16277                fi;
16278            fi
16279            ;;
16280        esac;
16281     done'
16282 tdir=`pwd`
16283 cd $rsrc/ext
16284 set X
16285 shift
16286 eval $find_extensions
16287 set X $nonxs_extensions
16288 shift
16289 nonxs_extensions="$*"
16290 set X $known_extensions
16291 shift
16292 known_extensions="$*"
16293 cd $tdir
16294
16295 : Now see which are supported on this system.
16296 avail_ext=''
16297 for xxx in $known_extensions ; do
16298         case "$xxx" in
16299         DB_File|db_file)
16300                 case "$i_db" in
16301                 $define) avail_ext="$avail_ext $xxx" ;;
16302                 esac
16303                 ;;
16304         GDBM_File|gdbm_fil)
16305                 case "$i_gdbm" in 
16306                 $define) avail_ext="$avail_ext $xxx" ;;
16307                 esac
16308                 ;;
16309         I18N/Langinfo|i18n_lan)
16310                 case "$i_langinfo$d_nl_langinfo" in 
16311                 $define$define) avail_ext="$avail_ext $xxx" ;;
16312                 esac
16313                 ;;
16314         NDBM_File|ndbm_fil)
16315                 case "$i_ndbm" in
16316                 $define)
16317                     case "$osname-$use64bitint" in
16318                     cygwin-*|hpux-define)
16319                         case "$libs" in
16320                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16321                         esac
16322                         ;;
16323                     *) avail_ext="$avail_ext $xxx" ;;
16324                     esac
16325                     ;;
16326                 esac
16327                 ;;
16328         ODBM_File|odbm_fil) 
16329                 case "${i_dbm}${i_rpcsvcdbm}" in
16330                 *"${define}"*)
16331                     case "$osname-$use64bitint" in
16332                     cygwin-*|hpux-define)
16333                         case "$libs" in
16334                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16335                         esac
16336                         ;;
16337                     *) avail_ext="$avail_ext $xxx" ;;
16338                     esac
16339                     ;;
16340                 esac
16341                 ;;
16342         POSIX|posix)
16343                 case "$useposix" in
16344                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16345                 esac
16346                 ;;
16347         Opcode|opcode)
16348                 case "$useopcode" in
16349                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16350                 esac
16351                 ;;
16352         Socket|socket)
16353                 case "$d_socket" in 
16354                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16355                 esac
16356                 ;;
16357         Sys/Syslog|sys/syslog)
16358                 : XXX syslog requires socket
16359                 case "$d_socket" in 
16360                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16361                 esac
16362                 ;;
16363         Thread|thread)
16364                 case "$usethreads" in
16365                 true|$define|y)
16366                         case "$useithreads" in
16367                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16368                         esac
16369                 esac
16370                 ;;
16371         IPC/SysV|ipc/sysv)
16372                 : XXX Do we need a useipcsysv variable here
16373                 case "${d_msg}${d_sem}${d_shm}" in 
16374                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16375                 esac
16376                 ;;
16377         *)      avail_ext="$avail_ext $xxx"
16378                 ;;
16379         esac
16380 done
16381
16382 set X $avail_ext
16383 shift
16384 avail_ext="$*"
16385
16386 : Now see which nonxs extensions are supported on this system.
16387 : For now assume all are.
16388 nonxs_ext=''
16389 for xxx in $nonxs_extensions ; do
16390         case "$xxx" in
16391         *)      nonxs_ext="$nonxs_ext $xxx"
16392                 ;;
16393         esac
16394 done
16395
16396 set X $nonxs_ext
16397 shift
16398 nonxs_ext="$*"
16399
16400 case $usedl in
16401 $define)
16402         $cat <<EOM
16403 A number of extensions are supplied with $package.  You may choose to
16404 compile these extensions for dynamic loading (the default), compile
16405 them into the $package executable (static loading), or not include
16406 them at all.  Answer "none" to include no extensions.
16407 Note that DynaLoader is always built and need not be mentioned here.
16408
16409 EOM
16410         case "$dynamic_ext" in
16411         '') dflt="$avail_ext" ;;
16412         *)      dflt="$dynamic_ext"
16413                 # Perhaps we are reusing an old out-of-date config.sh.
16414                 case "$hint" in
16415                 previous)
16416                         if test X"$dynamic_ext" != X"$avail_ext"; then
16417                                 $cat <<EOM
16418 NOTICE:  Your previous config.sh list may be incorrect. 
16419 The extensions now available to you are 
16420         ${avail_ext}
16421 but the default list from your previous config.sh is
16422         ${dynamic_ext} 
16423
16424 EOM
16425                         fi
16426                         ;;
16427                 esac
16428                 ;;
16429         esac
16430         case "$dflt" in
16431         '')     dflt=none;;
16432         esac
16433         rp="What extensions do you wish to load dynamically?"
16434         . ./myread
16435         case "$ans" in
16436         none) dynamic_ext=' ' ;;
16437         *) dynamic_ext="$ans" ;;
16438         esac
16439
16440         case "$static_ext" in
16441         '')
16442                 : Exclude those already listed in dynamic linking
16443                 dflt=''
16444                 for xxx in $avail_ext; do
16445                         case " $dynamic_ext " in
16446                         *" $xxx "*) ;;
16447                         *) dflt="$dflt $xxx" ;;
16448                         esac
16449                 done
16450                 set X $dflt
16451                 shift
16452                 dflt="$*"
16453                 ;;
16454         *)  dflt="$static_ext" 
16455                 ;;
16456         esac
16457
16458         case "$dflt" in
16459         '')     dflt=none;;
16460         esac
16461         rp="What extensions do you wish to load statically?"
16462         . ./myread
16463         case "$ans" in
16464         none) static_ext=' ' ;;
16465         *) static_ext="$ans" ;;
16466         esac
16467         ;;
16468 *)
16469         $cat <<EOM
16470 A number of extensions are supplied with $package.  Answer "none" 
16471 to include no extensions. 
16472 Note that DynaLoader is always built and need not be mentioned here.
16473
16474 EOM
16475         case "$static_ext" in
16476         '') dflt="$avail_ext" ;;
16477         *)      dflt="$static_ext"
16478                 # Perhaps we are reusing an old out-of-date config.sh.
16479                 case "$hint" in
16480                 previous)
16481                         if test X"$static_ext" != X"$avail_ext"; then
16482                                 $cat <<EOM
16483 NOTICE:  Your previous config.sh list may be incorrect. 
16484 The extensions now available to you are 
16485         ${avail_ext}
16486 but the default list from your previous config.sh is
16487         ${static_ext} 
16488
16489 EOM
16490                         fi
16491                         ;;
16492                 esac
16493                 ;;
16494         esac
16495         : Exclude those that are not xs extensions
16496         case "$dflt" in
16497         '')     dflt=none;;
16498         esac
16499         rp="What extensions do you wish to include?"
16500         . ./myread
16501         case "$ans" in
16502         none) static_ext=' ' ;;
16503         *) static_ext="$ans" ;;
16504         esac
16505         ;;
16506 esac
16507
16508 set X $dynamic_ext $static_ext $nonxs_ext
16509 shift
16510 extensions="$*"
16511
16512 : Remove libraries needed only for extensions
16513 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16514 : The exception is SunOS 4.x, which needs them.
16515 case "${osname}X${osvers}" in
16516 sunos*X4*)
16517     perllibs="$libs"
16518     ;;
16519 *) case "$usedl" in
16520     $define|true|[yY]*)
16521             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16522             shift
16523             perllibs="$*"
16524             ;;
16525     *)  perllibs="$libs"
16526             ;;
16527     esac
16528     ;;
16529 esac
16530
16531 : Remove build directory name from cppstdin so it can be used from
16532 : either the present location or the final installed location.
16533 echo " "
16534 : Get out of the UU directory to get correct path name.
16535 cd ..
16536 case "$cppstdin" in
16537 `pwd`/cppstdin)
16538         echo "Stripping down cppstdin path name"
16539         cppstdin=cppstdin
16540         ;;
16541 esac
16542 cd UU
16543
16544 : end of configuration questions
16545 echo " "
16546 echo "End of configuration questions."
16547 echo " "
16548
16549 : back to where it started
16550 if test -d ../UU; then
16551         cd ..
16552 fi
16553
16554 : configuration may be patched via a 'config.over' file
16555 if $test -f config.over; then
16556         echo " "
16557         dflt=y
16558         rp='I see a config.over file.  Do you wish to load it?'
16559         . UU/myread
16560         case "$ans" in
16561         n*) echo "OK, I'll ignore it.";;
16562         *)      . ./config.over
16563                 echo "Configuration override changes have been loaded."
16564                 ;;
16565         esac
16566 fi
16567
16568 : in case they want portability, strip down executable paths
16569 case "$d_portable" in
16570 "$define")
16571         echo " "
16572         echo "Stripping down executable paths..." >&4
16573         for file in $loclist $trylist; do
16574                 eval temp=\$$file
16575                 eval $file=`basename $temp`
16576         done
16577         ;;
16578 esac
16579
16580 : create config.sh file
16581 echo " "
16582 echo "Creating config.sh..." >&4
16583 $spitshell <<EOT >config.sh
16584 $startsh
16585 #
16586 # This file was produced by running the Configure script. It holds all the
16587 # definitions figured out by Configure. Should you modify one of these values,
16588 # do not forget to propagate your changes by running "Configure -der". You may
16589 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16590 #
16591
16592 # Package name      : $package
16593 # Source directory  : $src
16594 # Configuration time: $cf_time
16595 # Configured by     : $cf_by
16596 # Target system     : $myuname
16597
16598 Author='$Author'
16599 Date='$Date'
16600 Header='$Header'
16601 Id='$Id'
16602 Locker='$Locker'
16603 Log='$Log'
16604 Mcc='$Mcc'
16605 RCSfile='$RCSfile'
16606 Revision='$Revision'
16607 Source='$Source'
16608 State='$State'
16609 _a='$_a'
16610 _exe='$_exe'
16611 _o='$_o'
16612 afs='$afs'
16613 afsroot='$afsroot'
16614 alignbytes='$alignbytes'
16615 ansi2knr='$ansi2knr'
16616 aphostname='$aphostname'
16617 api_revision='$api_revision'
16618 api_subversion='$api_subversion'
16619 api_version='$api_version'
16620 api_versionstring='$api_versionstring'
16621 ar='$ar'
16622 archlib='$archlib'
16623 archlibexp='$archlibexp'
16624 archname64='$archname64'
16625 archname='$archname'
16626 archobjs='$archobjs'
16627 awk='$awk'
16628 baserev='$baserev'
16629 bash='$bash'
16630 bin='$bin'
16631 bincompat5005='$bincompat5005'
16632 binexp='$binexp'
16633 bison='$bison'
16634 byacc='$byacc'
16635 byteorder='$byteorder'
16636 c='$c'
16637 castflags='$castflags'
16638 cat='$cat'
16639 cc='$cc'
16640 cccdlflags='$cccdlflags'
16641 ccdlflags='$ccdlflags'
16642 ccflags='$ccflags'
16643 ccflags_uselargefiles='$ccflags_uselargefiles'
16644 ccname='$ccname'
16645 ccsymbols='$ccsymbols'
16646 ccversion='$ccversion'
16647 cf_by='$cf_by'
16648 cf_email='$cf_email'
16649 cf_time='$cf_time'
16650 charsize='$charsize'
16651 chgrp='$chgrp'
16652 chmod='$chmod'
16653 chown='$chown'
16654 clocktype='$clocktype'
16655 comm='$comm'
16656 compress='$compress'
16657 contains='$contains'
16658 cp='$cp'
16659 cpio='$cpio'
16660 cpp='$cpp'
16661 cpp_stuff='$cpp_stuff'
16662 cppccsymbols='$cppccsymbols'
16663 cppflags='$cppflags'
16664 cpplast='$cpplast'
16665 cppminus='$cppminus'
16666 cpprun='$cpprun'
16667 cppstdin='$cppstdin'
16668 cppsymbols='$cppsymbols'
16669 cryptlib='$cryptlib'
16670 csh='$csh'
16671 d_Gconvert='$d_Gconvert'
16672 d_PRIEUldbl='$d_PRIEUldbl'
16673 d_PRIFUldbl='$d_PRIFUldbl'
16674 d_PRIGUldbl='$d_PRIGUldbl'
16675 d_PRIXU64='$d_PRIXU64'
16676 d_PRId64='$d_PRId64'
16677 d_PRIeldbl='$d_PRIeldbl'
16678 d_PRIfldbl='$d_PRIfldbl'
16679 d_PRIgldbl='$d_PRIgldbl'
16680 d_PRIi64='$d_PRIi64'
16681 d_PRIo64='$d_PRIo64'
16682 d_PRIu64='$d_PRIu64'
16683 d_PRIx64='$d_PRIx64'
16684 d_SCNfldbl='$d_SCNfldbl'
16685 d__fwalk='$d__fwalk'
16686 d_access='$d_access'
16687 d_accessx='$d_accessx'
16688 d_alarm='$d_alarm'
16689 d_archlib='$d_archlib'
16690 d_atolf='$d_atolf'
16691 d_atoll='$d_atoll'
16692 d_attribut='$d_attribut'
16693 d_bcmp='$d_bcmp'
16694 d_bcopy='$d_bcopy'
16695 d_bincompat5005='$d_bincompat5005'
16696 d_bsd='$d_bsd'
16697 d_bsdgetpgrp='$d_bsdgetpgrp'
16698 d_bsdsetpgrp='$d_bsdsetpgrp'
16699 d_bzero='$d_bzero'
16700 d_casti32='$d_casti32'
16701 d_castneg='$d_castneg'
16702 d_charvspr='$d_charvspr'
16703 d_chown='$d_chown'
16704 d_chroot='$d_chroot'
16705 d_chsize='$d_chsize'
16706 d_closedir='$d_closedir'
16707 d_cmsghdr_s='$d_cmsghdr_s'
16708 d_const='$d_const'
16709 d_crypt='$d_crypt'
16710 d_csh='$d_csh'
16711 d_cuserid='$d_cuserid'
16712 d_dbl_dig='$d_dbl_dig'
16713 d_dbminitproto='$d_dbminitproto'
16714 d_difftime='$d_difftime'
16715 d_dirnamlen='$d_dirnamlen'
16716 d_dlerror='$d_dlerror'
16717 d_dlopen='$d_dlopen'
16718 d_dlsymun='$d_dlsymun'
16719 d_dosuid='$d_dosuid'
16720 d_drand48proto='$d_drand48proto'
16721 d_dup2='$d_dup2'
16722 d_eaccess='$d_eaccess'
16723 d_endgrent='$d_endgrent'
16724 d_endhent='$d_endhent'
16725 d_endnent='$d_endnent'
16726 d_endpent='$d_endpent'
16727 d_endpwent='$d_endpwent'
16728 d_endsent='$d_endsent'
16729 d_eofnblk='$d_eofnblk'
16730 d_eunice='$d_eunice'
16731 d_fchdir='$d_fchdir'
16732 d_fchmod='$d_fchmod'
16733 d_fchown='$d_fchown'
16734 d_fcntl='$d_fcntl'
16735 d_fcntl_can_lock='$d_fcntl_can_lock'
16736 d_fd_macros='$d_fd_macros'
16737 d_fd_set='$d_fd_set'
16738 d_fds_bits='$d_fds_bits'
16739 d_fgetpos='$d_fgetpos'
16740 d_flexfnam='$d_flexfnam'
16741 d_flock='$d_flock'
16742 d_flockproto='$d_flockproto'
16743 d_fork='$d_fork'
16744 d_fpathconf='$d_fpathconf'
16745 d_fpos64_t='$d_fpos64_t'
16746 d_frexpl='$d_frexpl'
16747 d_fs_data_s='$d_fs_data_s'
16748 d_fseeko='$d_fseeko'
16749 d_fsetpos='$d_fsetpos'
16750 d_fstatfs='$d_fstatfs'
16751 d_fstatvfs='$d_fstatvfs'
16752 d_fsync='$d_fsync'
16753 d_ftello='$d_ftello'
16754 d_ftime='$d_ftime'
16755 d_getcwd='$d_getcwd'
16756 d_getespwnam='$d_getespwnam'
16757 d_getfsstat='$d_getfsstat'
16758 d_getgrent='$d_getgrent'
16759 d_getgrps='$d_getgrps'
16760 d_gethbyaddr='$d_gethbyaddr'
16761 d_gethbyname='$d_gethbyname'
16762 d_gethent='$d_gethent'
16763 d_gethname='$d_gethname'
16764 d_gethostprotos='$d_gethostprotos'
16765 d_getitimer='$d_getitimer'
16766 d_getlogin='$d_getlogin'
16767 d_getmnt='$d_getmnt'
16768 d_getmntent='$d_getmntent'
16769 d_getnbyaddr='$d_getnbyaddr'
16770 d_getnbyname='$d_getnbyname'
16771 d_getnent='$d_getnent'
16772 d_getnetprotos='$d_getnetprotos'
16773 d_getpagsz='$d_getpagsz'
16774 d_getpbyname='$d_getpbyname'
16775 d_getpbynumber='$d_getpbynumber'
16776 d_getpent='$d_getpent'
16777 d_getpgid='$d_getpgid'
16778 d_getpgrp2='$d_getpgrp2'
16779 d_getpgrp='$d_getpgrp'
16780 d_getppid='$d_getppid'
16781 d_getprior='$d_getprior'
16782 d_getprotoprotos='$d_getprotoprotos'
16783 d_getprpwnam='$d_getprpwnam'
16784 d_getpwent='$d_getpwent'
16785 d_getsbyname='$d_getsbyname'
16786 d_getsbyport='$d_getsbyport'
16787 d_getsent='$d_getsent'
16788 d_getservprotos='$d_getservprotos'
16789 d_getspnam='$d_getspnam'
16790 d_gettimeod='$d_gettimeod'
16791 d_gnulibc='$d_gnulibc'
16792 d_grpasswd='$d_grpasswd'
16793 d_hasmntopt='$d_hasmntopt'
16794 d_htonl='$d_htonl'
16795 d_iconv='$d_iconv'
16796 d_index='$d_index'
16797 d_inetaton='$d_inetaton'
16798 d_int64_t='$d_int64_t'
16799 d_isascii='$d_isascii'
16800 d_isnan='$d_isnan'
16801 d_isnanl='$d_isnanl'
16802 d_killpg='$d_killpg'
16803 d_lchown='$d_lchown'
16804 d_ldbl_dig='$d_ldbl_dig'
16805 d_link='$d_link'
16806 d_locconv='$d_locconv'
16807 d_lockf='$d_lockf'
16808 d_longdbl='$d_longdbl'
16809 d_longlong='$d_longlong'
16810 d_lseekproto='$d_lseekproto'
16811 d_lstat='$d_lstat'
16812 d_madvise='$d_madvise'
16813 d_mblen='$d_mblen'
16814 d_mbstowcs='$d_mbstowcs'
16815 d_mbtowc='$d_mbtowc'
16816 d_memchr='$d_memchr'
16817 d_memcmp='$d_memcmp'
16818 d_memcpy='$d_memcpy'
16819 d_memmove='$d_memmove'
16820 d_memset='$d_memset'
16821 d_mkdir='$d_mkdir'
16822 d_mkdtemp='$d_mkdtemp'
16823 d_mkfifo='$d_mkfifo'
16824 d_mkstemp='$d_mkstemp'
16825 d_mkstemps='$d_mkstemps'
16826 d_mktime='$d_mktime'
16827 d_mmap='$d_mmap'
16828 d_modfl='$d_modfl'
16829 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16830 d_mprotect='$d_mprotect'
16831 d_msg='$d_msg'
16832 d_msg_ctrunc='$d_msg_ctrunc'
16833 d_msg_dontroute='$d_msg_dontroute'
16834 d_msg_oob='$d_msg_oob'
16835 d_msg_peek='$d_msg_peek'
16836 d_msg_proxy='$d_msg_proxy'
16837 d_msgctl='$d_msgctl'
16838 d_msgget='$d_msgget'
16839 d_msghdr_s='$d_msghdr_s'
16840 d_msgrcv='$d_msgrcv'
16841 d_msgsnd='$d_msgsnd'
16842 d_msync='$d_msync'
16843 d_munmap='$d_munmap'
16844 d_mymalloc='$d_mymalloc'
16845 d_nice='$d_nice'
16846 d_nl_langinfo='$d_nl_langinfo'
16847 d_nv_preserves_uv='$d_nv_preserves_uv'
16848 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16849 d_off64_t='$d_off64_t'
16850 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16851 d_oldpthreads='$d_oldpthreads'
16852 d_oldsock='$d_oldsock'
16853 d_open3='$d_open3'
16854 d_pathconf='$d_pathconf'
16855 d_pause='$d_pause'
16856 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16857 d_phostname='$d_phostname'
16858 d_pipe='$d_pipe'
16859 d_poll='$d_poll'
16860 d_portable='$d_portable'
16861 d_pthread_atfork='$d_pthread_atfork'
16862 d_pthread_yield='$d_pthread_yield'
16863 d_pwage='$d_pwage'
16864 d_pwchange='$d_pwchange'
16865 d_pwclass='$d_pwclass'
16866 d_pwcomment='$d_pwcomment'
16867 d_pwexpire='$d_pwexpire'
16868 d_pwgecos='$d_pwgecos'
16869 d_pwpasswd='$d_pwpasswd'
16870 d_pwquota='$d_pwquota'
16871 d_qgcvt='$d_qgcvt'
16872 d_quad='$d_quad'
16873 d_readdir='$d_readdir'
16874 d_readlink='$d_readlink'
16875 d_readv='$d_readv'
16876 d_recvmsg='$d_recvmsg'
16877 d_rename='$d_rename'
16878 d_rewinddir='$d_rewinddir'
16879 d_rmdir='$d_rmdir'
16880 d_safebcpy='$d_safebcpy'
16881 d_safemcpy='$d_safemcpy'
16882 d_sanemcmp='$d_sanemcmp'
16883 d_sbrkproto='$d_sbrkproto'
16884 d_sched_yield='$d_sched_yield'
16885 d_scm_rights='$d_scm_rights'
16886 d_seekdir='$d_seekdir'
16887 d_select='$d_select'
16888 d_sem='$d_sem'
16889 d_semctl='$d_semctl'
16890 d_semctl_semid_ds='$d_semctl_semid_ds'
16891 d_semctl_semun='$d_semctl_semun'
16892 d_semget='$d_semget'
16893 d_semop='$d_semop'
16894 d_sendmsg='$d_sendmsg'
16895 d_setegid='$d_setegid'
16896 d_seteuid='$d_seteuid'
16897 d_setgrent='$d_setgrent'
16898 d_setgrps='$d_setgrps'
16899 d_sethent='$d_sethent'
16900 d_setitimer='$d_setitimer'
16901 d_setlinebuf='$d_setlinebuf'
16902 d_setlocale='$d_setlocale'
16903 d_setnent='$d_setnent'
16904 d_setpent='$d_setpent'
16905 d_setpgid='$d_setpgid'
16906 d_setpgrp2='$d_setpgrp2'
16907 d_setpgrp='$d_setpgrp'
16908 d_setprior='$d_setprior'
16909 d_setproctitle='$d_setproctitle'
16910 d_setpwent='$d_setpwent'
16911 d_setregid='$d_setregid'
16912 d_setresgid='$d_setresgid'
16913 d_setresuid='$d_setresuid'
16914 d_setreuid='$d_setreuid'
16915 d_setrgid='$d_setrgid'
16916 d_setruid='$d_setruid'
16917 d_setsent='$d_setsent'
16918 d_setsid='$d_setsid'
16919 d_setvbuf='$d_setvbuf'
16920 d_sfio='$d_sfio'
16921 d_shm='$d_shm'
16922 d_shmat='$d_shmat'
16923 d_shmatprototype='$d_shmatprototype'
16924 d_shmctl='$d_shmctl'
16925 d_shmdt='$d_shmdt'
16926 d_shmget='$d_shmget'
16927 d_sigaction='$d_sigaction'
16928 d_sigprocmask='$d_sigprocmask'
16929 d_sigsetjmp='$d_sigsetjmp'
16930 d_sockatmark='$d_sockatmark'
16931 d_sockatmarkproto='$d_sockatmarkproto'
16932 d_socket='$d_socket'
16933 d_socklen_t='$d_socklen_t'
16934 d_sockpair='$d_sockpair'
16935 d_socks5_init='$d_socks5_init'
16936 d_sqrtl='$d_sqrtl'
16937 d_sresgproto='$d_sresgproto'
16938 d_sresuproto='$d_sresuproto'
16939 d_statblks='$d_statblks'
16940 d_statfs_f_flags='$d_statfs_f_flags'
16941 d_statfs_s='$d_statfs_s'
16942 d_statvfs='$d_statvfs'
16943 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16944 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16945 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16946 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16947 d_stdio_stream_array='$d_stdio_stream_array'
16948 d_stdiobase='$d_stdiobase'
16949 d_stdstdio='$d_stdstdio'
16950 d_strchr='$d_strchr'
16951 d_strcoll='$d_strcoll'
16952 d_strctcpy='$d_strctcpy'
16953 d_strerrm='$d_strerrm'
16954 d_strerror='$d_strerror'
16955 d_strftime='$d_strftime'
16956 d_strtod='$d_strtod'
16957 d_strtol='$d_strtol'
16958 d_strtold='$d_strtold'
16959 d_strtoll='$d_strtoll'
16960 d_strtoq='$d_strtoq'
16961 d_strtoul='$d_strtoul'
16962 d_strtoull='$d_strtoull'
16963 d_strtouq='$d_strtouq'
16964 d_strxfrm='$d_strxfrm'
16965 d_suidsafe='$d_suidsafe'
16966 d_symlink='$d_symlink'
16967 d_syscall='$d_syscall'
16968 d_syscallproto='$d_syscallproto'
16969 d_sysconf='$d_sysconf'
16970 d_sysernlst='$d_sysernlst'
16971 d_syserrlst='$d_syserrlst'
16972 d_system='$d_system'
16973 d_tcgetpgrp='$d_tcgetpgrp'
16974 d_tcsetpgrp='$d_tcsetpgrp'
16975 d_telldir='$d_telldir'
16976 d_telldirproto='$d_telldirproto'
16977 d_time='$d_time'
16978 d_times='$d_times'
16979 d_truncate='$d_truncate'
16980 d_tzname='$d_tzname'
16981 d_u32align='$d_u32align'
16982 d_ualarm='$d_ualarm'
16983 d_umask='$d_umask'
16984 d_uname='$d_uname'
16985 d_union_semun='$d_union_semun'
16986 d_usleep='$d_usleep'
16987 d_usleepproto='$d_usleepproto'
16988 d_ustat='$d_ustat'
16989 d_vendorarch='$d_vendorarch'
16990 d_vendorbin='$d_vendorbin'
16991 d_vendorlib='$d_vendorlib'
16992 d_vfork='$d_vfork'
16993 d_void_closedir='$d_void_closedir'
16994 d_voidsig='$d_voidsig'
16995 d_voidtty='$d_voidtty'
16996 d_volatile='$d_volatile'
16997 d_vprintf='$d_vprintf'
16998 d_wait4='$d_wait4'
16999 d_waitpid='$d_waitpid'
17000 d_wcstombs='$d_wcstombs'
17001 d_wctomb='$d_wctomb'
17002 d_writev='$d_writev'
17003 d_xenix='$d_xenix'
17004 date='$date'
17005 db_hashtype='$db_hashtype'
17006 db_prefixtype='$db_prefixtype'
17007 db_version_major='$db_version_major'
17008 db_version_minor='$db_version_minor'
17009 db_version_patch='$db_version_patch'
17010 defvoidused='$defvoidused'
17011 direntrytype='$direntrytype'
17012 dlext='$dlext'
17013 dlsrc='$dlsrc'
17014 doublesize='$doublesize'
17015 drand01='$drand01'
17016 dynamic_ext='$dynamic_ext'
17017 eagain='$eagain'
17018 ebcdic='$ebcdic'
17019 echo='$echo'
17020 egrep='$egrep'
17021 emacs='$emacs'
17022 eunicefix='$eunicefix'
17023 exe_ext='$exe_ext'
17024 expr='$expr'
17025 extensions='$extensions'
17026 extras='$extras'
17027 fflushNULL='$fflushNULL'
17028 fflushall='$fflushall'
17029 find='$find'
17030 firstmakefile='$firstmakefile'
17031 flex='$flex'
17032 fpossize='$fpossize'
17033 fpostype='$fpostype'
17034 freetype='$freetype'
17035 from='$from'
17036 full_ar='$full_ar'
17037 full_csh='$full_csh'
17038 full_sed='$full_sed'
17039 gccosandvers='$gccosandvers'
17040 gccversion='$gccversion'
17041 gidformat='$gidformat'
17042 gidsign='$gidsign'
17043 gidsize='$gidsize'
17044 gidtype='$gidtype'
17045 glibpth='$glibpth'
17046 grep='$grep'
17047 groupcat='$groupcat'
17048 groupstype='$groupstype'
17049 gzip='$gzip'
17050 h_fcntl='$h_fcntl'
17051 h_sysfile='$h_sysfile'
17052 hint='$hint'
17053 hostcat='$hostcat'
17054 i16size='$i16size'
17055 i16type='$i16type'
17056 i32size='$i32size'
17057 i32type='$i32type'
17058 i64size='$i64size'
17059 i64type='$i64type'
17060 i8size='$i8size'
17061 i8type='$i8type'
17062 i_arpainet='$i_arpainet'
17063 i_bsdioctl='$i_bsdioctl'
17064 i_db='$i_db'
17065 i_dbm='$i_dbm'
17066 i_dirent='$i_dirent'
17067 i_dld='$i_dld'
17068 i_dlfcn='$i_dlfcn'
17069 i_fcntl='$i_fcntl'
17070 i_float='$i_float'
17071 i_gdbm='$i_gdbm'
17072 i_grp='$i_grp'
17073 i_iconv='$i_iconv'
17074 i_ieeefp='$i_ieeefp'
17075 i_inttypes='$i_inttypes'
17076 i_langinfo='$i_langinfo'
17077 i_libutil='$i_libutil'
17078 i_limits='$i_limits'
17079 i_locale='$i_locale'
17080 i_machcthr='$i_machcthr'
17081 i_malloc='$i_malloc'
17082 i_math='$i_math'
17083 i_memory='$i_memory'
17084 i_mntent='$i_mntent'
17085 i_ndbm='$i_ndbm'
17086 i_netdb='$i_netdb'
17087 i_neterrno='$i_neterrno'
17088 i_netinettcp='$i_netinettcp'
17089 i_niin='$i_niin'
17090 i_poll='$i_poll'
17091 i_prot='$i_prot'
17092 i_pthread='$i_pthread'
17093 i_pwd='$i_pwd'
17094 i_rpcsvcdbm='$i_rpcsvcdbm'
17095 i_sfio='$i_sfio'
17096 i_sgtty='$i_sgtty'
17097 i_shadow='$i_shadow'
17098 i_socks='$i_socks'
17099 i_stdarg='$i_stdarg'
17100 i_stddef='$i_stddef'
17101 i_stdlib='$i_stdlib'
17102 i_string='$i_string'
17103 i_sunmath='$i_sunmath'
17104 i_sysaccess='$i_sysaccess'
17105 i_sysdir='$i_sysdir'
17106 i_sysfile='$i_sysfile'
17107 i_sysfilio='$i_sysfilio'
17108 i_sysin='$i_sysin'
17109 i_sysioctl='$i_sysioctl'
17110 i_syslog='$i_syslog'
17111 i_sysmman='$i_sysmman'
17112 i_sysmode='$i_sysmode'
17113 i_sysmount='$i_sysmount'
17114 i_sysndir='$i_sysndir'
17115 i_sysparam='$i_sysparam'
17116 i_sysresrc='$i_sysresrc'
17117 i_syssecrt='$i_syssecrt'
17118 i_sysselct='$i_sysselct'
17119 i_syssockio='$i_syssockio'
17120 i_sysstat='$i_sysstat'
17121 i_sysstatfs='$i_sysstatfs'
17122 i_sysstatvfs='$i_sysstatvfs'
17123 i_systime='$i_systime'
17124 i_systimek='$i_systimek'
17125 i_systimes='$i_systimes'
17126 i_systypes='$i_systypes'
17127 i_sysuio='$i_sysuio'
17128 i_sysun='$i_sysun'
17129 i_sysutsname='$i_sysutsname'
17130 i_sysvfs='$i_sysvfs'
17131 i_syswait='$i_syswait'
17132 i_termio='$i_termio'
17133 i_termios='$i_termios'
17134 i_time='$i_time'
17135 i_unistd='$i_unistd'
17136 i_ustat='$i_ustat'
17137 i_utime='$i_utime'
17138 i_values='$i_values'
17139 i_varargs='$i_varargs'
17140 i_varhdr='$i_varhdr'
17141 i_vfork='$i_vfork'
17142 ignore_versioned_solibs='$ignore_versioned_solibs'
17143 inc_version_list='$inc_version_list'
17144 inc_version_list_init='$inc_version_list_init'
17145 incpath='$incpath'
17146 inews='$inews'
17147 installarchlib='$installarchlib'
17148 installbin='$installbin'
17149 installman1dir='$installman1dir'
17150 installman3dir='$installman3dir'
17151 installprefix='$installprefix'
17152 installprefixexp='$installprefixexp'
17153 installprivlib='$installprivlib'
17154 installscript='$installscript'
17155 installsitearch='$installsitearch'
17156 installsitebin='$installsitebin'
17157 installsitelib='$installsitelib'
17158 installstyle='$installstyle'
17159 installusrbinperl='$installusrbinperl'
17160 installvendorarch='$installvendorarch'
17161 installvendorbin='$installvendorbin'
17162 installvendorlib='$installvendorlib'
17163 intsize='$intsize'
17164 issymlink='$issymlink'
17165 ivdformat='$ivdformat'
17166 ivsize='$ivsize'
17167 ivtype='$ivtype'
17168 known_extensions='$known_extensions'
17169 ksh='$ksh'
17170 ld='$ld'
17171 lddlflags='$lddlflags'
17172 ldflags='$ldflags'
17173 ldflags_uselargefiles='$ldflags_uselargefiles'
17174 ldlibpthname='$ldlibpthname'
17175 less='$less'
17176 lib_ext='$lib_ext'
17177 libc='$libc'
17178 libperl='$libperl'
17179 libpth='$libpth'
17180 libs='$libs'
17181 libsdirs='$libsdirs'
17182 libsfiles='$libsfiles'
17183 libsfound='$libsfound'
17184 libspath='$libspath'
17185 libswanted='$libswanted'
17186 libswanted_uselargefiles='$libswanted_uselargefiles'
17187 line='$line'
17188 lint='$lint'
17189 lkflags='$lkflags'
17190 ln='$ln'
17191 lns='$lns'
17192 locincpth='$locincpth'
17193 loclibpth='$loclibpth'
17194 longdblsize='$longdblsize'
17195 longlongsize='$longlongsize'
17196 longsize='$longsize'
17197 lp='$lp'
17198 lpr='$lpr'
17199 ls='$ls'
17200 lseeksize='$lseeksize'
17201 lseektype='$lseektype'
17202 mail='$mail'
17203 mailx='$mailx'
17204 make='$make'
17205 make_set_make='$make_set_make'
17206 mallocobj='$mallocobj'
17207 mallocsrc='$mallocsrc'
17208 malloctype='$malloctype'
17209 man1dir='$man1dir'
17210 man1direxp='$man1direxp'
17211 man1ext='$man1ext'
17212 man3dir='$man3dir'
17213 man3direxp='$man3direxp'
17214 man3ext='$man3ext'
17215 mips_type='$mips_type'
17216 mkdir='$mkdir'
17217 mmaptype='$mmaptype'
17218 modetype='$modetype'
17219 more='$more'
17220 multiarch='$multiarch'
17221 mv='$mv'
17222 myarchname='$myarchname'
17223 mydomain='$mydomain'
17224 myhostname='$myhostname'
17225 myuname='$myuname'
17226 n='$n'
17227 need_va_copy='$need_va_copy'
17228 netdb_hlen_type='$netdb_hlen_type'
17229 netdb_host_type='$netdb_host_type'
17230 netdb_name_type='$netdb_name_type'
17231 netdb_net_type='$netdb_net_type'
17232 nm='$nm'
17233 nm_opt='$nm_opt'
17234 nm_so_opt='$nm_so_opt'
17235 nonxs_ext='$nonxs_ext'
17236 nroff='$nroff'
17237 nvEUformat='$nvEUformat'
17238 nvFUformat='$nvFUformat'
17239 nvGUformat='$nvGUformat'
17240 nveformat='$nveformat'
17241 nvfformat='$nvfformat'
17242 nvgformat='$nvgformat'
17243 nvsize='$nvsize'
17244 nvtype='$nvtype'
17245 o_nonblock='$o_nonblock'
17246 obj_ext='$obj_ext'
17247 old_pthread_create_joinable='$old_pthread_create_joinable'
17248 optimize='$optimize'
17249 orderlib='$orderlib'
17250 osname='$osname'
17251 osvers='$osvers'
17252 otherlibdirs='$otherlibdirs'
17253 package='$package'
17254 pager='$pager'
17255 passcat='$passcat'
17256 patchlevel='$patchlevel'
17257 path_sep='$path_sep'
17258 perl5='$perl5'
17259 perl='$perl'
17260 perl_patchlevel='$perl_patchlevel'
17261 perladmin='$perladmin'
17262 perllibs='$perllibs'
17263 perlpath='$perlpath'
17264 pg='$pg'
17265 phostname='$phostname'
17266 pidtype='$pidtype'
17267 plibpth='$plibpth'
17268 pm_apiversion='$pm_apiversion'
17269 pmake='$pmake'
17270 pr='$pr'
17271 prefix='$prefix'
17272 prefixexp='$prefixexp'
17273 privlib='$privlib'
17274 privlibexp='$privlibexp'
17275 prototype='$prototype'
17276 ptrsize='$ptrsize'
17277 quadkind='$quadkind'
17278 quadtype='$quadtype'
17279 randbits='$randbits'
17280 randfunc='$randfunc'
17281 randseedtype='$randseedtype'
17282 ranlib='$ranlib'
17283 rd_nodata='$rd_nodata'
17284 revision='$revision'
17285 rm='$rm'
17286 rmail='$rmail'
17287 run='$run'
17288 runnm='$runnm'
17289 sPRIEUldbl='$sPRIEUldbl'
17290 sPRIFUldbl='$sPRIFUldbl'
17291 sPRIGUldbl='$sPRIGUldbl'
17292 sPRIXU64='$sPRIXU64'
17293 sPRId64='$sPRId64'
17294 sPRIeldbl='$sPRIeldbl'
17295 sPRIfldbl='$sPRIfldbl'
17296 sPRIgldbl='$sPRIgldbl'
17297 sPRIi64='$sPRIi64'
17298 sPRIo64='$sPRIo64'
17299 sPRIu64='$sPRIu64'
17300 sPRIx64='$sPRIx64'
17301 sSCNfldbl='$sSCNfldbl'
17302 sched_yield='$sched_yield'
17303 scriptdir='$scriptdir'
17304 scriptdirexp='$scriptdirexp'
17305 sed='$sed'
17306 seedfunc='$seedfunc'
17307 selectminbits='$selectminbits'
17308 selecttype='$selecttype'
17309 sendmail='$sendmail'
17310 sh='$sh'
17311 shar='$shar'
17312 sharpbang='$sharpbang'
17313 shmattype='$shmattype'
17314 shortsize='$shortsize'
17315 shrpenv='$shrpenv'
17316 shsharp='$shsharp'
17317 sig_count='$sig_count'
17318 sig_name='$sig_name'
17319 sig_name_init='$sig_name_init'
17320 sig_num='$sig_num'
17321 sig_num_init='$sig_num_init'
17322 sig_size='$sig_size'
17323 signal_t='$signal_t'
17324 sitearch='$sitearch'
17325 sitearchexp='$sitearchexp'
17326 sitebin='$sitebin'
17327 sitebinexp='$sitebinexp'
17328 sitelib='$sitelib'
17329 sitelib_stem='$sitelib_stem'
17330 sitelibexp='$sitelibexp'
17331 siteprefix='$siteprefix'
17332 siteprefixexp='$siteprefixexp'
17333 sizesize='$sizesize'
17334 sizetype='$sizetype'
17335 sleep='$sleep'
17336 smail='$smail'
17337 so='$so'
17338 sockethdr='$sockethdr'
17339 socketlib='$socketlib'
17340 socksizetype='$socksizetype'
17341 sort='$sort'
17342 spackage='$spackage'
17343 spitshell='$spitshell'
17344 src='$src'
17345 ssizetype='$ssizetype'
17346 startperl='$startperl'
17347 startsh='$startsh'
17348 static_ext='$static_ext'
17349 stdchar='$stdchar'
17350 stdio_base='$stdio_base'
17351 stdio_bufsiz='$stdio_bufsiz'
17352 stdio_cnt='$stdio_cnt'
17353 stdio_filbuf='$stdio_filbuf'
17354 stdio_ptr='$stdio_ptr'
17355 stdio_stream_array='$stdio_stream_array'
17356 strings='$strings'
17357 submit='$submit'
17358 subversion='$subversion'
17359 sysman='$sysman'
17360 tail='$tail'
17361 tar='$tar'
17362 targetarch='$targetarch'
17363 tbl='$tbl'
17364 tee='$tee'
17365 test='$test'
17366 timeincl='$timeincl'
17367 timetype='$timetype'
17368 to='$to'
17369 touch='$touch'
17370 tr='$tr'
17371 trnl='$trnl'
17372 troff='$troff'
17373 u16size='$u16size'
17374 u16type='$u16type'
17375 u32size='$u32size'
17376 u32type='$u32type'
17377 u64size='$u64size'
17378 u64type='$u64type'
17379 u8size='$u8size'
17380 u8type='$u8type'
17381 uidformat='$uidformat'
17382 uidsign='$uidsign'
17383 uidsize='$uidsize'
17384 uidtype='$uidtype'
17385 uname='$uname'
17386 uniq='$uniq'
17387 uquadtype='$uquadtype'
17388 use5005threads='$use5005threads'
17389 use64bitall='$use64bitall'
17390 use64bitint='$use64bitint'
17391 usecrosscompile='$usecrosscompile'
17392 usedl='$usedl'
17393 useithreads='$useithreads'
17394 uselargefiles='$uselargefiles'
17395 uselongdouble='$uselongdouble'
17396 usemorebits='$usemorebits'
17397 usemultiplicity='$usemultiplicity'
17398 usemymalloc='$usemymalloc'
17399 usenm='$usenm'
17400 useopcode='$useopcode'
17401 useperlio='$useperlio'
17402 useposix='$useposix'
17403 usereentrant='$usereentrant'
17404 usesfio='$usesfio'
17405 useshrplib='$useshrplib'
17406 usesocks='$usesocks'
17407 usethreads='$usethreads'
17408 usevendorprefix='$usevendorprefix'
17409 usevfork='$usevfork'
17410 usrinc='$usrinc'
17411 uuname='$uuname'
17412 uvXUformat='$uvXUformat'
17413 uvoformat='$uvoformat'
17414 uvsize='$uvsize'
17415 uvtype='$uvtype'
17416 uvuformat='$uvuformat'
17417 uvxformat='$uvxformat'
17418 vendorarch='$vendorarch'
17419 vendorarchexp='$vendorarchexp'
17420 vendorbin='$vendorbin'
17421 vendorbinexp='$vendorbinexp'
17422 vendorlib='$vendorlib'
17423 vendorlib_stem='$vendorlib_stem'
17424 vendorlibexp='$vendorlibexp'
17425 vendorprefix='$vendorprefix'
17426 vendorprefixexp='$vendorprefixexp'
17427 version='$version'
17428 version_patchlevel_string='$version_patchlevel_string'
17429 versiononly='$versiononly'
17430 vi='$vi'
17431 voidflags='$voidflags'
17432 xlibpth='$xlibpth'
17433 xs_apiversion='$xs_apiversion'
17434 yacc='$yacc'
17435 yaccflags='$yaccflags'
17436 zcat='$zcat'
17437 zip='$zip'
17438 EOT
17439
17440 : Add in command line options if available
17441 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17442
17443 : add special variables
17444 $test -f $src/patchlevel.h && \
17445 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17446 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17447 echo "PERL_CONFIG_SH=true" >>config.sh
17448
17449 : propagate old symbols
17450 if $test -f UU/config.sh; then
17451         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17452         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17453         $sort | $uniq -u >UU/oldsyms
17454         set X `cat UU/oldsyms`
17455         shift
17456         case $# in
17457         0) ;;
17458         *)
17459                 cat <<EOM
17460 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17461 EOM
17462                 echo "# Variables propagated from previous config.sh file." >>config.sh
17463                 for sym in `cat UU/oldsyms`; do
17464                         echo "    Propagating $hint variable "'$'"$sym..."
17465                         eval 'tmp="$'"${sym}"'"'
17466                         echo "$tmp" | \
17467                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17468                 done
17469                 ;;
17470         esac
17471 fi
17472
17473 : Finish up by extracting the .SH files
17474 case "$alldone" in
17475 exit)
17476         $rm -rf UU
17477         echo "Extraction done."
17478         exit 0
17479         ;;
17480 cont)
17481         ;;
17482 '')
17483         dflt=''
17484         nostick=true
17485         $cat <<EOM
17486
17487 If you'd like to make any changes to the config.sh file before I begin
17488 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17489
17490 EOM
17491         rp="Press return or use a shell escape to edit config.sh:"
17492         . UU/myread
17493         nostick=''
17494         case "$ans" in
17495         '') ;;
17496         *) : in case they cannot read
17497                 sh 1>&4 -c "$ans";;
17498         esac
17499         ;;
17500 esac
17501
17502 : if this fails, just run all the .SH files by hand
17503 . ./config.sh
17504
17505 echo " "
17506 exec 1>&4
17507 pwd=`pwd`
17508 . ./UU/extract
17509 cd $pwd
17510
17511 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17512         dflt=y
17513         case "$silent" in
17514         true) ;;
17515         *)
17516                 $cat <<EOM
17517
17518 Now you need to generate make dependencies by running "$make depend".
17519 You might prefer to run it in background: "$make depend > makedepend.out &"
17520 It can take a while, so you might not want to run it right now.
17521
17522 EOM
17523                 ;;
17524         esac
17525         rp="Run $make depend now?"
17526         . UU/myread
17527         case "$ans" in
17528         y*)
17529                 $make depend && echo "Now you must run '$make'."
17530                 ;;
17531         *)
17532                 echo "You must run '$make depend' then '$make'."
17533                 ;;
17534         esac
17535 elif test -f [Mm]akefile; then
17536         echo " "
17537         echo "Now you must run a $make."
17538 else
17539         echo "Configure done."
17540 fi
17541
17542 if $test -f Policy.sh; then
17543     $cat <<EOM
17544
17545 If you compile $package on a different machine or from a different object
17546 directory, copy the Policy.sh file from this object directory to the
17547 new one before you run Configure -- this will help you with most of
17548 the policy defaults.
17549
17550 EOM
17551 fi
17552 if $test -f config.msg; then
17553     echo "Hmm.  I also noted the following information while running:"
17554     echo " "
17555     $cat config.msg >&4
17556     $rm -f config.msg
17557 fi
17558 $rm -f kit*isdone ark*isdone
17559 $rm -rf UU
17560
17561 : End of Configure
17562