69e724679492066471247aca7e0eae262f89a010
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Fri Jul 13 03:14:01 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 d_bsd=''
182 d_eunice=''
183 d_xenix=''
184 eunicefix=''
185 Mcc=''
186 ar=''
187 awk=''
188 bash=''
189 bison=''
190 byacc=''
191 cat=''
192 chgrp=''
193 chmod=''
194 chown=''
195 comm=''
196 compress=''
197 cp=''
198 cpio=''
199 cpp=''
200 csh=''
201 date=''
202 echo=''
203 egrep=''
204 emacs=''
205 expr=''
206 find=''
207 flex=''
208 grep=''
209 gzip=''
210 inews=''
211 ksh=''
212 less=''
213 line=''
214 lint=''
215 ln=''
216 lp=''
217 lpr=''
218 ls=''
219 mail=''
220 mailx=''
221 make=''
222 mkdir=''
223 more=''
224 mv=''
225 nm=''
226 nroff=''
227 perl=''
228 pg=''
229 pmake=''
230 pr=''
231 rm=''
232 rmail=''
233 sed=''
234 sendmail=''
235 shar=''
236 sleep=''
237 smail=''
238 sort=''
239 submit=''
240 tail=''
241 tar=''
242 tbl=''
243 tee=''
244 test=''
245 touch=''
246 tr=''
247 troff=''
248 uname=''
249 uniq=''
250 uuname=''
251 vi=''
252 zcat=''
253 zip=''
254 full_ar=''
255 full_sed=''
256 libswanted=''
257 hint=''
258 myuname=''
259 osname=''
260 osvers=''
261 Author=''
262 Date=''
263 Header=''
264 Id=''
265 Locker=''
266 Log=''
267 RCSfile=''
268 Revision=''
269 Source=''
270 State=''
271 _a=''
272 _exe=''
273 _o=''
274 archobjs=''
275 exe_ext=''
276 firstmakefile=''
277 lib_ext=''
278 obj_ext=''
279 path_sep=''
280 afs=''
281 afsroot=''
282 alignbytes=''
283 ansi2knr=''
284 archlib=''
285 archlibexp=''
286 d_archlib=''
287 installarchlib=''
288 archname=''
289 myarchname=''
290 d_atolf=''
291 d_atoll=''
292 baserev=''
293 bin=''
294 binexp=''
295 installbin=''
296 bincompat5005=''
297 d_bincompat5005=''
298 byteorder=''
299 cc=''
300 ccflags=''
301 cppflags=''
302 ldflags=''
303 lkflags=''
304 locincpth=''
305 optimize=''
306 cf_email=''
307 cf_by=''
308 cf_time=''
309 charsize=''
310 contains=''
311 cpp_stuff=''
312 cpplast=''
313 cppminus=''
314 cpprun=''
315 cppstdin=''
316 d__fwalk=''
317 d_access=''
318 d_accessx=''
319 d_alarm=''
320 d_attribut=''
321 d_bcmp=''
322 d_bcopy=''
323 d_bzero=''
324 d_casti32=''
325 castflags=''
326 d_castneg=''
327 d_chown=''
328 d_chroot=''
329 d_chsize=''
330 d_closedir=''
331 d_void_closedir=''
332 d_cmsghdr_s=''
333 d_const=''
334 cryptlib=''
335 d_crypt=''
336 d_csh=''
337 full_csh=''
338 d_cuserid=''
339 d_dbl_dig=''
340 d_dbminitproto=''
341 d_difftime=''
342 d_dlerror=''
343 d_dlopen=''
344 d_dlsymun=''
345 d_dosuid=''
346 d_suidsafe=''
347 d_drand48proto=''
348 d_dup2=''
349 d_eaccess=''
350 d_endgrent=''
351 d_endhent=''
352 d_endnent=''
353 d_endpent=''
354 d_endpwent=''
355 d_endsent=''
356 d_fchdir=''
357 d_fchmod=''
358 d_fchown=''
359 d_fcntl=''
360 d_fcntl_can_lock=''
361 d_fd_macros=''
362 d_fd_set=''
363 d_fds_bits=''
364 d_fgetpos=''
365 d_flexfnam=''
366 d_flock=''
367 d_flockproto=''
368 d_fork=''
369 d_fpos64_t=''
370 d_frexpl=''
371 d_fs_data_s=''
372 d_fseeko=''
373 d_fsetpos=''
374 d_fstatfs=''
375 d_fsync=''
376 d_ftello=''
377 d_ftime=''
378 d_gettimeod=''
379 d_Gconvert=''
380 d_getcwd=''
381 d_getespwnam=''
382 d_getfsstat=''
383 d_getgrent=''
384 d_getgrps=''
385 d_gethbyaddr=''
386 d_gethbyname=''
387 d_gethent=''
388 aphostname=''
389 d_gethname=''
390 d_phostname=''
391 d_uname=''
392 d_gethostprotos=''
393 d_getitimer=''
394 d_getlogin=''
395 d_getmnt=''
396 d_getmntent=''
397 d_getnbyaddr=''
398 d_getnbyname=''
399 d_getnent=''
400 d_getnetprotos=''
401 d_getpagsz=''
402 d_getpent=''
403 d_getpgid=''
404 d_getpgrp2=''
405 d_bsdgetpgrp=''
406 d_getpgrp=''
407 d_getppid=''
408 d_getprior=''
409 d_getpbyname=''
410 d_getpbynumber=''
411 d_getprotoprotos=''
412 d_getprpwnam=''
413 d_getpwent=''
414 d_getsent=''
415 d_getservprotos=''
416 d_getspnam=''
417 d_getsbyname=''
418 d_getsbyport=''
419 d_gnulibc=''
420 d_hasmntopt=''
421 d_htonl=''
422 d_iconv=''
423 d_inetaton=''
424 d_int64_t=''
425 d_isascii=''
426 d_isnan=''
427 d_isnanl=''
428 d_killpg=''
429 d_lchown=''
430 d_ldbl_dig=''
431 d_link=''
432 d_locconv=''
433 d_lockf=''
434 d_longdbl=''
435 longdblsize=''
436 d_longlong=''
437 longlongsize=''
438 d_lseekproto=''
439 d_lstat=''
440 d_madvise=''
441 d_mblen=''
442 d_mbstowcs=''
443 d_mbtowc=''
444 d_memchr=''
445 d_memcmp=''
446 d_memcpy=''
447 d_memmove=''
448 d_memset=''
449 d_mkdir=''
450 d_mkdtemp=''
451 d_mkfifo=''
452 d_mkstemp=''
453 d_mkstemps=''
454 d_mktime=''
455 d_mmap=''
456 mmaptype=''
457 d_modfl=''
458 d_modfl_pow32_bug=''
459 d_mprotect=''
460 d_msg=''
461 d_msgctl=''
462 d_msgget=''
463 d_msghdr_s=''
464 d_msgrcv=''
465 d_msgsnd=''
466 d_msync=''
467 d_munmap=''
468 d_nice=''
469 d_nl_langinfo=''
470 d_off64_t=''
471 d_open3=''
472 d_fpathconf=''
473 d_pathconf=''
474 d_pause=''
475 d_pipe=''
476 d_poll=''
477 d_portable=''
478 d_old_pthread_create_joinable=''
479 old_pthread_create_joinable=''
480 d_pthread_atfork=''
481 d_pthread_yield=''
482 d_sched_yield=''
483 sched_yield=''
484 d_qgcvt=''
485 d_readdir=''
486 d_rewinddir=''
487 d_seekdir=''
488 d_telldir=''
489 d_readlink=''
490 d_readv=''
491 d_recvmsg=''
492 d_rename=''
493 d_rmdir=''
494 d_safebcpy=''
495 d_safemcpy=''
496 d_sanemcmp=''
497 d_sbrkproto=''
498 d_select=''
499 d_sem=''
500 d_semctl=''
501 d_semget=''
502 d_semop=''
503 d_sendmsg=''
504 d_setegid=''
505 d_seteuid=''
506 d_setgrent=''
507 d_setgrps=''
508 d_sethent=''
509 d_setitimer=''
510 d_setlinebuf=''
511 d_setlocale=''
512 d_setnent=''
513 d_setpent=''
514 d_setpgid=''
515 d_setpgrp2=''
516 d_bsdsetpgrp=''
517 d_setpgrp=''
518 d_setprior=''
519 d_setproctitle=''
520 d_setpwent=''
521 d_setregid=''
522 d_setresgid=''
523 d_setresuid=''
524 d_setreuid=''
525 d_setrgid=''
526 d_setruid=''
527 d_setsent=''
528 d_setsid=''
529 d_setvbuf=''
530 d_sfio=''
531 usesfio=''
532 d_shm=''
533 d_shmat=''
534 d_shmatprototype=''
535 shmattype=''
536 d_shmctl=''
537 d_shmdt=''
538 d_shmget=''
539 d_sigaction=''
540 d_sigprocmask=''
541 d_sigsetjmp=''
542 d_sockatmark=''
543 d_sockatmarkproto=''
544 d_msg_ctrunc=''
545 d_msg_dontroute=''
546 d_msg_oob=''
547 d_msg_peek=''
548 d_msg_proxy=''
549 d_oldsock=''
550 d_scm_rights=''
551 d_socket=''
552 d_sockpair=''
553 sockethdr=''
554 socketlib=''
555 d_socklen_t=''
556 d_socks5_init=''
557 d_sqrtl=''
558 d_sresgproto=''
559 d_sresuproto=''
560 d_statblks=''
561 d_statfs_f_flags=''
562 d_statfs_s=''
563 d_fstatvfs=''
564 d_statvfs=''
565 d_stdio_cnt_lval=''
566 d_stdio_ptr_lval=''
567 d_stdio_ptr_lval_nochange_cnt=''
568 d_stdio_ptr_lval_sets_cnt=''
569 d_stdiobase=''
570 d_stdstdio=''
571 stdio_base=''
572 stdio_bufsiz=''
573 stdio_cnt=''
574 stdio_filbuf=''
575 stdio_ptr=''
576 d_index=''
577 d_strchr=''
578 d_strcoll=''
579 d_strctcpy=''
580 d_strerrm=''
581 d_strerror=''
582 d_sysernlst=''
583 d_syserrlst=''
584 d_strftime=''
585 d_strtod=''
586 d_strtol=''
587 d_strtold=''
588 d_strtoll=''
589 d_strtoq=''
590 d_strtoul=''
591 d_strtoull=''
592 d_strtouq=''
593 d_strxfrm=''
594 d_symlink=''
595 d_syscall=''
596 d_syscallproto=''
597 d_sysconf=''
598 d_system=''
599 d_tcgetpgrp=''
600 d_tcsetpgrp=''
601 d_telldirproto=''
602 d_time=''
603 timetype=''
604 clocktype=''
605 d_times=''
606 d_truncate=''
607 d_tzname=''
608 d_u32align=''
609 d_ualarm=''
610 d_umask=''
611 d_semctl_semid_ds=''
612 d_semctl_semun=''
613 d_union_semun=''
614 d_usleep=''
615 d_usleepproto=''
616 d_ustat=''
617 d_vfork=''
618 usevfork=''
619 d_voidsig=''
620 signal_t=''
621 d_volatile=''
622 d_charvspr=''
623 d_vprintf=''
624 d_wait4=''
625 d_waitpid=''
626 d_wcstombs=''
627 d_wctomb=''
628 d_writev=''
629 dlext=''
630 cccdlflags=''
631 ccdlflags=''
632 dlsrc=''
633 ld=''
634 lddlflags=''
635 usedl=''
636 doublesize=''
637 ebcdic=''
638 fflushNULL=''
639 fflushall=''
640 fpossize=''
641 fpostype=''
642 gccosandvers=''
643 gccversion=''
644 gidformat=''
645 gidsign=''
646 gidsize=''
647 gidtype=''
648 groupstype=''
649 h_fcntl=''
650 h_sysfile=''
651 i_arpainet=''
652 db_hashtype=''
653 db_prefixtype=''
654 db_version_major=''
655 db_version_minor=''
656 db_version_patch=''
657 i_db=''
658 i_dbm=''
659 i_rpcsvcdbm=''
660 d_dirnamlen=''
661 direntrytype=''
662 i_dirent=''
663 i_dld=''
664 i_dlfcn=''
665 i_fcntl=''
666 i_float=''
667 i_gdbm=''
668 d_grpasswd=''
669 i_grp=''
670 i_iconv=''
671 i_ieeefp=''
672 i_inttypes=''
673 i_langinfo=''
674 i_libutil=''
675 i_limits=''
676 i_locale=''
677 i_machcthr=''
678 i_malloc=''
679 i_math=''
680 i_memory=''
681 i_mntent=''
682 i_ndbm=''
683 i_netdb=''
684 i_neterrno=''
685 i_netinettcp=''
686 i_niin=''
687 i_sysin=''
688 i_poll=''
689 i_prot=''
690 i_pthread=''
691 d_pwage=''
692 d_pwchange=''
693 d_pwclass=''
694 d_pwcomment=''
695 d_pwexpire=''
696 d_pwgecos=''
697 d_pwpasswd=''
698 d_pwquota=''
699 i_pwd=''
700 i_sfio=''
701 i_shadow=''
702 i_socks=''
703 i_stddef=''
704 i_stdlib=''
705 i_string=''
706 strings=''
707 i_sunmath=''
708 i_sysaccess=''
709 i_sysdir=''
710 i_sysfile=''
711 d_voidtty=''
712 i_bsdioctl=''
713 i_sysfilio=''
714 i_sysioctl=''
715 i_syssockio=''
716 i_syslog=''
717 i_sysmman=''
718 i_sysmode=''
719 i_sysmount=''
720 i_sysndir=''
721 i_sysparam=''
722 i_sysresrc=''
723 i_syssecrt=''
724 i_sysselct=''
725 i_sysstat=''
726 i_sysstatfs=''
727 i_sysstatvfs=''
728 i_systimes=''
729 i_systypes=''
730 i_sysuio=''
731 i_sysun=''
732 i_sysutsname=''
733 i_sysvfs=''
734 i_syswait=''
735 i_sgtty=''
736 i_termio=''
737 i_termios=''
738 i_systime=''
739 i_systimek=''
740 i_time=''
741 timeincl=''
742 i_unistd=''
743 i_ustat=''
744 i_utime=''
745 i_values=''
746 i_stdarg=''
747 i_varargs=''
748 i_varhdr=''
749 i_vfork=''
750 inc_version_list=''
751 inc_version_list_init=''
752 installprefix=''
753 installprefixexp=''
754 installstyle=''
755 installusrbinperl=''
756 intsize=''
757 longsize=''
758 shortsize=''
759 issymlink=''
760 libc=''
761 ldlibpthname=''
762 libperl=''
763 shrpenv=''
764 useshrplib=''
765 glibpth=''
766 libpth=''
767 loclibpth=''
768 plibpth=''
769 xlibpth=''
770 ignore_versioned_solibs=''
771 libs=''
772 libsdirs=''
773 libsfiles=''
774 libsfound=''
775 libspath=''
776 lns=''
777 d_PRIEUldbl=''
778 d_PRIFUldbl=''
779 d_PRIGUldbl=''
780 d_PRIeldbl=''
781 d_PRIfldbl=''
782 d_PRIgldbl=''
783 d_SCNfldbl=''
784 sPRIEUldbl=''
785 sPRIFUldbl=''
786 sPRIGUldbl=''
787 sPRIeldbl=''
788 sPRIfldbl=''
789 sPRIgldbl=''
790 sSCNfldbl=''
791 lseeksize=''
792 lseektype=''
793 make_set_make=''
794 d_mymalloc=''
795 freetype=''
796 mallocobj=''
797 mallocsrc=''
798 malloctype=''
799 usemymalloc=''
800 installman1dir=''
801 man1dir=''
802 man1direxp=''
803 man1ext=''
804 installman3dir=''
805 man3dir=''
806 man3direxp=''
807 man3ext=''
808 modetype=''
809 multiarch=''
810 mydomain=''
811 myhostname=''
812 phostname=''
813 c=''
814 n=''
815 d_eofnblk=''
816 eagain=''
817 o_nonblock=''
818 rd_nodata=''
819 need_va_copy=''
820 netdb_hlen_type=''
821 netdb_host_type=''
822 netdb_name_type=''
823 netdb_net_type=''
824 groupcat=''
825 hostcat=''
826 passcat=''
827 orderlib=''
828 ranlib=''
829 d_perl_otherlibdirs=''
830 otherlibdirs=''
831 package=''
832 spackage=''
833 pager=''
834 api_revision=''
835 api_subversion=''
836 api_version=''
837 api_versionstring=''
838 patchlevel=''
839 perl_patchlevel=''
840 revision=''
841 subversion=''
842 version=''
843 version_patchlevel_string=''
844 perl5=''
845 perladmin=''
846 perlpath=''
847 d_nv_preserves_uv=''
848 d_nv_preserves_uv_bits=''
849 i16size=''
850 i16type=''
851 i32size=''
852 i32type=''
853 i64size=''
854 i64type=''
855 i8size=''
856 i8type=''
857 ivsize=''
858 ivtype=''
859 nvsize=''
860 nvtype=''
861 u16size=''
862 u16type=''
863 u32size=''
864 u32type=''
865 u64size=''
866 u64type=''
867 u8size=''
868 u8type=''
869 uvsize=''
870 uvtype=''
871 ivdformat=''
872 nvEUformat=''
873 nvFUformat=''
874 nvGUformat=''
875 nveformat=''
876 nvfformat=''
877 nvgformat=''
878 uvXUformat=''
879 uvoformat=''
880 uvuformat=''
881 uvxformat=''
882 pidtype=''
883 prefix=''
884 prefixexp=''
885 installprivlib=''
886 privlib=''
887 privlibexp=''
888 prototype=''
889 ptrsize=''
890 d_PRIXU64=''
891 d_PRId64=''
892 d_PRIi64=''
893 d_PRIo64=''
894 d_PRIu64=''
895 d_PRIx64=''
896 sPRIXU64=''
897 sPRId64=''
898 sPRIi64=''
899 sPRIo64=''
900 sPRIu64=''
901 sPRIx64=''
902 d_quad=''
903 quadkind=''
904 quadtype=''
905 uquadtype=''
906 drand01=''
907 randbits=''
908 randfunc=''
909 randseedtype=''
910 seedfunc=''
911 installscript=''
912 scriptdir=''
913 scriptdirexp=''
914 selectminbits=''
915 selecttype=''
916 sh=''
917 sig_count=''
918 sig_name=''
919 sig_name_init=''
920 sig_num=''
921 sig_num_init=''
922 sig_size=''
923 installsitearch=''
924 sitearch=''
925 sitearchexp=''
926 installsitebin=''
927 sitebin=''
928 sitebinexp=''
929 installsitelib=''
930 sitelib=''
931 sitelib_stem=''
932 sitelibexp=''
933 siteprefix=''
934 siteprefixexp=''
935 sizesize=''
936 sizetype=''
937 so=''
938 socksizetype=''
939 sharpbang=''
940 shsharp=''
941 spitshell=''
942 src=''
943 ssizetype=''
944 startperl=''
945 startsh=''
946 stdchar=''
947 d_stdio_stream_array=''
948 stdio_stream_array=''
949 sysman=''
950 trnl=''
951 uidformat=''
952 uidsign=''
953 uidsize=''
954 uidtype=''
955 archname64=''
956 use64bitall=''
957 use64bitint=''
958 ccflags_uselargefiles=''
959 ldflags_uselargefiles=''
960 libswanted_uselargefiles=''
961 uselargefiles=''
962 uselongdouble=''
963 usemorebits=''
964 usemultiplicity=''
965 nm_opt=''
966 nm_so_opt=''
967 runnm=''
968 usenm=''
969 useperlio=''
970 usesocks=''
971 d_oldpthreads=''
972 use5005threads=''
973 useithreads=''
974 usereentrant=''
975 usethreads=''
976 incpath=''
977 mips_type=''
978 usrinc=''
979 d_vendorarch=''
980 installvendorarch=''
981 vendorarch=''
982 vendorarchexp=''
983 d_vendorbin=''
984 installvendorbin=''
985 vendorbin=''
986 vendorbinexp=''
987 d_vendorlib=''
988 installvendorlib=''
989 vendorlib=''
990 vendorlib_stem=''
991 vendorlibexp=''
992 usevendorprefix=''
993 vendorprefix=''
994 vendorprefixexp=''
995 versiononly=''
996 defvoidused=''
997 voidflags=''
998 pm_apiversion=''
999 xs_apiversion=''
1000 yacc=''
1001 yaccflags=''
1002 CONFIG=''
1003
1004 define='define'
1005 undef='undef'
1006 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1007 rmlist=''
1008
1009 : We must find out about Eunice early
1010 eunicefix=':'
1011 if test -f /etc/unixtovms; then
1012         eunicefix=/etc/unixtovms
1013 fi
1014 if test -f /etc/unixtovms.exe; then
1015         eunicefix=/etc/unixtovms.exe
1016 fi
1017
1018 i_whoami=''
1019 ccname=''
1020 ccversion=''
1021 perllibs=''
1022 : set useposix=false in your hint file to disable the POSIX extension.
1023 useposix=true
1024 : set useopcode=false in your hint file to disable the Opcode extension.
1025 useopcode=true
1026 : Trailing extension.  Override this in a hint file, if needed.
1027 _exe=''
1028 : Extra object files, if any, needed on this platform.
1029 archobjs=''
1030 archname=''
1031 : Possible local include directories to search.
1032 : Set locincpth to "" in a hint file to defeat local include searches.
1033 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1034 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1035 :
1036 : no include file wanted by default
1037 inclwanted=''
1038
1039 groupstype=''
1040 libnames=''
1041 : change the next line if compiling for Xenix/286 on Xenix/386
1042 xlibpth='/usr/lib/386 /lib/386'
1043 : Possible local library directories to search.
1044 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1045 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1046
1047 : general looking path for locating libraries
1048 glibpth="/lib /usr/lib $xlibpth"
1049 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1050 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1051 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1052
1053 : Private path used by Configure to find libraries.  Its value
1054 : is prepended to libpth. This variable takes care of special
1055 : machines, like the mips.  Usually, it should be empty.
1056 plibpth=''
1057
1058 : default library list
1059 libswanted=''
1060 : some systems want to use only the non-versioned libso:s
1061 ignore_versioned_solibs=''
1062 archname64=''
1063 ccflags_uselargefiles=''
1064 ldflags_uselargefiles=''
1065 libswanted_uselargefiles=''
1066 : set usemultiplicity on the Configure command line to enable multiplicity.
1067 : set usesocks on the Configure command line to enable socks.
1068 : set usethreads on the Configure command line to enable threads.
1069 usereentrant='undef'
1070 : full support for void wanted by default
1071 defvoidused=15
1072
1073 : List of libraries we want.
1074 : If anyone needs -lnet, put it in a hint file.
1075 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1076 libswanted="$libswanted dld ld sun m c cposix posix"
1077 libswanted="$libswanted ndir dir crypt sec"
1078 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1079 : We probably want to search /usr/shlib before most other libraries.
1080 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1081 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1082 glibpth="/usr/shlib $glibpth"
1083 : Do not use vfork unless overridden by a hint file.
1084 usevfork=false
1085
1086 : Find the basic shell for Bourne shell scripts
1087 case "$sh" in
1088 '')
1089         case "$SYSTYPE" in
1090         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1091         *) xxx='/bin/sh';;
1092         esac
1093         if test -f "$xxx"; then
1094                 sh="$xxx"
1095         else
1096                 : Build up a list and do a single loop so we can 'break' out.
1097                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1098                 for xxx in sh bash ksh pdksh ash; do
1099                         for p in $pth; do
1100                                 try="$try ${p}/${xxx}"
1101                         done
1102                 done
1103                 for xxx in $try; do
1104                         if test -f "$xxx"; then
1105                                 sh="$xxx";
1106                                 break
1107                         elif test -f "$xxx.exe"; then
1108                                 sh="$xxx";
1109                                 break
1110                         fi
1111                 done
1112         fi
1113         ;;
1114 esac
1115
1116 case "$sh" in
1117 '')     cat <<EOM >&2
1118 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1119
1120 Usually it's in /bin/sh.  How did you even get this far?
1121 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1122 we'll try to straighten this all out.
1123 EOM
1124         exit 1
1125         ;;
1126 esac
1127
1128 : see if sh knows # comments
1129 if `$sh -c '#' >/dev/null 2>&1`; then
1130         shsharp=true
1131         spitshell=cat
1132         xcat=/bin/cat
1133         test -f $xcat || xcat=/usr/bin/cat
1134         echo "#!$xcat" >sharp
1135         $eunicefix sharp
1136         chmod +x sharp
1137         ./sharp > today
1138         if test -s today; then
1139                 sharpbang='#!'
1140         else
1141                 echo "#! $xcat" > sharp
1142                 $eunicefix sharp
1143                 chmod +x sharp
1144                 ./sharp > today
1145                 if test -s today; then
1146                         sharpbang='#! '
1147                 else
1148                         sharpbang=': use '
1149                 fi
1150         fi
1151 else
1152         echo " "
1153         echo "Your $sh doesn't grok # comments--I will strip them later on."
1154         shsharp=false
1155         cd ..
1156         echo "exec grep -v '^[  ]*#'" >spitshell
1157         chmod +x spitshell
1158         $eunicefix spitshell
1159         spitshell=`pwd`/spitshell
1160         cd UU
1161         echo "I presume that if # doesn't work, #! won't work either!"
1162         sharpbang=': use '
1163 fi
1164 rm -f sharp today
1165
1166 : figure out how to guarantee sh startup
1167 case "$startsh" in
1168 '') startsh=${sharpbang}${sh} ;;
1169 *)
1170 esac
1171 cat >sharp <<EOSS
1172 $startsh
1173 set abc
1174 test "$?abc" != 1
1175 EOSS
1176
1177 chmod +x sharp
1178 $eunicefix sharp
1179 if ./sharp; then
1180         : echo "Yup, it does."
1181 else
1182         echo "Hmm... '$startsh' does not guarantee sh startup..."
1183         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1184 fi
1185 rm -f sharp
1186
1187
1188 : Save command line options in file UU/cmdline.opt for later use in
1189 : generating config.sh.
1190 cat > cmdline.opt <<EOSH
1191 # Configure command line arguments.
1192 config_arg0='$0'
1193 config_args='$*'
1194 config_argc=$#
1195 EOSH
1196 argn=1
1197 args_exp=''
1198 args_sep=''
1199 for arg in "$@"; do
1200         cat >>cmdline.opt <<EOSH
1201 config_arg$argn='$arg'
1202 EOSH
1203         # Extreme backslashitis: replace each ' by '"'"'
1204         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1205 $arg
1206 EOC
1207         arg_exp=`cat cmdl.opt`
1208         args_exp="$args_exp$args_sep'$arg_exp'"
1209         argn=`expr $argn + 1`
1210         args_sep=' '
1211 done
1212 # args_exp is good for restarting self: eval "set X $args_exp"; shift; $0 "$@"
1213 # used by ./hints/os2.sh
1214 rm -f cmdl.opt
1215
1216 : produce awk script to parse command line options
1217 cat >options.awk <<'EOF'
1218 BEGIN {
1219         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1220
1221         len = length(optstr);
1222         for (i = 1; i <= len; i++) {
1223                 c = substr(optstr, i, 1);
1224                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1225                 if (a == ":") {
1226                         arg[c] = 1;
1227                         i++;
1228                 }
1229                 opt[c] = 1;
1230         }
1231 }
1232 {
1233         expect = 0;
1234         str = $0;
1235         if (substr(str, 1, 1) != "-") {
1236                 printf("'%s'\n", str);
1237                 next;
1238         }
1239         len = length($0);
1240         for (i = 2; i <= len; i++) {
1241                 c = substr(str, i, 1);
1242                 if (!opt[c]) {
1243                         printf("-%s\n", substr(str, i));
1244                         next;
1245                 }
1246                 printf("-%s\n", c);
1247                 if (arg[c]) {
1248                         if (i < len)
1249                                 printf("'%s'\n", substr(str, i + 1));
1250                         else
1251                                 expect = 1;
1252                         next;
1253                 }
1254         }
1255 }
1256 END {
1257         if (expect)
1258                 print "?";
1259 }
1260 EOF
1261
1262 : process the command line options
1263 set X `for arg in "$@"; do echo "X$arg"; done |
1264         sed -e s/X// | awk -f options.awk`
1265 eval "set $*"
1266 shift
1267 rm -f options.awk
1268
1269 : set up default values
1270 fastread=''
1271 reuseval=false
1272 config_sh=''
1273 alldone=''
1274 error=''
1275 silent=''
1276 extractsh=''
1277 override=''
1278 knowitall=''
1279 rm -f optdef.sh posthint.sh
1280 cat >optdef.sh <<EOS
1281 $startsh
1282 EOS
1283
1284
1285 : option parsing
1286 while test $# -gt 0; do
1287         case "$1" in
1288         -d) shift; fastread=yes;;
1289         -e) shift; alldone=cont;;
1290         -f)
1291                 shift
1292                 cd ..
1293                 if test -r "$1"; then
1294                         config_sh="$1"
1295                 else
1296                         echo "$me: cannot read config file $1." >&2
1297                         error=true
1298                 fi
1299                 cd UU
1300                 shift;;
1301         -h) shift; error=true;;
1302         -r) shift; reuseval=true;;
1303         -s) shift; silent=true; realsilent=true;;
1304         -E) shift; alldone=exit;;
1305         -K) shift; knowitall=true;;
1306         -O) shift; override=true;;
1307         -S) shift; silent=true; extractsh=true;;
1308         -D)
1309                 shift
1310                 case "$1" in
1311                 *=)
1312                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1313                         echo "$me: ignoring -D $1" >&2
1314                         ;;
1315                 *=*) echo "$1" | \
1316                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1317                 *) echo "$1='define'" >> optdef.sh;;
1318                 esac
1319                 shift
1320                 ;;
1321         -U)
1322                 shift
1323                 case "$1" in
1324                 *=) echo "$1" >> optdef.sh;;
1325                 *=*)
1326                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1327                         echo "$me: ignoring -U $1" >&2
1328                         ;;
1329                 *) echo "$1='undef'" >> optdef.sh;;
1330                 esac
1331                 shift
1332                 ;;
1333         -A)
1334             shift
1335             xxx=''
1336             yyy="$1"
1337             zzz=''
1338             uuu=undef
1339             case "$yyy" in
1340             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1341                  case "$zzz" in
1342                  *:*) zzz='' ;;
1343                  *)   xxx=append
1344                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1345                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1346                  esac
1347                  ;;
1348             esac
1349             case "$xxx" in
1350             '')  case "$yyy" in
1351                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1352                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1353                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1354                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1355                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1356                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1357                  esac
1358                  ;;       
1359             esac
1360             case "$xxx" in
1361             append)
1362                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1363             clear)
1364                 echo "$yyy=''"                  >> posthint.sh ;;
1365             define)
1366                 case "$zzz" in
1367                 '') zzz=define ;;
1368                 esac
1369                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1370             eval)
1371                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1372             prepend)
1373                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1374             undef)
1375                 case "$zzz" in
1376                 '') zzz="$uuu" ;;
1377                 esac
1378                 echo "$yyy=$zzz"                >> posthint.sh ;;
1379             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1380             esac
1381             shift
1382             ;;
1383         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1384             exit 0;;
1385         --) break;;
1386         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1387         *) break;;
1388         esac
1389 done
1390
1391 case "$error" in
1392 true)
1393         cat >&2 <<EOM
1394 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1395                  [-U symbol] [-U symbol=] [-A command:symbol...]
1396   -d : use defaults for all answers.
1397   -e : go on without questioning past the production of config.sh.
1398   -f : specify an alternate default configuration file.
1399   -h : print this help message and exit (with an error status).
1400   -r : reuse C symbols value if possible (skips costly nm extraction).
1401   -s : silent mode, only echoes questions and essential information.
1402   -D : define symbol to have some value:
1403          -D symbol         symbol gets the value 'define'
1404          -D symbol=value   symbol gets the value 'value'
1405   -E : stop at the end of questions, after having produced config.sh.
1406   -K : do not use unless you know what you are doing.
1407   -O : let -D and -U override definitions from loaded configuration file.
1408   -S : perform variable substitutions on all .SH files (can mix with -f)
1409   -U : undefine symbol:
1410          -U symbol    symbol gets the value 'undef'
1411          -U symbol=   symbol gets completely empty
1412   -A : manipulate symbol after the platform specific hints have been applied:
1413          -A symbol=value                append " "value to symbol
1414          -A append:symbol=value         append value to symbol
1415          -A define:symbol=value         define symbol to have value
1416          -A clear:symbol                define symbol to be ''
1417          -A define:symbol               define symbol to be 'define'
1418          -A eval:symbol=value           define symbol to be eval of value
1419          -A prepend:symbol=value        prepend value to symbol
1420          -A undef:symbol                define symbol to be 'undef'
1421          -A undef:symbol=               define symbol to be ''
1422   -V : print version number and exit (with a zero status).
1423 EOM
1424         exit 1
1425         ;;
1426 esac
1427
1428 : Sanity checks
1429 case "$fastread$alldone" in
1430 yescont|yesexit) ;;
1431 *)
1432         case "$extractsh" in
1433         true) ;;
1434         *)
1435                 if test ! -t 0; then
1436                         echo "Say 'sh Configure', not 'sh <Configure'"
1437                         exit 1
1438                 fi
1439                 ;;
1440         esac
1441         ;;
1442 esac
1443
1444 exec 4>&1
1445 case "$silent" in
1446 true) exec 1>/dev/null;;
1447 esac
1448
1449 : run the defines and the undefines, if any, but leave the file out there...
1450 touch optdef.sh
1451 . ./optdef.sh
1452 : create the posthint manipulation script and leave the file out there...
1453 touch posthint.sh
1454
1455 : set package name
1456 package=perl5
1457 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1458 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1459 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1460 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1461 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1462 esac
1463
1464 : Some greps do not return status, grrr.
1465 echo "grimblepritz" >grimble
1466 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1467         contains=contains
1468 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1469         contains=grep
1470 else
1471         contains=contains
1472 fi
1473 rm -f grimble
1474 : the following should work in any shell
1475 case "$contains" in
1476 contains*)
1477         echo " "
1478         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1479         cat >contains <<'EOSS'
1480 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1481 EOSS
1482 chmod +x contains
1483 esac
1484
1485 : Find the path to the source tree
1486 case "$src" in
1487 '') case "$0" in
1488     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1489          case "$src" in
1490          /*)    ;;
1491          .)     ;;
1492          *)     src=`cd ../$src && pwd` ;;
1493          esac
1494          ;;
1495     *)   src='.';;
1496     esac;;
1497 esac
1498 case "$src" in
1499 '')     src=/
1500         rsrc=/
1501         ;;
1502 /*) rsrc="$src";;
1503 *) rsrc="../$src";;
1504 esac
1505 if test -f $rsrc/Configure && \
1506         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1507 then
1508    : found it, so we are ok.
1509 else
1510         rsrc=''
1511         for src in . .. ../.. ../../.. ../../../..; do
1512                 if test -f ../$src/Configure && \
1513                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1514                 then
1515                         rsrc=../$src
1516                         break
1517                 fi
1518         done
1519 fi
1520 case "$rsrc" in
1521 '')
1522         cat <<EOM >&4
1523
1524 Sorry, I can't seem to locate the source dir for $package.  Please start
1525 Configure with an explicit path -- i.e. /some/path/Configure.
1526
1527 EOM
1528         exit 1
1529         ;;
1530 ../.)   rsrc='..';;
1531 *)
1532         echo " "
1533         echo "Sources for $package found in \"$src\"." >&4
1534         ;;
1535 esac
1536
1537 : script used to extract .SH files with variable substitutions
1538 cat >extract <<'EOS'
1539 PERL_CONFIG_SH=true
1540 echo "Doing variable substitutions on .SH files..."
1541 if test -f MANIFEST; then
1542         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1543 else
1544         echo "(Looking for .SH files under the source directory.)"
1545         set x `(cd $src; find . -name "*.SH" -print)`
1546 fi
1547 shift
1548 case $# in
1549 0) set x `(cd $src; echo *.SH)`; shift;;
1550 esac
1551 if test ! -f $src/$1; then
1552         shift
1553 fi
1554 mkdir_p='
1555 name=$1;
1556 create="";
1557 while test $name; do
1558         if test ! -d "$name"; then
1559                 create="$name $create";
1560                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1561                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1562         else
1563                 name="";
1564         fi;
1565 done;
1566 for file in $create; do
1567         mkdir $file;
1568 done
1569 '
1570 for file in $*; do
1571         case "$src" in
1572         ".")
1573                 case "$file" in
1574                 */*)
1575                         dir=`expr X$file : 'X\(.*\)/'`
1576                         file=`expr X$file : 'X.*/\(.*\)'`
1577                         (cd $dir && . ./$file)
1578                         ;;
1579                 *)
1580                         . ./$file
1581                         ;;
1582                 esac
1583                 ;;
1584         *)
1585                 case "$file" in
1586                 */*)
1587                         dir=`expr X$file : 'X\(.*\)/'`
1588                         file=`expr X$file : 'X.*/\(.*\)'`
1589                         (set x $dir; shift; eval $mkdir_p)
1590                         sh <$src/$dir/$file
1591                         ;;
1592                 *)
1593                         sh <$src/$file
1594                         ;;
1595                 esac
1596                 ;;
1597         esac
1598 done
1599 if test -f $src/config_h.SH; then
1600         if test ! -f config.h; then
1601         : oops, they left it out of MANIFEST, probably, so do it anyway.
1602         . $src/config_h.SH
1603         fi
1604 fi
1605 EOS
1606
1607 : extract files and exit if asked to do so
1608 case "$extractsh" in
1609 true)
1610         case "$realsilent" in
1611         true) ;;
1612         *) exec 1>&4;;
1613         esac
1614         case "$config_sh" in
1615         '') config_sh='config.sh';;
1616         esac
1617         echo " "
1618         echo "Fetching answers from $config_sh..."
1619         cd ..
1620         . $config_sh
1621         test "$override" && . ./optdef.sh
1622         echo " "
1623         . UU/extract
1624         rm -rf UU
1625         echo "Extraction done."
1626         exit 0
1627         ;;
1628 esac
1629
1630 : Eunice requires " " instead of "", can you believe it
1631 echo " "
1632 : Here we go...
1633 echo "Beginning of configuration questions for $package."
1634
1635 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1636
1637 : first determine how to suppress newline on echo command
1638 echo " "
1639 echo "Checking echo to see how to suppress newlines..."
1640 (echo "hi there\c" ; echo " ") >.echotmp
1641 if $contains c .echotmp >/dev/null 2>&1 ; then
1642         echo "...using -n."
1643         n='-n'
1644         c=''
1645 else
1646         cat <<'EOM'
1647 ...using \c
1648 EOM
1649         n=''
1650         c='\c'
1651 fi
1652 echo $n "The star should be here-->$c"
1653 echo '*'
1654 rm -f .echotmp
1655
1656 : Now test for existence of everything in MANIFEST
1657 echo " "
1658 if test -f $rsrc/MANIFEST; then
1659         echo "First let's make sure your kit is complete.  Checking..." >&4
1660         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1661         rm -f missing
1662         tmppwd=`pwd`
1663         for filelist in x??; do
1664                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1665         done
1666         if test -s missing; then
1667                 cat missing >&4
1668                 cat >&4 <<'EOM'
1669
1670 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1671
1672 You have the option of continuing the configuration process, despite the
1673 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1674 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1675 and contact the author (perlbug@perl.org).
1676
1677 EOM
1678                 echo $n "Continue? [n] $c" >&4
1679                 read ans
1680                 case "$ans" in
1681                 y*)
1682                         echo "Continuing..." >&4
1683                         rm -f missing
1684                         ;;
1685                 *)
1686                         echo "ABORTING..." >&4
1687                         kill $$
1688                         ;;
1689                 esac
1690         else
1691                 echo "Looks good..."
1692         fi
1693 else
1694         echo "There is no MANIFEST file.  I hope your kit is complete !"
1695 fi
1696 rm -f missing x??
1697
1698 echo " "
1699 : Find the appropriate value for a newline for tr
1700 if test -n "$DJGPP"; then
1701        trnl='\012'
1702 fi
1703 if test X"$trnl" = X; then
1704         case "`echo foo|tr '\n' x 2>/dev/null`" in
1705         foox) trnl='\n' ;;
1706         esac
1707 fi
1708 if test X"$trnl" = X; then
1709         case "`echo foo|tr '\012' x 2>/dev/null`" in
1710         foox) trnl='\012' ;;
1711         esac
1712 fi
1713 if test X"$trnl" = X; then
1714         cat <<EOM >&2
1715
1716 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1717
1718 EOM
1719         exit 1
1720 fi
1721
1722 : compute the number of columns on the terminal for proper question formatting
1723 case "$COLUMNS" in
1724 '') COLUMNS='80';;
1725 esac
1726
1727 : set up the echo used in my read
1728 myecho="case \"\$xxxm\" in
1729 '') echo $n \"\$rp $c\" >&4;;
1730 *) case \"\$rp\" in
1731         '') echo $n \"[\$xxxm] $c\";;
1732         *)
1733                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1734                         echo \"\$rp\" >&4
1735                         echo $n \"[\$xxxm] $c\" >&4
1736                 else
1737                         echo $n \"\$rp [\$xxxm] $c\" >&4
1738                 fi
1739                 ;;
1740         esac;;
1741 esac"
1742
1743 : now set up to do reads with possible shell escape and default assignment
1744 cat <<EOSC >myread
1745 $startsh
1746 xxxm=\$dflt
1747 $myecho
1748 ans='!'
1749 case "\$fastread" in
1750 yes) case "\$dflt" in
1751         '') ;;
1752         *) ans='';
1753                 case "\$silent-\$rp" in
1754                 true-) ;;
1755                 *) echo " " >&4;;
1756                 esac;;
1757         esac;;
1758 *) case "\$silent" in
1759         true) case "\$rp" in
1760                 '') ans='';;
1761                 esac;;
1762         esac;;
1763 esac
1764 while expr "X\$ans" : "X!" >/dev/null; do
1765         read answ
1766         set x \$xxxm
1767         shift
1768         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1769         case  "\$answ" in
1770         "!")
1771                 sh 1>&4
1772                 echo " "
1773                 $myecho
1774                 ;;
1775         !*)
1776                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1777                 shift
1778                 sh 1>&4 -c "\$*"
1779                 echo " "
1780                 $myecho
1781                 ;;
1782         "\$ans")
1783                 case "\$ans" in
1784                 \\&*)
1785                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1786                         shift
1787                         case "\$1" in
1788                         -d)
1789                                 fastread=yes
1790                                 echo "(OK, I'll run with -d after this question.)" >&4
1791                                 ;;
1792                         -*)
1793                                 echo "*** Sorry, \$1 not supported yet." >&4
1794                                 ;;
1795                         esac
1796                         $myecho
1797                         ans=!
1798                         ;;
1799                 esac;;
1800         *)
1801                 case "\$aok" in
1802                 y)
1803                         echo "*** Substitution done -- please confirm."
1804                         xxxm="\$ans"
1805                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1806                         xxxm="\$ans"
1807                         ans=!
1808                         ;;
1809                 *)
1810                         echo "*** Error -- try again."
1811                         ans=!
1812                         ;;
1813                 esac
1814                 $myecho
1815                 ;;
1816         esac
1817         case "\$ans\$xxxm\$nostick" in
1818         '')
1819                 ans=!
1820                 $myecho
1821                 ;;
1822         esac
1823 done
1824 case "\$ans" in
1825 '') ans="\$xxxm";;
1826 esac
1827 EOSC
1828
1829 : create .config dir to save info across Configure sessions
1830 test -d ../.config || mkdir ../.config
1831 cat >../.config/README <<EOF
1832 This directory created by Configure to save information that should
1833 persist across sessions for $package.
1834
1835 You may safely delete it if you wish.
1836 EOF
1837
1838 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1839 case "$usedevel" in
1840 $define|true|[yY]*) ;;
1841 *) case "$xversion" in
1842    *[13579])
1843         cat >&4 <<EOH
1844 *** WHOA THERE!!! ***
1845
1846     This is an UNSTABLE DEVELOPMENT release.
1847     The version of this $package distribution is $xversion, that is, odd,
1848     (as opposed to even) and that signifies a development release.
1849     If you want a maintenance release, you want an even-numbered version.
1850
1851     Do ***NOT*** install this into production use.
1852     Data corruption and crashes are possible.
1853
1854     It is most seriously suggested that you do not continue any further
1855     unless you want to help in developing and debugging Perl.
1856
1857     If you *still* want to build perl, you can answer 'y' now,
1858     or pass -Dusedevel to Configure.
1859
1860 EOH
1861         rp='Do you really want to continue?'
1862         dflt='n'
1863         . ./myread
1864         case "$ans" in
1865         [yY]) echo >&4 "Okay, continuing."
1866               usedevel="$define" ;;
1867         *) echo >&4 "Okay, bye."
1868            exit 1
1869            ;;
1870         esac
1871         ;;
1872     esac
1873     ;;
1874 esac
1875 case "$usedevel" in
1876 $define|true|[yY]*)
1877         case "$versiononly" in
1878         '') versiononly="$define" ;;
1879         esac
1880         case "$installusrbinperl" in
1881         '') installusrbinperl="$undef" ;;
1882         esac
1883         ;;
1884 esac
1885
1886 : general instructions
1887 needman=true
1888 firsttime=true
1889 user=`(logname) 2>/dev/null`
1890 case "$user" in
1891 '') user=`whoami 2>&1`;;
1892 esac
1893 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1894         firsttime=false
1895         echo " "
1896         rp='Would you like to see the instructions?'
1897         dflt=n
1898         . ./myread
1899         case "$ans" in
1900         [yY]*) ;;
1901         *) needman=false;;
1902         esac
1903 fi
1904 if $needman; then
1905         cat <<EOH
1906
1907 This installation shell script will examine your system and ask you questions
1908 to determine how the perl5 package should be installed. If you get
1909 stuck on a question, you may use a ! shell escape to start a subshell or
1910 execute a command.  Many of the questions will have default answers in square
1911 brackets; typing carriage return will give you the default.
1912
1913 On some of the questions which ask for file or directory names you are allowed
1914 to use the ~name construct to specify the login directory belonging to "name",
1915 even if you don't have a shell which knows about that.  Questions where this is
1916 allowed will be marked "(~name ok)".
1917
1918 EOH
1919         rp=''
1920         dflt='Type carriage return to continue'
1921         . ./myread
1922         cat <<'EOH'
1923
1924 The prompter used in this script allows you to use shell variables and
1925 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1926 in the default answer, as if the default line was a set of arguments given to a
1927 script shell.  This means you may also use $* to repeat the whole default line,
1928 so you do not have to re-type everything to add something to the default.
1929
1930 Everytime there is a substitution, you will have to confirm.  If there is an
1931 error (e.g. an unmatched backtick), the default answer will remain unchanged
1932 and you will be prompted again.
1933
1934 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1935 the questions and use the computed defaults (or the previous answers if there
1936 was already a config.sh file). Type 'Configure -h' for a list of options.
1937 You may also start interactively and then answer '& -d' at any prompt to turn
1938 on the non-interactive behaviour for the remainder of the execution.
1939
1940 EOH
1941         . ./myread
1942         cat <<EOH
1943
1944 Much effort has been expended to ensure that this shell script will run on any
1945 Unix system.  If despite that it blows up on yours, your best bet is to edit
1946 Configure and run it again.  If you can't run Configure for some reason,
1947 you'll have to generate a config.sh file by hand.  Whatever problems you
1948 have, let me (perlbug@perl.org) know how I blew it.
1949
1950 This installation script affects things in two ways:
1951
1952 1) it may do direct variable substitutions on some of the files included
1953    in this kit.
1954 2) it builds a config.h file for inclusion in C programs.  You may edit
1955    any of these files as the need arises after running this script.
1956
1957 If you make a mistake on a question, there is no easy way to back up to it
1958 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1959 files.  Configure will offer to let you do this before it runs the SH files.
1960
1961 EOH
1962         dflt='Type carriage return to continue'
1963         . ./myread
1964         case "$firsttime" in
1965         true) echo $user >>../.config/instruct;;
1966         esac
1967 fi
1968
1969 : find out where common programs are
1970 echo " "
1971 echo "Locating common programs..." >&4
1972 cat <<EOSC >loc
1973 $startsh
1974 case \$# in
1975 0) exit 1;;
1976 esac
1977 thing=\$1
1978 shift
1979 dflt=\$1
1980 shift
1981 for dir in \$*; do
1982         case "\$thing" in
1983         .)
1984         if test -d \$dir/\$thing; then
1985                 echo \$dir
1986                 exit 0
1987         fi
1988         ;;
1989         *)
1990         for thisthing in \$dir/\$thing; do
1991                 : just loop through to pick last item
1992         done
1993         if test -f \$thisthing; then
1994                 echo \$thisthing
1995                 exit 0
1996         elif test -f \$dir/\$thing.exe; then
1997                 if test -n "$DJGPP"; then
1998                         echo \$dir/\$thing.exe
1999                 else
2000                         : on Eunice apparently
2001                         echo \$dir/\$thing
2002                 fi
2003                 exit 0
2004         fi
2005         ;;
2006         esac
2007 done
2008 echo \$dflt
2009 exit 1
2010 EOSC
2011 chmod +x loc
2012 $eunicefix loc
2013 loclist="
2014 awk
2015 cat
2016 chmod
2017 comm
2018 cp
2019 echo
2020 expr
2021 grep
2022 ls
2023 make
2024 mkdir
2025 rm
2026 sed
2027 sort
2028 touch
2029 tr
2030 uniq
2031 "
2032 trylist="
2033 Mcc
2034 ar
2035 bison
2036 byacc
2037 cpp
2038 csh
2039 date
2040 egrep
2041 gzip
2042 less
2043 ln
2044 more
2045 nm
2046 nroff
2047 pg
2048 test
2049 uname
2050 zip
2051 "
2052 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2053 pth="$pth /lib /usr/lib"
2054 for file in $loclist; do
2055         eval xxx=\$$file
2056         case "$xxx" in
2057         /*|?:[\\/]*)
2058                 if test -f "$xxx"; then
2059                         : ok
2060                 else
2061                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2062                         xxx=`./loc $file $file $pth`
2063                 fi
2064                 ;;
2065         '') xxx=`./loc $file $file $pth`;;
2066         *) xxx=`./loc $xxx $xxx $pth`;;
2067         esac
2068         eval $file=$xxx
2069         eval _$file=$xxx
2070         case "$xxx" in
2071         /*)
2072                 echo $file is in $xxx.
2073                 ;;
2074         ?:[\\/]*)
2075                 echo $file is in $xxx.
2076                 ;;
2077         *)
2078                 echo "I don't know where '$file' is, and my life depends on it." >&4
2079                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2080                 exit 1
2081                 ;;
2082         esac
2083 done
2084 echo " "
2085 echo "Don't worry if any of the following aren't found..."
2086 say=offhand
2087 for file in $trylist; do
2088         eval xxx=\$$file
2089         case "$xxx" in
2090         /*|?:[\\/]*)
2091                 if test -f "$xxx"; then
2092                         : ok
2093                 else
2094                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2095                         xxx=`./loc $file $file $pth`
2096                 fi
2097                 ;;
2098         '') xxx=`./loc $file $file $pth`;;
2099         *) xxx=`./loc $xxx $xxx $pth`;;
2100         esac
2101         eval $file=$xxx
2102         eval _$file=$xxx
2103         case "$xxx" in
2104         /*)
2105                 echo $file is in $xxx.
2106                 ;;
2107         ?:[\\/]*)
2108                 echo $file is in $xxx.
2109                 ;;
2110         *)
2111                 echo "I don't see $file out there, $say."
2112                 say=either
2113                 ;;
2114         esac
2115 done
2116 case "$egrep" in
2117 egrep)
2118         echo "Substituting grep for egrep."
2119         egrep=$grep
2120         ;;
2121 esac
2122 case "$ln" in
2123 ln)
2124         echo "Substituting cp for ln."
2125         ln=$cp
2126         ;;
2127 esac
2128 case "$test" in
2129 test)
2130         echo "Hopefully test is built into your sh."
2131         ;;
2132 *)
2133         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2134                 echo "Using the test built into your sh."
2135                 test=test
2136                 _test=test
2137         fi
2138         ;;
2139 esac
2140 case "$echo" in
2141 echo)
2142         echo "Hopefully echo is built into your sh."
2143         ;;
2144 '') ;;
2145 *)
2146         echo " "
2147 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2148         $echo $n "hi there$c" >foo1
2149         echo $n "hi there$c" >foo2
2150         if cmp foo1 foo2 >/dev/null 2>&1; then
2151                 echo "They are compatible.  In fact, they may be identical."
2152         else
2153                 case "$n" in
2154                 '-n') n='' c='\c';;
2155                 *) n='-n' c='';;
2156                 esac
2157                 cat <<FOO
2158 They are not compatible!  You are probably running ksh on a non-USG system.
2159 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2160 have echo built in and we may have to run some Bourne shell scripts.  That
2161 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2162
2163 FOO
2164                 $echo $n "The star should be here-->$c"
2165                 $echo "*"
2166         fi
2167         $rm -f foo1 foo2
2168         ;;
2169 esac
2170
2171 cat <<EOS >checkcc
2172 $startsh
2173 EOS
2174 cat <<'EOSC' >>checkcc
2175 case "$cc" in
2176 '') ;;
2177 *)  $rm -f try try.*
2178     $cat >try.c <<EOM
2179 int main(int argc, char *argv[]) {
2180   return 0;
2181 }
2182 EOM
2183     if $cc -o try $ccflags $ldflags try.c; then
2184        :
2185     else
2186         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2187         despair=yes
2188         trygcc=yes
2189         case "$cc" in
2190         *gcc*) trygcc=no ;;
2191         esac
2192         case "`$cc -v -c try.c 2>&1`" in
2193         *gcc*) trygcc=no ;;
2194         esac
2195         if $test X"$trygcc" = Xyes; then
2196             if gcc -o try -c try.c; then
2197                 echo " "
2198                 echo "You seem to have a working gcc, though." >&4
2199                 rp="Would you like to use it?"
2200                 dflt=y
2201                 if $test -f myread; then
2202                     . ./myread
2203                 else
2204                     if $test -f UU/myread; then
2205                         . ./UU/myread
2206                     else
2207                         echo "Cannot find myread, sorry.  Aborting." >&2
2208                         exit 1
2209                     fi
2210                 fi  
2211                 case "$ans" in
2212                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2213                 esac
2214             fi
2215         fi
2216         if $test X"$despair" = Xyes; then
2217             $cat >&4 <<EOM
2218 You need to find a working C compiler.
2219 Either (purchase and) install the C compiler supplied by your OS vendor,
2220 or for a free C compiler try http://gcc.gnu.org/
2221 I cannot continue any further, aborting.
2222 EOM
2223             exit 1
2224         fi
2225     fi
2226     $rm -f try try.*
2227     ;;
2228 esac
2229 EOSC
2230
2231 : determine whether symbolic links are supported
2232 echo " "
2233 $touch blurfl
2234 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2235         echo "Symbolic links are supported." >&4
2236         lns="$ln -s"
2237 else
2238         echo "Symbolic links are NOT supported." >&4
2239         lns="$ln"
2240 fi
2241 $rm -f blurfl sym
2242
2243 : determine whether symbolic links are supported
2244 echo " "
2245 case "$lns" in
2246 *"ln -s")
2247         echo "Checking how to test for symbolic links..." >&4
2248         $lns blurfl sym
2249         if $test "X$issymlink" = X; then
2250                 sh -c "PATH= test -h sym" >/dev/null 2>&1
2251                 if test $? = 0; then
2252                         issymlink="test -h"
2253                 fi              
2254         fi
2255         if $test "X$issymlink" = X; then
2256                 if  $test -h >/dev/null 2>&1; then
2257                         issymlink="$test -h"
2258                         echo "Your builtin 'test -h' may be broken, I'm using external '$test -h'." >&4
2259                 fi              
2260         fi
2261         if $test "X$issymlink" = X; then
2262                 if $test -L sym 2>/dev/null; then
2263                         issymlink="$test -L"
2264                 fi
2265         fi
2266         if $test "X$issymlink" != X; then
2267                 echo "You can test for symbolic links with '$issymlink'." >&4
2268         else
2269                 echo "I do not know how you can test for symbolic links." >&4
2270         fi
2271         $rm -f blurfl sym
2272         ;;
2273 *)      echo "No symbolic links, so not testing for their testing..." >&4
2274         ;;
2275 esac
2276 echo " "
2277
2278
2279 case "$mksymlinks" in
2280 $define|true|[yY]*)
2281         case "$src" in
2282         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2283                 exit 1
2284                 ;;
2285         *)      case "$lns:$issymlink" in
2286                 *"ln -s:"*"test -"?)
2287                         echo "Creating the symbolic links..." >&4
2288                         echo "(First creating the subdirectories...)" >&4
2289                         cd ..
2290                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2291                                 read directory
2292                                 test -z "$directory" && break
2293                                 mkdir -p $directory
2294                         done
2295                         # Sanity check 1.
2296                         if test ! -d t/base; then
2297                                 echo "Failed to create the subdirectories.  Aborting." >&4
2298                                 exit 1
2299                         fi
2300                         echo "(Then creating the symlinks...)" >&4
2301                         awk '{print $1}' $src/MANIFEST | while true; do
2302                                 read filename
2303                                 test -z "$filename" && break
2304                                 if test -f $filename; then
2305                                         if $issymlink $filename; then
2306                                                 rm -f $filename
2307                                         fi
2308                                 fi
2309                                 if test -f $filename; then
2310                                         echo "$filename already exists, not symlinking."
2311                                 else
2312                                         ln -s $src/$filename $filename
2313                                 fi
2314                         done
2315                         # Sanity check 2.
2316                         if test ! -f t/base/commonsense.t; then
2317                                 echo "Failed to create the symlinks.  Aborting." >&4
2318                                 exit 1
2319                         fi
2320                         cd UU
2321                         ;;
2322                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2323                         ;;
2324                 esac
2325                 ;;
2326         esac
2327         ;;
2328 esac
2329
2330
2331 case "$usecrosscompile" in
2332 $define|true|[yY]*)
2333         $echo "Cross-compiling..."
2334         croak=''
2335         case "$cc" in
2336         *-*-gcc) # A cross-compiling gcc, probably.
2337             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2338             ar=$targetarch-ar
2339             # leave out ld, choosing it is more complex
2340             nm=$targetarch-nm
2341             ranlib=$targetarch-ranlib
2342             $echo 'extern int foo;' > try.c
2343             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2344             shift
2345             if $test $# -gt 0; then
2346                 incpth="$incpth $*"
2347                 incpth="`$echo $incpth|$sed 's/^ //'`"
2348                 echo "Guessing incpth '$incpth'." >&4
2349                 for i in $*; do
2350                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2351                     if $test -d $j; then
2352                         libpth="$libpth $j"
2353                     fi
2354                 done   
2355                 libpth="`$echo $libpth|$sed 's/^ //'`"
2356                 echo "Guessing libpth '$libpth'." >&4
2357             fi
2358             $rm -f try.c
2359             ;;
2360         esac
2361         case "$targetarch" in
2362         '') echo "Targetarch not defined." >&4; croak=y ;;
2363         *)  echo "Using targetarch $targetarch." >&4 ;;
2364         esac
2365         case "$incpth" in
2366         '') echo "Incpth not defined." >&4; croak=y ;;
2367         *)  echo "Using incpth '$incpth'." >&4 ;;
2368         esac
2369         case "$libpth" in
2370         '') echo "Libpth not defined." >&4; croak=y ;;
2371         *)  echo "Using libpth '$libpth'." >&4 ;;
2372         esac
2373         case "$usrinc" in
2374         '') for i in $incpth; do
2375                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2376                     usrinc=$i
2377                     echo "Guessing usrinc $usrinc." >&4
2378                     break
2379                 fi
2380             done
2381             case "$usrinc" in
2382             '') echo "Usrinc not defined." >&4; croak=y ;;
2383             esac
2384             ;;
2385         *)  echo "Using usrinc $usrinc." >&4 ;;
2386         esac
2387         case "$targethost" in
2388         '') echo "Targethost not defined." >&4; croak=y ;;
2389         *)  echo "Using targethost $targethost." >&4
2390         esac
2391         locincpth=' '
2392         loclibpth=' '
2393         case "$croak" in
2394         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2395         esac
2396         case "$src" in
2397         /*) run=$src/Cross/run
2398             targetmkdir=$src/Cross/mkdir
2399             to=$src/Cross/to
2400             from=$src/Cross/from
2401             ;;
2402         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2403             run=$pwd/Cross/run
2404             targetmkdir=$pwd/Cross/mkdir
2405             to=$pwd/Cross/to
2406             from=$pwd/Cross/from
2407             ;;
2408         esac
2409         case "$targetrun" in
2410         '') targetrun=ssh ;;
2411         esac
2412         case "$targetto" in
2413         '') targetto=scp ;;
2414         esac
2415         case "$targetfrom" in
2416         '') targetfrom=scp ;;
2417         esac
2418         run=$run-$targetrun
2419         to=$to-$targetto
2420         from=$from-$targetfrom
2421         case "$targetdir" in
2422         '')  targetdir=/tmp
2423              echo "Guessing targetdir $targetdir." >&4
2424              ;;
2425         esac
2426         case "$targetuser" in
2427         '')  targetuser=root
2428              echo "Guessing targetuser $targetuser." >&4
2429              ;;
2430         esac
2431         case "$targetfrom" in
2432         scp)    q=-q ;;
2433         *)      q='' ;;
2434         esac
2435         case "$targetrun" in
2436         ssh|rsh)
2437             cat >$run <<EOF
2438 #!/bin/sh
2439 case "\$1" in
2440 -cwd)
2441   shift
2442   cwd=\$1
2443   shift
2444   ;;
2445 esac
2446 case "\$cwd" in
2447 '') cwd=$targetdir ;;
2448 esac
2449 exe=\$1
2450 shift
2451 if $test ! -f \$exe.xok; then
2452   $to \$exe
2453   $touch \$exe.xok
2454 fi
2455 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2456 EOF
2457             ;;
2458         *)  echo "Unknown targetrun '$targetrun'" >&4
2459             exit 1
2460             ;;
2461         esac
2462         case "$targetmkdir" in
2463         */Cross/mkdir)
2464             cat >$targetmkdir <<EOF
2465 #!/bin/sh
2466 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2467 EOF
2468             $chmod a+rx $targetmkdir
2469             ;;
2470         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2471             exit 1
2472             ;;
2473         esac
2474         case "$targetto" in
2475         scp|rcp)
2476             cat >$to <<EOF
2477 #!/bin/sh
2478 for f in \$@
2479 do
2480   case "\$f" in
2481   /*)
2482     $targetmkdir \`dirname \$f\`
2483     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2484     ;;
2485   *)
2486     $targetmkdir $targetdir/\`dirname \$f\`
2487     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2488     ;;
2489   esac
2490 done
2491 exit 0
2492 EOF
2493             ;;
2494         cp) cat >$to <<EOF
2495 #!/bin/sh
2496 for f in \$@
2497 do
2498   case "\$f" in
2499   /*)
2500     $mkdir -p $targetdir/\`dirname \$f\`
2501     $cp \$f $targetdir/\$f || exit 1
2502     ;;
2503   *)
2504     $targetmkdir $targetdir/\`dirname \$f\`
2505     $cp \$f $targetdir/\$f || exit 1
2506     ;;
2507   esac
2508 done
2509 exit 0
2510 EOF
2511             ;;
2512         *)  echo "Unknown targetto '$targetto'" >&4
2513             exit 1
2514             ;;
2515         esac
2516         case "$targetfrom" in
2517         scp|rcp)
2518           cat >$from <<EOF
2519 #!/bin/sh
2520 for f in \$@
2521 do
2522   $rm -f \$f
2523   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2524 done
2525 exit 0
2526 EOF
2527             ;;
2528         cp) cat >$from <<EOF
2529 #!/bin/sh
2530 for f in \$@
2531 do
2532   $rm -f \$f
2533   cp $targetdir/\$f . || exit 1
2534 done
2535 exit 0
2536 EOF
2537             ;;
2538         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2539             exit 1
2540             ;;
2541         esac
2542         if $test ! -f $run; then
2543             echo "Target 'run' script '$run' not found." >&4
2544         else
2545             $chmod a+rx $run
2546         fi
2547         if $test ! -f $to; then
2548             echo "Target 'to' script '$to' not found." >&4
2549         else
2550             $chmod a+rx $to
2551         fi
2552         if $test ! -f $from; then
2553             echo "Target 'from' script '$from' not found." >&4
2554         else
2555             $chmod a+rx $from
2556         fi
2557         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2558             exit 1
2559         fi
2560         cat >&4 <<EOF
2561 Using '$run' for remote execution,
2562 and '$from' and '$to'
2563 for remote file transfer.
2564 EOF
2565         ;;
2566 *)      run=''
2567         to=:
2568         from=:
2569         usecrosscompile='undef'
2570         targetarch=''
2571         ;;
2572 esac
2573
2574 : see whether [:lower:] and [:upper:] are supported character classes
2575 echo " "
2576 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2577 ABYZ)
2578         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2579         up='[:upper:]'
2580         low='[:lower:]'
2581         ;;
2582 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2583         # (0xc9 and 0xd1), therefore that is a nice testing point.
2584         if test "X$up" = X -o "X$low" = X; then
2585             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2586             ij) up='[A-Z]'
2587                 low='[a-z]'
2588                 ;;
2589             esac
2590         fi
2591         if test "X$up" = X -o "X$low" = X; then
2592             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2593             ij) up='A-Z'
2594                 low='a-z'
2595                 ;;
2596             esac
2597         fi
2598         if test "X$up" = X -o "X$low" = X; then
2599             case "`echo IJ | od -x 2>/dev/null`" in
2600             *C9D1*|*c9d1*)
2601                 echo "Hey, this might be EBCDIC." >&4
2602                 if test "X$up" = X -o "X$low" = X; then
2603                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2604                     ij) up='[A-IJ-RS-Z]'
2605                         low='[a-ij-rs-z]'
2606                         ;;
2607                     esac
2608                 fi
2609                 if test "X$up" = X -o "X$low" = X; then
2610                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2611                     ij) up='A-IJ-RS-Z'
2612                         low='a-ij-rs-z'
2613                         ;;
2614                     esac
2615                 fi
2616                 ;;
2617             esac
2618         fi
2619 esac
2620 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2621 ij)
2622     echo "Using $up and $low to convert case." >&4
2623     ;;
2624 *)
2625     echo "I don't know how to translate letters from upper to lower case." >&4
2626     echo "Your tr is not acting any way I know of." >&4
2627     exit 1
2628     ;;
2629 esac
2630 : set up the translation script tr, must be called with ./tr of course
2631 cat >tr <<EOSC
2632 $startsh
2633 case "\$1\$2" in
2634 '[A-Z][a-z]') exec $tr '$up' '$low';;
2635 '[a-z][A-Z]') exec $tr '$low' '$up';;
2636 esac
2637 exec $tr "\$@"
2638 EOSC
2639 chmod +x tr
2640 $eunicefix tr
2641
2642 : Try to determine whether config.sh was made on this system
2643 case "$config_sh" in
2644 '')
2645 myuname=`$uname -a 2>/dev/null`
2646 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2647 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2648 # because the A-Z/a-z are not consecutive.
2649 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2650         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2651 newmyuname="$myuname"
2652 dflt=n
2653 case "$knowitall" in
2654 '')
2655         if test -f ../config.sh; then
2656                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2657                         eval "`grep myuname= ../config.sh`"
2658                 fi
2659                 if test "X$myuname" = "X$newmyuname"; then
2660                         dflt=y
2661                 fi
2662         fi
2663         ;;
2664 *) dflt=y;;
2665 esac
2666
2667 : Get old answers from old config file if Configure was run on the
2668 : same system, otherwise use the hints.
2669 hint=default
2670 cd ..
2671 if test -f config.sh; then
2672         echo " "
2673         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2674         . UU/myread
2675         case "$ans" in
2676         n*|N*) echo "OK, I'll ignore it."
2677                 mv config.sh config.sh.old
2678                 myuname="$newmyuname"
2679                 ;;
2680         *)  echo "Fetching default answers from your old config.sh file..." >&4
2681                 tmp_n="$n"
2682                 tmp_c="$c"
2683                 tmp_sh="$sh"
2684                 . ./config.sh
2685                 cp config.sh UU
2686                 n="$tmp_n"
2687                 c="$tmp_c"
2688                 : Older versions did not always set $sh.  Catch re-use of such
2689                 : an old config.sh.
2690                 case "$sh" in
2691                 '') sh="$tmp_sh" ;;
2692                 esac
2693                 hint=previous
2694                 ;;
2695         esac
2696 fi
2697 . ./UU/checkcc
2698 if test ! -f config.sh; then
2699         $cat <<EOM
2700
2701 First time through, eh?  I have some defaults handy for some systems
2702 that need some extra help getting the Configure answers right:
2703
2704 EOM
2705         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2706         dflt=''
2707         : Half the following guesses are probably wrong... If you have better
2708         : tests or hints, please send them to perlbug@perl.org
2709         : The metaconfig authors would also appreciate a copy...
2710         $test -f /irix && osname=irix
2711         $test -f /xenix && osname=sco_xenix
2712         $test -f /dynix && osname=dynix
2713         $test -f /dnix && osname=dnix
2714         $test -f /lynx.os && osname=lynxos
2715         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2716         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2717         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2718         $test -f /bin/mips && /bin/mips && osname=mips
2719         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2720                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2721         $test -d /usr/apollo/bin && osname=apollo
2722         $test -f /etc/saf/_sactab && osname=svr4
2723         $test -d /usr/include/minix && osname=minix
2724         if $test -d /MachTen -o -d /MachTen_Folder; then
2725                 osname=machten
2726                 if $test -x /sbin/version; then
2727                         osvers=`/sbin/version | $awk '{print $2}' |
2728                         $sed -e 's/[A-Za-z]$//'`
2729                 elif $test -x /usr/etc/version; then
2730                         osvers=`/usr/etc/version | $awk '{print $2}' |
2731                         $sed -e 's/[A-Za-z]$//'`
2732                 else
2733                         osvers="$2.$3"
2734                 fi
2735         fi
2736
2737         $test -f /sys/posix.dll &&
2738                 $test -f /usr/bin/what &&
2739                 set X `/usr/bin/what /sys/posix.dll` &&
2740                 $test "$3" = UWIN &&
2741                 osname=uwin &&
2742                 osvers="$5"
2743
2744         if $test -f $uname; then
2745                 set X $myuname
2746                 shift
2747
2748                 case "$5" in
2749                 fps*) osname=fps ;;
2750                 mips*)
2751                         case "$4" in
2752                         umips) osname=umips ;;
2753                         *) osname=mips ;;
2754                         esac;;
2755                 [23]100) osname=mips ;;
2756                 next*) osname=next ;;
2757                 i386*)
2758                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2759                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2760                                 osname='sco'
2761                                 osvers=$tmp
2762                         elif $test -f /etc/kconfig; then
2763                                 osname=isc
2764                                 if test "$lns" = "$ln -s"; then
2765                                         osvers=4
2766                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2767                                         osvers=3
2768                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2769                                         osvers=2
2770                                 fi
2771                         fi
2772                         tmp=''
2773                         ;;
2774                 pc*)
2775                         if test -n "$DJGPP"; then
2776                                 osname=dos
2777                                 osvers=djgpp
2778                         fi
2779                         ;;
2780                 esac
2781
2782                 case "$1" in
2783                 aix) osname=aix
2784                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2785                         case "$tmp" in
2786                         'not found') osvers="$4"."$3" ;;
2787                         '<3240'|'<>3240') osvers=3.2.0 ;;
2788                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2789                         '=3250'|'>3250') osvers=3.2.5 ;;
2790                         *) osvers=$tmp;;
2791                         esac
2792                         ;;
2793                 bsd386) osname=bsd386
2794                         osvers=`$uname -r`
2795                         ;;
2796                 cygwin*) osname=cygwin
2797                         osvers="$3"
2798                         ;;
2799                 *dc.osx) osname=dcosx
2800                         osvers="$3"
2801                         ;;
2802                 dnix) osname=dnix
2803                         osvers="$3"
2804                         ;;
2805                 domainos) osname=apollo
2806                         osvers="$3"
2807                         ;;
2808                 dgux) osname=dgux 
2809                         osvers="$3"
2810                         ;;
2811                 dynixptx*) osname=dynixptx
2812                         osvers=`echo "$4"|sed 's/^v//'`
2813                         ;;
2814                 freebsd) osname=freebsd 
2815                         osvers="$3" ;;
2816                 genix) osname=genix ;;
2817                 hp*) osname=hpux 
2818                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2819                         ;;
2820                 irix*) osname=irix
2821                         case "$3" in
2822                         4*) osvers=4 ;;
2823                         5*) osvers=5 ;;
2824                         *)      osvers="$3" ;;
2825                         esac
2826                         ;;
2827                 linux) osname=linux
2828                         case "$3" in
2829                         *)      osvers="$3" ;;
2830                         esac
2831                         ;;
2832                 MiNT) osname=mint
2833                         ;;
2834                 netbsd*) osname=netbsd
2835                         osvers="$3"
2836                         ;;
2837                 news-os) osvers="$3"
2838                         case "$3" in
2839                         4*) osname=newsos4 ;;
2840                         *) osname=newsos ;;
2841                         esac
2842                         ;;
2843                 next*) osname=next ;;
2844                 nonstop-ux) osname=nonstopux ;;
2845                 POSIX-BC | posix-bc ) osname=posix-bc
2846                         osvers="$3"
2847                         ;;
2848                 powerux | power_ux | powermax_os | powermaxos | \
2849                 powerunix | power_unix) osname=powerux
2850                         osvers="$3"
2851                         ;;
2852                 qnx) osname=qnx
2853                         osvers="$4"
2854                         ;;
2855                 solaris) osname=solaris
2856                         case "$3" in
2857                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2858                         *)      osvers="$3" ;;
2859                         esac
2860                         ;;
2861                 sunos) osname=sunos
2862                         case "$3" in
2863                         5*) osname=solaris
2864                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2865                         *)      osvers="$3" ;;
2866                         esac
2867                         ;;
2868                 titanos) osname=titanos
2869                         case "$3" in
2870                         1*) osvers=1 ;;
2871                         2*) osvers=2 ;;
2872                         3*) osvers=3 ;;
2873                         4*) osvers=4 ;;
2874                         *)      osvers="$3" ;;
2875                         esac
2876                         ;;
2877                 ultrix) osname=ultrix
2878                         osvers="$3"
2879                         ;;
2880                 osf1|mls+)      case "$5" in
2881                                 alpha)
2882                                         osname=dec_osf
2883                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2884                                         case "$osvers" in
2885                                         [1-9].[0-9]*) ;;
2886                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2887                                         esac
2888                                         ;;
2889                         hp*)    osname=hp_osf1  ;;
2890                         mips)   osname=mips_osf1 ;;
2891                         esac
2892                         ;;
2893                 unixware) osname=svr5
2894                         osvers="$4"
2895                         ;;
2896                 uts) osname=uts
2897                         osvers="$3"
2898                         ;;
2899                 $2) case "$osname" in
2900                         *isc*) ;;
2901                         *freebsd*) ;;
2902                         svr*)
2903                                 : svr4.x or possibly later
2904                                 case "svr$3" in 
2905                                 ${osname}*)
2906                                         osname=svr$3
2907                                         osvers=$4
2908                                         ;;
2909                                 esac
2910                                 case "$osname" in
2911                                 svr4.0)
2912                                         : Check for ESIX
2913                                         if test -f /stand/boot ; then
2914                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2915                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2916                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2917                                                         if test -n "$isesix"; then
2918                                                                 osname=esix4
2919                                                         fi
2920                                                 fi
2921                                         fi
2922                                         ;;
2923                                 esac
2924                                 ;;
2925                         *)      if test -f /etc/systemid; then
2926                                         osname=sco
2927                                         set `echo $3 | $sed 's/\./ /g'` $4
2928                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2929                                                 osvers=$1.$2.$3
2930                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2931                                                 osvers=$1.$2
2932                                         elif $test -f $src/hints/sco_$1.sh; then
2933                                                 osvers=$1
2934                                         fi
2935                                 else
2936                                         case "$osname" in
2937                                         '') : Still unknown.  Probably a generic Sys V.
2938                                                 osname="sysv"
2939                                                 osvers="$3"
2940                                                 ;;
2941                                         esac
2942                                 fi
2943                                 ;;
2944                         esac
2945                         ;;
2946                 *)      case "$osname" in
2947                         '') : Still unknown.  Probably a generic BSD.
2948                                 osname="$1"
2949                                 osvers="$3"
2950                                 ;;
2951                         esac
2952                         ;;
2953                 esac
2954         else
2955                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2956                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2957                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2958                                 osname=news_os
2959                         fi
2960                         $rm -f UU/kernel.what
2961                 elif test -d c:/.; then
2962                         set X $myuname
2963                         osname=os2
2964                         osvers="$5"
2965                 fi
2966         fi
2967         
2968         case "$targetarch" in
2969         '') ;;
2970         *)  hostarch=$osname
2971             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
2972             osvers=''
2973             ;;
2974         esac
2975
2976         : Now look for a hint file osname_osvers, unless one has been
2977         : specified already.
2978         case "$hintfile" in
2979         ''|' ')
2980                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2981                 : Also try without trailing minor version numbers.
2982                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2983                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2984                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2985                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2986                 case "$file" in
2987                 '') dflt=none ;;
2988                 *)  case "$osvers" in
2989                         '') dflt=$file
2990                                 ;;
2991                         *)  if $test -f $src/hints/$file.sh ; then
2992                                         dflt=$file
2993                                 elif $test -f $src/hints/$xfile.sh ; then
2994                                         dflt=$xfile
2995                                 elif $test -f $src/hints/$xxfile.sh ; then
2996                                         dflt=$xxfile
2997                                 elif $test -f $src/hints/$xxxfile.sh ; then
2998                                         dflt=$xxxfile
2999                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3000                                         dflt=$xxxxfile
3001                                 elif $test -f "$src/hints/${osname}.sh" ; then
3002                                         dflt="${osname}"
3003                                 else
3004                                         dflt=none
3005                                 fi
3006                                 ;;
3007                         esac
3008                         ;;
3009                 esac
3010                 if $test -f Policy.sh ; then
3011                         case "$dflt" in
3012                         *Policy*) ;;
3013                         none) dflt="Policy" ;;
3014                         *) dflt="Policy $dflt" ;;
3015                         esac
3016                 fi
3017                 ;;
3018         *)
3019                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3020                 ;;
3021         esac
3022
3023         if $test -f Policy.sh ; then
3024                 $cat <<EOM
3025
3026 There's also a Policy hint file available, which should make the
3027 site-specific (policy) questions easier to answer.
3028 EOM
3029
3030         fi
3031
3032         $cat <<EOM
3033
3034 You may give one or more space-separated answers, or "none" if appropriate.
3035 A well-behaved OS will have no hints, so answering "none" or just "Policy"
3036 is a good thing.  DO NOT give a wrong version or a wrong OS.
3037
3038 EOM
3039
3040         rp="Which of these apply, if any?"
3041         . UU/myread
3042         tans=$ans
3043         for file in $tans; do
3044                 if $test X$file = XPolicy -a -f Policy.sh; then
3045                         . Policy.sh
3046                         $cat Policy.sh >> UU/config.sh
3047                 elif $test -f $src/hints/$file.sh; then
3048                         . $src/hints/$file.sh
3049                         $cat $src/hints/$file.sh >> UU/config.sh
3050                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3051                         : nothing
3052                 else
3053                         : Give one chance to correct a possible typo.
3054                         echo "$file.sh does not exist"
3055                         dflt=$file
3056                         rp="hint to use instead?"
3057                         . UU/myread
3058                         for file in $ans; do
3059                                 if $test -f "$src/hints/$file.sh"; then
3060                                         . $src/hints/$file.sh
3061                                         $cat $src/hints/$file.sh >> UU/config.sh
3062                                 elif $test X$ans = X -o X$ans = Xnone ; then
3063                                         : nothing
3064                                 else
3065                                         echo "$file.sh does not exist -- ignored."
3066                                 fi
3067                         done
3068                 fi
3069         done
3070
3071         hint=recommended
3072         : Remember our hint file for later.
3073         if $test -f "$src/hints/$file.sh" ; then
3074                 hintfile="$file"
3075         else
3076                 hintfile=''
3077         fi
3078 fi
3079 cd UU
3080 ;;
3081 *)
3082         echo " "
3083         echo "Fetching default answers from $config_sh..." >&4
3084         tmp_n="$n"
3085         tmp_c="$c"
3086         cd ..
3087         cp $config_sh config.sh 2>/dev/null
3088         chmod +w config.sh
3089         . ./config.sh
3090         cd UU
3091         cp ../config.sh .
3092         n="$tmp_n"
3093         c="$tmp_c"
3094         hint=previous
3095         ;;
3096 esac
3097 test "$override" && . ./optdef.sh
3098
3099 : Restore computed paths
3100 for file in $loclist $trylist; do
3101         eval $file="\$_$file"
3102 done
3103
3104 cat << EOM
3105
3106 Configure uses the operating system name and version to set some defaults.
3107 The default value is probably right if the name rings a bell. Otherwise,
3108 since spelling matters for me, either accept the default or answer "none"
3109 to leave it blank.
3110
3111 EOM
3112 case "$osname" in
3113         ''|' ')
3114                 case "$hintfile" in
3115                 ''|' '|none) dflt=none ;;
3116                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3117                 esac
3118                 ;;
3119         *) dflt="$osname" ;;
3120 esac
3121 rp="Operating system name?"
3122 . ./myread
3123 case "$ans" in
3124 none)  osname='' ;;
3125 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3126 esac
3127 echo " "
3128 case "$osvers" in
3129         ''|' ')
3130                 case "$hintfile" in
3131                 ''|' '|none) dflt=none ;;
3132                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3133                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3134                         case "$dflt" in
3135                         ''|' ') dflt=none ;;
3136                         esac
3137                         ;;
3138                 esac
3139                 ;;
3140         *) dflt="$osvers" ;;
3141 esac
3142 rp="Operating system version?"
3143 . ./myread
3144 case "$ans" in
3145 none)  osvers='' ;;
3146 *) osvers="$ans" ;;
3147 esac
3148
3149
3150 . ./posthint.sh
3151
3152 : who configured the system
3153 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3154 cf_by=`(logname) 2>/dev/null`
3155 case "$cf_by" in
3156 "")
3157         cf_by=`(whoami) 2>/dev/null`
3158         case "$cf_by" in
3159         "") cf_by=unknown ;;
3160         esac ;;
3161 esac
3162
3163 : set up the script used to warn in case of inconsistency
3164 cat <<EOS >whoa
3165 $startsh
3166 EOS
3167 cat <<'EOSC' >>whoa
3168 dflt=y
3169 echo " "
3170 echo "*** WHOA THERE!!! ***" >&4
3171 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
3172 rp="    Keep the $hint value?"
3173 . ./myread
3174 case "$ans" in
3175 y) td=$was; tu=$was;;
3176 esac
3177 EOSC
3178
3179 : function used to set $1 to $val
3180 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3181 case "$val$was" in
3182 $define$undef) . ./whoa; eval "$var=\$td";;
3183 $undef$define) . ./whoa; eval "$var=\$tu";;
3184 *) eval "$var=$val";;
3185 esac'
3186
3187 case "$usethreads" in
3188 $define|true|[yY]*)     dflt='y';;
3189 *) dflt='n';;
3190 esac
3191 cat <<EOM
3192
3193 Perl can be built to take advantage of threads on some systems.
3194 To do so, Configure can be run with -Dusethreads.
3195
3196 Note that threading is a highly experimental feature, and
3197 some known race conditions still remain.  If you choose to try
3198 it, be very sure to not actually deploy it for production
3199 purposes.  README.threads has more details, and is required
3200 reading if you enable threads.
3201
3202 If this doesn't make any sense to you, just accept the default '$dflt'.
3203 EOM
3204 rp='Build a threading Perl?'
3205 . ./myread
3206 case "$ans" in
3207 y|Y)    val="$define" ;;
3208 *)      val="$undef" ;;
3209 esac
3210 set usethreads
3211 eval $setvar
3212
3213 case "$usethreads" in
3214 $define)
3215         $cat <<EOM
3216
3217 As of 5.5.640, Perl has two different internal threading implementations,
3218 the 5.005 version (5005threads) and an interpreter-based version
3219 (ithreads) that has one interpreter per thread.  Both are very 
3220 experimental.  This arrangement exists to help developers work out
3221 which one is better.
3222
3223 If you're a casual user, you probably don't want interpreter-threads
3224 at this time.  There doesn't yet exist a way to create threads from
3225 within Perl in this model, i.e., "use Thread;" will NOT work.
3226 EOM
3227         : Default to ithreads unless overridden on command line or with
3228         : old config.sh
3229         dflt='y'
3230         case "$use5005threads" in
3231                 $define|true|[yY]*) dflt='n';;
3232         esac
3233         case "$useithreads" in
3234                 $undef|false|[nN]*) dflt='n';;
3235         esac
3236         rp='Use interpreter-based ithreads?'
3237         . ./myread
3238         case "$ans" in
3239         y|Y)    val="$define" ;;
3240         *)      val="$undef" ;;
3241         esac
3242         set useithreads
3243         eval $setvar
3244         : Now set use5005threads to the opposite value.
3245         case "$useithreads" in
3246         $define) val="$undef" ;;
3247         *) val="$define" ;;
3248         esac
3249         set use5005threads
3250         eval $setvar
3251         ;;
3252 *)
3253         useithreads="$undef"
3254         use5005threads="$undef"
3255         ;;
3256 esac
3257
3258 case "$useithreads$use5005threads" in
3259 "$define$define")
3260         $cat >&4 <<EOM
3261
3262 You cannot have both the ithreads and the 5.005 threads enabled
3263 at the same time.  Disabling the 5.005 threads since they are
3264 much less stable than the ithreads.
3265
3266 EOM
3267         use5005threads="$undef"
3268         ;;
3269 esac
3270
3271 case "$d_oldpthreads" in
3272 '')     : Configure tests would be welcome here.  For now, assume undef.
3273         val="$undef" ;;
3274 *)      val="$d_oldpthreads" ;;
3275 esac
3276 set d_oldpthreads
3277 eval $setvar
3278
3279
3280 case "$usethreads" in
3281 "$define"|true|[yY]*)
3282 : Look for a hint-file generated 'call-back-unit'.  If the
3283 : user has specified that a threading perl is to be built,
3284 : we may need to set or change some other defaults.
3285         if $test -f usethreads.cbu; then
3286                 echo "Your platform has some specific hints for threaded builds, using them..."
3287                 . ./usethreads.cbu
3288         else
3289                 $cat <<EOM
3290 (Your platform doesn't have any specific hints for threaded builds.
3291  Assuming POSIX threads, then.)
3292 EOM
3293         fi
3294         ;;
3295 esac
3296
3297 cat <<EOM
3298
3299 Perl can be built so that multiple Perl interpreters can coexist
3300 within the same Perl executable.
3301 EOM
3302
3303 case "$useithreads" in
3304 $define)
3305         cat <<EOM
3306 This multiple interpreter support is required for interpreter-based threads.
3307 EOM
3308         val="$define"
3309         ;;
3310 *)      case "$usemultiplicity" in
3311         $define|true|[yY]*)     dflt='y';;
3312         *) dflt='n';;
3313         esac
3314         echo " "
3315         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
3316         rp='Build Perl for multiplicity?'
3317         . ./myread
3318         case "$ans" in
3319         y|Y)    val="$define" ;;
3320         *)      val="$undef" ;;
3321         esac
3322         ;;
3323 esac
3324 set usemultiplicity
3325 eval $setvar
3326
3327
3328 case "$usemorebits" in
3329 "$define"|true|[yY]*)
3330         use64bitint="$define"
3331         uselongdouble="$define"
3332         usemorebits="$define"
3333         ;;
3334 *)      usemorebits="$undef"
3335         ;;
3336 esac
3337
3338 : make some quick guesses about what we are up against
3339 echo " "
3340 $echo $n "Hmm...  $c"
3341 echo exit 1 >bsd
3342 echo exit 1 >usg
3343 echo exit 1 >v7
3344 echo exit 1 >osf1
3345 echo exit 1 >eunice
3346 echo exit 1 >xenix
3347 echo exit 1 >venix
3348 echo exit 1 >os2
3349 d_bsd="$undef"
3350 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3351 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3352 then
3353         echo "Looks kind of like an OSF/1 system, but we'll see..."
3354         echo exit 0 >osf1
3355 elif test `echo abc | $tr a-z A-Z` = Abc ; then
3356         xxx=`./loc addbib blurfl $pth`
3357         if $test -f $xxx; then
3358         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3359                 echo exit 0 >bsd
3360                 echo exit 0 >usg
3361         else
3362                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3363                         echo "Looks kind of like an extended USG system, but we'll see..."
3364                 else
3365                         echo "Looks kind of like a USG system, but we'll see..."
3366                 fi
3367                 echo exit 0 >usg
3368         fi
3369 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3370         echo "Looks kind of like a BSD system, but we'll see..."
3371         d_bsd="$define"
3372         echo exit 0 >bsd
3373 else
3374         echo "Looks kind of like a Version 7 system, but we'll see..."
3375         echo exit 0 >v7
3376 fi
3377 case "$eunicefix" in
3378 *unixtovms*)
3379         $cat <<'EOI'
3380 There is, however, a strange, musty smell in the air that reminds me of
3381 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3382 EOI
3383         echo exit 0 >eunice
3384         d_eunice="$define"
3385 : it so happens the Eunice I know will not run shell scripts in Unix format
3386         ;;
3387 *)
3388         echo " "
3389         echo "Congratulations.  You aren't running Eunice."
3390         d_eunice="$undef"
3391         ;;
3392 esac
3393 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3394 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
3395 : semicolon as a patch separator
3396 case "$p_" in
3397 :) ;;
3398 *)
3399         $cat <<'EOI'
3400 I have the feeling something is not exactly right, however...don't tell me...
3401 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3402 (Or you may be running DOS with DJGPP.)
3403 EOI
3404         echo exit 0 >os2
3405         ;;
3406 esac
3407 if test -f /xenix; then
3408         echo "Actually, this looks more like a XENIX system..."
3409         echo exit 0 >xenix
3410         d_xenix="$define"
3411 else
3412         echo " "
3413         echo "It's not Xenix..."
3414         d_xenix="$undef"
3415 fi
3416 chmod +x xenix
3417 $eunicefix xenix
3418 if test -f /venix; then
3419         echo "Actually, this looks more like a VENIX system..."
3420         echo exit 0 >venix
3421 else
3422         echo " "
3423         if ./xenix; then
3424                 : null
3425         else
3426                 echo "Nor is it Venix..."
3427         fi
3428 fi
3429 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3430 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3431 $rm -f foo
3432
3433 case "$cc" in
3434 '') dflt=cc;;
3435 *) dflt="$cc";;
3436 esac
3437 rp="Use which C compiler?"
3438 . ./myread
3439 cc="$ans"
3440 : Look for a hint-file generated 'call-back-unit'.  Now that the
3441 : user has specified the compiler, we may need to set or change some
3442 : other defaults.
3443 if $test -f cc.cbu; then
3444     . ./cc.cbu
3445 fi
3446 . ./checkcc
3447
3448 echo " "
3449 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3450 $cat >try.c <<EOM
3451 #include <stdio.h>
3452 int main() {
3453 #ifdef __GNUC__
3454 #ifdef __VERSION__
3455         printf("%s\n", __VERSION__);
3456 #else
3457         printf("%s\n", "1");
3458 #endif
3459 #endif
3460         exit(0);
3461 }
3462 EOM
3463 if $cc -o try $ccflags $ldflags try.c; then
3464         gccversion=`$run ./try`
3465         case "$gccversion" in
3466         '') echo "You are not using GNU cc." ;;
3467         *)  echo "You are using GNU cc $gccversion."
3468             ccname=gcc  
3469             ;;
3470         esac
3471 else
3472         echo " "
3473         echo "*** WHOA THERE!!! ***" >&4
3474         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3475         case "$knowitall" in
3476         '')
3477         echo "    You'd better start hunting for one and let me know about it." >&4
3478                 exit 1
3479                 ;;
3480         esac
3481 fi
3482 $rm -f try try.*
3483 case "$gccversion" in
3484 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3485 esac
3486 case "$gccversion" in
3487 '') gccosandvers='' ;;
3488 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3489    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3490    gccshortvers=''
3491    case "$gccosandvers" in
3492    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3493    $osname$osvers) ;; # looking good
3494    $osname*) cat <<EOM >&4
3495
3496 *** WHOA THERE!!! ***
3497
3498     Your gcc has not been compiled for the exact release of
3499     your operating system ($gccosandvers versus $osname$osvers).
3500
3501     In general it is a good idea to keep gcc synchronized with
3502     the operating system because otherwise serious problems
3503     may ensue when trying to compile software, like Perl.
3504
3505     I'm trying to be optimistic here, though, and will continue.
3506     If later during the configuration and build icky compilation
3507     problems appear (headerfile conflicts being the most common
3508     manifestation), I suggest reinstalling the gcc to match
3509     your operating system release.
3510
3511 EOM
3512       ;;
3513    *) gccosandvers='' ;; # failed to parse, better be silent
3514    esac
3515    ;;
3516 esac
3517 case "$ccname" in
3518 '') ccname="$cc" ;;
3519 esac
3520
3521 case "$gccversion" in
3522 '') ;;
3523 *)  case "$ccflags" in
3524     *-Wall*) ;;
3525     *) ccflags="$ccflags -Wall" ;;
3526     esac
3527     ;;
3528 esac
3529
3530 : decide how portable to be.  Allow command line overrides.
3531 case "$d_portable" in
3532 "$undef") ;;
3533 *)      d_portable="$define" ;;
3534 esac
3535
3536 : set up shell script to do ~ expansion
3537 cat >filexp <<EOSS
3538 $startsh
3539 : expand filename
3540 case "\$1" in
3541  ~/*|~)
3542         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3543         ;;
3544  ~*)
3545         if $test -f /bin/csh; then
3546                 /bin/csh -f -c "glob \$1"
3547                 failed=\$?
3548                 echo ""
3549                 exit \$failed
3550         else
3551                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3552                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3553                 if $test ! -d "\$dir"; then
3554                         me=\`basename \$0\`
3555                         echo "\$me: can't locate home directory for: \$name" >&2
3556                         exit 1
3557                 fi
3558                 case "\$1" in
3559                 */*)
3560                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3561                         ;;
3562                 *)
3563                         echo \$dir
3564                         ;;
3565                 esac
3566         fi
3567         ;;
3568 *)
3569         echo \$1
3570         ;;
3571 esac
3572 EOSS
3573 chmod +x filexp
3574 $eunicefix filexp
3575
3576 : now set up to get a file name
3577 cat <<EOS >getfile
3578 $startsh
3579 EOS
3580 cat <<'EOSC' >>getfile
3581 tilde=''
3582 fullpath=''
3583 already=''
3584 skip=''
3585 none_ok=''
3586 exp_file=''
3587 nopath_ok=''
3588 orig_rp="$rp"
3589 orig_dflt="$dflt"
3590 case "$gfpth" in
3591 '') gfpth='.' ;;
3592 esac
3593
3594 case "$fn" in
3595 *\(*)
3596         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3597         fn=`echo $fn | sed 's/(.*)//'`
3598         ;;
3599 esac
3600
3601 case "$fn" in
3602 *:*)
3603         loc_file=`expr $fn : '.*:\(.*\)'`
3604         fn=`expr $fn : '\(.*\):.*'`
3605         ;;
3606 esac
3607
3608 case "$fn" in
3609 *~*) tilde=true;;
3610 esac
3611 case "$fn" in
3612 */*) fullpath=true;;
3613 esac
3614 case "$fn" in
3615 *+*) skip=true;;
3616 esac
3617 case "$fn" in
3618 *n*) none_ok=true;;
3619 esac
3620 case "$fn" in
3621 *e*) exp_file=true;;
3622 esac
3623 case "$fn" in
3624 *p*) nopath_ok=true;;
3625 esac
3626
3627 case "$fn" in
3628 *f*) type='File';;
3629 *d*) type='Directory';;
3630 *l*) type='Locate';;
3631 esac
3632
3633 what="$type"
3634 case "$what" in
3635 Locate) what='File';;
3636 esac
3637
3638 case "$exp_file" in
3639 '')
3640         case "$d_portable" in
3641         "$define") ;;
3642         *) exp_file=true;;
3643         esac
3644         ;;
3645 esac
3646
3647 cd ..
3648 while test "$type"; do
3649         redo=''
3650         rp="$orig_rp"
3651         dflt="$orig_dflt"
3652         case "$tilde" in
3653         true) rp="$rp (~name ok)";;
3654         esac
3655         . UU/myread
3656         if test -f UU/getfile.ok && \
3657                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3658         then
3659                 value="$ans"
3660                 ansexp="$ans"
3661                 break
3662         fi
3663         case "$ans" in
3664         none)
3665                 value=''
3666                 ansexp=''
3667                 case "$none_ok" in
3668                 true) type='';;
3669                 esac
3670                 ;;
3671         *)
3672                 case "$tilde" in
3673                 '') value="$ans"
3674                         ansexp="$ans";;
3675                 *)
3676                         value=`UU/filexp $ans`
3677                         case $? in
3678                         0)
3679                                 if test "$ans" != "$value"; then
3680                                         echo "(That expands to $value on this system.)"
3681                                 fi
3682                                 ;;
3683                         *) value="$ans";;
3684                         esac
3685                         ansexp="$value"
3686                         case "$exp_file" in
3687                         '') value="$ans";;
3688                         esac
3689                         ;;
3690                 esac
3691                 case "$fullpath" in
3692                 true)
3693                         case "$ansexp" in
3694                         /*) value="$ansexp" ;;
3695                         [a-zA-Z]:/*) value="$ansexp" ;;
3696                         *)
3697                                 redo=true
3698                                 case "$already" in
3699                                 true)
3700                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3701                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3702                                         ;;
3703                                 *)
3704                                 echo "Please give a full path name, starting with slash." >&4
3705                                         case "$tilde" in
3706                                         true)
3707                                 echo "Note that using ~name is ok provided it expands well." >&4
3708                                                 already=true
3709                                                 ;;
3710                                         esac
3711                                 esac
3712                                 ;;
3713                         esac
3714                         ;;
3715                 esac
3716                 case "$redo" in
3717                 '')
3718                         case "$type" in
3719                         File)
3720                                 for fp in $gfpth; do
3721                                         if test "X$fp" = X.; then
3722                                             pf="$ansexp"
3723                                         else    
3724                                             pf="$fp/$ansexp"
3725                                         fi
3726                                         if test -f "$pf"; then
3727                                                 type=''
3728                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3729                                         then
3730                                                 echo "($value is not a plain file, but that's ok.)"
3731                                                 type=''
3732                                         fi
3733                                         if test X"$type" = X; then
3734                                             value="$pf"
3735                                             break
3736                                         fi
3737                                 done
3738                                 ;;
3739                         Directory)
3740                                 for fp in $gfpth; do
3741                                         if test "X$fp" = X.; then
3742                                             dir="$ans"
3743                                             direxp="$ansexp"
3744                                         else    
3745                                             dir="$fp/$ansexp"
3746                                             direxp="$fp/$ansexp"
3747                                         fi
3748                                         if test -d "$direxp"; then
3749                                                 type=''
3750                                                 value="$dir"
3751                                                 break
3752                                         fi
3753                                 done
3754                                 ;;
3755                         Locate)
3756                                 if test -d "$ansexp"; then
3757                                         echo "(Looking for $loc_file in directory $value.)"
3758                                         value="$value/$loc_file"
3759                                         ansexp="$ansexp/$loc_file"
3760                                 fi
3761                                 if test -f "$ansexp"; then
3762                                         type=''
3763                                 fi
3764                                 case "$nopath_ok" in
3765                                 true)   case "$value" in
3766                                         */*) ;;
3767                                         *)      echo "Assuming $value will be in people's path."
3768                                                 type=''
3769                                                 ;;
3770                                         esac
3771                                         ;;
3772                                 esac
3773                                 ;;
3774                         esac
3775
3776                         case "$skip" in
3777                         true) type='';
3778                         esac
3779
3780                         case "$type" in
3781                         '') ;;
3782                         *)
3783                                 if test "$fastread" = yes; then
3784                                         dflt=y
3785                                 else
3786                                         dflt=n
3787                                 fi
3788                                 rp="$what $value doesn't exist.  Use that name anyway?"
3789                                 . UU/myread
3790                                 dflt=''
3791                                 case "$ans" in
3792                                 y*) type='';;
3793                                 *) echo " ";;
3794                                 esac
3795                                 ;;
3796                         esac
3797                         ;;
3798                 esac
3799                 ;;
3800         esac
3801 done
3802 cd UU
3803 ans="$value"
3804 rp="$orig_rp"
3805 dflt="$orig_dflt"
3806 rm -f getfile.ok
3807 test "X$gfpthkeep" != Xy && gfpth=""
3808 EOSC
3809
3810 : What should the include directory be ?
3811 echo " "
3812 $echo $n "Hmm...  $c"
3813 dflt='/usr/include'
3814 incpath=''
3815 mips_type=''
3816 if $test -f /bin/mips && /bin/mips; then
3817         echo "Looks like a MIPS system..."
3818         $cat >usr.c <<'EOCP'
3819 #ifdef SYSTYPE_BSD43
3820 /bsd43
3821 #endif
3822 EOCP
3823         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3824                 dflt='/bsd43/usr/include'
3825                 incpath='/bsd43'
3826                 mips_type='BSD 4.3'
3827         else
3828                 mips_type='System V'
3829         fi
3830         $rm -f usr.c usr.out
3831         echo "and you're compiling with the $mips_type compiler and libraries."
3832         xxx_prompt=y
3833         echo "exit 0" >mips
3834 else
3835         echo "Doesn't look like a MIPS system."
3836         xxx_prompt=n
3837         echo "exit 1" >mips
3838 fi
3839 chmod +x mips
3840 $eunicefix mips
3841 case "$usrinc" in
3842 '') ;;
3843 *) dflt="$usrinc";;
3844 esac
3845 case "$xxx_prompt" in
3846 y)      fn=d/
3847         echo " "
3848         rp='Where are the include files you want to use?'
3849         . ./getfile
3850         usrinc="$ans"
3851         ;;
3852 *)      usrinc="$dflt"
3853         ;;
3854 esac
3855
3856 : see how we invoke the C preprocessor
3857 echo " "
3858 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3859 cat <<'EOT' >testcpp.c
3860 #define ABC abc
3861 #define XYZ xyz
3862 ABC.XYZ
3863 EOT
3864 cd ..
3865 if test ! -f cppstdin; then
3866         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3867                 # AIX cc -E doesn't show the absolute headerfile
3868                 # locations but we'll cheat by using the -M flag.
3869                 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
3870         else
3871                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3872         fi
3873 else
3874         echo "Keeping your $hint cppstdin wrapper."
3875 fi
3876 chmod 755 cppstdin
3877 wrapper=`pwd`/cppstdin
3878 ok='false'
3879 cd UU
3880
3881 if $test "X$cppstdin" != "X" && \
3882         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3883         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3884 then
3885         echo "You used to use $cppstdin $cppminus so we'll use that again."
3886         case "$cpprun" in
3887         '') echo "But let's see if we can live without a wrapper..." ;;
3888         *)
3889                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3890                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3891                 then
3892                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3893                         ok='true'
3894                 else
3895                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3896                 fi
3897                 ;;
3898         esac
3899 else
3900         case "$cppstdin" in
3901         '') ;;
3902         *)
3903                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3904                 ;;
3905         esac
3906 fi
3907
3908 if $ok; then
3909         : nothing
3910 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3911         $cc -E <testcpp.c >testcpp.out 2>&1; \
3912         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3913         echo "Yup, it does."
3914         x_cpp="$cc -E"
3915         x_minus='';
3916 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3917         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3918         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3919         echo "Yup, it does."
3920         x_cpp="$cc -E"
3921         x_minus='-';
3922 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3923         $cc -P <testcpp.c >testcpp.out 2>&1; \
3924         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3925         echo "Yipee, that works!"
3926         x_cpp="$cc -P"
3927         x_minus='';
3928 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3929         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3930         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3931         echo "At long last!"
3932         x_cpp="$cc -P"
3933         x_minus='-';
3934 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3935         $cpp <testcpp.c >testcpp.out 2>&1; \
3936         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3937         echo "It works!"
3938         x_cpp="$cpp"
3939         x_minus='';
3940 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3941         $cpp - <testcpp.c >testcpp.out 2>&1; \
3942         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3943         echo "Hooray, it works!  I was beginning to wonder."
3944         x_cpp="$cpp"
3945         x_minus='-';
3946 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3947         $wrapper <testcpp.c >testcpp.out 2>&1; \
3948         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3949         x_cpp="$wrapper"
3950         x_minus=''
3951         echo "Eureka!"
3952 else
3953         dflt=''
3954         rp="No dice.  I can't find a C preprocessor.  Name one:"
3955         . ./myread
3956         x_cpp="$ans"
3957         x_minus=''
3958         $x_cpp <testcpp.c >testcpp.out 2>&1
3959         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3960                 echo "OK, that will do." >&4
3961         else
3962 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3963                 exit 1
3964         fi
3965 fi
3966
3967 case "$ok" in
3968 false)
3969         cppstdin="$x_cpp"
3970         cppminus="$x_minus"
3971         cpprun="$x_cpp"
3972         cpplast="$x_minus"
3973         set X $x_cpp
3974         shift
3975         case "$1" in
3976         "$cpp")
3977                 echo "Perhaps can we force $cc -E using a wrapper..."
3978                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3979                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3980                 then
3981                         echo "Yup, we can."
3982                         cppstdin="$wrapper"
3983                         cppminus='';
3984                 else
3985                         echo "Nope, we'll have to live without it..."
3986                 fi
3987                 ;;
3988         esac
3989         case "$cpprun" in
3990         "$wrapper")
3991                 cpprun=''
3992                 cpplast=''
3993                 ;;
3994         esac
3995         ;;
3996 esac
3997
3998 case "$cppstdin" in
3999 "$wrapper"|'cppstdin') ;;
4000 *) $rm -f $wrapper;;
4001 esac
4002 $rm -f testcpp.c testcpp.out
4003
4004 : Set private lib path
4005 case "$plibpth" in
4006 '') if ./mips; then
4007                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4008         fi;;
4009 esac
4010 case "$libpth" in
4011 ' ') dlist='';;
4012 '') dlist="$loclibpth $plibpth $glibpth";;
4013 *) dlist="$libpth";;
4014 esac
4015
4016 : Now check and see which directories actually exist, avoiding duplicates
4017 libpth=''
4018 for xxx in $dlist
4019 do
4020     if $test -d $xxx; then
4021                 case " $libpth " in
4022                 *" $xxx "*) ;;
4023                 *) libpth="$libpth $xxx";;
4024                 esac
4025     fi
4026 done
4027 $cat <<'EOM'
4028
4029 Some systems have incompatible or broken versions of libraries.  Among
4030 the directories listed in the question below, please remove any you
4031 know not to be holding relevant libraries, and add any that are needed.
4032 Say "none" for none.
4033
4034 EOM
4035 case "$libpth" in
4036 '') dflt='none';;
4037 *)
4038         set X $libpth
4039         shift
4040         dflt=${1+"$@"}
4041         ;;
4042 esac
4043 rp="Directories to use for library searches?"
4044 . ./myread
4045 case "$ans" in
4046 none) libpth=' ';;
4047 *) libpth="$ans";;
4048 esac
4049
4050 : compute shared library extension
4051 case "$so" in
4052 '')
4053         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4054                 dflt='sl'
4055         else
4056                 dflt='so'
4057         fi
4058         ;;
4059 *) dflt="$so";;
4060 esac
4061 $cat <<EOM
4062
4063 On some systems, shared libraries may be available.  Answer 'none' if
4064 you want to suppress searching of shared libraries for the remainder
4065 of this configuration.
4066
4067 EOM
4068 rp='What is the file extension used for shared libraries?'
4069 . ./myread
4070 so="$ans"
4071
4072 : Define several unixisms.
4073 : Hints files or command line option can be used to override them.
4074 : The convoluted testing is in case hints files set either the old
4075 : or the new name.
4076 case "$_exe" in
4077 '')     case "$exe_ext" in
4078     '') ;;
4079         *)      _exe="$exe_ext" ;;
4080         esac
4081         ;;
4082 esac
4083 case "$_a" in
4084 '')     case "$lib_ext" in
4085     '') _a='.a';;
4086         *)      _a="$lib_ext" ;;
4087         esac
4088         ;;
4089 esac
4090 case "$_o" in
4091 '') case "$obj_ext" in
4092         '')     _o='.o';;
4093         *)      _o="$obj_ext";;
4094         esac
4095         ;;
4096 esac
4097 case "$p_" in
4098 '') case "$path_sep" in
4099         '')     p_=':';;
4100         *)      p_="$path_sep";;
4101         esac
4102         ;;
4103 esac
4104 exe_ext=$_exe
4105 lib_ext=$_a
4106 obj_ext=$_o
4107 path_sep=$p_
4108
4109 : Which makefile gets called first.  This is used by make depend.
4110 case "$firstmakefile" in
4111 '') firstmakefile='makefile';;
4112 esac
4113
4114 case "$usesocks" in
4115 $define|true|[yY]*)     dflt='y';;
4116 *) dflt='n';;
4117 esac
4118 cat <<EOM
4119
4120 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4121 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4122 to use the PerlIO abstraction layer, this will be implicitly selected.
4123
4124 If this doesn't make any sense to you, just accept the default '$dflt'.
4125 EOM
4126 rp='Build Perl for SOCKS?'
4127 . ./myread
4128 case "$ans" in
4129 y|Y)    val="$define" ;;     
4130 *)      val="$undef" ;;
4131 esac
4132 set usesocks
4133 eval $setvar
4134
4135 case "$usesocks" in
4136 $define|true|[yY]*) useperlio="$define";;
4137 esac
4138
4139 : Looking for optional libraries
4140 echo " "
4141 echo "Checking for optional libraries..." >&4
4142 case "$libs" in
4143 ' '|'') dflt='';;
4144 *) dflt="$libs";;
4145 esac
4146 case "$libswanted" in
4147 '') libswanted='c_s';;
4148 esac
4149 case "$usesocks" in
4150 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
4151 esac
4152 libsfound=''
4153 libsfiles=''
4154 libsdirs=''
4155 libspath=''
4156 for thisdir in $libpth $xlibpth; do
4157   test -d $thisdir && libspath="$libspath $thisdir"
4158 done
4159 for thislib in $libswanted; do
4160         for thisdir in $libspath; do
4161             xxx=''
4162             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
4163                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
4164                 $test -f "$xxx" && eval $libscheck
4165                 $test -f "$xxx" && libstyle=shared
4166             fi
4167             if test ! -f "$xxx"; then
4168                 xxx=$thisdir/lib$thislib.$so
4169                 $test -f "$xxx" && eval $libscheck
4170                 $test -f "$xxx" && libstyle=shared
4171             fi  
4172             if test ! -f "$xxx"; then
4173                 xxx=$thisdir/lib$thislib$_a
4174                 $test -f "$xxx" && eval $libscheck
4175                 $test -f "$xxx" && libstyle=static
4176             fi
4177             if test ! -f "$xxx"; then
4178                 xxx=$thisdir/$thislib$_a
4179                 $test -f "$xxx" && eval $libscheck
4180                 $test -f "$xxx" && libstyle=static
4181             fi
4182             if test ! -f "$xxx"; then
4183                 xxx=$thisdir/lib${thislib}_s$_a
4184                 $test -f "$xxx" && eval $libscheck
4185                 $test -f "$xxx" && libstyle=static
4186                 $test -f "$xxx" && thislib=${thislib}_s
4187             fi
4188             if test ! -f "$xxx"; then
4189                 xxx=$thisdir/Slib$thislib$_a
4190                 $test -f "$xxx" && eval $libscheck
4191                 $test -f "$xxx" && libstyle=static
4192             fi
4193             if $test -f "$xxx"; then
4194                 case "$libstyle" in
4195                 shared) echo "Found -l$thislib (shared)." ;;
4196                 static) echo "Found -l$thislib." ;;
4197                 *)      echo "Found -l$thislib ($libstyle)." ;;
4198                 esac
4199                 case " $dflt " in
4200                 *"-l$thislib "*);;
4201                 *) dflt="$dflt -l$thislib"
4202                    libsfound="$libsfound $xxx"
4203                    yyy=`basename $xxx`
4204                    libsfiles="$libsfiles $yyy"
4205                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
4206                    case " $libsdirs " in
4207                    *" $yyy "*) ;;
4208                    *) libsdirs="$libsdirs $yyy" ;;
4209                    esac
4210                    ;;
4211                 esac
4212                 break
4213             fi  
4214         done
4215         if $test ! -f "$xxx"; then
4216             echo "No -l$thislib."
4217         fi
4218 done
4219 set X $dflt
4220 shift
4221 dflt="$*"
4222 case "$libs" in
4223 '') dflt="$dflt";;
4224 *) dflt="$libs";;
4225 esac
4226 case "$dflt" in
4227 ' '|'') dflt='none';;
4228 esac
4229
4230 $cat <<EOM
4231
4232 In order to compile $package on your machine, a number of libraries
4233 are usually needed.  Include any other special libraries here as well.
4234 Say "none" for none.  The default list is almost always right.
4235 EOM
4236
4237 echo " "
4238 rp="What libraries to use?"
4239 . ./myread
4240 case "$ans" in
4241 none) libs=' ';;
4242 *) libs="$ans";;
4243 esac
4244
4245 : determine optimization, if desired, or use for debug flag also
4246 case "$optimize" in
4247 ' '|$undef) dflt='none';;
4248 '') dflt='-O';;
4249 *) dflt="$optimize";;
4250 esac
4251 $cat <<EOH
4252
4253 By default, $package compiles with the -O flag to use the optimizer.
4254 Alternately, you might want to use the symbolic debugger, which uses
4255 the -g flag (on traditional Unix systems).  Either flag can be
4256 specified here.  To use neither flag, specify the word "none".
4257
4258 EOH
4259 rp="What optimizer/debugger flag should be used?"
4260 . ./myread
4261 optimize="$ans"
4262 case "$optimize" in
4263 'none') optimize=" ";;
4264 esac
4265
4266 dflt=''
4267 : We will not override a previous value, but we might want to
4268 : augment a hint file
4269 case "$hint" in
4270 default|recommended)
4271         case "$gccversion" in
4272         1*) dflt='-fpcc-struct-return' ;;
4273         esac
4274         case "$optimize" in
4275         *-g*) dflt="$dflt -DDEBUGGING";;
4276         esac
4277         case "$gccversion" in
4278         2*) if test -d /etc/conf/kconfig.d &&
4279                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4280                 then
4281                         dflt="$dflt -posix"
4282                 fi
4283                 ;;
4284         esac
4285         case "$gccversion" in
4286         1*) ;;
4287         2.[0-8]*) ;;
4288         ?*)     echo " "
4289                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4290                 echo 'int main(void) { return 0; }' > gcctest.c
4291                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4292                         echo "Yes, it does." 2>&1
4293                         case "$ccflags" in
4294                         *strict-aliasing*) 
4295                                 echo "Leaving current flags $ccflags alone." 2>&1
4296                                 ;;
4297                         *) dflt="$dflt -fno-strict-aliasing" ;;
4298                         esac
4299                 else
4300                         echo "Nope, it doesn't, but that's ok." 2>&1
4301                 fi
4302                 ;;
4303         esac
4304         ;;
4305 esac
4306
4307 case "$mips_type" in
4308 *BSD*|'') inclwanted="$locincpth $usrinc";;
4309 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4310 esac
4311 for thisincl in $inclwanted; do
4312         if $test -d $thisincl; then
4313                 if $test x$thisincl != x$usrinc; then
4314                         case "$dflt" in
4315                         *" -I$thisincl "*);;
4316                         *) dflt="$dflt -I$thisincl ";;
4317                         esac
4318                 fi
4319         fi
4320 done
4321
4322 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4323         xxx=true;
4324 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4325         xxx=true;
4326 else
4327         xxx=false;
4328 fi;
4329 if $xxx; then
4330         case "$dflt" in
4331         *$2*);;
4332         *) dflt="$dflt -D$2";;
4333         esac;
4334 fi'
4335
4336 set signal.h LANGUAGE_C; eval $inctest
4337
4338 case "$usesocks" in
4339 $define)
4340         ccflags="$ccflags -DSOCKS"
4341         ;;
4342 esac
4343
4344 case "$hint" in
4345 default|recommended) dflt="$ccflags $dflt" ;;
4346 *) dflt="$ccflags";;
4347 esac
4348
4349 case "$dflt" in
4350 ''|' ') dflt=none;;
4351 esac
4352
4353 $cat <<EOH
4354
4355 Your C compiler may want other flags.  For this question you should include
4356 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4357 but you should NOT include libraries or ld flags like -lwhatever.  If you
4358 want $package to honor its debug switch, you should include -DDEBUGGING here.
4359 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4360
4361 To use no flags, specify the word "none".
4362
4363 EOH
4364 set X $dflt
4365 shift
4366 dflt=${1+"$@"}
4367 rp="Any additional cc flags?"
4368 . ./myread
4369 case "$ans" in
4370 none) ccflags='';;
4371 *) ccflags="$ans";;
4372 esac
4373
4374 : the following weeds options from ccflags that are of no interest to cpp
4375 case "$cppflags" in
4376 '') cppflags="$ccflags" ;;
4377 *)  cppflags="$cppflags $ccflags" ;;
4378 esac
4379 case "$gccversion" in
4380 1*) cppflags="$cppflags -D__GNUC__"
4381 esac
4382 case "$mips_type" in
4383 '');;
4384 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4385 esac
4386 case "$cppflags" in
4387 '');;
4388 *)
4389         echo " "
4390         echo "Let me guess what the preprocessor flags are..." >&4
4391         set X $cppflags
4392         shift
4393         cppflags=''
4394         $cat >cpp.c <<'EOM'
4395 #define BLURFL foo
4396
4397 BLURFL xx LFRULB
4398 EOM
4399         previous=''
4400         for flag in $*
4401         do
4402                 case "$flag" in
4403                 -*) ftry="$flag";;
4404                 *) ftry="$previous $flag";;
4405                 esac
4406                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4407                         >cpp1.out 2>/dev/null && \
4408                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4409                         >cpp2.out 2>/dev/null && \
4410                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4411                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4412                 then
4413                         cppflags="$cppflags $ftry"
4414                         previous=''
4415                 else
4416                         previous="$flag"
4417                 fi
4418         done
4419         set X $cppflags
4420         shift
4421         cppflags=${1+"$@"}
4422         case "$cppflags" in
4423         *-*)  echo "They appear to be: $cppflags";;
4424         esac
4425         $rm -f cpp.c cpp?.out
4426         ;;
4427 esac
4428
4429 : flags used in final linking phase
4430 case "$ldflags" in
4431 '') if ./venix; then
4432                 dflt='-i -z'
4433         else
4434                 dflt=''
4435         fi
4436         case "$ccflags" in
4437         *-posix*) dflt="$dflt -posix" ;;
4438         esac
4439         ;;
4440 *) dflt="$ldflags";;
4441 esac
4442
4443 : Try to guess additional flags to pick up local libraries.
4444 for thislibdir in $libpth; do
4445         case " $loclibpth " in
4446         *" $thislibdir "*)
4447                 case "$dflt " in 
4448                 *"-L$thislibdir "*) ;;
4449                 *)  dflt="$dflt -L$thislibdir" ;;
4450                 esac
4451                 ;;
4452         esac
4453 done
4454
4455 case "$dflt" in
4456 '') dflt='none' ;;
4457 esac
4458
4459 $cat <<EOH
4460
4461 Your C linker may need flags.  For this question you should
4462 include -L/whatever and any other flags used by the C linker, but you
4463 should NOT include libraries like -lwhatever.
4464
4465 Make sure you include the appropriate -L/path flags if your C linker
4466 does not normally search all of the directories you specified above,
4467 namely
4468         $libpth
4469 To use no flags, specify the word "none".
4470
4471 EOH
4472
4473 rp="Any additional ld flags (NOT including libraries)?"
4474 . ./myread
4475 case "$ans" in
4476 none) ldflags='';;
4477 *) ldflags="$ans";;
4478 esac
4479 rmlist="$rmlist pdp11"
4480
4481 : coherency check
4482 echo " "
4483 echo "Checking your choice of C compiler and flags for coherency..." >&4
4484 $cat > try.c <<'EOF'
4485 #include <stdio.h>
4486 int main() { printf("Ok\n"); exit(0); }
4487 EOF
4488 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4489 shift
4490 $cat >try.msg <<'EOM'
4491 I've tried to compile and run the following simple program:
4492
4493 EOM
4494 $cat try.c >> try.msg
4495
4496 $cat >> try.msg <<EOM
4497
4498 I used the command:
4499
4500         $*
4501         $run ./try
4502
4503 and I got the following output:
4504
4505 EOM
4506 dflt=y
4507 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4508         if $sh -c "$run ./try" >>try.msg 2>&1; then
4509                 xxx=`$run ./try`
4510                 case "$xxx" in
4511                 "Ok") dflt=n ;;
4512                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4513                         case " $libs " in
4514                         *" -lsfio "*)
4515                                 cat >> try.msg <<'EOQS'
4516 If $libs contains -lsfio, and sfio is mis-configured, then it
4517 sometimes (apparently) runs and exits with a 0 status, but with no
4518 output!  It may have to do with sfio's use of _exit vs. exit.
4519
4520 EOQS
4521                                 rp="You have a big problem.  Shall I abort Configure"
4522                                 dflt=y
4523                                 ;;
4524                         esac
4525                         ;;
4526                 esac
4527         else
4528                 echo "The program compiled OK, but exited with status $?." >>try.msg
4529                 rp="You have a problem.  Shall I abort Configure"
4530                 dflt=y
4531         fi
4532 else
4533         echo "I can't compile the test program." >>try.msg
4534         rp="You have a BIG problem.  Shall I abort Configure"
4535         dflt=y
4536 fi
4537 case "$dflt" in
4538 y)
4539         $cat try.msg >&4
4540         case "$knowitall" in
4541         '')
4542                 echo "(The supplied flags or libraries might be incorrect.)"
4543                 ;;
4544         *) dflt=n;;
4545         esac
4546         echo " "
4547         . ./myread
4548         case "$ans" in
4549         n*|N*) ;;
4550         *)      echo "Ok.  Stopping Configure." >&4
4551                 exit 1
4552                 ;;
4553         esac
4554         ;;
4555 n) echo "OK, that should do.";;
4556 esac
4557 $rm -f try try.* core
4558
4559 : define a shorthand compile call
4560 compile='
4561 mc_file=$1;
4562 shift;
4563 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4564 : define a shorthand compile call for compilations that should be ok.
4565 compile_ok='
4566 mc_file=$1;
4567 shift;
4568 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4569
4570 : check for lengths of integral types
4571 echo " "
4572 case "$intsize" in
4573 '')
4574         echo "Checking to see how big your integers are..." >&4
4575         $cat >try.c <<'EOCP'
4576 #include <stdio.h>
4577 int main()
4578 {
4579         printf("intsize=%d;\n", (int)sizeof(int));
4580         printf("longsize=%d;\n", (int)sizeof(long));
4581         printf("shortsize=%d;\n", (int)sizeof(short));
4582         exit(0);
4583 }
4584 EOCP
4585         set try
4586         if eval $compile_ok && $run ./try > /dev/null; then
4587                 eval `$run ./try`
4588                 echo "Your integers are $intsize bytes long."
4589                 echo "Your long integers are $longsize bytes long."
4590                 echo "Your short integers are $shortsize bytes long."
4591         else
4592                 $cat >&4 <<EOM
4593 !
4594 Help! I can't compile and run the intsize test program: please enlighten me!
4595 (This is probably a misconfiguration in your system or libraries, and
4596 you really ought to fix it.  Still, I'll try anyway.)
4597 !
4598 EOM
4599                 dflt=4
4600                 rp="What is the size of an integer (in bytes)?"
4601                 . ./myread
4602                 intsize="$ans"
4603                 dflt=$intsize
4604                 rp="What is the size of a long integer (in bytes)?"
4605                 . ./myread
4606                 longsize="$ans"
4607                 dflt=2
4608                 rp="What is the size of a short integer (in bytes)?"
4609                 . ./myread
4610                 shortsize="$ans"
4611         fi
4612         ;;
4613 esac
4614 $rm -f try try.*
4615
4616 : check for void type
4617 echo " "
4618 echo "Checking to see how well your C compiler groks the void type..." >&4
4619 case "$voidflags" in
4620 '')
4621         $cat >try.c <<'EOCP'
4622 #if TRY & 1
4623 void sub() {
4624 #else
4625 sub() {
4626 #endif
4627         extern void moo();      /* function returning void */
4628         void (*goo)();          /* ptr to func returning void */
4629 #if TRY & 8
4630         void *hue;              /* generic ptr */
4631 #endif
4632 #if TRY & 2
4633         void (*foo[10])();
4634 #endif
4635
4636 #if TRY & 4
4637         if(goo == moo) {
4638                 exit(0);
4639         }
4640 #endif
4641         exit(0);
4642 }
4643 int main() { sub(); }
4644 EOCP
4645         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
4646                 voidflags=$defvoidused
4647         echo "Good.  It appears to support void to the level $package wants.">&4
4648                 if $contains warning .out >/dev/null 2>&1; then
4649                         echo "However, you might get some warnings that look like this:"
4650                         $cat .out
4651                 fi
4652         else
4653 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
4654                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
4655                         echo "It supports 1..."
4656                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
4657                                 echo "It also supports 2..."
4658                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
4659                                         voidflags=7
4660                                         echo "And it supports 4 but not 8 definitely."
4661                                 else
4662                                         echo "It doesn't support 4..."
4663                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
4664                                                 voidflags=11
4665                                                 echo "But it supports 8."
4666                                         else
4667                                                 voidflags=3
4668                                                 echo "Neither does it support 8."
4669                                         fi
4670                                 fi
4671                         else
4672                                 echo "It does not support 2..."
4673                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
4674                                         voidflags=13
4675                                         echo "But it supports 4 and 8."
4676                                 else
4677                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
4678                                                 voidflags=5
4679                                                 echo "And it supports 4 but has not heard about 8."
4680                                         else
4681                                                 echo "However it supports 8 but not 4."
4682                                         fi
4683                                 fi
4684                         fi
4685                 else
4686                         echo "There is no support at all for void."
4687                         voidflags=0
4688                 fi
4689         fi
4690 esac
4691 case "$voidflags" in
4692 "$defvoidused") ;;
4693 *)      $cat >&4 <<'EOM'
4694   Support flag bits are:
4695     1: basic void declarations.
4696     2: arrays of pointers to functions returning void.
4697     4: operations between pointers to and addresses of void functions.
4698     8: generic void pointers.
4699 EOM
4700         dflt="$voidflags";
4701         rp="Your void support flags add up to what?"
4702         . ./myread
4703         voidflags="$ans"
4704         ;;
4705 esac
4706 $rm -f try.* .out
4707
4708 : check for length of pointer
4709 echo " "
4710 case "$ptrsize" in
4711 '')
4712         echo "Checking to see how big your pointers are..." >&4
4713         if test "$voidflags" -gt 7; then
4714                 echo '#define VOID_PTR char *' > try.c
4715         else
4716                 echo '#define VOID_PTR void *' > try.c
4717         fi
4718         $cat >>try.c <<'EOCP'
4719 #include <stdio.h>
4720 int main()
4721 {
4722     printf("%d\n", (int)sizeof(VOID_PTR));
4723     exit(0);
4724 }
4725 EOCP
4726         set try
4727         if eval $compile_ok; then
4728                 ptrsize=`$run ./try`
4729                 echo "Your pointers are $ptrsize bytes long."
4730         else
4731                 dflt='4'
4732                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
4733                 rp="What is the size of a pointer (in bytes)?"
4734                 . ./myread
4735                 ptrsize="$ans"
4736         fi
4737         ;;
4738 esac
4739 $rm -f try.c try
4740
4741 : check for long long
4742 echo " "
4743 echo "Checking to see if you have long long..." >&4
4744 echo 'int main() { long long x = 7; return 0; }' > try.c
4745 set try
4746 if eval $compile; then
4747         val="$define"
4748         echo "You have long long."
4749 else
4750         val="$undef"
4751         echo "You do not have long long."
4752 fi
4753 $rm try.*
4754 set d_longlong
4755 eval $setvar
4756
4757 : check for length of long long
4758 case "${d_longlong}${longlongsize}" in
4759 $define)
4760         echo " "
4761         echo "Checking to see how big your long longs are..." >&4
4762         $cat >try.c <<'EOCP'
4763 #include <stdio.h>
4764 int main()
4765 {
4766     printf("%d\n", (int)sizeof(long long));
4767     return(0);
4768 }
4769 EOCP
4770         set try
4771         if eval $compile_ok; then
4772                 longlongsize=`$run ./try`
4773                 echo "Your long longs are $longlongsize bytes long."
4774         else
4775                 dflt='8'
4776                 echo " "
4777                 echo "(I can't seem to compile the test program.  Guessing...)"
4778                 rp="What is the size of a long long (in bytes)?"
4779                 . ./myread
4780                 longlongsize="$ans"
4781         fi
4782         if $test "X$longsize" = "X$longlongsize"; then
4783                 echo "(That isn't any different from an ordinary long.)"
4784         fi      
4785         ;;
4786 esac
4787 $rm -f try.* try
4788
4789 : determine filename position in cpp output
4790 echo " "
4791 echo "Computing filename position in cpp output for #include directives..." >&4
4792 echo '#include <stdio.h>' > foo.c
4793 $cat >fieldn <<EOF
4794 $startsh
4795 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4796 $grep '^[       ]*#.*stdio\.h' | \
4797 while read cline; do
4798         pos=1
4799         set \$cline
4800         while $test \$# -gt 0; do
4801                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4802                         echo "\$pos"
4803                         exit 0
4804                 fi
4805                 shift
4806                 pos=\`expr \$pos + 1\`
4807         done
4808 done
4809 EOF
4810 chmod +x fieldn
4811 fieldn=`./fieldn`
4812 $rm -f foo.c fieldn
4813 case $fieldn in
4814 '') pos='???';;
4815 1) pos=first;;
4816 2) pos=second;;
4817 3) pos=third;;
4818 *) pos="${fieldn}th";;
4819 esac
4820 echo "Your cpp writes the filename in the $pos field of the line."
4821
4822 : locate header file
4823 $cat >findhdr <<EOF
4824 $startsh
4825 wanted=\$1
4826 name=''
4827 for usrincdir in $usrinc
4828 do
4829         if test -f \$usrincdir/\$wanted; then
4830                 echo "\$usrincdir/\$wanted"
4831                 exit 0
4832         fi
4833 done
4834 awkprg='{ print \$$fieldn }'
4835 echo "#include <\$wanted>" > foo\$\$.c
4836 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4837 $grep "^[       ]*#.*\$wanted" | \
4838 while read cline; do
4839         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4840         case "\$name" in
4841         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4842         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4843         *) exit 2;;
4844         esac;
4845 done;
4846 #
4847 # status = 0: grep returned 0 lines, case statement not executed
4848 # status = 1: headerfile found
4849 # status = 2: while loop executed, no headerfile found
4850 #
4851 status=\$?
4852 $rm -f foo\$\$.c;
4853 if test \$status -eq 1; then
4854         exit 0;
4855 fi
4856 exit 1
4857 EOF
4858 chmod +x findhdr
4859
4860 : define an alternate in-header-list? function
4861 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4862 cont=true; xxf="echo \"<\$1> found.\" >&4";
4863 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4864 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4865 esac;
4866 case $# in 4) instead=instead;; *) instead="at last";; esac;
4867 while $test "$cont"; do
4868         xxx=`./findhdr $1`
4869         var=$2; eval "was=\$$2";
4870         if $test "$xxx" && $test -r "$xxx";
4871         then eval $xxf;
4872         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4873                 cont="";
4874         else eval $xxnf;
4875         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4876         set $yyy; shift; shift; yyy=$@;
4877         case $# in 0) cont="";;
4878         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4879                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4880         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4881                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4882         esac;
4883 done;
4884 while $test "$yyy";
4885 do set $yyy; var=$2; eval "was=\$$2";
4886         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4887         set $yyy; shift; shift; yyy=$@;
4888 done'
4889
4890 : see if inttypes.h is available
4891 : we want a real compile instead of Inhdr because some systems
4892 : have an inttypes.h which includes non-existent headers
4893 echo " "
4894 $cat >try.c <<EOCP
4895 #include <inttypes.h>
4896 int main() {
4897         static int32_t foo32 = 0x12345678;
4898 }
4899 EOCP
4900 set try
4901 if eval $compile; then
4902         echo "<inttypes.h> found." >&4
4903         val="$define"
4904 else
4905         echo "<inttypes.h> NOT found." >&4
4906         val="$undef"
4907 fi
4908 $rm -f try.c try
4909 set i_inttypes
4910 eval $setvar
4911
4912 : check for int64_t
4913 echo " "
4914 echo "Checking to see if you have int64_t..." >&4
4915 $cat >try.c <<EOCP
4916 #include <sys/types.h>
4917 #$i_inttypes I_INTTYPES
4918 #ifdef I_INTTYPES
4919 #include <inttypes.h>
4920 #endif
4921 int main() { int64_t x = 7; }
4922 EOCP
4923 set try
4924 if eval $compile; then
4925         val="$define"
4926         echo "You have int64_t."
4927 else
4928         val="$undef"
4929         echo "You do not have int64_t."
4930 fi
4931 $rm -f try try.*
4932 set d_int64_t
4933 eval $setvar
4934
4935
4936 echo " "
4937 echo "Checking which 64-bit integer type we could use..." >&4
4938
4939 case "$intsize" in
4940 8) val=int
4941    set quadtype
4942    eval $setvar
4943    val='"unsigned int"'
4944    set uquadtype
4945    eval $setvar
4946    quadkind=1
4947    ;;
4948 *) case "$longsize" in
4949    8) val=long
4950       set quadtype
4951       eval $setvar
4952       val='"unsigned long"'
4953       set uquadtype
4954       eval $setvar
4955       quadkind=2
4956       ;;
4957    *) case "$d_longlong:$longlongsize" in
4958       define:8)
4959         val='"long long"'
4960         set quadtype
4961         eval $setvar
4962         val='"unsigned long long"'
4963         set uquadtype
4964         eval $setvar
4965         quadkind=3
4966         ;;
4967       *) case "$d_int64_t" in
4968          define)
4969            val=int64_t
4970            set quadtype
4971            eval $setvar
4972            val=uint64_t
4973            set uquadtype
4974            eval $setvar
4975            quadkind=4
4976            ;;
4977          esac
4978          ;;
4979       esac
4980       ;;
4981    esac
4982    ;;
4983 esac
4984
4985 case "$quadtype" in
4986 '')     echo "Alas, no 64-bit integer types in sight." >&4
4987         d_quad="$undef"
4988         ;;
4989 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
4990         d_quad="$define"
4991         ;;
4992 esac
4993
4994
4995 case "$uselonglong" in
4996 "$define"|true|[yY]*)
4997         cat <<EOM >&4
4998
4999 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
5000 EOM
5001         use64bitint="$define"
5002         ;;
5003 esac                          
5004 case "$use64bits" in
5005 "$define"|true|[yY]*)
5006         cat <<EOM >&4
5007
5008 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
5009 EOM
5010         use64bitint="$define"
5011         ;;
5012 esac                          
5013 case "$use64bitints" in
5014 "$define"|true|[yY]*)
5015         cat <<EOM >&4
5016
5017 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
5018 EOM
5019         use64bitint="$define"
5020         ;;
5021 esac                          
5022 case "$use64bitsint" in
5023 "$define"|true|[yY]*)
5024         cat <<EOM >&4
5025
5026 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
5027 EOM
5028         use64bitint="$define"
5029         ;;
5030 esac                          
5031 case "$uselonglongs" in
5032 "$define"|true|[yY]*)
5033         cat <<EOM >&4
5034
5035 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
5036 EOM
5037         use64bitint="$define"
5038         ;;
5039 esac                          
5040 case "$use64bitsall" in
5041 "$define"|true|[yY]*)
5042         cat <<EOM >&4
5043
5044 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
5045 EOM
5046         use64bitall="$define"
5047         ;;
5048 esac                          
5049
5050 case "$ccflags" in
5051 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
5052 esac
5053 case "$use64bitall" in
5054 "$define"|true|[yY]*) use64bitint="$define" ;;
5055 esac
5056
5057 case "$longsize" in
5058 8) cat <<EOM
5059
5060 You have natively 64-bit long integers.
5061 EOM
5062    val="$define"
5063    ;;
5064 *) case "$use64bitint" in
5065    "$define"|true|[yY]*) dflt='y';;
5066    *) dflt='n';;
5067    esac
5068    case "$d_quad" in
5069    "$define") ;;
5070    *) dflt='n' ;;
5071    esac
5072    cat <<EOM
5073
5074 Perl can be built to take advantage of 64-bit integer types
5075 on some systems.  To do so, Configure can be run with -Duse64bitint.
5076 Choosing this option will most probably introduce binary incompatibilities.
5077
5078 If this doesn't make any sense to you, just accept the default '$dflt'.
5079 (The default has been chosen based on your configuration.)
5080 EOM
5081    rp='Try to use 64-bit integers, if available?'
5082    . ./myread
5083    case "$ans" in
5084    [yY]*) val="$define" ;;
5085    *)     val="$undef"  ;;
5086    esac
5087    ;;
5088 esac
5089 set use64bitint
5090 eval $setvar
5091
5092 case "$use64bitall" in
5093 "$define"|true|[yY]*) dflt='y' ;;
5094 *) case "$longsize" in
5095    8) dflt='y' ;;
5096    *) dflt='n' ;;
5097    esac
5098    ;;
5099 esac    
5100 cat <<EOM
5101
5102 You may also choose to try maximal 64-bitness.  It means using as much
5103 64-bitness as possible on the platform.  This in turn means even more
5104 binary incompatibilities.  On the other hand, your platform may not
5105 have any more 64-bitness available than what you already have chosen.
5106
5107 If this doesn't make any sense to you, just accept the default '$dflt'.
5108 (The default has been chosen based on your configuration.)
5109 EOM
5110 rp='Try to use maximal 64-bit support, if available?'
5111 . ./myread
5112 case "$ans" in
5113 [yY]*) val="$define" ;;
5114 *)     val="$undef"  ;;
5115 esac
5116 set use64bitall
5117 eval $setvar
5118 case "$use64bitall" in
5119 "$define")
5120         case "$use64bitint" in
5121         "$undef")
5122                 cat <<EOM
5123
5124 Since you have chosen a maximally 64-bit build, I'm also turning on
5125 the use of 64-bit integers.
5126 EOM
5127                 use64bitint="$define" ;;
5128         esac
5129         ;;
5130 esac
5131
5132 case "$use64bitall" in
5133 "$define"|true|[yY]*)
5134         case "$ptrsize" in
5135         4)      cat <<EOM >&4
5136
5137 *** You have chosen a maximally 64-bit build, but your pointers
5138 *** are only 4 bytes wide, disabling maximal 64-bitness.
5139
5140 EOM
5141                 use64bitall="$undef"
5142                 case "$use64bitint" in
5143                 "$define"|true|[yY]*) ;;
5144                 *)      cat <<EOM >&4
5145
5146 *** Downgrading from maximal 64-bitness to using 64-bit integers.
5147
5148 EOM
5149                         use64bitint="$define"
5150                         ;;
5151                 esac
5152                 ;;
5153         esac
5154         ;;
5155 esac
5156
5157 case "$use64bitint" in
5158 "$define"|true|[yY]*)
5159 : Look for a hint-file generated 'call-back-unit'.  If the
5160 : user has specified that a 64-bit perl is to be built,
5161 : we may need to set or change some other defaults.
5162         if $test -f use64bitint.cbu; then
5163                 echo "Your platform has some specific hints for 64-bit integers, using them..."
5164                 . ./use64bitint.cbu
5165         fi
5166         case "$longsize" in
5167         4) case "$archname64" in
5168            '') archname64=64int ;;
5169            esac
5170            ;;
5171         esac
5172         ;;
5173 esac
5174
5175 case "$use64bitall" in
5176 "$define"|true|[yY]*)
5177 : Look for a hint-file generated 'call-back-unit'.  If the
5178 : user has specified that a maximally 64-bit perl is to be built,
5179 : we may need to set or change some other defaults.
5180         if $test -f use64bitall.cbu; then
5181                 echo "Your platform has some specific hints for 64-bit builds, using them..."
5182                 . ./use64bitall.cbu
5183         fi
5184         case "$longsize" in
5185         4) case "$archname64" in
5186            ''|64int) archname64=64all ;;
5187            esac
5188            ;;
5189         esac
5190         ;;
5191 esac
5192
5193 echo " "
5194 echo "Checking for GNU C Library..." >&4
5195 cat >try.c <<EOM
5196 #include <stdio.h>
5197 int main()
5198 {
5199 #ifdef __GLIBC__
5200     exit(0);
5201 #else
5202     exit(1);
5203 #endif
5204 }
5205 EOM
5206 set try
5207 if eval $compile_ok && $run ./try; then
5208         val="$define"
5209         echo "You are using the GNU C Library"
5210 else
5211         val="$undef"
5212         echo "You are not using the GNU C Library"
5213 fi
5214 $rm -f try try.*
5215 set d_gnulibc
5216 eval $setvar
5217
5218 : see if nm is to be used to determine whether a symbol is defined or not
5219 case "$usenm" in
5220 '')
5221         dflt=''
5222         case "$d_gnulibc" in
5223         "$define")
5224                 echo " "
5225                 echo "nm probably won't work on the GNU C Library." >&4
5226                 dflt=n
5227                 ;;
5228         esac
5229         case "$dflt" in
5230         '') 
5231                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5232                         echo " "
5233                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5234                         echo "'nm' won't be sufficient on this sytem." >&4
5235                         dflt=n
5236                 fi
5237                 ;;
5238         esac
5239         case "$dflt" in
5240         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5241                 if $test $dflt -gt 20; then
5242                         dflt=y
5243                 else
5244                         dflt=n
5245                 fi
5246                 ;;
5247         esac
5248         ;;
5249 *)
5250         case "$usenm" in
5251         true|$define) dflt=y;;
5252         *) dflt=n;;
5253         esac
5254         ;;
5255 esac
5256 $cat <<EOM
5257
5258 I can use $nm to extract the symbols from your C libraries. This
5259 is a time consuming task which may generate huge output on the disk (up
5260 to 3 megabytes) but that should make the symbols extraction faster. The
5261 alternative is to skip the 'nm' extraction part and to compile a small
5262 test program instead to determine whether each symbol is present. If
5263 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5264 this may be the best solution.
5265
5266 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5267
5268 EOM
5269 rp="Shall I use $nm to extract C symbols from the libraries?"
5270 . ./myread
5271 case "$ans" in
5272 [Nn]*) usenm=false;;
5273 *) usenm=true;;
5274 esac
5275
5276 runnm=$usenm
5277 case "$reuseval" in
5278 true) runnm=false;;
5279 esac
5280
5281 : nm options which may be necessary
5282 case "$nm_opt" in
5283 '') if $test -f /mach_boot; then
5284                 nm_opt=''       # Mach
5285         elif $test -d /usr/ccs/lib; then
5286                 nm_opt='-p'     # Solaris (and SunOS?)
5287         elif $test -f /dgux; then
5288                 nm_opt='-p'     # DG-UX
5289         elif $test -f /lib64/rld; then
5290                 nm_opt='-p'     # 64-bit Irix
5291         else
5292                 nm_opt=''
5293         fi;;
5294 esac
5295
5296 : nm options which may be necessary for shared libraries but illegal
5297 : for archive libraries.  Thank you, Linux.
5298 case "$nm_so_opt" in
5299 '')     case "$myuname" in
5300         *linux*)
5301                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5302                         nm_so_opt='--dynamic'
5303                 fi
5304                 ;;
5305         esac
5306         ;;
5307 esac
5308
5309 case "$runnm" in
5310 true)
5311 : get list of predefined functions in a handy place
5312 echo " "
5313 case "$libc" in
5314 '') libc=unknown
5315         case "$libs" in
5316         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5317         esac
5318         ;;
5319 esac
5320 case "$libs" in
5321 '') ;;
5322 *)  for thislib in $libs; do
5323         case "$thislib" in
5324         -lc|-lc_s)
5325                 : Handle C library specially below.
5326                 ;;
5327         -l*)
5328                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5329                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5330                         :
5331                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5332                         :
5333                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5334                         :
5335                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5336                         :
5337                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5338                         :
5339                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5340                         :
5341                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5342                         :
5343                 else
5344                         try=''
5345                 fi
5346                 libnames="$libnames $try"
5347                 ;;
5348         *) libnames="$libnames $thislib" ;;
5349         esac
5350         done
5351         ;;
5352 esac
5353 xxx=normal
5354 case "$libc" in
5355 unknown)
5356         set /lib/libc.$so
5357         for xxx in $libpth; do
5358                 $test -r $1 || set $xxx/libc.$so
5359                 : The messy sed command sorts on library version numbers.
5360                 $test -r $1 || \
5361                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5362                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5363                                 h
5364                                 s/[0-9][0-9]*/0000&/g
5365                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5366                                 G
5367                                 s/\n/ /' | \
5368                          $sort | $sed -e 's/^.* //'`
5369                 eval set \$$#
5370         done
5371         $test -r $1 || set /usr/ccs/lib/libc.$so
5372         $test -r $1 || set /lib/libsys_s$_a
5373         ;;
5374 *)
5375         set blurfl
5376         ;;
5377 esac
5378 if $test -r "$1"; then
5379         echo "Your (shared) C library seems to be in $1."
5380         libc="$1"
5381 elif $test -r /lib/libc && $test -r /lib/clib; then
5382         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5383         xxx=apollo
5384         libc='/lib/clib /lib/libc'
5385         if $test -r /lib/syslib; then
5386                 echo "(Your math library is in /lib/syslib.)"
5387                 libc="$libc /lib/syslib"
5388         fi
5389 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5390         echo "Your C library seems to be in $libc, as you said before."
5391 elif $test -r $incpath/usr/lib/libc$_a; then
5392         libc=$incpath/usr/lib/libc$_a;
5393         echo "Your C library seems to be in $libc.  That's fine."
5394 elif $test -r /lib/libc$_a; then
5395         libc=/lib/libc$_a;
5396         echo "Your C library seems to be in $libc.  You're normal."
5397 else
5398         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5399                 :
5400         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5401                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5402         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5403                 :
5404         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5405                 :
5406         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5407                 :
5408         else
5409                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5410         fi
5411         if $test -r "$tans"; then
5412                 echo "Your C library seems to be in $tans, of all places."
5413                 libc=$tans
5414         else
5415                 libc='blurfl'
5416         fi
5417 fi
5418 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5419         dflt="$libc"
5420         cat <<EOM
5421
5422 If the guess above is wrong (which it might be if you're using a strange
5423 compiler, or your machine supports multiple models), you can override it here.
5424
5425 EOM
5426 else
5427         dflt=''
5428         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
5429         cat >&4 <<EOM
5430 I can't seem to find your C library.  I've looked in the following places:
5431
5432 EOM
5433         $sed 's/^/      /' libpath
5434         cat <<EOM
5435
5436 None of these seems to contain your C library. I need to get its name...
5437
5438 EOM
5439 fi
5440 fn=f
5441 rp='Where is your C library?'
5442 . ./getfile
5443 libc="$ans"
5444
5445 echo " "
5446 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
5447 set X `cat libnames`
5448 shift
5449 xxx=files
5450 case $# in 1) xxx=file; esac
5451 echo "Extracting names from the following $xxx for later perusal:" >&4
5452 echo " "
5453 $sed 's/^/      /' libnames >&4
5454 echo " "
5455 $echo $n "This may take a while...$c" >&4
5456
5457 for file in $*; do
5458         case $file in
5459         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5460         *) $nm $nm_opt $file 2>/dev/null;;
5461         esac
5462 done >libc.tmp
5463
5464 $echo $n ".$c"
5465 $grep fprintf libc.tmp > libc.ptf
5466 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5467 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5468 xxx='[ADTSIW]'
5469 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5470         eval $xscan;\
5471         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5472                 eval $xrun
5473 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5474         eval $xscan;\
5475         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5476                 eval $xrun
5477 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5478         eval $xscan;\
5479         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5480                 eval $xrun
5481 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5482         eval $xscan;\
5483         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5484                 eval $xrun
5485 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5486         eval $xscan;\
5487         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5488                 eval $xrun
5489 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5490         eval $xscan;\
5491         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5492                 eval $xrun
5493 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5494                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5495         eval $xscan;\
5496         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5497                 eval $xrun
5498 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5499         eval $xscan;\
5500         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5501                 eval $xrun
5502 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5503         eval $xscan;\
5504         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5505                 eval $xrun
5506 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5507         eval $xscan;\
5508         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5509                 eval $xrun
5510 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5511         eval $xscan;\
5512         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5513                 eval $xrun
5514 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5515         eval $xscan;\
5516         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5517                 eval $xrun
5518 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5519         eval $xscan;\
5520         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5521                 eval $xrun
5522 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5523         eval $xscan;\
5524         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5525                 eval $xrun
5526 else
5527         $nm -p $* 2>/dev/null >libc.tmp
5528         $grep fprintf libc.tmp > libc.ptf
5529         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5530                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5531         then
5532                 nm_opt='-p'
5533                 eval $xrun
5534         else
5535                 echo " "
5536                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5537                 com=''
5538                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5539                         for thisname in $libnames $libc; do
5540                                 $ar t $thisname >>libc.tmp
5541                         done
5542                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5543                         echo "Ok." >&4
5544                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5545                         # Repeat libc to extract forwarders to DLL entries too
5546                         for thisname in $libnames $libc; do
5547                                 $ar tv $thisname >>libc.tmp
5548                                 # Revision 50 of EMX has bug in $ar.
5549                                 # it will not extract forwarders to DLL entries
5550                                 # Use emximp which will extract exactly them.
5551                                 emximp -o tmp.imp $thisname \
5552                                     2>/dev/null && \
5553                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5554                                     < tmp.imp >>libc.tmp
5555                                 $rm tmp.imp
5556                         done
5557                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5558                         echo "Ok." >&4
5559                 else
5560                         echo "$ar didn't seem to work right." >&4
5561                         echo "Maybe this is a Cray...trying bld instead..." >&4
5562                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5563                         then
5564                                 for thisname in $libnames; do
5565                                         bld t $libnames | \
5566                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5567                                         $ar t $thisname >>libc.tmp
5568                                 done
5569                                 echo "Ok." >&4
5570                         else
5571                                 echo "That didn't work either.  Giving up." >&4
5572                                 exit 1
5573                         fi
5574                 fi
5575         fi
5576 fi
5577 nm_extract="$com"
5578 if $test -f /lib/syscalls.exp; then
5579         echo " "
5580         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5581         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' /lib/syscalls.exp >>libc.list
5582 fi
5583 ;;
5584 esac
5585 $rm -f libnames libpath
5586
5587 : is a C symbol defined?
5588 csym='tlook=$1;
5589 case "$3" in
5590 -v) tf=libc.tmp; tc=""; tdc="";;
5591 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5592 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5593 esac;
5594 tx=yes;
5595 case "$reuseval-$4" in
5596 true-) ;;
5597 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5598 esac;
5599 case "$tx" in
5600 yes)
5601         case "$runnm" in
5602         true)
5603                 if $contains $tlook $tf >/dev/null 2>&1;
5604                 then tval=true;
5605                 else tval=false;
5606                 fi;;
5607         *)
5608                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5609                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
5610                 then tval=true;
5611                 else tval=false;
5612                 fi;
5613                 $rm -f t t.c;;
5614         esac;;
5615 *)
5616         case "$tval" in
5617         $define) tval=true;;
5618         *) tval=false;;
5619         esac;;
5620 esac;
5621 eval "$2=$tval"'
5622
5623 : define an is-in-libc? function
5624 inlibc='echo " "; td=$define; tu=$undef;
5625 sym=$1; var=$2; eval "was=\$$2";
5626 tx=yes;
5627 case "$reuseval$was" in
5628 true) ;;
5629 true*) tx=no;;
5630 esac;
5631 case "$tx" in
5632 yes)
5633         set $sym tres -f;
5634         eval $csym;
5635         case "$tres" in
5636         true)
5637                 echo "$sym() found." >&4;
5638                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5639         *)
5640                 echo "$sym() NOT found." >&4;
5641                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5642         esac;;
5643 *)
5644         case "$was" in
5645         $define) echo "$sym() found." >&4;;
5646         *) echo "$sym() NOT found." >&4;;
5647         esac;;
5648 esac'
5649
5650 : see if sqrtl exists
5651 set sqrtl d_sqrtl
5652 eval $inlibc
5653
5654 case "$ccflags" in
5655 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5656 esac
5657
5658 case "$uselongdouble" in
5659 $define|true|[yY]*)     dflt='y';;
5660 *) dflt='n';;
5661 esac
5662 cat <<EOM
5663
5664 Perl can be built to take advantage of long doubles which
5665 (if available) may give more accuracy and range for floating point numbers.
5666
5667 If this doesn't make any sense to you, just accept the default '$dflt'.
5668 EOM
5669 rp='Try to use long doubles if available?'
5670 . ./myread
5671 case "$ans" in
5672 y|Y)    val="$define"   ;;
5673 *)      val="$undef"    ;;
5674 esac
5675 set uselongdouble
5676 eval $setvar
5677
5678 case "$uselongdouble" in
5679 true|[yY]*) uselongdouble="$define" ;;
5680 esac
5681
5682 case "$uselongdouble" in
5683 $define)
5684 : Look for a hint-file generated 'call-back-unit'.  If the
5685 : user has specified that long doubles should be used,
5686 : we may need to set or change some other defaults.
5687         if $test -f uselongdouble.cbu; then
5688                 echo "Your platform has some specific hints for long doubles, using them..."
5689                 . ./uselongdouble.cbu
5690         else
5691                 $cat <<EOM
5692 (Your platform doesn't have any specific hints for long doubles.)
5693 EOM
5694         fi
5695         ;;
5696 esac
5697
5698 case "$uselongdouble:$d_sqrtl" in
5699 $define:$undef)
5700                 $cat <<EOM >&4
5701
5702 *** You requested the use of long doubles but you do not seem to have
5703 *** the mathematic functions for long doubles.  I'm disabling the use
5704 *** of long doubles.
5705
5706 EOM
5707         uselongdouble=$undef
5708         ;;
5709 esac
5710
5711 : check for length of double
5712 echo " "
5713 case "$doublesize" in
5714 '')
5715         echo "Checking to see how big your double precision numbers are..." >&4
5716         $cat >try.c <<'EOCP'
5717 #include <stdio.h>
5718 int main()
5719 {
5720     printf("%d\n", (int)sizeof(double));
5721     exit(0);
5722 }
5723 EOCP
5724         set try
5725         if eval $compile_ok; then
5726                 doublesize=`$run ./try`
5727                 echo "Your double is $doublesize bytes long."
5728         else
5729                 dflt='8'
5730                 echo "(I can't seem to compile the test program.  Guessing...)"
5731                 rp="What is the size of a double precision number (in bytes)?"
5732                 . ./myread
5733                 doublesize="$ans"
5734         fi
5735         ;;
5736 esac
5737 $rm -f try.c try
5738
5739 : check for long doubles
5740 echo " "
5741 echo "Checking to see if you have long double..." >&4
5742 echo 'int main() { long double x = 7.0; }' > try.c
5743 set try
5744 if eval $compile; then
5745         val="$define"
5746         echo "You have long double."
5747 else
5748         val="$undef"
5749         echo "You do not have long double."
5750 fi
5751 $rm try.*
5752 set d_longdbl
5753 eval $setvar
5754
5755 : check for length of long double
5756 case "${d_longdbl}${longdblsize}" in
5757 $define)
5758         echo " "
5759         echo "Checking to see how big your long doubles are..." >&4
5760         $cat >try.c <<'EOCP'
5761 #include <stdio.h>
5762 int main()
5763 {
5764         printf("%d\n", sizeof(long double));
5765 }
5766 EOCP
5767         set try
5768         set try
5769         if eval $compile; then
5770                 longdblsize=`$run ./try`
5771                 echo "Your long doubles are $longdblsize bytes long."
5772         else
5773                 dflt='8'
5774                 echo " "
5775                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5776                 rp="What is the size of a long double (in bytes)?"
5777                 . ./myread
5778                 longdblsize="$ans"
5779         fi
5780         if $test "X$doublesize" = "X$longdblsize"; then
5781                 echo "(That isn't any different from an ordinary double.)"
5782         fi      
5783         ;;
5784 esac
5785 $rm -f try.* try
5786
5787 case "$useperlio" in
5788 $define|true|[yY]*|'')  dflt='y';;
5789 *) dflt='n';;
5790 esac
5791 cat <<EOM
5792
5793 Previous version of $package used the standard IO mechanisms as
5794 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
5795 alternate IO mechanisms via the PerlIO abstraction layer, but the
5796 stdio mechanism is still available if needed.  The abstraction layer
5797 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
5798 Using PerlIO with sfio may cause problems with some extension modules.
5799
5800 If this doesn't make any sense to you, just accept the default '$dflt'.
5801 EOM
5802 rp='Use the PerlIO abstraction layer?'
5803 . ./myread
5804 case "$ans" in
5805 y|Y) 
5806         val="$define"
5807         ;;
5808 *)      
5809         echo "Ok, doing things the stdio way."
5810         val="$undef"
5811         ;;
5812 esac
5813 set useperlio
5814 eval $setvar 
5815
5816 case "$usesocks" in
5817 $define|true|[yY]*)
5818         case "$useperlio" in
5819         $define|true|[yY]*) ;;
5820         *)      cat >&4 <<EOM
5821
5822 You are using the SOCKS proxy protocol library which means that you
5823 should also use the PerlIO layer.  You may be headed for trouble.
5824
5825 EOM
5826                 ;;
5827         esac
5828         ;;
5829 esac
5830
5831         
5832 : determine the architecture name
5833 echo " "
5834 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5835         tarch=`arch`"-$osname"
5836 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5837         if uname -m > tmparch 2>&1 ; then
5838                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5839                         -e 's/$/'"-$osname/" tmparch`
5840         else
5841                 tarch="$osname"
5842         fi
5843         $rm -f tmparch
5844 else
5845         tarch="$osname"
5846 fi
5847 case "$myarchname" in
5848 ''|"$tarch") ;;
5849 *)
5850         echo "(Your architecture name used to be $myarchname.)"
5851         archname=''
5852         ;;
5853 esac
5854 case "$targetarch" in
5855 '') ;;
5856 *)  archname=`echo $targetarch|sed 's,^[^-]*-,,'` ;;
5857 esac
5858 myarchname="$tarch"
5859 case "$archname" in
5860 '') dflt="$tarch";;
5861 *) dflt="$archname";;
5862 esac
5863 rp='What is your architecture name'
5864 . ./myread
5865 archname="$ans"
5866 case "$usethreads" in
5867 $define)
5868         echo "Threads selected." >&4
5869         case "$archname" in
5870         *-thread*) echo "...and architecture name already has -thread." >&4
5871                 ;;
5872         *)      archname="$archname-thread"
5873                 echo "...setting architecture name to $archname." >&4
5874                 ;;
5875         esac
5876         ;;
5877 esac
5878 case "$usemultiplicity" in
5879 $define)
5880         echo "Multiplicity selected." >&4
5881         case "$archname" in
5882         *-multi*) echo "...and architecture name already has -multi." >&4
5883                 ;;
5884         *)      archname="$archname-multi"
5885                 echo "...setting architecture name to $archname." >&4
5886                 ;;
5887         esac
5888         ;;
5889 esac
5890 case "$use64bitint$use64bitall" in
5891 *"$define"*)
5892         case "$archname64" in
5893         '')
5894                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5895                 ;;
5896         *)
5897                 case "$use64bitint" in
5898                 "$define") echo "64 bit integers selected." >&4 ;;
5899                 esac
5900                 case "$use64bitall" in
5901                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5902                 esac
5903                 case "$archname" in
5904                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5905                         ;;
5906                 *)      archname="$archname-$archname64"
5907                         echo "...setting architecture name to $archname." >&4
5908                         ;;
5909                 esac
5910                 ;;
5911         esac
5912 esac
5913 case "$uselongdouble" in
5914 $define)
5915         echo "Long doubles selected." >&4
5916         case "$longdblsize" in
5917         $doublesize)
5918                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5919                 ;;
5920         *)
5921                 case "$archname" in
5922                 *-ld*) echo "...and architecture name already has -ld." >&4
5923                         ;;
5924                 *)      archname="$archname-ld"
5925                         echo "...setting architecture name to $archname." >&4
5926                         ;;
5927                 esac
5928                 ;;
5929         esac
5930         ;;
5931 esac
5932 case "$useperlio" in
5933 $define)
5934         echo "Perlio selected." >&4
5935         ;;
5936 *)
5937         echo "Perlio not selected, using stdio." >&4
5938         case "$archname" in
5939         *-stdio*) echo "...and architecture name already has -stdio." >&4
5940                 ;;
5941         *)      archname="$archname-stdio"
5942                 echo "...setting architecture name to $archname." >&4
5943                 ;;
5944         esac
5945         ;;
5946 esac
5947
5948 : determine root of directory hierarchy where package will be installed.
5949 case "$prefix" in
5950 '')
5951         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5952         ;;
5953 *)
5954         dflt="$prefix"
5955         ;;
5956 esac
5957 $cat <<EOM
5958
5959 By default, $package will be installed in $dflt/bin, manual pages
5960 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5961 installation directories. Typically this is something like /usr/local.
5962 If you wish to have binaries under /usr/bin but other parts of the
5963 installation under /usr/local, that's ok: you will be prompted
5964 separately for each of the installation directories, the prefix being
5965 only used to set the defaults.
5966
5967 EOM
5968 fn=d~
5969 rp='Installation prefix to use?'
5970 . ./getfile
5971 oldprefix=''
5972 case "$prefix" in
5973 '') ;;
5974 *)
5975         case "$ans" in
5976         "$prefix") ;;
5977         *) oldprefix="$prefix";;
5978         esac
5979         ;;
5980 esac
5981 prefix="$ans"
5982 prefixexp="$ansexp"
5983
5984 case "$afsroot" in
5985 '')     afsroot=/afs ;;
5986 *)      afsroot=$afsroot ;;
5987 esac
5988
5989 : is AFS running?
5990 echo " "
5991 case "$afs" in
5992 $define|true)   afs=true ;;
5993 $undef|false)   afs=false ;;
5994 *)      if test -d $afsroot; then
5995                 afs=true
5996         else
5997                 afs=false
5998         fi
5999         ;;
6000 esac
6001 if $afs; then
6002         echo "AFS may be running... I'll be extra cautious then..." >&4
6003 else
6004         echo "AFS does not seem to be running..." >&4
6005 fi
6006
6007 : determine installation prefix for where package is to be installed.
6008 if $afs; then 
6009 $cat <<EOM
6010
6011 Since you are running AFS, I need to distinguish the directory in which
6012 files will reside from the directory in which they are installed (and from
6013 which they are presumably copied to the former directory by occult means).
6014
6015 EOM
6016         case "$installprefix" in
6017         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
6018         *) dflt="$installprefix";;
6019         esac
6020 else
6021 $cat <<EOM
6022
6023 In some special cases, particularly when building $package for distribution,
6024 it is convenient to distinguish between the directory in which files should 
6025 be installed from the directory ($prefix) in which they 
6026 will eventually reside.  For most users, these two directories are the same.
6027
6028 EOM
6029         case "$installprefix" in
6030         '') dflt=$prefix ;;
6031         *) dflt=$installprefix;;
6032         esac
6033 fi
6034 fn=d~
6035 rp='What installation prefix should I use for installing files?'
6036 . ./getfile
6037 installprefix="$ans"
6038 installprefixexp="$ansexp"
6039
6040 : set the prefixit variable, to compute a suitable default value
6041 prefixit='case "$3" in
6042 ""|none)
6043         case "$oldprefix" in
6044         "") eval "$1=\"\$$2\"";;
6045         *)
6046                 case "$3" in
6047                 "") eval "$1=";;
6048                 none)
6049                         eval "tp=\"\$$2\"";
6050                         case "$tp" in
6051                         ""|" ") eval "$1=\"\$$2\"";;
6052                         *) eval "$1=";;
6053                         esac;;
6054                 esac;;
6055         esac;;
6056 *)
6057         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
6058         case "$tp" in
6059         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
6060         /*-$oldprefix/*|\~*-$oldprefix/*)
6061                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
6062         *) eval "$1=\"\$$2\"";;
6063         esac;;
6064 esac'
6065
6066 : get the patchlevel
6067 echo " "
6068 echo "Getting the current patchlevel..." >&4
6069 if $test -r $rsrc/patchlevel.h;then
6070         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
6071         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
6072         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6073         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
6074         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
6075         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
6076        perl_patchlevel=`grep ',"DEVEL[0-9][0-9]*"' $rsrc/patchlevel.h|sed 's/[^0-9]//g'`
6077 else
6078         revision=0
6079         patchlevel=0
6080         subversion=0
6081         api_revision=0
6082         api_version=0
6083         api_subversion=0
6084         perl_patchlevel=0
6085         $echo "(You do not have patchlevel.h.  Eek.)"
6086 fi
6087 if $test -r $rsrc/.patch ; then  
6088         if $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
6089                 perl_patchlevel=`cat $rsrc/.patch`
6090         fi
6091 fi
6092 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
6093 version_patchlevel_string="version $patchlevel subversion $subversion"
6094 case "$perl_patchlevel" in
6095 0|'') ;;
6096 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
6097 esac
6098
6099 $echo "(You have $package $version_patchlevel_string.)"
6100
6101 case "$osname" in
6102 dos|vms)
6103         : XXX Should be a Configure test for double-dots in filenames.
6104         version=`echo $revision $patchlevel $subversion | \
6105                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6106         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6107                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
6108         ;;
6109 *)
6110         version=`echo $revision $patchlevel $subversion | \
6111                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6112         api_versionstring=`echo $api_revision $api_version $api_subversion | \
6113                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
6114         ;;
6115 esac
6116 : Special case the 5.005_xx maintenance series, which used 5.005
6117 : without any subversion label as a subdirectory in $sitelib
6118 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
6119         api_versionstring='5.005'
6120 fi
6121
6122 : determine installation style
6123 : For now, try to deduce it from prefix unless it is already set.
6124 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
6125 case "$installstyle" in
6126 '')     case "$prefix" in
6127                 *perl*) dflt='lib';;
6128                 *) dflt='lib/perl5' ;;
6129         esac
6130         ;;
6131 *)      dflt="$installstyle" ;;
6132 esac
6133 : Probably not worth prompting for this since we prompt for all
6134 : the directories individually, and the prompt would be too long and
6135 : confusing anyway.
6136 installstyle=$dflt
6137
6138 : determine where private library files go
6139 : Usual default is /usr/local/lib/perl5/$version.
6140 : Also allow things like /opt/perl/lib/$version, since 
6141 : /opt/perl/lib/perl5... would be redundant.
6142 : The default "style" setting is made in installstyle.U
6143 case "$installstyle" in
6144 *lib/perl5*) set dflt privlib lib/$package/$version ;;
6145 *)       set dflt privlib lib/$version ;;
6146 esac
6147 eval $prefixit
6148 $cat <<EOM
6149
6150 There are some auxiliary files for $package that need to be put into a
6151 private library directory that is accessible by everyone.
6152
6153 EOM
6154 fn=d~+
6155 rp='Pathname where the private library files will reside?'
6156 . ./getfile
6157 privlib="$ans"
6158 privlibexp="$ansexp"
6159 : Change installation prefix, if necessary.
6160 if $test X"$prefix" != X"$installprefix"; then
6161         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
6162 else
6163         installprivlib="$privlibexp"
6164 fi
6165
6166 : set the prefixup variable, to restore leading tilda escape
6167 prefixup='case "$prefixexp" in
6168 "$prefix") ;;
6169 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
6170 esac'
6171
6172 : determine where public architecture dependent libraries go
6173 set archlib archlib
6174 eval $prefixit
6175 : privlib default is /usr/local/lib/$package/$version
6176 : archlib default is /usr/local/lib/$package/$version/$archname
6177 : privlib may have an optional trailing /share.
6178 tdflt=`echo $privlib | $sed 's,/share$,,'`
6179 tdflt=$tdflt/$archname
6180 case "$archlib" in
6181 '')     dflt=$tdflt
6182         ;;
6183 *)      dflt="$archlib"
6184     ;;
6185 esac
6186 $cat <<EOM
6187
6188 $spackage contains architecture-dependent library files.  If you are
6189 sharing libraries in a heterogeneous environment, you might store
6190 these files in a separate location.  Otherwise, you can just include
6191 them with the rest of the public library files.
6192
6193 EOM
6194 fn=d+~
6195 rp='Where do you want to put the public architecture-dependent libraries?'
6196 . ./getfile
6197 archlib="$ans"
6198 archlibexp="$ansexp"
6199 if $test X"$archlib" = X"$privlib"; then
6200         d_archlib="$undef"
6201 else
6202         d_archlib="$define"
6203 fi
6204 : Change installation prefix, if necessary.
6205 if $test X"$prefix" != X"$installprefix"; then
6206         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
6207 else
6208         installarchlib="$archlibexp"
6209 fi
6210
6211
6212 : Binary compatibility with 5.005 is not possible for builds
6213 : with advanced features
6214 case "$usethreads$usemultiplicity" in
6215 *define*)
6216         bincompat5005="$undef"
6217         d_bincompat5005="$undef"
6218         ;;
6219 *)      $cat <<EOM
6220
6221 This version of Perl can be compiled for binary compatibility with 5.005.
6222 If you decide to do so, you will be able to continue using most of the
6223 extensions that were compiled for Perl 5.005.
6224
6225 EOM
6226         case "$bincompat5005$d_bincompat5005" in
6227         *"$undef"*) dflt=n ;;
6228         *) dflt=y ;;
6229         esac
6230         rp='Binary compatibility with Perl 5.005?'
6231         . ./myread
6232         case "$ans" in
6233         y*) val="$define" ;;
6234         *)  val="$undef" ;;
6235         esac
6236         set d_bincompat5005
6237         eval $setvar
6238         case "$d_bincompat5005" in
6239         "$define")
6240                 bincompat5005="$define"
6241                 ;;
6242         *)      bincompat5005="$undef"
6243                 d_bincompat5005="$undef"
6244                 ;;
6245         esac
6246         ;;
6247 esac
6248
6249
6250 : see if setuid scripts can be secure
6251 $cat <<EOM
6252
6253 Some kernels have a bug that prevents setuid #! scripts from being
6254 secure.  Some sites have disabled setuid #! scripts because of this.
6255
6256 First let's decide if your kernel supports secure setuid #! scripts.
6257 (If setuid #! scripts would be secure but have been disabled anyway,
6258 don't say that they are secure if asked.)
6259
6260 EOM
6261
6262 val="$undef"
6263 if $test -d /dev/fd; then
6264         echo "#!$ls" >reflect
6265         chmod +x,u+s reflect
6266         ./reflect >flect 2>&1
6267         if $contains "/dev/fd" flect >/dev/null; then
6268                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
6269                 val="$define"
6270         else
6271                 $cat <<EOM
6272 If you are not sure if they are secure, I can check but I'll need a
6273 username and password different from the one you are using right now.
6274 If you don't have such a username or don't want me to test, simply
6275 enter 'none'.
6276
6277 EOM
6278                 rp='Other username to test security of setuid scripts with?'
6279                 dflt='none'
6280                 . ./myread
6281                 case "$ans" in
6282                 n|none)
6283                         case "$d_suidsafe" in
6284                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
6285                                 dflt=n;;
6286                         "$undef")
6287                                 echo "Well, the $hint value is *not* secure." >&4
6288                                 dflt=n;;
6289                         *)      echo "Well, the $hint value *is* secure." >&4
6290                                 dflt=y;;
6291                         esac
6292                         ;;
6293                 *)
6294                         $rm -f reflect flect
6295                         echo "#!$ls" >reflect
6296                         chmod +x,u+s reflect
6297                         echo >flect
6298                         chmod a+w flect
6299                         echo '"su" will (probably) prompt you for '"$ans's password."
6300                         su $ans -c './reflect >flect'
6301                         if $contains "/dev/fd" flect >/dev/null; then
6302                                 echo "Okay, it looks like setuid scripts are secure." >&4
6303                                 dflt=y
6304                         else
6305                                 echo "I don't think setuid scripts are secure." >&4
6306                                 dflt=n
6307                         fi
6308                         ;;
6309                 esac
6310                 rp='Does your kernel have *secure* setuid scripts?'
6311                 . ./myread
6312                 case "$ans" in
6313                 [yY]*)  val="$define";;
6314                 *)      val="$undef";;
6315                 esac
6316         fi
6317 else
6318         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
6319         echo "(That's for file descriptors, not floppy disks.)"
6320         val="$undef"
6321 fi
6322 set d_suidsafe
6323 eval $setvar
6324
6325 $rm -f reflect flect
6326
6327 : now see if they want to do setuid emulation
6328 echo " "
6329 val="$undef"
6330 case "$d_suidsafe" in
6331 "$define")
6332         val="$undef"
6333         echo "No need to emulate SUID scripts since they are secure here." >& 4
6334         ;;
6335 *)
6336         $cat <<EOM
6337 Some systems have disabled setuid scripts, especially systems where
6338 setuid scripts cannot be secure.  On systems where setuid scripts have
6339 been disabled, the setuid/setgid bits on scripts are currently
6340 useless.  It is possible for $package to detect those bits and emulate
6341 setuid/setgid in a secure fashion.  This emulation will only work if
6342 setuid scripts have been disabled in your kernel.
6343
6344 EOM
6345         case "$d_dosuid" in
6346         "$define") dflt=y ;;
6347         *) dflt=n ;;
6348         esac
6349         rp="Do you want to do setuid/setgid emulation?"
6350         . ./myread
6351         case "$ans" in
6352         [yY]*)  val="$define";;
6353         *)      val="$undef";;
6354         esac
6355         ;;
6356 esac
6357 set d_dosuid
6358 eval $setvar
6359
6360 : see if this is a malloc.h system
6361 set malloc.h i_malloc
6362 eval $inhdr
6363
6364 : see if stdlib is available
6365 set stdlib.h i_stdlib
6366 eval $inhdr
6367
6368 : determine which malloc to compile in
6369 echo " "
6370 case "$usemymalloc" in
6371 [yY]*|true|$define)     dflt='y' ;;
6372 [nN]*|false|$undef)     dflt='n' ;;
6373 *)      case "$ptrsize" in
6374         4) dflt='y' ;;
6375         *) dflt='n' ;;
6376         esac
6377         ;;
6378 esac
6379 rp="Do you wish to attempt to use the malloc that comes with $package?"
6380 . ./myread
6381 usemymalloc="$ans"
6382 case "$ans" in
6383 y*|true)
6384         usemymalloc='y'
6385         mallocsrc='malloc.c'
6386         mallocobj="malloc$_o"
6387         d_mymalloc="$define"
6388         case "$libs" in
6389         *-lmalloc*)
6390                 : Remove malloc from list of libraries to use
6391                 echo "Removing unneeded -lmalloc from library list" >&4
6392                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6393                 shift
6394                 libs="$*"
6395                 echo "libs = $libs" >&4
6396                 ;;
6397         esac
6398         ;;
6399 *)
6400         usemymalloc='n'
6401         mallocsrc=''
6402         mallocobj=''
6403         d_mymalloc="$undef"
6404         ;;
6405 esac
6406
6407 : compute the return types of malloc and free
6408 echo " "
6409 $cat >malloc.c <<END
6410 #$i_malloc I_MALLOC
6411 #$i_stdlib I_STDLIB
6412 #include <stdio.h>
6413 #include <sys/types.h>
6414 #ifdef I_MALLOC
6415 #include <malloc.h>
6416 #endif
6417 #ifdef I_STDLIB
6418 #include <stdlib.h>
6419 #endif
6420 #ifdef TRY_MALLOC
6421 void *malloc();
6422 #endif
6423 #ifdef TRY_FREE
6424 void free();
6425 #endif
6426 END
6427 case "$malloctype" in
6428 '')
6429         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6430                 malloctype='void *'
6431         else
6432                 malloctype='char *'
6433         fi
6434         ;;
6435 esac
6436 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6437
6438 case "$freetype" in
6439 '')
6440         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6441                 freetype='void'
6442         else
6443                 freetype='int'
6444         fi
6445         ;;
6446 esac
6447 echo "Your system uses $freetype free(), it would seem." >&4
6448 $rm -f malloc.[co]
6449 $cat <<EOM
6450
6451 After $package is installed, you may wish to install various
6452 add-on modules and utilities.  Typically, these add-ons will
6453 be installed under $prefix with the rest
6454 of this package.  However, you may wish to install such add-ons
6455 elsewhere under a different prefix.
6456
6457 If you do not wish to put everything under a single prefix, that's
6458 ok.  You will be prompted for the individual locations; this siteprefix
6459 is only used to suggest the defaults.
6460
6461 The default should be fine for most people.
6462
6463 EOM
6464 fn=d~+
6465 rp='Installation prefix to use for add-on modules and utilities?'
6466 : XXX Here might be another good place for an installstyle setting.
6467 case "$siteprefix" in
6468 '') dflt=$prefix ;;
6469 *)  dflt=$siteprefix ;;
6470 esac
6471 . ./getfile
6472 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6473 oldsiteprefix=''
6474 case "$siteprefix" in
6475 '') ;;
6476 *)      case "$ans" in
6477         "$prefix") ;;
6478         *) oldsiteprefix="$prefix";;
6479         esac
6480         ;;
6481 esac
6482 siteprefix="$ans"
6483 siteprefixexp="$ansexp"
6484
6485 : determine where site specific libraries go.
6486 : Usual default is /usr/local/lib/perl5/site_perl/$version
6487 : The default "style" setting is made in installstyle.U
6488 : XXX No longer works with Prefixit stuff.
6489 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6490 case "$sitelib" in
6491 '') case "$installstyle" in
6492         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
6493         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
6494         esac
6495         ;;
6496 *)      dflt="$sitelib"
6497         ;;
6498 esac
6499 $cat <<EOM
6500
6501 The installation process will create a directory for
6502 site-specific extensions and modules.  Most users find it convenient
6503 to place all site-specific files in this directory rather than in the
6504 main distribution directory.
6505
6506 EOM
6507 fn=d~+
6508 rp='Pathname for the site-specific library files?'
6509 . ./getfile
6510 sitelib="$ans"
6511 sitelibexp="$ansexp"
6512 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6513 : Change installation prefix, if necessary.
6514 if $test X"$prefix" != X"$installprefix"; then
6515         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6516 else
6517         installsitelib="$sitelibexp"
6518 fi
6519
6520 : determine where site specific architecture-dependent libraries go.
6521 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6522 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6523 : sitelib may have an optional trailing /share.
6524 case "$sitearch" in
6525 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6526         dflt="$dflt/$archname"
6527         ;;
6528 *)      dflt="$sitearch"
6529         ;;
6530 esac
6531 set sitearch sitearch none
6532 eval $prefixit
6533 $cat <<EOM
6534
6535 The installation process will also create a directory for
6536 architecture-dependent site-specific extensions and modules.
6537
6538 EOM
6539 fn=d~+
6540 rp='Pathname for the site-specific architecture-dependent library files?'
6541 . ./getfile
6542 sitearch="$ans"
6543 sitearchexp="$ansexp"
6544 : Change installation prefix, if necessary.
6545 if $test X"$prefix" != X"$installprefix"; then
6546         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6547 else
6548         installsitearch="$sitearchexp"
6549 fi
6550
6551 $cat <<EOM
6552
6553 The installation process will also create a directory for
6554 vendor-supplied add-ons.  Vendors who supply perl with their system
6555 may find it convenient to place all vendor-supplied files in this
6556 directory rather than in the main distribution directory.  This will
6557 ease upgrades between binary-compatible maintenance versions of perl.
6558
6559 Of course you may also use these directories in whatever way you see
6560 fit.  For example, you might use them to access modules shared over a
6561 company-wide network.
6562
6563 The default answer should be fine for most people.
6564 This causes further questions about vendor add-ons to be skipped
6565 and no vendor-specific directories will be configured for perl.
6566
6567 EOM
6568 rp='Do you want to configure vendor-specific add-on directories?'
6569 case "$usevendorprefix" in
6570 define|true|[yY]*) dflt=y ;;
6571 *)      : User may have set vendorprefix directly on Configure command line.
6572         case "$vendorprefix" in
6573         ''|' ') dflt=n ;;
6574         *)      dflt=y ;;
6575         esac
6576         ;;
6577 esac
6578 . ./myread
6579 case "$ans" in
6580 [yY]*)  fn=d~+
6581         rp='Installation prefix to use for vendor-supplied add-ons?'
6582         case "$vendorprefix" in
6583         '') dflt='' ;;
6584         *)  dflt=$vendorprefix ;;
6585         esac
6586         . ./getfile
6587         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6588         oldvendorprefix=''
6589         case "$vendorprefix" in
6590         '') ;;
6591         *)      case "$ans" in
6592                 "$prefix") ;;
6593                 *) oldvendorprefix="$prefix";;
6594                 esac
6595                 ;;
6596         esac
6597         usevendorprefix="$define"
6598         vendorprefix="$ans"
6599         vendorprefixexp="$ansexp"
6600         ;;
6601 *)      usevendorprefix="$undef"
6602         vendorprefix=''
6603         vendorprefixexp=''
6604         ;;
6605 esac
6606
6607 case "$vendorprefix" in
6608 '')     d_vendorlib="$undef"
6609         vendorlib=''
6610         vendorlibexp=''
6611         ;;
6612 *)      d_vendorlib="$define"
6613         : determine where vendor-supplied modules go.
6614         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6615         case "$vendorlib" in
6616         '')
6617                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6618                 case "$installstyle" in
6619                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6620                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6621                 esac
6622                 ;;
6623         *)      dflt="$vendorlib"
6624                 ;;
6625         esac
6626         fn=d~+
6627         rp='Pathname for the vendor-supplied library files?'
6628         . ./getfile
6629         vendorlib="$ans"
6630         vendorlibexp="$ansexp"
6631         ;;
6632 esac
6633 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6634 : Change installation prefix, if necessary.
6635 if $test X"$prefix" != X"$installprefix"; then
6636         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6637 else
6638         installvendorlib="$vendorlibexp"
6639 fi
6640
6641 case "$vendorprefix" in
6642 '')     d_vendorarch="$undef"
6643         vendorarch=''
6644         vendorarchexp=''
6645         ;;
6646 *)      d_vendorarch="$define"
6647         : determine where vendor-supplied architecture-dependent libraries go.
6648         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6649         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6650         : vendorlib may have an optional trailing /share.
6651         case "$vendorarch" in
6652         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6653                 dflt="$dflt/$archname"
6654                 ;;
6655         *)      dflt="$vendorarch" ;;
6656         esac
6657         fn=d~+
6658         rp='Pathname for vendor-supplied architecture-dependent files?'
6659         . ./getfile
6660         vendorarch="$ans"
6661         vendorarchexp="$ansexp"
6662         ;;
6663 esac
6664 : Change installation prefix, if necessary.
6665 if $test X"$prefix" != X"$installprefix"; then
6666         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6667 else
6668         installvendorarch="$vendorarchexp"
6669 fi
6670
6671 : Final catch-all directories to search
6672 $cat <<EOM
6673
6674 Lastly, you can have perl look in other directories for extensions and
6675 modules in addition to those already specified.
6676 These directories will be searched after 
6677         $sitearch 
6678         $sitelib 
6679 EOM
6680 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6681 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6682 echo ' '
6683 case "$otherlibdirs" in
6684 ''|' ') dflt='none' ;;
6685 *)      dflt="$otherlibdirs" ;;
6686 esac
6687 $cat <<EOM
6688 Enter a colon-separated set of extra paths to include in perl's @INC
6689 search path, or enter 'none' for no extra paths.
6690
6691 EOM
6692
6693 rp='Colon-separated list of additional directories for perl to search?'
6694 . ./myread
6695 case "$ans" in
6696 ' '|''|none)    otherlibdirs=' ' ;;     
6697 *)      otherlibdirs="$ans" ;;
6698 esac
6699 case "$otherlibdirs" in
6700 ' ') val=$undef ;;
6701 *)      val=$define ;;
6702 esac
6703 set d_perl_otherlibdirs
6704 eval $setvar
6705
6706 : Cruising for prototypes
6707 echo " "
6708 echo "Checking out function prototypes..." >&4
6709 $cat >prototype.c <<'EOCP'
6710 int main(int argc, char *argv[]) {
6711         exit(0);}
6712 EOCP
6713 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6714         echo "Your C compiler appears to support function prototypes."
6715         val="$define"
6716 else
6717         echo "Your C compiler doesn't seem to understand function prototypes."
6718         val="$undef"
6719 fi
6720 set prototype
6721 eval $setvar
6722 $rm -f prototype*
6723
6724 case "$prototype" in
6725 "$define") ;;
6726 *)      ansi2knr='ansi2knr'
6727         echo " "
6728         cat <<EOM >&4
6729
6730 $me:  FATAL ERROR:
6731 This version of $package can only be compiled by a compiler that 
6732 understands function prototypes.  Unfortunately, your C compiler 
6733         $cc $ccflags
6734 doesn't seem to understand them.  Sorry about that.
6735
6736 If GNU cc is available for your system, perhaps you could try that instead.  
6737
6738 Eventually, we hope to support building Perl with pre-ANSI compilers.
6739 If you would like to help in that effort, please contact <perlbug@perl.org>.
6740
6741 Aborting Configure now.
6742 EOM
6743         exit 2
6744         ;;
6745 esac
6746
6747 : determine where public executables go
6748 echo " "
6749 set dflt bin bin
6750 eval $prefixit
6751 fn=d~
6752 rp='Pathname where the public executables will reside?'
6753 . ./getfile
6754 if $test "X$ansexp" != "X$binexp"; then
6755         installbin=''
6756 fi
6757 bin="$ans"
6758 binexp="$ansexp"
6759 : Change installation prefix, if necessary.
6760 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6761 if $test X"$prefix" != X"$installprefix"; then
6762         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6763 else
6764         installbin="$binexp"
6765 fi
6766
6767 : Find perl5.005 or later.
6768 echo "Looking for a previously installed perl5.005 or later... "
6769 case "$perl5" in
6770 '')     for tdir in `echo "$binexp$path_sep$PATH" | $sed "s/$path_sep/ /g"`; do
6771                 : Check if this perl is recent and can load a simple module
6772                 if $test -x $tdir/perl$exe_ext && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6773                         perl5=$tdir/perl
6774                         break;
6775                 elif $test -x $tdir/perl5$exe_ext && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6776                         perl5=$tdir/perl5
6777                         break;
6778                 fi
6779         done
6780         ;;
6781 *)      perl5="$perl5"
6782         ;;
6783 esac
6784 case "$perl5" in
6785 '')     echo "None found.  That's ok.";;
6786 *)      echo "Using $perl5." ;;
6787 esac
6788
6789 : Determine list of previous versions to include in @INC
6790 $cat > getverlist <<EOPL
6791 #!$perl5 -w
6792 use File::Basename;
6793 \$api_versionstring = "$api_versionstring";
6794 \$version = "$version";
6795 \$stem = "$sitelib_stem";
6796 \$archname = "$archname";
6797 EOPL
6798         $cat >> getverlist <<'EOPL'
6799 # Can't have leading @ because metaconfig interprets it as a command!
6800 ;@inc_version_list=();
6801 # XXX Redo to do opendir/readdir? 
6802 if (-d $stem) {
6803     chdir($stem);
6804     ;@candidates = glob("5.*");
6805 }
6806 else {
6807     ;@candidates = ();
6808 }
6809
6810 # XXX ToDo:  These comparisons must be reworked when two-digit
6811 # subversions come along, so that 5.7.10 compares as greater than
6812 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6813 # widespread that we can use the built-in version vectors rather
6814 # than reinventing them here.  For 5.6.0, however, we must
6815 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6816 foreach $d (@candidates) {
6817     if ($d lt $version) {
6818         if ($d ge $api_versionstring) {
6819             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6820         }
6821         elsif ($d ge "5.005") {
6822             unshift(@inc_version_list, grep { -d } $d);
6823         }
6824     }
6825     else {
6826         # Skip newer version.  I.e. don't look in
6827         # 5.7.0 if we're installing 5.6.1.
6828     }
6829 }
6830
6831 if (@inc_version_list) {
6832     print join(' ', @inc_version_list);
6833 }
6834 else {
6835     # Blank space to preserve value for next Configure run.
6836     print " ";
6837 }
6838 EOPL
6839 chmod +x getverlist
6840 case "$inc_version_list" in
6841 '')     if test -x "$perl5$exe_ext"; then
6842                 dflt=`$perl5 getverlist`
6843         else
6844                 dflt='none'
6845         fi
6846         ;;
6847 $undef) dflt='none' ;;
6848 *)  eval dflt=\"$inc_version_list\" ;;
6849 esac
6850 case "$dflt" in
6851 ''|' ') dflt=none ;;
6852 esac
6853 case "$dflt" in
6854 5.005) case "$bincompat5005" in
6855        $define|true|[yY]*) ;;
6856        *) dflt=none ;;
6857        esac
6858        ;;
6859 esac
6860 $cat <<'EOM'
6861
6862 In order to ease the process of upgrading, this version of perl 
6863 can be configured to use modules built and installed with earlier 
6864 versions of perl that were installed under $prefix.  Specify here
6865 the list of earlier versions that this version of perl should check.
6866 If Configure detected no earlier versions of perl installed under
6867 $prefix, then the list will be empty.  Answer 'none' to tell perl
6868 to not search earlier versions.
6869
6870 The default should almost always be sensible, so if you're not sure,
6871 just accept the default.
6872 EOM
6873
6874 rp='List of earlier versions to include in @INC?'
6875 . ./myread
6876 case "$ans" in
6877 [Nn]one|''|' ') inc_version_list=' ' ;;
6878 *) inc_version_list="$ans" ;;
6879 esac
6880 case "$inc_version_list" in
6881 ''|' ') 
6882         inc_version_list_init='0';;
6883 *)      inc_version_list_init=`echo $inc_version_list |
6884                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6885         ;;
6886 esac
6887 $rm -f getverlist
6888
6889 : determine whether to install perl also as /usr/bin/perl
6890
6891 echo " "
6892 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6893         $cat <<EOM
6894 Many scripts expect perl to be installed as /usr/bin/perl.
6895 I can install the perl you are about to compile also as /usr/bin/perl
6896 (in addition to $installbin/perl).
6897 EOM
6898         case "$installusrbinperl" in
6899         "$undef"|[nN]*) dflt='n';;
6900         *)              dflt='y';;
6901         esac
6902         rp="Do you want to install perl as /usr/bin/perl?"
6903         . ./myread
6904         case "$ans" in
6905         [yY]*)  val="$define";;
6906         *)      val="$undef" ;;
6907         esac
6908 else
6909         val="$undef"
6910 fi
6911 set installusrbinperl
6912 eval $setvar
6913
6914 : see if dld is available
6915 set dld.h i_dld
6916 eval $inhdr
6917
6918 : see if dlopen exists
6919 xxx_runnm="$runnm"
6920 runnm=false
6921 set dlopen d_dlopen
6922 eval $inlibc
6923 runnm="$xxx_runnm"
6924
6925 : determine which dynamic loading, if any, to compile in
6926 echo " "
6927 dldir="ext/DynaLoader"
6928 case "$usedl" in
6929 $define|y|true)
6930         dflt='y'
6931         usedl="$define"
6932         ;;
6933 $undef|n|false)
6934         dflt='n'
6935         usedl="$undef"
6936         ;;
6937 *) 
6938         dflt='n'
6939         case "$d_dlopen" in
6940             $define) dflt='y' ;;
6941         esac
6942         case "$i_dld" in
6943             $define) dflt='y' ;;
6944         esac
6945         : Does a dl_xxx.xs file exist for this operating system
6946         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6947         ;;
6948 esac
6949 rp="Do you wish to use dynamic loading?"
6950 . ./myread
6951 usedl="$ans"
6952 case "$ans" in
6953 y*) usedl="$define"
6954         case "$dlsrc" in
6955         '')
6956                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6957                         dflt="$dldir/dl_${osname}.xs"
6958                 elif $test "$d_dlopen" = "$define" ; then
6959                         dflt="$dldir/dl_dlopen.xs"
6960                 elif $test "$i_dld" = "$define" ; then
6961                         dflt="$dldir/dl_dld.xs"
6962                 else
6963                         dflt=''
6964                 fi
6965                 ;;
6966         *)      dflt="$dldir/$dlsrc"
6967                 ;;
6968         esac
6969     echo "The following dynamic loading files are available:"
6970         : Can not go over to $dldir because getfile has path hard-coded in.
6971         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6972         rp="Source file to use for dynamic loading"
6973         fn="fne"
6974         gfpth="$src"
6975         . ./getfile
6976         usedl="$define"
6977         : emulate basename
6978         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6979
6980         $cat << EOM
6981
6982 Some systems may require passing special flags to $cc -c to
6983 compile modules that will be used to create a shared library.
6984 To use no flags, say "none".
6985
6986 EOM
6987     case "$cccdlflags" in
6988     '') case "$gccversion" in
6989                 '') case "$osname" in
6990                         hpux)   dflt='+z' ;;
6991                         next)   dflt='none' ;;
6992                         irix*)  dflt='-KPIC' ;;
6993                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6994                         sunos)  dflt='-pic' ;;
6995                         *)      dflt='none' ;;
6996                     esac
6997                         ;;
6998                 *)  case "$osname" in
6999                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
7000                         *)      dflt='-fpic' ;;
7001                     esac ;;
7002             esac ;;
7003         ' ') dflt='none' ;;
7004     *)  dflt="$cccdlflags" ;;
7005     esac
7006     rp="Any special flags to pass to $cc -c to compile shared library modules?"
7007     . ./myread
7008     case "$ans" in
7009     none) cccdlflags=' ' ;;
7010     *) cccdlflags="$ans" ;;
7011     esac
7012
7013     cat << EOM
7014
7015 Some systems use ld to create libraries that can be dynamically loaded,
7016 while other systems (such as those using ELF) use $cc.
7017
7018 EOM
7019         case "$ld" in
7020         '')     $cat >try.c <<'EOM'
7021 /* Test for whether ELF binaries are produced */
7022 #include <fcntl.h>
7023 #include <stdlib.h>
7024 int main() {
7025         char b[4];
7026         int i = open("a.out",O_RDONLY);
7027         if(i == -1) 
7028                 exit(1); /* fail */
7029         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
7030                 exit(0); /* succeed (yes, it's ELF) */
7031         else
7032                 exit(1); /* fail */
7033 }
7034 EOM
7035                 if $cc $ccflags $ldflags try.c >/dev/null 2>&1 && $run ./a.out; then
7036                         cat <<EOM
7037 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
7038 EOM
7039                         dflt="$cc"
7040                 else
7041                         echo "I'll use ld to build dynamic libraries."
7042                         dflt='ld'
7043                 fi
7044                 rm -f try.c a.out
7045                 ;;
7046         *)      dflt="$ld"
7047                 ;;
7048         esac
7049
7050     rp="What command should be used to create dynamic libraries?"
7051     . ./myread
7052         ld="$ans"
7053
7054     cat << EOM
7055
7056 Some systems may require passing special flags to $ld to create a
7057 library that can be dynamically loaded.  If your ld flags include
7058 -L/other/path options to locate libraries outside your loader's normal
7059 search path, you may need to specify those -L options here as well.  To
7060 use no flags, say "none".
7061
7062 EOM
7063     case "$lddlflags" in
7064     '') case "$osname" in
7065                         beos) dflt='-nostart' ;;
7066                         hpux) dflt='-b';
7067                               case "$gccversion" in
7068                               '') dflt="$dflt +vnocompatwarnings" ;;
7069                               esac
7070                               ;;        
7071                         linux|irix*)    dflt='-shared' ;;
7072                         next)  dflt='none' ;;
7073                         solaris) dflt='-G' ;;
7074                         sunos) dflt='-assert nodefinitions' ;;
7075                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
7076                 *)     dflt='none' ;;
7077                         esac
7078                         ;;
7079     *) dflt="$lddlflags" ;;
7080     esac
7081
7082         : Try to guess additional flags to pick up local libraries.
7083         : Be careful not to append to a plain 'none'
7084         case "$dflt" in
7085         none) dflt='' ;;
7086         esac
7087         for thisflag in $ldflags; do
7088                 case "$thisflag" in
7089                 -L*|-R*)
7090                         case " $dflt " in
7091                         *" $thisflag "*) ;;
7092                         *) dflt="$dflt $thisflag" ;;
7093                         esac
7094                         ;;
7095                 esac
7096         done
7097
7098         case "$dflt" in
7099         ''|' ') dflt='none' ;;
7100         esac
7101
7102     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
7103     . ./myread
7104     case "$ans" in
7105     none) lddlflags=' ' ;;
7106     *) lddlflags="$ans" ;;
7107     esac
7108
7109         cat <<EOM
7110
7111 Some systems may require passing special flags to $cc to indicate that
7112 the resulting executable will use dynamic linking.  To use no flags,
7113 say "none".
7114
7115 EOM
7116     case "$ccdlflags" in
7117     '') case "$osname" in
7118                 hpux)   dflt='-Wl,-E' ;;
7119                 linux)  dflt='-rdynamic' ;;
7120                 next)   dflt='none' ;;
7121                 sunos)  dflt='none' ;;
7122                 *)      dflt='none' ;;
7123             esac ;;
7124     ' ')  dflt='none' ;;
7125     *)  dflt="$ccdlflags" ;;
7126     esac
7127     rp="Any special flags to pass to $cc to use dynamic linking?"
7128     . ./myread
7129     case "$ans" in
7130     none) ccdlflags=' ' ;;
7131     *) ccdlflags="$ans" ;;
7132     esac
7133     ;;
7134 *)  usedl="$undef"
7135         ld='ld'
7136     dlsrc='dl_none.xs'
7137     lddlflags=''
7138     ccdlflags=''
7139     ;;
7140 esac
7141
7142 also=''
7143 case "$usedl" in
7144 $undef)
7145         # No dynamic loading being used, so don't bother even to prompt.
7146         useshrplib='false'
7147         ;;
7148 *)      case "$useshrplib" in
7149         '')     case "$osname" in
7150                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
7151                         dflt=y
7152                         also='Building a shared libperl is required for dynamic loading to work on your system.'
7153                         ;;
7154                 next*)
7155                         case "$osvers" in
7156                         4*)     dflt=y
7157                                 also='Building a shared libperl is needed for MAB support.'
7158                                 ;;
7159                         *)      dflt=n
7160                                 ;;
7161                         esac
7162                         ;;
7163                 *)      dflt=n
7164                         ;;
7165                 esac
7166                 ;;
7167         $define|true|[Yy]*)
7168                 dflt=y
7169                 ;;
7170         *)      dflt=n
7171                 ;;
7172         esac
7173         $cat << EOM
7174
7175 The perl executable is normally obtained by linking perlmain.c with
7176 libperl${_a}, any static extensions (usually just DynaLoader), and
7177 any other libraries needed on this system (such as -lm, etc.).  Since
7178 your system supports dynamic loading, it is probably possible to build
7179 a shared libperl.$so.  If you will have more than one executable linked
7180 to libperl.$so, this will significantly reduce the size of each
7181 executable, but it may have a noticeable affect on performance.  The
7182 default is probably sensible for your system.
7183 $also
7184
7185 EOM
7186         rp="Build a shared libperl.$so (y/n)"
7187         . ./myread
7188         case "$ans" in
7189         true|$define|[Yy]*)
7190                 useshrplib='true'  ;;
7191         *)      useshrplib='false' ;;
7192         esac
7193         ;;
7194 esac
7195
7196 case "$useshrplib" in
7197 true)
7198         case "$libperl" in
7199         '')
7200                 # Figure out a good name for libperl.so.  Since it gets stored in
7201                 # a version-specific architecture-dependent library, the version
7202                 # number isn't really that important, except for making cc/ld happy.
7203                 #
7204                 # A name such as libperl.so.3.1
7205                 majmin="libperl.$so.$patchlevel.$subversion"
7206                 # A name such as libperl.so.301
7207                 majonly=`echo $patchlevel $subversion |
7208                         $awk '{printf "%d%02d", $1, $2}'`
7209                 majonly=libperl.$so.$majonly
7210                 # I'd prefer to keep the os-specific stuff here to a minimum, and
7211                 # rely on figuring it out from the naming of libc.
7212                 case "${osname}${osvers}" in
7213                 next4*)
7214                         dflt=libperl.5.$so
7215                         # XXX How handle the --version stuff for MAB?
7216                         ;;
7217                 linux*)  # ld won't link with a bare -lperl otherwise.
7218                         dflt=libperl.$so
7219                         ;;
7220                 cygwin*) # include version
7221                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
7222                         ;;
7223                 *)      # Try to guess based on whether libc has major.minor.
7224                         case "$libc" in
7225                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
7226                         *libc.$so.[0-9]*) dflt=$majonly ;;
7227                         *)      dflt=libperl.$so ;;
7228                         esac
7229                         ;;
7230                 esac
7231                 ;;
7232         *)      dflt=$libperl
7233                 ;;
7234         esac
7235         cat << EOM
7236
7237 I need to select a good name for the shared libperl.  If your system uses
7238 library names with major and minor numbers, then you might want something
7239 like $majmin.  Alternatively, if your system uses a single version
7240 number for shared libraries, then you might want to use $majonly.
7241 Or, your system might be quite happy with a simple libperl.$so.
7242
7243 Since the shared libperl will get installed into a version-specific
7244 architecture-dependent directory, the version number of the shared perl
7245 library probably isn't important, so the default should be o.k.
7246
7247 EOM
7248         rp='What name do you want to give to the shared libperl?'
7249         . ./myread
7250         libperl=$ans
7251         echo "Ok, I'll use $libperl"
7252         ;;
7253 *)
7254         libperl="libperl${_a}"
7255         ;;
7256 esac
7257
7258 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
7259 case "$shrpdir" in
7260 '') ;;
7261 *)      $cat >&4 <<EOM
7262 WARNING:  Use of the shrpdir variable for the installation location of
7263 the shared $libperl is not supported.  It was never documented and
7264 will not work in this version.  Let me (perlbug@perl.org)
7265 know of any problems this may cause.
7266
7267 EOM
7268         case "$shrpdir" in
7269         "$archlibexp/CORE")
7270                 $cat >&4 <<EOM
7271 But your current setting of $shrpdir is
7272 the default anyway, so it's harmless.
7273 EOM
7274                 ;;
7275         *)
7276                 $cat >&4 <<EOM
7277 Further, your current attempted setting of $shrpdir
7278 conflicts with the value of $archlibexp/CORE
7279 that installperl will use.
7280 EOM
7281                 ;;
7282         esac
7283         ;;
7284 esac
7285
7286 # How will the perl executable find the installed shared $libperl?
7287 # Add $xxx to ccdlflags.
7288 # If we can't figure out a command-line option, use $shrpenv to
7289 # set env LD_RUN_PATH.  The main perl makefile uses this.
7290 shrpdir=$archlibexp/CORE
7291 xxx=''
7292 tmp_shrpenv=''
7293 if "$useshrplib"; then
7294     case "$osname" in 
7295         aix)
7296                 # We'll set it in Makefile.SH...
7297                 ;;
7298         solaris|netbsd)
7299                 xxx="-R $shrpdir"
7300                 ;;
7301         freebsd)
7302                 xxx="-Wl,-R$shrpdir"
7303                 ;;
7304         linux|irix*|dec_osf)
7305                 xxx="-Wl,-rpath,$shrpdir"
7306                 ;;
7307         next)
7308                 # next doesn't like the default...
7309                 ;;
7310         beos)
7311                 # beos doesn't like the default, either.
7312                 ;;
7313         hpux*)
7314                 # hpux doesn't like the default, either.
7315                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
7316                 ;;
7317         *)
7318                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
7319                 ;;
7320         esac
7321         case "$xxx" in
7322         '') ;;
7323         *)      
7324                 # Only add $xxx if it isn't already in ccdlflags.
7325                 case " $ccdlflags " in
7326                 *" $xxx "*)     ;;
7327                 *)      ccdlflags="$ccdlflags $xxx"
7328                         cat <<EOM >&4
7329
7330 Adding $xxx to the flags
7331 passed to $ld so that the perl executable will find the 
7332 installed shared $libperl.
7333
7334 EOM
7335                         ;;
7336                 esac
7337                 ;;
7338         esac
7339 fi
7340 # Fix ccdlflags in AIX for building external extensions.
7341 # (For building Perl itself bare -bE:perl.exp is needed,
7342 #  Makefile.SH takes care of this.)
7343 case "$osname" in
7344 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
7345 esac
7346 # Respect a hint or command-line value.
7347 case "$shrpenv" in
7348 '') shrpenv="$tmp_shrpenv" ;;
7349 esac
7350 case "$ldlibpthname" in
7351 '')     ldlibpthname=LD_LIBRARY_PATH ;;
7352 none)   ldlibpthname='' ;;
7353 esac
7354
7355 : determine where manual pages are on this system
7356 echo " "
7357 case "$sysman" in
7358 '') 
7359         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
7360         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
7361         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
7362         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
7363         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
7364         sysman=`./loc . /usr/man/man1 $syspath`
7365         ;;
7366 esac
7367 if $test -d "$sysman"; then
7368         echo "System manual is in $sysman." >&4
7369 else
7370         echo "Could not find manual pages in source form." >&4
7371 fi
7372
7373 : determine where manual pages go
7374 set man1dir man1dir none
7375 eval $prefixit
7376 $cat <<EOM
7377
7378 $spackage has manual pages available in source form.
7379 EOM
7380 case "$nroff" in
7381 nroff)
7382         echo "However, you don't have nroff, so they're probably useless to you."
7383         case "$man1dir" in
7384         '') man1dir="none";;
7385         esac;;
7386 esac
7387 echo "If you don't want the manual sources installed, answer 'none'."
7388 case "$man1dir" in
7389 ' ') dflt=none
7390         ;;
7391 '')
7392         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
7393         lookpath="$lookpath $prefixexp/man/p_man/man1"
7394         lookpath="$lookpath $prefixexp/man/u_man/man1"
7395         lookpath="$lookpath $prefixexp/man/man.1"
7396         case "$sysman" in
7397         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
7398         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
7399         esac
7400         set dflt
7401         eval $prefixup
7402         ;;
7403 *)  dflt="$man1dir"
7404         ;;
7405 esac
7406 echo " "
7407 fn=dn+~
7408 rp="Where do the main $spackage manual pages (source) go?"
7409 . ./getfile
7410 if $test "X$man1direxp" != "X$ansexp"; then
7411         installman1dir=''
7412 fi
7413 man1dir="$ans"
7414 man1direxp="$ansexp"
7415 case "$man1dir" in
7416 '')     man1dir=' '
7417         installman1dir='';;
7418 esac
7419
7420 : Change installation prefix, if necessary.
7421 if $test X"$prefix" != X"$installprefix"; then
7422         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
7423 else
7424         installman1dir="$man1direxp"
7425 fi
7426
7427 : What suffix to use on installed man pages
7428
7429 case "$man1dir" in
7430 ' ')
7431         man1ext='0'
7432         ;;
7433 *)
7434         rp="What suffix should be used for the main $spackage man pages?"
7435         case "$man1ext" in
7436         '')     case "$man1dir" in
7437                 *1)  dflt=1 ;;
7438                 *1p) dflt=1p ;;
7439                 *1pm) dflt=1pm ;;
7440                 *l) dflt=l;;
7441                 *n) dflt=n;;
7442                 *o) dflt=o;;
7443                 *p) dflt=p;;
7444                 *C) dflt=C;;
7445                 *L) dflt=L;;
7446                 *L1) dflt=L1;;
7447                 *) dflt=1;;
7448                 esac
7449                 ;;
7450         *)      dflt="$man1ext";;
7451         esac
7452         . ./myread
7453         man1ext="$ans"
7454         ;;
7455 esac
7456
7457 : see if we can have long filenames
7458 echo " "
7459 first=123456789abcdef
7460 $rm -f $first
7461 if (echo hi >$first) 2>/dev/null; then
7462         if $test -f 123456789abcde; then
7463                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
7464                 val="$undef"
7465         else
7466                 echo 'You can have filenames longer than 14 characters.'>&4
7467                 val="$define"
7468         fi
7469 else
7470         $cat <<'EOM'
7471 You can't have filenames longer than 14 chars.
7472 You can't even think about them!
7473 EOM
7474         val="$undef"
7475 fi 
7476 set d_flexfnam
7477 eval $setvar
7478 $rm -rf 123456789abcde*
7479
7480 : determine where library module manual pages go
7481 set man3dir man3dir none
7482 eval $prefixit
7483 $cat <<EOM
7484
7485 $spackage has manual pages for many of the library modules.
7486 EOM
7487
7488 case "$nroff" in
7489 nroff)
7490         $cat <<'EOM'
7491 However, you don't have nroff, so they're probably useless to you.
7492 EOM
7493         case "$man3dir" in
7494         '') man3dir="none";;
7495         esac;;
7496 esac
7497
7498 case "$d_flexfnam" in
7499 undef)
7500         $cat <<'EOM'
7501 However, your system can't handle the long file names like File::Basename.3. 
7502 EOM
7503         case "$man3dir" in
7504         '') man3dir="none";;
7505         esac;;
7506 esac
7507
7508 echo "If you don't want the manual sources installed, answer 'none'."
7509 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
7510 case "$man3dir" in
7511 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
7512         if $test -d "$privlib/man/man3"; then
7513                 cat <<EOM >&4
7514
7515 WARNING:  Previous versions of perl installed man3 pages into
7516 $privlib/man/man3.  This version will suggest a 
7517 new default of $dflt.  
7518 EOM
7519                 tdflt=$dflt
7520                 dflt='n'
7521                 rp='Do you wish to preserve the old behavior?(y/n)'
7522                 . ./myread
7523                 case "$ans" in
7524                 y*) dflt="$privlib/man/man3" ;;
7525                 *)  dflt=$tdflt ;;
7526                 esac
7527     fi
7528         ;;
7529 *)      dflt="$man3dir" ;;
7530 esac
7531 case "$dflt" in
7532 ' ') dflt=none ;;
7533 esac
7534 echo " "
7535 fn=dn+~
7536 rp="Where do the $package library man pages (source) go?"
7537 . ./getfile
7538 man3dir="$ans"
7539 man3direxp="$ansexp"
7540 case "$man3dir" in
7541 '')     man3dir=' '
7542         installman3dir='';;
7543 esac
7544
7545 : Change installation prefix, if necessary.
7546 if $test X"$prefix" != X"$installprefix"; then
7547         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7548 else
7549         installman3dir="$man3direxp"
7550 fi
7551
7552 : What suffix to use on installed man pages
7553 case "$man3dir" in
7554 ' ')
7555         man3ext='0'
7556         ;;
7557 *)
7558         rp="What suffix should be used for the $package library man pages?"
7559         case "$man3ext" in
7560         '')     case "$man3dir" in
7561                 *3)  dflt=3 ;;
7562                 *3p) dflt=3p ;;
7563                 *3pm) dflt=3pm ;;
7564                 *l) dflt=l;;
7565                 *n) dflt=n;;
7566                 *o) dflt=o;;
7567                 *p) dflt=p;;
7568                 *C) dflt=C;;
7569                 *L) dflt=L;;
7570                 *L3) dflt=L3;;
7571                 *) dflt=3;;
7572                 esac
7573                 ;;
7574         *)      dflt="$man3ext";;
7575         esac
7576         . ./myread
7577         man3ext="$ans"
7578         ;;
7579 esac
7580
7581 : see if we have to deal with yellow pages, now NIS.
7582 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7583         if $test -f /usr/etc/nibindd; then
7584                 echo " "
7585                 echo "I'm fairly confident you're on a NeXT."
7586                 echo " "
7587                 rp='Do you get the hosts file via NetInfo?'
7588                 dflt=y
7589                 case "$hostcat" in
7590                 nidump*) ;;
7591                 '') ;;
7592                 *) dflt=n;;
7593                 esac
7594                 . ./myread
7595                 case "$ans" in
7596                 y*) hostcat='nidump hosts .';;
7597                 *)      case "$hostcat" in
7598                         nidump*) hostcat='';;
7599                         esac
7600                         ;;
7601                 esac
7602         fi
7603         case "$hostcat" in
7604         nidump*) ;;
7605         *)
7606                 case "$hostcat" in
7607                 *ypcat*) dflt=y;;
7608                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7609                                 dflt=y
7610                         else
7611                                 dflt=n
7612                         fi;;
7613                 *) dflt=n;;
7614                 esac
7615                 echo " "
7616                 rp='Are you getting the hosts file via yellow pages?'
7617                 . ./myread
7618                 case "$ans" in
7619                 y*) hostcat='ypcat hosts';;
7620                 *) hostcat='cat /etc/hosts';;
7621                 esac
7622                 ;;
7623         esac
7624 fi
7625 case "$hostcat" in
7626 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7627 esac
7628 case "$groupcat" in
7629 '') test -f /etc/group && groupcat='cat /etc/group';;
7630 esac
7631 case "$passcat" in
7632 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7633 esac
7634
7635 : now get the host name
7636 echo " "
7637 echo "Figuring out host name..." >&4
7638 case "$myhostname" in
7639 '') cont=true
7640         echo 'Maybe "hostname" will work...'
7641         if tans=`sh -c hostname 2>&1` ; then
7642                 myhostname=$tans
7643                 phostname=hostname
7644                 cont=''
7645         fi
7646         ;;
7647 *) cont='';;
7648 esac
7649 if $test "$cont"; then
7650         if ./xenix; then
7651                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7652                 if tans=`cat /etc/systemid 2>&1` ; then
7653                         myhostname=$tans
7654                         phostname='cat /etc/systemid'
7655                         echo "Whadyaknow.  Xenix always was a bit strange..."
7656                         cont=''
7657                 fi
7658         elif $test -r /etc/systemid; then
7659                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7660         fi
7661 fi
7662 if $test "$cont"; then
7663         echo 'No, maybe "uuname -l" will work...'
7664         if tans=`sh -c 'uuname -l' 2>&1` ; then
7665                 myhostname=$tans
7666                 phostname='uuname -l'
7667         else
7668                 echo 'Strange.  Maybe "uname -n" will work...'
7669                 if tans=`sh -c 'uname -n' 2>&1` ; then
7670                         myhostname=$tans
7671                         phostname='uname -n'
7672                 else
7673                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7674                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7675                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7676                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7677                         else
7678                                 case "$myhostname" in
7679                                 '') echo "Does this machine have an identity crisis or something?"
7680                                         phostname='';;
7681                                 *)
7682                                         echo "Well, you said $myhostname before..."
7683                                         phostname='echo $myhostname';;
7684                                 esac
7685                         fi
7686                 fi
7687         fi
7688 fi
7689 : you do not want to know about this
7690 set $myhostname
7691 myhostname=$1
7692
7693 : verify guess
7694 if $test "$myhostname" ; then
7695         dflt=y
7696         rp='Your host name appears to be "'$myhostname'".'" Right?"
7697         . ./myread
7698         case "$ans" in
7699         y*) ;;
7700         *) myhostname='';;
7701         esac
7702 fi
7703
7704 : bad guess or no guess
7705 while $test "X$myhostname" = X ; do
7706         dflt=''
7707         rp="Please type the (one word) name of your host:"
7708         . ./myread
7709         myhostname="$ans"
7710 done
7711
7712 : translate upper to lower if necessary
7713 case "$myhostname" in
7714 *[A-Z]*)
7715         echo "(Normalizing case in your host name)"
7716         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7717         ;;
7718 esac
7719
7720 case "$myhostname" in
7721 *.*)
7722         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7723         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7724         echo "(Trimming domain name from host name--host name is now $myhostname)"
7725         ;;
7726 *) case "$mydomain" in
7727         '')
7728                 {
7729                         test "X$hostcat" = "Xypcat hosts" &&
7730                         ypmatch "$myhostname" hosts 2>/dev/null |\
7731                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7732                         $test -s hosts
7733                 } || {
7734                         test "X$hostcat" != "X" &&
7735                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7736                                         /[       ]$myhostname[  . ]/p" > hosts
7737                 }
7738                 tmp_re="[       . ]"
7739                 if $test -f hosts; then
7740                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7741                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7742                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7743                                 hosts | $sort | $uniq | \
7744                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7745                         case `$echo X$dflt` in
7746                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7747                                 dflt=.
7748                                 ;;
7749                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7750                                 ;;
7751                         esac
7752                 else
7753                         echo "(I cannot locate a hosts database anywhere)"
7754                         dflt=.
7755                 fi
7756                 case "$dflt" in
7757                 .)
7758                         tans=`./loc resolv.conf X /etc /usr/etc`
7759                         if $test -f "$tans"; then
7760                                 echo "(Attempting domain name extraction from $tans)"
7761                                 dflt=.`$sed -n -e 's/   / /g' \
7762                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7763                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7764                                 case "$dflt" in
7765                                 .) dflt=.`$sed -n -e 's/        / /g' \
7766                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7767                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7768                                         ;;
7769                                 esac
7770                         fi
7771                         ;;
7772                 esac
7773                 case "$dflt" in
7774                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7775                         dflt=.`sh -c domainname 2>/dev/null`
7776                         case "$dflt" in
7777                         '') dflt='.';;
7778                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7779                         esac
7780                         ;;
7781                 esac
7782                 case "$dflt$osname" in
7783                 .os390) echo "(Attempting domain name extraction from //'SYS1.TCPPARMS(TCPDATA)')"
7784                         dflt=.`awk '/^DOMAINORIGIN/ {print $2}' "//'SYS1.TCPPARMS(TCPDATA)'" 2>/dev/null`
7785                         ;;
7786                 esac
7787                 case "$dflt" in
7788                 .) echo "(Lost all hope -- silly guess then)"
7789                         dflt='.uucp'
7790                         ;;
7791                 esac
7792                 $rm -f hosts
7793                 ;;
7794         *) dflt="$mydomain";;
7795         esac;;
7796 esac
7797 echo " "
7798 rp="What is your domain name?"
7799 . ./myread
7800 tans="$ans"
7801 case "$ans" in
7802 '') ;;
7803 .*) ;;
7804 *) tans=".$tans";;
7805 esac
7806 mydomain="$tans"
7807
7808 : translate upper to lower if necessary
7809 case "$mydomain" in
7810 *[A-Z]*)
7811         echo "(Normalizing case in your domain name)"
7812         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7813         ;;
7814 esac
7815
7816 : a little sanity check here
7817 case "$phostname" in
7818 '') ;;
7819 *)
7820         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7821         $myhostname$mydomain|$myhostname) ;;
7822         *)
7823                 case "$phostname" in
7824                 sed*)
7825                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7826                         ;;
7827                 *)
7828                         echo "(That doesn't agree with your $phostname command, by the way.)"
7829                         ;;
7830                 esac
7831         ;;
7832         esac
7833         ;;
7834 esac
7835
7836 $cat <<EOM
7837
7838 I need to get your e-mail address in Internet format if possible, i.e.
7839 something like user@host.domain. Please answer accurately since I have
7840 no easy means to double check it. The default value provided below
7841 is most probably close to reality but may not be valid from outside
7842 your organization...
7843
7844 EOM
7845 cont=x
7846 while test "$cont"; do
7847         case "$cf_email" in
7848         '') dflt="$cf_by@$myhostname$mydomain";;
7849         *) dflt="$cf_email";;
7850         esac
7851         rp='What is your e-mail address?'
7852         . ./myread
7853         cf_email="$ans"
7854         case "$cf_email" in
7855         *@*.*) cont='' ;;
7856         *)
7857                 rp='Address does not look like an Internet one.  Use it anyway?'
7858                 case "$fastread" in
7859                 yes) dflt=y ;;
7860                 *) dflt=n ;;
7861                 esac
7862                 . ./myread
7863                 case "$ans" in
7864                 y*) cont='' ;;
7865                 *) echo " " ;;
7866                 esac
7867                 ;;
7868         esac
7869 done
7870
7871 $cat <<EOM
7872
7873 If you or somebody else will be maintaining perl at your site, please
7874 fill in the correct e-mail address here so that they may be contacted
7875 if necessary. Currently, the "perlbug" program included with perl
7876 will send mail to this address in addition to perlbug@perl.org. You may
7877 enter "none" for no administrator.
7878
7879 EOM
7880 case "$perladmin" in
7881 '') dflt="$cf_email";;
7882 *) dflt="$perladmin";;
7883 esac
7884 rp='Perl administrator e-mail address'
7885 . ./myread
7886 perladmin="$ans"
7887
7888 : determine whether to only install version-specific parts.
7889 echo " "
7890 $cat <<EOM
7891 Do you want to install only the version-specific parts of the perl
7892 distribution?  Usually you do *not* want to do this.
7893 EOM
7894 case "$versiononly" in
7895 "$define"|[Yy]*|true) dflt='y' ;;
7896 *) dflt='n';
7897 esac
7898 rp="Do you want to install only the version-specific parts of perl?"
7899 . ./myread
7900 case "$ans" in
7901 [yY]*)  val="$define";;
7902 *)      val="$undef" ;;
7903 esac
7904 set versiononly
7905 eval $setvar
7906
7907 : figure out how to guarantee perl startup
7908 case "$startperl" in
7909 '')
7910         case "$sharpbang" in
7911         *!)
7912                 $cat <<EOH
7913
7914 I can use the #! construct to start perl on your system. This will
7915 make startup of perl scripts faster, but may cause problems if you
7916 want to share those scripts and perl is not in a standard place
7917 ($binexp/perl) on all your platforms. The alternative is to force
7918 a shell by starting the script with a single ':' character.
7919
7920 EOH
7921                 case "$versiononly" in
7922                 "$define")      dflt="$binexp/perl$version";;  
7923                 *)              dflt="$binexp/perl";;
7924                 esac
7925                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7926                 . ./myread
7927                 case "$ans" in
7928                 none)   startperl=": # use perl";;
7929                 *)      startperl="#!$ans"
7930                         if $test 30 -lt `echo "$ans" | wc -c`; then
7931                                 $cat >&4 <<EOM
7932
7933 WARNING:  Some systems limit the #! command to 32 characters.
7934 If you experience difficulty running Perl scripts with #!, try
7935 installing Perl in a directory with a shorter pathname.
7936
7937 EOM
7938                         fi ;;
7939                 esac
7940                 ;;
7941         *) startperl=": # use perl"
7942                 ;;
7943         esac
7944         ;;
7945 esac
7946 echo "I'll use $startperl to start perl scripts."
7947
7948 : figure best path for perl in scripts
7949 case "$perlpath" in
7950 '')
7951         perlpath="$binexp/perl"
7952         case "$startperl" in
7953         *!*) ;;
7954         *)
7955                 $cat <<EOH
7956
7957 I will use the "eval 'exec'" idiom to start Perl on your system.
7958 I can use the full path of your Perl binary for this purpose, but
7959 doing so may cause problems if you want to share those scripts and
7960 Perl is not always in a standard place ($binexp/perl).
7961
7962 EOH
7963                 dflt="$binexp/perl"
7964                 rp="What path shall I use in \"eval 'exec'\"?"
7965                 . ./myread
7966                 perlpath="$ans"
7967                 ;;
7968         esac
7969         ;;
7970 esac
7971 case "$startperl" in
7972 *!*)    ;;
7973 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7974 esac
7975
7976 : determine where public executable scripts go
7977 set scriptdir scriptdir
7978 eval $prefixit
7979 case "$scriptdir" in
7980 '')
7981         dflt="$bin"
7982         : guess some guesses
7983         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7984         $test -d /usr/share/bin     && dflt=/usr/share/bin
7985         $test -d /usr/local/script  && dflt=/usr/local/script
7986         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7987         $test -d $prefixexp/script  && dflt=$prefixexp/script
7988         set dflt
7989         eval $prefixup
7990         ;;
7991 *)  dflt="$scriptdir"
7992         ;;
7993 esac
7994 $cat <<EOM
7995  
7996 Some installations have a separate directory just for executable scripts so
7997 that they can mount it across multiple architectures but keep the scripts in
7998 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7999 Or you might just lump your scripts in with all your other executables.
8000  
8001 EOM
8002 fn=d~
8003 rp='Where do you keep publicly executable scripts?'
8004 . ./getfile
8005 if $test "X$ansexp" != "X$scriptdirexp"; then
8006         installscript=''
8007 fi
8008 scriptdir="$ans"
8009 scriptdirexp="$ansexp"
8010 : Change installation prefix, if necessary.
8011 if $test X"$prefix" != X"$installprefix"; then
8012         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
8013 else
8014         installscript="$scriptdirexp"
8015 fi
8016
8017 : determine where add-on public executables go
8018 case "$sitebin" in
8019 '')     dflt=$siteprefix/bin ;;
8020 *)      dflt=$sitebin ;;
8021 esac
8022 fn=d~
8023 rp='Pathname where the add-on public executables should be installed?'
8024 . ./getfile
8025 sitebin="$ans"
8026 sitebinexp="$ansexp"
8027 : Change installation prefix, if necessary.
8028 if $test X"$prefix" != X"$installprefix"; then
8029         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
8030 else
8031         installsitebin="$sitebinexp"
8032 fi
8033
8034 : define an is-a-typedef? function
8035 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8036 case "$inclist" in
8037 "") inclist="sys/types.h";;
8038 esac;
8039 eval "varval=\$$var";
8040 case "$varval" in
8041 "")
8042         $rm -f temp.c;
8043         for inc in $inclist; do
8044                 echo "#include <$inc>" >>temp.c;
8045         done;
8046         echo "#ifdef $type" >> temp.c;
8047         echo "printf(\"We have $type\");" >> temp.c;
8048         echo "#endif" >> temp.c;
8049         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8050         if $contains $type temp.E >/dev/null 2>&1; then
8051                 eval "$var=\$type";
8052         else
8053                 eval "$var=\$def";
8054         fi;
8055         $rm -f temp.?;;
8056 *) eval "$var=\$varval";;
8057 esac'
8058
8059 : define an is-a-typedef? function that prompts if the type is not available.
8060 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
8061 case "$inclist" in
8062 "") inclist="sys/types.h";;
8063 esac;
8064 eval "varval=\$$var";
8065 case "$varval" in
8066 "")
8067         $rm -f temp.c;
8068         for inc in $inclist; do
8069                 echo "#include <$inc>" >>temp.c;
8070         done;
8071         echo "#ifdef $type" >> temp.c;
8072         echo "printf(\"We have $type\");" >> temp.c;
8073         echo "#endif" >> temp.c;
8074         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
8075         echo " " ;
8076         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
8077         if $contains $type temp.E >/dev/null 2>&1; then
8078                 echo "$type found." >&4;
8079                 eval "$var=\$type";
8080         else
8081                 echo "$type NOT found." >&4;
8082                 dflt="$def";
8083                 . ./myread ;
8084                 eval "$var=\$ans";
8085         fi;
8086         $rm -f temp.?;;
8087 *) eval "$var=\$varval";;
8088 esac'
8089
8090 : see what type lseek is declared as in the kernel
8091 rp="What is the type used for lseek's offset on this system?"
8092 set off_t lseektype long stdio.h sys/types.h
8093 eval $typedef_ask
8094
8095 echo " "
8096 echo "Checking to see how big your file offsets are..." >&4
8097 $cat >try.c <<EOCP
8098 #include <sys/types.h>
8099 #include <stdio.h>
8100 int main()
8101 {
8102     printf("%d\n", (int)sizeof($lseektype));
8103     return(0); 
8104 }
8105 EOCP
8106 set try
8107 if eval $compile_ok; then
8108         lseeksize=`$run ./try`
8109         echo "Your file offsets are $lseeksize bytes long."
8110 else
8111         dflt=$longsize
8112         echo " "
8113         echo "(I can't seem to compile the test program.  Guessing...)"
8114         rp="What is the size of your file offsets (in bytes)?"
8115         . ./myread
8116         lseeksize="$ans"
8117 fi
8118 $rm -f try.c try
8119
8120 : see what type file positions are declared as in the library
8121 rp="What is the type for file position used by fsetpos()?"
8122 set fpos_t fpostype long stdio.h sys/types.h
8123 eval $typedef_ask
8124
8125 echo " "
8126 case "$fpostype" in
8127 *_t) zzz="$fpostype"    ;;
8128 *)   zzz="fpos_t"       ;;
8129 esac
8130 echo "Checking the size of $zzz..." >&4 
8131 cat > try.c <<EOCP
8132 #include <sys/types.h>
8133 #include <stdio.h>
8134 int main() {
8135     printf("%d\n", (int)sizeof($fpostype));
8136     exit(0);
8137 }
8138 EOCP
8139 set try
8140 if eval $compile_ok; then
8141         yyy=`$run ./try`
8142         case "$yyy" in
8143         '')     fpossize=4
8144                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8145                 ;;
8146         *)      fpossize=$yyy
8147                 echo "Your $zzz is $fpossize bytes long."
8148                 ;;
8149         esac
8150 else
8151         dflt="$longsize"
8152         echo " " >&4
8153         echo "(I can't compile the test program.  Guessing...)" >&4
8154         rp="What is the size of your file positions (in bytes)?"
8155         . ./myread
8156         fpossize="$ans"
8157 fi
8158
8159
8160
8161 # Backward compatibility (uselfs is deprecated).
8162 case "$uselfs" in
8163 "$define"|true|[yY]*)
8164         cat <<EOM >&4
8165
8166 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
8167 EOM
8168         uselargefiles="$define"
8169         ;;
8170 esac                          
8171
8172 case "$lseeksize:$fpossize" in
8173 8:8) cat <<EOM
8174
8175 You can have files larger than 2 gigabytes.
8176 EOM
8177    val="$define" ;;
8178 *)    case "$uselargefiles" in
8179    "$undef"|false|[nN]*) dflt='n' ;;
8180    *)   dflt='y' ;;
8181    esac
8182    cat <<EOM
8183
8184 Perl can be built to understand large files (files larger than 2 gigabytes)
8185 on some systems.  To do so, Configure can be run with -Duselargefiles.
8186
8187 If this doesn't make any sense to you, just accept the default '$dflt'.
8188 EOM
8189    rp='Try to understand large files, if available?'
8190    . ./myread
8191    case "$ans" in
8192    y|Y)         val="$define" ;;
8193    *)           val="$undef"  ;;
8194    esac
8195    ;;
8196 esac
8197 set uselargefiles
8198 eval $setvar
8199 case "$uselargefiles" in
8200 "$define")
8201 : Look for a hint-file generated 'call-back-unit'.  If the
8202 : user has specified that a large files perl is to be built,
8203 : we may need to set or change some other defaults.
8204         if $test -f uselargefiles.cbu; then
8205                 echo "Your platform has some specific hints for large file builds, using them..."
8206                 . ./uselargefiles.cbu
8207                 echo " "
8208                 echo "Rechecking to see how big your file offsets are..." >&4
8209                 $cat >try.c <<EOCP
8210 #include <sys/types.h>
8211 #include <stdio.h>
8212 int main()
8213 {
8214     printf("%d\n", (int)sizeof($lseektype));
8215     return(0); 
8216 }
8217 EOCP
8218                 set try
8219                 if eval $compile_ok; then
8220                         lseeksize=`$run ./try`
8221                         $echo "Your file offsets are now $lseeksize bytes long."
8222                 else
8223                         dflt="$lseeksize"
8224                         echo " "
8225                         echo "(I can't seem to compile the test program.  Guessing...)"
8226                         rp="What is the size of your file offsets (in bytes)?"
8227                         . ./myread
8228                         lseeksize="$ans"
8229                 fi
8230                 case "$fpostype" in
8231                 *_t) zzz="$fpostype"    ;;
8232                 *)   zzz="fpos_t"       ;;
8233                 esac
8234                 $echo $n "Rechecking the size of $zzz...$c" >&4 
8235                 $cat > try.c <<EOCP
8236 #include <sys/types.h>
8237 #include <stdio.h>
8238 int main() {
8239     printf("%d\n", (int)sizeof($fpostype));
8240     exit(0);
8241 }
8242 EOCP
8243                 set try
8244                 if eval $compile_ok; then
8245                         yyy=`$run ./try`
8246                         dflt="$lseeksize"
8247                         case "$yyy" in
8248                         '')     echo " "
8249                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
8250                                 ;;
8251                         *)      fpossize=$yyy
8252                                 echo " $fpossize bytes." >&4
8253                                 ;;
8254                         esac
8255                 else
8256                         dflt="$fpossize"
8257                         echo " "
8258                         echo "(I can't compile the test program.  Guessing...)" >&4
8259                         rp="What is the size of your file positions (in bytes)?"
8260                         . ./myread
8261                         fpossize="$ans"
8262                 fi
8263                 $rm -f try.c try
8264         fi
8265         ;;
8266 esac
8267
8268 case "$vendorprefix" in
8269 '')     d_vendorbin="$undef"
8270         vendorbin=''
8271         vendorbinexp=''
8272         ;;
8273 *)      d_vendorbin="$define"
8274         : determine where vendor-supplied executables go.
8275         case "$vendorbin" in
8276         '') dflt=$vendorprefix/bin ;;
8277         *)      dflt="$vendorbin" ;;
8278         esac
8279         fn=d~+
8280         rp='Pathname for the vendor-supplied executables directory?'
8281         . ./getfile
8282         vendorbin="$ans"
8283         vendorbinexp="$ansexp"
8284         ;;
8285 esac
8286 : Change installation prefix, if necessary.
8287 if $test X"$prefix" != X"$installprefix"; then
8288         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
8289 else
8290         installvendorbin="$vendorbinexp"
8291 fi
8292
8293 : see if qgcvt exists
8294 set qgcvt d_qgcvt
8295 eval $inlibc
8296
8297 echo " "
8298
8299 if $test X"$d_longdbl" = X"$define"; then
8300
8301 echo "Checking how to print long doubles..." >&4
8302
8303 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
8304         $cat >try.c <<'EOCP'
8305 #include <sys/types.h>
8306 #include <stdio.h>
8307 int main() {
8308   double d = 123.456;
8309   printf("%.3f\n", d);
8310 }
8311 EOCP
8312         set try
8313         if eval $compile; then
8314                 yyy=`$run ./try`
8315                 case "$yyy" in
8316                 123.456)
8317                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
8318                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
8319                         echo "We will use %f."
8320                         ;;
8321                 esac
8322         fi
8323 fi
8324
8325 if $test X"$sPRIfldbl" = X; then
8326         $cat >try.c <<'EOCP'
8327 #include <sys/types.h>
8328 #include <stdio.h>
8329 int main() {
8330   long double d = 123.456;
8331   printf("%.3Lf\n", d);
8332 }
8333 EOCP
8334         set try
8335         if eval $compile; then
8336                 yyy=`$run ./try`
8337                 case "$yyy" in
8338                 123.456)
8339                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
8340                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
8341                         echo "We will use %Lf."
8342                         ;;
8343                 esac
8344         fi
8345 fi
8346
8347 if $test X"$sPRIfldbl" = X; then
8348         $cat >try.c <<'EOCP'
8349 #include <sys/types.h>
8350 #include <stdio.h>
8351 int main() {
8352   long double d = 123.456;
8353   printf("%.3llf\n", d);
8354 }
8355 EOCP
8356         set try
8357         if eval $compile; then
8358                 yyy=`$run ./try`
8359                 case "$yyy" in
8360                 123.456)
8361                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
8362                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
8363                         echo "We will use %llf."
8364                         ;;
8365                 esac
8366         fi
8367 fi
8368
8369 if $test X"$sPRIfldbl" = X; then
8370         $cat >try.c <<'EOCP'
8371 #include <sys/types.h>
8372 #include <stdio.h>
8373 int main() {
8374   long double d = 123.456;
8375   printf("%.3lf\n", d);
8376 }
8377 EOCP
8378         set try
8379         if eval $compile; then
8380                 yyy=`$run ./try`
8381                 case "$yyy" in
8382                 123.456)
8383                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
8384                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
8385                         echo "We will use %lf."
8386                         ;;
8387                 esac
8388         fi
8389 fi
8390
8391 if $test X"$sPRIfldbl" = X; then
8392         echo "Cannot figure out how to print long doubles." >&4
8393 else
8394         sSCNfldbl=$sPRIfldbl    # expect consistency
8395 fi
8396
8397 $rm -f try try.*
8398
8399 fi # d_longdbl
8400
8401 case "$sPRIfldbl" in
8402 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
8403         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
8404         d_SCNfldbl="$undef";
8405         ;;
8406 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
8407         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
8408         d_SCNfldbl="$define";
8409         ;;
8410 esac
8411
8412 : Check how to convert floats to strings.
8413 echo " "
8414 echo "Checking for an efficient way to convert floats to strings."
8415 echo " " > try.c
8416 case "$uselongdouble" in
8417 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
8418 esac
8419 case "$d_longdbl" in
8420 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
8421 esac
8422 case "$d_PRIgldbl" in
8423 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
8424 esac
8425 $cat >>try.c <<EOP
8426 #ifdef TRY_gconvert
8427 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
8428 char *myname = "gconvert";
8429 #endif
8430 #ifdef TRY_gcvt
8431 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
8432 char *myname = "gcvt";
8433 #endif
8434 #ifdef TRY_qgcvt
8435 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
8436 char *myname = "qgcvt";
8437 #define DOUBLETYPE long double
8438 #endif
8439 #ifdef TRY_sprintf
8440 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
8441 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
8442 #else
8443 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
8444 #endif
8445 char *myname = "sprintf";
8446 #endif
8447
8448 #ifndef DOUBLETYPE
8449 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
8450 #define DOUBLETYPE long double
8451 #else
8452 #define DOUBLETYPE double
8453 #endif
8454 #endif
8455
8456 #include <stdio.h>
8457
8458 #define I_STDLIB $i_stdlib
8459 #ifdef I_STDLIB
8460 #include <stdlib.h>
8461 #endif
8462
8463 int
8464 checkit(expect, got)
8465 char *expect;
8466 char *got;
8467 {
8468     if (strcmp(expect, got)) {
8469                 printf("%s oddity:  Expected %s, got %s\n",
8470                         myname, expect, got);
8471                 exit(1);
8472         }
8473 }
8474
8475 int main()
8476
8477         char buf[64]; 
8478         buf[63] = '\0';
8479
8480         /* This must be 1st test on (which?) platform */
8481         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
8482         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
8483         checkit("0.1", buf);
8484
8485         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
8486         checkit("1", buf);
8487
8488         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
8489         checkit("1.1", buf);
8490
8491         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
8492         checkit("1.01", buf);
8493
8494         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
8495         checkit("1.001", buf);
8496
8497         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
8498         checkit("1.0001", buf);
8499
8500         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
8501         checkit("1.00001", buf);
8502
8503         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
8504         checkit("1.000001", buf);
8505
8506         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
8507         checkit("0", buf);
8508
8509         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
8510         checkit("-1", buf);
8511
8512         /* Some Linux gcvt's give 1.e+5 here. */
8513         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
8514         checkit("100000", buf);
8515         
8516         /* Some Linux gcvt's give -1.e+5 here. */
8517         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
8518         checkit("-100000", buf);
8519
8520         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
8521         checkit("123.456", buf);
8522
8523         /* Testing of 1e+129 in bigintpm.t must not get extra '.' here. */
8524         Gconvert((DOUBLETYPE)1e30, 8, 0, buf);
8525         if (strlen(buf) > 5)
8526             checkit("1e+030", buf); /* for Microsoft */
8527         else
8528             checkit("1e+30", buf);
8529
8530         exit(0);
8531 }
8532 EOP
8533 case "$d_Gconvert" in
8534 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
8535 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
8536 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
8537 *) xxx_list='gconvert gcvt sprintf' ;;
8538 esac
8539
8540 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
8541 "$define$define$define")
8542     # for long doubles prefer first qgcvt, then sprintf
8543     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
8544     xxx_list="sprintf $xxx_list"
8545     case "$d_qgcvt" in
8546     "$define") xxx_list="qgcvt $xxx_list" ;;
8547     esac
8548     ;;
8549 esac
8550
8551 for xxx_convert in $xxx_list; do
8552         echo "Trying $xxx_convert..."
8553         $rm -f try try$_o
8554         set try -DTRY_$xxx_convert
8555         if eval $compile; then
8556                 echo "$xxx_convert() found." >&4
8557                 if $run ./try; then
8558                         echo "I'll use $xxx_convert to convert floats into a string." >&4
8559                         break;
8560                 else
8561                         echo "...But $xxx_convert didn't work as I expected."
8562                 fi
8563         else
8564                 echo "$xxx_convert NOT found." >&4
8565         fi
8566 done
8567         
8568 case "$xxx_convert" in
8569 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
8570 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
8571 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
8572 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
8573    "$define$define$define")
8574       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
8575    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
8576    esac
8577    ;;  
8578 esac
8579
8580 : see if _fwalk exists
8581 set fwalk d__fwalk
8582 eval $inlibc
8583
8584 : Initialize h_fcntl
8585 h_fcntl=false
8586
8587 : Initialize h_sysfile
8588 h_sysfile=false
8589
8590 : access call always available on UNIX
8591 set access d_access
8592 eval $inlibc
8593
8594 : locate the flags for 'access()'
8595 case "$d_access" in
8596 "$define")
8597         echo " "
8598         $cat >access.c <<'EOCP'
8599 #include <sys/types.h>
8600 #ifdef I_FCNTL
8601 #include <fcntl.h>
8602 #endif
8603 #ifdef I_SYS_FILE
8604 #include <sys/file.h>
8605 #endif
8606 #ifdef I_UNISTD
8607 #include <unistd.h>
8608 #endif
8609 int main() {
8610         exit(R_OK);
8611 }
8612 EOCP
8613         : check sys/file.h first, no particular reason here
8614         if $test `./findhdr sys/file.h` && \
8615                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
8616                 h_sysfile=true;
8617                 echo "<sys/file.h> defines the *_OK access constants." >&4
8618         elif $test `./findhdr fcntl.h` && \
8619                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
8620                 h_fcntl=true;
8621                 echo "<fcntl.h> defines the *_OK access constants." >&4
8622         elif $test `./findhdr unistd.h` && \
8623                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
8624                 echo "<unistd.h> defines the *_OK access constants." >&4
8625         else
8626                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
8627         fi
8628         ;;
8629 esac
8630 $rm -f access*
8631
8632 : see if accessx exists
8633 set accessx d_accessx
8634 eval $inlibc
8635
8636 : see if alarm exists
8637 set alarm d_alarm
8638 eval $inlibc
8639
8640 : see if atolf exists
8641 set atolf d_atolf
8642 eval $inlibc
8643
8644 : see if atoll exists
8645 set atoll d_atoll
8646 eval $inlibc
8647
8648 : Look for GNU-cc style attribute checking
8649 echo " "
8650 echo "Checking whether your compiler can handle __attribute__ ..." >&4
8651 $cat >attrib.c <<'EOCP'
8652 #include <stdio.h>
8653 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
8654 EOCP
8655 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
8656         if $contains 'warning' attrib.out >/dev/null 2>&1; then
8657                 echo "Your C compiler doesn't fully support __attribute__."
8658                 val="$undef"
8659         else
8660                 echo "Your C compiler supports __attribute__."
8661                 val="$define"
8662         fi
8663 else
8664         echo "Your C compiler doesn't seem to understand __attribute__ at all."
8665         val="$undef"
8666 fi
8667 set d_attribut
8668 eval $setvar
8669 $rm -f attrib*
8670
8671 : see if bcmp exists
8672 set bcmp d_bcmp
8673 eval $inlibc
8674
8675 : see if bcopy exists
8676 set bcopy d_bcopy
8677 eval $inlibc
8678
8679 : see if this is a unistd.h system
8680 set unistd.h i_unistd
8681 eval $inhdr
8682
8683 : see if getpgrp exists
8684 set getpgrp d_getpgrp
8685 eval $inlibc
8686
8687 case "$d_getpgrp" in
8688 "$define")
8689         echo " "
8690         echo "Checking to see which flavor of getpgrp is in use..."
8691         $cat >try.c <<EOP
8692 #$i_unistd I_UNISTD
8693 #include <sys/types.h>
8694 #ifdef I_UNISTD
8695 #  include <unistd.h>
8696 #endif
8697 int main()
8698 {
8699         if (getuid() == 0) {
8700                 printf("(I see you are running Configure as super-user...)\n");
8701                 setuid(1);
8702         }
8703 #ifdef TRY_BSD_PGRP
8704         if (getpgrp(1) == 0)
8705                 exit(0);
8706 #else
8707         if (getpgrp() > 0)
8708                 exit(0);
8709 #endif
8710         exit(1);
8711 }
8712 EOP
8713         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8714                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8715                 val="$define"
8716         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8717                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8718                 val="$undef"
8719         else
8720                 echo "I can't seem to compile and run the test program."
8721                 if ./usg; then
8722                         xxx="a USG one, i.e. you use getpgrp()."
8723                 else
8724                         # SVR4 systems can appear rather BSD-ish.
8725                         case "$i_unistd" in
8726                         $undef)
8727                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8728                                 val="$define"
8729                                 ;;
8730                         $define)
8731                                 xxx="probably a USG one, i.e. you use getpgrp()."
8732                                 val="$undef"
8733                                 ;;
8734                         esac
8735                 fi
8736                 echo "Assuming your getpgrp is $xxx" >&4
8737         fi
8738         ;;
8739 *) val="$undef";;
8740 esac
8741 set d_bsdgetpgrp
8742 eval $setvar
8743 $rm -f try try.*
8744
8745 : see if setpgrp exists
8746 set setpgrp d_setpgrp
8747 eval $inlibc
8748
8749 case "$d_setpgrp" in
8750 "$define")
8751         echo " "
8752         echo "Checking to see which flavor of setpgrp is in use..."
8753         $cat >try.c <<EOP
8754 #$i_unistd I_UNISTD
8755 #include <sys/types.h>
8756 #ifdef I_UNISTD
8757 #  include <unistd.h>
8758 #endif
8759 int main()
8760 {
8761         if (getuid() == 0) {
8762                 printf("(I see you are running Configure as super-user...)\n");
8763                 setuid(1);
8764         }
8765 #ifdef TRY_BSD_PGRP
8766         if (-1 == setpgrp(1, 1))
8767                 exit(0);
8768 #else
8769         if (setpgrp() != -1)
8770                 exit(0);
8771 #endif
8772         exit(1);
8773 }
8774 EOP
8775         if $cc -o try -DTRY_BSD_PGRP $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8776                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8777                 val="$define"
8778         elif $cc -o try $ccflags $ldflags try.c $libs >/dev/null 2>&1 && $run ./try; then
8779                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8780                 val="$undef"
8781         else
8782                 echo "(I can't seem to compile and run the test program.)"
8783                 if ./usg; then
8784                         xxx="a USG one, i.e. you use setpgrp()."
8785                 else
8786                         # SVR4 systems can appear rather BSD-ish.
8787                         case "$i_unistd" in
8788                         $undef)
8789                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8790                                 val="$define"
8791                                 ;;
8792                         $define)
8793                                 xxx="probably a USG one, i.e. you use setpgrp()."
8794                                 val="$undef"
8795                                 ;;
8796                         esac
8797                 fi
8798                 echo "Assuming your setpgrp is $xxx" >&4
8799         fi
8800         ;;
8801 *) val="$undef";;
8802 esac
8803 set d_bsdsetpgrp
8804 eval $setvar
8805 $rm -f try try.*
8806 : see if bzero exists
8807 set bzero d_bzero
8808 eval $inlibc
8809
8810 : see if signal is declared as pointer to function returning int or void
8811 echo " "
8812 xxx=`./findhdr signal.h`
8813 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8814 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8815         echo "You have int (*signal())() instead of void." >&4
8816         val="$undef"
8817 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8818         echo "You have void (*signal())()." >&4
8819         val="$define"
8820 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8821         echo "You have int (*signal())() instead of void." >&4
8822         val="$undef"
8823 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8824         echo "You have void (*signal())()." >&4
8825         val="$define"
8826 else
8827         case "$d_voidsig" in
8828         '')
8829         echo "I can't determine whether signal handler returns void or int..." >&4
8830                 dflt=void
8831                 rp="What type does your signal handler return?"
8832                 . ./myread
8833                 case "$ans" in
8834                 v*) val="$define";;
8835                 *) val="$undef";;
8836                 esac;;
8837         "$define")
8838                 echo "As you already told me, signal handler returns void." >&4
8839                 val="$define"
8840                 ;;
8841         *)      echo "As you already told me, signal handler returns int." >&4
8842                 val="$undef"
8843                 ;;
8844         esac
8845 fi
8846 set d_voidsig
8847 eval $setvar
8848 case "$d_voidsig" in
8849 "$define") signal_t="void";;
8850 *) signal_t="int";;
8851 esac
8852 $rm -f $$.tmp
8853
8854 : check for ability to cast large floats to 32-bit ints.
8855 echo " "
8856 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8857 if $test "$intsize" -ge 4; then
8858         xxx=int
8859 else
8860         xxx=long
8861 fi
8862 $cat >try.c <<EOCP
8863 #include <stdio.h>
8864 #include <sys/types.h>
8865 #include <signal.h>
8866 $signal_t blech(s) int s; { exit(3); }
8867 int main()
8868 {
8869         $xxx i32;
8870         double f, g;
8871         int result = 0;
8872         char str[16];
8873         signal(SIGFPE, blech);
8874
8875         /* Don't let compiler optimize the test away.  Store the number 
8876            in a writable string for gcc to pass to sscanf under HP/UX.
8877         */
8878         sprintf(str, "2147483647");
8879         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8880         g = 10 * f;
8881         i32  = ($xxx) g;
8882
8883         /* x86 processors will probably give 0x8000 0000, which is a
8884        sign change.  We don't want that.  We want to mimic SPARC
8885            behavior here, which is to preserve the sign and give
8886            back 0x7fff ffff.
8887         */
8888         if (i32 != ($xxx) f)
8889                 result |= 1;
8890         exit(result);
8891 }
8892 EOCP
8893 set try
8894 if eval $compile_ok; then
8895         $run ./try
8896         yyy=$?
8897 else
8898         echo "(I can't seem to compile the test program--assuming it can't)"
8899         yyy=1
8900 fi
8901 case "$yyy" in
8902 0)      val="$define"
8903         echo "Yup, it can."
8904         ;;
8905 *)      val="$undef"
8906         echo "Nope, it can't."
8907         ;;
8908 esac
8909 set d_casti32
8910 eval $setvar
8911 $rm -f try try.*
8912
8913 : check for ability to cast negative floats to unsigned
8914 echo " "
8915 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8916 $cat >try.c <<EOCP
8917 #include <stdio.h>
8918 #include <sys/types.h>
8919 #include <signal.h>
8920 $signal_t blech(s) int s; { exit(7); }
8921 $signal_t blech_in_list(s) int s; { exit(4); }
8922 unsigned long dummy_long(p) unsigned long p; { return p; }
8923 unsigned int dummy_int(p) unsigned int p; { return p; }
8924 unsigned short dummy_short(p) unsigned short p; { return p; }
8925 int main()
8926 {
8927         double f;
8928         unsigned long along;
8929         unsigned int aint;
8930         unsigned short ashort;
8931         int result = 0;
8932         char str[16];
8933         
8934         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8935            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8936            optimized the whole file away
8937         */
8938         /* Store the number in a writable string for gcc to pass to 
8939            sscanf under HP/UX.
8940         */
8941         sprintf(str, "-123");
8942         sscanf(str, "%lf", &f);  /* f = -123.; */
8943
8944         signal(SIGFPE, blech);
8945         along = (unsigned long)f;
8946         aint = (unsigned int)f;
8947         ashort = (unsigned short)f;
8948         if (along != (unsigned long)-123)
8949                 result |= 1;
8950         if (aint != (unsigned int)-123)
8951                 result |= 1;
8952         if (ashort != (unsigned short)-123)
8953                 result |= 1;
8954         sprintf(str, "1073741824.");
8955         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8956         f = f + f;
8957         along = 0;
8958         along = (unsigned long)f;
8959         if (along != 0x80000000)
8960                 result |= 2;
8961         f -= 1.;
8962         along = 0;
8963         along = (unsigned long)f;
8964         if (along != 0x7fffffff)
8965                 result |= 1;
8966         f += 2.;
8967         along = 0;
8968         along = (unsigned long)f;
8969         if (along != 0x80000001)
8970                 result |= 2;
8971         if (result)
8972                 exit(result);
8973         signal(SIGFPE, blech_in_list);
8974         sprintf(str, "123.");
8975         sscanf(str, "%lf", &f);  /* f = 123.; */
8976         along = dummy_long((unsigned long)f);
8977         aint = dummy_int((unsigned int)f);
8978         ashort = dummy_short((unsigned short)f);
8979         if (along != (unsigned long)123)
8980                 result |= 4;
8981         if (aint != (unsigned int)123)
8982                 result |= 4;
8983         if (ashort != (unsigned short)123)
8984                 result |= 4;
8985         exit(result);
8986
8987 }
8988 EOCP
8989 set try
8990 if eval $compile_ok; then
8991         $run ./try
8992         castflags=$?
8993 else
8994         echo "(I can't seem to compile the test program--assuming it can't)"
8995         castflags=7
8996 fi
8997 case "$castflags" in
8998 0)      val="$define"
8999         echo "Yup, it can."
9000         ;;
9001 *)      val="$undef"
9002         echo "Nope, it can't."
9003         ;;
9004 esac
9005 set d_castneg
9006 eval $setvar
9007 $rm -f try.*
9008
9009 : see if vprintf exists
9010 echo " "
9011 if set vprintf val -f d_vprintf; eval $csym; $val; then
9012         echo 'vprintf() found.' >&4
9013         val="$define"
9014         $cat >try.c <<'EOF'
9015 #include <varargs.h>
9016
9017 int main() { xxx("foo"); }
9018
9019 xxx(va_alist)
9020 va_dcl
9021 {
9022         va_list args;
9023         char buf[10];
9024
9025         va_start(args);
9026         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
9027 }
9028 EOF
9029         set try
9030         if eval $compile && $run ./try; then
9031                 echo "Your vsprintf() returns (int)." >&4
9032                 val2="$undef"
9033         else
9034                 echo "Your vsprintf() returns (char*)." >&4
9035                 val2="$define"
9036         fi
9037 else
9038         echo 'vprintf() NOT found.' >&4
9039                 val="$undef"
9040                 val2="$undef"
9041 fi
9042 $rm -f try try.*
9043 set d_vprintf
9044 eval $setvar
9045 val=$val2
9046 set d_charvspr
9047 eval $setvar
9048
9049 : see if chown exists
9050 set chown d_chown
9051 eval $inlibc
9052
9053 : see if chroot exists
9054 set chroot d_chroot
9055 eval $inlibc
9056
9057 : see if chsize exists
9058 set chsize d_chsize
9059 eval $inlibc
9060
9061 hasstruct='varname=$1; struct=$2; shift; shift;
9062 while $test $# -ge 2; do
9063         case "$1" in
9064         $define) echo "#include <$2>";;
9065         esac ;
9066     shift 2;
9067 done > try.c;
9068 echo "int main () { struct $struct foo; }" >> try.c;
9069 set try;
9070 if eval $compile; then
9071         val="$define";
9072 else
9073         val="$undef";
9074 fi;
9075 set $varname;
9076 eval $setvar;
9077 $rm -f try.c try.o'
9078
9079 : see if sys/types.h has to be included
9080 set sys/types.h i_systypes
9081 eval $inhdr
9082
9083 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
9084 while $test $# -ge 2; do
9085         case "$1" in
9086         $define) echo "#include <$2>";;
9087         esac ;
9088     shift 2;
9089 done > try.c;
9090 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
9091 set try;
9092 if eval $compile; then
9093         val="$define";
9094 else
9095         val="$undef";
9096 fi;
9097 set $varname;
9098 eval $setvar;
9099 $rm -f try.c try.o'
9100
9101 socketlib=''
9102 sockethdr=''
9103 : see whether socket exists
9104 echo " "
9105 $echo $n "Hmm... $c" >&4
9106 if set socket val -f d_socket; eval $csym; $val; then
9107         echo "Looks like you have Berkeley networking support." >&4
9108         d_socket="$define"
9109         if set setsockopt val -f; eval $csym; $val; then
9110                 d_oldsock="$undef"
9111         else
9112                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9113                 d_oldsock="$define"
9114         fi
9115 else
9116         if $contains socklib libc.list >/dev/null 2>&1; then
9117                 echo "Looks like you have Berkeley networking support." >&4
9118                 d_socket="$define"
9119                 : we will have to assume that it supports the 4.2 BSD interface
9120                 d_oldsock="$undef"
9121         else
9122                 echo "You don't have Berkeley networking in libc$_a..." >&4
9123                 if test "X$d_socket" = "X$define"; then
9124                    echo "...but you seem to believe that you have sockets." >&4
9125                 else
9126                         for net in net socket
9127                         do
9128                                 if test -f /usr/lib/lib$net$_a; then
9129                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9130                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9131                                         if $contains socket libc.list >/dev/null 2>&1; then
9132                                                 d_socket="$define"
9133                                                 socketlib="-l$net"
9134                                                 case "$net" in
9135                                                 net)
9136                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9137                                                         sockethdr="-I/usr/netinclude"
9138                                                         ;;
9139                                                 esac
9140                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9141                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9142                                                         d_oldsock="$undef"
9143                                                 else
9144                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9145                                                         d_oldsock="$define"
9146                                                 fi
9147                                                 break
9148                                         fi
9149                                 fi
9150                         done
9151                         if test "X$d_socket" != "X$define"; then
9152                            echo "or anywhere else I see." >&4
9153                            d_socket="$undef"
9154                            d_oldsock="$undef"
9155                         fi
9156                 fi
9157         fi
9158 fi
9159
9160 : see if socketpair exists
9161 set socketpair d_sockpair
9162 eval $inlibc
9163
9164
9165 echo " "
9166 echo "Checking the availability of certain socket constants..." >& 4
9167 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9168         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9169         $cat >try.c <<EOF
9170 #include <sys/types.h>
9171 #include <sys/socket.h>
9172 int main() {
9173     int i = $ENUM;
9174 }
9175 EOF
9176         val="$undef"
9177         set try; if eval $compile; then
9178                 val="$define"
9179         fi
9180         set d_${enum}; eval $setvar
9181         $rm -f try.c try
9182 done
9183
9184 : see if this is a sys/uio.h system
9185 set sys/uio.h i_sysuio
9186 eval $inhdr
9187
9188
9189 echo " "
9190 echo "Checking to see if your system supports struct cmsghdr..." >&4
9191 set d_cmsghdr_s cmsghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
9192 eval $hasstruct
9193 case "$d_cmsghdr_s" in
9194 "$define")      echo "Yes, it does."   ;;
9195 *)              echo "No, it doesn't." ;;
9196 esac
9197
9198
9199 : check for const keyword
9200 echo " "
9201 echo 'Checking to see if your C compiler knows about "const"...' >&4
9202 $cat >const.c <<'EOCP'
9203 typedef struct spug { int drokk; } spug;
9204 int main()
9205 {
9206         const char *foo;
9207         const spug y;
9208 }
9209 EOCP
9210 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
9211         val="$define"
9212         echo "Yup, it does."
9213 else
9214         val="$undef"
9215         echo "Nope, it doesn't."
9216 fi
9217 set d_const
9218 eval $setvar
9219
9220 : see if crypt exists
9221 echo " "
9222 if set crypt val -f d_crypt; eval $csym; $val; then
9223         echo 'crypt() found.' >&4
9224         val="$define"
9225         cryptlib=''
9226 else
9227         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
9228         if $test -z "$cryptlib"; then
9229                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
9230         else
9231                 cryptlib=-lcrypt
9232         fi
9233         if $test -z "$cryptlib"; then
9234                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
9235         else
9236                 cryptlib=-lcrypt
9237         fi
9238         if $test -z "$cryptlib"; then
9239                 cryptlib=`./loc libcrypt$_a "" $libpth`
9240         else
9241                 cryptlib=-lcrypt
9242         fi
9243         if $test -z "$cryptlib"; then
9244                 echo 'crypt() NOT found.' >&4
9245                 val="$undef"
9246         else
9247                 val="$define"
9248         fi
9249 fi
9250 set d_crypt
9251 eval $setvar
9252
9253 : get csh whereabouts
9254 case "$csh" in
9255 'csh') val="$undef" ;;
9256 *) val="$define" ;;
9257 esac
9258 set d_csh
9259 eval $setvar
9260 : Respect a hint or command line value for full_csh.
9261 case "$full_csh" in
9262 '') full_csh=$csh ;;
9263 esac
9264
9265 : see if cuserid exists
9266 set cuserid d_cuserid
9267 eval $inlibc
9268
9269 : see if this is a limits.h system
9270 set limits.h i_limits
9271 eval $inhdr
9272
9273 : see if this is a float.h system
9274 set float.h i_float
9275 eval $inhdr
9276
9277 : See if number of significant digits in a double precision number is known
9278 echo " "
9279 $cat >dbl_dig.c <<EOM
9280 #$i_limits I_LIMITS
9281 #$i_float I_FLOAT
9282 #ifdef I_LIMITS
9283 #include <limits.h>
9284 #endif
9285 #ifdef I_FLOAT
9286 #include <float.h>
9287 #endif
9288 #ifdef DBL_DIG
9289 printf("Contains DBL_DIG");
9290 #endif
9291 EOM
9292 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
9293 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
9294         echo "DBL_DIG found." >&4
9295         val="$define"
9296 else
9297         echo "DBL_DIG NOT found." >&4
9298         val="$undef"
9299 fi
9300 $rm -f dbl_dig.?
9301 set d_dbl_dig
9302 eval $setvar
9303
9304 hasproto='varname=$1; func=$2; shift; shift;
9305 while $test $# -ge 2; do
9306         case "$1" in
9307         $define) echo "#include <$2>";;
9308         esac ;
9309     shift 2;
9310 done > try.c;
9311 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
9312 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
9313         echo "$func() prototype found.";
9314         val="$define";
9315 else
9316         echo "$func() prototype NOT found.";
9317         val="$undef";
9318 fi;
9319 set $varname;
9320 eval $setvar;
9321 $rm -f try.c tryout.c'
9322
9323 : see if dbm.h is available
9324 : see if dbmclose exists
9325 set dbmclose d_dbmclose
9326 eval $inlibc
9327
9328 case "$d_dbmclose" in
9329 $define)
9330         set dbm.h i_dbm
9331         eval $inhdr
9332         case "$i_dbm" in
9333         $define)
9334                 val="$undef"
9335                 set i_rpcsvcdbm
9336                 eval $setvar
9337                 ;;
9338         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9339                 eval $inhdr
9340                 ;;
9341         esac
9342         ;;
9343 *)      echo "We won't be including <dbm.h>"
9344         val="$undef"
9345         set i_dbm
9346         eval $setvar
9347         val="$undef"
9348         set i_rpcsvcdbm
9349         eval $setvar
9350         ;;
9351 esac
9352
9353 : see if prototype for dbminit is available
9354 echo " "
9355 set d_dbminitproto dbminit $i_dbm dbm.h
9356 eval $hasproto
9357
9358 : see if difftime exists
9359 set difftime d_difftime
9360 eval $inlibc
9361
9362 : see if this is a dirent system
9363 echo " "
9364 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
9365         val="$define"
9366         echo "<dirent.h> found." >&4
9367 else
9368         val="$undef"
9369         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
9370                 echo "<sys/dir.h> found." >&4
9371                 echo " "
9372         else
9373                 xinc=`./findhdr sys/ndir.h`
9374         fi
9375         echo "<dirent.h> NOT found." >&4
9376 fi
9377 set i_dirent
9378 eval $setvar
9379
9380 : Look for type of directory structure.
9381 echo " "
9382 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9383
9384 case "$direntrytype" in
9385 ''|' ')
9386         case "$i_dirent" in
9387         $define) guess1='struct dirent' ;;
9388         *) guess1='struct direct'  ;;
9389         esac
9390         ;;
9391 *)      guess1="$direntrytype"
9392         ;;
9393 esac
9394
9395 case "$guess1" in
9396 'struct dirent') guess2='struct direct' ;;
9397 *) guess2='struct dirent' ;;
9398 esac
9399                 
9400 if $contains "$guess1" try.c >/dev/null 2>&1; then
9401         direntrytype="$guess1"
9402         echo "Your directory entries are $direntrytype." >&4
9403 elif $contains "$guess2" try.c >/dev/null 2>&1; then
9404         direntrytype="$guess2"
9405         echo "Your directory entries seem to be $direntrytype." >&4
9406 else
9407         echo "I don't recognize your system's directory entries." >&4
9408         rp="What type is used for directory entries on this system?"
9409         dflt="$guess1"
9410         . ./myread
9411         direntrytype="$ans"
9412 fi
9413 $rm -f try.c
9414
9415
9416 : see if the directory entry stores field length
9417 echo " "
9418 $cppstdin $cppflags $cppminus < "$xinc" > try.c
9419 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
9420         echo "Good, your directory entry keeps length information in d_namlen." >&4
9421         val="$define"
9422 else
9423         echo "Your directory entry does not know about the d_namlen field." >&4
9424         val="$undef"
9425 fi
9426 set d_dirnamlen
9427 eval $setvar
9428 $rm -f try.c
9429
9430 : see if dlerror exists
9431 xxx_runnm="$runnm"
9432 runnm=false
9433 set dlerror d_dlerror
9434 eval $inlibc
9435 runnm="$xxx_runnm"
9436
9437 : see if dlfcn is available
9438 set dlfcn.h i_dlfcn
9439 eval $inhdr
9440
9441 case "$usedl" in
9442 $define|y|true)
9443         $cat << EOM
9444
9445 On a few systems, the dynamically loaded modules that perl generates and uses
9446 will need a different extension than shared libs. The default will probably
9447 be appropriate.
9448
9449 EOM
9450         case "$dlext" in
9451         '')     dflt="$so" ;;
9452         *)      dflt="$dlext" ;;
9453         esac
9454         rp='What is the extension of dynamically loaded modules'
9455         . ./myread
9456         dlext="$ans"
9457         ;;
9458 *)
9459         dlext="none"
9460         ;;
9461 esac
9462
9463 : Check if dlsym need a leading underscore
9464 echo " "
9465 val="$undef"
9466
9467 case "$dlsrc" in
9468 dl_dlopen.xs)
9469         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
9470         $cat >dyna.c <<'EOM'
9471 fred () { }
9472 EOM
9473
9474 $cat >fred.c<<EOM
9475
9476 #include <stdio.h>
9477 #$i_dlfcn I_DLFCN
9478 #ifdef I_DLFCN
9479 #include <dlfcn.h>      /* the dynamic linker include file for SunOS/Solaris */
9480 #else
9481 #include <sys/types.h>
9482 #include <nlist.h>
9483 #include <link.h>
9484 #endif
9485
9486 extern int fred() ;
9487
9488 int main()
9489 {
9490     void * handle ;
9491     void * symbol ;
9492 #ifndef RTLD_LAZY
9493     int mode = 1 ;
9494 #else
9495     int mode = RTLD_LAZY ;
9496 #endif
9497     handle = dlopen("./dyna.$dlext", mode) ;
9498     if (handle == NULL) {
9499         printf ("1\n") ;
9500         fflush (stdout) ;
9501         exit(0);
9502     }
9503     symbol = dlsym(handle, "fred") ;
9504     if (symbol == NULL) {
9505         /* try putting a leading underscore */
9506         symbol = dlsym(handle, "_fred") ;
9507         if (symbol == NULL) {
9508             printf ("2\n") ;
9509             fflush (stdout) ;
9510             exit(0);
9511         }
9512         printf ("3\n") ;
9513     }
9514     else
9515         printf ("4\n") ;
9516     fflush (stdout) ;
9517     exit(0);
9518 }
9519 EOM
9520         : Call the object file tmp-dyna.o in case dlext=o.
9521         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
9522                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
9523                 $ld -o dyna.$dlext $ldflags $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
9524                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1 && $to dyna.$dlext; then
9525                 xxx=`$run ./fred`
9526                 case $xxx in
9527                 1)      echo "Test program failed using dlopen." >&4
9528                         echo "Perhaps you should not use dynamic loading." >&4;;
9529                 2)      echo "Test program failed using dlsym." >&4
9530                         echo "Perhaps you should not use dynamic loading." >&4;;
9531                 3)      echo "dlsym needs a leading underscore" >&4
9532                         val="$define" ;;
9533                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
9534                 esac
9535         else
9536                 echo "I can't compile and run the test program." >&4
9537                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
9538         fi
9539         ;;
9540 esac
9541                 
9542 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
9543
9544 set d_dlsymun
9545 eval $setvar
9546
9547 : see if prototype for drand48 is available
9548 echo " "
9549 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
9550 eval $hasproto
9551
9552 : see if dup2 exists
9553 set dup2 d_dup2
9554 eval $inlibc
9555
9556 : see if eaccess exists
9557 set eaccess d_eaccess
9558 eval $inlibc
9559
9560 : see if endgrent exists
9561 set endgrent d_endgrent
9562 eval $inlibc
9563
9564 : see if endhostent exists
9565 set endhostent d_endhent
9566 eval $inlibc
9567
9568 : see if endnetent exists
9569 set endnetent d_endnent
9570 eval $inlibc
9571
9572 : see if endprotoent exists
9573 set endprotoent d_endpent
9574 eval $inlibc
9575
9576 : see if endpwent exists
9577 set endpwent d_endpwent
9578 eval $inlibc
9579
9580 : see if endservent exists
9581 set endservent d_endsent
9582 eval $inlibc
9583
9584 : Locate the flags for 'open()'
9585 echo " "
9586 $cat >try.c <<'EOCP'
9587 #include <sys/types.h>
9588 #ifdef I_FCNTL
9589 #include <fcntl.h>
9590 #endif
9591 #ifdef I_SYS_FILE
9592 #include <sys/file.h>
9593 #endif
9594 int main() {
9595         if(O_RDONLY);
9596 #ifdef O_TRUNC
9597         exit(0);
9598 #else
9599         exit(1);
9600 #endif
9601 }
9602 EOCP
9603 : check sys/file.h first to get FREAD on Sun
9604 if $test `./findhdr sys/file.h` && \
9605                 set try -DI_SYS_FILE && eval $compile; then
9606         h_sysfile=true;
9607         echo "<sys/file.h> defines the O_* constants..." >&4
9608         if $run ./try; then
9609                 echo "and you have the 3 argument form of open()." >&4
9610                 val="$define"
9611         else
9612                 echo "but not the 3 argument form of open().  Oh, well." >&4
9613                 val="$undef"
9614         fi
9615 elif $test `./findhdr fcntl.h` && \
9616                 set try -DI_FCNTL && eval $compile; then
9617         h_fcntl=true;
9618         echo "<fcntl.h> defines the O_* constants..." >&4
9619         if $run ./try; then
9620                 echo "and you have the 3 argument form of open()." >&4
9621                 val="$define"
9622         else
9623                 echo "but not the 3 argument form of open().  Oh, well." >&4
9624                 val="$undef"
9625         fi
9626 else
9627         val="$undef"
9628         echo "I can't find the O_* constant definitions!  You got problems." >&4
9629 fi
9630 set d_open3
9631 eval $setvar
9632 $rm -f try try.*
9633
9634 : see which of string.h or strings.h is needed
9635 echo " "
9636 strings=`./findhdr string.h`
9637 if $test "$strings" && $test -r "$strings"; then
9638         echo "Using <string.h> instead of <strings.h>." >&4
9639         val="$define"
9640 else
9641         val="$undef"
9642         strings=`./findhdr strings.h`
9643         if $test "$strings" && $test -r "$strings"; then
9644                 echo "Using <strings.h> instead of <string.h>." >&4
9645         else
9646                 echo "No string header found -- You'll surely have problems." >&4
9647         fi
9648 fi
9649 set i_string
9650 eval $setvar
9651 case "$i_string" in
9652 "$undef") strings=`./findhdr strings.h`;;
9653 *)        strings=`./findhdr string.h`;;
9654 esac
9655
9656 : check for non-blocking I/O stuff
9657 case "$h_sysfile" in
9658 true) echo "#include <sys/file.h>" > head.c;;
9659 *)
9660        case "$h_fcntl" in
9661        true) echo "#include <fcntl.h>" > head.c;;
9662        *) echo "#include <sys/fcntl.h>" > head.c;;
9663        esac
9664        ;;
9665 esac
9666 echo " "
9667 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
9668 case "$o_nonblock" in
9669 '')
9670         $cat head.c > try.c
9671         $cat >>try.c <<'EOCP'
9672 #include <stdio.h>
9673 int main() {
9674 #ifdef O_NONBLOCK
9675         printf("O_NONBLOCK\n");
9676         exit(0);
9677 #endif
9678 #ifdef O_NDELAY
9679         printf("O_NDELAY\n");
9680         exit(0);
9681 #endif
9682 #ifdef FNDELAY
9683         printf("FNDELAY\n");
9684         exit(0);
9685 #endif
9686         exit(0);
9687 }
9688 EOCP
9689         set try
9690         if eval $compile_ok; then
9691                 o_nonblock=`$run ./try`
9692                 case "$o_nonblock" in
9693                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
9694                 *) echo "Seems like we can use $o_nonblock.";;
9695                 esac
9696         else
9697                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
9698         fi
9699         ;;
9700 *) echo "Using $hint value $o_nonblock.";;
9701 esac
9702 $rm -f try try.* .out core
9703
9704 echo " "
9705 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
9706 case "$eagain" in
9707 '')
9708         $cat head.c > try.c
9709         $cat >>try.c <<EOCP
9710 #include <errno.h>
9711 #include <sys/types.h>
9712 #include <signal.h>
9713 #include <stdio.h> 
9714 #define MY_O_NONBLOCK $o_nonblock
9715 #ifndef errno  /* XXX need better Configure test */
9716 extern int errno;
9717 #endif
9718 #$i_unistd I_UNISTD
9719 #ifdef I_UNISTD
9720 #include <unistd.h>
9721 #endif
9722 #$i_string I_STRING
9723 #ifdef I_STRING
9724 #include <string.h>
9725 #else
9726 #include <strings.h>
9727 #endif
9728 $signal_t blech(x) int x; { exit(3); }
9729 EOCP
9730         $cat >> try.c <<'EOCP'
9731 int main()
9732 {
9733         int pd[2];
9734         int pu[2];
9735         char buf[1];
9736         char string[100];
9737
9738         pipe(pd);       /* Down: child -> parent */
9739         pipe(pu);       /* Up: parent -> child */
9740         if (0 != fork()) {
9741                 int ret;
9742                 close(pd[1]);   /* Parent reads from pd[0] */
9743                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
9744 #ifdef F_SETFL
9745                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
9746                         exit(1);
9747 #else
9748                 exit(4);
9749 #endif
9750                 signal(SIGALRM, blech);
9751                 alarm(5);
9752                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
9753                         exit(2);
9754                 sprintf(string, "%d\n", ret);
9755                 write(2, string, strlen(string));
9756                 alarm(0);
9757 #ifdef EAGAIN
9758                 if (errno == EAGAIN) {
9759                         printf("EAGAIN\n");
9760                         goto ok;
9761                 }
9762 #endif
9763 #ifdef EWOULDBLOCK
9764                 if (errno == EWOULDBLOCK)
9765                         printf("EWOULDBLOCK\n");
9766 #endif
9767         ok:
9768                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
9769                 sleep(2);                               /* Give it time to close our pipe */
9770                 alarm(5);
9771                 ret = read(pd[0], buf, 1);      /* Should read EOF */
9772                 alarm(0);
9773                 sprintf(string, "%d\n", ret);
9774                 write(3, string, strlen(string));
9775                 exit(0);
9776         }
9777
9778         close(pd[0]);                   /* We write to pd[1] */
9779         close(pu[1]);                   /* We read from pu[0] */
9780         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
9781         close(pd[1]);                   /* Pipe pd is now fully closed! */
9782         exit(0);                                /* Bye bye, thank you for playing! */
9783 }
9784 EOCP
9785         set try
9786         if eval $compile_ok; then
9787                 echo "$startsh" >mtry
9788                 echo "$run ./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
9789                 chmod +x mtry
9790                 ./mtry >/dev/null 2>&1
9791                 case $? in
9792                 0) eagain=`$cat try.out`;;
9793                 1) echo "Could not perform non-blocking setting!";;
9794                 2) echo "I did a successful read() for something that was not there!";;
9795                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
9796                 4) echo "Could not find F_SETFL!";;
9797                 *) echo "Something terribly wrong happened during testing.";;
9798                 esac
9799                 rd_nodata=`$cat try.ret`
9800                 echo "A read() system call with no data present returns $rd_nodata."
9801                 case "$rd_nodata" in
9802                 0|-1) ;;
9803                 *)
9804                         echo "(That's peculiar, fixing that to be -1.)"
9805                         rd_nodata=-1
9806                         ;;
9807                 esac
9808                 case "$eagain" in
9809                 '')
9810                         echo "Forcing errno EAGAIN on read() with no data available."
9811                         eagain=EAGAIN
9812                         ;;
9813                 *)
9814                         echo "Your read() sets errno to $eagain when no data is available."
9815                         ;;
9816                 esac
9817                 status=`$cat try.err`
9818                 case "$status" in
9819                 0) echo "And it correctly returns 0 to signal EOF.";;
9820                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
9821                 *) echo "However, your read() returns '$status' on EOF??";;
9822                 esac
9823                 val="$define"
9824                 if test "$status" = "$rd_nodata"; then
9825                         echo "WARNING: you can't distinguish between EOF and no data!"
9826                         val="$undef"
9827                 fi
9828         else
9829                 echo "I can't compile the test program--assuming errno EAGAIN will do."
9830                 eagain=EAGAIN
9831         fi
9832         set d_eofnblk
9833         eval $setvar
9834         ;;
9835 *)
9836         echo "Using $hint value $eagain."
9837         echo "Your read() returns $rd_nodata when no data is present."
9838         case "$d_eofnblk" in
9839         "$define") echo "And you can see EOF because read() returns 0.";;
9840         "$undef") echo "But you can't see EOF status from read() returned value.";;
9841         *)
9842                 echo "(Assuming you can't see EOF status from read anyway.)"
9843                 d_eofnblk=$undef
9844                 ;;
9845         esac
9846         ;;
9847 esac
9848 $rm -f try try.* .out core head.c mtry
9849
9850 : see if fchdir exists
9851 set fchdir d_fchdir
9852 eval $inlibc
9853
9854 : see if fchmod exists
9855 set fchmod d_fchmod
9856 eval $inlibc
9857
9858 : see if fchown exists
9859 set fchown d_fchown
9860 eval $inlibc
9861
9862 : see if this is an fcntl system
9863 set fcntl d_fcntl
9864 eval $inlibc
9865
9866 echo " "
9867 : See if fcntl-based locking works.
9868 $cat >try.c <<EOCP
9869 #include <stdlib.h>
9870 #include <unistd.h>
9871 #include <fcntl.h>
9872 #include <signal.h>
9873 $signal_t blech(x) int x; { exit(3); }
9874 int main() {
9875 #if defined(F_SETLK) && defined(F_SETLKW)
9876      struct flock flock;
9877      int retval, fd;
9878      fd = open("try.c", O_RDONLY);
9879      flock.l_type = F_RDLCK;
9880      flock.l_whence = SEEK_SET;
9881      flock.l_start = flock.l_len = 0;
9882      signal(SIGALRM, blech);
9883      alarm(10);
9884      retval = fcntl(fd, F_SETLK, &flock);
9885      close(fd);
9886      (retval < 0 ? exit(2) : exit(0));
9887 #else
9888      exit(2);
9889 #endif
9890 }
9891 EOCP
9892 echo "Checking if fcntl-based file locking works... "
9893 case "$d_fcntl" in
9894 "$define")
9895         set try
9896         if eval $compile_ok; then
9897                 if $run ./try; then
9898                         echo "Yes, it seems to work."
9899                         val="$define"
9900                 else
9901                         echo "Nope, it didn't work."
9902                         val="$undef"
9903                         case "$?" in
9904                         3) $cat >&4 <<EOM
9905 ***
9906 *** I had to forcibly timeout from fcntl(..., F_SETLK, ...).
9907 *** This is (almost) impossible.
9908 *** If your NFS lock daemons are not feeling well, something like
9909 *** this may happen, please investigate.  Cannot continue, aborting.
9910 ***
9911 EOM
9912                                 exit 1
9913                                 ;;
9914                         esac
9915                 fi
9916         else
9917                 echo "I'm unable to compile the test program, so I'll assume not."
9918                 val="$undef"
9919         fi
9920         ;;
9921 *) val="$undef";
9922         echo "Nope, since you don't even have fcntl()."
9923         ;;
9924 esac
9925 set d_fcntl_can_lock
9926 eval $setvar
9927 $rm -f try*
9928
9929
9930 : see if sys/select.h has to be included
9931 set sys/select.h i_sysselct
9932 eval $inhdr
9933
9934 : see if we should include time.h, sys/time.h, or both
9935 echo " "
9936 if test "X$timeincl" = X; then
9937         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9938         $echo $n "I'm now running the test program...$c"
9939         $cat >try.c <<'EOCP'
9940 #include <sys/types.h>
9941 #ifdef I_TIME
9942 #include <time.h>
9943 #endif
9944 #ifdef I_SYSTIME
9945 #ifdef SYSTIMEKERNEL
9946 #define KERNEL
9947 #endif
9948 #include <sys/time.h>
9949 #endif
9950 #ifdef I_SYSSELECT
9951 #include <sys/select.h>
9952 #endif
9953 int main()
9954 {
9955         struct tm foo;
9956 #ifdef S_TIMEVAL
9957         struct timeval bar;
9958 #endif
9959 #ifdef S_TIMEZONE
9960         struct timezone tzp;
9961 #endif
9962         if (foo.tm_sec == foo.tm_sec)
9963                 exit(0);
9964 #ifdef S_TIMEVAL
9965         if (bar.tv_sec == bar.tv_sec)
9966                 exit(0);
9967 #endif
9968         exit(1);
9969 }
9970 EOCP
9971         flags=''
9972         for s_timezone in '-DS_TIMEZONE' ''; do
9973         sysselect=''
9974         for s_timeval in '-DS_TIMEVAL' ''; do
9975         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9976         for i_time in '' '-DI_TIME'; do
9977         for i_systime in '-DI_SYSTIME' ''; do
9978                 case "$flags" in
9979                 '') $echo $n ".$c"
9980                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9981                         if eval $compile; then
9982                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9983                                 shift
9984                                 flags="$*"
9985                                 echo " "
9986                                 $echo $n "Succeeded with $flags$c"
9987                         fi
9988                         ;;
9989                 esac
9990         done
9991         done
9992         done
9993         done
9994         done
9995         timeincl=''
9996         echo " "
9997         case "$flags" in
9998         *SYSTIMEKERNEL*) i_systimek="$define"
9999                 timeincl=`./findhdr sys/time.h`
10000                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
10001         *) i_systimek="$undef";;
10002         esac
10003         case "$flags" in
10004         *I_TIME*) i_time="$define"
10005                 timeincl=`./findhdr time.h`" $timeincl"
10006                 echo "We'll include <time.h>." >&4;;
10007         *) i_time="$undef";;
10008         esac
10009         case "$flags" in
10010         *I_SYSTIME*) i_systime="$define"
10011                 timeincl=`./findhdr sys/time.h`" $timeincl"
10012                 echo "We'll include <sys/time.h>." >&4;;
10013         *) i_systime="$undef";;
10014         esac
10015         $rm -f try.c try
10016 fi
10017
10018 : check for fd_set items
10019 $cat <<EOM
10020
10021 Checking to see how well your C compiler handles fd_set and friends ...
10022 EOM
10023 $cat >try.c <<EOCP
10024 #$i_systime I_SYS_TIME
10025 #$i_sysselct I_SYS_SELECT
10026 #$d_socket HAS_SOCKET
10027 #include <sys/types.h>
10028 #ifdef HAS_SOCKET
10029 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
10030 #endif
10031 #ifdef I_SYS_TIME
10032 #include <sys/time.h>
10033 #endif
10034 #ifdef I_SYS_SELECT
10035 #include <sys/select.h>
10036 #endif
10037 int main() {
10038         fd_set fds;
10039
10040 #ifdef TRYBITS
10041         if(fds.fds_bits);
10042 #endif
10043
10044 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
10045         exit(0);
10046 #else
10047         exit(1);
10048 #endif
10049 }
10050 EOCP
10051 set try -DTRYBITS
10052 if eval $compile; then
10053         d_fds_bits="$define"
10054         d_fd_set="$define"
10055         echo "Well, your system knows about the normal fd_set typedef..." >&4
10056         if $run ./try; then
10057                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
10058                 d_fd_macros="$define"
10059         else
10060                 $cat >&4 <<'EOM'
10061 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
10062 EOM
10063                 d_fd_macros="$undef"
10064         fi
10065 else
10066         $cat <<'EOM'
10067 Hmm, your compiler has some difficulty with fd_set.  Checking further...
10068 EOM
10069         set try
10070         if eval $compile; then
10071                 d_fds_bits="$undef"
10072                 d_fd_set="$define"
10073                 echo "Well, your system has some sort of fd_set available..." >&4
10074                 if $run ./try; then
10075                         echo "and you have the normal fd_set macros." >&4
10076                         d_fd_macros="$define"
10077                 else
10078                         $cat <<'EOM'
10079 but not the normal fd_set macros!  Gross!  More work for me...
10080 EOM
10081                         d_fd_macros="$undef"
10082                 fi
10083         else
10084         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
10085                 d_fd_set="$undef"
10086                 d_fds_bits="$undef"
10087                 d_fd_macros="$undef"
10088         fi
10089 fi
10090 $rm -f try try.*
10091
10092 : see if fgetpos exists
10093 set fgetpos d_fgetpos
10094 eval $inlibc
10095
10096 : see if flock exists
10097 set flock d_flock
10098 eval $inlibc
10099
10100 : see if this is a sys/file.h system
10101 val=''
10102 set sys/file.h val
10103 eval $inhdr
10104
10105 : do we need to include sys/file.h ?
10106 case "$val" in
10107 "$define")
10108         echo " "
10109         if $h_sysfile; then
10110                 val="$define"
10111                 echo "We'll be including <sys/file.h>." >&4
10112         else
10113                 val="$undef"
10114                 echo "We won't be including <sys/file.h>." >&4
10115         fi
10116         ;;
10117 *)
10118         h_sysfile=false
10119         ;;
10120 esac
10121 set i_sysfile
10122 eval $setvar
10123
10124 : see if prototype for flock is available
10125 echo " "
10126 set d_flockproto flock $i_sysfile sys/file.h
10127 eval $hasproto
10128
10129 : see if fork exists
10130 set fork d_fork
10131 eval $inlibc
10132
10133 : see if pathconf exists
10134 set pathconf d_pathconf
10135 eval $inlibc
10136
10137 : see if fpathconf exists
10138 set fpathconf d_fpathconf
10139 eval $inlibc
10140
10141
10142 : check for fpos64_t
10143 echo " "
10144 echo "Checking to see if you have fpos64_t..." >&4
10145 $cat >try.c <<EOCP
10146 #include <stdio.h>
10147 int main() { fpos64_t x = 7; }
10148 EOCP
10149 set try
10150 if eval $compile; then
10151         val="$define"
10152         echo "You have fpos64_t."
10153 else
10154         val="$undef"
10155         echo "You do not have fpos64_t."
10156         case "$fpossize" in
10157         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
10158         esac
10159 fi
10160 $rm -f try.* try
10161 set d_fpos64_t
10162 eval $setvar
10163
10164 : see if frexpl exists
10165 set frexpl d_frexpl
10166 eval $inlibc
10167
10168 : see if this is a sys/param system
10169 set sys/param.h i_sysparam
10170 eval $inhdr
10171
10172 : see if this is a sys/mount.h system
10173 set sys/mount.h i_sysmount
10174 eval $inhdr
10175
10176
10177 echo " "
10178 echo "Checking to see if your system supports struct fs_data..." >&4
10179 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
10180 eval $hasstruct
10181 case "$d_fs_data_s" in
10182 "$define")      echo "Yes, it does."   ;;
10183 *)              echo "No, it doesn't." ;;
10184 esac
10185
10186 : see if fseeko exists
10187 set fseeko d_fseeko
10188 eval $inlibc
10189 case "$longsize" in
10190 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
10191 esac
10192
10193 : see if fsetpos exists
10194 set fsetpos d_fsetpos
10195 eval $inlibc
10196
10197
10198 : see if fstatfs exists
10199 set fstatfs d_fstatfs
10200 eval $inlibc
10201
10202
10203 : see if statvfs exists
10204 set statvfs d_statvfs
10205 eval $inlibc
10206
10207 : see if fstatvfs exists
10208 set fstatvfs d_fstatvfs
10209 eval $inlibc
10210
10211
10212 : see if fsync exists
10213 set fsync d_fsync
10214 eval $inlibc
10215
10216 : see if ftello exists
10217 set ftello d_ftello
10218 eval $inlibc
10219 case "$longsize" in
10220 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
10221 esac
10222
10223 : see if getcwd exists
10224 set getcwd d_getcwd
10225 eval $inlibc
10226
10227 : see if getespwnam exists
10228 set getespwnam d_getespwnam
10229 eval $inlibc
10230
10231
10232 : see if getfsstat exists
10233 set getfsstat d_getfsstat
10234 eval $inlibc
10235
10236 : see if getgrent exists
10237 set getgrent d_getgrent
10238 eval $inlibc
10239
10240 : see if gethostbyaddr exists
10241 set gethostbyaddr d_gethbyaddr
10242 eval $inlibc
10243
10244 : see if gethostbyname exists
10245 set gethostbyname d_gethbyname
10246 eval $inlibc
10247
10248 : see if gethostent exists
10249 set gethostent d_gethent
10250 eval $inlibc
10251
10252 : see how we will look up host name
10253 echo " "
10254 call=''
10255 if set gethostname val -f d_gethname; eval $csym; $val; then
10256         echo 'gethostname() found.' >&4
10257         d_gethname="$define"
10258         call=gethostname
10259 fi
10260 if set uname val -f d_uname; eval $csym; $val; then
10261         if ./xenix; then
10262                 $cat <<'EOM'
10263 uname() was found, but you're running xenix, and older versions of xenix
10264 have a broken uname(). If you don't really know whether your xenix is old
10265 enough to have a broken system call, use the default answer.
10266
10267 EOM
10268                 dflt=y
10269                 case "$d_uname" in
10270                 "$define") dflt=n;;
10271                 esac
10272                 rp='Is your uname() broken?'
10273                 . ./myread
10274                 case "$ans" in
10275                 n*) d_uname="$define"; call=uname;;
10276                 esac
10277         else
10278                 echo 'uname() found.' >&4
10279                 d_uname="$define"
10280                 case "$call" in
10281                 '') call=uname ;;
10282                 esac
10283         fi
10284 fi
10285 case "$d_gethname" in
10286 '') d_gethname="$undef";;
10287 esac
10288 case "$d_uname" in
10289 '') d_uname="$undef";;
10290 esac
10291 case "$d_uname$d_gethname" in
10292 *define*)
10293         dflt=n
10294         cat <<EOM
10295  
10296 Every now and then someone has a $call() that lies about the hostname
10297 but can't be fixed for political or economic reasons.  If you wish, I can
10298 pretend $call() isn't there and maybe compute hostname at run-time
10299 thanks to the '$phostname' command.
10300
10301 EOM
10302         rp="Shall I ignore $call() from now on?"
10303         . ./myread
10304         case "$ans" in
10305         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
10306         esac;;
10307 esac
10308 case "$phostname" in
10309 '') aphostname='';;
10310 *) case "$aphostname" in
10311         /*) ;;
10312         *) set X $phostname
10313                 shift
10314                 file=$1
10315                 shift
10316                 file=`./loc $file $file $pth`
10317                 aphostname=`echo $file $*`
10318                 ;;
10319         esac
10320         ;;
10321 esac
10322 case "$d_uname$d_gethname" in
10323 *define*) ;;
10324 *)
10325         case "$phostname" in
10326         '')
10327                 echo "There will be no way for $package to get your hostname." >&4;;
10328         *)
10329         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
10330                 ;;
10331         esac;;
10332 esac
10333 case "$d_phostname" in
10334 '') d_phostname="$undef";;
10335 esac
10336
10337 : see if this is a netdb.h system
10338 set netdb.h i_netdb
10339 eval $inhdr
10340
10341 : see if prototypes for various gethostxxx netdb.h functions are available
10342 echo " "
10343 set d_gethostprotos gethostent $i_netdb netdb.h
10344 eval $hasproto
10345
10346 : see if getitimer exists
10347 set getitimer d_getitimer
10348 eval $inlibc
10349
10350 : see if getlogin exists
10351 set getlogin d_getlogin
10352 eval $inlibc
10353
10354 : see if getmnt exists
10355 set getmnt d_getmnt
10356 eval $inlibc
10357
10358 : see if getmntent exists
10359 set getmntent d_getmntent
10360 eval $inlibc
10361
10362 : see if getnetbyaddr exists
10363 set getnetbyaddr d_getnbyaddr
10364 eval $inlibc
10365
10366 : see if getnetbyname exists
10367 set getnetbyname d_getnbyname
10368 eval $inlibc
10369
10370 : see if getnetent exists
10371 set getnetent d_getnent
10372 eval $inlibc
10373
10374 : see if prototypes for various getnetxxx netdb.h functions are available
10375 echo " "
10376 set d_getnetprotos getnetent $i_netdb netdb.h
10377 eval $hasproto
10378
10379 : see if getpagesize exists
10380 set getpagesize d_getpagsz
10381 eval $inlibc
10382
10383
10384 : see if getprotobyname exists
10385 set getprotobyname d_getpbyname
10386 eval $inlibc
10387
10388 : see if getprotobynumber exists
10389 set getprotobynumber d_getpbynumber
10390 eval $inlibc
10391
10392 : see if getprotoent exists
10393 set getprotoent d_getpent
10394 eval $inlibc
10395
10396 : see if getpgid exists
10397 set getpgid d_getpgid
10398 eval $inlibc
10399
10400 : see if getpgrp2 exists
10401 set getpgrp2 d_getpgrp2
10402 eval $inlibc
10403
10404 : see if getppid exists
10405 set getppid d_getppid
10406 eval $inlibc
10407
10408 : see if getpriority exists
10409 set getpriority d_getprior
10410 eval $inlibc
10411
10412 : see if prototypes for various getprotoxxx netdb.h functions are available
10413 echo " "
10414 set d_getprotoprotos getprotoent $i_netdb netdb.h
10415 eval $hasproto
10416
10417 : see if getprpwnam exists
10418 set getprpwnam d_getprpwnam
10419 eval $inlibc
10420
10421 : see if getpwent exists
10422 set getpwent d_getpwent
10423 eval $inlibc
10424
10425
10426 : see if getservbyname exists
10427 set getservbyname d_getsbyname
10428 eval $inlibc
10429
10430 : see if getservbyport exists
10431 set getservbyport d_getsbyport
10432 eval $inlibc
10433
10434 : see if getservent exists
10435 set getservent d_getsent
10436 eval $inlibc
10437
10438 : see if prototypes for various getservxxx netdb.h functions are available
10439 echo " "
10440 set d_getservprotos getservent $i_netdb netdb.h
10441 eval $hasproto
10442
10443 : see if getspnam exists
10444 set getspnam d_getspnam
10445 eval $inlibc
10446
10447 : see if gettimeofday or ftime exists
10448 set gettimeofday d_gettimeod
10449 eval $inlibc
10450 case "$d_gettimeod" in
10451 "$undef")
10452         set ftime d_ftime 
10453         eval $inlibc
10454         ;;
10455 *)
10456         val="$undef"; set d_ftime; eval $setvar
10457         ;;
10458 esac
10459 case "$d_gettimeod$d_ftime" in
10460 "$undef$undef")
10461         echo " "
10462         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
10463         ;;
10464 esac
10465
10466 : see if this is an grp system
10467 set grp.h i_grp
10468 eval $inhdr
10469
10470 case "$i_grp" in
10471 $define)
10472         xxx=`./findhdr grp.h`
10473         $cppstdin $cppflags $cppminus < $xxx >$$.h
10474
10475         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
10476                 val="$define"
10477         else
10478                 val="$undef"
10479         fi
10480         set d_grpasswd
10481         eval $setvar
10482
10483         $rm -f $$.h
10484         ;;
10485 *)
10486         val="$undef";
10487         set d_grpasswd; eval $setvar
10488         ;;
10489 esac
10490
10491 : see if hasmntopt exists
10492 set hasmntopt d_hasmntopt
10493 eval $inlibc
10494
10495 : see if this is a netinet/in.h or sys/in.h system
10496 set netinet/in.h i_niin sys/in.h i_sysin
10497 eval $inhdr
10498
10499 : see if arpa/inet.h has to be included
10500 set arpa/inet.h i_arpainet
10501 eval $inhdr
10502
10503 : see if htonl --and friends-- exists
10504 val=''
10505 set htonl val
10506 eval $inlibc
10507
10508 : Maybe they are macros.
10509 case "$val" in
10510 $undef)
10511         $cat >htonl.c <<EOM
10512 #include <stdio.h>
10513 #include <sys/types.h>
10514 #$i_niin I_NETINET_IN
10515 #$i_sysin I_SYS_IN
10516 #$i_arpainet I_ARPA_INET
10517 #ifdef I_NETINET_IN
10518 #include <netinet/in.h>
10519 #endif
10520 #ifdef I_SYS_IN
10521 #include <sys/in.h>
10522 #endif
10523 #ifdef I_ARPA_INET
10524 #include <arpa/inet.h>
10525 #endif
10526 #ifdef htonl
10527 printf("Defined as a macro.");
10528 #endif
10529 EOM
10530         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
10531         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
10532                 val="$define"
10533                 echo "But it seems to be defined as a macro." >&4
10534         fi
10535         $rm -f htonl.?
10536         ;;
10537 esac
10538 set d_htonl
10539 eval $setvar
10540
10541 : see if iconv exists
10542 set iconv d_iconv
10543 eval $inlibc
10544
10545 : index or strchr
10546 echo " "
10547 if set index val -f; eval $csym; $val; then
10548         if set strchr val -f d_strchr; eval $csym; $val; then
10549                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
10550                         val="$define"
10551                         vali="$undef"
10552                         echo "strchr() found." >&4
10553                 else
10554                         val="$undef"
10555                         vali="$define"
10556                         echo "index() found." >&4
10557                 fi
10558         else
10559                 val="$undef"
10560                 vali="$define"
10561                 echo "index() found." >&4
10562         fi
10563 else
10564         if set strchr val -f d_strchr; eval $csym; $val; then
10565                 val="$define"
10566                 vali="$undef"
10567                 echo "strchr() found." >&4
10568         else
10569                 echo "No index() or strchr() found!" >&4
10570                 val="$undef"
10571                 vali="$undef"
10572         fi
10573 fi
10574 set d_strchr; eval $setvar
10575 val="$vali"
10576 set d_index; eval $setvar
10577
10578 : check whether inet_aton exists
10579 set inet_aton d_inetaton
10580 eval $inlibc
10581
10582 : Look for isascii
10583 echo " "
10584 $cat >isascii.c <<'EOCP'
10585 #include <stdio.h>
10586 #include <ctype.h>
10587 int main() {
10588         int c = 'A';
10589         if (isascii(c))
10590                 exit(0);
10591         else
10592                 exit(1);
10593 }
10594 EOCP
10595 set isascii
10596 if eval $compile; then
10597         echo "isascii() found." >&4
10598         val="$define"
10599 else
10600         echo "isascii() NOT found." >&4
10601         val="$undef"
10602 fi
10603 set d_isascii
10604 eval $setvar
10605 $rm -f isascii*
10606
10607 : see if isnan exists
10608 set isnan d_isnan
10609 eval $inlibc
10610
10611 : see if isnanl exists
10612 set isnanl d_isnanl
10613 eval $inlibc
10614
10615 : see if killpg exists
10616 set killpg d_killpg
10617 eval $inlibc
10618
10619 : see if lchown exists
10620 echo " "
10621 $cat > try.c <<'EOCP'
10622 /* System header to define __stub macros and hopefully few prototypes,
10623     which can conflict with char lchown(); below.  */
10624 #include <assert.h>
10625 /* Override any gcc2 internal prototype to avoid an error.  */
10626 /* We use char because int might match the return type of a gcc2
10627    builtin and then its argument prototype would still apply.  */
10628 char lchown();
10629 int main() {
10630     /*  The GNU C library defines this for functions which it implements
10631         to always fail with ENOSYS.  Some functions are actually named
10632         something starting with __ and the normal name is an alias.  */
10633 #if defined (__stub_lchown) || defined (__stub___lchown)
10634 choke me
10635 #else
10636 lchown();
10637 #endif
10638 ; return 0; }
10639 EOCP
10640 set try
10641 if eval $compile; then
10642     $echo "lchown() found." >&4
10643     val="$define"
10644 else
10645     $echo "lchown() NOT found." >&4
10646     val="$undef"
10647 fi
10648 set d_lchown
10649 eval $setvar
10650
10651 : See if number of significant digits in a double precision number is known
10652 echo " "
10653 $cat >ldbl_dig.c <<EOM
10654 #$i_limits I_LIMITS
10655 #$i_float I_FLOAT
10656 #ifdef I_LIMITS
10657 #include <limits.h>
10658 #endif
10659 #ifdef I_FLOAT
10660 #include <float.h>
10661 #endif
10662 #ifdef LDBL_DIG
10663 printf("Contains LDBL_DIG");
10664 #endif
10665 EOM
10666 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
10667 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
10668         echo "LDBL_DIG found." >&4
10669         val="$define"
10670 else
10671         echo "LDBL_DIG NOT found." >&4
10672         val="$undef"
10673 fi
10674 $rm -f ldbl_dig.?
10675 set d_ldbl_dig
10676 eval $setvar
10677
10678 : see if link exists
10679 set link d_link
10680 eval $inlibc
10681
10682 : see if localeconv exists
10683 set localeconv d_locconv
10684 eval $inlibc
10685
10686 : see if lockf exists
10687 set lockf d_lockf
10688 eval $inlibc
10689
10690 : see if prototype for lseek is available
10691 echo " "
10692 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
10693 eval $hasproto
10694
10695 : see if lstat exists
10696 set lstat d_lstat
10697 eval $inlibc
10698
10699 : see if madvise exists
10700 set madvise d_madvise
10701 eval $inlibc
10702
10703 : see if mblen exists
10704 set mblen d_mblen
10705 eval $inlibc
10706
10707 : see if mbstowcs exists
10708 set mbstowcs d_mbstowcs
10709 eval $inlibc
10710
10711 : see if mbtowc exists
10712 set mbtowc d_mbtowc
10713 eval $inlibc
10714
10715 : see if memchr exists
10716 set memchr d_memchr
10717 eval $inlibc
10718
10719 : see if memcmp exists
10720 set memcmp d_memcmp
10721 eval $inlibc
10722
10723 : see if memcpy exists
10724 set memcpy d_memcpy
10725 eval $inlibc
10726
10727 : see if memmove exists
10728 set memmove d_memmove
10729 eval $inlibc
10730
10731 : see if memset exists
10732 set memset d_memset
10733 eval $inlibc
10734
10735 : see if mkdir exists
10736 set mkdir d_mkdir
10737 eval $inlibc
10738
10739 : see if mkdtemp exists
10740 set mkdtemp d_mkdtemp
10741 eval $inlibc
10742
10743 : see if mkfifo exists
10744 set mkfifo d_mkfifo
10745 eval $inlibc
10746
10747 : see if mkstemp exists
10748 set mkstemp d_mkstemp
10749 eval $inlibc
10750
10751 : see if mkstemps exists
10752 set mkstemps d_mkstemps
10753 eval $inlibc
10754
10755 : see if mktime exists
10756 set mktime d_mktime
10757 eval $inlibc
10758
10759 : see if this is a sys/mman.h system
10760 set sys/mman.h i_sysmman
10761 eval $inhdr
10762
10763 : see if mmap exists
10764 set mmap d_mmap
10765 eval $inlibc
10766 : see what shmat returns
10767 : default to something harmless
10768 mmaptype='void *'
10769 case "$i_sysmman$d_mmap" in
10770 "$define$define")
10771         $cat >mmap.c <<'END'
10772 #include <sys/mman.h>
10773 void *mmap();
10774 END
10775         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10776                 mmaptype='void *'
10777         else
10778                 mmaptype='caddr_t'
10779         fi
10780         echo "and it returns ($mmaptype)." >&4
10781         ;;
10782 esac
10783
10784
10785
10786 : see if modfl exists
10787 set modfl d_modfl
10788 eval $inlibc
10789
10790 d_modfl_pow32_bug="$undef"
10791
10792 case "$d_longdbl$d_modfl" in
10793 $define$define)
10794         $cat <<EOM
10795 Checking to see whether your modfl() is okay for large values...
10796 EOM
10797 $cat >try.c <<EOCP
10798 #include <math.h> 
10799 #include <stdio.h>
10800 int main() {
10801     long double nv = 4294967303.15;
10802     long double v, w;
10803     v = modfl(nv, &w);         
10804 #ifdef __GLIBC__
10805     printf("glibc");
10806 #endif
10807     printf(" %"$sPRIfldbl" %"$sPRIfldbl" %"$sPRIfldbl"\n", nv, v, w);
10808     return 0;
10809 }
10810 EOCP
10811         case "$osname:$gccversion" in
10812         aix:)   saveccflags="$ccflags"
10813                 ccflags="$ccflags -qlongdouble" ;; # to avoid core dump
10814         esac
10815         set try
10816         if eval $compile; then
10817                 foo=`$run ./try`
10818                 case "$foo" in
10819                 *" 4294967303.150000 1.150000 4294967302.000000")
10820                         echo >&4 "Your modfl() is broken for large values."
10821                         d_modfl_pow32_bug="$define"
10822                         case "$foo" in
10823                         glibc)  echo >&4 "You should upgrade your glibc to at least 2.2.2 to get a fixed modfl()."
10824                         ;;
10825                         esac
10826                         ;;
10827                 *" 4294967303.150000 0.150000 4294967303.000000")
10828                         echo >&4 "Your modfl() seems okay for large values."
10829                         ;;
10830                 *)      echo >&4 "I don't understand your modfl() at all."
10831                         d_modfl="$undef"
10832                         ;;
10833                 esac
10834                 $rm -f try.* try core core.try.*
10835         else
10836                 echo "I cannot figure out whether your modfl() is okay, assuming it isn't."
10837                 d_modfl="$undef"
10838         fi
10839         case "$osname:$gccversion" in
10840         aix:)   ccflags="$saveccflags" ;; # restore
10841         esac
10842         ;;
10843 esac
10844
10845 : see if mprotect exists
10846 set mprotect d_mprotect
10847 eval $inlibc
10848
10849 : see if msgctl exists
10850 set msgctl d_msgctl
10851 eval $inlibc
10852
10853 : see if msgget exists
10854 set msgget d_msgget
10855 eval $inlibc
10856
10857 : see if msgsnd exists
10858 set msgsnd d_msgsnd
10859 eval $inlibc
10860
10861 : see if msgrcv exists
10862 set msgrcv d_msgrcv
10863 eval $inlibc
10864
10865 : see how much of the 'msg*(2)' library is present.
10866 h_msg=true
10867 echo " "
10868 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10869 *"$undef"*) h_msg=false;;
10870 esac
10871 case "$osname" in
10872 freebsd)
10873     case "`ipcs 2>&1`" in
10874     "SVID messages"*"not configured"*)
10875         echo "Your $osname does not have the msg*(2) configured." >&4
10876         h_msg=false
10877         val="$undef"
10878         set msgctl d_msgctl
10879         eval $setvar
10880         set msgget d_msgget
10881         eval $setvar
10882         set msgsnd d_msgsnd
10883         eval $setvar
10884         set msgrcv d_msgrcv
10885         eval $setvar
10886         ;;
10887     esac
10888     ;;
10889 esac
10890 : we could also check for sys/ipc.h ...
10891 if $h_msg && $test `./findhdr sys/msg.h`; then
10892         echo "You have the full msg*(2) library." >&4
10893         val="$define"
10894 else
10895         echo "You don't have the full msg*(2) library." >&4
10896         val="$undef"
10897 fi
10898 set d_msg
10899 eval $setvar
10900
10901
10902 echo " "
10903 echo "Checking to see if your system supports struct msghdr..." >&4
10904 set d_msghdr_s msghdr $i_systypes sys/types.h $d_socket sys/socket.h $i_sysuio sys/uio.h
10905 eval $hasstruct
10906 case "$d_msghdr_s" in
10907 "$define")      echo "Yes, it does."   ;;
10908 *)              echo "No, it doesn't." ;;
10909 esac
10910
10911
10912 : see if msync exists
10913 set msync d_msync
10914 eval $inlibc
10915
10916 : see if munmap exists
10917 set munmap d_munmap
10918 eval $inlibc
10919
10920 : see if nice exists
10921 set nice d_nice
10922 eval $inlibc
10923
10924 : see if this is a langinfo.h system
10925 set langinfo.h i_langinfo
10926 eval $inhdr
10927
10928 : see if nl_langinfo exists
10929 set nl_langinfo d_nl_langinfo
10930 eval $inlibc
10931
10932 : check for length of character
10933 echo " "
10934 case "$charsize" in
10935 '')
10936         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10937         $cat >try.c <<'EOCP'
10938 #include <stdio.h>
10939 int main()
10940 {
10941     printf("%d\n", (int)sizeof(char));
10942     exit(0);
10943 }
10944 EOCP
10945         set try
10946         if eval $compile_ok; then
10947                 dflt=`$run ./try`
10948         else
10949                 dflt='1'
10950                 echo "(I can't seem to compile the test program.  Guessing...)"
10951         fi
10952         ;;
10953 *)
10954         dflt="$charsize"
10955         ;;
10956 esac
10957 rp="What is the size of a character (in bytes)?"
10958 . ./myread
10959 charsize="$ans"
10960 $rm -f try.c try
10961
10962 : check for volatile keyword
10963 echo " "
10964 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
10965 $cat >try.c <<'EOCP'
10966 int main()
10967 {
10968         typedef struct _goo_struct goo_struct;
10969         goo_struct * volatile goo = ((goo_struct *)0);
10970         struct _goo_struct {
10971                 long long_int;
10972                 int reg_int;
10973                 char char_var;
10974         };
10975         typedef unsigned short foo_t;
10976         char *volatile foo;
10977         volatile int bar;
10978         volatile foo_t blech;
10979         foo = foo;
10980 }
10981 EOCP
10982 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
10983         val="$define"
10984         echo "Yup, it does."
10985 else
10986         val="$undef"
10987         echo "Nope, it doesn't."
10988 fi
10989 set d_volatile
10990 eval $setvar
10991 $rm -f try.*
10992
10993
10994 echo " "
10995 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10996
10997 case "$use64bitint:$d_quad:$quadtype" in
10998 define:define:?*)
10999         ivtype="$quadtype"
11000         uvtype="$uquadtype"
11001         ivsize=8
11002         uvsize=8
11003         ;;
11004 *)      ivtype="long"
11005         uvtype="unsigned long"
11006         ivsize=$longsize
11007         uvsize=$longsize
11008         ;;
11009 esac
11010
11011 case "$uselongdouble:$d_longdbl" in
11012 define:define)
11013         nvtype="long double"
11014         nvsize=$longdblsize
11015         ;;
11016 *)      nvtype=double
11017         nvsize=$doublesize
11018         ;;
11019 esac
11020
11021 $echo "(IV will be "$ivtype", $ivsize bytes)"
11022 $echo "(UV will be "$uvtype", $uvsize bytes)"
11023 $echo "(NV will be "$nvtype", $nvsize bytes)"
11024
11025 $cat >try.c <<EOCP
11026 #$i_inttypes I_INTTYPES
11027 #ifdef I_INTTYPES
11028 #include <inttypes.h>
11029 #endif
11030 #include <stdio.h>
11031 int main() {
11032 #ifdef INT8
11033    int8_t i =  INT8_MAX;
11034   uint8_t u = UINT8_MAX;
11035   printf("int8_t\n");
11036 #endif
11037 #ifdef INT16
11038    int16_t i =  INT16_MAX;
11039   uint16_t i = UINT16_MAX;
11040   printf("int16_t\n");
11041 #endif
11042 #ifdef INT32
11043    int32_t i =  INT32_MAX;
11044   uint32_t u = UINT32_MAX;
11045   printf("int32_t\n");
11046 #endif
11047 }
11048 EOCP
11049
11050 case "$i8type" in
11051 '')     case "$charsize" in
11052         1)      i8type=char
11053                 u8type="unsigned char"
11054                 i8size=$charsize
11055                 u8size=$charsize
11056                 ;;
11057         esac
11058         ;;
11059 esac
11060 case "$i8type" in
11061 '')     set try -DINT8
11062         if eval $compile; then
11063                 case "`$run ./try`" in
11064                 int8_t) i8type=int8_t
11065                         u8type=uint8_t
11066                         i8size=1
11067                         u8size=1
11068                         ;;
11069                 esac
11070         fi
11071         ;;
11072 esac
11073 case "$i8type" in
11074 '')     if $test $charsize -ge 1; then
11075                 i8type=char
11076                 u8type="unsigned char"
11077                 i8size=$charsize
11078                 u8size=$charsize
11079         fi
11080         ;;
11081 esac
11082
11083 case "$i16type" in
11084 '')     case "$shortsize" in
11085         2)      i16type=short
11086                 u16type="unsigned short"
11087                 i16size=$shortsize
11088                 u16size=$shortsize
11089                 ;;
11090         esac
11091         ;;
11092 esac
11093 case "$i16type" in
11094 '')     set try -DINT16
11095         if eval $compile; then
11096                 case "`$run ./try`" in
11097                 int16_t)
11098                         i16type=int16_t
11099                         u16type=uint16_t
11100                         i16size=2
11101                         u16size=2
11102                         ;;
11103                 esac
11104         fi
11105         ;;
11106 esac
11107 case "$i16type" in
11108 '')     if $test $shortsize -ge 2; then
11109                 i16type=short
11110                 u16type="unsigned short"
11111                 i16size=$shortsize
11112                 u16size=$shortsize
11113         fi
11114         ;;
11115 esac
11116
11117 case "$i32type" in
11118 '')     case "$longsize" in
11119         4)      i32type=long
11120                 u32type="unsigned long"
11121                 i32size=$longsize
11122                 u32size=$longsize
11123                 ;;
11124         *)      case "$intsize" in
11125                 4)      i32type=int
11126                         u32type="unsigned int"
11127                         i32size=$intsize
11128                         u32size=$intsize
11129                         ;;
11130                 esac
11131                 ;;
11132         esac
11133         ;;
11134 esac
11135 case "$i32type" in
11136 '')     set try -DINT32
11137         if eval $compile; then
11138                 case "`$run ./try`" in
11139                 int32_t)
11140                         i32type=int32_t
11141                         u32type=uint32_t
11142                         i32size=4
11143                         u32size=4
11144                         ;;
11145                 esac
11146         fi
11147         ;;
11148 esac
11149 case "$i32type" in
11150 '')     if $test $intsize -ge 4; then
11151                 i32type=int
11152                 u32type="unsigned int"
11153                 i32size=$intsize
11154                 u32size=$intsize
11155         fi
11156         ;;
11157 esac
11158
11159 case "$i64type" in
11160 '')     case "$d_quad:$quadtype" in
11161         define:?*)
11162                 i64type="$quadtype"
11163                 u64type="$uquadtype"
11164                 i64size=8
11165                 u64size=8
11166                 ;;
11167         esac
11168         ;;
11169 esac
11170
11171 $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
11172 : volatile so that the compiler has to store it out to memory.
11173 if test X"$d_volatile" = X"$define"; then
11174         volatile=volatile
11175 fi
11176 $cat <<EOP >try.c
11177 #include <stdio.h>
11178 #include <sys/types.h>
11179 #include <signal.h>
11180 #ifdef SIGFPE
11181 $volatile int bletched = 0;
11182 $signal_t blech(s) int s; { bletched = 1; }
11183 #endif
11184 int main() {
11185     $uvtype u = 0;
11186     $nvtype d;
11187     int     n = 8 * $uvsize;
11188     int     i;
11189 #ifdef SIGFPE
11190     signal(SIGFPE, blech);
11191 #endif
11192
11193     for (i = 0; i < n; i++) {
11194       u = u << 1 | ($uvtype)1;
11195       d = ($nvtype)u;
11196       if (($uvtype)d != u)
11197         break;
11198       if (d <= 0)
11199         break;
11200       d = ($nvtype)(u - 1);
11201       if (($uvtype)d != (u - 1))
11202         break;
11203 #ifdef SIGFPE
11204       if (bletched) {
11205         break;
11206 #endif
11207       } 
11208     }
11209     printf("%d\n", ((i == n) ? -n : i));
11210     exit(0);
11211 }
11212 EOP
11213 set try
11214
11215 d_nv_preserves_uv="$undef"
11216 if eval $compile; then
11217         d_nv_preserves_uv_bits="`$run ./try`"
11218 fi
11219 case "$d_nv_preserves_uv_bits" in
11220 \-[1-9]*)       
11221         d_nv_preserves_uv_bits=`expr 0 - $d_nv_preserves_uv_bits`
11222         $echo "Your NVs can preserve all $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11223         d_nv_preserves_uv="$define"
11224         ;;
11225 [1-9]*) $echo "Your NVs can preserve only $d_nv_preserves_uv_bits bits of your UVs."  2>&1
11226         d_nv_preserves_uv="$undef" ;;
11227 *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
11228         d_nv_preserves_uv_bits="$undef" ;;
11229 esac
11230
11231 $rm -f try.* try
11232
11233
11234 : check for off64_t
11235 echo " "
11236 echo "Checking to see if you have off64_t..." >&4
11237 $cat >try.c <<EOCP
11238 #include <sys/types.h>
11239 #include <unistd.h>
11240 int main() { off64_t x = 7; }
11241 EOCP
11242 set try
11243 if eval $compile; then
11244         val="$define"
11245         echo "You have off64_t."
11246 else
11247         val="$undef"
11248         echo "You do not have off64_t."
11249         case "$lseeksize" in
11250         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
11251         esac
11252 fi
11253 $rm -f try.* try
11254 set d_off64_t
11255 eval $setvar
11256
11257 : see if POSIX threads are available
11258 set pthread.h i_pthread
11259 eval $inhdr
11260
11261
11262
11263
11264 : how to create joinable pthreads
11265 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
11266         echo " "
11267         echo "Checking what constant to use for creating joinable pthreads..." >&4 
11268         $cat >try.c <<'EOCP'
11269 #include <pthread.h>
11270 int main() {
11271     int detachstate = JOINABLE;
11272 }
11273 EOCP
11274         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
11275         if eval $compile; then
11276                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
11277                 val="$undef" # Yes, undef.
11278                 set d_old_pthread_create_joinable
11279                 eval $setvar
11280                 val=""
11281                 set old_pthread_create_joinable
11282                 eval $setvar
11283         else
11284                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
11285                 if eval $compile; then
11286                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
11287                         val="$define"
11288                         set d_old_pthread_create_joinable
11289                         eval $setvar
11290                         val=PTHREAD_CREATE_UNDETACHED
11291                         set old_pthread_create_joinable
11292                         eval $setvar
11293                 else            
11294                         set try -DJOINABLE=__UNDETACHED
11295                         if eval $compile; then
11296                                 echo "You seem to use __UNDETACHED." >&4
11297                                 val="$define"
11298                                 set d_old_pthread_create_joinable
11299                                 eval $setvar
11300                                 val=__UNDETACHED
11301                                 set old_pthread_create_joinable
11302                                 eval $setvar
11303                         else
11304                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
11305                                 val="$define"
11306                                 set d_old_pthread_create_joinable
11307                                 eval $setvar
11308                                 val=0
11309                                 set old_pthread_create_joinable
11310                                 eval $setvar
11311                         fi
11312                 fi
11313         fi
11314         $rm -f try try.*
11315 else
11316     d_old_pthread_create_joinable="$undef"
11317     old_pthread_create_joinable=""
11318 fi
11319
11320 : see if pause exists
11321 set pause d_pause
11322 eval $inlibc
11323
11324 : see if pipe exists
11325 set pipe d_pipe
11326 eval $inlibc
11327
11328 : see if poll exists
11329 set poll d_poll
11330 eval $inlibc
11331
11332 : see if pthread_atfork exists
11333 set pthread_atfork d_pthread_atfork
11334 eval $inlibc
11335
11336
11337 : see whether the various POSIXish _yields exist
11338 $cat >try.c <<EOP
11339 #include <pthread.h>
11340 #include <stdio.h>
11341 int main() {
11342 #ifdef SCHED_YIELD
11343         sched_yield();
11344 #else
11345 #ifdef PTHREAD_YIELD
11346         pthread_yield();
11347 #else
11348 #ifdef PTHREAD_YIELD_NULL
11349         pthread_yield(NULL);
11350 #endif
11351 #endif
11352 #endif
11353 }
11354 EOP
11355 : see if sched_yield exists
11356 set try -DSCHED_YIELD
11357 if eval $compile; then
11358     val="$define"
11359     sched_yield='sched_yield()'
11360 else
11361     val="$undef"
11362 fi
11363 case "$usethreads" in
11364 $define)
11365         case "$val" in
11366         $define) echo 'sched_yield() found.' >&4        ;;
11367         *)       echo 'sched_yield() NOT found.' >&4    ;;
11368         esac
11369 esac
11370 set d_sched_yield
11371 eval $setvar
11372
11373 : see if pthread_yield exists
11374 set try -DPTHREAD_YIELD
11375 if eval $compile; then
11376     val="$define"
11377     case "$sched_yield" in
11378     '') sched_yield='pthread_yield()' ;;
11379     esac
11380 else
11381     set try -DPTHREAD_YIELD_NULL
11382     if eval $compile; then
11383         val="$define"
11384         case "$sched_yield" in
11385         '') sched_yield='pthread_yield(NULL)' ;;
11386         esac
11387     else
11388         val="$undef"
11389     fi
11390 fi
11391 case "$usethreads" in
11392 $define)
11393         case "$val" in
11394         $define) echo 'pthread_yield() found.' >&4      ;;
11395         *)       echo 'pthread_yield() NOT found.' >&4  ;;
11396         esac
11397         ;;
11398 esac
11399 set d_pthread_yield
11400 eval $setvar
11401
11402 case "$sched_yield" in
11403 '') sched_yield=undef ;;
11404 esac
11405
11406 $rm -f try try.*
11407
11408 : see if this is a pwd.h system
11409 set pwd.h i_pwd
11410 eval $inhdr
11411
11412 case "$i_pwd" in
11413 $define)
11414         xxx=`./findhdr pwd.h`
11415         $cppstdin $cppflags $cppminus < $xxx >$$.h
11416
11417         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
11418                 val="$define"
11419         else
11420                 val="$undef"
11421         fi
11422         set d_pwquota
11423         eval $setvar
11424
11425         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
11426                 val="$define"
11427         else
11428                 val="$undef"
11429         fi
11430         set d_pwage
11431         eval $setvar
11432
11433         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
11434                 val="$define"
11435         else
11436                 val="$undef"
11437         fi
11438         set d_pwchange
11439         eval $setvar
11440
11441         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
11442                 val="$define"
11443         else
11444                 val="$undef"
11445         fi
11446         set d_pwclass
11447         eval $setvar
11448
11449         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
11450                 val="$define"
11451         else
11452                 val="$undef"
11453         fi
11454         set d_pwexpire
11455         eval $setvar
11456
11457         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
11458                 val="$define"
11459         else
11460                 val="$undef"
11461         fi
11462         set d_pwcomment
11463         eval $setvar
11464
11465         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
11466                 val="$define"
11467         else
11468                 val="$undef"
11469         fi
11470         set d_pwgecos
11471         eval $setvar
11472
11473         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
11474                 val="$define"
11475         else
11476                 val="$undef"
11477         fi
11478         set d_pwpasswd
11479         eval $setvar
11480
11481         $rm -f $$.h
11482         ;;
11483 *)
11484         val="$undef"; 
11485         set d_pwquota; eval $setvar
11486         set d_pwage; eval $setvar
11487         set d_pwchange; eval $setvar
11488         set d_pwclass; eval $setvar
11489         set d_pwexpire; eval $setvar
11490         set d_pwcomment; eval $setvar
11491         set d_pwgecos; eval $setvar
11492         set d_pwpasswd; eval $setvar
11493         ;;
11494 esac
11495
11496 : see if readdir and friends exist
11497 set readdir d_readdir
11498 eval $inlibc
11499 set seekdir d_seekdir
11500 eval $inlibc
11501 set telldir d_telldir
11502 eval $inlibc
11503 set rewinddir d_rewinddir
11504 eval $inlibc
11505
11506 : see if readlink exists
11507 set readlink d_readlink
11508 eval $inlibc
11509
11510 : see if readv exists
11511 set readv d_readv
11512 eval $inlibc
11513
11514 : see if recvmsg exists
11515 set recvmsg d_recvmsg
11516 eval $inlibc
11517
11518 : see if rename exists
11519 set rename d_rename
11520 eval $inlibc
11521
11522 : see if rmdir exists
11523 set rmdir d_rmdir
11524 eval $inlibc
11525
11526 : see if memory.h is available.
11527 val=''
11528 set memory.h val
11529 eval $inhdr
11530
11531 : See if it conflicts with string.h
11532 case "$val" in
11533 $define)
11534         case "$strings" in
11535         '') ;;
11536         *)
11537                 $cppstdin $cppflags $cppminus < $strings > mem.h
11538                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
11539                         echo " "
11540                         echo "We won't be including <memory.h>."
11541                         val="$undef"
11542                 fi
11543                 $rm -f mem.h
11544                 ;;
11545         esac
11546 esac
11547 set i_memory
11548 eval $setvar
11549
11550 : can bcopy handle overlapping blocks?
11551 echo " "
11552 val="$undef"
11553 case "$d_memmove" in
11554 "$define") echo "I'll use memmove() instead of bcopy() for overlapping copies." ;;
11555 *)      case "$d_bcopy" in
11556         "$define")
11557                 echo "Checking to see if bcopy() can do overlapping copies..." >&4
11558                 $cat >try.c <<EOCP
11559 #$i_memory I_MEMORY
11560 #$i_stdlib I_STDLIB
11561 #$i_string I_STRING
11562 #$i_unistd I_UNISTD
11563 EOCP
11564         $cat >>try.c <<'EOCP'
11565 #include <stdio.h>
11566 #ifdef I_MEMORY
11567 #  include <memory.h>
11568 #endif
11569 #ifdef I_STDLIB
11570 #  include <stdlib.h>
11571 #endif
11572 #ifdef I_STRING
11573 #  include <string.h>
11574 #else
11575 #  include <strings.h>
11576 #endif
11577 #ifdef I_UNISTD
11578 #  include <unistd.h>  /* Needed for NetBSD */
11579 #endif
11580 int main()
11581 {
11582 char buf[128], abc[128];
11583 char *b;
11584 int len;
11585 int off;
11586 int align;
11587
11588 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11589    try to store the string in read-only memory. */
11590 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
11591
11592 for (align = 7; align >= 0; align--) {
11593         for (len = 36; len; len--) {
11594                 b = buf+align;
11595                 bcopy(abc, b, len);
11596                 for (off = 1; off <= len; off++) {
11597                         bcopy(b, b+off, len);
11598                         bcopy(b+off, b, len);
11599                         if (bcmp(b, abc, len))
11600                                 exit(1);
11601                 }
11602         }
11603 }
11604 exit(0);
11605 }
11606 EOCP
11607                 set try
11608                 if eval $compile_ok; then
11609                         if ./try 2>/dev/null; then
11610                                 echo "Yes, it can."
11611                                 val="$define"
11612                         else
11613                                 echo "It can't, sorry."
11614                         fi
11615                 else
11616                         echo "(I can't compile the test program, so we'll assume not...)"
11617                 fi
11618                 ;;
11619         esac
11620         $rm -f try.* try core
11621         ;;
11622 esac
11623 set d_safebcpy
11624 eval $setvar
11625
11626 : can memcpy handle overlapping blocks?
11627 echo " "
11628 val="$undef"
11629 case "$d_memmove" in
11630 "$define") echo "I'll use memmove() instead of memcpy() for overlapping copies." ;;
11631 *)      case "$d_memcpy" in
11632         "$define")
11633                 echo "Checking to see if memcpy() can do overlapping copies..." >&4
11634                 $cat >try.c <<EOCP
11635 #$i_memory I_MEMORY
11636 #$i_stdlib I_STDLIB
11637 #$i_string I_STRING
11638 #$i_unistd I_UNISTD
11639 EOCP
11640         $cat >>try.c <<'EOCP'
11641 #include <stdio.h>
11642 #ifdef I_MEMORY
11643 #  include <memory.h>
11644 #endif
11645 #ifdef I_STDLIB
11646 #  include <stdlib.h>
11647 #endif
11648 #ifdef I_STRING
11649 #  include <string.h>
11650 #else
11651 #  include <strings.h>
11652 #endif
11653 #ifdef I_UNISTD
11654 #  include <unistd.h>  /* Needed for NetBSD */
11655 #endif
11656 int main()
11657 {
11658 char buf[128], abc[128];
11659 char *b;
11660 int len;
11661 int off;
11662 int align;
11663
11664 /* Copy "abcde..." string to char abc[] so that gcc doesn't
11665    try to store the string in read-only memory. */
11666 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
11667
11668 for (align = 7; align >= 0; align--) {
11669         for (len = 36; len; len--) {
11670                 b = buf+align;
11671                 memcpy(b, abc, len);
11672                 for (off = 1; off <= len; off++) {
11673                         memcpy(b+off, b, len);
11674                         memcpy(b, b+off, len);
11675                         if (memcmp(b, abc, len))
11676                                 exit(1);
11677                 }
11678         }
11679 }
11680 exit(0);
11681 }
11682 EOCP
11683                 set try
11684                 if eval $compile_ok; then
11685                         if ./try 2>/dev/null; then
11686                                 echo "Yes, it can."
11687                                 val="$define"
11688                         else
11689                                 echo "It can't, sorry."
11690                         fi
11691                 else
11692                         echo "(I can't compile the test program, so we'll assume not...)"
11693                 fi
11694                 ;;
11695         esac
11696         $rm -f try.* try core
11697         ;;
11698 esac
11699 set d_safemcpy
11700 eval $setvar
11701
11702 : can memcmp be trusted to compare relative magnitude?
11703 val="$undef"
11704 case "$d_memcmp" in
11705 "$define")
11706         echo " "
11707         echo "Checking if your memcmp() can compare relative magnitude..." >&4
11708         $cat >try.c <<EOCP
11709 #$i_memory I_MEMORY
11710 #$i_stdlib I_STDLIB
11711 #$i_string I_STRING
11712 #$i_unistd I_UNISTD
11713 EOCP
11714         $cat >>try.c <<'EOCP'
11715 #include <stdio.h>
11716 #ifdef I_MEMORY
11717 #  include <memory.h>
11718 #endif
11719 #ifdef I_STDLIB
11720 #  include <stdlib.h>
11721 #endif
11722 #ifdef I_STRING
11723 #  include <string.h>
11724 #else
11725 #  include <strings.h>
11726 #endif
11727 #ifdef I_UNISTD
11728 #  include <unistd.h>  /* Needed for NetBSD */
11729 #endif
11730 int main()
11731 {
11732 char a = -1;
11733 char b = 0;
11734 if ((a < b) && memcmp(&a, &b, 1) < 0)
11735         exit(1);
11736 exit(0);
11737 }
11738 EOCP
11739         set try
11740         if eval $compile_ok; then
11741                 if $run ./try 2>/dev/null; then
11742                         echo "Yes, it can."
11743                         val="$define"
11744                 else
11745                         echo "No, it can't (it uses signed chars)."
11746                 fi
11747         else
11748                 echo "(I can't compile the test program, so we'll assume not...)"
11749         fi
11750         ;;
11751 esac
11752 $rm -f try.* try core
11753 set d_sanemcmp
11754 eval $setvar
11755
11756 : see if prototype for sbrk is available
11757 echo " "
11758 set d_sbrkproto sbrk $i_unistd unistd.h
11759 eval $hasproto
11760
11761 : see if select exists
11762 set select d_select
11763 eval $inlibc
11764
11765 : see if semctl exists
11766 set semctl d_semctl
11767 eval $inlibc
11768
11769 : see if semget exists
11770 set semget d_semget
11771 eval $inlibc
11772
11773 : see if semop exists
11774 set semop d_semop
11775 eval $inlibc
11776
11777 : see how much of the 'sem*(2)' library is present.
11778 h_sem=true
11779 echo " "
11780 case "$d_semctl$d_semget$d_semop" in
11781 *"$undef"*) h_sem=false;;
11782 esac
11783 case "$osname" in
11784 freebsd)
11785     case "`ipcs 2>&1`" in
11786     "SVID messages"*"not configured"*)
11787         echo "Your $osname does not have the sem*(2) configured." >&4
11788         h_sem=false
11789         val="$undef"
11790         set semctl d_semctl
11791         eval $setvar
11792         set semget d_semget
11793         eval $setvar
11794         set semop d_semop
11795         eval $setvar
11796         ;;
11797     esac
11798     ;;
11799 esac
11800 : we could also check for sys/ipc.h ...
11801 if $h_sem && $test `./findhdr sys/sem.h`; then
11802         echo "You have the full sem*(2) library." >&4
11803         val="$define"
11804 else
11805         echo "You don't have the full sem*(2) library." >&4
11806         val="$undef"
11807 fi
11808 set d_sem
11809 eval $setvar
11810
11811 : see whether sys/sem.h defines union semun
11812 echo " "
11813 $cat > try.c <<'END'
11814 #include <sys/types.h>
11815 #include <sys/ipc.h>
11816 #include <sys/sem.h>
11817 int main () { union semun semun; semun.buf = 0; }
11818 END
11819 set try
11820 if eval $compile; then
11821     echo "You have union semun in <sys/sem.h>." >&4
11822     val="$define"
11823 else
11824     echo "You do not have union semun in <sys/sem.h>." >&4
11825     val="$undef"
11826 fi
11827 $rm -f try try.c try.h
11828 set d_union_semun
11829 eval $setvar
11830
11831 : see how to do semctl IPC_STAT
11832 case "$d_sem" in
11833 $define)
11834     : see whether semctl IPC_STAT can use union semun
11835     echo " "
11836     $cat > try.h <<END
11837 #ifndef S_IRUSR
11838 #   ifdef S_IREAD
11839 #       define S_IRUSR S_IREAD
11840 #       define S_IWUSR S_IWRITE
11841 #       define S_IXUSR S_IEXEC
11842 #   else
11843 #       define S_IRUSR 0400
11844 #       define S_IWUSR 0200
11845 #       define S_IXUSR 0100
11846 #   endif
11847 #   define S_IRGRP (S_IRUSR>>3)
11848 #   define S_IWGRP (S_IWUSR>>3)
11849 #   define S_IXGRP (S_IXUSR>>3)
11850 #   define S_IROTH (S_IRUSR>>6)
11851 #   define S_IWOTH (S_IWUSR>>6)
11852 #   define S_IXOTH (S_IXUSR>>6)
11853 #endif
11854 #ifndef S_IRWXU
11855 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11856 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11857 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11858 #endif
11859 END
11860
11861     $cat > try.c <<END
11862 #include <sys/types.h>
11863 #include <sys/ipc.h>
11864 #include <sys/sem.h>
11865 #include <sys/stat.h>
11866 #include <stdio.h>
11867 #include <errno.h>
11868 #include "try.h"
11869 #ifndef errno
11870 extern int errno;
11871 #endif
11872 #$d_union_semun HAS_UNION_SEMUN
11873 int main() {
11874     union semun
11875 #ifndef HAS_UNION_SEMUN
11876     {
11877         int val;
11878         struct semid_ds *buf;
11879         unsigned short *array;
11880     }
11881 #endif
11882     arg;
11883     int sem, st;
11884
11885 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11886     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11887     if (sem > -1) {
11888         struct semid_ds argbuf;
11889         arg.buf = &argbuf;
11890 #       ifdef IPC_STAT
11891         st = semctl(sem, 0, IPC_STAT, arg);
11892         if (st == 0)
11893             printf("semun\n");
11894         else
11895 #       endif /* IPC_STAT */
11896             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11897 #       ifdef IPC_RMID
11898         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11899 #       endif /* IPC_RMID */
11900             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11901     } else
11902 #endif /* IPC_PRIVATE && ... */
11903         printf("semget failed: errno = %d\n", errno);
11904   return 0;
11905 }
11906 END
11907     val="$undef"
11908     set try
11909     if eval $compile; then
11910         xxx=`$run ./try`
11911         case "$xxx" in
11912         semun) val="$define" ;;
11913         esac
11914     fi
11915     $rm -f try try.c
11916     set d_semctl_semun
11917     eval $setvar
11918     case "$d_semctl_semun" in
11919     $define)
11920         echo "You can use union semun for semctl IPC_STAT." >&4
11921         also='also'
11922         ;;
11923     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11924         also=''
11925         ;;
11926     esac
11927
11928     : see whether semctl IPC_STAT can use struct semid_ds pointer
11929     $cat > try.c <<'END'
11930 #include <sys/types.h>
11931 #include <sys/ipc.h>
11932 #include <sys/sem.h>
11933 #include <sys/stat.h>
11934 #include "try.h"
11935 #include <stdio.h>
11936 #include <errno.h>
11937 #ifndef errno
11938 extern int errno;
11939 #endif
11940 int main() {
11941     struct semid_ds arg;
11942     int sem, st;
11943
11944 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11945     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11946     if (sem > -1) {
11947 #       ifdef IPC_STAT
11948         st = semctl(sem, 0, IPC_STAT, &arg);
11949         if (st == 0)
11950             printf("semid_ds\n");
11951         else
11952 #       endif /* IPC_STAT */
11953             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11954 #       ifdef IPC_RMID
11955         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11956 #       endif /* IPC_RMID */
11957             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11958     } else
11959 #endif /* IPC_PRIVATE && ... */
11960         printf("semget failed: errno = %d\n", errno);
11961
11962     return 0;
11963 }
11964 END
11965     val="$undef"
11966     set try
11967     if eval $compile; then
11968         xxx=`$run ./try`
11969         case "$xxx" in
11970         semid_ds) val="$define" ;;
11971         esac
11972     fi
11973     $rm -f try try.c
11974     set d_semctl_semid_ds
11975     eval $setvar
11976     case "$d_semctl_semid_ds" in
11977     $define)
11978         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11979         ;;
11980     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11981         ;;
11982     esac
11983     $rm -f try.h
11984     ;;
11985 *)  val="$undef"
11986
11987     # We do not have the full sem*(2) library, so assume we can not
11988     # use either.
11989
11990     set d_semctl_semun
11991     eval $setvar
11992
11993     set d_semctl_semid_ds
11994     eval $setvar
11995     ;;
11996 esac
11997
11998 : see if sendmsg exists
11999 set sendmsg d_sendmsg
12000 eval $inlibc
12001
12002 : see if setegid exists
12003 set setegid d_setegid
12004 eval $inlibc
12005
12006 : see if seteuid exists
12007 set seteuid d_seteuid
12008 eval $inlibc
12009
12010 : see if setgrent exists
12011 set setgrent d_setgrent
12012 eval $inlibc
12013
12014 : see if sethostent exists
12015 set sethostent d_sethent
12016 eval $inlibc
12017
12018 : see if setitimer exists
12019 set setitimer d_setitimer
12020 eval $inlibc
12021
12022 : see if setlinebuf exists
12023 set setlinebuf d_setlinebuf
12024 eval $inlibc
12025
12026 : see if setlocale exists
12027 set setlocale d_setlocale
12028 eval $inlibc
12029
12030 : see if setnetent exists
12031 set setnetent d_setnent
12032 eval $inlibc
12033
12034 : see if setprotoent exists
12035 set setprotoent d_setpent
12036 eval $inlibc
12037
12038 : see if setpgid exists
12039 set setpgid d_setpgid
12040 eval $inlibc
12041
12042 : see if setpgrp2 exists
12043 set setpgrp2 d_setpgrp2
12044 eval $inlibc
12045
12046 : see if setpriority exists
12047 set setpriority d_setprior
12048 eval $inlibc
12049
12050 : see if setproctitle exists
12051 set setproctitle d_setproctitle
12052 eval $inlibc
12053
12054 : see if setpwent exists
12055 set setpwent d_setpwent
12056 eval $inlibc
12057
12058 : see if setregid exists
12059 set setregid d_setregid
12060 eval $inlibc
12061 set setresgid d_setresgid
12062 eval $inlibc
12063
12064 : see if setreuid exists
12065 set setreuid d_setreuid
12066 eval $inlibc
12067 set setresuid d_setresuid
12068 eval $inlibc
12069
12070 : see if setrgid exists
12071 set setrgid d_setrgid
12072 eval $inlibc
12073
12074 : see if setruid exists
12075 set setruid d_setruid
12076 eval $inlibc
12077
12078 : see if setservent exists
12079 set setservent d_setsent
12080 eval $inlibc
12081
12082 : see if setsid exists
12083 set setsid d_setsid
12084 eval $inlibc
12085
12086 : see if setvbuf exists
12087 set setvbuf d_setvbuf
12088 eval $inlibc
12089
12090 : see if sfio.h is available
12091 set sfio.h i_sfio
12092 eval $inhdr
12093
12094
12095 : see if sfio library is available
12096 case "$i_sfio" in
12097 $define)
12098         val=''
12099         set sfreserve val
12100         eval $inlibc
12101         ;;
12102 *)
12103         val="$undef"
12104         ;;
12105 esac
12106 : Ok, but do we want to use it.
12107 case "$val" in
12108 $define)
12109         case "$usesfio" in
12110         true|$define|[yY]*) dflt='y';;
12111         *) dflt='n';;
12112         esac
12113         echo "$package can use the sfio library, but it is experimental."
12114         case "$useperlio" in
12115         "$undef")
12116             echo "For sfio also the PerlIO abstraction layer is needed."
12117             echo "Earlier you said you wouldn't want that."
12118             ;;
12119         esac
12120         rp="You seem to have sfio available, do you want to try using it?"
12121         . ./myread
12122         case "$ans" in
12123         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
12124                 useperlio="$define"
12125                 val="$define"
12126                 ;;
12127         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
12128                 val="$undef"
12129                 ;;
12130         esac
12131         ;;
12132 *)      case "$usesfio" in
12133         true|$define|[yY]*)
12134                 echo "Sorry, cannot find sfio on this machine." >&4
12135                 echo "Ignoring your setting of usesfio=$usesfio." >&4
12136                 val="$undef"
12137                 ;;
12138         esac
12139         ;;
12140 esac
12141 set d_sfio
12142 eval $setvar
12143 case "$d_sfio" in
12144 $define) usesfio='true';;
12145 *) usesfio='false';;
12146 esac
12147 case "$d_sfio" in
12148 $define) ;;
12149 *)      : Remove sfio from list of libraries to use
12150         case "$libs" in
12151         *-lsfio*)
12152                 echo "Removing unneeded -lsfio from library list" >&4
12153                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
12154                 shift
12155                 libs="$*"
12156                 echo "libs = $libs" >&4
12157                 ;;
12158         esac
12159 ;;
12160 esac
12161
12162
12163 : see if shmctl exists
12164 set shmctl d_shmctl
12165 eval $inlibc
12166
12167 : see if shmget exists
12168 set shmget d_shmget
12169 eval $inlibc
12170
12171 : see if shmat exists
12172 set shmat d_shmat
12173 eval $inlibc
12174 : see what shmat returns
12175 case "$d_shmat" in
12176 "$define")
12177         $cat >shmat.c <<'END'
12178 #include <sys/shm.h>
12179 void *shmat();
12180 END
12181         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
12182                 shmattype='void *'
12183         else
12184                 shmattype='char *'
12185         fi
12186         echo "and it returns ($shmattype)." >&4
12187         : see if a prototype for shmat is available
12188         xxx=`./findhdr sys/shm.h`
12189         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
12190         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
12191                 val="$define"
12192         else
12193                 val="$undef"
12194         fi
12195         $rm -f shmat.[co]
12196         ;;
12197 *)
12198         val="$undef"
12199         ;;
12200 esac
12201 set d_shmatprototype
12202 eval $setvar
12203
12204 : see if shmdt exists
12205 set shmdt d_shmdt
12206 eval $inlibc
12207
12208 : see how much of the 'shm*(2)' library is present.
12209 h_shm=true
12210 echo " "
12211 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
12212 *"$undef"*) h_shm=false;;
12213 esac
12214 case "$osname" in
12215 freebsd)
12216     case "`ipcs 2>&1`" in
12217     "SVID shared memory"*"not configured"*)
12218         echo "Your $osname does not have the shm*(2) configured." >&4
12219         h_shm=false
12220         val="$undef"
12221         set shmctl d_shmctl
12222         evat $setvar
12223         set shmget d_shmget
12224         evat $setvar
12225         set shmat d_shmat
12226         evat $setvar
12227         set shmdt d_shmdt
12228         evat $setvar
12229         ;;
12230     esac
12231     ;;
12232 esac
12233 : we could also check for sys/ipc.h ...
12234 if $h_shm && $test `./findhdr sys/shm.h`; then
12235         echo "You have the full shm*(2) library." >&4
12236         val="$define"
12237 else
12238         echo "You don't have the full shm*(2) library." >&4
12239         val="$undef"
12240 fi
12241 set d_shm
12242 eval $setvar
12243
12244 echo " "
12245 : see if we have sigaction
12246 if set sigaction val -f d_sigaction; eval $csym; $val; then
12247         echo 'sigaction() found.' >&4
12248         $cat > try.c <<'EOP'
12249 #include <stdio.h>
12250 #include <sys/types.h>
12251 #include <signal.h>
12252 int main()
12253 {
12254     struct sigaction act, oact;
12255     act.sa_flags = 0;
12256     oact.sa_handler = 0;
12257     /* so that act and oact are used */
12258     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
12259 }
12260 EOP
12261         set try
12262         if eval $compile_ok; then
12263                 val="$define"
12264         else
12265                 echo "But you don't seem to have a useable struct sigaction." >&4
12266                 val="$undef"
12267         fi
12268 else
12269         echo 'sigaction NOT found.' >&4
12270         val="$undef"
12271 fi
12272 set d_sigaction; eval $setvar
12273 $rm -f try try$_o try.c
12274
12275 : see if sigprocmask exists
12276 set sigprocmask d_sigprocmask
12277 eval $inlibc
12278
12279 : see if sigsetjmp exists
12280 echo " "
12281 case "$d_sigsetjmp" in
12282 '')
12283         $cat >try.c <<'EOP'
12284 #include <setjmp.h>
12285 sigjmp_buf env;
12286 int set = 1;
12287 int main()
12288 {
12289         if (sigsetjmp(env,1))
12290                 exit(set);
12291         set = 0;
12292         siglongjmp(env, 1);
12293         exit(1);
12294 }
12295 EOP
12296         set try
12297         if eval $compile; then
12298                 if $run ./try >/dev/null 2>&1; then
12299                         echo "POSIX sigsetjmp found." >&4
12300                         val="$define"
12301                 else
12302                         $cat >&4 <<EOM
12303 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
12304 I'll ignore them.
12305 EOM
12306                         val="$undef"
12307                 fi
12308         else
12309                 echo "sigsetjmp not found." >&4
12310                 val="$undef"
12311         fi
12312         ;;
12313 *) val="$d_sigsetjmp"
12314         case "$d_sigsetjmp" in
12315         $define) echo "POSIX sigsetjmp found." >&4;;
12316         $undef) echo "sigsetjmp not found." >&4;;
12317         esac
12318         ;;
12319 esac
12320 set d_sigsetjmp
12321 eval $setvar
12322 $rm -f try.c try
12323
12324 : see if sockatmark exists
12325 set sockatmark d_sockatmark
12326 eval $inlibc
12327
12328 : see if prototype for sockatmark is available
12329 echo " "
12330 set d_sockatmarkproto sockatmark $d_socket sys/socket.h
12331 eval $hasproto
12332
12333 : see if socks5_init exists
12334 set socks5_init d_socks5_init
12335 eval $inlibc
12336
12337 : see if prototype for setresgid is available
12338 echo " "
12339 set d_sresgproto setresgid $i_unistd unistd.h
12340 eval $hasproto
12341
12342 : see if prototype for setresuid is available
12343 echo " "
12344 set d_sresuproto setresuid $i_unistd unistd.h
12345 eval $hasproto
12346
12347 : see if sys/stat.h is available
12348 set sys/stat.h i_sysstat
12349 eval $inhdr
12350
12351
12352 : see if stat knows about block sizes
12353 echo " "
12354 echo "Checking to see if your struct stat has st_blocks field..." >&4
12355 set d_statblks stat st_blocks $i_sysstat sys/stat.h
12356 eval $hasfield
12357
12358
12359 : see if this is a sys/vfs.h system
12360 set sys/vfs.h i_sysvfs
12361 eval $inhdr
12362
12363
12364 : see if this is a sys/statfs.h system
12365 set sys/statfs.h i_sysstatfs
12366 eval $inhdr
12367
12368
12369 echo " "
12370 echo "Checking to see if your system supports struct statfs..." >&4
12371 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
12372 eval $hasstruct
12373 case "$d_statfs_s" in
12374 "$define")      echo "Yes, it does."   ;;
12375 *)              echo "No, it doesn't." ;;
12376 esac
12377
12378
12379
12380 : see if struct statfs knows about f_flags
12381 case "$d_statfs_s" in
12382 define) 
12383         echo " "
12384         echo "Checking to see if your struct statfs has f_flags field..." >&4
12385         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
12386         eval $hasfield
12387         ;;
12388 *)      val="$undef"
12389         set d_statfs_f_flags
12390         eval $setvar
12391         ;;
12392 esac
12393 case "$d_statfs_f_flags" in
12394 "$define")      echo "Yes, it does."   ;;
12395 *)              echo "No, it doesn't." ;;
12396 esac
12397
12398 : see if _ptr and _cnt from stdio act std
12399 echo " "
12400
12401 if $contains '_lbfsize' `./findhdr stdio.h` >/dev/null 2>&1 ; then
12402         echo "(Looks like you have stdio.h from BSD.)"
12403         case "$stdio_ptr" in
12404         '') stdio_ptr='((fp)->_p)'
12405                 ptr_lval=$define
12406                 ;;
12407         *)      ptr_lval=$d_stdio_ptr_lval;;
12408         esac
12409         case "$stdio_cnt" in
12410         '') stdio_cnt='((fp)->_r)'
12411                 cnt_lval=$define
12412                 ;;
12413         *)      cnt_lval=$d_stdio_cnt_lval;;
12414         esac
12415         case "$stdio_base" in
12416         '') stdio_base='((fp)->_ub._base ? (fp)->_ub._base : (fp)->_bf._base)';;
12417         esac
12418         case "$stdio_bufsiz" in
12419         '') stdio_bufsiz='((fp)->_ub._base ? (fp)->_ub._size : (fp)->_bf._size)';;
12420         esac
12421 elif $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
12422         echo "(Looks like you have stdio.h from Linux.)"
12423         case "$stdio_ptr" in
12424         '') stdio_ptr='((fp)->_IO_read_ptr)'
12425                 ptr_lval=$define
12426                 ;;
12427         *)      ptr_lval=$d_stdio_ptr_lval;;
12428         esac
12429         case "$stdio_cnt" in
12430         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
12431                 cnt_lval=$undef
12432                 ;;
12433         *)      cnt_lval=$d_stdio_cnt_lval;;
12434         esac
12435         case "$stdio_base" in
12436         '') stdio_base='((fp)->_IO_read_base)';;
12437         esac
12438         case "$stdio_bufsiz" in
12439         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
12440         esac
12441 else
12442         case "$stdio_ptr" in
12443         '') stdio_ptr='((fp)->_ptr)'
12444                 ptr_lval=$define
12445                 ;;
12446         *)      ptr_lval=$d_stdio_ptr_lval;;
12447         esac
12448         case "$stdio_cnt" in
12449         '') stdio_cnt='((fp)->_cnt)'
12450                 cnt_lval=$define
12451                 ;;
12452         *)      cnt_lval=$d_stdio_cnt_lval;;
12453         esac
12454         case "$stdio_base" in
12455         '') stdio_base='((fp)->_base)';;
12456         esac
12457         case "$stdio_bufsiz" in
12458         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
12459         esac
12460 fi
12461
12462 : test whether _ptr and _cnt really work
12463 echo "Checking how std your stdio is..." >&4
12464 $cat >try.c <<EOP
12465 #include <stdio.h>
12466 #define FILE_ptr(fp)    $stdio_ptr
12467 #define FILE_cnt(fp)    $stdio_cnt
12468 int main() {
12469         FILE *fp = fopen("try.c", "r");
12470         char c = getc(fp);
12471         if (
12472                 18 <= FILE_cnt(fp) &&
12473                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12474         )
12475                 exit(0);
12476         exit(1);
12477 }
12478 EOP
12479 val="$undef"
12480 set try
12481 if eval $compile && $to try.c; then
12482         if $run ./try; then
12483                 echo "Your stdio acts pretty std."
12484                 val="$define"
12485         else
12486                 echo "Your stdio isn't very std."
12487         fi
12488 else
12489         echo "Your stdio doesn't appear very std."
12490 fi
12491 $rm -f try.c try
12492 set d_stdstdio
12493 eval $setvar
12494
12495 : Can _ptr be used as an lvalue?
12496 case "$d_stdstdio$ptr_lval" in
12497 $define$define) val=$define ;;
12498 *) val=$undef ;;
12499 esac
12500 set d_stdio_ptr_lval
12501 eval $setvar
12502
12503 : Can _cnt be used as an lvalue?
12504 case "$d_stdstdio$cnt_lval" in
12505 $define$define) val=$define ;;
12506 *) val=$undef ;;
12507 esac
12508 set d_stdio_cnt_lval
12509 eval $setvar
12510
12511
12512 : test whether setting _ptr sets _cnt as a side effect
12513 d_stdio_ptr_lval_sets_cnt="$undef"
12514 d_stdio_ptr_lval_nochange_cnt="$undef"
12515 case "$d_stdio_ptr_lval$d_stdstdio" in
12516 $define$define)
12517         echo "Checking to see what happens if we set the stdio ptr..." >&4
12518 $cat >try.c <<EOP
12519 #include <stdio.h>
12520 /* Can we scream? */
12521 /* Eat dust sed :-) */
12522 /* In the buffer space, no one can hear you scream. */
12523 #define FILE_ptr(fp)    $stdio_ptr
12524 #define FILE_cnt(fp)    $stdio_cnt
12525 #include <sys/types.h>
12526 int main() {
12527         FILE *fp = fopen("try.c", "r");
12528         int c;
12529         char *ptr;
12530         size_t cnt;
12531         if (!fp) {
12532             puts("Fail even to read");
12533             exit(1);
12534         }
12535         c = getc(fp); /* Read away the first # */
12536         if (c == EOF) {
12537             puts("Fail even to read");
12538             exit(1);
12539         }
12540         if (!(
12541                 18 <= FILE_cnt(fp) &&
12542                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
12543         )) {
12544                 puts("Fail even to read");
12545                 exit (1);
12546         }
12547         ptr = (char*) FILE_ptr(fp);
12548         cnt = (size_t)FILE_cnt(fp);
12549
12550         FILE_ptr(fp) += 42;
12551
12552         if ((char*)FILE_ptr(fp) != (ptr + 42)) {
12553                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
12554                 exit (1);
12555         }
12556         if (FILE_cnt(fp) <= 20) {
12557                 printf ("Fail (<20 chars to test)");
12558                 exit (1);
12559         }
12560         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
12561                 puts("Fail compare");
12562                 exit (1);
12563         }
12564         if (cnt == FILE_cnt(fp)) {
12565                 puts("Pass_unchanged");
12566                 exit (0);
12567         }       
12568         if (FILE_cnt(fp) == (cnt - 42)) {
12569                 puts("Pass_changed");
12570                 exit (0);
12571         }
12572         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
12573         return 1;
12574
12575 }
12576 EOP
12577         set try
12578         if eval $compile && $to try.c; then
12579                 case `$run ./try` in
12580                 Pass_changed)
12581                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
12582                         d_stdio_ptr_lval_sets_cnt="$define" ;;
12583                 Pass_unchanged)
12584                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
12585                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
12586                 Fail*)
12587                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
12588                 *)
12589                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
12590         esac
12591         else
12592                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
12593         fi
12594         $rm -f try.c try
12595         ;;
12596 esac
12597
12598 : see if _base is also standard
12599 val="$undef"
12600 case "$d_stdstdio" in
12601 $define)
12602         $cat >try.c <<EOP
12603 #include <stdio.h>
12604 #define FILE_base(fp)   $stdio_base
12605 #define FILE_bufsiz(fp) $stdio_bufsiz
12606 int main() {
12607         FILE *fp = fopen("try.c", "r");
12608         char c = getc(fp);
12609         if (
12610                 19 <= FILE_bufsiz(fp) &&
12611                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
12612         )
12613                 exit(0);
12614         exit(1);
12615 }
12616 EOP
12617         set try
12618         if eval $compile && $to try.c; then
12619                 if $run ./try; then
12620                         echo "And its _base field acts std."
12621                         val="$define"
12622                 else
12623                         echo "But its _base field isn't std."
12624                 fi
12625         else
12626                 echo "However, it seems to be lacking the _base field."
12627         fi
12628         $rm -f try.c try
12629         ;;
12630 esac
12631 set d_stdiobase
12632 eval $setvar
12633
12634 $cat >&4 <<EOM
12635 Checking how to access stdio streams by file descriptor number...
12636 EOM
12637 case "$stdio_stream_array" in
12638 '')     $cat >try.c <<EOCP
12639 #include <stdio.h>
12640 int main() {
12641   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
12642     printf("yes\n");
12643 }
12644 EOCP
12645         for s in _iob __iob __sF
12646         do
12647                 set try -DSTDIO_STREAM_ARRAY=$s
12648                 if eval $compile; then
12649                         case "`$run ./try`" in
12650                         yes)    stdio_stream_array=$s; break ;;
12651                         esac
12652                 fi
12653         done
12654         $rm -f try.* try$exe_ext
12655 esac
12656 case "$stdio_stream_array" in
12657 '')     $cat >&4 <<EOM
12658 I can't figure out how to access stdio streams by file descriptor number.
12659 EOM
12660         d_stdio_stream_array="$undef"
12661         ;;
12662 *)      $cat >&4 <<EOM
12663 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
12664 EOM
12665         d_stdio_stream_array="$define"
12666         ;;
12667 esac
12668
12669 : see if strcoll exists
12670 set strcoll d_strcoll
12671 eval $inlibc
12672
12673 : check for structure copying
12674 echo " "
12675 echo "Checking to see if your C compiler can copy structs..." >&4
12676 $cat >try.c <<'EOCP'
12677 int main()
12678 {
12679         struct blurfl {
12680                 int dyick;
12681         } foo, bar;
12682
12683         foo = bar;
12684 }
12685 EOCP
12686 if $cc -c try.c >/dev/null 2>&1 ; then
12687         val="$define"
12688         echo "Yup, it can."
12689 else
12690         val="$undef"
12691         echo "Nope, it can't."
12692 fi
12693 set d_strctcpy
12694 eval $setvar
12695 $rm -f try.*
12696
12697 : see if strerror and/or sys_errlist[] exist
12698 echo " "
12699 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
12700     if set strerror val -f d_strerror; eval $csym; $val; then
12701                 echo 'strerror() found.' >&4
12702                 d_strerror="$define"
12703                 d_strerrm='strerror(e)'
12704                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12705                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
12706                         d_syserrlst="$define"
12707                 else
12708                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
12709                         d_syserrlst="$undef"
12710                 fi
12711     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
12712                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
12713                 echo 'strerror() found in string header.' >&4
12714                 d_strerror="$define"
12715                 d_strerrm='strerror(e)'
12716                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
12717                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
12718                                 d_syserrlst="$define"
12719                 else
12720                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
12721                         d_syserrlst="$undef"
12722                 fi
12723     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
12724                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
12725                 d_strerror="$undef"
12726                 d_syserrlst="$define"
12727                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
12728     else
12729                 echo 'strerror() and sys_errlist[] NOT found.' >&4
12730                 d_strerror="$undef"
12731                 d_syserrlst="$undef"
12732                 d_strerrm='"unknown"'
12733     fi
12734 fi
12735
12736 : see if strftime exists
12737 set strftime d_strftime
12738 eval $inlibc
12739
12740 : see if strtod exists
12741 set strtod d_strtod
12742 eval $inlibc
12743
12744 : see if strtol exists
12745 set strtol d_strtol
12746 eval $inlibc
12747
12748 : see if strtold exists
12749 set strtold d_strtold
12750 eval $inlibc
12751
12752 : see if strtoll exists
12753 set strtoll d_strtoll
12754 eval $inlibc
12755
12756 case "$d_longlong-$d_strtoll" in
12757 "$define-$define")
12758         $cat <<EOM
12759 Checking whether your strtoll() works okay...
12760 EOM
12761         $cat >try.c <<'EOCP'
12762 #include <errno.h>
12763 #ifdef __hpux
12764 #define strtoll __strtoll
12765 #endif
12766 #ifdef __EMX__
12767 #define strtoll _strtoll
12768 #endif
12769 #include <stdio.h>
12770 extern long long int strtoll(char *s, char **, int); 
12771 static int bad = 0;
12772 int check(char *s, long long ell, int een) {
12773         long long gll;
12774         errno = 0;
12775         gll = strtoll(s, 0, 10);
12776         if (!((gll == ell) && (errno == een)))
12777                 bad++;
12778 }
12779 int main() {
12780         check(" 1",                                      1LL, 0);
12781         check(" 0",                                      0LL, 0);
12782         check("-1",                                     -1LL, 0);
12783         check("-9223372036854775808", -9223372036854775808LL, 0);
12784         check("-9223372036854775808", -9223372036854775808LL, 0);
12785         check(" 9223372036854775807",  9223372036854775807LL, 0);
12786         check("-9223372036854775808", -9223372036854775808LL, 0);
12787         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
12788         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
12789         if (!bad)
12790                 printf("ok\n");
12791 }
12792 EOCP
12793         set try
12794         if eval $compile; then
12795                 yyy=`$run ./try`
12796                 case "$yyy" in
12797                 ok) echo "Your strtoll() seems to be working okay." ;;
12798                 *) cat <<EOM >&4
12799 Your strtoll() doesn't seem to be working okay.
12800 EOM
12801                    d_strtoll="$undef"
12802                    ;;
12803                 esac
12804         else
12805                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12806                 d_strtoll="$undef"
12807         fi
12808         ;;
12809 esac
12810
12811 : see if strtoq exists
12812 set strtoq d_strtoq
12813 eval $inlibc
12814
12815 : see if strtoul exists
12816 set strtoul d_strtoul
12817 eval $inlibc
12818
12819 case "$d_strtoul" in
12820 "$define")
12821         $cat <<EOM
12822 Checking whether your strtoul() works okay...
12823 EOM
12824         $cat >try.c <<'EOCP'
12825 #include <errno.h>
12826 #include <stdio.h>
12827 extern unsigned long int strtoul(char *s, char **, int); 
12828 static int bad = 0;
12829 void check(char *s, unsigned long eul, int een) {
12830         unsigned long gul;
12831         errno = 0;
12832         gul = strtoul(s, 0, 10);
12833         if (!((gul == eul) && (errno == een)))
12834                 bad++;
12835 }
12836 int main() {
12837         check(" 1", 1L, 0);
12838         check(" 0", 0L, 0);
12839 EOCP
12840         case "$longsize" in
12841         8)
12842             $cat >>try.c <<'EOCP'
12843         check("18446744073709551615", 18446744073709551615UL, 0);
12844         check("18446744073709551616", 18446744073709551615UL, ERANGE);
12845 #if 0 /* strtoul() for /^-/ strings is undefined. */
12846         check("-1", 18446744073709551615UL, 0);
12847         check("-18446744073709551614", 2, 0);
12848         check("-18446744073709551615", 1, 0);
12849         check("-18446744073709551616", 18446744073709551615UL, ERANGE);
12850         check("-18446744073709551617", 18446744073709551615UL, ERANGE);
12851 #endif
12852 EOCP
12853                 ;;
12854         4)
12855                     $cat >>try.c <<'EOCP'
12856         check("4294967295", 4294967295UL, 0);
12857         check("4294967296", 4294967295UL, ERANGE);
12858 #if 0 /* strtoul() for /^-/ strings is undefined. */
12859         check("-1", 4294967295UL, 0);
12860         check("-4294967294", 2, 0);
12861         check("-4294967295", 1, 0);
12862         check("-4294967296", 4294967295UL, ERANGE);
12863         check("-4294967297", 4294967295UL, ERANGE);
12864 #endif
12865 EOCP
12866                 ;;
12867         *)
12868 : Should we write these tests to be more portable by sprintf-ing
12869 : ~0 and then manipulating that char string as input for strtol?
12870                 ;;
12871         esac
12872         $cat >>try.c <<'EOCP'
12873         if (!bad)
12874                 printf("ok\n");
12875         return 0;
12876 }
12877 EOCP
12878         set try
12879         if eval $compile; then
12880                 case "`$run ./try`" in
12881                 ok) echo "Your strtoul() seems to be working okay." ;;
12882                 *) cat <<EOM >&4
12883 Your strtoul() doesn't seem to be working okay.
12884 EOM
12885                    d_strtoul="$undef"
12886                    ;;
12887                 esac
12888         fi
12889         ;;
12890 esac
12891
12892 : see if strtoull exists
12893 set strtoull d_strtoull
12894 eval $inlibc
12895
12896 case "$d_longlong-$d_strtoull" in
12897 "$define-$define")
12898         $cat <<EOM
12899 Checking whether your strtoull() works okay...
12900 EOM
12901         $cat >try.c <<'EOCP'
12902 #include <errno.h>
12903 #ifdef __hpux
12904 #define strtoull __strtoull
12905 #endif
12906 #include <stdio.h>
12907 extern unsigned long long int strtoull(char *s, char **, int); 
12908 static int bad = 0;
12909 int check(char *s, long long eull, int een) {
12910         long long gull;
12911         errno = 0;
12912         gull = strtoull(s, 0, 10);
12913         if (!((gull == eull) && (errno == een)))
12914                 bad++;
12915 }
12916 int main() {
12917         check(" 1",                                        1LL, 0);
12918         check(" 0",                                        0LL, 0);
12919         check("18446744073709551615",  18446744073709551615ULL, 0);
12920         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12921 #if 0 /* strtoull() for /^-/ strings is undefined. */
12922         check("-1",                    18446744073709551615ULL, 0);
12923         check("-18446744073709551614",                     2LL, 0);
12924         check("-18446744073709551615",                     1LL, 0);
12925         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12926         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12927 #endif
12928         if (!bad)
12929                 printf("ok\n");
12930 }
12931 EOCP
12932         set try
12933         if eval $compile; then
12934                 case "`$run ./try`" in
12935                 ok) echo "Your strtoull() seems to be working okay." ;;
12936                 *) cat <<EOM >&4
12937 Your strtoull() doesn't seem to be working okay.
12938 EOM
12939                    d_strtoull="$undef"
12940                    ;;
12941                 esac
12942         fi
12943         ;;
12944 esac
12945
12946 : see if strtouq exists
12947 set strtouq d_strtouq
12948 eval $inlibc
12949
12950 case "$d_strtouq" in
12951 "$define")
12952         $cat <<EOM
12953 Checking whether your strtouq() works okay...
12954 EOM
12955         $cat >try.c <<'EOCP'
12956 #include <errno.h>
12957 #include <stdio.h>
12958 extern unsigned long long int strtouq(char *s, char **, int); 
12959 static int bad = 0;
12960 void check(char *s, unsigned long long eull, int een) {
12961         unsigned long long gull;
12962         errno = 0;
12963         gull = strtouq(s, 0, 10);
12964         if (!((gull == eull) && (errno == een)))
12965                 bad++;
12966 }
12967 int main() {
12968         check(" 1",                                        1LL, 0);
12969         check(" 0",                                        0LL, 0);
12970         check("18446744073709551615",  18446744073709551615ULL, 0);
12971         check("18446744073709551616",  18446744073709551615ULL, ERANGE);
12972 #if 0 /* strtouq() for /^-/ strings is undefined. */
12973         check("-1",                    18446744073709551615ULL, 0);
12974         check("-18446744073709551614",                     2LL, 0);
12975         check("-18446744073709551615",                     1LL, 0);
12976         check("-18446744073709551616", 18446744073709551615ULL, ERANGE);
12977         check("-18446744073709551617", 18446744073709551615ULL, ERANGE);
12978 #endif
12979         if (!bad)
12980                 printf("ok\n");
12981         return 0;
12982 }
12983 EOCP
12984         set try
12985         if eval $compile; then
12986                 case "`$run ./try`" in
12987                 ok) echo "Your strtouq() seems to be working okay." ;;
12988                 *) cat <<EOM >&4
12989 Your strtouq() doesn't seem to be working okay.
12990 EOM
12991                    d_strtouq="$undef"
12992                    ;;
12993                 esac
12994         fi
12995         ;;
12996 esac
12997
12998 : see if strxfrm exists
12999 set strxfrm d_strxfrm
13000 eval $inlibc
13001
13002 : see if symlink exists
13003 set symlink d_symlink
13004 eval $inlibc
13005
13006 : see if syscall exists
13007 set syscall d_syscall
13008 eval $inlibc
13009
13010 : see if prototype for syscall is available
13011 echo " "
13012 set d_syscallproto syscall $i_unistd unistd.h
13013 eval $hasproto
13014
13015 : see if sysconf exists
13016 set sysconf d_sysconf
13017 eval $inlibc
13018
13019 : see if system exists
13020 set system d_system
13021 eval $inlibc
13022
13023 : see if tcgetpgrp exists
13024 set tcgetpgrp d_tcgetpgrp
13025 eval $inlibc
13026
13027 : see if tcsetpgrp exists
13028 set tcsetpgrp d_tcsetpgrp
13029 eval $inlibc
13030
13031 : see if prototype for telldir is available
13032 echo " "
13033 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
13034 eval $hasproto
13035
13036 : see if this is a sys/times.h system
13037 set sys/times.h i_systimes
13038 eval $inhdr
13039
13040 : see if times exists
13041 echo " "
13042 if set times val -f d_times; eval $csym; $val; then
13043         echo 'times() found.' >&4
13044         d_times="$define"
13045         inc=''
13046         case "$i_systimes" in
13047         "$define") inc='sys/times.h';;
13048         esac
13049         rp="What is the type returned by times() on this system?"
13050         set clock_t clocktype long stdio.h sys/types.h $inc
13051         eval $typedef_ask
13052 else
13053         echo 'times() NOT found, hope that will do.' >&4
13054         d_times="$undef"
13055         clocktype='int'
13056 fi
13057
13058 : see if truncate exists
13059 set truncate d_truncate
13060 eval $inlibc
13061
13062 : see if tzname[] exists
13063 echo " "
13064 if set tzname val -a d_tzname; eval $csym; $val; then
13065         val="$define"
13066         echo 'tzname[] found.' >&4
13067 else
13068         val="$undef"
13069         echo 'tzname[] NOT found.' >&4
13070 fi
13071 set d_tzname
13072 eval $setvar
13073
13074 case "$osname" in
13075 next|rhapsody|darwin) multiarch="$define" ;;
13076 esac
13077 case "$multiarch" in
13078 ''|[nN]*) multiarch="$undef" ;;
13079 esac
13080
13081 : check for ordering of bytes in a long
13082 echo " "
13083 case "$usecrosscompile$multiarch" in
13084 *$define*)
13085         $cat <<EOM
13086 You seem to be either cross-compiling or doing a multiarchitecture build,
13087 skipping the byteorder check.
13088
13089 EOM
13090         byteorder='ffff'
13091         ;;
13092 *)
13093         case "$byteorder" in
13094         '')
13095                 $cat <<'EOM'
13096 In the following, larger digits indicate more significance.  A big-endian
13097 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
13098 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
13099 machines may have weird orders like 3412.  A Cray will report 87654321,
13100 an Alpha will report 12345678. If the test program works the default is
13101 probably right.
13102 I'm now running the test program...
13103 EOM
13104                 $cat >try.c <<'EOCP'
13105 #include <stdio.h>
13106 int main()
13107 {
13108         int i;
13109         union {
13110                 unsigned long l;
13111                 char c[sizeof(long)];
13112         } u;
13113
13114         if (sizeof(long) > 4)
13115                 u.l = (0x08070605L << 32) | 0x04030201L;
13116         else
13117                 u.l = 0x04030201L;
13118         for (i = 0; i < sizeof(long); i++)
13119                 printf("%c", u.c[i]+'0');
13120         printf("\n");
13121         exit(0);
13122 }
13123 EOCP
13124                 xxx_prompt=y
13125                 set try
13126                 if eval $compile && ./try > /dev/null; then
13127                         dflt=`$run ./try`
13128                         case "$dflt" in
13129                         [1-4][1-4][1-4][1-4]|12345678|87654321)
13130                                 echo "(The test program ran ok.)"
13131                                 echo "byteorder=$dflt"
13132                                 xxx_prompt=n
13133                         ;;
13134                         ????|????????) echo "(The test program ran ok.)" ;;
13135                         *) echo "(The test program didn't run right for some reason.)" ;;
13136                         esac
13137                 else
13138                         dflt='4321'
13139                         cat <<'EOM'
13140 (I can't seem to compile the test program.  Guessing big-endian...)
13141 EOM
13142                 fi
13143                 case "$xxx_prompt" in
13144                 y)
13145                         rp="What is the order of bytes in a long?"
13146                         . ./myread
13147                         byteorder="$ans"
13148                         ;;
13149                 *)      byteorder=$dflt
13150                         ;;
13151                 esac
13152                 ;;
13153         esac
13154         $rm -f try.c try
13155         ;;
13156 esac
13157
13158
13159 $cat <<EOM
13160
13161 Checking to see whether you can access character data unalignedly...
13162 EOM
13163 $cat >try.c <<EOCP
13164 #include <stdio.h>
13165 #define U32 $u32type
13166 #define BYTEORDER $byteorder
13167 int main() {
13168 #if BYTEORDER == 0x1234 || BYTEORDER == 0x4321
13169     U8 buf[] = "\0\0\0\1\0\0\0\0";
13170     U32 *up;
13171     int i;
13172
13173     if (sizeof(U32) != 4) {
13174         printf("sizeof(U32) is not 4, but %d\n", sizeof(U32));
13175         exit(1);
13176     }
13177
13178     fflush(stdout);
13179
13180     for (i = 0; i < 4; i++) {
13181         up = (U32*)(buf + i);
13182         if (! ((*up == 1 << (8*i)) ||   /* big-endian */
13183                (*up == 1 << (8*(3-i)))  /* little-endian */
13184               )
13185            )
13186         {
13187             printf("read failed (%x)\n", *up);
13188             exit(2);
13189         }
13190     }
13191
13192     /* write test */
13193     for (i = 0; i < 4; i++) {
13194         up = (U32*)(buf + i);
13195         *up = 0xBeef;
13196         if (*up != 0xBeef) {
13197             printf("write failed (%x)\n", *up);
13198             exit(3);
13199         }
13200     }
13201
13202     exit(0);
13203 #else
13204     printf("1\n");
13205     exit(1);
13206 #endif
13207     return 0;
13208 }
13209 EOCP
13210 set try
13211 if eval $compile_ok; then
13212         echo "(Testing for character data alignment may dump core.)" >&4
13213         $run ./try 2>&1 >/dev/null
13214         case "$?" in
13215         0)      cat >&4 <<EOM
13216 You can access character data pretty unalignedly.
13217 EOM
13218                 d_u32align="$undef"
13219                 ;;
13220         *)      cat >&4 <<EOM
13221 It seems that you must access character data in an aligned manner.
13222 EOM
13223                 d_u32align="$define"
13224                 ;;
13225         esac
13226         $rm -f core core.try.* try.core
13227 else
13228         rp='Can you access character data at unaligned addresses?'
13229         dflt='n'
13230         . ./myread
13231         case "$ans" in
13232         [yY]*)  d_u32align="$undef"  ;;
13233         *)      d_u32align="$define" ;;
13234         esac
13235 fi
13236
13237 : see if ualarm exists
13238 set ualarm d_ualarm
13239 eval $inlibc
13240
13241 : see if umask exists
13242 set umask d_umask
13243 eval $inlibc
13244
13245 : see if usleep exists
13246 set usleep d_usleep
13247 eval $inlibc
13248
13249 : see if prototype for usleep is available
13250 echo " "
13251 set d_usleepproto usleep $i_unistd unistd.h
13252 eval $hasproto
13253
13254 : see if ustat exists
13255 set ustat d_ustat
13256 eval $inlibc
13257
13258 : backward compatibility for d_hvfork
13259 if test X$d_hvfork != X; then
13260         d_vfork="$d_hvfork"
13261         d_hvfork=''
13262 fi
13263 : see if there is a vfork
13264 val=''
13265 set vfork val
13266 eval $inlibc
13267
13268 : Ok, but do we want to use it. vfork is reportedly unreliable in 
13269 : perl on Solaris 2.x, and probably elsewhere.
13270 case "$val" in
13271 $define)
13272         echo " "
13273         case "$usevfork" in
13274         false) dflt='n';;
13275         *) dflt='y';;
13276         esac
13277         cat <<'EOM'
13278  
13279 Perl can only use a vfork() that doesn't suffer from strict
13280 restrictions on calling functions or modifying global data in
13281 the child.  For example, glibc-2.1 contains such a vfork()
13282 that is unsuitable.  If your system provides a proper fork()
13283 call, chances are that you do NOT want perl to use vfork().
13284
13285 EOM
13286         rp="Do you still want to use vfork()?"
13287         . ./myread
13288         case "$ans" in
13289         y|Y) ;;
13290         *)
13291                 echo "Ok, we won't use vfork()."
13292                 val="$undef"
13293                 ;;
13294         esac
13295         ;;
13296 esac
13297 set d_vfork
13298 eval $setvar
13299 case "$d_vfork" in
13300 $define) usevfork='true';;
13301 *) usevfork='false';;
13302 esac
13303
13304 : see if this is an sysdir system
13305 set sys/dir.h i_sysdir
13306 eval $inhdr
13307
13308 : see if this is an sysndir system
13309 set sys/ndir.h i_sysndir
13310 eval $inhdr
13311
13312 : see if closedir exists
13313 set closedir d_closedir
13314 eval $inlibc
13315
13316 case "$d_closedir" in
13317 "$define")
13318         echo " "
13319         echo "Checking whether closedir() returns a status..." >&4
13320         cat > try.c <<EOM
13321 #$i_dirent I_DIRENT             /**/
13322 #$i_sysdir I_SYS_DIR            /**/
13323 #$i_sysndir I_SYS_NDIR          /**/
13324 #$i_systypes I_SYS_TYPES        /**/
13325
13326 #if defined(I_SYS_TYPES)
13327 #include <sys/types.h>
13328 #endif
13329 #if defined(I_DIRENT)
13330 #include <dirent.h>
13331 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
13332 #include <sys/dir.h>
13333 #endif
13334 #else
13335 #ifdef I_SYS_NDIR
13336 #include <sys/ndir.h>
13337 #else
13338 #ifdef I_SYS_DIR
13339 #ifdef hp9000s500
13340 #include <ndir.h>       /* may be wrong in the future */
13341 #else
13342 #include <sys/dir.h>
13343 #endif
13344 #endif
13345 #endif
13346 #endif 
13347 int main() { return closedir(opendir(".")); }
13348 EOM
13349         set try
13350         if eval $compile_ok; then
13351                 if $run ./try > /dev/null 2>&1 ; then
13352                         echo "Yes, it does."
13353                         val="$undef"
13354                 else
13355                         echo "No, it doesn't."
13356                         val="$define"
13357                 fi
13358         else
13359                 echo "(I can't seem to compile the test program--assuming it doesn't)"
13360                 val="$define"
13361         fi
13362         ;;
13363 *)
13364         val="$undef";
13365         ;;
13366 esac
13367 set d_void_closedir
13368 eval $setvar
13369 $rm -f try try.*
13370 : see if there is a wait4
13371 set wait4 d_wait4
13372 eval $inlibc
13373
13374 : see if waitpid exists
13375 set waitpid d_waitpid
13376 eval $inlibc
13377
13378 : see if wcstombs exists
13379 set wcstombs d_wcstombs
13380 eval $inlibc
13381
13382 : see if wctomb exists
13383 set wctomb d_wctomb
13384 eval $inlibc
13385
13386 : see if writev exists
13387 set writev d_writev
13388 eval $inlibc
13389
13390 : preserve RCS keywords in files with variable substitution, grrr
13391 Date='$Date'
13392 Id='$Id'
13393 Log='$Log'
13394 RCSfile='$RCSfile'
13395 Revision='$Revision'
13396
13397 : check for alignment requirements
13398 echo " "
13399 case "$usecrosscompile$multiarch" in
13400 *$define*)
13401         $cat <<EOM
13402 You seem to be either cross-compiling or doing a multiarchitecture build,
13403 skipping the memory alignment check.
13404
13405 EOM
13406         case "$alignbytes" in
13407         '') alignbytes=8 ;;
13408         esac
13409         ;;
13410 *)
13411         case "$alignbytes" in
13412         '') echo "Checking alignment constraints..." >&4
13413                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
13414                         $cat >try.c <<'EOCP'
13415 typedef long double NV;
13416 EOCP
13417                 else
13418                         $cat >try.c <<'EOCP'
13419 typedef double NV;
13420 EOCP
13421                 fi
13422                 $cat >>try.c <<'EOCP'
13423 #include <stdio.h>
13424 struct foobar {
13425         char foo;
13426         NV bar;
13427 } try_algn;
13428 int main()
13429 {
13430     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
13431     return(0);
13432 }
13433 EOCP
13434                 set try
13435                 if eval $compile_ok; then
13436                         dflt=`$run ./try`
13437                 else
13438                         dflt='8'
13439                         echo "(I can't seem to compile the test program...)"
13440                 fi
13441                 ;;
13442         *) dflt="$alignbytes"
13443                 ;;
13444         esac
13445         rp="Doubles must be aligned on a how-many-byte boundary?"
13446         . ./myread
13447         alignbytes="$ans"
13448         $rm -f try.c try
13449         ;;
13450 esac
13451
13452
13453 : set the base revision
13454 baserev=5.0
13455
13456 : how do we catenate cpp tokens here?
13457 echo " "
13458 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
13459 $cat >cpp_stuff.c <<'EOCP'
13460 #define RCAT(a,b)a/**/b
13461 #define ACAT(a,b)a ## b
13462 RCAT(Rei,ser)
13463 ACAT(Cir,cus)
13464 EOCP
13465 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
13466 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
13467         echo "Oh!  Smells like ANSI's been here." >&4
13468         echo "We can catify or stringify, separately or together!"
13469         cpp_stuff=42
13470 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
13471         echo "Ah, yes!  The good old days!" >&4
13472         echo "However, in the good old days we don't know how to stringify and"
13473         echo "catify at the same time."
13474         cpp_stuff=1
13475 else
13476         $cat >&4 <<EOM
13477 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
13478 to have to edit the values of CAT[2-5] in config.h...
13479 EOM
13480         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
13481 fi
13482 $rm -f cpp_stuff.*
13483
13484 : see if this is a db.h system
13485 set db.h i_db
13486 eval $inhdr
13487
13488 case "$i_db" in
13489 $define)
13490         : Check db version.
13491         echo " "
13492         echo "Checking Berkeley DB version ..." >&4
13493         $cat >try.c <<EOCP
13494 #$d_const HASCONST
13495 #ifndef HASCONST
13496 #define const
13497 #endif
13498 #include <sys/types.h>
13499 #include <stdio.h>
13500 #include <db.h>
13501 int main(int argc, char *argv[])
13502 {
13503 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
13504     int Major, Minor, Patch ;
13505     unsigned long Version ;
13506     (void)db_version(&Major, &Minor, &Patch) ;
13507     if (argc == 2) {
13508         printf("%d %d %d %d %d %d\n",
13509                DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH,
13510                Major, Minor, Patch);
13511         exit(0);
13512     }
13513     printf("You have Berkeley DB Version 2 or greater.\n");
13514
13515     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
13516                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
13517     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
13518                 Major, Minor, Patch) ;
13519
13520     /* check that db.h & libdb are compatible */
13521     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
13522         printf("db.h and libdb are incompatible.\n") ;
13523         exit(3);        
13524     }
13525
13526     printf("db.h and libdb are compatible.\n") ;
13527
13528     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
13529                 + DB_VERSION_PATCH ;
13530
13531     /* needs to be >= 2.3.4 */
13532     if (Version < 2003004) {
13533     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
13534         printf("Perl needs Berkeley DB 2.3.4 or greater.\n") ;
13535         exit(2);        
13536     }
13537
13538     exit(0);
13539 #else
13540 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
13541     if (argc == 2) {
13542         printf("1 0 0\n");
13543         exit(0);
13544     }
13545     printf("You have Berkeley DB Version 1.\n");
13546     exit(0);    /* DB version < 2: the coast is clear. */
13547 #else
13548     exit(1);    /* <db.h> not Berkeley DB? */
13549 #endif
13550 #endif
13551 }
13552 EOCP
13553         set try
13554         if eval $compile_ok && $run ./try; then
13555                 echo 'Looks OK.' >&4
13556                 set `$run ./try 1`
13557                 db_version_major=$1
13558                 db_version_minor=$2
13559                 db_version_patch=$3
13560         else
13561                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
13562                 i_db=$undef
13563                 case " $libs " in
13564                 *"-ldb "*)
13565                         : Remove db from list of libraries to use
13566                         echo "Removing unusable -ldb from library list" >&4
13567                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
13568                         shift
13569                         libs="$*"
13570                         echo "libs = $libs" >&4
13571                         ;;
13572                 esac
13573         fi
13574         $rm -f try.*
13575         ;;
13576 esac
13577
13578 case "$i_db" in
13579 define)
13580         : Check the return type needed for hash 
13581         echo " "
13582         echo "Checking return type needed for hash for Berkeley DB ..." >&4
13583         $cat >try.c <<EOCP
13584 #$d_const HASCONST
13585 #ifndef HASCONST
13586 #define const
13587 #endif
13588 #include <sys/types.h>
13589 #include <db.h>
13590
13591 #ifndef DB_VERSION_MAJOR
13592 u_int32_t hash_cb (ptr, size)
13593 const void *ptr;
13594 size_t size;
13595 {
13596 }
13597 HASHINFO info;
13598 int main()
13599 {
13600         info.hash = hash_cb;
13601 }
13602 #endif
13603 EOCP
13604         if $cc $ccflags -c try.c >try.out 2>&1 ; then
13605                 if $contains warning try.out >>/dev/null 2>&1 ; then
13606                         db_hashtype='int'
13607                 else
13608                         db_hashtype='u_int32_t'
13609                 fi
13610         else
13611                 : XXX Maybe we should just give up here.
13612                 db_hashtype=u_int32_t
13613                 $cat try.out >&4
13614                 echo "Help:  I can't seem to compile the db test program." >&4
13615                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
13616         fi
13617         $rm -f try.*
13618         echo "Your version of Berkeley DB uses $db_hashtype for hash."
13619         ;;
13620 *)      db_hashtype=u_int32_t
13621         ;;
13622 esac
13623 case "$i_db" in
13624 define)
13625         : Check the return type needed for prefix 
13626         echo " "
13627         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
13628         cat >try.c <<EOCP
13629 #$d_const HASCONST
13630 #ifndef HASCONST
13631 #define const
13632 #endif
13633 #include <sys/types.h>
13634 #include <db.h>
13635
13636 #ifndef DB_VERSION_MAJOR
13637 size_t prefix_cb (key1, key2)
13638 const DBT *key1;
13639 const DBT *key2;
13640 {
13641 }
13642 BTREEINFO info;
13643 int main()
13644 {
13645         info.prefix = prefix_cb;
13646 }
13647 #endif
13648 EOCP
13649         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
13650                 if $contains warning try.out >>/dev/null 2>&1 ; then
13651                         db_prefixtype='int'
13652                 else
13653                         db_prefixtype='size_t'
13654                 fi
13655         else
13656                 db_prefixtype='size_t'
13657                 : XXX Maybe we should just give up here.
13658                 $cat try.out >&4
13659                 echo "Help:  I can't seem to compile the db test program." >&4
13660                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
13661         fi
13662         $rm -f try.*
13663         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
13664         ;;
13665 *)      db_prefixtype='size_t'
13666         ;;
13667 esac
13668
13669
13670 : How can we generate normalized random numbers ?
13671 echo " "
13672 echo "Looking for a random number function..." >&4
13673 case "$randfunc" in
13674 '')
13675         if set drand48 val -f; eval $csym; $val; then
13676                 dflt="drand48"
13677                 echo "Good, found drand48()." >&4
13678         elif set random val -f; eval $csym; $val; then
13679                 dflt="random"
13680                 echo "OK, found random()." >&4
13681         else
13682                 dflt="rand"
13683                 echo "Yick, looks like I have to use rand()." >&4
13684         fi
13685         echo " "
13686         ;;
13687 *)
13688         dflt="$randfunc"
13689         ;;
13690 esac
13691 cont=true
13692
13693 case "$ccflags" in
13694 *-Dmy_rand=*|*-Dmy_srand=*)
13695         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
13696         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
13697         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
13698         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
13699         ;;
13700 esac
13701
13702 while $test "$cont"; do
13703         rp="Use which function to generate random numbers?"
13704         . ./myread
13705         if $test "$ans" = "$dflt"; then
13706                 : null
13707         else
13708                 randbits=''
13709         fi
13710         randfunc="$ans"
13711         if set $ans val -f; eval $csym; $val; then
13712                 cont=''
13713         else
13714                 dflt=y
13715                 rp="I cannot find function $ans. Use that name anyway?"
13716                 . ./myread
13717                 dflt=rand
13718                 case "$ans" in
13719                         [yY]*) cont='';;
13720                 esac
13721         fi
13722         case "$cont" in
13723         '')
13724                 case "$randfunc" in
13725                 drand48)
13726                         drand01="drand48()"
13727                         seedfunc="srand48"
13728                         randbits=48
13729                         randseedtype=long
13730                         ;;
13731                 rand|random)
13732                         case "$randbits" in
13733                         '')
13734 echo "Checking to see how many bits your $randfunc() function produces..." >&4
13735                                 $cat >try.c <<EOCP
13736 #$i_unistd I_UNISTD
13737 #$i_stdlib I_STDLIB
13738 #include <stdio.h>
13739 #ifdef I_UNISTD
13740 #  include <unistd.h>
13741 #endif
13742 #ifdef I_STDLIB
13743 #  include <stdlib.h>
13744 #endif
13745 int main()
13746 {
13747         register int i;
13748         register unsigned long tmp;
13749         register unsigned long max = 0L;
13750
13751         for (i = 1000; i; i--) {
13752                 tmp = (unsigned long) $randfunc();
13753                 if (tmp > max) max = tmp;
13754         }
13755         for (i = 0; max; i++)
13756                 max /= 2;
13757         printf("%d\n",i);
13758 }
13759 EOCP
13760                                 set try
13761                                 if eval $compile_ok; then
13762                                         dflt=`try`
13763                                 else
13764                                         dflt='?'
13765                                         echo "(I can't seem to compile the test program...)"
13766                                 fi
13767                                 ;;
13768                         *)
13769                                 dflt="$randbits"
13770                                 ;;
13771                         esac
13772                         rp="How many bits does your $randfunc() function produce?"
13773                         . ./myread
13774                         randbits="$ans"
13775                         $rm -f try.c try
13776                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13777                         seedfunc="s$randfunc"
13778                         randseedtype=unsigned
13779                         ;;
13780                 *)
13781                         dflt="31"
13782                         rp="How many bits does your $randfunc() function produce?"
13783                         . ./myread
13784                         randbits="$ans"
13785                         seedfunc="s$randfunc"
13786                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
13787                         if set $seedfunc val -f; eval $csym; $val; then
13788                                 echo "(Using $seedfunc() to seed random generator)"
13789                         else
13790                                 echo "(Warning: no $seedfunc() to seed random generator)"
13791                                 seedfunc=rand
13792                         fi
13793                         randseedtype=unsigned
13794                         ;;
13795                 esac
13796                 ;;
13797         esac
13798 done
13799
13800 echo " "
13801 echo "Determining whether or not we are on an EBCDIC system..." >&4
13802 $cat >try.c <<'EOM'
13803 int main()
13804 {
13805   if ('M'==0xd4) return 0;
13806   return 1;
13807 }
13808 EOM
13809
13810 val=$undef
13811 set try
13812 if eval $compile_ok; then
13813         if $run ./try; then
13814                 echo "You seem to speak EBCDIC." >&4
13815                 val="$define"
13816         else
13817                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF-8." >&4
13818         fi
13819 else
13820         echo "I'm unable to compile the test program." >&4
13821         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
13822 fi
13823 $rm -f try try.*
13824 set ebcdic
13825 eval $setvar
13826
13827 echo " "
13828 $cat >&4 <<EOM
13829 Checking how to flush all pending stdio output...
13830 EOM
13831 # I only know how to find the first 32 possibly open files on SunOS.
13832 # See also hints/sunos_4_1.sh and util.c  --AD
13833 case "$osname" in
13834 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
13835 esac
13836 $cat >>try.c <<EOCP
13837 #include <stdio.h>
13838 #$i_unistd I_UNISTD
13839 #ifdef I_UNISTD
13840 # include <unistd.h>
13841 #endif
13842 #$d_sysconf HAS_SYSCONF
13843 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
13844 #ifdef HAS_STDIO_STREAM_ARRAY
13845 # define STDIO_STREAM_ARRAY $stdio_stream_array
13846 #endif
13847 int main() {
13848   FILE* p;
13849   unlink("try.out");
13850   p = fopen("try.out", "w");
13851 #ifdef TRY_FPUTC
13852   fputc('x', p);
13853 #else
13854 # ifdef TRY_FPRINTF
13855   fprintf(p, "x");
13856 # endif
13857 #endif
13858 #ifdef TRY_FFLUSH_NULL
13859   fflush(NULL);
13860 #endif
13861 #ifdef TRY_FFLUSH_ALL
13862   {
13863     long open_max = -1;
13864 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
13865     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
13866 # else
13867 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
13868     open_max = sysconf(_SC_OPEN_MAX);
13869 #  else
13870 #   ifdef FOPEN_MAX
13871     open_max = FOPEN_MAX;
13872 #   else
13873 #    ifdef OPEN_MAX
13874     open_max = OPEN_MAX;
13875 #    else
13876 #     ifdef _NFILE
13877     open_max = _NFILE;
13878 #     endif
13879 #    endif
13880 #   endif
13881 #  endif
13882 # endif 
13883 # ifdef HAS_STDIO_STREAM_ARRAY
13884     if (open_max > 0) {
13885       long i;
13886       for (i = 0; i < open_max; i++)
13887             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
13888                 STDIO_STREAM_ARRAY[i]._file < open_max &&
13889                 STDIO_STREAM_ARRAY[i]._flag)
13890                 fflush(&STDIO_STREAM_ARRAY[i]);
13891     }   
13892   }
13893 # endif
13894 #endif
13895   _exit(42);
13896 }
13897 EOCP
13898 : first we have to find out how _not_ to flush
13899 $to try.c
13900 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
13901     output=''
13902     set try -DTRY_FPUTC
13903     if eval $compile; then
13904             $run ./try 2>/dev/null
13905             code="$?"
13906             $from try.out
13907             if $test ! -s try.out -a "X$code" = X42; then
13908                 output=-DTRY_FPUTC
13909             fi
13910     fi
13911     case "$output" in
13912     '')
13913             set try -DTRY_FPRINTF
13914             if eval $compile; then
13915                     $run ./try 2>/dev/null
13916                     code="$?"
13917                     $from try.out
13918                     if $test ! -s try.out -a "X$code" = X42; then
13919                         output=-DTRY_FPRINTF
13920                     fi
13921             fi
13922         ;;
13923     esac
13924 fi
13925 : check for fflush NULL behaviour
13926 case "$fflushNULL" in
13927 '')     set try -DTRY_FFLUSH_NULL $output
13928         if eval $compile; then
13929                 $run ./try 2>/dev/null
13930                 code="$?"
13931                 $from try.out
13932                 if $test -s try.out -a "X$code" = X42; then
13933                         fflushNULL="`$cat try.out`"
13934                 else
13935                         if $test "X$code" != X42; then
13936                                 $cat >&4 <<EOM
13937 (If this test failed, don't worry, we'll try another method shortly.)
13938 EOM
13939                         fi
13940                 fi
13941         fi
13942         $rm -f core try.core core.try.*
13943         case "$fflushNULL" in
13944         x)      $cat >&4 <<EOM
13945 Your fflush(NULL) works okay for output streams.
13946 Let's see if it clobbers input pipes...
13947 EOM
13948 # As of mid-March 2000 all versions of Solaris appear to have a stdio
13949 # bug that improperly flushes the input end of pipes.  So we avoid the
13950 # autoflush on fork/system/exec support for now. :-(
13951 $cat >tryp.c <<EOCP
13952 #include <stdio.h>
13953 int
13954 main(int argc, char **argv)
13955 {
13956     char buf[1024];
13957     int i;
13958     char *bp = buf;
13959     while (1) {
13960         while ((i = getc(stdin)) != -1
13961                && (*bp++ = i) != '\n'
13962                && bp < &buf[1024])
13963         /* DO NOTHING */ ;
13964         *bp = '\0';
13965         fprintf(stdout, "%s", buf);
13966         fflush(NULL);
13967         if (i == -1)
13968             return 0;
13969         bp = buf;
13970     }
13971 }
13972 EOCP
13973                 fflushNULL="$define"
13974                 set tryp
13975                 if eval $compile; then
13976                     $rm -f tryp.out
13977                     $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
13978                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
13979                        $cat >&4 <<EOM
13980 fflush(NULL) seems to behave okay with input streams.
13981 EOM
13982                         fflushNULL="$define"
13983                     else
13984                         $cat >&4 <<EOM
13985 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
13986 EOM
13987                         fflushNULL="$undef"
13988                     fi
13989                 fi
13990                 $rm -f core tryp.c tryp.core core.tryp.*
13991                 ;;
13992         '')     $cat >&4 <<EOM
13993 Your fflush(NULL) isn't working (contrary to ANSI C).
13994 EOM
13995                 fflushNULL="$undef"
13996                 ;;
13997         *)      $cat >&4 <<EOM
13998 Cannot figure out whether your fflush(NULL) works or not.
13999 I'm assuming it doesn't (contrary to ANSI C).
14000 EOM
14001                 fflushNULL="$undef"
14002                 ;;
14003         esac
14004         ;;
14005 $define|true|[yY]*)
14006         fflushNULL="$define"
14007         ;;
14008 *)
14009         fflushNULL="$undef"
14010         ;;
14011 esac
14012 : check explicit looping only if NULL did not work, and if the pipe
14013 : bug does not show up on an explicit flush too
14014 case "$fflushNULL" in
14015 "$undef")
14016         $cat >tryp.c <<EOCP
14017 #include <stdio.h>
14018 int
14019 main(int argc, char **argv)
14020 {
14021     char buf[1024];
14022     int i;
14023     char *bp = buf;
14024     while (1) {
14025         while ((i = getc(stdin)) != -1
14026                && (*bp++ = i) != '\n'
14027                && bp < &buf[1024])
14028         /* DO NOTHING */ ;
14029         *bp = '\0';
14030         fprintf(stdout, "%s", buf);
14031         fflush(stdin);
14032         if (i == -1)
14033             return 0;
14034         bp = buf;
14035     }
14036 }
14037 EOCP
14038         set tryp
14039         if eval $compile; then
14040             $rm -f tryp.out
14041             $cat tryp.c | $run ./tryp 2>/dev/null > tryp.out
14042             if cmp tryp.c tryp.out >/dev/null 2>&1; then
14043                $cat >&4 <<EOM
14044 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
14045 EOM
14046                 : now check for fflushall behaviour
14047                 case "$fflushall" in
14048                 '')     set try -DTRY_FFLUSH_ALL $output
14049                         if eval $compile; then
14050                                 $cat >&4 <<EOM
14051 (Now testing the other method--but note that this also may fail.)
14052 EOM
14053                                 $run ./try 2>/dev/null
14054                                 code=$?
14055                                 $from try.out
14056                                 if $test -s try.out -a "X$code" = X42; then
14057                                         fflushall="`$cat try.out`"
14058                                 fi
14059                         fi
14060                         $rm -f core try.core core.try.*
14061                         case "$fflushall" in
14062                         x)      $cat >&4 <<EOM
14063 Whew. Flushing explicitly all the stdio streams works.
14064 EOM
14065                                 fflushall="$define"
14066                                 ;;
14067                         '')     $cat >&4 <<EOM
14068 Sigh. Flushing explicitly all the stdio streams doesn't work.
14069 EOM
14070                                 fflushall="$undef"
14071                                 ;;
14072                         *)      $cat >&4 <<EOM
14073 Cannot figure out whether flushing stdio streams explicitly works or not.
14074 I'm assuming it doesn't.
14075 EOM
14076                                 fflushall="$undef"
14077                                 ;;
14078                         esac
14079                         ;;
14080                 "$define"|true|[yY]*)
14081                         fflushall="$define"
14082                         ;;
14083                 *)
14084                         fflushall="$undef"
14085                         ;;
14086                 esac
14087             else
14088                 $cat >&4 <<EOM
14089 All is futile.  Even fflush(stdin) clobbers input pipes!
14090 EOM
14091                 fflushall="$undef"
14092             fi
14093         else
14094             fflushall="$undef"
14095         fi
14096         $rm -f core tryp.c tryp.core core.tryp.*
14097         ;;
14098 *)      fflushall="$undef"
14099         ;;
14100 esac
14101
14102 case "$fflushNULL$fflushall" in
14103 undefundef)
14104         $cat <<EOM
14105 OK, I give up.  I cannot figure out how to flush pending stdio output.
14106 We won't be flushing handles at all before fork/exec/popen.
14107 EOM
14108         ;;
14109 esac
14110 $rm -f try.* try$exe_ext
14111
14112 : Store the full pathname to the ar program for use in the C program
14113 : Respect a hint or command line value for full_ar.
14114 case "$full_ar" in
14115 '') full_ar=$ar ;;
14116 esac
14117
14118 : Store the full pathname to the sed program for use in the C program
14119 full_sed=$sed
14120
14121 : see what type gids are declared as in the kernel
14122 echo " "
14123 echo "Looking for the type for group ids returned by getgid()."
14124 set gid_t gidtype xxx stdio.h sys/types.h
14125 eval $typedef
14126 case "$gidtype" in
14127 xxx)
14128         xxx=`./findhdr sys/user.h`
14129         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
14130         case $1 in
14131         unsigned) dflt="$1 $2" ;;
14132         *) dflt="$1" ;;
14133         esac
14134         ;;
14135 *) dflt="$gidtype";;
14136 esac
14137 case "$gidtype" in
14138 gid_t) echo "gid_t found." ;;
14139 *)      rp="What is the type for group ids returned by getgid()?"
14140         . ./myread
14141         gidtype="$ans"
14142         ;;
14143 esac
14144
14145 echo " "
14146 case "$gidtype" in
14147 *_t) zzz="$gidtype"     ;;
14148 *)   zzz="gid"          ;;
14149 esac
14150 echo "Checking the size of $zzz..." >&4 
14151 cat > try.c <<EOCP
14152 #include <sys/types.h>
14153 #include <stdio.h>
14154 int main() {
14155     printf("%d\n", (int)sizeof($gidtype));
14156     exit(0);
14157 }
14158 EOCP
14159 set try
14160 if eval $compile_ok; then
14161         yyy=`$run ./try`
14162         case "$yyy" in
14163         '')     gidsize=4
14164                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
14165                 ;;
14166         *)      gidsize=$yyy
14167                 echo "Your $zzz is $gidsize bytes long."
14168                 ;;
14169         esac
14170 else
14171         gidsize=4
14172         echo "(I can't compile the test program--guessing $gidsize.)" >&4
14173 fi
14174
14175
14176 echo " "
14177 case "$gidtype" in
14178 *_t) zzz="$gidtype"     ;;
14179 *)   zzz="gid"          ;;
14180 esac
14181 echo "Checking the sign of $zzz..." >&4 
14182 cat > try.c <<EOCP
14183 #include <sys/types.h>
14184 #include <stdio.h>
14185 int main() {
14186         $gidtype foo = -1;
14187         if (foo < 0)
14188                 printf("-1\n");
14189         else
14190                 printf("1\n");
14191 }
14192 EOCP
14193 set try
14194 if eval $compile; then
14195         yyy=`$run ./try`
14196         case "$yyy" in
14197         '')     gidsign=1
14198                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14199                 ;;
14200         *)      gidsign=$yyy
14201                 case "$gidsign" in
14202                  1) echo "Your $zzz is unsigned." ;;
14203                 -1) echo "Your $zzz is signed."   ;;
14204                 esac
14205                 ;;
14206         esac
14207 else
14208         gidsign=1
14209         echo "(I can't compile the test program--guessing unsigned.)" >&4
14210 fi
14211
14212
14213 echo " "
14214
14215 if $test X"$quadtype" != X; then
14216
14217 echo "Checking how to print 64-bit integers..." >&4
14218
14219 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
14220         $cat >try.c <<'EOCP'
14221 #include <sys/types.h>
14222 #include <stdio.h>
14223 int main() {
14224   int q = 12345678901;
14225   printf("%ld\n", q);
14226 }
14227 EOCP
14228         set try
14229         if eval $compile; then
14230                 yyy=`$run ./try`
14231                 case "$yyy" in
14232                 12345678901)
14233                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
14234                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
14235                         echo "We will use %d."
14236                         ;;
14237                 esac
14238         fi
14239 fi
14240
14241 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
14242         $cat >try.c <<'EOCP'
14243 #include <sys/types.h>
14244 #include <stdio.h>
14245 int main() {
14246   long q = 12345678901;
14247   printf("%ld\n", q);
14248 }
14249 EOCP
14250         set try
14251         if eval $compile; then
14252                 yyy=`$run ./try`
14253                 case "$yyy" in
14254                 12345678901)
14255                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
14256                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
14257                         echo "We will use %ld."
14258                         ;;
14259                 esac
14260         fi
14261 fi
14262
14263 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
14264         $cat >try.c <<'EOCP'
14265 #include <sys/types.h>
14266 #include <inttypes.h>
14267 #include <stdio.h>
14268 int main() {
14269   int64_t q = 12345678901;
14270   printf("%" PRId64 "\n", q);
14271 }
14272 EOCP
14273         set try
14274         if eval $compile; then
14275                 yyy=`$run ./try`
14276                 case "$yyy" in
14277                 12345678901)
14278                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
14279                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
14280                         echo "We will use the C9X style."
14281                         ;;
14282                 esac
14283         fi
14284 fi
14285
14286 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14287         $cat >try.c <<EOCP
14288 #include <sys/types.h>
14289 #include <stdio.h>
14290 int main() {
14291   $quadtype q = 12345678901;
14292   printf("%Ld\n", q);
14293 }
14294 EOCP
14295         set try
14296         if eval $compile; then
14297                 yyy=`$run ./try`
14298                 case "$yyy" in
14299                 12345678901)
14300                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
14301                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
14302                         echo "We will use %Ld."
14303                         ;;
14304                 esac
14305         fi
14306 fi
14307
14308 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
14309         $cat >try.c <<'EOCP'
14310 #include <sys/types.h>
14311 #include <stdio.h>
14312 int main() {
14313   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
14314   printf("%lld\n", q);
14315 }
14316 EOCP
14317         set try
14318         if eval $compile; then
14319                 yyy=`$run ./try`
14320                 case "$yyy" in
14321                 12345678901)
14322                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
14323                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
14324                         echo "We will use the %lld style."
14325                         ;;
14326                 esac
14327         fi
14328 fi
14329
14330 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
14331         $cat >try.c <<EOCP
14332 #include <sys/types.h>
14333 #include <stdio.h>
14334 int main() {
14335   $quadtype q = 12345678901;
14336   printf("%qd\n", q);
14337 }
14338 EOCP
14339         set try
14340         if eval $compile; then
14341                 yyy=`$run ./try`
14342                 case "$yyy" in
14343                 12345678901)
14344                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
14345                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
14346                         echo "We will use %qd."
14347                         ;;
14348                 esac
14349         fi
14350 fi
14351
14352 if $test X"$sPRId64" = X; then
14353         echo "Cannot figure out how to print 64-bit integers." >&4
14354 fi
14355
14356 $rm -f try try.*
14357
14358 fi
14359
14360 case "$sPRId64" in
14361 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
14362         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
14363         ;;
14364 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
14365         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
14366         ;;
14367 esac
14368
14369
14370 echo " "
14371 $echo "Checking the format strings to be used for Perl's internal types..." >&4
14372
14373 if $test X"$ivsize" = X8; then
14374         ivdformat="$sPRId64"
14375         uvuformat="$sPRIu64"
14376         uvoformat="$sPRIo64"
14377         uvxformat="$sPRIx64"
14378         uvXUformat="$sPRIXU64"
14379 else
14380         if $test X"$ivsize" = X"$longsize"; then
14381                 ivdformat='"ld"'
14382                 uvuformat='"lu"'
14383                 uvoformat='"lo"'
14384                 uvxformat='"lx"'
14385                 uvXUformat='"lX"'
14386         else
14387                 if $test X"$ivsize" = X"$intsize"; then
14388                         ivdformat='"d"'
14389                         uvuformat='"u"'
14390                         uvoformat='"o"'
14391                         uvxformat='"x"'
14392                         uvXUformat='"X"'
14393                 else
14394                         : far out
14395                         if $test X"$ivsize" = X"$shortsize"; then
14396                                 ivdformat='"hd"'
14397                                 uvuformat='"hu"'
14398                                 uvoformat='"ho"'
14399                                 uvxformat='"hx"'
14400                                 uvXUformat='"hX"'
14401                         fi
14402                 fi
14403         fi
14404 fi
14405
14406 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
14407         nveformat="$sPRIeldbl"
14408         nvfformat="$sPRIfldbl"
14409         nvgformat="$sPRIgldbl"
14410         nvEUformat="$sPRIEUldbl"
14411         nvFUformat="$sPRIFUldbl"
14412         nvGUformat="$sPRIGUldbl"
14413 else
14414         nveformat='"e"'
14415         nvfformat='"f"'
14416         nvgformat='"g"'
14417         nvEUformat='"E"'
14418         nvFUformat='"F"'
14419         nvGUformat='"G"'
14420 fi
14421
14422 case "$ivdformat" in
14423 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
14424     exit 1
14425     ;;
14426 esac
14427
14428
14429 echo " "
14430 $echo "Checking the format string to be used for gids..." >&4
14431
14432 case "$gidsign" in
14433 -1)     if $test X"$gidsize" = X"$ivsize"; then
14434                 gidformat="$ivdformat"
14435         else
14436                 if $test X"$gidsize" = X"$longsize"; then
14437                         gidformat='"ld"'
14438                 else
14439                         if $test X"$gidsize" = X"$intsize"; then
14440                                 gidformat='"d"'
14441                         else
14442                                 if $test X"$gidsize" = X"$shortsize"; then
14443                                         gidformat='"hd"'
14444                                 fi
14445                         fi
14446                 fi
14447         fi
14448         ;;
14449 *)      if $test X"$gidsize" = X"$uvsize"; then
14450                 gidformat="$uvuformat"
14451         else
14452                 if $test X"$gidsize" = X"$longsize"; then
14453                         gidformat='"lu"'
14454                 else
14455                         if $test X"$gidsize" = X"$intsize"; then
14456                                 gidformat='"u"'
14457                         else
14458                                 if $test X"$gidsize" = X"$shortsize"; then
14459                                         gidformat='"hu"'
14460                                 fi
14461                         fi
14462                 fi
14463         fi
14464         ;;
14465 esac
14466
14467 : see if getgroups exists
14468 set getgroups d_getgrps
14469 eval $inlibc
14470
14471 : see if setgroups exists
14472 set setgroups d_setgrps
14473 eval $inlibc
14474
14475
14476 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
14477 echo " "
14478 case "$d_getgrps$d_setgrps" in
14479 *define*)
14480         case "$groupstype" in
14481         '') dflt="$gidtype" ;;
14482         *)  dflt="$groupstype" ;;
14483         esac
14484         $cat <<EOM
14485 What type of pointer is the second argument to getgroups() and setgroups()?
14486 Usually this is the same as group ids, $gidtype, but not always.
14487
14488 EOM
14489         rp='What type pointer is the second argument to getgroups() and setgroups()?'
14490         . ./myread
14491         groupstype="$ans"
14492         ;;
14493 *)  groupstype="$gidtype";;
14494 esac
14495
14496 echo " "
14497 echo "Checking if your $make program sets \$(MAKE)..." >&4
14498 case "$make_set_make" in
14499 '')
14500         $sed 's/^X //' > testmake.mak << 'EOF'
14501 Xall:
14502 X       @echo 'maketemp="$(MAKE)"'
14503 EOF
14504         case "`$make -f testmake.mak 2>/dev/null`" in
14505         *maketemp=*) make_set_make='#' ;;
14506         *)      make_set_make="MAKE=$make" ;;
14507         esac
14508         $rm -f testmake.mak
14509         ;;
14510 esac
14511 case "$make_set_make" in
14512 '#') echo "Yup, it does.";;
14513 *) echo "Nope, it doesn't.";;
14514 esac
14515
14516 : see what type is used for mode_t
14517 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
14518 set mode_t modetype int stdio.h sys/types.h
14519 eval $typedef_ask
14520
14521 : see if stdarg is available
14522 echo " "
14523 if $test `./findhdr stdarg.h`; then
14524         echo "<stdarg.h> found." >&4
14525         valstd="$define"
14526 else
14527         echo "<stdarg.h> NOT found." >&4
14528         valstd="$undef"
14529 fi
14530
14531 : see if varags is available
14532 echo " "
14533 if $test `./findhdr varargs.h`; then
14534         echo "<varargs.h> found." >&4
14535 else
14536         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14537 fi
14538
14539 : set up the varargs testing programs
14540 $cat > varargs.c <<EOP
14541 #ifdef I_STDARG
14542 #include <stdarg.h>
14543 #endif
14544 #ifdef I_VARARGS
14545 #include <varargs.h>
14546 #endif
14547
14548 #ifdef I_STDARG
14549 int f(char *p, ...)
14550 #else
14551 int f(va_alist)
14552 va_dcl
14553 #endif
14554 {
14555         va_list ap;
14556 #ifndef I_STDARG
14557         char *p;
14558 #endif
14559 #ifdef I_STDARG
14560         va_start(ap,p);
14561 #else
14562         va_start(ap);
14563         p = va_arg(ap, char *);
14564 #endif
14565         va_end(ap);
14566 }
14567 EOP
14568 $cat > varargs <<EOP
14569 $startsh
14570 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14571         echo "true"
14572 else
14573         echo "false"
14574 fi
14575 $rm -f varargs$_o
14576 EOP
14577 chmod +x varargs
14578
14579 : now check which varargs header should be included
14580 echo " "
14581 i_varhdr=''
14582 case "$valstd" in
14583 "$define")
14584         if `./varargs I_STDARG`; then
14585                 val='stdarg.h'
14586         elif `./varargs I_VARARGS`; then
14587                 val='varargs.h'
14588         fi
14589         ;;
14590 *)
14591         if `./varargs I_VARARGS`; then
14592                 val='varargs.h'
14593         fi
14594         ;;
14595 esac
14596 case "$val" in
14597 '')
14598 echo "I could not find the definition for va_dcl... You have problems..." >&4
14599         val="$undef"; set i_stdarg; eval $setvar
14600         val="$undef"; set i_varargs; eval $setvar
14601         ;;
14602 *) 
14603         set i_varhdr
14604         eval $setvar
14605         case "$i_varhdr" in
14606         stdarg.h)
14607                 val="$define"; set i_stdarg; eval $setvar
14608                 val="$undef"; set i_varargs; eval $setvar
14609                 ;;
14610         varargs.h)
14611                 val="$undef"; set i_stdarg; eval $setvar
14612                 val="$define"; set i_varargs; eval $setvar
14613                 ;;
14614         esac
14615         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14616 esac
14617 $rm -f varargs*
14618
14619 : see if we need va_copy
14620 echo " "
14621 case "$i_stdarg" in
14622 "$define")
14623         $cat >try.c <<EOCP
14624 #include <stdarg.h>
14625 #include <stdio.h>
14626 #$i_stdlib I_STDLIB
14627 #ifdef I_STDLIB
14628 #include <stdlib.h>
14629 #endif
14630 #include <signal.h>
14631
14632 int
14633 ivfprintf(FILE *f, const char *fmt, va_list *valp)
14634 {
14635   return vfprintf(f, fmt, *valp);
14636 }
14637  
14638 int    
14639 myvfprintf(FILE *f, const  char *fmt, va_list val)
14640 {
14641   return ivfprintf(f, fmt, &val);
14642 }
14643       
14644 int
14645 myprintf(char *fmt, ...) 
14646 {
14647   va_list val;
14648   va_start(val, fmt);
14649   return myvfprintf(stdout, fmt, val); 
14650 }         
14651
14652 int
14653 main(int ac, char **av)
14654 {
14655   signal(SIGSEGV, exit);
14656
14657   myprintf("%s%cs all right, then\n", "that", '\'');                            
14658   exit(0);      
14659 }
14660 EOCP
14661         set try
14662         if eval $compile && $run ./try 2>&1 >/dev/null; then
14663                 case "`$run ./try`" in
14664                 "that's all right, then")
14665                         okay=yes
14666                         ;;
14667                 esac
14668         fi
14669         case "$okay" in
14670         yes)    echo "It seems that you don't need va_copy()." >&4
14671                 need_va_copy="$undef"
14672                 ;;
14673         *)      echo "It seems that va_copy() or similar will be needed." >&4
14674                 need_va_copy="$define"
14675                 ;;
14676         esac
14677         $rm -f try.* core core.* *.core *.core.*
14678         ;;
14679 *)      echo "You don't have <stdarg.h>, not checking for va_copy()." >&4
14680         ;;
14681 esac
14682
14683 : define a fucntion to check prototypes
14684 $cat > protochk <<EOSH
14685 $startsh
14686 cc="$cc"
14687 optimize="$optimize"
14688 ccflags="$ccflags"
14689 prototype="$prototype"
14690 define="$define"
14691 rm=$rm
14692 EOSH
14693
14694 $cat >> protochk <<'EOSH'
14695
14696 $rm -f try.c
14697 foo="$1"
14698 shift
14699 while test $# -ge 2; do
14700         case "$1" in
14701                 $define) echo "#include <$2>" >> try.c ;;
14702                 literal) echo "$2" >> try.c ;;
14703         esac
14704     shift 2
14705 done
14706 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
14707 cat >> try.c <<'EOCP'
14708 #ifdef CAN_PROTOTYPE
14709 #define _(args) args
14710 #else
14711 #define _(args) ()
14712 #endif
14713 EOCP
14714 echo "$foo" >> try.c
14715 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
14716 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
14717 status=$?
14718 $rm -f try.[co]
14719 exit $status
14720 EOSH
14721 chmod +x protochk
14722 $eunicefix protochk
14723
14724 : see what type is used for size_t
14725 rp="What is the type used for the length parameter for string functions?"
14726 set size_t sizetype 'unsigned int' stdio.h sys/types.h
14727 eval $typedef_ask
14728
14729 : check for type of arguments to gethostbyaddr. 
14730 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
14731         case "$d_gethbyaddr" in
14732         $define)
14733                 $cat <<EOM
14734
14735 Checking to see what type of arguments are accepted by gethostbyaddr().
14736 EOM
14737                 hdrs="$define sys/types.h
14738                         $d_socket sys/socket.h 
14739                         $i_niin netinet/in.h 
14740                         $i_netdb netdb.h
14741                         $i_unistd unistd.h"
14742                 : The first arg can 'char *' or 'void *'
14743                 : The second arg is some of integral type
14744                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
14745                         for yyy in size_t long int; do
14746                                 case "$netdb_host_type" in
14747                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
14748                                         if ./protochk "$try" $hdrs; then
14749                                                 echo "Your system accepts $xxx for the first arg."
14750                                                 echo "...and $yyy for the second arg."
14751                                                 netdb_host_type="$xxx"
14752                                                 netdb_hlen_type="$yyy"
14753                                         fi
14754                                         ;;
14755                                 esac
14756                         done
14757                 done
14758                 : In case none of those worked, prompt the user.
14759                 case "$netdb_host_type" in
14760                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
14761                         dflt='char *'
14762                         . ./myread
14763                         netdb_host_type=$ans
14764                         rp='What is the type for the 2nd argument to gethostbyaddr?'
14765                         dflt="$sizetype"
14766                         . ./myread
14767                         netdb_hlen_type=$ans
14768                         ;;
14769                 esac
14770                 ;;
14771         *)      : no gethostbyaddr, so pick harmless defaults
14772                 netdb_host_type='char *'
14773                 netdb_hlen_type="$sizetype"
14774                 ;;
14775         esac
14776         # Remove the "const" if needed. -- but then we'll have a 
14777         # prototype clash!
14778         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
14779 fi
14780
14781 : check for type of argument to gethostbyname. 
14782 if test "X$netdb_name_type" = X ; then
14783         case "$d_gethbyname" in
14784         $define)
14785                 $cat <<EOM
14786
14787 Checking to see what type of argument is accepted by gethostbyname().
14788 EOM
14789                 hdrs="$define sys/types.h
14790                         $d_socket sys/socket.h 
14791                         $i_niin netinet/in.h 
14792                         $i_netdb netdb.h
14793                         $i_unistd unistd.h"
14794                 for xxx in "const char *" "char *"; do
14795                         case "$netdb_name_type" in
14796                         '')     try="extern struct hostent *gethostbyname($xxx);"
14797                                 if ./protochk "$try" $hdrs; then
14798                                         echo "Your system accepts $xxx."
14799                                         netdb_name_type="$xxx"
14800                                 fi
14801                                 ;;
14802                         esac
14803                 done
14804                 : In case none of those worked, prompt the user.
14805                 case "$netdb_name_type" in
14806                 '')     rp='What is the type for the 1st argument to gethostbyname?'
14807                         dflt='char *'
14808                         . ./myread
14809                         netdb_name_type=$ans
14810                         ;;
14811                 esac
14812                 ;;
14813         *)      : no gethostbyname, so pick harmless default
14814                 netdb_name_type='char *'
14815                 ;;
14816         esac
14817 fi
14818
14819 : check for type of 1st argument to getnetbyaddr. 
14820 if test "X$netdb_net_type" = X ; then
14821         case "$d_getnbyaddr" in
14822         $define)
14823                 $cat <<EOM
14824
14825 Checking to see what type of 1st argument is accepted by getnetbyaddr().
14826 EOM
14827                 hdrs="$define sys/types.h
14828                         $d_socket sys/socket.h 
14829                         $i_niin netinet/in.h 
14830                         $i_netdb netdb.h
14831                         $i_unistd unistd.h"
14832                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
14833                         case "$netdb_net_type" in
14834                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
14835                                 if ./protochk "$try" $hdrs; then
14836                                         echo "Your system accepts $xxx."
14837                                         netdb_net_type="$xxx"
14838                                 fi
14839                                 ;;
14840                         esac
14841                 done
14842                 : In case none of those worked, prompt the user.
14843                 case "$netdb_net_type" in
14844                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
14845                         dflt='long'
14846                         . ./myread
14847                         netdb_net_type=$ans
14848                         ;;
14849                 esac
14850                 ;;
14851         *)      : no getnetbyaddr, so pick harmless default
14852                 netdb_net_type='long'
14853                 ;;
14854         esac
14855 fi
14856 : locate the preferred pager for this system
14857 case "$pager" in
14858 '')
14859         dflt=''
14860         case "$pg" in
14861         /*) dflt=$pg;;
14862         [a-zA-Z]:/*) dflt=$pg;;
14863         esac
14864         case "$more" in
14865         /*) dflt=$more;;
14866         [a-zA-Z]:/*) dflt=$more;;
14867         esac
14868         case "$less" in
14869         /*) dflt=$less;;
14870         [a-zA-Z]:/*) dflt=$less;;
14871         esac
14872         case "$dflt" in
14873         '') dflt=/usr/ucb/more;;
14874         esac
14875         ;;
14876 *) dflt="$pager";;
14877 esac
14878 echo " "
14879 fn=f/
14880 rp='What pager is used on your system?'
14881 . ./getfile
14882 pager="$ans"
14883
14884 : see what type pids are declared as in the kernel
14885 rp="What is the type of process ids on this system?"
14886 set pid_t pidtype int stdio.h sys/types.h
14887 eval $typedef_ask
14888
14889 : Find earliest binary compatible site_perl subdirectory perl can use.
14890 case "$bincompat5005" in
14891 "$define") xs_apiversion='5.005' ;;
14892 *) xs_apiversion=$version ;;   # The current site_perl version.
14893 esac
14894 : Find earliest pure perl site_perl subdirectory perl can use.
14895 : The versioned directories started at 5.005.
14896 pm_apiversion='5.005'
14897
14898 : see if ar generates random libraries by itself
14899 echo " "
14900 echo "Checking how to generate random libraries on your machine..." >&4
14901 echo 'int bar1() { return bar2(); }' > bar1.c
14902 echo 'int bar2() { return 2; }' > bar2.c
14903 $cat > foo.c <<'EOP'
14904 int main() { printf("%d\n", bar1()); exit(0); }
14905 EOP
14906 $cc $ccflags -c bar1.c >/dev/null 2>&1
14907 $cc $ccflags -c bar2.c >/dev/null 2>&1
14908 $cc $ccflags -c foo.c >/dev/null 2>&1
14909 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
14910 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14911         $run ./foobar >/dev/null 2>&1; then
14912         echo "$ar appears to generate random libraries itself."
14913         orderlib=false
14914         ranlib=":"
14915 elif $ar ts bar$_a >/dev/null 2>&1 &&
14916         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
14917         $run ./foobar >/dev/null 2>&1; then
14918                 echo "a table of contents needs to be added with '$ar ts'."
14919                 orderlib=false
14920                 ranlib="$ar ts"
14921 else
14922         case "$ranlib" in
14923         :) ranlib='';;
14924         '')
14925                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
14926                 $test -f $ranlib || ranlib=''
14927                 ;;
14928         esac
14929         if $test -n "$ranlib"; then
14930                 echo "your system has '$ranlib'; we'll use that."
14931                 orderlib=false
14932         else
14933                 echo "your system doesn't seem to support random libraries"
14934                 echo "so we'll use lorder and tsort to order the libraries."
14935                 orderlib=true
14936                 ranlib=":"
14937         fi
14938 fi
14939 $rm -f foo* bar* 
14940
14941 : check for type of arguments to select. 
14942 case "$selecttype" in
14943 '') case "$d_select" in
14944         $define)
14945                 echo " "
14946                 $cat <<EOM
14947 Checking to see what type of arguments are accepted by select().
14948 EOM
14949                 hdrs="$define sys/types.h
14950                         $i_systime sys/time.h 
14951                         $i_sysselct sys/select.h
14952                         $d_socket sys/socket.h"
14953                 : The first arg can be int, unsigned, or size_t
14954                 : The last arg may or may not be 'const'
14955                 val=''
14956                 : void pointer has been seen but using that
14957                 : breaks the selectminbits test
14958                 for xxx in 'fd_set *' 'int *'; do
14959                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
14960                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
14961                                         case "$val" in
14962                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
14963                                                 if ./protochk "$try" $hdrs; then
14964                                                         echo "Your system accepts $xxx."
14965                                                         val="$xxx"
14966                                                 fi
14967                                                 ;;
14968                                         esac
14969                                 done
14970                         done
14971                 done
14972                 case "$val" in
14973                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
14974                         case "$d_fd_set" in
14975                                 $define) dflt="fd_set *" ;;
14976                                 *)              dflt="int *" ;;
14977                         esac
14978                         . ./myread
14979                         val=$ans
14980                         ;;
14981                 esac
14982                 selecttype="$val"
14983                 ;;
14984         *)      : no select, so pick a harmless default
14985                 selecttype='int *'
14986                 ;;
14987         esac
14988         ;;
14989 esac
14990
14991 : check for the select 'width'
14992 case "$selectminbits" in
14993 '') case "$d_select" in
14994         $define)
14995                 $cat <<EOM
14996
14997 Checking to see on how many bits at a time your select() operates...
14998 EOM
14999                 $cat >try.c <<EOCP
15000 #include <sys/types.h>
15001 #$i_time I_TIME
15002 #$i_systime I_SYS_TIME
15003 #$i_systimek I_SYS_TIME_KERNEL
15004 #ifdef I_TIME
15005 #   include <time.h>
15006 #endif
15007 #ifdef I_SYS_TIME
15008 #   ifdef I_SYS_TIME_KERNEL
15009 #       define KERNEL
15010 #   endif
15011 #   include <sys/time.h>
15012 #   ifdef I_SYS_TIME_KERNEL
15013 #       undef KERNEL
15014 #   endif
15015 #endif
15016 #$i_sysselct I_SYS_SELECT
15017 #ifdef I_SYS_SELECT
15018 #include <sys/select.h>
15019 #endif
15020 #$d_socket HAS_SOCKET
15021 #ifdef HAS_SOCKET
15022 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
15023 #endif
15024 #include <stdio.h>
15025 $selecttype b;
15026 #define S sizeof(*(b))
15027 #define MINBITS 64
15028 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
15029 #define NBITS  (NBYTES * 8)
15030 int main() {
15031     char s[NBYTES];
15032     struct timeval t;
15033     int i;
15034     FILE* fp;
15035     int fd;
15036
15037     fclose(stdin);
15038     fp = fopen("try.c", "r");
15039     if (fp == 0)
15040       exit(1);
15041     fd = fileno(fp);
15042     if (fd < 0)
15043       exit(2);
15044     b = ($selecttype)s;
15045     for (i = 0; i < NBITS; i++)
15046         FD_SET(i, b);
15047     t.tv_sec  = 0;
15048     t.tv_usec = 0;
15049     select(fd + 1, b, 0, 0, &t);
15050     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
15051     printf("%d\n", i + 1);
15052     return 0;
15053 }
15054 EOCP
15055                 set try
15056                 if eval $compile_ok; then
15057                         selectminbits=`$run ./try`
15058                         case "$selectminbits" in
15059                         '')     cat >&4 <<EOM
15060 Cannot figure out on how many bits at a time your select() operates.
15061 I'll play safe and guess it is 32 bits.
15062 EOM
15063                                 selectminbits=32
15064                                 bits="32 bits"
15065                                 ;;
15066                         1)      bits="1 bit" ;;
15067                         *)      bits="$selectminbits bits" ;;
15068                         esac
15069                         echo "Your select() operates on $bits at a time." >&4
15070                 else
15071                         rp='What is the minimum number of bits your select() operates on?'
15072                         case "$byteorder" in
15073                         1234|12345678)  dflt=32 ;;
15074                         *)              dflt=1  ;;
15075                         esac
15076                         . ./myread
15077                         val=$ans
15078                         selectminbits="$val"
15079                 fi
15080                 $rm -f try.* try
15081                 ;;
15082         *)      : no select, so pick a harmless default
15083                 selectminbits='32'
15084                 ;;
15085         esac
15086         ;;
15087 esac
15088
15089 : Trace out the files included by signal.h, then look for SIGxxx names.
15090 : Remove SIGARRAYSIZE used by HPUX.
15091 : Remove SIGSTKSIZE used by Linux.
15092 : Remove SIGSTKSZ used by Posix.
15093 : Remove SIGTYP void lines used by OS2.
15094 : Some cpps, like os390, dont give the file name anywhere
15095 if [ "X$fieldn" = X ]; then
15096         : Just make some guesses.  We check them later.
15097         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
15098 else
15099         xxx=`echo '#include <signal.h>' |
15100         $cppstdin $cppminus $cppflags 2>/dev/null |
15101         $grep '^[       ]*#.*include' | 
15102         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sed 's!\\\\\\\\!/!g' | $sort | $uniq`
15103 fi
15104 : Check this list of files to be sure we have parsed the cpp output ok.
15105 : This will also avoid potentially non-existent files, such 
15106 : as ../foo/bar.h
15107 xxxfiles=''
15108 for xx in $xxx /dev/null ; do
15109         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
15110 done
15111 : If we have found no files, at least try signal.h
15112 case "$xxxfiles" in
15113 '')     xxxfiles=`./findhdr signal.h` ;;
15114 esac
15115 xxx=`awk '
15116 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
15117         print substr($2, 4, 20)
15118 }
15119 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
15120         print substr($3, 4, 20)
15121 }' $xxxfiles`
15122 : Append some common names just in case the awk scan failed.
15123 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
15124 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
15125 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
15126 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
15127 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
15128
15129 : generate a few handy files for later
15130 $cat > signal.c <<'EOCP'
15131 #include <sys/types.h>
15132 #include <signal.h>
15133 #include <stdio.h>
15134 int main() {
15135
15136 /* Strange style to avoid deeply-nested #if/#else/#endif */
15137 #ifndef NSIG
15138 #  ifdef _NSIG
15139 #    define NSIG (_NSIG)
15140 #  endif
15141 #endif
15142
15143 #ifndef NSIG
15144 #  ifdef SIGMAX
15145 #    define NSIG (SIGMAX+1)
15146 #  endif
15147 #endif
15148
15149 #ifndef NSIG
15150 #  ifdef SIG_MAX
15151 #    define NSIG (SIG_MAX+1)
15152 #  endif
15153 #endif
15154
15155 #ifndef NSIG
15156 #  ifdef MAXSIG
15157 #    define NSIG (MAXSIG+1)
15158 #  endif
15159 #endif
15160
15161 #ifndef NSIG
15162 #  ifdef MAX_SIG
15163 #    define NSIG (MAX_SIG+1)
15164 #  endif
15165 #endif
15166
15167 #ifndef NSIG
15168 #  ifdef SIGARRAYSIZE
15169 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
15170 #  endif
15171 #endif
15172
15173 #ifndef NSIG
15174 #  ifdef _sys_nsig
15175 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
15176 #  endif
15177 #endif
15178
15179 /* Default to some arbitrary number that's big enough to get most
15180    of the common signals.
15181 */
15182 #ifndef NSIG
15183 #    define NSIG 50
15184 #endif
15185
15186 printf("NSIG %d\n", NSIG);
15187
15188 #ifndef JUST_NSIG
15189
15190 EOCP
15191
15192 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
15193 {
15194         printf "#ifdef SIG"; printf $1; printf "\n"
15195         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
15196         printf $1; printf ");\n"
15197         printf "#endif\n"
15198 }
15199 END {
15200         printf "#endif /* JUST_NSIG */\n";
15201         printf "exit(0);\n}\n";
15202 }
15203 ' >>signal.c
15204 $cat >signal.awk <<'EOP'
15205 BEGIN { ndups = 0 }
15206 $1 ~ /^NSIG$/ { nsig = $2 }
15207 ($1 !~ /^NSIG$/) && (NF == 2) {
15208     if ($2 > maxsig) { maxsig = $2 }
15209     if (sig_name[$2]) {
15210         dup_name[ndups] = $1
15211         dup_num[ndups] = $2
15212         ndups++ 
15213     }
15214     else {
15215         sig_name[$2] = $1
15216         sig_num[$2] = $2
15217     }
15218 }
15219 END { 
15220     if (nsig == 0) {
15221         nsig = maxsig + 1
15222     }
15223     printf("NSIG %d\n", nsig);
15224     for (n = 1; n < nsig; n++) {
15225         if (sig_name[n]) {
15226             printf("%s %d\n", sig_name[n], sig_num[n])
15227         }
15228         else {
15229             printf("NUM%d %d\n", n, n) 
15230         }
15231     }
15232     for (n = 0; n < ndups; n++) {
15233         printf("%s %d\n", dup_name[n], dup_num[n])
15234     }
15235 }
15236 EOP
15237 $cat >signal_cmd <<EOS
15238 $startsh
15239 if $test -s signal.lst; then
15240     echo "Using your existing signal.lst file"
15241         exit 0
15242 fi
15243 xxx="$xxx"
15244 EOS
15245 $cat >>signal_cmd <<'EOS'
15246
15247 set signal
15248 if eval $compile_ok; then
15249         $run ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15250 else
15251         echo "(I can't seem be able to compile the whole test program)" >&4
15252         echo "(I'll try it in little pieces.)" >&4
15253         set signal -DJUST_NSIG
15254         if eval $compile_ok; then
15255                 $run ./signal$_exe > signal.nsg
15256                 $cat signal.nsg
15257         else
15258                 echo "I can't seem to figure out how many signals you have." >&4
15259                 echo "Guessing 50." >&4
15260                 echo 'NSIG 50' > signal.nsg
15261         fi
15262         : Now look at all the signal names, one at a time.
15263         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
15264                 $cat > signal.c <<EOCP
15265 #include <sys/types.h>
15266 #include <signal.h>
15267 #include <stdio.h>
15268 int main() {
15269 printf("$xx %d\n", SIG${xx});
15270 return 0;
15271 }
15272 EOCP
15273                 set signal
15274                 if eval $compile; then
15275                         echo "SIG${xx} found."
15276                         $run ./signal$_exe  >> signal.ls1
15277                 else
15278                         echo "SIG${xx} NOT found."
15279                 fi
15280         done
15281         if $test -s signal.ls1; then
15282                 $cat signal.nsg signal.ls1 |
15283                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
15284         fi
15285
15286 fi
15287 if $test -s signal.lst; then
15288         :
15289 else
15290         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
15291         echo 'kill -l' >signal
15292         set X `csh -f <signal`
15293         $rm -f signal
15294         shift
15295         case $# in
15296         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
15297         esac
15298         echo $@ | $tr ' ' $trnl | \
15299             $awk '{ printf "%s %d\n", $1, ++s; }
15300                   END { printf "NSIG %d\n", ++s }' >signal.lst
15301 fi
15302 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
15303 EOS
15304 chmod a+x signal_cmd
15305 $eunicefix signal_cmd
15306
15307 : generate list of signal names
15308 echo " "
15309 case "$sig_name_init" in
15310 '') doinit=yes ;;
15311 *)  case "$sig_num_init" in
15312     ''|*,*) doinit=yes ;;
15313     esac ;;
15314 esac
15315 case "$doinit" in
15316 yes)
15317         echo "Generating a list of signal names and numbers..." >&4
15318         . ./signal_cmd
15319         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
15320         sig_name=`$awk 'BEGIN { printf "ZERO " }
15321                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
15322         sig_num=`$awk  'BEGIN { printf "0 " }
15323                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
15324         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
15325                              !/^NSIG/   { printf "\"%s\", ", $1 }
15326                              END        { printf "0\n" }' signal.lst`
15327         sig_num_init=`$awk  'BEGIN      { printf "0, " }
15328                              !/^NSIG/   { printf "%d, ", $2}
15329                              END        { printf "0\n"}' signal.lst`
15330         ;;
15331 esac
15332 echo "The following $sig_count signals are available:"
15333 echo " "
15334 echo $sig_name | $awk \
15335 'BEGIN { linelen = 0 }
15336 {
15337         for (i = 1; i <= NF; i++) {
15338                 name = "SIG" $i " "
15339                 linelen = linelen + length(name)
15340                 if (linelen > 70) {
15341                         printf "\n"
15342                         linelen = length(name)
15343                 }
15344                 printf "%s", name
15345         }
15346         printf "\n"
15347 }'
15348 sig_size=`echo $sig_name | awk '{print NF}'`
15349 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
15350
15351 echo " "
15352 case "$sizetype" in
15353 *_t) zzz="$sizetype"    ;;
15354 *)   zzz="filesize"     ;;
15355 esac
15356 echo "Checking the size of $zzz..." >&4 
15357 cat > try.c <<EOCP
15358 #include <sys/types.h>
15359 #include <stdio.h>
15360 int main() {
15361     printf("%d\n", (int)sizeof($sizetype));
15362     exit(0);
15363 }
15364 EOCP
15365 set try
15366 if eval $compile_ok; then
15367         yyy=`$run ./try`
15368         case "$yyy" in
15369         '')     sizesize=4
15370                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
15371                 ;;
15372         *)      sizesize=$yyy
15373                 echo "Your $zzz size is $sizesize bytes."
15374                 ;;
15375         esac
15376 else
15377         sizesize=4
15378         echo "(I can't compile the test program--guessing $sizesize.)" >&4
15379 fi
15380
15381
15382 : check for socklen_t
15383 echo " "
15384 echo "Checking to see if you have socklen_t..." >&4
15385 $cat >try.c <<EOCP
15386 #include <sys/types.h>
15387 #$d_socket HAS_SOCKET
15388 #ifdef HAS_SOCKET
15389 #include <sys/socket.h>
15390 #endif
15391 int main() { socklen_t x = 16; }
15392 EOCP
15393 set try
15394 if eval $compile; then
15395         val="$define"
15396         echo "You have socklen_t."
15397 else
15398         val="$undef"
15399         echo "You do not have socklen_t."
15400         case "$sizetype" in
15401         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
15402         esac
15403 fi
15404 $rm -f try try.*
15405 set d_socklen_t
15406 eval $setvar
15407
15408 : see if this is a socks.h system
15409 set socks.h i_socks
15410 eval $inhdr
15411
15412 : check for type of the size argument to socket calls
15413 case "$d_socket" in
15414 "$define")
15415         $cat <<EOM
15416
15417 Checking to see what type is the last argument of accept().
15418 EOM
15419         yyy=''
15420         case "$d_socklen_t" in
15421         "$define") yyy="$yyy socklen_t"
15422         esac
15423         yyy="$yyy $sizetype int long unsigned"
15424         for xxx in $yyy; do
15425                 case "$socksizetype" in
15426                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
15427                         case "$usesocks" in
15428                         "$define")
15429                                 if ./protochk "$try" $i_systypes sys/types.h $d_socket sys/socket.h literal '#define INCLUDE_PROTOTYPES' $i_socks socks.h.; then
15430                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15431                                         socksizetype="$xxx"
15432                                 fi
15433                                 ;;
15434                         *)      if ./protochk "$try"  $i_systypes sys/types.h $d_socket sys/socket.h; then
15435                                         echo "Your system accepts '$xxx *' for the last argument of accept()."
15436                                         socksizetype="$xxx"
15437                                 fi
15438                                 ;;
15439                         esac
15440                         ;;
15441                 esac
15442         done
15443 : In case none of those worked, prompt the user.
15444         case "$socksizetype" in
15445         '')     rp='What is the type for socket address structure sizes?'
15446                 dflt='int'
15447                 . ./myread
15448                 socksizetype=$ans
15449                 ;;
15450         esac
15451         ;;
15452 *)      : no sockets, so pick relatively harmless default
15453         socksizetype='int'
15454         ;;
15455 esac
15456
15457 : see what type is used for signed size_t
15458 set ssize_t ssizetype int stdio.h sys/types.h
15459 eval $typedef
15460 dflt="$ssizetype"
15461 $cat > try.c <<EOM
15462 #include <stdio.h>
15463 #include <sys/types.h>
15464 #define Size_t $sizetype
15465 #define SSize_t $dflt
15466 int main()
15467 {
15468         if (sizeof(Size_t) == sizeof(SSize_t))
15469                 printf("$dflt\n");
15470         else if (sizeof(Size_t) == sizeof(int))
15471                 printf("int\n");
15472         else 
15473                 printf("long\n");
15474         exit(0);
15475 }
15476 EOM
15477 echo " "
15478 set try
15479 if eval $compile_ok && $run ./try > /dev/null; then
15480         ssizetype=`$run ./try`
15481         echo "I'll be using $ssizetype for functions returning a byte count." >&4
15482 else
15483         $cat >&4 <<EOM
15484 Help! I can't compile and run the ssize_t test program: please enlighten me!
15485 (This is probably a misconfiguration in your system or libraries, and
15486 you really ought to fix it.  Still, I'll try anyway.)
15487
15488 I need a type that is the same size as $sizetype, but is guaranteed to
15489 be signed.  Common values are ssize_t, int and long.
15490
15491 EOM
15492         rp="What signed type is the same size as $sizetype?"
15493         . ./myread
15494         ssizetype="$ans"
15495 fi
15496 $rm -f try try.*
15497
15498 : see what type of char stdio uses.
15499 echo " "
15500 echo '#include <stdio.h>' | $cppstdin $cppminus > stdioh
15501 if $contains 'unsigned.*char.*_ptr;' stdioh >/dev/null 2>&1 ; then
15502         echo "Your stdio uses unsigned chars." >&4
15503         stdchar="unsigned char"
15504 else
15505         echo "Your stdio uses signed chars." >&4
15506         stdchar="char"
15507 fi
15508 $rm -f stdioh
15509
15510
15511
15512 : see if time exists
15513 echo " "
15514 if test "X$d_time" = X -o X"$timetype" = X; then
15515     if set time val -f d_time; eval $csym; $val; then
15516                 echo 'time() found.' >&4
15517                 val="$define"
15518                 rp="What is the type returned by time() on this system?"
15519                 set time_t timetype long stdio.h sys/types.h
15520                 eval $typedef_ask
15521     else
15522                 echo 'time() not found, hope that will do.' >&4
15523                 val="$undef"
15524                 timetype='int';
15525     fi
15526     set d_time
15527     eval $setvar
15528 fi
15529
15530 : see what type uids are declared as in the kernel
15531 echo " "
15532 echo "Looking for the type for user ids returned by getuid()."
15533 set uid_t uidtype xxx stdio.h sys/types.h
15534 eval $typedef
15535 case "$uidtype" in
15536 xxx)
15537         xxx=`./findhdr sys/user.h`
15538         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
15539         case $1 in
15540         unsigned) dflt="$1 $2" ;;
15541         *) dflt="$1" ;;
15542         esac
15543         ;;
15544 *) dflt="$uidtype";;
15545 esac
15546 case "$uidtype" in
15547 uid_t)  echo "uid_t found." ;;
15548 *)      rp="What is the type for user ids returned by getuid()?"
15549         . ./myread
15550         uidtype="$ans"
15551         ;;
15552 esac
15553
15554 echo " "
15555 case "$uidtype" in
15556 *_t) zzz="$uidtype"     ;;
15557 *)   zzz="uid"          ;;
15558 esac
15559 echo "Checking the size of $zzz..." >&4 
15560 cat > try.c <<EOCP
15561 #include <sys/types.h>
15562 #include <stdio.h>
15563 int main() {
15564     printf("%d\n", (int)sizeof($uidtype));
15565     exit(0);
15566 }
15567 EOCP
15568 set try
15569 if eval $compile_ok; then
15570         yyy=`$run ./try`
15571         case "$yyy" in
15572         '')     uidsize=4
15573                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
15574                 ;;
15575         *)      uidsize=$yyy
15576                 echo "Your $zzz is $uidsize bytes long."
15577                 ;;
15578         esac
15579 else
15580         uidsize=4
15581         echo "(I can't compile the test program--guessing $uidsize.)" >&4
15582 fi
15583
15584 echo " "
15585 case "$uidtype" in
15586 *_t) zzz="$uidtype"     ;;
15587 *)   zzz="uid"          ;;
15588 esac
15589 echo "Checking the sign of $zzz..." >&4
15590 cat > try.c <<EOCP
15591 #include <sys/types.h>
15592 #include <stdio.h>
15593 int main() {
15594         $uidtype foo = -1;
15595         if (foo < 0)
15596                 printf("-1\n");
15597         else
15598                 printf("1\n");
15599 }
15600 EOCP
15601 set try
15602 if eval $compile; then
15603         yyy=`$run ./try`
15604         case "$yyy" in
15605         '')     uidsign=1
15606                 echo "(I can't execute the test program--guessing unsigned.)" >&4
15607                 ;;
15608         *)      uidsign=$yyy
15609                 case "$uidsign" in
15610                  1) echo "Your $zzz is unsigned." ;;
15611                 -1) echo "Your $zzz is signed."   ;;
15612                 esac
15613                 ;;
15614         esac
15615 else
15616         uidsign=1
15617         echo "(I can't compile the test program--guessing unsigned.)" >&4
15618 fi
15619
15620
15621
15622 echo " "
15623 $echo "Checking the format string to be used for uids..." >&4
15624
15625 case "$uidsign" in
15626 -1)     if $test X"$uidsize" = X"$ivsize"; then
15627                 uidformat="$ivdformat"
15628         else
15629                 if $test X"$uidsize" = X"$longsize"; then
15630                         uidformat='"ld"'
15631                 else
15632                         if $test X"$uidsize" = X"$intsize"; then
15633                                 uidformat='"d"'
15634                         else
15635                                 if $test X"$uidsize" = X"$shortsize"; then
15636                                         uidformat='"hd"'
15637                                 fi
15638                         fi
15639                 fi
15640         fi
15641         ;;
15642 *)      if $test X"$uidsize" = X"$uvsize"; then
15643                 uidformat="$uvuformat"
15644         else
15645                 if $test X"$uidsize" = X"$longsize"; then
15646                         uidformat='"lu"'
15647                 else
15648                         if $test X"$uidsize" = X"$intsize"; then
15649                                 uidformat='"u"'
15650                         else
15651                                 if $test X"$uidsize" = X"$shortsize"; then
15652                                         uidformat='"hu"'
15653                                 fi
15654                         fi
15655                 fi
15656         fi
15657         ;;
15658 esac
15659
15660 : determine compiler compiler
15661 case "$yacc" in
15662 '')
15663         dflt=yacc;;
15664 *)
15665         dflt="$yacc";;
15666 esac
15667 echo " "
15668 comp='yacc'
15669 if $test -f "$byacc"; then
15670         dflt="$byacc"
15671         comp="byacc or $comp"
15672 fi
15673 if $test -f "$bison"; then
15674         comp="$comp or bison -y"
15675 fi
15676 rp="Which compiler compiler ($comp) shall I use?"
15677 . ./myread
15678 yacc="$ans"
15679 case "$yacc" in
15680 *bis*)
15681         case "$yacc" in
15682         *-y*) ;;
15683         *)
15684                 yacc="$yacc -y"
15685                 echo "(Adding -y option to bison to get yacc-compatible behaviour.)"
15686                 ;;
15687         esac
15688         ;;
15689 esac
15690
15691 : see if fcntl.h is there
15692 val=''
15693 set fcntl.h val
15694 eval $inhdr
15695
15696 : see if we can include fcntl.h
15697 case "$val" in
15698 "$define")
15699         echo " "
15700         if $h_fcntl; then
15701                 val="$define"
15702                 echo "We'll be including <fcntl.h>." >&4
15703         else
15704                 val="$undef"
15705                 if $h_sysfile; then
15706         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
15707                 else
15708                         echo "We won't be including <fcntl.h>." >&4
15709                 fi
15710         fi
15711         ;;
15712 *)
15713         h_fcntl=false
15714         val="$undef"
15715         ;;
15716 esac
15717 set i_fcntl
15718 eval $setvar
15719
15720 : see if this is a iconv.h system
15721 set iconv.h i_iconv
15722 eval $inhdr
15723
15724 : see if this is a ieeefp.h system
15725 set ieeefp.h i_ieeefp
15726 eval $inhdr
15727
15728 : see if this is a libutil.h system
15729 set libutil.h i_libutil
15730 eval $inhdr
15731
15732 : see if locale.h is available
15733 set locale.h i_locale
15734 eval $inhdr
15735
15736 : see if mach cthreads are available
15737 if test "X$usethreads" = "X$define"; then
15738         set mach/cthreads.h i_machcthr
15739         eval $inhdr
15740 else
15741         i_machcthr="$undef"
15742 fi
15743
15744
15745
15746 : see if this is a math.h system
15747 set math.h i_math
15748 eval $inhdr
15749
15750 : see if this is a mntent.h system
15751 set mntent.h i_mntent
15752 eval $inhdr
15753
15754 : see if ndbm.h is available
15755 set ndbm.h t_ndbm
15756 eval $inhdr
15757 case "$t_ndbm" in
15758 $define)
15759         : see if dbm_open exists
15760         set dbm_open d_dbm_open
15761         eval $inlibc
15762         case "$d_dbm_open" in
15763         $undef)
15764                 t_ndbm="$undef"
15765                 echo "We won't be including <ndbm.h>"
15766                 ;;
15767         esac
15768         ;;
15769 esac
15770 val="$t_ndbm"
15771 set i_ndbm
15772 eval $setvar
15773
15774 : see if net/errno.h is available
15775 val=''
15776 set net/errno.h val
15777 eval $inhdr
15778
15779 : Unfortunately, it causes problems on some systems.  Arrgh.
15780 case "$val" in
15781 $define)
15782         cat > try.c <<'EOM'
15783 #include <stdio.h>
15784 #include <errno.h>
15785 #include <net/errno.h>
15786 int func()
15787 {
15788         return ENOTSOCK;
15789 }
15790 EOM
15791         if $cc $ccflags -c try.c >/dev/null 2>&1; then
15792                 echo "We'll be including <net/errno.h>." >&4
15793         else
15794                 echo "We won't be including <net/errno.h>." >&4
15795                 val="$undef"
15796         fi
15797         $rm -f try.* try
15798         ;;
15799 esac
15800 set i_neterrno
15801 eval $setvar
15802
15803 : see if netinet/tcp.h is available
15804 set netinet/tcp.h i_netinettcp
15805 eval $inhdr
15806
15807 : see if this is a poll.h system
15808 set poll.h i_poll
15809 eval $inhdr
15810
15811 : see if this is a prot.h system
15812 set prot.h i_prot
15813 eval $inhdr
15814
15815 echo " "
15816 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
15817 $cat <<'EOSH' > Cppsym.know
15818 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
15819 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
15820 alliant alpha am29000 AM29000 AMD64 amiga AMIGAOS AMIX
15821 ansi ANSI_C_SOURCE apollo ardent ARM32 atarist att386 att3b
15822 BeOS BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
15823 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
15824 bull c cadmus clipper CMU COFF COMPILER_VERSION
15825 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
15826 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
15827 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
15828 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
15829 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
15830 H3050R H3050RX hbullx20 hcx host_mips
15831 hp200 hp300 hp700 HP700 hp800 hp9000
15832 hp9000s200 hp9000s300 hp9000s400 hp9000s500
15833 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
15834 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
15835 IA64 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
15836 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
15837 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
15838 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
15839 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
15840 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
15841 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
15842 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
15843 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
15844 MATH_HAS_NO_SIDE_EFFECTS
15845 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
15846 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
15847 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
15848 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
15849 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
15850 NetBSD news1500 news1700 news1800 news1900 news3700
15851 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
15852 ns32016 ns32332 ns32k nsc32000
15853 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
15854 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
15855 pc532 pdp11 PGC PIC plexus PORTAR posix
15856 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
15857 POSIX_C_SOURCE POSIX_SOURCE POWER
15858 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
15859 riscix riscos RT S390 SA110 scs SCO sequent sgi SGI_SOURCE SH3 sinix
15860 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
15861 sony sony_news sonyrisc sparc sparclite spectrum
15862 stardent stdc STDC_EXT stratos sun sun3 sun386
15863 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
15864 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
15865 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
15866 sysV68 sysV88 Tek4132 Tek4300 titan
15867 TM3200 TM5400 TM5600
15868 tower tower32 tower32_200 tower32_600 tower32_700
15869 tower32_800 tower32_850 tss
15870 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
15871 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
15872 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
15873 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
15874 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
15875 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
15876 z8000
15877 EOSH
15878 # Maybe put other stuff here too.
15879 cat <<EOSH >>Cppsym.know
15880 $osname
15881 EOSH
15882 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
15883 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
15884 $cat Cppsym.know > Cppsym.c
15885 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
15886 $rm -f Cppsym.a Cppsym.b Cppsym.c
15887 cat <<EOSH > Cppsym
15888 $startsh
15889 if $test \$# -gt 0; then
15890     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
15891     if $test -s Cppsym.got; then
15892         $rm -f Cppsym.got
15893         exit 0
15894     fi
15895     $rm -f Cppsym.got
15896     exit 1
15897 else
15898     $tr " " "$trnl" | ./Cppsym.try
15899     exit 0
15900 fi
15901 EOSH
15902 chmod +x Cppsym
15903 $eunicefix Cppsym
15904 cat <<EOSH > Cppsym.try
15905 $startsh
15906 cat <<'EOCP' > try.c
15907 #include <stdio.h>
15908 int main() {
15909 EOCP
15910 $awk \\
15911 EOSH
15912 cat <<'EOSH' >> Cppsym.try
15913 'length($1) > 0 {
15914     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
15915     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
15916     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
15917     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
15918 }'       >> try.c
15919 echo 'return 0;}' >> try.c
15920 EOSH
15921 cat <<EOSH >> Cppsym.try
15922 ccflags="$ccflags"
15923 case "$osname-$gccversion" in
15924 irix-) ccflags="\$ccflags -woff 1178" ;;
15925 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
15926 esac
15927 $cc -o try $optimize \$ccflags $ldflags try.c $libs && $run ./try
15928 EOSH
15929 chmod +x Cppsym.try
15930 $eunicefix Cppsym.try
15931 ./Cppsym < Cppsym.know > Cppsym.true
15932 : now check the C compiler for additional symbols
15933 postprocess_cc_v=''
15934 case "$osname" in
15935 aix) postprocess_cc_v="|$tr , ' '" ;;
15936 esac
15937 $cat >ccsym <<EOS
15938 $startsh
15939 $cat >tmp.c <<EOF
15940 extern int foo;
15941 EOF
15942 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
15943 do
15944         case "\$i" in
15945         -D*) echo "\$i" | $sed 's/^-D//';;
15946         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
15947         esac
15948 done
15949 $rm -f try.c
15950 EOS
15951 postprocess_cc_v=''
15952 chmod +x ccsym
15953 $eunicefix ccsym
15954 ./ccsym > ccsym1.raw
15955 if $test -s ccsym1.raw; then
15956        $sort ccsym1.raw | $uniq >ccsym.raw
15957 else
15958        mv ccsym1.raw ccsym.raw
15959 fi
15960
15961 $awk '/\=/ { print $0; next }
15962         { print $0"=1" }' ccsym.raw >ccsym.list
15963 $awk '/\=/ { print $0; next }
15964         { print $0"=1" }' Cppsym.true >ccsym.true
15965 $comm -13 ccsym.true ccsym.list >ccsym.own
15966 $comm -12 ccsym.true ccsym.list >ccsym.com
15967 $comm -23 ccsym.true ccsym.list >ccsym.cpp
15968 also=''
15969 if $test -z ccsym.raw; then
15970         echo "Your C compiler doesn't seem to define any symbols!" >&4
15971         echo " "
15972         echo "However, your C preprocessor defines the following symbols:"
15973         $cat Cppsym.true
15974         ccsymbols=''
15975         cppsymbols=`$cat Cppsym.true`
15976         cppsymbols=`echo $cppsymbols`
15977         cppccsymbols="$cppsymbols"
15978 else
15979         if $test -s ccsym.com; then
15980                 echo "Your C compiler and pre-processor define these symbols:"
15981                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
15982                 also='also '
15983                 symbols='ones'
15984                 cppccsymbols=`$cat ccsym.com`
15985                 cppccsymbols=`echo $cppccsymbols`
15986                 $test "$silent" || sleep 1
15987         fi
15988         if $test -s ccsym.cpp; then
15989                 $test "$also" && echo " "
15990                 echo "Your C pre-processor ${also}defines the following symbols:"
15991                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
15992                 also='further '
15993                 cppsymbols=`$cat ccsym.cpp`
15994                 cppsymbols=`echo $cppsymbols`
15995                 $test "$silent" || sleep 1
15996         fi
15997         if $test -s ccsym.own; then
15998                 $test "$also" && echo " "
15999                 echo "Your C compiler ${also}defines the following cpp symbols:"
16000                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
16001                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
16002                 ccsymbols=`$cat ccsym.own`
16003                 ccsymbols=`echo $ccsymbols`
16004                 $test "$silent" || sleep 1
16005         fi
16006 fi
16007
16008 : see if this is a termio system
16009 val="$undef"
16010 val2="$undef"
16011 val3="$undef"
16012 if $test `./findhdr termios.h`; then
16013         set tcsetattr i_termios
16014         eval $inlibc
16015         val3="$i_termios"
16016 fi
16017 echo " "
16018 case "$val3" in
16019 "$define") echo "You have POSIX termios.h... good!" >&4;;
16020 *) if ./Cppsym pyr; then
16021                 case "`/bin/universe`" in
16022                 ucb) if $test `./findhdr sgtty.h`; then
16023                                 val2="$define"
16024                                 echo "<sgtty.h> found." >&4
16025                         else
16026                                 echo "System is pyramid with BSD universe."
16027                                 echo "<sgtty.h> not found--you could have problems." >&4
16028                         fi;;
16029                 *) if $test `./findhdr termio.h`; then
16030                                 val="$define"
16031                                 echo "<termio.h> found." >&4
16032                         else
16033                                 echo "System is pyramid with USG universe."
16034                                 echo "<termio.h> not found--you could have problems." >&4
16035                         fi;;
16036                 esac
16037         elif ./usg; then
16038                 if $test `./findhdr termio.h`; then
16039                         echo "<termio.h> found." >&4
16040                         val="$define"
16041                 elif $test `./findhdr sgtty.h`; then
16042                         echo "<sgtty.h> found." >&4
16043                         val2="$define"
16044                 else
16045 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
16046                 fi
16047         else
16048                 if $test `./findhdr sgtty.h`; then
16049                         echo "<sgtty.h> found." >&4
16050                         val2="$define"
16051                 elif $test `./findhdr termio.h`; then
16052                         echo "<termio.h> found." >&4
16053                         val="$define"
16054                 else
16055 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
16056                 fi
16057         fi;;
16058 esac
16059 set i_termio; eval $setvar
16060 val=$val2; set i_sgtty; eval $setvar
16061 val=$val3; set i_termios; eval $setvar
16062
16063 : see if this is a shadow.h system
16064 set shadow.h i_shadow
16065 eval $inhdr
16066
16067 : see if stddef is available
16068 set stddef.h i_stddef
16069 eval $inhdr
16070
16071 : see if this is a sunmath.h system
16072 set sunmath.h i_sunmath
16073 eval $inhdr
16074
16075 : see if sys/access.h is available
16076 set sys/access.h i_sysaccess
16077 eval $inhdr
16078
16079 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
16080 set sys/filio.h i_sysfilio
16081 eval $inhdr
16082 echo " "
16083 if $test `./findhdr sys/ioctl.h`; then
16084         val="$define"
16085         echo '<sys/ioctl.h> found.' >&4
16086 else
16087         val="$undef"
16088         if $test $i_sysfilio = "$define"; then
16089             echo '<sys/ioctl.h> NOT found.' >&4
16090         else
16091                 $test $i_sgtty = "$define" && xxx="sgtty.h"
16092                 $test $i_termio = "$define" && xxx="termio.h"
16093                 $test $i_termios = "$define" && xxx="termios.h"
16094 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
16095         fi
16096 fi
16097 set i_sysioctl
16098 eval $setvar
16099
16100 : see if socket ioctl defs are in sys/sockio.h
16101 echo " "
16102 xxx=`./findhdr sys/sockio.h`
16103 if $test "$xxx"; then
16104         if $contains SIOCATMARK $xxx >/dev/null 2>&1; then
16105                 val="$define"
16106                 echo "You have socket ioctls defined in <sys/sockio.h>." >&4
16107         else
16108                 val="$undef"
16109                 echo "No socket ioctls found in <sys/sockio.h>." >&4
16110         fi
16111 else
16112         val="$undef"
16113         $cat <<EOM
16114 <sys/sockio.h> not found, assuming socket ioctls are in <sys/ioctl.h>.
16115 EOM
16116 fi
16117 set i_syssockio
16118 eval $setvar
16119
16120
16121 : see if this is a syslog.h system
16122 set syslog.h i_syslog
16123 eval $inhdr
16124
16125
16126 : see if this is a sys/mode.h system
16127 set sys/mode.h i_sysmode
16128 eval $inhdr
16129
16130 : see if sys/resource.h has to be included
16131 set sys/resource.h i_sysresrc
16132 eval $inhdr
16133
16134 : see if sys/security.h is available
16135 set sys/security.h i_syssecrt
16136 eval $inhdr
16137
16138 : see if this is a sys/statvfs.h system
16139 set sys/statvfs.h i_sysstatvfs
16140 eval $inhdr
16141
16142 : see if this is a sys/un.h system
16143 set sys/un.h i_sysun
16144 eval $inhdr
16145
16146
16147 : see if this is a sys/utsname.h system
16148 set sys/utsname.h i_sysutsname
16149 eval $inhdr
16150
16151 : see if this is a syswait system
16152 set sys/wait.h i_syswait
16153 eval $inhdr
16154
16155 : see if this is a ustat.h system
16156 set ustat.h i_ustat
16157 eval $inhdr
16158
16159 : see if this is an utime system
16160 set utime.h i_utime
16161 eval $inhdr
16162
16163 : see if this is a values.h system
16164 set values.h i_values
16165 eval $inhdr
16166
16167 : see if this is a vfork system
16168 case "$d_vfork" in
16169 "$define")
16170         set vfork.h i_vfork
16171         eval $inhdr
16172         ;;
16173 *)
16174         i_vfork="$undef"
16175         ;;
16176 esac
16177
16178 : see if gdbm.h is available
16179 set gdbm.h t_gdbm
16180 eval $inhdr
16181 case "$t_gdbm" in
16182 $define)
16183         : see if gdbm_open exists
16184         set gdbm_open d_gdbm_open
16185         eval $inlibc
16186         case "$d_gdbm_open" in
16187         $undef)
16188                 t_gdbm="$undef"
16189                 echo "We won't be including <gdbm.h>"
16190                 ;;
16191         esac
16192         ;;
16193 esac
16194 val="$t_gdbm"
16195 set i_gdbm
16196 eval $setvar
16197
16198 echo " "
16199 echo "Looking for extensions..." >&4
16200 : If we are using the old config.sh, known_extensions may contain
16201 : old or inaccurate or duplicate values.
16202 known_extensions=''
16203 nonxs_extensions=''
16204 : We do not use find because it might not be available.
16205 : We do not just use MANIFEST because the user may have dropped
16206 : some additional extensions into the source tree and expect them
16207 : to be built.
16208
16209 : Function to recursively find available extensions, ignoring DynaLoader
16210 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
16211 find_extensions='
16212     for xxx in *; do
16213        case "$xxx" in
16214            DynaLoader|dynaload) ;;
16215            *)
16216            if $test -f $xxx/$xxx.xs; then
16217                known_extensions="$known_extensions $1$xxx";
16218            elif $test -f $xxx/Makefile.PL; then
16219                nonxs_extensions="$nonxs_extensions $1$xxx";
16220            else
16221                if $test -d $xxx -a $# -lt 10; then
16222                    set $1$xxx/ $*;
16223                    cd $xxx;
16224                    eval $find_extensions;
16225                    cd ..;
16226                    shift;
16227                fi;
16228            fi
16229            ;;
16230        esac;
16231     done'
16232 tdir=`pwd`
16233 cd $rsrc/ext
16234 set X
16235 shift
16236 eval $find_extensions
16237 set X $nonxs_extensions
16238 shift
16239 nonxs_extensions="$*"
16240 set X $known_extensions
16241 shift
16242 known_extensions="$*"
16243 cd $tdir
16244
16245 : Now see which are supported on this system.
16246 avail_ext=''
16247 for xxx in $known_extensions ; do
16248         case "$xxx" in
16249         DB_File|db_file)
16250                 case "$i_db" in
16251                 $define) avail_ext="$avail_ext $xxx" ;;
16252                 esac
16253                 ;;
16254         GDBM_File|gdbm_fil)
16255                 case "$i_gdbm" in 
16256                 $define) avail_ext="$avail_ext $xxx" ;;
16257                 esac
16258                 ;;
16259         I18N/Langinfo|i18n_lan)
16260                 case "$i_langinfo$d_nl_langinfo" in 
16261                 $define$define) avail_ext="$avail_ext $xxx" ;;
16262                 esac
16263                 ;;
16264         NDBM_File|ndbm_fil)
16265                 case "$i_ndbm" in
16266                 $define)
16267                     case "$osname-$use64bitint" in
16268                     cygwin-*|hpux-define)
16269                         case "$libs" in
16270                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
16271                         esac
16272                         ;;
16273                     *) avail_ext="$avail_ext $xxx" ;;
16274                     esac
16275                     ;;
16276                 esac
16277                 ;;
16278         ODBM_File|odbm_fil) 
16279                 case "${i_dbm}${i_rpcsvcdbm}" in
16280                 *"${define}"*)
16281                     case "$osname-$use64bitint" in
16282                     cygwin-*|hpux-define)
16283                         case "$libs" in
16284                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
16285                         esac
16286                         ;;
16287                     *) avail_ext="$avail_ext $xxx" ;;
16288                     esac
16289                     ;;
16290                 esac
16291                 ;;
16292         POSIX|posix)
16293                 case "$useposix" in
16294                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16295                 esac
16296                 ;;
16297         Opcode|opcode)
16298                 case "$useopcode" in
16299                 true|define|y) avail_ext="$avail_ext $xxx" ;;
16300                 esac
16301                 ;;
16302         Socket|socket)
16303                 case "$d_socket" in 
16304                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16305                 esac
16306                 ;;
16307         Sys/Syslog|sys/syslog)
16308                 : XXX syslog requires socket
16309                 case "$d_socket" in 
16310                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
16311                 esac
16312                 ;;
16313         Thread|thread)
16314                 case "$usethreads" in
16315                 true|$define|y)
16316                         case "$useithreads" in
16317                         $undef|false|[nN]*) avail_ext="$avail_ext $xxx" ;;
16318                         esac
16319                 esac
16320                 ;;
16321         IPC/SysV|ipc/sysv)
16322                 : XXX Do we need a useipcsysv variable here
16323                 case "${d_msg}${d_sem}${d_shm}" in 
16324                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
16325                 esac
16326                 ;;
16327         *)      avail_ext="$avail_ext $xxx"
16328                 ;;
16329         esac
16330 done
16331
16332 set X $avail_ext
16333 shift
16334 avail_ext="$*"
16335
16336 : Now see which nonxs extensions are supported on this system.
16337 : For now assume all are.
16338 nonxs_ext=''
16339 for xxx in $nonxs_extensions ; do
16340         case "$xxx" in
16341         *)      nonxs_ext="$nonxs_ext $xxx"
16342                 ;;
16343         esac
16344 done
16345
16346 set X $nonxs_ext
16347 shift
16348 nonxs_ext="$*"
16349
16350 case $usedl in
16351 $define)
16352         $cat <<EOM
16353 A number of extensions are supplied with $package.  You may choose to
16354 compile these extensions for dynamic loading (the default), compile
16355 them into the $package executable (static loading), or not include
16356 them at all.  Answer "none" to include no extensions.
16357 Note that DynaLoader is always built and need not be mentioned here.
16358
16359 EOM
16360         case "$dynamic_ext" in
16361         '') dflt="$avail_ext" ;;
16362         *)      dflt="$dynamic_ext"
16363                 # Perhaps we are reusing an old out-of-date config.sh.
16364                 case "$hint" in
16365                 previous)
16366                         if test X"$dynamic_ext" != X"$avail_ext"; then
16367                                 $cat <<EOM
16368 NOTICE:  Your previous config.sh list may be incorrect. 
16369 The extensions now available to you are 
16370         ${avail_ext}
16371 but the default list from your previous config.sh is
16372         ${dynamic_ext} 
16373
16374 EOM
16375                         fi
16376                         ;;
16377                 esac
16378                 ;;
16379         esac
16380         case "$dflt" in
16381         '')     dflt=none;;
16382         esac
16383         rp="What extensions do you wish to load dynamically?"
16384         . ./myread
16385         case "$ans" in
16386         none) dynamic_ext=' ' ;;
16387         *) dynamic_ext="$ans" ;;
16388         esac
16389
16390         case "$static_ext" in
16391         '')
16392                 : Exclude those already listed in dynamic linking
16393                 dflt=''
16394                 for xxx in $avail_ext; do
16395                         case " $dynamic_ext " in
16396                         *" $xxx "*) ;;
16397                         *) dflt="$dflt $xxx" ;;
16398                         esac
16399                 done
16400                 set X $dflt
16401                 shift
16402                 dflt="$*"
16403                 ;;
16404         *)  dflt="$static_ext" 
16405                 ;;
16406         esac
16407
16408         case "$dflt" in
16409         '')     dflt=none;;
16410         esac
16411         rp="What extensions do you wish to load statically?"
16412         . ./myread
16413         case "$ans" in
16414         none) static_ext=' ' ;;
16415         *) static_ext="$ans" ;;
16416         esac
16417         ;;
16418 *)
16419         $cat <<EOM
16420 A number of extensions are supplied with $package.  Answer "none" 
16421 to include no extensions. 
16422 Note that DynaLoader is always built and need not be mentioned here.
16423
16424 EOM
16425         case "$static_ext" in
16426         '') dflt="$avail_ext" ;;
16427         *)      dflt="$static_ext"
16428                 # Perhaps we are reusing an old out-of-date config.sh.
16429                 case "$hint" in
16430                 previous)
16431                         if test X"$static_ext" != X"$avail_ext"; then
16432                                 $cat <<EOM
16433 NOTICE:  Your previous config.sh list may be incorrect. 
16434 The extensions now available to you are 
16435         ${avail_ext}
16436 but the default list from your previous config.sh is
16437         ${static_ext} 
16438
16439 EOM
16440                         fi
16441                         ;;
16442                 esac
16443                 ;;
16444         esac
16445         : Exclude those that are not xs extensions
16446         case "$dflt" in
16447         '')     dflt=none;;
16448         esac
16449         rp="What extensions do you wish to include?"
16450         . ./myread
16451         case "$ans" in
16452         none) static_ext=' ' ;;
16453         *) static_ext="$ans" ;;
16454         esac
16455         ;;
16456 esac
16457
16458 set X $dynamic_ext $static_ext $nonxs_ext
16459 shift
16460 extensions="$*"
16461
16462 : Remove libraries needed only for extensions
16463 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
16464 : The exception is SunOS 4.x, which needs them.
16465 case "${osname}X${osvers}" in
16466 sunos*X4*)
16467     perllibs="$libs"
16468     ;;
16469 *) case "$usedl" in
16470     $define|true|[yY]*)
16471             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
16472             shift
16473             perllibs="$*"
16474             ;;
16475     *)  perllibs="$libs"
16476             ;;
16477     esac
16478     ;;
16479 esac
16480
16481 : Remove build directory name from cppstdin so it can be used from
16482 : either the present location or the final installed location.
16483 echo " "
16484 : Get out of the UU directory to get correct path name.
16485 cd ..
16486 case "$cppstdin" in
16487 `pwd`/cppstdin)
16488         echo "Stripping down cppstdin path name"
16489         cppstdin=cppstdin
16490         ;;
16491 esac
16492 cd UU
16493
16494 : end of configuration questions
16495 echo " "
16496 echo "End of configuration questions."
16497 echo " "
16498
16499 : back to where it started
16500 if test -d ../UU; then
16501         cd ..
16502 fi
16503
16504 : configuration may be patched via a 'config.over' file
16505 if $test -f config.over; then
16506         echo " "
16507         dflt=y
16508         rp='I see a config.over file.  Do you wish to load it?'
16509         . UU/myread
16510         case "$ans" in
16511         n*) echo "OK, I'll ignore it.";;
16512         *)      . ./config.over
16513                 echo "Configuration override changes have been loaded."
16514                 ;;
16515         esac
16516 fi
16517
16518 : in case they want portability, strip down executable paths
16519 case "$d_portable" in
16520 "$define")
16521         echo " "
16522         echo "Stripping down executable paths..." >&4
16523         for file in $loclist $trylist; do
16524                 eval temp=\$$file
16525                 eval $file=`basename $temp`
16526         done
16527         ;;
16528 esac
16529
16530 : create config.sh file
16531 echo " "
16532 echo "Creating config.sh..." >&4
16533 $spitshell <<EOT >config.sh
16534 $startsh
16535 #
16536 # This file was produced by running the Configure script. It holds all the
16537 # definitions figured out by Configure. Should you modify one of these values,
16538 # do not forget to propagate your changes by running "Configure -der". You may
16539 # instead choose to run each of the .SH files by yourself, or "Configure -S".
16540 #
16541
16542 # Package name      : $package
16543 # Source directory  : $src
16544 # Configuration time: $cf_time
16545 # Configured by     : $cf_by
16546 # Target system     : $myuname
16547
16548 Author='$Author'
16549 Date='$Date'
16550 Header='$Header'
16551 Id='$Id'
16552 Locker='$Locker'
16553 Log='$Log'
16554 Mcc='$Mcc'
16555 RCSfile='$RCSfile'
16556 Revision='$Revision'
16557 Source='$Source'
16558 State='$State'
16559 _a='$_a'
16560 _exe='$_exe'
16561 _o='$_o'
16562 afs='$afs'
16563 afsroot='$afsroot'
16564 alignbytes='$alignbytes'
16565 ansi2knr='$ansi2knr'
16566 aphostname='$aphostname'
16567 api_revision='$api_revision'
16568 api_subversion='$api_subversion'
16569 api_version='$api_version'
16570 api_versionstring='$api_versionstring'
16571 ar='$ar'
16572 archlib='$archlib'
16573 archlibexp='$archlibexp'
16574 archname64='$archname64'
16575 archname='$archname'
16576 archobjs='$archobjs'
16577 awk='$awk'
16578 baserev='$baserev'
16579 bash='$bash'
16580 bin='$bin'
16581 bincompat5005='$bincompat5005'
16582 binexp='$binexp'
16583 bison='$bison'
16584 byacc='$byacc'
16585 byteorder='$byteorder'
16586 c='$c'
16587 castflags='$castflags'
16588 cat='$cat'
16589 cc='$cc'
16590 cccdlflags='$cccdlflags'
16591 ccdlflags='$ccdlflags'
16592 ccflags='$ccflags'
16593 ccflags_uselargefiles='$ccflags_uselargefiles'
16594 ccname='$ccname'
16595 ccsymbols='$ccsymbols'
16596 ccversion='$ccversion'
16597 cf_by='$cf_by'
16598 cf_email='$cf_email'
16599 cf_time='$cf_time'
16600 charsize='$charsize'
16601 chgrp='$chgrp'
16602 chmod='$chmod'
16603 chown='$chown'
16604 clocktype='$clocktype'
16605 comm='$comm'
16606 compress='$compress'
16607 contains='$contains'
16608 cp='$cp'
16609 cpio='$cpio'
16610 cpp='$cpp'
16611 cpp_stuff='$cpp_stuff'
16612 cppccsymbols='$cppccsymbols'
16613 cppflags='$cppflags'
16614 cpplast='$cpplast'
16615 cppminus='$cppminus'
16616 cpprun='$cpprun'
16617 cppstdin='$cppstdin'
16618 cppsymbols='$cppsymbols'
16619 cryptlib='$cryptlib'
16620 csh='$csh'
16621 d_Gconvert='$d_Gconvert'
16622 d_PRIEUldbl='$d_PRIEUldbl'
16623 d_PRIFUldbl='$d_PRIFUldbl'
16624 d_PRIGUldbl='$d_PRIGUldbl'
16625 d_PRIXU64='$d_PRIXU64'
16626 d_PRId64='$d_PRId64'
16627 d_PRIeldbl='$d_PRIeldbl'
16628 d_PRIfldbl='$d_PRIfldbl'
16629 d_PRIgldbl='$d_PRIgldbl'
16630 d_PRIi64='$d_PRIi64'
16631 d_PRIo64='$d_PRIo64'
16632 d_PRIu64='$d_PRIu64'
16633 d_PRIx64='$d_PRIx64'
16634 d_SCNfldbl='$d_SCNfldbl'
16635 d__fwalk='$d__fwalk'
16636 d_access='$d_access'
16637 d_accessx='$d_accessx'
16638 d_alarm='$d_alarm'
16639 d_archlib='$d_archlib'
16640 d_atolf='$d_atolf'
16641 d_atoll='$d_atoll'
16642 d_attribut='$d_attribut'
16643 d_bcmp='$d_bcmp'
16644 d_bcopy='$d_bcopy'
16645 d_bincompat5005='$d_bincompat5005'
16646 d_bsd='$d_bsd'
16647 d_bsdgetpgrp='$d_bsdgetpgrp'
16648 d_bsdsetpgrp='$d_bsdsetpgrp'
16649 d_bzero='$d_bzero'
16650 d_casti32='$d_casti32'
16651 d_castneg='$d_castneg'
16652 d_charvspr='$d_charvspr'
16653 d_chown='$d_chown'
16654 d_chroot='$d_chroot'
16655 d_chsize='$d_chsize'
16656 d_closedir='$d_closedir'
16657 d_cmsghdr_s='$d_cmsghdr_s'
16658 d_const='$d_const'
16659 d_crypt='$d_crypt'
16660 d_csh='$d_csh'
16661 d_cuserid='$d_cuserid'
16662 d_dbl_dig='$d_dbl_dig'
16663 d_dbminitproto='$d_dbminitproto'
16664 d_difftime='$d_difftime'
16665 d_dirnamlen='$d_dirnamlen'
16666 d_dlerror='$d_dlerror'
16667 d_dlopen='$d_dlopen'
16668 d_dlsymun='$d_dlsymun'
16669 d_dosuid='$d_dosuid'
16670 d_drand48proto='$d_drand48proto'
16671 d_dup2='$d_dup2'
16672 d_eaccess='$d_eaccess'
16673 d_endgrent='$d_endgrent'
16674 d_endhent='$d_endhent'
16675 d_endnent='$d_endnent'
16676 d_endpent='$d_endpent'
16677 d_endpwent='$d_endpwent'
16678 d_endsent='$d_endsent'
16679 d_eofnblk='$d_eofnblk'
16680 d_eunice='$d_eunice'
16681 d_fchdir='$d_fchdir'
16682 d_fchmod='$d_fchmod'
16683 d_fchown='$d_fchown'
16684 d_fcntl='$d_fcntl'
16685 d_fcntl_can_lock='$d_fcntl_can_lock'
16686 d_fd_macros='$d_fd_macros'
16687 d_fd_set='$d_fd_set'
16688 d_fds_bits='$d_fds_bits'
16689 d_fgetpos='$d_fgetpos'
16690 d_flexfnam='$d_flexfnam'
16691 d_flock='$d_flock'
16692 d_flockproto='$d_flockproto'
16693 d_fork='$d_fork'
16694 d_fpathconf='$d_fpathconf'
16695 d_fpos64_t='$d_fpos64_t'
16696 d_frexpl='$d_frexpl'
16697 d_fs_data_s='$d_fs_data_s'
16698 d_fseeko='$d_fseeko'
16699 d_fsetpos='$d_fsetpos'
16700 d_fstatfs='$d_fstatfs'
16701 d_fstatvfs='$d_fstatvfs'
16702 d_fsync='$d_fsync'
16703 d_ftello='$d_ftello'
16704 d_ftime='$d_ftime'
16705 d_getcwd='$d_getcwd'
16706 d_getespwnam='$d_getespwnam'
16707 d_getfsstat='$d_getfsstat'
16708 d_getgrent='$d_getgrent'
16709 d_getgrps='$d_getgrps'
16710 d_gethbyaddr='$d_gethbyaddr'
16711 d_gethbyname='$d_gethbyname'
16712 d_gethent='$d_gethent'
16713 d_gethname='$d_gethname'
16714 d_gethostprotos='$d_gethostprotos'
16715 d_getitimer='$d_getitimer'
16716 d_getlogin='$d_getlogin'
16717 d_getmnt='$d_getmnt'
16718 d_getmntent='$d_getmntent'
16719 d_getnbyaddr='$d_getnbyaddr'
16720 d_getnbyname='$d_getnbyname'
16721 d_getnent='$d_getnent'
16722 d_getnetprotos='$d_getnetprotos'
16723 d_getpagsz='$d_getpagsz'
16724 d_getpbyname='$d_getpbyname'
16725 d_getpbynumber='$d_getpbynumber'
16726 d_getpent='$d_getpent'
16727 d_getpgid='$d_getpgid'
16728 d_getpgrp2='$d_getpgrp2'
16729 d_getpgrp='$d_getpgrp'
16730 d_getppid='$d_getppid'
16731 d_getprior='$d_getprior'
16732 d_getprotoprotos='$d_getprotoprotos'
16733 d_getprpwnam='$d_getprpwnam'
16734 d_getpwent='$d_getpwent'
16735 d_getsbyname='$d_getsbyname'
16736 d_getsbyport='$d_getsbyport'
16737 d_getsent='$d_getsent'
16738 d_getservprotos='$d_getservprotos'
16739 d_getspnam='$d_getspnam'
16740 d_gettimeod='$d_gettimeod'
16741 d_gnulibc='$d_gnulibc'
16742 d_grpasswd='$d_grpasswd'
16743 d_hasmntopt='$d_hasmntopt'
16744 d_htonl='$d_htonl'
16745 d_iconv='$d_iconv'
16746 d_index='$d_index'
16747 d_inetaton='$d_inetaton'
16748 d_int64_t='$d_int64_t'
16749 d_isascii='$d_isascii'
16750 d_isnan='$d_isnan'
16751 d_isnanl='$d_isnanl'
16752 d_killpg='$d_killpg'
16753 d_lchown='$d_lchown'
16754 d_ldbl_dig='$d_ldbl_dig'
16755 d_link='$d_link'
16756 d_locconv='$d_locconv'
16757 d_lockf='$d_lockf'
16758 d_longdbl='$d_longdbl'
16759 d_longlong='$d_longlong'
16760 d_lseekproto='$d_lseekproto'
16761 d_lstat='$d_lstat'
16762 d_madvise='$d_madvise'
16763 d_mblen='$d_mblen'
16764 d_mbstowcs='$d_mbstowcs'
16765 d_mbtowc='$d_mbtowc'
16766 d_memchr='$d_memchr'
16767 d_memcmp='$d_memcmp'
16768 d_memcpy='$d_memcpy'
16769 d_memmove='$d_memmove'
16770 d_memset='$d_memset'
16771 d_mkdir='$d_mkdir'
16772 d_mkdtemp='$d_mkdtemp'
16773 d_mkfifo='$d_mkfifo'
16774 d_mkstemp='$d_mkstemp'
16775 d_mkstemps='$d_mkstemps'
16776 d_mktime='$d_mktime'
16777 d_mmap='$d_mmap'
16778 d_modfl='$d_modfl'
16779 d_modfl_pow32_bug='$d_modfl_pow32_bug'
16780 d_mprotect='$d_mprotect'
16781 d_msg='$d_msg'
16782 d_msg_ctrunc='$d_msg_ctrunc'
16783 d_msg_dontroute='$d_msg_dontroute'
16784 d_msg_oob='$d_msg_oob'
16785 d_msg_peek='$d_msg_peek'
16786 d_msg_proxy='$d_msg_proxy'
16787 d_msgctl='$d_msgctl'
16788 d_msgget='$d_msgget'
16789 d_msghdr_s='$d_msghdr_s'
16790 d_msgrcv='$d_msgrcv'
16791 d_msgsnd='$d_msgsnd'
16792 d_msync='$d_msync'
16793 d_munmap='$d_munmap'
16794 d_mymalloc='$d_mymalloc'
16795 d_nice='$d_nice'
16796 d_nl_langinfo='$d_nl_langinfo'
16797 d_nv_preserves_uv='$d_nv_preserves_uv'
16798 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
16799 d_off64_t='$d_off64_t'
16800 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
16801 d_oldpthreads='$d_oldpthreads'
16802 d_oldsock='$d_oldsock'
16803 d_open3='$d_open3'
16804 d_pathconf='$d_pathconf'
16805 d_pause='$d_pause'
16806 d_perl_otherlibdirs='$d_perl_otherlibdirs'
16807 d_phostname='$d_phostname'
16808 d_pipe='$d_pipe'
16809 d_poll='$d_poll'
16810 d_portable='$d_portable'
16811 d_pthread_atfork='$d_pthread_atfork'
16812 d_pthread_yield='$d_pthread_yield'
16813 d_pwage='$d_pwage'
16814 d_pwchange='$d_pwchange'
16815 d_pwclass='$d_pwclass'
16816 d_pwcomment='$d_pwcomment'
16817 d_pwexpire='$d_pwexpire'
16818 d_pwgecos='$d_pwgecos'
16819 d_pwpasswd='$d_pwpasswd'
16820 d_pwquota='$d_pwquota'
16821 d_qgcvt='$d_qgcvt'
16822 d_quad='$d_quad'
16823 d_readdir='$d_readdir'
16824 d_readlink='$d_readlink'
16825 d_readv='$d_readv'
16826 d_recvmsg='$d_recvmsg'
16827 d_rename='$d_rename'
16828 d_rewinddir='$d_rewinddir'
16829 d_rmdir='$d_rmdir'
16830 d_safebcpy='$d_safebcpy'
16831 d_safemcpy='$d_safemcpy'
16832 d_sanemcmp='$d_sanemcmp'
16833 d_sbrkproto='$d_sbrkproto'
16834 d_sched_yield='$d_sched_yield'
16835 d_scm_rights='$d_scm_rights'
16836 d_seekdir='$d_seekdir'
16837 d_select='$d_select'
16838 d_sem='$d_sem'
16839 d_semctl='$d_semctl'
16840 d_semctl_semid_ds='$d_semctl_semid_ds'
16841 d_semctl_semun='$d_semctl_semun'
16842 d_semget='$d_semget'
16843 d_semop='$d_semop'
16844 d_sendmsg='$d_sendmsg'
16845 d_setegid='$d_setegid'
16846 d_seteuid='$d_seteuid'
16847 d_setgrent='$d_setgrent'
16848 d_setgrps='$d_setgrps'
16849 d_sethent='$d_sethent'
16850 d_setitimer='$d_setitimer'
16851 d_setlinebuf='$d_setlinebuf'
16852 d_setlocale='$d_setlocale'
16853 d_setnent='$d_setnent'
16854 d_setpent='$d_setpent'
16855 d_setpgid='$d_setpgid'
16856 d_setpgrp2='$d_setpgrp2'
16857 d_setpgrp='$d_setpgrp'
16858 d_setprior='$d_setprior'
16859 d_setproctitle='$d_setproctitle'
16860 d_setpwent='$d_setpwent'
16861 d_setregid='$d_setregid'
16862 d_setresgid='$d_setresgid'
16863 d_setresuid='$d_setresuid'
16864 d_setreuid='$d_setreuid'
16865 d_setrgid='$d_setrgid'
16866 d_setruid='$d_setruid'
16867 d_setsent='$d_setsent'
16868 d_setsid='$d_setsid'
16869 d_setvbuf='$d_setvbuf'
16870 d_sfio='$d_sfio'
16871 d_shm='$d_shm'
16872 d_shmat='$d_shmat'
16873 d_shmatprototype='$d_shmatprototype'
16874 d_shmctl='$d_shmctl'
16875 d_shmdt='$d_shmdt'
16876 d_shmget='$d_shmget'
16877 d_sigaction='$d_sigaction'
16878 d_sigprocmask='$d_sigprocmask'
16879 d_sigsetjmp='$d_sigsetjmp'
16880 d_sockatmark='$d_sockatmark'
16881 d_sockatmarkproto='$d_sockatmarkproto'
16882 d_socket='$d_socket'
16883 d_socklen_t='$d_socklen_t'
16884 d_sockpair='$d_sockpair'
16885 d_socks5_init='$d_socks5_init'
16886 d_sqrtl='$d_sqrtl'
16887 d_sresgproto='$d_sresgproto'
16888 d_sresuproto='$d_sresuproto'
16889 d_statblks='$d_statblks'
16890 d_statfs_f_flags='$d_statfs_f_flags'
16891 d_statfs_s='$d_statfs_s'
16892 d_statvfs='$d_statvfs'
16893 d_stdio_cnt_lval='$d_stdio_cnt_lval'
16894 d_stdio_ptr_lval='$d_stdio_ptr_lval'
16895 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
16896 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
16897 d_stdio_stream_array='$d_stdio_stream_array'
16898 d_stdiobase='$d_stdiobase'
16899 d_stdstdio='$d_stdstdio'
16900 d_strchr='$d_strchr'
16901 d_strcoll='$d_strcoll'
16902 d_strctcpy='$d_strctcpy'
16903 d_strerrm='$d_strerrm'
16904 d_strerror='$d_strerror'
16905 d_strftime='$d_strftime'
16906 d_strtod='$d_strtod'
16907 d_strtol='$d_strtol'
16908 d_strtold='$d_strtold'
16909 d_strtoll='$d_strtoll'
16910 d_strtoq='$d_strtoq'
16911 d_strtoul='$d_strtoul'
16912 d_strtoull='$d_strtoull'
16913 d_strtouq='$d_strtouq'
16914 d_strxfrm='$d_strxfrm'
16915 d_suidsafe='$d_suidsafe'
16916 d_symlink='$d_symlink'
16917 d_syscall='$d_syscall'
16918 d_syscallproto='$d_syscallproto'
16919 d_sysconf='$d_sysconf'
16920 d_sysernlst='$d_sysernlst'
16921 d_syserrlst='$d_syserrlst'
16922 d_system='$d_system'
16923 d_tcgetpgrp='$d_tcgetpgrp'
16924 d_tcsetpgrp='$d_tcsetpgrp'
16925 d_telldir='$d_telldir'
16926 d_telldirproto='$d_telldirproto'
16927 d_time='$d_time'
16928 d_times='$d_times'
16929 d_truncate='$d_truncate'
16930 d_tzname='$d_tzname'
16931 d_u32align='$d_u32align'
16932 d_ualarm='$d_ualarm'
16933 d_umask='$d_umask'
16934 d_uname='$d_uname'
16935 d_union_semun='$d_union_semun'
16936 d_usleep='$d_usleep'
16937 d_usleepproto='$d_usleepproto'
16938 d_ustat='$d_ustat'
16939 d_vendorarch='$d_vendorarch'
16940 d_vendorbin='$d_vendorbin'
16941 d_vendorlib='$d_vendorlib'
16942 d_vfork='$d_vfork'
16943 d_void_closedir='$d_void_closedir'
16944 d_voidsig='$d_voidsig'
16945 d_voidtty='$d_voidtty'
16946 d_volatile='$d_volatile'
16947 d_vprintf='$d_vprintf'
16948 d_wait4='$d_wait4'
16949 d_waitpid='$d_waitpid'
16950 d_wcstombs='$d_wcstombs'
16951 d_wctomb='$d_wctomb'
16952 d_writev='$d_writev'
16953 d_xenix='$d_xenix'
16954 date='$date'
16955 db_hashtype='$db_hashtype'
16956 db_prefixtype='$db_prefixtype'
16957 db_version_major='$db_version_major'
16958 db_version_minor='$db_version_minor'
16959 db_version_patch='$db_version_patch'
16960 defvoidused='$defvoidused'
16961 direntrytype='$direntrytype'
16962 dlext='$dlext'
16963 dlsrc='$dlsrc'
16964 doublesize='$doublesize'
16965 drand01='$drand01'
16966 dynamic_ext='$dynamic_ext'
16967 eagain='$eagain'
16968 ebcdic='$ebcdic'
16969 echo='$echo'
16970 egrep='$egrep'
16971 emacs='$emacs'
16972 eunicefix='$eunicefix'
16973 exe_ext='$exe_ext'
16974 expr='$expr'
16975 extensions='$extensions'
16976 fflushNULL='$fflushNULL'
16977 fflushall='$fflushall'
16978 find='$find'
16979 firstmakefile='$firstmakefile'
16980 flex='$flex'
16981 fpossize='$fpossize'
16982 fpostype='$fpostype'
16983 freetype='$freetype'
16984 from='$from'
16985 full_ar='$full_ar'
16986 full_csh='$full_csh'
16987 full_sed='$full_sed'
16988 gccosandvers='$gccosandvers'
16989 gccversion='$gccversion'
16990 gidformat='$gidformat'
16991 gidsign='$gidsign'
16992 gidsize='$gidsize'
16993 gidtype='$gidtype'
16994 glibpth='$glibpth'
16995 grep='$grep'
16996 groupcat='$groupcat'
16997 groupstype='$groupstype'
16998 gzip='$gzip'
16999 h_fcntl='$h_fcntl'
17000 h_sysfile='$h_sysfile'
17001 hint='$hint'
17002 hostcat='$hostcat'
17003 i16size='$i16size'
17004 i16type='$i16type'
17005 i32size='$i32size'
17006 i32type='$i32type'
17007 i64size='$i64size'
17008 i64type='$i64type'
17009 i8size='$i8size'
17010 i8type='$i8type'
17011 i_arpainet='$i_arpainet'
17012 i_bsdioctl='$i_bsdioctl'
17013 i_db='$i_db'
17014 i_dbm='$i_dbm'
17015 i_dirent='$i_dirent'
17016 i_dld='$i_dld'
17017 i_dlfcn='$i_dlfcn'
17018 i_fcntl='$i_fcntl'
17019 i_float='$i_float'
17020 i_gdbm='$i_gdbm'
17021 i_grp='$i_grp'
17022 i_iconv='$i_iconv'
17023 i_ieeefp='$i_ieeefp'
17024 i_inttypes='$i_inttypes'
17025 i_langinfo='$i_langinfo'
17026 i_libutil='$i_libutil'
17027 i_limits='$i_limits'
17028 i_locale='$i_locale'
17029 i_machcthr='$i_machcthr'
17030 i_malloc='$i_malloc'
17031 i_math='$i_math'
17032 i_memory='$i_memory'
17033 i_mntent='$i_mntent'
17034 i_ndbm='$i_ndbm'
17035 i_netdb='$i_netdb'
17036 i_neterrno='$i_neterrno'
17037 i_netinettcp='$i_netinettcp'
17038 i_niin='$i_niin'
17039 i_poll='$i_poll'
17040 i_prot='$i_prot'
17041 i_pthread='$i_pthread'
17042 i_pwd='$i_pwd'
17043 i_rpcsvcdbm='$i_rpcsvcdbm'
17044 i_sfio='$i_sfio'
17045 i_sgtty='$i_sgtty'
17046 i_shadow='$i_shadow'
17047 i_socks='$i_socks'
17048 i_stdarg='$i_stdarg'
17049 i_stddef='$i_stddef'
17050 i_stdlib='$i_stdlib'
17051 i_string='$i_string'
17052 i_sunmath='$i_sunmath'
17053 i_sysaccess='$i_sysaccess'
17054 i_sysdir='$i_sysdir'
17055 i_sysfile='$i_sysfile'
17056 i_sysfilio='$i_sysfilio'
17057 i_sysin='$i_sysin'
17058 i_sysioctl='$i_sysioctl'
17059 i_syslog='$i_syslog'
17060 i_sysmman='$i_sysmman'
17061 i_sysmode='$i_sysmode'
17062 i_sysmount='$i_sysmount'
17063 i_sysndir='$i_sysndir'
17064 i_sysparam='$i_sysparam'
17065 i_sysresrc='$i_sysresrc'
17066 i_syssecrt='$i_syssecrt'
17067 i_sysselct='$i_sysselct'
17068 i_syssockio='$i_syssockio'
17069 i_sysstat='$i_sysstat'
17070 i_sysstatfs='$i_sysstatfs'
17071 i_sysstatvfs='$i_sysstatvfs'
17072 i_systime='$i_systime'
17073 i_systimek='$i_systimek'
17074 i_systimes='$i_systimes'
17075 i_systypes='$i_systypes'
17076 i_sysuio='$i_sysuio'
17077 i_sysun='$i_sysun'
17078 i_sysutsname='$i_sysutsname'
17079 i_sysvfs='$i_sysvfs'
17080 i_syswait='$i_syswait'
17081 i_termio='$i_termio'
17082 i_termios='$i_termios'
17083 i_time='$i_time'
17084 i_unistd='$i_unistd'
17085 i_ustat='$i_ustat'
17086 i_utime='$i_utime'
17087 i_values='$i_values'
17088 i_varargs='$i_varargs'
17089 i_varhdr='$i_varhdr'
17090 i_vfork='$i_vfork'
17091 ignore_versioned_solibs='$ignore_versioned_solibs'
17092 inc_version_list='$inc_version_list'
17093 inc_version_list_init='$inc_version_list_init'
17094 incpath='$incpath'
17095 inews='$inews'
17096 installarchlib='$installarchlib'
17097 installbin='$installbin'
17098 installman1dir='$installman1dir'
17099 installman3dir='$installman3dir'
17100 installprefix='$installprefix'
17101 installprefixexp='$installprefixexp'
17102 installprivlib='$installprivlib'
17103 installscript='$installscript'
17104 installsitearch='$installsitearch'
17105 installsitebin='$installsitebin'
17106 installsitelib='$installsitelib'
17107 installstyle='$installstyle'
17108 installusrbinperl='$installusrbinperl'
17109 installvendorarch='$installvendorarch'
17110 installvendorbin='$installvendorbin'
17111 installvendorlib='$installvendorlib'
17112 intsize='$intsize'
17113 issymlink='$issymlink'
17114 ivdformat='$ivdformat'
17115 ivsize='$ivsize'
17116 ivtype='$ivtype'
17117 known_extensions='$known_extensions'
17118 ksh='$ksh'
17119 ld='$ld'
17120 lddlflags='$lddlflags'
17121 ldflags='$ldflags'
17122 ldflags_uselargefiles='$ldflags_uselargefiles'
17123 ldlibpthname='$ldlibpthname'
17124 less='$less'
17125 lib_ext='$lib_ext'
17126 libc='$libc'
17127 libperl='$libperl'
17128 libpth='$libpth'
17129 libs='$libs'
17130 libsdirs='$libsdirs'
17131 libsfiles='$libsfiles'
17132 libsfound='$libsfound'
17133 libspath='$libspath'
17134 libswanted='$libswanted'
17135 libswanted_uselargefiles='$libswanted_uselargefiles'
17136 line='$line'
17137 lint='$lint'
17138 lkflags='$lkflags'
17139 ln='$ln'
17140 lns='$lns'
17141 locincpth='$locincpth'
17142 loclibpth='$loclibpth'
17143 longdblsize='$longdblsize'
17144 longlongsize='$longlongsize'
17145 longsize='$longsize'
17146 lp='$lp'
17147 lpr='$lpr'
17148 ls='$ls'
17149 lseeksize='$lseeksize'
17150 lseektype='$lseektype'
17151 mail='$mail'
17152 mailx='$mailx'
17153 make='$make'
17154 make_set_make='$make_set_make'
17155 mallocobj='$mallocobj'
17156 mallocsrc='$mallocsrc'
17157 malloctype='$malloctype'
17158 man1dir='$man1dir'
17159 man1direxp='$man1direxp'
17160 man1ext='$man1ext'
17161 man3dir='$man3dir'
17162 man3direxp='$man3direxp'
17163 man3ext='$man3ext'
17164 mips_type='$mips_type'
17165 mkdir='$mkdir'
17166 mmaptype='$mmaptype'
17167 modetype='$modetype'
17168 more='$more'
17169 multiarch='$multiarch'
17170 mv='$mv'
17171 myarchname='$myarchname'
17172 mydomain='$mydomain'
17173 myhostname='$myhostname'
17174 myuname='$myuname'
17175 n='$n'
17176 need_va_copy='$need_va_copy'
17177 netdb_hlen_type='$netdb_hlen_type'
17178 netdb_host_type='$netdb_host_type'
17179 netdb_name_type='$netdb_name_type'
17180 netdb_net_type='$netdb_net_type'
17181 nm='$nm'
17182 nm_opt='$nm_opt'
17183 nm_so_opt='$nm_so_opt'
17184 nonxs_ext='$nonxs_ext'
17185 nroff='$nroff'
17186 nvEUformat='$nvEUformat'
17187 nvFUformat='$nvFUformat'
17188 nvGUformat='$nvGUformat'
17189 nveformat='$nveformat'
17190 nvfformat='$nvfformat'
17191 nvgformat='$nvgformat'
17192 nvsize='$nvsize'
17193 nvtype='$nvtype'
17194 o_nonblock='$o_nonblock'
17195 obj_ext='$obj_ext'
17196 old_pthread_create_joinable='$old_pthread_create_joinable'
17197 optimize='$optimize'
17198 orderlib='$orderlib'
17199 osname='$osname'
17200 osvers='$osvers'
17201 otherlibdirs='$otherlibdirs'
17202 package='$package'
17203 pager='$pager'
17204 passcat='$passcat'
17205 patchlevel='$patchlevel'
17206 path_sep='$path_sep'
17207 perl5='$perl5'
17208 perl='$perl'
17209 perl_patchlevel='$perl_patchlevel'
17210 perladmin='$perladmin'
17211 perllibs='$perllibs'
17212 perlpath='$perlpath'
17213 pg='$pg'
17214 phostname='$phostname'
17215 pidtype='$pidtype'
17216 plibpth='$plibpth'
17217 pm_apiversion='$pm_apiversion'
17218 pmake='$pmake'
17219 pr='$pr'
17220 prefix='$prefix'
17221 prefixexp='$prefixexp'
17222 privlib='$privlib'
17223 privlibexp='$privlibexp'
17224 prototype='$prototype'
17225 ptrsize='$ptrsize'
17226 quadkind='$quadkind'
17227 quadtype='$quadtype'
17228 randbits='$randbits'
17229 randfunc='$randfunc'
17230 randseedtype='$randseedtype'
17231 ranlib='$ranlib'
17232 rd_nodata='$rd_nodata'
17233 revision='$revision'
17234 rm='$rm'
17235 rmail='$rmail'
17236 run='$run'
17237 runnm='$runnm'
17238 sPRIEUldbl='$sPRIEUldbl'
17239 sPRIFUldbl='$sPRIFUldbl'
17240 sPRIGUldbl='$sPRIGUldbl'
17241 sPRIXU64='$sPRIXU64'
17242 sPRId64='$sPRId64'
17243 sPRIeldbl='$sPRIeldbl'
17244 sPRIfldbl='$sPRIfldbl'
17245 sPRIgldbl='$sPRIgldbl'
17246 sPRIi64='$sPRIi64'
17247 sPRIo64='$sPRIo64'
17248 sPRIu64='$sPRIu64'
17249 sPRIx64='$sPRIx64'
17250 sSCNfldbl='$sSCNfldbl'
17251 sched_yield='$sched_yield'
17252 scriptdir='$scriptdir'
17253 scriptdirexp='$scriptdirexp'
17254 sed='$sed'
17255 seedfunc='$seedfunc'
17256 selectminbits='$selectminbits'
17257 selecttype='$selecttype'
17258 sendmail='$sendmail'
17259 sh='$sh'
17260 shar='$shar'
17261 sharpbang='$sharpbang'
17262 shmattype='$shmattype'
17263 shortsize='$shortsize'
17264 shrpenv='$shrpenv'
17265 shsharp='$shsharp'
17266 sig_count='$sig_count'
17267 sig_name='$sig_name'
17268 sig_name_init='$sig_name_init'
17269 sig_num='$sig_num'
17270 sig_num_init='$sig_num_init'
17271 sig_size='$sig_size'
17272 signal_t='$signal_t'
17273 sitearch='$sitearch'
17274 sitearchexp='$sitearchexp'
17275 sitebin='$sitebin'
17276 sitebinexp='$sitebinexp'
17277 sitelib='$sitelib'
17278 sitelib_stem='$sitelib_stem'
17279 sitelibexp='$sitelibexp'
17280 siteprefix='$siteprefix'
17281 siteprefixexp='$siteprefixexp'
17282 sizesize='$sizesize'
17283 sizetype='$sizetype'
17284 sleep='$sleep'
17285 smail='$smail'
17286 so='$so'
17287 sockethdr='$sockethdr'
17288 socketlib='$socketlib'
17289 socksizetype='$socksizetype'
17290 sort='$sort'
17291 spackage='$spackage'
17292 spitshell='$spitshell'
17293 src='$src'
17294 ssizetype='$ssizetype'
17295 startperl='$startperl'
17296 startsh='$startsh'
17297 static_ext='$static_ext'
17298 stdchar='$stdchar'
17299 stdio_base='$stdio_base'
17300 stdio_bufsiz='$stdio_bufsiz'
17301 stdio_cnt='$stdio_cnt'
17302 stdio_filbuf='$stdio_filbuf'
17303 stdio_ptr='$stdio_ptr'
17304 stdio_stream_array='$stdio_stream_array'
17305 strings='$strings'
17306 submit='$submit'
17307 subversion='$subversion'
17308 sysman='$sysman'
17309 tail='$tail'
17310 tar='$tar'
17311 targetarch='$targetarch'
17312 tbl='$tbl'
17313 tee='$tee'
17314 test='$test'
17315 timeincl='$timeincl'
17316 timetype='$timetype'
17317 to='$to'
17318 touch='$touch'
17319 tr='$tr'
17320 trnl='$trnl'
17321 troff='$troff'
17322 u16size='$u16size'
17323 u16type='$u16type'
17324 u32size='$u32size'
17325 u32type='$u32type'
17326 u64size='$u64size'
17327 u64type='$u64type'
17328 u8size='$u8size'
17329 u8type='$u8type'
17330 uidformat='$uidformat'
17331 uidsign='$uidsign'
17332 uidsize='$uidsize'
17333 uidtype='$uidtype'
17334 uname='$uname'
17335 uniq='$uniq'
17336 uquadtype='$uquadtype'
17337 use5005threads='$use5005threads'
17338 use64bitall='$use64bitall'
17339 use64bitint='$use64bitint'
17340 usecrosscompile='$usecrosscompile'
17341 usedl='$usedl'
17342 useithreads='$useithreads'
17343 uselargefiles='$uselargefiles'
17344 uselongdouble='$uselongdouble'
17345 usemorebits='$usemorebits'
17346 usemultiplicity='$usemultiplicity'
17347 usemymalloc='$usemymalloc'
17348 usenm='$usenm'
17349 useopcode='$useopcode'
17350 useperlio='$useperlio'
17351 useposix='$useposix'
17352 usereentrant='$usereentrant'
17353 usesfio='$usesfio'
17354 useshrplib='$useshrplib'
17355 usesocks='$usesocks'
17356 usethreads='$usethreads'
17357 usevendorprefix='$usevendorprefix'
17358 usevfork='$usevfork'
17359 usrinc='$usrinc'
17360 uuname='$uuname'
17361 uvXUformat='$uvXUformat'
17362 uvoformat='$uvoformat'
17363 uvsize='$uvsize'
17364 uvtype='$uvtype'
17365 uvuformat='$uvuformat'
17366 uvxformat='$uvxformat'
17367 vendorarch='$vendorarch'
17368 vendorarchexp='$vendorarchexp'
17369 vendorbin='$vendorbin'
17370 vendorbinexp='$vendorbinexp'
17371 vendorlib='$vendorlib'
17372 vendorlib_stem='$vendorlib_stem'
17373 vendorlibexp='$vendorlibexp'
17374 vendorprefix='$vendorprefix'
17375 vendorprefixexp='$vendorprefixexp'
17376 version='$version'
17377 version_patchlevel_string='$version_patchlevel_string'
17378 versiononly='$versiononly'
17379 vi='$vi'
17380 voidflags='$voidflags'
17381 xlibpth='$xlibpth'
17382 xs_apiversion='$xs_apiversion'
17383 yacc='$yacc'
17384 yaccflags='$yaccflags'
17385 zcat='$zcat'
17386 zip='$zip'
17387 EOT
17388
17389 : Add in command line options if available
17390 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
17391
17392 : add special variables
17393 $test -f $src/patchlevel.h && \
17394 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
17395 echo "PERL_PATCHLEVEL=$perl_patchlevel" >>config.sh
17396 echo "PERL_CONFIG_SH=true" >>config.sh
17397
17398 : propagate old symbols
17399 if $test -f UU/config.sh; then
17400         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
17401         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
17402         $sort | $uniq -u >UU/oldsyms
17403         set X `cat UU/oldsyms`
17404         shift
17405         case $# in
17406         0) ;;
17407         *)
17408                 cat <<EOM
17409 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
17410 EOM
17411                 echo "# Variables propagated from previous config.sh file." >>config.sh
17412                 for sym in `cat UU/oldsyms`; do
17413                         echo "    Propagating $hint variable "'$'"$sym..."
17414                         eval 'tmp="$'"${sym}"'"'
17415                         echo "$tmp" | \
17416                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
17417                 done
17418                 ;;
17419         esac
17420 fi
17421
17422 : Finish up by extracting the .SH files
17423 case "$alldone" in
17424 exit)
17425         $rm -rf UU
17426         echo "Extraction done."
17427         exit 0
17428         ;;
17429 cont)
17430         ;;
17431 '')
17432         dflt=''
17433         nostick=true
17434         $cat <<EOM
17435
17436 If you'd like to make any changes to the config.sh file before I begin
17437 to configure things, do it as a shell escape now (e.g. !vi config.sh).
17438
17439 EOM
17440         rp="Press return or use a shell escape to edit config.sh:"
17441         . UU/myread
17442         nostick=''
17443         case "$ans" in
17444         '') ;;
17445         *) : in case they cannot read
17446                 sh 1>&4 -c "$ans";;
17447         esac
17448         ;;
17449 esac
17450
17451 : if this fails, just run all the .SH files by hand
17452 . ./config.sh
17453
17454 echo " "
17455 exec 1>&4
17456 pwd=`pwd`
17457 . ./UU/extract
17458 cd $pwd
17459
17460 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
17461         dflt=y
17462         case "$silent" in
17463         true) ;;
17464         *)
17465                 $cat <<EOM
17466
17467 Now you need to generate make dependencies by running "$make depend".
17468 You might prefer to run it in background: "$make depend > makedepend.out &"
17469 It can take a while, so you might not want to run it right now.
17470
17471 EOM
17472                 ;;
17473         esac
17474         rp="Run $make depend now?"
17475         . UU/myread
17476         case "$ans" in
17477         y*)
17478                 $make depend && echo "Now you must run '$make'."
17479                 ;;
17480         *)
17481                 echo "You must run '$make depend' then '$make'."
17482                 ;;
17483         esac
17484 elif test -f [Mm]akefile; then
17485         echo " "
17486         echo "Now you must run a $make."
17487 else
17488         echo "Configure done."
17489 fi
17490
17491 if $test -f Policy.sh; then
17492     $cat <<EOM
17493
17494 If you compile $package on a different machine or from a different object
17495 directory, copy the Policy.sh file from this object directory to the
17496 new one before you run Configure -- this will help you with most of
17497 the policy defaults.
17498
17499 EOM
17500 fi
17501 if $test -f config.msg; then
17502     echo "Hmm.  I also noted the following information while running:"
17503     echo " "
17504     $cat config.msg >&4
17505     $rm -f config.msg
17506 fi
17507 $rm -f kit*isdone ark*isdone
17508 $rm -rf UU
17509
17510 : End of Configure
17511