Unroll the libs scan thanks to HP-UX.
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Tue Feb 15 03:52:41 EET 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/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 >/tmp/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 /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/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 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 charsize=''
302 contains=''
303 cpp_stuff=''
304 cpplast=''
305 cppminus=''
306 cpprun=''
307 cppstdin=''
308 crosscompile=''
309 d_access=''
310 d_accessx=''
311 d_alarm=''
312 d_attribut=''
313 d_bcmp=''
314 d_bcopy=''
315 d_bzero=''
316 d_casti32=''
317 castflags=''
318 d_castneg=''
319 d_chown=''
320 d_chroot=''
321 d_chsize=''
322 d_closedir=''
323 d_void_closedir=''
324 d_const=''
325 cryptlib=''
326 d_crypt=''
327 d_csh=''
328 full_csh=''
329 d_cuserid=''
330 d_dbl_dig=''
331 d_difftime=''
332 d_dlerror=''
333 d_dlopen=''
334 d_dlsymun=''
335 d_dosuid=''
336 d_suidsafe=''
337 d_drand48proto=''
338 d_dup2=''
339 d_eaccess=''
340 d_endgrent=''
341 d_endhent=''
342 d_endnent=''
343 d_endpent=''
344 d_endpwent=''
345 d_endsent=''
346 d_endspent=''
347 d_fchmod=''
348 d_fchown=''
349 d_fcntl=''
350 d_fd_macros=''
351 d_fd_set=''
352 d_fds_bits=''
353 d_fgetpos=''
354 d_flexfnam=''
355 d_flock=''
356 d_fork=''
357 d_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getcwd=''
366 d_getgrent=''
367 d_getgrps=''
368 d_gethbyaddr=''
369 d_gethbyname=''
370 d_gethent=''
371 aphostname=''
372 d_gethname=''
373 d_phostname=''
374 d_uname=''
375 d_gethostprotos=''
376 d_getlogin=''
377 d_getmnt=''
378 d_getmntent=''
379 d_getnbyaddr=''
380 d_getnbyname=''
381 d_getnent=''
382 d_getnetprotos=''
383 d_getpent=''
384 d_getpgid=''
385 d_getpgrp2=''
386 d_bsdgetpgrp=''
387 d_getpgrp=''
388 d_getppid=''
389 d_getprior=''
390 d_getpbyname=''
391 d_getpbynumber=''
392 d_getprotoprotos=''
393 d_getpwent=''
394 d_getsent=''
395 d_getservprotos=''
396 d_getspent=''
397 d_getspnam=''
398 d_getsbyname=''
399 d_getsbyport=''
400 d_gnulibc=''
401 d_hasmntopt=''
402 d_htonl=''
403 d_iconv=''
404 d_inetaton=''
405 d_int64t=''
406 d_isascii=''
407 d_killpg=''
408 d_lchown=''
409 d_ldbl_dig=''
410 d_link=''
411 d_locconv=''
412 d_lockf=''
413 d_longdbl=''
414 longdblsize=''
415 d_longlong=''
416 longlongsize=''
417 d_lstat=''
418 d_mblen=''
419 d_mbstowcs=''
420 d_mbtowc=''
421 d_memchr=''
422 d_memcmp=''
423 d_memcpy=''
424 d_memmove=''
425 d_memset=''
426 d_mkdir=''
427 d_mkdtemp=''
428 d_mkfifo=''
429 d_mkstemp=''
430 d_mkstemps=''
431 d_mktime=''
432 d_mmap=''
433 mmaptype=''
434 d_mprotect=''
435 d_msg=''
436 d_msgctl=''
437 d_msgget=''
438 d_msgrcv=''
439 d_msgsnd=''
440 d_msync=''
441 d_munmap=''
442 d_nice=''
443 d_open3=''
444 d_fpathconf=''
445 d_pathconf=''
446 d_pause=''
447 d_pipe=''
448 d_poll=''
449 d_portable=''
450 d_old_pthread_create_joinable=''
451 old_pthread_create_joinable=''
452 d_pthread_yield=''
453 d_sched_yield=''
454 sched_yield=''
455 d_readdir=''
456 d_rewinddir=''
457 d_seekdir=''
458 d_telldir=''
459 d_readlink=''
460 d_rename=''
461 d_rmdir=''
462 d_safebcpy=''
463 d_safemcpy=''
464 d_sanemcmp=''
465 d_select=''
466 d_sem=''
467 d_semctl=''
468 d_semget=''
469 d_semop=''
470 d_setegid=''
471 d_seteuid=''
472 d_setgrent=''
473 d_setgrps=''
474 d_sethent=''
475 d_setlinebuf=''
476 d_setlocale=''
477 d_setnent=''
478 d_setpent=''
479 d_setpgid=''
480 d_setpgrp2=''
481 d_bsdsetpgrp=''
482 d_setpgrp=''
483 d_setprior=''
484 d_setpwent=''
485 d_setregid=''
486 d_setresgid=''
487 d_setresuid=''
488 d_setreuid=''
489 d_setrgid=''
490 d_setruid=''
491 d_setsent=''
492 d_setsid=''
493 d_setspent=''
494 d_setvbuf=''
495 d_sfio=''
496 usesfio=''
497 d_shm=''
498 d_shmat=''
499 d_shmatprototype=''
500 shmattype=''
501 d_shmctl=''
502 d_shmdt=''
503 d_shmget=''
504 d_sigaction=''
505 d_sigsetjmp=''
506 d_msg_ctrunc=''
507 d_msg_dontroute=''
508 d_msg_oob=''
509 d_msg_peek=''
510 d_msg_proxy=''
511 d_oldsock=''
512 d_scm_rights=''
513 d_socket=''
514 d_sockpair=''
515 sockethdr=''
516 socketlib=''
517 d_sqrtl=''
518 d_statblks=''
519 d_statfs_f_flags=''
520 d_statfs_s=''
521 d_fstatvfs=''
522 d_statvfs=''
523 d_stdio_cnt_lval=''
524 d_stdio_ptr_lval=''
525 d_stdiobase=''
526 d_stdstdio=''
527 stdio_base=''
528 stdio_bufsiz=''
529 stdio_cnt=''
530 stdio_filbuf=''
531 stdio_ptr=''
532 d_index=''
533 d_strchr=''
534 d_strcoll=''
535 d_strctcpy=''
536 d_strerrm=''
537 d_strerror=''
538 d_sysernlst=''
539 d_syserrlst=''
540 d_strtod=''
541 d_strtol=''
542 d_strtold=''
543 d_strtoll=''
544 d_strtoul=''
545 d_strtoull=''
546 d_strtouq=''
547 d_strxfrm=''
548 d_symlink=''
549 d_syscall=''
550 d_sysconf=''
551 d_system=''
552 d_tcgetpgrp=''
553 d_tcsetpgrp=''
554 d_telldirproto=''
555 d_time=''
556 timetype=''
557 clocktype=''
558 d_times=''
559 d_truncate=''
560 d_tzname=''
561 d_umask=''
562 d_semctl_semid_ds=''
563 d_semctl_semun=''
564 d_union_semun=''
565 d_ustat=''
566 d_vfork=''
567 usevfork=''
568 d_voidsig=''
569 signal_t=''
570 d_volatile=''
571 d_charvspr=''
572 d_vprintf=''
573 d_wait4=''
574 d_waitpid=''
575 d_wcstombs=''
576 d_wctomb=''
577 dlext=''
578 cccdlflags=''
579 ccdlflags=''
580 dlsrc=''
581 ld=''
582 lddlflags=''
583 usedl=''
584 doublesize=''
585 ebcdic=''
586 fflushNULL=''
587 fflushall=''
588 fpossize=''
589 fpostype=''
590 gidformat=''
591 gidsign=''
592 gidsize=''
593 gidtype=''
594 groupstype=''
595 h_fcntl=''
596 h_sysfile=''
597 i_arpainet=''
598 db_hashtype=''
599 db_prefixtype=''
600 i_db=''
601 i_dbm=''
602 i_rpcsvcdbm=''
603 d_dirnamlen=''
604 direntrytype=''
605 i_dirent=''
606 i_dld=''
607 i_dlfcn=''
608 i_fcntl=''
609 i_float=''
610 i_gdbm=''
611 d_grpasswd=''
612 i_grp=''
613 i_iconv=''
614 i_inttypes=''
615 i_limits=''
616 i_locale=''
617 i_machcthr=''
618 i_malloc=''
619 i_math=''
620 i_memory=''
621 i_mntent=''
622 i_ndbm=''
623 i_netdb=''
624 i_neterrno=''
625 i_netinettcp=''
626 i_niin=''
627 i_sysin=''
628 i_poll=''
629 i_pthread=''
630 d_pwage=''
631 d_pwchange=''
632 d_pwclass=''
633 d_pwcomment=''
634 d_pwexpire=''
635 d_pwgecos=''
636 d_pwpasswd=''
637 d_pwquota=''
638 i_pwd=''
639 i_sfio=''
640 i_shadow=''
641 i_socks=''
642 i_stddef=''
643 i_stdlib=''
644 i_string=''
645 strings=''
646 i_sysaccess=''
647 i_sysdir=''
648 i_sysfile=''
649 d_voidtty=''
650 i_bsdioctl=''
651 i_sysfilio=''
652 i_sysioctl=''
653 i_syssockio=''
654 i_syslog=''
655 i_sysmman=''
656 i_sysmount=''
657 i_sysndir=''
658 i_sysparam=''
659 i_sysresrc=''
660 i_syssecrt=''
661 i_sysselct=''
662 i_sysstat=''
663 i_sysstatfs=''
664 i_sysstatvfs=''
665 i_systimes=''
666 i_systypes=''
667 i_sysuio=''
668 i_sysun=''
669 i_sysvfs=''
670 i_syswait=''
671 i_sgtty=''
672 i_termio=''
673 i_termios=''
674 i_systime=''
675 i_systimek=''
676 i_time=''
677 timeincl=''
678 i_unistd=''
679 i_ustat=''
680 i_utime=''
681 i_values=''
682 i_stdarg=''
683 i_varargs=''
684 i_varhdr=''
685 i_vfork=''
686 inc_version_list=''
687 inc_version_list_init=''
688 installprefix=''
689 installprefixexp=''
690 installstyle=''
691 installusrbinperl=''
692 intsize=''
693 longsize=''
694 shortsize=''
695 d_fpos64_t=''
696 d_off64_t=''
697 libc=''
698 ldlibpthname=''
699 libperl=''
700 shrpenv=''
701 useshrplib=''
702 glibpth=''
703 libpth=''
704 loclibpth=''
705 plibpth=''
706 xlibpth=''
707 ignore_versioned_solibs=''
708 libs=''
709 libsdirs=''
710 libsfiles=''
711 libsfound=''
712 lns=''
713 d_PRIEldbl=''
714 d_PRIFldbl=''
715 d_PRIGldbl=''
716 d_PRIeldbl=''
717 d_PRIfldbl=''
718 d_PRIgldbl=''
719 sPRIEldbl=''
720 sPRIFldbl=''
721 sPRIGldbl=''
722 sPRIeldbl=''
723 sPRIfldbl=''
724 sPRIgldbl=''
725 lseeksize=''
726 lseektype=''
727 make_set_make=''
728 d_mymalloc=''
729 freetype=''
730 mallocobj=''
731 mallocsrc=''
732 malloctype=''
733 usemymalloc=''
734 installman1dir=''
735 man1dir=''
736 man1direxp=''
737 man1ext=''
738 installman3dir=''
739 man3dir=''
740 man3direxp=''
741 man3ext=''
742 huge=''
743 large=''
744 medium=''
745 models=''
746 small=''
747 split=''
748 modetype=''
749 multiarch=''
750 mydomain=''
751 myhostname=''
752 phostname=''
753 c=''
754 n=''
755 d_eofnblk=''
756 eagain=''
757 o_nonblock=''
758 rd_nodata=''
759 netdb_hlen_type=''
760 netdb_host_type=''
761 netdb_name_type=''
762 netdb_net_type=''
763 groupcat=''
764 hostcat=''
765 passcat=''
766 orderlib=''
767 ranlib=''
768 package=''
769 spackage=''
770 pager=''
771 api_revision=''
772 api_subversion=''
773 api_version=''
774 api_versionstring=''
775 patchlevel=''
776 subversion=''
777 version=''
778 perladmin=''
779 perlpath=''
780 d_nv_preserves_uv=''
781 i16size=''
782 i16type=''
783 i32size=''
784 i32type=''
785 i64size=''
786 i64type=''
787 i8size=''
788 i8type=''
789 ivsize=''
790 ivtype=''
791 nvsize=''
792 nvtype=''
793 u16size=''
794 u16type=''
795 u32size=''
796 u32type=''
797 u64size=''
798 u64type=''
799 u8size=''
800 u8type=''
801 uvsize=''
802 uvtype=''
803 ivdformat=''
804 uvoformat=''
805 uvuformat=''
806 uvxformat=''
807 pidtype=''
808 prefix=''
809 prefixexp=''
810 installprivlib=''
811 privlib=''
812 privlibexp=''
813 prototype=''
814 ptrsize=''
815 d_PRIX64=''
816 d_PRId64=''
817 d_PRIi64=''
818 d_PRIo64=''
819 d_PRIu64=''
820 d_PRIx64=''
821 sPRIX64=''
822 sPRId64=''
823 sPRIi64=''
824 sPRIo64=''
825 sPRIu64=''
826 sPRIx64=''
827 d_quad=''
828 quadkind=''
829 quadtype=''
830 uquadtype=''
831 drand01=''
832 randbits=''
833 randfunc=''
834 randseedtype=''
835 seedfunc=''
836 installscript=''
837 scriptdir=''
838 scriptdirexp=''
839 selectminbits=''
840 selecttype=''
841 sh=''
842 sig_count=''
843 sig_name=''
844 sig_name_init=''
845 sig_num=''
846 sig_num_init=''
847 installsitearch=''
848 sitearch=''
849 sitearchexp=''
850 installsitebin=''
851 sitebin=''
852 sitebinexp=''
853 installsitelib=''
854 sitelib=''
855 sitelibexp=''
856 siteprefix=''
857 siteprefixexp=''
858 sizetype=''
859 so=''
860 sharpbang=''
861 shsharp=''
862 spitshell=''
863 src=''
864 ssizetype=''
865 startperl=''
866 startsh=''
867 stdchar=''
868 d_stdio_stream_array=''
869 stdio_stream_array=''
870 sysman=''
871 trnl=''
872 uidformat=''
873 uidsign=''
874 uidsize=''
875 uidtype=''
876 archname64=''
877 use64bits=''
878 uselargefiles=''
879 uselongdouble=''
880 usemorebits=''
881 usemultiplicity=''
882 nm_opt=''
883 nm_so_opt=''
884 runnm=''
885 usenm=''
886 useperlio=''
887 usesocks=''
888 d_oldpthreads=''
889 use5005threads=''
890 useithreads=''
891 usethreads=''
892 incpath=''
893 mips_type=''
894 usrinc=''
895 d_vendorbin=''
896 installvendorbin=''
897 vendorbin=''
898 vendorbinexp=''
899 d_vendorlib=''
900 installvendorlib=''
901 vendorlib=''
902 vendorlibexp=''
903 usevendorprefix=''
904 vendorprefix=''
905 vendorprefixexp=''
906 defvoidused=''
907 voidflags=''
908 pm_apiversion=''
909 xs_apiversion=''
910 CONFIG=''
911
912 define='define'
913 undef='undef'
914 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
915 rmlist=''
916
917 : We must find out about Eunice early
918 eunicefix=':'
919 if test -f /etc/unixtovms; then
920         eunicefix=/etc/unixtovms
921 fi
922 if test -f /etc/unixtovms.exe; then
923         eunicefix=/etc/unixtovms.exe
924 fi
925
926 i_whoami=''
927 : set useposix=false in your hint file to disable the POSIX extension.
928 useposix=true
929 : set useopcode=false in your hint file to disable the Opcode extension.
930 useopcode=true
931 : Trailing extension.  Override this in a hint file, if needed.
932 _exe=''
933 : Extra object files, if any, needed on this platform.
934 archobjs=''
935 : Possible local include directories to search.
936 : Set locincpth to "" in a hint file to defeat local include searches.
937 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
938 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
939 :
940 : no include file wanted by default
941 inclwanted=''
942
943 groupstype=''
944 : change the next line if compiling for Xenix/286 on Xenix/386
945 xlibpth='/usr/lib/386 /lib/386'
946
947 : Possible local library directories to search.
948 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
949 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
950
951 : general looking path for locating libraries
952 glibpth="/usr/lib/large /lib/pa1.1 /lib /usr/lib $xlibpth"
953 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
954 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
955 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
956 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
957
958 : Private path used by Configure to find libraries.  Its value
959 : is prepended to libpth. This variable takes care of special
960 : machines, like the mips.  Usually, it should be empty.
961 plibpth=''
962
963 : default library list
964 libswanted=''
965 : some systems want to use only the non-versioned libso:s
966 ignore_versioned_solibs=''
967 : set usemultiplicity on the Configure command line to enable multiplicity.
968 : set usesocks on the Configure command line to enable socks.
969 : set usethreads on the Configure command line to enable threads.
970 : full support for void wanted by default
971 defvoidused=15
972
973 : List of libraries we want.
974 : If anyone needs -lnet, put it in a hint file.
975 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
976 libswanted="$libswanted dld ld sun m c cposix posix"
977 libswanted="$libswanted ndir dir crypt sec"
978 libswanted="$libswanted ucb bsd BSD PW x"
979 : We probably want to search /usr/shlib before most other libraries.
980 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
981 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
982 glibpth="/usr/shlib $glibpth"
983 : Do not use vfork unless overridden by a hint file.
984 usevfork=false
985
986 : Find the basic shell for Bourne shell scripts
987 case "$sh" in
988 '')
989         case "$SYSTYPE" in
990         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
991         *) xxx='/bin/sh';;
992         esac
993         if test -f "$xxx"; then
994                 sh="$xxx"
995         else
996                 : Build up a list and do a single loop so we can 'break' out.
997                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
998                 for xxx in sh bash ksh pdksh ash; do
999                         for p in $pth; do
1000                                 try="$try ${p}/${xxx}"
1001                         done
1002                 done
1003                 for xxx in $try; do
1004                         if test -f "$xxx"; then
1005                                 sh="$xxx";
1006                                 break
1007                         elif test -f "$xxx.exe"; then
1008                                 sh="$xxx";
1009                                 break
1010                         fi
1011                 done
1012         fi
1013         ;;
1014 esac
1015
1016 case "$sh" in
1017 '')     cat <<EOM >&2
1018 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1019
1020 Usually it's in /bin/sh.  How did you even get this far?
1021 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1022 we'll try to straighten this all out.
1023 EOM
1024         exit 1
1025         ;;
1026 esac
1027
1028 : see if sh knows # comments
1029 if `$sh -c '#' >/dev/null 2>&1`; then
1030         shsharp=true
1031         spitshell=cat
1032         xcat=/bin/cat
1033         test -f $xcat || xcat=/usr/bin/cat
1034         echo "#!$xcat" >try
1035         $eunicefix try
1036         chmod +x try
1037         ./try > today
1038         if test -s today; then
1039                 sharpbang='#!'
1040         else
1041                 echo "#! $xcat" > try
1042                 $eunicefix try
1043                 chmod +x try
1044                 ./try > today
1045                 if test -s today; then
1046                         sharpbang='#! '
1047                 else
1048                         sharpbang=': use '
1049                 fi
1050         fi
1051 else
1052         echo " "
1053         echo "Your $sh doesn't grok # comments--I will strip them later on."
1054         shsharp=false
1055         cd ..
1056         echo "exec grep -v '^[  ]*#'" >spitshell
1057         chmod +x spitshell
1058         $eunicefix spitshell
1059         spitshell=`pwd`/spitshell
1060         cd UU
1061         echo "I presume that if # doesn't work, #! won't work either!"
1062         sharpbang=': use '
1063 fi
1064 rm -f try today
1065
1066 : figure out how to guarantee sh startup
1067 case "$startsh" in
1068 '') startsh=${sharpbang}${sh} ;;
1069 *)
1070 esac
1071 cat >try <<EOSS
1072 $startsh
1073 set abc
1074 test "$?abc" != 1
1075 EOSS
1076
1077 chmod +x try
1078 $eunicefix try
1079 if ./try; then
1080         : echo "Yup, it does."
1081 else
1082         echo "Hmm... '$startsh' does not guarantee sh startup..."
1083         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1084 fi
1085 rm -f try
1086
1087
1088 : Save command line options in file UU/cmdline.opt for later use in
1089 : generating config.sh.
1090 cat > cmdline.opt <<EOSH
1091 # Configure command line arguments.
1092 config_arg0='$0'
1093 config_args='$*'
1094 config_argc=$#
1095 EOSH
1096 argn=1
1097 for arg in "$@"; do
1098         cat >>cmdline.opt <<EOSH
1099 config_arg$argn='$arg'
1100 EOSH
1101         argn=`expr $argn + 1`
1102 done
1103
1104 : produce awk script to parse command line options
1105 cat >options.awk <<'EOF'
1106 BEGIN {
1107         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1108
1109         len = length(optstr);
1110         for (i = 1; i <= len; i++) {
1111                 c = substr(optstr, i, 1);
1112                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1113                 if (a == ":") {
1114                         arg[c] = 1;
1115                         i++;
1116                 }
1117                 opt[c] = 1;
1118         }
1119 }
1120 {
1121         expect = 0;
1122         str = $0;
1123         if (substr(str, 1, 1) != "-") {
1124                 printf("'%s'\n", str);
1125                 next;
1126         }
1127         len = length($0);
1128         for (i = 2; i <= len; i++) {
1129                 c = substr(str, i, 1);
1130                 if (!opt[c]) {
1131                         printf("-%s\n", substr(str, i));
1132                         next;
1133                 }
1134                 printf("-%s\n", c);
1135                 if (arg[c]) {
1136                         if (i < len)
1137                                 printf("'%s'\n", substr(str, i + 1));
1138                         else
1139                                 expect = 1;
1140                         next;
1141                 }
1142         }
1143 }
1144 END {
1145         if (expect)
1146                 print "?";
1147 }
1148 EOF
1149
1150 : process the command line options
1151 set X `for arg in "$@"; do echo "X$arg"; done |
1152         sed -e s/X// | awk -f options.awk`
1153 eval "set $*"
1154 shift
1155 rm -f options.awk
1156
1157 : set up default values
1158 fastread=''
1159 reuseval=false
1160 config_sh=''
1161 alldone=''
1162 error=''
1163 silent=''
1164 extractsh=''
1165 override=''
1166 knowitall=''
1167 rm -f optdef.sh posthint.sh
1168 cat >optdef.sh <<EOS
1169 $startsh
1170 EOS
1171
1172
1173 : option parsing
1174 while test $# -gt 0; do
1175         case "$1" in
1176         -d) shift; fastread=yes;;
1177         -e) shift; alldone=cont;;
1178         -f)
1179                 shift
1180                 cd ..
1181                 if test -r "$1"; then
1182                         config_sh="$1"
1183                 else
1184                         echo "$me: cannot read config file $1." >&2
1185                         error=true
1186                 fi
1187                 cd UU
1188                 shift;;
1189         -h) shift; error=true;;
1190         -r) shift; reuseval=true;;
1191         -s) shift; silent=true; realsilent=true;;
1192         -E) shift; alldone=exit;;
1193         -K) shift; knowitall=true;;
1194         -O) shift; override=true;;
1195         -S) shift; silent=true; extractsh=true;;
1196         -D)
1197                 shift
1198                 case "$1" in
1199                 *=)
1200                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1201                         echo "$me: ignoring -D $1" >&2
1202                         ;;
1203                 *=*) echo "$1" | \
1204                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1205                 *) echo "$1='define'" >> optdef.sh;;
1206                 esac
1207                 shift
1208                 ;;
1209         -U)
1210                 shift
1211                 case "$1" in
1212                 *=) echo "$1" >> optdef.sh;;
1213                 *=*)
1214                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1215                         echo "$me: ignoring -U $1" >&2
1216                         ;;
1217                 *) echo "$1='undef'" >> optdef.sh;;
1218                 esac
1219                 shift
1220                 ;;
1221         -A)
1222             shift
1223             xxx=''
1224             yyy="$1"
1225             zzz=''
1226             uuu=undef
1227             case "$yyy" in
1228             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1229                  case "$zzz" in
1230                  *:*) zzz='' ;;
1231                  *)   xxx=append
1232                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1233                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1234                  esac
1235                  ;;
1236             esac
1237             case "$xxx" in
1238             '')  case "$yyy" in
1239                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1240                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1241                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1242                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1243                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1244                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1245                  esac
1246                  ;;       
1247             esac
1248             case "$xxx" in
1249             append)
1250                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1251             clear)
1252                 echo "$yyy=''"                  >> posthint.sh ;;
1253             define)
1254                 case "$zzz" in
1255                 '') zzz=define ;;
1256                 esac
1257                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1258             eval)
1259                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1260             prepend)
1261                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1262             undef)
1263                 case "$zzz" in
1264                 '') zzz="$uuu" ;;
1265                 esac
1266                 echo "$yyy=$zzz"                >> posthint.sh ;;
1267             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1268             esac
1269             shift
1270             ;;
1271         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1272             exit 0;;
1273         --) break;;
1274         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1275         *) break;;
1276         esac
1277 done
1278
1279 case "$error" in
1280 true)
1281         cat >&2 <<EOM
1282 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1283                  [-U symbol] [-U symbol=] [-A command:symbol...]
1284   -d : use defaults for all answers.
1285   -e : go on without questioning past the production of config.sh.
1286   -f : specify an alternate default configuration file.
1287   -h : print this help message and exit (with an error status).
1288   -r : reuse C symbols value if possible (skips costly nm extraction).
1289   -s : silent mode, only echoes questions and essential information.
1290   -D : define symbol to have some value:
1291          -D symbol         symbol gets the value 'define'
1292          -D symbol=value   symbol gets the value 'value'
1293   -E : stop at the end of questions, after having produced config.sh.
1294   -K : do not use unless you know what you are doing.
1295   -O : let -D and -U override definitions from loaded configuration file.
1296   -S : perform variable substitutions on all .SH files (can mix with -f)
1297   -U : undefine symbol:
1298          -U symbol    symbol gets the value 'undef'
1299          -U symbol=   symbol gets completely empty
1300   -A : manipulate symbol after the platform specific hints have been applied:
1301          -A symbol=value                append " "value to symbol
1302          -A append:symbol=value         append value to symbol
1303          -A define:symbol=value         define symbol to have value
1304          -A clear:symbol                define symbol to be ''
1305          -A define:symbol               define symbol to be 'define'
1306          -A eval:symbol=value           define symbol to be eval of value
1307          -A prepend:symbol=value        prepend value to symbol
1308          -A undef:symbol                define symbol to be 'undef'
1309          -A undef:symbol=               define symbol to be ''
1310   -V : print version number and exit (with a zero status).
1311 EOM
1312         exit 1
1313         ;;
1314 esac
1315
1316 : Sanity checks
1317 case "$fastread$alldone" in
1318 yescont|yesexit) ;;
1319 *)
1320         if test ! -t 0; then
1321                 echo "Say 'sh Configure', not 'sh <Configure'"
1322                 exit 1
1323         fi
1324         ;;
1325 esac
1326
1327 exec 4>&1
1328 case "$silent" in
1329 true) exec 1>/dev/null;;
1330 esac
1331
1332 : run the defines and the undefines, if any, but leave the file out there...
1333 touch optdef.sh
1334 . ./optdef.sh
1335 : create the posthint manipulation script and leave the file out there...
1336 touch posthint.sh
1337
1338 : set package name
1339 package=perl5
1340 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1341 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1342 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1343 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1344 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1345 esac
1346
1347 : Some greps do not return status, grrr.
1348 echo "grimblepritz" >grimble
1349 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1350         contains=contains
1351 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1352         contains=grep
1353 else
1354         contains=contains
1355 fi
1356 rm -f grimble
1357 : the following should work in any shell
1358 case "$contains" in
1359 contains*)
1360         echo " "
1361         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1362         cat >contains <<'EOSS'
1363 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1364 EOSS
1365 chmod +x contains
1366 esac
1367
1368 : Find the path to the source tree
1369 case "$src" in
1370 '') case "$0" in
1371     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1372          case "$src" in
1373          /*)    ;;
1374          *)     src=`cd ../$src && pwd` ;;
1375          esac
1376          ;;
1377     *)   src='.';;
1378     esac;;
1379 esac
1380 case "$src" in
1381 '')     src=/
1382         rsrc=/
1383         ;;
1384 /*) rsrc="$src";;
1385 *) rsrc="../$src";;
1386 esac
1387 if test -f $rsrc/Configure && \
1388         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1389 then
1390    : found it, so we are ok.
1391 else
1392         rsrc=''
1393         for src in . .. ../.. ../../.. ../../../..; do
1394                 if test -f ../$src/Configure && \
1395                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1396                 then
1397                         rsrc=../$src
1398                         break
1399                 fi
1400         done
1401 fi
1402 case "$rsrc" in
1403 '')
1404         cat <<EOM >&4
1405
1406 Sorry, I can't seem to locate the source dir for $package.  Please start
1407 Configure with an explicit path -- i.e. /some/path/Configure.
1408
1409 EOM
1410         exit 1
1411         ;;
1412 ../.)   rsrc='..';;
1413 *)
1414         echo " "
1415         echo "Sources for $package found in \"$src\"." >&4
1416         ;;
1417 esac
1418
1419 : script used to extract .SH files with variable substitutions
1420 cat >extract <<'EOS'
1421 CONFIGDOTSH=true
1422 echo "Doing variable substitutions on .SH files..."
1423 if test -f $src/MANIFEST; then
1424         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1425 else
1426         echo "(Looking for .SH files under the source directory.)"
1427         set x `(cd $src; find . -name "*.SH" -print)`
1428 fi
1429 shift
1430 case $# in
1431 0) set x `(cd $src; echo *.SH)`; shift;;
1432 esac
1433 if test ! -f $src/$1; then
1434         shift
1435 fi
1436 mkdir_p='
1437 name=$1;
1438 create="";
1439 while test $name; do
1440         if test ! -d "$name"; then
1441                 create="$name $create";
1442                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1443                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1444         else
1445                 name="";
1446         fi;
1447 done;
1448 for file in $create; do
1449         mkdir $file;
1450 done
1451 '
1452 for file in $*; do
1453         case "$src" in
1454         ".")
1455                 case "$file" in
1456                 */*)
1457                         dir=`expr X$file : 'X\(.*\)/'`
1458                         file=`expr X$file : 'X.*/\(.*\)'`
1459                         (cd $dir && . ./$file)
1460                         ;;
1461                 *)
1462                         . ./$file
1463                         ;;
1464                 esac
1465                 ;;
1466         *)
1467                 case "$file" in
1468                 */*)
1469                         dir=`expr X$file : 'X\(.*\)/'`
1470                         file=`expr X$file : 'X.*/\(.*\)'`
1471                         (set x $dir; shift; eval $mkdir_p)
1472                         sh <$src/$dir/$file
1473                         ;;
1474                 *)
1475                         sh <$src/$file
1476                         ;;
1477                 esac
1478                 ;;
1479         esac
1480 done
1481 if test -f $src/config_h.SH; then
1482         if test ! -f config.h; then
1483         : oops, they left it out of MANIFEST, probably, so do it anyway.
1484         . $src/config_h.SH
1485         fi
1486 fi
1487 EOS
1488
1489 : extract files and exit if asked to do so
1490 case "$extractsh" in
1491 true)
1492         case "$realsilent" in
1493         true) ;;
1494         *) exec 1>&4;;
1495         esac
1496         case "$config_sh" in
1497         '') config_sh='config.sh';;
1498         esac
1499         echo " "
1500         echo "Fetching answers from $config_sh..."
1501         cd ..
1502         . $config_sh
1503         test "$override" && . ./optdef.sh
1504         echo " "
1505         . UU/extract
1506         rm -rf UU
1507         echo "Done."
1508         exit 0
1509         ;;
1510 esac
1511
1512 : Eunice requires " " instead of "", can you believe it
1513 echo " "
1514 : Here we go...
1515 echo "Beginning of configuration questions for $package."
1516
1517 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1518
1519 : first determine how to suppress newline on echo command
1520 echo " "
1521 echo "Checking echo to see how to suppress newlines..."
1522 (echo "hi there\c" ; echo " ") >.echotmp
1523 if $contains c .echotmp >/dev/null 2>&1 ; then
1524         echo "...using -n."
1525         n='-n'
1526         c=''
1527 else
1528         cat <<'EOM'
1529 ...using \c
1530 EOM
1531         n=''
1532         c='\c'
1533 fi
1534 echo $n "The star should be here-->$c"
1535 echo '*'
1536 rm -f .echotmp
1537
1538 : Now test for existence of everything in MANIFEST
1539 echo " "
1540 if test -f $rsrc/MANIFEST; then
1541         echo "First let's make sure your kit is complete.  Checking..." >&4
1542         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1543         rm -f missing
1544         tmppwd=`pwd`
1545         for filelist in x??; do
1546                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1547         done
1548         if test -s missing; then
1549                 cat missing >&4
1550                 cat >&4 <<'EOM'
1551
1552 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1553
1554 You have the option of continuing the configuration process, despite the
1555 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1556 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1557 and contact the author (perlbug@perl.com).
1558
1559 EOM
1560                 echo $n "Continue? [n] $c" >&4
1561                 read ans
1562                 case "$ans" in
1563                 y*)
1564                         echo "Continuing..." >&4
1565                         rm -f missing
1566                         ;;
1567                 *)
1568                         echo "ABORTING..." >&4
1569                         kill $$
1570                         ;;
1571                 esac
1572         else
1573                 echo "Looks good..."
1574         fi
1575 else
1576         echo "There is no MANIFEST file.  I hope your kit is complete !"
1577 fi
1578 rm -f missing x??
1579
1580 echo " "
1581 : Find the appropriate value for a newline for tr
1582 if test -n "$DJGPP"; then
1583        trnl='\012'
1584 fi
1585 if test X"$trnl" = X; then
1586         case "`echo foo|tr '\n' x 2>/dev/null`" in
1587         foox) trnl='\n' ;;
1588         esac
1589 fi
1590 if test X"$trnl" = X; then
1591         case "`echo foo|tr '\012' x 2>/dev/null`" in
1592         foox) trnl='\012' ;;
1593         esac
1594 fi
1595 if test X"$trnl" = X; then
1596         cat <<EOM >&2
1597
1598 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1599
1600 EOM
1601         exit 1
1602 fi
1603
1604 : compute the number of columns on the terminal for proper question formatting
1605 case "$COLUMNS" in
1606 '') COLUMNS='80';;
1607 esac
1608
1609 : set up the echo used in my read
1610 myecho="case \"\$xxxm\" in
1611 '') echo $n \"\$rp $c\" >&4;;
1612 *) case \"\$rp\" in
1613         '') echo $n \"[\$xxxm] $c\";;
1614         *)
1615                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1616                         echo \"\$rp\" >&4
1617                         echo $n \"[\$xxxm] $c\" >&4
1618                 else
1619                         echo $n \"\$rp [\$xxxm] $c\" >&4
1620                 fi
1621                 ;;
1622         esac;;
1623 esac"
1624
1625 : now set up to do reads with possible shell escape and default assignment
1626 cat <<EOSC >myread
1627 $startsh
1628 xxxm=\$dflt
1629 $myecho
1630 ans='!'
1631 case "\$fastread" in
1632 yes) case "\$dflt" in
1633         '') ;;
1634         *) ans='';
1635                 case "\$silent-\$rp" in
1636                 true-) ;;
1637                 *) echo " " >&4;;
1638                 esac;;
1639         esac;;
1640 *) case "\$silent" in
1641         true) case "\$rp" in
1642                 '') ans='';;
1643                 esac;;
1644         esac;;
1645 esac
1646 while expr "X\$ans" : "X!" >/dev/null; do
1647         read answ
1648         set x \$xxxm
1649         shift
1650         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1651         case  "\$answ" in
1652         "!")
1653                 sh 1>&4
1654                 echo " "
1655                 $myecho
1656                 ;;
1657         !*)
1658                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1659                 shift
1660                 sh 1>&4 -c "\$*"
1661                 echo " "
1662                 $myecho
1663                 ;;
1664         "\$ans")
1665                 case "\$ans" in
1666                 \\&*)
1667                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1668                         shift
1669                         case "\$1" in
1670                         -d)
1671                                 fastread=yes
1672                                 echo "(OK, I'll run with -d after this question.)" >&4
1673                                 ;;
1674                         -*)
1675                                 echo "*** Sorry, \$1 not supported yet." >&4
1676                                 ;;
1677                         esac
1678                         $myecho
1679                         ans=!
1680                         ;;
1681                 esac;;
1682         *)
1683                 case "\$aok" in
1684                 y)
1685                         echo "*** Substitution done -- please confirm."
1686                         xxxm="\$ans"
1687                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1688                         xxxm="\$ans"
1689                         ans=!
1690                         ;;
1691                 *)
1692                         echo "*** Error -- try again."
1693                         ans=!
1694                         ;;
1695                 esac
1696                 $myecho
1697                 ;;
1698         esac
1699         case "\$ans\$xxxm\$nostick" in
1700         '')
1701                 ans=!
1702                 $myecho
1703                 ;;
1704         esac
1705 done
1706 case "\$ans" in
1707 '') ans="\$xxxm";;
1708 esac
1709 EOSC
1710
1711 : create .config dir to save info across Configure sessions
1712 test -d ../.config || mkdir ../.config
1713 cat >../.config/README <<EOF
1714 This directory created by Configure to save information that should
1715 persist across sessions for $package.
1716
1717 You may safely delete it if you wish.
1718 EOF
1719
1720 : general instructions
1721 needman=true
1722 firsttime=true
1723 user=`(logname) 2>/dev/null`
1724 case "$user" in
1725 '') user=`whoami 2>&1`;;
1726 esac
1727 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1728         firsttime=false
1729         echo " "
1730         rp='Would you like to see the instructions?'
1731         dflt=n
1732         . ./myread
1733         case "$ans" in
1734         [yY]*) ;;
1735         *) needman=false;;
1736         esac
1737 fi
1738 if $needman; then
1739         cat <<EOH
1740
1741 This installation shell script will examine your system and ask you questions
1742 to determine how the perl5 package should be installed. If you get
1743 stuck on a question, you may use a ! shell escape to start a subshell or
1744 execute a command.  Many of the questions will have default answers in square
1745 brackets; typing carriage return will give you the default.
1746
1747 On some of the questions which ask for file or directory names you are allowed
1748 to use the ~name construct to specify the login directory belonging to "name",
1749 even if you don't have a shell which knows about that.  Questions where this is
1750 allowed will be marked "(~name ok)".
1751
1752 EOH
1753         rp=''
1754         dflt='Type carriage return to continue'
1755         . ./myread
1756         cat <<'EOH'
1757
1758 The prompter used in this script allows you to use shell variables and
1759 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1760 in the default answer, as if the default line was a set of arguments given to a
1761 script shell.  This means you may also use $* to repeat the whole default line,
1762 so you do not have to re-type everything to add something to the default.
1763
1764 Everytime there is a substitution, you will have to confirm.  If there is an
1765 error (e.g. an unmatched backtick), the default answer will remain unchanged
1766 and you will be prompted again.
1767
1768 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1769 the questions and use the computed defaults (or the previous answers if there
1770 was already a config.sh file). Type 'Configure -h' for a list of options.
1771 You may also start interactively and then answer '& -d' at any prompt to turn
1772 on the non-interactive behaviour for the remainder of the execution.
1773
1774 EOH
1775         . ./myread
1776         cat <<EOH
1777
1778 Much effort has been expended to ensure that this shell script will run on any
1779 Unix system.  If despite that it blows up on yours, your best bet is to edit
1780 Configure and run it again.  If you can't run Configure for some reason,
1781 you'll have to generate a config.sh file by hand.  Whatever problems you
1782 have, let me (perlbug@perl.com) know how I blew it.
1783
1784 This installation script affects things in two ways:
1785
1786 1) it may do direct variable substitutions on some of the files included
1787    in this kit.
1788 2) it builds a config.h file for inclusion in C programs.  You may edit
1789    any of these files as the need arises after running this script.
1790
1791 If you make a mistake on a question, there is no easy way to back up to it
1792 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1793 files.  Configure will offer to let you do this before it runs the SH files.
1794
1795 EOH
1796         dflt='Type carriage return to continue'
1797         . ./myread
1798         case "$firsttime" in
1799         true) echo $user >>../.config/instruct;;
1800         esac
1801 fi
1802
1803 : find out where common programs are
1804 echo " "
1805 echo "Locating common programs..." >&4
1806 cat <<EOSC >loc
1807 $startsh
1808 case \$# in
1809 0) exit 1;;
1810 esac
1811 thing=\$1
1812 shift
1813 dflt=\$1
1814 shift
1815 for dir in \$*; do
1816         case "\$thing" in
1817         .)
1818         if test -d \$dir/\$thing; then
1819                 echo \$dir
1820                 exit 0
1821         fi
1822         ;;
1823         *)
1824         for thisthing in \$dir/\$thing; do
1825                 : just loop through to pick last item
1826         done
1827         if test -f \$thisthing; then
1828                 echo \$thisthing
1829                 exit 0
1830         elif test -f \$dir/\$thing.exe; then
1831                 if test -n "$DJGPP"; then
1832                         echo \$dir/\$thing.exe
1833                 else
1834                         : on Eunice apparently
1835                         echo \$dir/\$thing
1836                 fi
1837                 exit 0
1838         fi
1839         ;;
1840         esac
1841 done
1842 echo \$dflt
1843 exit 1
1844 EOSC
1845 chmod +x loc
1846 $eunicefix loc
1847 loclist="
1848 awk
1849 cat
1850 comm
1851 cp
1852 echo
1853 expr
1854 grep
1855 ls
1856 make
1857 mkdir
1858 rm
1859 sed
1860 sort
1861 touch
1862 tr
1863 uniq
1864 "
1865 trylist="
1866 Mcc
1867 ar
1868 byacc
1869 cpp
1870 csh
1871 date
1872 egrep
1873 gzip
1874 less
1875 ln
1876 more
1877 nm
1878 nroff
1879 perl
1880 pg
1881 test
1882 uname
1883 zip
1884 "
1885 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1886 pth="$pth /lib /usr/lib"
1887 for file in $loclist; do
1888         eval xxx=\$$file
1889         case "$xxx" in
1890         /*|?:[\\/]*)
1891                 if test -f "$xxx"; then
1892                         : ok
1893                 else
1894                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1895                         xxx=`./loc $file $file $pth`
1896                 fi
1897                 ;;
1898         '') xxx=`./loc $file $file $pth`;;
1899         *) xxx=`./loc $xxx $xxx $pth`;;
1900         esac
1901         eval $file=$xxx
1902         eval _$file=$xxx
1903         case "$xxx" in
1904         /*)
1905                 echo $file is in $xxx.
1906                 ;;
1907         ?:[\\/]*)
1908                 echo $file is in $xxx.
1909                 ;;
1910         *)
1911                 echo "I don't know where '$file' is, and my life depends on it." >&4
1912                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1913                 exit 1
1914                 ;;
1915         esac
1916 done
1917 echo " "
1918 echo "Don't worry if any of the following aren't found..."
1919 say=offhand
1920 for file in $trylist; do
1921         eval xxx=\$$file
1922         case "$xxx" in
1923         /*|?:[\\/]*)
1924                 if test -f "$xxx"; then
1925                         : ok
1926                 else
1927                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1928                         xxx=`./loc $file $file $pth`
1929                 fi
1930                 ;;
1931         '') xxx=`./loc $file $file $pth`;;
1932         *) xxx=`./loc $xxx $xxx $pth`;;
1933         esac
1934         eval $file=$xxx
1935         eval _$file=$xxx
1936         case "$xxx" in
1937         /*)
1938                 echo $file is in $xxx.
1939                 ;;
1940         ?:[\\/]*)
1941                 echo $file is in $xxx.
1942                 ;;
1943         *)
1944                 echo "I don't see $file out there, $say."
1945                 say=either
1946                 ;;
1947         esac
1948 done
1949 case "$egrep" in
1950 egrep)
1951         echo "Substituting grep for egrep."
1952         egrep=$grep
1953         ;;
1954 esac
1955 case "$ln" in
1956 ln)
1957         echo "Substituting cp for ln."
1958         ln=$cp
1959         ;;
1960 esac
1961 case "$test" in
1962 test)
1963         echo "Hopefully test is built into your sh."
1964         ;;
1965 *)
1966         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1967                 echo "Using the test built into your sh."
1968                 test=test
1969                 _test=test
1970         fi
1971         ;;
1972 esac
1973 case "$echo" in
1974 echo)
1975         echo "Hopefully echo is built into your sh."
1976         ;;
1977 '') ;;
1978 *)
1979         echo " "
1980 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1981         $echo $n "hi there$c" >foo1
1982         echo $n "hi there$c" >foo2
1983         if cmp foo1 foo2 >/dev/null 2>&1; then
1984                 echo "They are compatible.  In fact, they may be identical."
1985         else
1986                 case "$n" in
1987                 '-n') n='' c='\c';;
1988                 *) n='-n' c='';;
1989                 esac
1990                 cat <<FOO
1991 They are not compatible!  You are probably running ksh on a non-USG system.
1992 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1993 have echo built in and we may have to run some Bourne shell scripts.  That
1994 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1995
1996 FOO
1997                 $echo $n "The star should be here-->$c"
1998                 $echo "*"
1999         fi
2000         $rm -f foo1 foo2
2001         ;;
2002 esac
2003
2004 : determine whether symbolic links are supported
2005 echo " "
2006 $touch blurfl
2007 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2008         echo "Symbolic links are supported." >&4
2009         lns="$ln -s"
2010 else
2011         echo "Symbolic links are NOT supported." >&4
2012         lns="$ln"
2013 fi
2014 $rm -f blurfl sym
2015
2016 : see whether [:lower:] and [:upper:] are supported character classes
2017 echo " "
2018 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2019 ABYZ)
2020         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2021         up='[:upper:]'
2022         low='[:lower:]'
2023         ;;
2024 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2025         # (0xc9 and 0xd1), therefore that is a nice testing point.
2026         if test "X$up" = X -o "X$low" = X; then
2027             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2028             ij) up='[A-Z]'
2029                 low='[a-z]'
2030                 ;;
2031             esac
2032         fi
2033         if test "X$up" = X -o "X$low" = X; then
2034             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2035             ij) up='A-Z'
2036                 low='a-z'
2037                 ;;
2038             esac
2039         fi
2040         if test "X$up" = X -o "X$low" = X; then
2041             case "`echo IJ | od -x 2>/dev/null`" in
2042             *C9D1*|*c9d1*)
2043                 echo "Hey, this might be EBCDIC." >&4
2044                 if test "X$up" = X -o "X$low" = X; then
2045                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2046                     ij) up='[A-IJ-RS-Z]'
2047                         low='[a-ij-rs-z]'
2048                         ;;
2049                     esac
2050                 fi
2051                 if test "X$up" = X -o "X$low" = X; then
2052                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2053                     ij) up='A-IJ-RS-Z'
2054                         low='a-ij-rs-z'
2055                         ;;
2056                     esac
2057                 fi
2058                 ;;
2059             esac
2060         fi
2061 esac
2062 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2063 ij)
2064     echo "Using $up and $low to convert case." >&4
2065     ;;
2066 *)
2067     echo "I don't know how to translate letters from upper to lower case." >&4
2068     echo "Your tr is not acting any way I know of." >&4
2069     exit 1
2070     ;;
2071 esac
2072 : set up the translation script tr, must be called with ./tr of course
2073 cat >tr <<EOSC
2074 $startsh
2075 case "\$1\$2" in
2076 '[A-Z][a-z]') exec $tr '$up' '$low';;
2077 '[a-z][A-Z]') exec $tr '$low' '$up';;
2078 esac
2079 exec $tr "\$@"
2080 EOSC
2081 chmod +x tr
2082 $eunicefix tr
2083
2084 : Try to determine whether config.sh was made on this system
2085 case "$config_sh" in
2086 '')
2087 myuname=`$uname -a 2>/dev/null`
2088 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2089 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2090 # because the A-Z/a-z are not consecutive.
2091 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2092         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2093 newmyuname="$myuname"
2094 dflt=n
2095 case "$knowitall" in
2096 '')
2097         if test -f ../config.sh; then
2098                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2099                         eval "`grep myuname= ../config.sh`"
2100                 fi
2101                 if test "X$myuname" = "X$newmyuname"; then
2102                         dflt=y
2103                 fi
2104         fi
2105         ;;
2106 *) dflt=y;;
2107 esac
2108
2109 : Get old answers from old config file if Configure was run on the
2110 : same system, otherwise use the hints.
2111 hint=default
2112 cd ..
2113 if test -f config.sh; then
2114         echo " "
2115         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2116         . UU/myread
2117         case "$ans" in
2118         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2119         *)  echo "Fetching default answers from your old config.sh file..." >&4
2120                 tmp_n="$n"
2121                 tmp_c="$c"
2122                 tmp_sh="$sh"
2123                 . ./config.sh
2124                 cp config.sh UU
2125                 n="$tmp_n"
2126                 c="$tmp_c"
2127                 : Older versions did not always set $sh.  Catch re-use of such
2128                 : an old config.sh.
2129                 case "$sh" in
2130                 '') sh="$tmp_sh" ;;
2131                 esac
2132                 hint=previous
2133                 ;;
2134         esac
2135 fi
2136 if test ! -f config.sh; then
2137         $cat <<EOM
2138
2139 First time through, eh?  I have some defaults handy for some systems
2140 that need some extra help getting the Configure answers right:
2141
2142 EOM
2143         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2144         dflt=''
2145         : Half the following guesses are probably wrong... If you have better
2146         : tests or hints, please send them to perlbug@perl.com
2147         : The metaconfig authors would also appreciate a copy...
2148         $test -f /irix && osname=irix
2149         $test -f /xenix && osname=sco_xenix
2150         $test -f /dynix && osname=dynix
2151         $test -f /dnix && osname=dnix
2152         $test -f /lynx.os && osname=lynxos
2153         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2154         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2155         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2156         $test -f /bin/mips && /bin/mips && osname=mips
2157         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2158                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2159         $test -d /usr/apollo/bin && osname=apollo
2160         $test -f /etc/saf/_sactab && osname=svr4
2161         $test -d /usr/include/minix && osname=minix
2162         if $test -d /MachTen -o -d /MachTen_Folder; then
2163                 osname=machten
2164                 if $test -x /sbin/version; then
2165                         osvers=`/sbin/version | $awk '{print $2}' |
2166                         $sed -e 's/[A-Za-z]$//'`
2167                 elif $test -x /usr/etc/version; then
2168                         osvers=`/usr/etc/version | $awk '{print $2}' |
2169                         $sed -e 's/[A-Za-z]$//'`
2170                 else
2171                         osvers="$2.$3"
2172                 fi
2173         fi
2174
2175         $test -f /sys/posix.dll &&
2176                 $test -f /usr/bin/what &&
2177                 set X `/usr/bin/what /sys/posix.dll` &&
2178                 $test "$3" = UWIN &&
2179                 osname=uwin &&
2180                 osvers="$5"
2181
2182         if $test -f $uname; then
2183                 set X $myuname
2184                 shift
2185
2186                 case "$5" in
2187                 fps*) osname=fps ;;
2188                 mips*)
2189                         case "$4" in
2190                         umips) osname=umips ;;
2191                         *) osname=mips ;;
2192                         esac;;
2193                 [23]100) osname=mips ;;
2194                 next*) osname=next ;;
2195                 i386*)
2196                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2197                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2198                                 osname='sco'
2199                                 osvers=$tmp
2200                         elif $test -f /etc/kconfig; then
2201                                 osname=isc
2202                                 if test "$lns" = "$ln -s"; then
2203                                         osvers=4
2204                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2205                                         osvers=3
2206                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2207                                         osvers=2
2208                                 fi
2209                         fi
2210                         tmp=''
2211                         ;;
2212                 pc*)
2213                         if test -n "$DJGPP"; then
2214                                 osname=dos
2215                                 osvers=djgpp
2216                         fi
2217                         ;;
2218                 esac
2219
2220                 case "$1" in
2221                 aix) osname=aix
2222                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2223                         case "$tmp" in
2224                         'not found') osvers="$4"."$3" ;;
2225                         '<3240'|'<>3240') osvers=3.2.0 ;;
2226                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2227                         '=3250'|'>3250') osvers=3.2.5 ;;
2228                         *) osvers=$tmp;;
2229                         esac
2230                         ;;
2231                 bsd386) osname=bsd386
2232                         osvers=`$uname -r`
2233                         ;;
2234                 cygwin*) osname=cygwin
2235                         osvers="$3"
2236                         ;;
2237                 *dc.osx) osname=dcosx
2238                         osvers="$3"
2239                         ;;
2240                 dnix) osname=dnix
2241                         osvers="$3"
2242                         ;;
2243                 domainos) osname=apollo
2244                         osvers="$3"
2245                         ;;
2246                 dgux) osname=dgux 
2247                         osvers="$3"
2248                         ;;
2249                 dynixptx*) osname=dynixptx
2250                         osvers=`echo "$4"|sed 's/^v//'`
2251                         ;;
2252                 freebsd) osname=freebsd 
2253                         osvers="$3" ;;
2254                 genix) osname=genix ;;
2255                 hp*) osname=hpux 
2256                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2257                         ;;
2258                 irix*) osname=irix
2259                         case "$3" in
2260                         4*) osvers=4 ;;
2261                         5*) osvers=5 ;;
2262                         *)      osvers="$3" ;;
2263                         esac
2264                         ;;
2265                 linux) osname=linux
2266                         case "$3" in
2267                         *)      osvers="$3" ;;
2268                         esac
2269                         ;;
2270                 MiNT) osname=mint
2271                         ;;
2272                 netbsd*) osname=netbsd
2273                         osvers="$3"
2274                         ;;
2275                 news-os) osvers="$3"
2276                         case "$3" in
2277                         4*) osname=newsos4 ;;
2278                         *) osname=newsos ;;
2279                         esac
2280                         ;;
2281                 next*) osname=next ;;
2282                 POSIX-BC | posix-bc ) osname=posix-bc
2283                         osvers="$3"
2284                         ;;
2285                 powerux | power_ux | powermax_os | powermaxos | \
2286                 powerunix | power_unix) osname=powerux
2287                         osvers="$3"
2288                         ;;
2289                 qnx) osname=qnx
2290                         osvers="$4"
2291                         ;;
2292                 solaris) osname=solaris
2293                         case "$3" in
2294                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2295                         *)      osvers="$3" ;;
2296                         esac
2297                         ;;
2298                 sunos) osname=sunos
2299                         case "$3" in
2300                         5*) osname=solaris
2301                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2302                         *)      osvers="$3" ;;
2303                         esac
2304                         ;;
2305                 titanos) osname=titanos
2306                         case "$3" in
2307                         1*) osvers=1 ;;
2308                         2*) osvers=2 ;;
2309                         3*) osvers=3 ;;
2310                         4*) osvers=4 ;;
2311                         *)      osvers="$3" ;;
2312                         esac
2313                         ;;
2314                 ultrix) osname=ultrix
2315                         osvers="$3"
2316                         ;;
2317                 osf1|mls+)      case "$5" in
2318                                 alpha)
2319                                         osname=dec_osf
2320                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2321                                         ;;
2322                         hp*)    osname=hp_osf1  ;;
2323                         mips)   osname=mips_osf1 ;;
2324                         esac
2325                         ;;
2326                 unixware) osname=svr5
2327                         osvers="$4"
2328                         ;;
2329                 uts) osname=uts
2330                         osvers="$3"
2331                         ;;
2332                 $2) case "$osname" in
2333                         *isc*) ;;
2334                         *freebsd*) ;;
2335                         svr*)
2336                                 : svr4.x or possibly later
2337                                 case "svr$3" in 
2338                                 ${osname}*)
2339                                         osname=svr$3
2340                                         osvers=$4
2341                                         ;;
2342                                 esac
2343                                 case "$osname" in
2344                                 svr4.0)
2345                                         : Check for ESIX
2346                                         if test -f /stand/boot ; then
2347                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2348                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2349                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2350                                                         if test -n "$isesix"; then
2351                                                                 osname=esix4
2352                                                         fi
2353                                                 fi
2354                                         fi
2355                                         ;;
2356                                 esac
2357                                 ;;
2358                         *)      if test -f /etc/systemid; then
2359                                         osname=sco
2360                                         set `echo $3 | $sed 's/\./ /g'` $4
2361                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2362                                                 osvers=$1.$2.$3
2363                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2364                                                 osvers=$1.$2
2365                                         elif $test -f $src/hints/sco_$1.sh; then
2366                                                 osvers=$1
2367                                         fi
2368                                 else
2369                                         case "$osname" in
2370                                         '') : Still unknown.  Probably a generic Sys V.
2371                                                 osname="sysv"
2372                                                 osvers="$3"
2373                                                 ;;
2374                                         esac
2375                                 fi
2376                                 ;;
2377                         esac
2378                         ;;
2379                 *)      case "$osname" in
2380                         '') : Still unknown.  Probably a generic BSD.
2381                                 osname="$1"
2382                                 osvers="$3"
2383                                 ;;
2384                         esac
2385                         ;;
2386                 esac
2387         else
2388                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2389                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2390                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2391                                 osname=news_os
2392                         fi
2393                         $rm -f UU/kernel.what
2394                 elif test -d c:/.; then
2395                         set X $myuname
2396                         osname=os2
2397                         osvers="$5"
2398                 fi
2399         fi
2400         
2401         : Now look for a hint file osname_osvers, unless one has been
2402         : specified already.
2403         case "$hintfile" in
2404         ''|' ')
2405                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2406                 : Also try without trailing minor version numbers.
2407                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2408                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2409                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2410                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2411                 case "$file" in
2412                 '') dflt=none ;;
2413                 *)  case "$osvers" in
2414                         '') dflt=$file
2415                                 ;;
2416                         *)  if $test -f $src/hints/$file.sh ; then
2417                                         dflt=$file
2418                                 elif $test -f $src/hints/$xfile.sh ; then
2419                                         dflt=$xfile
2420                                 elif $test -f $src/hints/$xxfile.sh ; then
2421                                         dflt=$xxfile
2422                                 elif $test -f $src/hints/$xxxfile.sh ; then
2423                                         dflt=$xxxfile
2424                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2425                                         dflt=$xxxxfile
2426                                 elif $test -f "$src/hints/${osname}.sh" ; then
2427                                         dflt="${osname}"
2428                                 else
2429                                         dflt=none
2430                                 fi
2431                                 ;;
2432                         esac
2433                         ;;
2434                 esac
2435                 if $test -f Policy.sh ; then
2436                         case "$dflt" in
2437                         *Policy*) ;;
2438                         none) dflt="Policy" ;;
2439                         *) dflt="Policy $dflt" ;;
2440                         esac
2441                 fi
2442                 ;;
2443         *)
2444                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2445                 ;;
2446         esac
2447
2448         if $test -f Policy.sh ; then
2449                 $cat <<EOM
2450
2451 There's also a Policy hint file available, which should make the
2452 site-specific (policy) questions easier to answer.
2453 EOM
2454
2455         fi
2456
2457         $cat <<EOM
2458
2459 You may give one or more space-separated answers, or "none" if appropriate.
2460 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2461 is a good thing.  DO NOT give a wrong version or a wrong OS.
2462
2463 EOM
2464
2465         rp="Which of these apply, if any?"
2466         . UU/myread
2467         tans=$ans
2468         for file in $tans; do
2469                 if $test X$file = XPolicy -a -f Policy.sh; then
2470                         . Policy.sh
2471                         $cat Policy.sh >> UU/config.sh
2472                 elif $test -f $src/hints/$file.sh; then
2473                         . $src/hints/$file.sh
2474                         $cat $src/hints/$file.sh >> UU/config.sh
2475                 elif $test X$tans = X -o X$tans = Xnone ; then
2476                         : nothing
2477                 else
2478                         : Give one chance to correct a possible typo.
2479                         echo "$file.sh does not exist"
2480                         dflt=$file
2481                         rp="hint to use instead?"
2482                         . UU/myread
2483                         for file in $ans; do
2484                                 if $test -f "$src/hints/$file.sh"; then
2485                                         . $src/hints/$file.sh
2486                                         $cat $src/hints/$file.sh >> UU/config.sh
2487                                 elif $test X$ans = X -o X$ans = Xnone ; then
2488                                         : nothing
2489                                 else
2490                                         echo "$file.sh does not exist -- ignored."
2491                                 fi
2492                         done
2493                 fi
2494         done
2495
2496         hint=recommended
2497         : Remember our hint file for later.
2498         if $test -f "$src/hints/$file.sh" ; then
2499                 hintfile="$file"
2500         else
2501                 hintfile=''
2502         fi
2503 fi
2504 cd UU
2505 ;;
2506 *)
2507         echo " "
2508         echo "Fetching default answers from $config_sh..." >&4
2509         tmp_n="$n"
2510         tmp_c="$c"
2511         cd ..
2512         cp $config_sh config.sh 2>/dev/null
2513         chmod +w config.sh
2514         . ./config.sh
2515         cd UU
2516         cp ../config.sh .
2517         n="$tmp_n"
2518         c="$tmp_c"
2519         hint=previous
2520         ;;
2521 esac
2522 test "$override" && . ./optdef.sh
2523 myuname="$newmyuname"
2524
2525 : Restore computed paths
2526 for file in $loclist $trylist; do
2527         eval $file="\$_$file"
2528 done
2529
2530 cat << EOM
2531
2532 Configure uses the operating system name and version to set some defaults.
2533 The default value is probably right if the name rings a bell. Otherwise,
2534 since spelling matters for me, either accept the default or answer "none"
2535 to leave it blank.
2536
2537 EOM
2538 case "$osname" in
2539         ''|' ')
2540                 case "$hintfile" in
2541                 ''|' '|none) dflt=none ;;
2542                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2543                 esac
2544                 ;;
2545         *) dflt="$osname" ;;
2546 esac
2547 rp="Operating system name?"
2548 . ./myread
2549 case "$ans" in
2550 none)  osname='' ;;
2551 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2552 esac
2553 echo " "
2554 case "$osvers" in
2555         ''|' ')
2556                 case "$hintfile" in
2557                 ''|' '|none) dflt=none ;;
2558                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2559                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2560                         case "$dflt" in
2561                         ''|' ') dflt=none ;;
2562                         esac
2563                         ;;
2564                 esac
2565                 ;;
2566         *) dflt="$osvers" ;;
2567 esac
2568 rp="Operating system version?"
2569 . ./myread
2570 case "$ans" in
2571 none)  osvers='' ;;
2572 *) osvers="$ans" ;;
2573 esac
2574
2575
2576 . ./posthint.sh
2577
2578 : who configured the system
2579 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2580 cf_by=`(logname) 2>/dev/null`
2581 case "$cf_by" in
2582 "")
2583         cf_by=`(whoami) 2>/dev/null`
2584         case "$cf_by" in
2585         "") cf_by=unknown ;;
2586         esac ;;
2587 esac
2588
2589 : set up the script used to warn in case of inconsistency
2590 cat <<EOS >whoa
2591 $startsh
2592 EOS
2593 cat <<'EOSC' >>whoa
2594 dflt=y
2595 echo " "
2596 echo "*** WHOA THERE!!! ***" >&4
2597 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2598 rp="    Keep the $hint value?"
2599 . ./myread
2600 case "$ans" in
2601 y) td=$was; tu=$was;;
2602 esac
2603 EOSC
2604
2605 : function used to set $1 to $val
2606 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2607 case "$val$was" in
2608 $define$undef) . ./whoa; eval "$var=\$td";;
2609 $undef$define) . ./whoa; eval "$var=\$tu";;
2610 *) eval "$var=$val";;
2611 esac'
2612
2613 cat <<EOM
2614
2615 Perl can be built to take advantage of threads on some systems.
2616 To do so, Configure must be run with -Dusethreads.
2617
2618 Note that threading is a highly experimental feature, and
2619 some known race conditions still remain.  If you choose to try
2620 it, be very sure to not actually deploy it for production
2621 purposes.  README.threads has more details, and is required
2622 reading if you enable threads.
2623 EOM
2624 case "$usethreads" in
2625 $define|true|[yY]*)     dflt='y';;
2626 *) dflt='n';;
2627 esac
2628 rp='Build a threading Perl?'
2629 . ./myread
2630 case "$ans" in
2631 y|Y)    val="$define" ;;
2632 *)      val="$undef" ;;
2633 esac
2634 set usethreads
2635 eval $setvar
2636
2637 case "$usethreads" in
2638 $define)
2639         $cat <<EOM
2640
2641 As of 5.5.640, Perl has two different internal threading implementations,
2642 the 5.005 version (5005threads) and an interpreter-based version
2643 (ithreads) that has one interpreter per thread.  Both are very 
2644 experimental.  This arrangement exists to help developers work out
2645 which one is better.
2646
2647 If you're a casual user, you probably don't want interpreter-threads
2648 at this time.  There doesn't yet exist a way to create threads from
2649 within Perl in this model, i.e., "use Thread;" will NOT work.
2650 EOM
2651         : Default to ithreads unless overridden on command line or with
2652         : old config.sh
2653         dflt='y'
2654         case "$use5005threads" in
2655                 $define|true|[yY]*) dflt='n';;
2656         esac
2657         case "$useithreads" in
2658                 $undef|false|[nN]*) dflt='n';;
2659         esac
2660         rp='Use interpreter-based ithreads?'
2661         . ./myread
2662         case "$ans" in
2663         y|Y)    val="$define" ;;
2664         *)      val="$undef" ;;
2665         esac
2666         set useithreads
2667         eval $setvar
2668         : Now set use5005threads to the opposite value.
2669         case "$useithreads" in
2670         $define) val="$undef" ;;
2671         *) val="$define" ;;
2672         esac
2673         set use5005threads
2674         eval $setvar
2675         ;;
2676 *)
2677         useithreads="$undef"
2678         use5005threads="$undef"
2679         ;;
2680 esac
2681
2682 case "$d_oldpthreads" in
2683 '')     : Configure tests would be welcome here.  For now, assume undef.
2684         val="$undef" ;;
2685 *)      val="$d_oldpthreads" ;;
2686 esac
2687 set d_oldpthreads
2688 eval $setvar
2689
2690
2691 case "$usethreads" in
2692 "$define"|true|[yY]*)
2693 : Look for a hint-file generated 'call-back-unit'.  If the
2694 : user has specified that a threading perl is to be built,
2695 : we may need to set or change some other defaults.
2696         if $test -f usethreads.cbu; then
2697                 echo "Your platform has some specific hints for threaded builds, using them..."
2698                 . ./usethreads.cbu
2699         else
2700                 $cat <<EOM
2701 (Your platform doesn't have any specific hints for threaded builds.
2702  Assuming POSIX threads, then.)
2703 EOM
2704         fi
2705         ;;
2706 esac
2707
2708 cat <<EOM
2709
2710 Perl can be built so that multiple Perl interpreters can coexist
2711 within the same Perl executable.
2712 EOM
2713
2714 case "$useithreads" in
2715 $define)
2716         cat <<EOM
2717 This multiple interpreter support is required for interpreter-based threads.
2718 EOM
2719         val="$define"
2720         ;;
2721 *)
2722         echo 'Normally you do not need this and you should answer no.'
2723         case "$usemultiplicity" in
2724         $define|true|[yY]*)     dflt='y';;
2725         *) dflt='n';;
2726         esac
2727         rp='Build Perl for multiplicity?'
2728         . ./myread
2729         case "$ans" in
2730         y|Y)    val="$define" ;;
2731         *)      val="$undef" ;;
2732         esac
2733         ;;
2734 esac
2735 set usemultiplicity
2736 eval $setvar
2737
2738 : determine where manual pages are on this system
2739 echo " "
2740 case "$sysman" in
2741 '') 
2742         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2743         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2744         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2745         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2746         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2747         sysman=`./loc . /usr/man/man1 $syspath`
2748         ;;
2749 esac
2750 if $test -d "$sysman"; then
2751         echo "System manual is in $sysman." >&4
2752 else
2753         echo "Could not find manual pages in source form." >&4
2754 fi
2755
2756 : see what memory models we can support
2757 case "$models" in
2758 '')
2759         $cat >pdp11.c <<'EOP'
2760 int main() {
2761 #ifdef pdp11
2762         exit(0);
2763 #else
2764         exit(1);
2765 #endif
2766 }
2767 EOP
2768         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2769         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2770                 dflt='unsplit split'
2771         else
2772                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2773                 case "$tans" in
2774                 X) dflt='none';;
2775                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2776                                 dflt='small'
2777                         else
2778                                 dflt=''
2779                         fi
2780                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2781                                 dflt="$dflt medium"
2782                         fi
2783                         if $test -d /lib/large || $test -d /usr/lib/large; then
2784                                 dflt="$dflt large"
2785                         fi
2786                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2787                                 dflt="$dflt huge"
2788                         fi
2789                 esac
2790         fi;;
2791 *) dflt="$models";;
2792 esac
2793 $cat <<EOM
2794  
2795 Some systems have different model sizes.  On most systems they are called
2796 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2797 split.  If your system doesn't support different memory models, say "none".
2798 If you wish to force everything to one memory model, say "none" here and
2799 put the appropriate flags later when it asks you for other cc and ld flags.
2800 Venix systems may wish to put "none" and let the compiler figure things out.
2801 (In the following question multiple model names should be space separated.)
2802
2803 The default for most systems is "none".
2804
2805 EOM
2806 rp="Which memory models are supported?"
2807 . ./myread
2808 models="$ans"
2809
2810 case "$models" in
2811 none)
2812         small=''
2813         medium=''
2814         large=''
2815         huge=''
2816         unsplit=''
2817         split=''
2818         ;;
2819 *split)
2820         case "$split" in
2821         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2822                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2823                         dflt='-i'
2824                 else
2825                         dflt='none'
2826                 fi;;
2827         *) dflt="$split";;
2828         esac
2829         rp="What flag indicates separate I and D space?"
2830         . ./myread
2831         tans="$ans"
2832         case "$tans" in
2833         none) tans='';;
2834         esac
2835         split="$tans"
2836         unsplit='';;
2837 *large*|*small*|*medium*|*huge*)
2838         case "$models" in
2839         *large*)
2840                 case "$large" in
2841                 '') dflt='-Ml';;
2842                 *) dflt="$large";;
2843                 esac
2844         rp="What flag indicates large model?"
2845         . ./myread
2846         tans="$ans"
2847         case "$tans" in
2848         none) tans='';
2849         esac
2850         large="$tans";;
2851         *) large='';;
2852         esac
2853         case "$models" in
2854         *huge*) case "$huge" in
2855                 '') dflt='-Mh';;
2856                 *) dflt="$huge";;
2857                 esac
2858                 rp="What flag indicates huge model?"
2859                 . ./myread
2860                 tans="$ans"
2861                 case "$tans" in
2862                 none) tans='';
2863                 esac
2864                 huge="$tans";;
2865         *) huge="$large";;
2866         esac
2867         case "$models" in
2868         *medium*) case "$medium" in
2869                 '') dflt='-Mm';;
2870                 *) dflt="$medium";;
2871                 esac
2872                 rp="What flag indicates medium model?"
2873                 . ./myread
2874                 tans="$ans"
2875                 case "$tans" in
2876                 none) tans='';
2877                 esac
2878                 medium="$tans";;
2879         *) medium="$large";;
2880         esac
2881         case "$models" in
2882         *small*) case "$small" in
2883                 '') dflt='none';;
2884                 *) dflt="$small";;
2885                 esac
2886                 rp="What flag indicates small model?"
2887                 . ./myread
2888                 tans="$ans"
2889                 case "$tans" in
2890                 none) tans='';
2891                 esac
2892                 small="$tans";;
2893         *) small='';;
2894         esac
2895         ;;
2896 *)
2897         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2898         ;;
2899 esac
2900 $rm -f pdp11.* pdp11
2901
2902 : make some quick guesses about what we are up against
2903 echo " "
2904 $echo $n "Hmm...  $c"
2905 echo exit 1 >bsd
2906 echo exit 1 >usg
2907 echo exit 1 >v7
2908 echo exit 1 >osf1
2909 echo exit 1 >eunice
2910 echo exit 1 >xenix
2911 echo exit 1 >venix
2912 echo exit 1 >os2
2913 d_bsd="$undef"
2914 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2915 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2916 then
2917         echo "Looks kind of like an OSF/1 system, but we'll see..."
2918         echo exit 0 >osf1
2919 elif test `echo abc | tr a-z A-Z` = Abc ; then
2920         xxx=`./loc addbib blurfl $pth`
2921         if $test -f $xxx; then
2922         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2923                 echo exit 0 >bsd
2924                 echo exit 0 >usg
2925         else
2926                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2927                         echo "Looks kind of like an extended USG system, but we'll see..."
2928                 else
2929                         echo "Looks kind of like a USG system, but we'll see..."
2930                 fi
2931                 echo exit 0 >usg
2932         fi
2933 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2934         echo "Looks kind of like a BSD system, but we'll see..."
2935         d_bsd="$define"
2936         echo exit 0 >bsd
2937 else
2938         echo "Looks kind of like a Version 7 system, but we'll see..."
2939         echo exit 0 >v7
2940 fi
2941 case "$eunicefix" in
2942 *unixtovms*)
2943         $cat <<'EOI'
2944 There is, however, a strange, musty smell in the air that reminds me of
2945 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2946 EOI
2947         echo exit 0 >eunice
2948         d_eunice="$define"
2949 : it so happens the Eunice I know will not run shell scripts in Unix format
2950         ;;
2951 *)
2952         echo " "
2953         echo "Congratulations.  You aren't running Eunice."
2954         d_eunice="$undef"
2955         ;;
2956 esac
2957 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2958 case "$p_" in
2959 :) ;;
2960 *)
2961         $cat <<'EOI'
2962 I have the feeling something is not exactly right, however...don't tell me...
2963 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2964 EOI
2965         echo exit 0 >os2
2966         ;;
2967 esac
2968 if test -f /xenix; then
2969         echo "Actually, this looks more like a XENIX system..."
2970         echo exit 0 >xenix
2971         d_xenix="$define"
2972 else
2973         echo " "
2974         echo "It's not Xenix..."
2975         d_xenix="$undef"
2976 fi
2977 chmod +x xenix
2978 $eunicefix xenix
2979 if test -f /venix; then
2980         echo "Actually, this looks more like a VENIX system..."
2981         echo exit 0 >venix
2982 else
2983         echo " "
2984         if ./xenix; then
2985                 : null
2986         else
2987                 echo "Nor is it Venix..."
2988         fi
2989 fi
2990 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2991 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2992 $rm -f foo
2993
2994 : see if we need a special compiler
2995 echo " "
2996 if ./usg; then
2997         case "$cc" in
2998         '') case "$Mcc" in
2999                 /*) dflt='Mcc';;
3000                 *) case "$large" in
3001                         -M*) dflt='cc';;
3002                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3003                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3004                                                 dflt='cc'
3005                                         else
3006                                                 dflt='cc -M'
3007                                         fi
3008                                 else
3009                                         dflt='cc'
3010                                 fi;;
3011                         esac;;
3012                 esac;;
3013         *)  dflt="$cc";;
3014         esac
3015         case "$dflt" in
3016         *M*)    $cat <<'EOM'
3017 On some older systems the default C compiler will not resolve multiple global
3018 references that happen to have the same name.  On some such systems the "Mcc"
3019 command may be used to force these to be resolved.  On other systems a "cc -M"
3020 command is required.  (Note that the -M flag on other systems indicates a
3021 memory model to use!) If you have the Gnu C compiler, you might wish to use
3022 that instead.
3023
3024 EOM
3025         ;;
3026         esac
3027         rp="Use which C compiler?"
3028         . ./myread
3029         cc="$ans"
3030 else
3031         case "$cc" in
3032         '') dflt=cc;;
3033         *) dflt="$cc";;
3034         esac
3035         rp="Use which C compiler?"
3036         . ./myread
3037         cc="$ans"
3038 fi
3039 : Look for a hint-file generated 'call-back-unit'.  Now that the
3040 : user has specified the compiler, we may need to set or change some
3041 : other defaults.
3042 if $test -f cc.cbu; then
3043     . ./cc.cbu
3044 fi
3045 echo " "
3046 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3047 $cat >gccvers.c <<EOM
3048 #include <stdio.h>
3049 int main() {
3050 #ifdef __GNUC__
3051 #ifdef __VERSION__
3052         printf("%s\n", __VERSION__);
3053 #else
3054         printf("%s\n", "1");
3055 #endif
3056 #endif
3057         exit(0);
3058 }
3059 EOM
3060 if $cc -o gccvers gccvers.c; then
3061         gccversion=`./gccvers`
3062         case "$gccversion" in
3063         '') echo "You are not using GNU cc." ;;
3064         *)  echo "You are using GNU cc $gccversion."
3065             ;;
3066         esac
3067 else
3068         echo " "
3069         echo "*** WHOA THERE!!! ***" >&4
3070         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3071         case "$knowitall" in
3072         '')
3073         echo "    You'd better start hunting for one and let me know about it." >&4
3074                 exit 1
3075                 ;;
3076         esac
3077 fi
3078 $rm -f gccvers*
3079 case "$gccversion" in
3080 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3081 esac
3082
3083 : decide how portable to be.  Allow command line overrides.
3084 case "$d_portable" in
3085 "$undef") ;;
3086 *)      d_portable="$define" ;;
3087 esac
3088
3089 : set up shell script to do ~ expansion
3090 cat >filexp <<EOSS
3091 $startsh
3092 : expand filename
3093 case "\$1" in
3094  ~/*|~)
3095         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3096         ;;
3097  ~*)
3098         if $test -f /bin/csh; then
3099                 /bin/csh -f -c "glob \$1"
3100                 failed=\$?
3101                 echo ""
3102                 exit \$failed
3103         else
3104                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3105                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3106                 if $test ! -d "\$dir"; then
3107                         me=\`basename \$0\`
3108                         echo "\$me: can't locate home directory for: \$name" >&2
3109                         exit 1
3110                 fi
3111                 case "\$1" in
3112                 */*)
3113                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3114                         ;;
3115                 *)
3116                         echo \$dir
3117                         ;;
3118                 esac
3119         fi
3120         ;;
3121 *)
3122         echo \$1
3123         ;;
3124 esac
3125 EOSS
3126 chmod +x filexp
3127 $eunicefix filexp
3128
3129 : now set up to get a file name
3130 cat <<EOS >getfile
3131 $startsh
3132 EOS
3133 cat <<'EOSC' >>getfile
3134 tilde=''
3135 fullpath=''
3136 already=''
3137 skip=''
3138 none_ok=''
3139 exp_file=''
3140 nopath_ok=''
3141 orig_rp="$rp"
3142 orig_dflt="$dflt"
3143 case "$gfpth" in
3144 '') gfpth='.' ;;
3145 esac
3146
3147 case "$fn" in
3148 *\(*)
3149         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3150         fn=`echo $fn | sed 's/(.*)//'`
3151         ;;
3152 esac
3153
3154 case "$fn" in
3155 *:*)
3156         loc_file=`expr $fn : '.*:\(.*\)'`
3157         fn=`expr $fn : '\(.*\):.*'`
3158         ;;
3159 esac
3160
3161 case "$fn" in
3162 *~*) tilde=true;;
3163 esac
3164 case "$fn" in
3165 */*) fullpath=true;;
3166 esac
3167 case "$fn" in
3168 *+*) skip=true;;
3169 esac
3170 case "$fn" in
3171 *n*) none_ok=true;;
3172 esac
3173 case "$fn" in
3174 *e*) exp_file=true;;
3175 esac
3176 case "$fn" in
3177 *p*) nopath_ok=true;;
3178 esac
3179
3180 case "$fn" in
3181 *f*) type='File';;
3182 *d*) type='Directory';;
3183 *l*) type='Locate';;
3184 esac
3185
3186 what="$type"
3187 case "$what" in
3188 Locate) what='File';;
3189 esac
3190
3191 case "$exp_file" in
3192 '')
3193         case "$d_portable" in
3194         "$define") ;;
3195         *) exp_file=true;;
3196         esac
3197         ;;
3198 esac
3199
3200 cd ..
3201 while test "$type"; do
3202         redo=''
3203         rp="$orig_rp"
3204         dflt="$orig_dflt"
3205         case "$tilde" in
3206         true) rp="$rp (~name ok)";;
3207         esac
3208         . UU/myread
3209         if test -f UU/getfile.ok && \
3210                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3211         then
3212                 value="$ans"
3213                 ansexp="$ans"
3214                 break
3215         fi
3216         case "$ans" in
3217         none)
3218                 value=''
3219                 ansexp=''
3220                 case "$none_ok" in
3221                 true) type='';;
3222                 esac
3223                 ;;
3224         *)
3225                 case "$tilde" in
3226                 '') value="$ans"
3227                         ansexp="$ans";;
3228                 *)
3229                         value=`UU/filexp $ans`
3230                         case $? in
3231                         0)
3232                                 if test "$ans" != "$value"; then
3233                                         echo "(That expands to $value on this system.)"
3234                                 fi
3235                                 ;;
3236                         *) value="$ans";;
3237                         esac
3238                         ansexp="$value"
3239                         case "$exp_file" in
3240                         '') value="$ans";;
3241                         esac
3242                         ;;
3243                 esac
3244                 case "$fullpath" in
3245                 true)
3246                         case "$ansexp" in
3247                         /*) value="$ansexp" ;;
3248                         *)
3249                                 redo=true
3250                                 case "$already" in
3251                                 true)
3252                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3253                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3254                                         ;;
3255                                 *)
3256                                 echo "Please give a full path name, starting with slash." >&4
3257                                         case "$tilde" in
3258                                         true)
3259                                 echo "Note that using ~name is ok provided it expands well." >&4
3260                                                 already=true
3261                                                 ;;
3262                                         esac
3263                                 esac
3264                                 ;;
3265                         esac
3266                         ;;
3267                 esac
3268                 case "$redo" in
3269                 '')
3270                         case "$type" in
3271                         File)
3272                                 for fp in $gfpth; do
3273                                         if test "X$fp" = X.; then
3274                                             pf="$ansexp"
3275                                         else    
3276                                             pf="$fp/$ansexp"
3277                                         fi
3278                                         if test -f "$pf"; then
3279                                                 type=''
3280                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3281                                         then
3282                                                 echo "($value is not a plain file, but that's ok.)"
3283                                                 type=''
3284                                         fi
3285                                         if test X"$type" = X; then
3286                                             value="$pf"
3287                                             break
3288                                         fi
3289                                 done
3290                                 ;;
3291                         Directory)
3292                                 for fp in $gfpth; do
3293                                         if test "X$fp" = X.; then
3294                                             pf="$ansexp"
3295                                         else    
3296                                             pf="$fp/$ansexp"
3297                                         fi
3298                                         if test -d "$pf"; then
3299                                                 type=''
3300                                                 value="$pf"
3301                                                 break
3302                                         fi
3303                                 done
3304                                 ;;
3305                         Locate)
3306                                 if test -d "$ansexp"; then
3307                                         echo "(Looking for $loc_file in directory $value.)"
3308                                         value="$value/$loc_file"
3309                                         ansexp="$ansexp/$loc_file"
3310                                 fi
3311                                 if test -f "$ansexp"; then
3312                                         type=''
3313                                 fi
3314                                 case "$nopath_ok" in
3315                                 true)   case "$value" in
3316                                         */*) ;;
3317                                         *)      echo "Assuming $value will be in people's path."
3318                                                 type=''
3319                                                 ;;
3320                                         esac
3321                                         ;;
3322                                 esac
3323                                 ;;
3324                         esac
3325
3326                         case "$skip" in
3327                         true) type='';
3328                         esac
3329
3330                         case "$type" in
3331                         '') ;;
3332                         *)
3333                                 if test "$fastread" = yes; then
3334                                         dflt=y
3335                                 else
3336                                         dflt=n
3337                                 fi
3338                                 rp="$what $value doesn't exist.  Use that name anyway?"
3339                                 . UU/myread
3340                                 dflt=''
3341                                 case "$ans" in
3342                                 y*) type='';;
3343                                 *) echo " ";;
3344                                 esac
3345                                 ;;
3346                         esac
3347                         ;;
3348                 esac
3349                 ;;
3350         esac
3351 done
3352 cd UU
3353 ans="$value"
3354 rp="$orig_rp"
3355 dflt="$orig_dflt"
3356 rm -f getfile.ok
3357 test "X$gfpthkeep" != Xy && gfpth=""
3358 EOSC
3359
3360 : What should the include directory be ?
3361 echo " "
3362 $echo $n "Hmm...  $c"
3363 dflt='/usr/include'
3364 incpath=''
3365 mips_type=''
3366 if $test -f /bin/mips && /bin/mips; then
3367         echo "Looks like a MIPS system..."
3368         $cat >usr.c <<'EOCP'
3369 #ifdef SYSTYPE_BSD43
3370 /bsd43
3371 #endif
3372 EOCP
3373         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3374                 dflt='/bsd43/usr/include'
3375                 incpath='/bsd43'
3376                 mips_type='BSD 4.3'
3377         else
3378                 mips_type='System V'
3379         fi
3380         $rm -f usr.c usr.out
3381         echo "and you're compiling with the $mips_type compiler and libraries."
3382         xxx_prompt=y
3383         echo "exit 0" >mips
3384 else
3385         echo "Doesn't look like a MIPS system."
3386         xxx_prompt=n
3387         echo "exit 1" >mips
3388 fi
3389 chmod +x mips
3390 $eunicefix mips
3391 case "$usrinc" in
3392 '') ;;
3393 *) dflt="$usrinc";;
3394 esac
3395 case "$xxx_prompt" in
3396 y)      fn=d/
3397         echo " "
3398         rp='Where are the include files you want to use?'
3399         . ./getfile
3400         usrinc="$ans"
3401         ;;
3402 *)      usrinc="$dflt"
3403         ;;
3404 esac
3405
3406 : see how we invoke the C preprocessor
3407 echo " "
3408 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3409 cat <<'EOT' >testcpp.c
3410 #define ABC abc
3411 #define XYZ xyz
3412 ABC.XYZ
3413 EOT
3414 cd ..
3415 if test ! -f cppstdin; then
3416         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3417                 # AIX cc -E doesn't show the absolute headerfile
3418                 # locations but we'll cheat by using the -M flag.
3419                 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
3420         else
3421                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3422         fi
3423 else
3424         echo "Keeping your $hint cppstdin wrapper."
3425 fi
3426 chmod 755 cppstdin
3427 wrapper=`pwd`/cppstdin
3428 ok='false'
3429 cd UU
3430
3431 if $test "X$cppstdin" != "X" && \
3432         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3433         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3434 then
3435         echo "You used to use $cppstdin $cppminus so we'll use that again."
3436         case "$cpprun" in
3437         '') echo "But let's see if we can live without a wrapper..." ;;
3438         *)
3439                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3440                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3441                 then
3442                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3443                         ok='true'
3444                 else
3445                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3446                 fi
3447                 ;;
3448         esac
3449 else
3450         case "$cppstdin" in
3451         '') ;;
3452         *)
3453                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3454                 ;;
3455         esac
3456 fi
3457
3458 if $ok; then
3459         : nothing
3460 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3461         $cc -E <testcpp.c >testcpp.out 2>&1; \
3462         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3463         echo "Yup, it does."
3464         x_cpp="$cc -E"
3465         x_minus='';
3466 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3467         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3468         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3469         echo "Yup, it does."
3470         x_cpp="$cc -E"
3471         x_minus='-';
3472 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3473         $cc -P <testcpp.c >testcpp.out 2>&1; \
3474         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3475         echo "Yipee, that works!"
3476         x_cpp="$cc -P"
3477         x_minus='';
3478 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3479         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3480         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3481         echo "At long last!"
3482         x_cpp="$cc -P"
3483         x_minus='-';
3484 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3485         $cpp <testcpp.c >testcpp.out 2>&1; \
3486         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3487         echo "It works!"
3488         x_cpp="$cpp"
3489         x_minus='';
3490 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3491         $cpp - <testcpp.c >testcpp.out 2>&1; \
3492         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3493         echo "Hooray, it works!  I was beginning to wonder."
3494         x_cpp="$cpp"
3495         x_minus='-';
3496 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3497         $wrapper <testcpp.c >testcpp.out 2>&1; \
3498         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3499         x_cpp="$wrapper"
3500         x_minus=''
3501         echo "Eureka!"
3502 else
3503         dflt=''
3504         rp="No dice.  I can't find a C preprocessor.  Name one:"
3505         . ./myread
3506         x_cpp="$ans"
3507         x_minus=''
3508         $x_cpp <testcpp.c >testcpp.out 2>&1
3509         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3510                 echo "OK, that will do." >&4
3511         else
3512 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3513                 exit 1
3514         fi
3515 fi
3516
3517 case "$ok" in
3518 false)
3519         cppstdin="$x_cpp"
3520         cppminus="$x_minus"
3521         cpprun="$x_cpp"
3522         cpplast="$x_minus"
3523         set X $x_cpp
3524         shift
3525         case "$1" in
3526         "$cpp")
3527                 echo "Perhaps can we force $cc -E using a wrapper..."
3528                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3529                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3530                 then
3531                         echo "Yup, we can."
3532                         cppstdin="$wrapper"
3533                         cppminus='';
3534                 else
3535                         echo "Nope, we'll have to live without it..."
3536                 fi
3537                 ;;
3538         esac
3539         case "$cpprun" in
3540         "$wrapper")
3541                 cpprun=''
3542                 cpplast=''
3543                 ;;
3544         esac
3545         ;;
3546 esac
3547
3548 case "$cppstdin" in
3549 "$wrapper"|'cppstdin') ;;
3550 *) $rm -f $wrapper;;
3551 esac
3552 $rm -f testcpp.c testcpp.out
3553
3554 : Set private lib path
3555 case "$plibpth" in
3556 '') if ./mips; then
3557                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3558         fi;;
3559 esac
3560 case "$libpth" in
3561 ' ') dlist='';;
3562 '') dlist="$loclibpth $plibpth $glibpth";;
3563 *) dlist="$libpth";;
3564 esac
3565
3566 : Now check and see which directories actually exist, avoiding duplicates
3567 libpth=''
3568 for xxx in $dlist
3569 do
3570     if $test -d $xxx; then
3571                 case " $libpth " in
3572                 *" $xxx "*) ;;
3573                 *) libpth="$libpth $xxx";;
3574                 esac
3575     fi
3576 done
3577 $cat <<'EOM'
3578
3579 Some systems have incompatible or broken versions of libraries.  Among
3580 the directories listed in the question below, please remove any you
3581 know not to be holding relevant libraries, and add any that are needed.
3582 Say "none" for none.
3583
3584 EOM
3585 case "$libpth" in
3586 '') dflt='none';;
3587 *)
3588         set X $libpth
3589         shift
3590         dflt=${1+"$@"}
3591         ;;
3592 esac
3593 rp="Directories to use for library searches?"
3594 . ./myread
3595 case "$ans" in
3596 none) libpth=' ';;
3597 *) libpth="$ans";;
3598 esac
3599
3600 : compute shared library extension
3601 case "$so" in
3602 '')
3603         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3604                 dflt='sl'
3605         else
3606                 dflt='so'
3607         fi
3608         ;;
3609 *) dflt="$so";;
3610 esac
3611 $cat <<EOM
3612
3613 On some systems, shared libraries may be available.  Answer 'none' if
3614 you want to suppress searching of shared libraries for the remainder
3615 of this configuration.
3616
3617 EOM
3618 rp='What is the file extension used for shared libraries?'
3619 . ./myread
3620 so="$ans"
3621
3622 : Define several unixisms.
3623 : Hints files or command line option can be used to override them.
3624 : The convoluted testing is in case hints files set either the old
3625 : or the new name.
3626 case "$_exe" in
3627 '')     case "$exe_ext" in
3628     '') ;;
3629         *)      _exe="$exe_ext" ;;
3630         esac
3631         ;;
3632 esac
3633 case "$_a" in
3634 '')     case "$lib_ext" in
3635     '') _a='.a';;
3636         *)      _a="$lib_ext" ;;
3637         esac
3638         ;;
3639 esac
3640 case "$_o" in
3641 '') case "$obj_ext" in
3642         '')     _o='.o';;
3643         *)      _o="$obj_ext";;
3644         esac
3645         ;;
3646 esac
3647 case "$p_" in
3648 '') case "$path_sep" in
3649         '')     p_=':';;
3650         *)      p_="$path_sep";;
3651         esac
3652         ;;
3653 esac
3654 exe_ext=$_exe
3655 lib_ext=$_a
3656 obj_ext=$_o
3657 path_sep=$p_
3658
3659 : Which makefile gets called first.  This is used by make depend.
3660 case "$firstmakefile" in
3661 '') firstmakefile='makefile';;
3662 esac
3663
3664 cat <<EOM
3665
3666 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3667 Configure must be run with -Dusesocks.
3668
3669 Normally you do not need this and you should answer no.
3670
3671 EOM
3672 case "$usesocks" in
3673 $define|true|[yY]*)     dflt='y';;
3674 *) dflt='n';;
3675 esac
3676 rp='Build Perl for SOCKS?'
3677 . ./myread
3678 case "$ans" in
3679 y|Y)    val="$define" ;;     
3680 *)      val="$undef" ;;
3681 esac
3682 set usesocks
3683 eval $setvar
3684
3685 : Looking for optional libraries
3686 echo " "
3687 echo "Checking for optional libraries..." >&4
3688 case "$libs" in
3689 ' '|'') dflt='';;
3690 *) dflt="$libs";;
3691 esac
3692 case "$libswanted" in
3693 '') libswanted='c_s';;
3694 esac
3695 case "$usesocks" in
3696 $define)
3697         libswanted="$libswanted socks5 socks5_sh"
3698         ;;
3699 esac
3700 for thislib in $libswanted; do
3701         for thisdir in $libpth; do
3702             xxx=''
3703             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3704                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3705                 $test -f "$xxx" && eval $libscheck
3706                 $test -f "$xxx" && libstyle=shared
3707             fi
3708             if test ! -f "$xxx"; then
3709                 xxx=$thisdir/lib$thislib.$so
3710                 $test -f "$xxx" && eval $libscheck
3711                 $test -f "$xxx" && libstyle=shared
3712             fi  
3713             if test ! -f "$xxx"; then
3714                 xxx=$thisdir/lib$thislib$_a
3715                 $test -f "$xxx" && eval $libscheck
3716                 $test -f "$xxx" && libstyle=static
3717             fi
3718             if test ! -f "$xxx"; then
3719                 xxx=$thisdir/$thislib$_a
3720                 $test -f "$xxx" && eval $libscheck
3721                 $test -f "$xxx" && libstyle=static
3722             fi
3723             if test ! -f "$xxx"; then
3724                 xxx=$thisdir/lib${thislib}_s$_a
3725                 $test -f "$xxx" && eval $libscheck
3726                 $test -f "$xxx" && libstyle=static
3727             fi
3728             if test ! -f "$xxx"; then
3729                 xxx=$thisdir/Slib$thislib$_a
3730                 $test -f "$xxx" && eval $libscheck
3731                 $test -f "$xxx" && libstyle=static
3732             fi
3733             if $test -f "$xxx"; then
3734                 case "$libstyle" in
3735                 shared) echo "Found -l$thislib (shared)." ;;
3736                 static) echo "Found -l$thislib." ;;
3737                 *)      echo "Found -l$thislib ($libstyle)." ;;
3738                 esac
3739                 case " $dflt " in
3740                 *"-l$thislib "*);;
3741                 *) dflt="$dflt -l$thislib"
3742                    libsfound="$libsfound $xxx"
3743                    yyy=`basename $xxx`
3744                    libsfiles="$libsfiles $yyy"
3745                    yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3746                    case " $libsdirs " in
3747                    *" $yyy "*) ;;
3748                    *) libsdirs="$libsdirs $yyy" ;;
3749                    esac
3750                    ;;
3751                 esac
3752                 break
3753             fi  
3754         done
3755         if $test ! -f "$xxx"; then
3756             echo "No -l$thislib."
3757         fi
3758 done
3759 set X $dflt
3760 shift
3761 dflt="$*"
3762 case "$libs" in
3763 '') dflt="$dflt";;
3764 *) dflt="$libs";;
3765 esac
3766 case "$dflt" in
3767 ' '|'') dflt='none';;
3768 esac
3769
3770 $cat <<EOM
3771
3772 In order to compile $package on your machine, a number of libraries
3773 are usually needed.  Include any other special libraries here as well.
3774 Say "none" for none.  The default list is almost always right.
3775 EOM
3776
3777 echo " "
3778 rp="What libraries to use?"
3779 . ./myread
3780 case "$ans" in
3781 none) libs=' ';;
3782 *) libs="$ans";;
3783 esac
3784
3785 : determine optimization, if desired, or use for debug flag also
3786 case "$optimize" in
3787 ' '|$undef) dflt='none';;
3788 '') dflt='-O';;
3789 *) dflt="$optimize";;
3790 esac
3791 $cat <<EOH
3792
3793 By default, $package compiles with the -O flag to use the optimizer.
3794 Alternately, you might want to use the symbolic debugger, which uses
3795 the -g flag (on traditional Unix systems).  Either flag can be
3796 specified here.  To use neither flag, specify the word "none".
3797
3798 EOH
3799 rp="What optimizer/debugger flag should be used?"
3800 . ./myread
3801 optimize="$ans"
3802 case "$optimize" in
3803 'none') optimize=" ";;
3804 esac
3805
3806 dflt=''
3807 : We will not override a previous value, but we might want to
3808 : augment a hint file
3809 case "$hint" in
3810 default|recommended)
3811         case "$gccversion" in
3812         1*) dflt='-fpcc-struct-return' ;;
3813         esac
3814         case "$optimize" in
3815         *-g*) dflt="$dflt -DDEBUGGING";;
3816         esac
3817         case "$gccversion" in
3818         2*) if test -d /etc/conf/kconfig.d &&
3819                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3820                 then
3821                         dflt="$dflt -posix"
3822                 fi
3823                 ;;
3824         esac
3825         case "$gccversion" in
3826         1*) ;;
3827         2.[0-8]*) ;;
3828         ?*)     echo " "
3829                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3830                 echo 'int main(void) { return 0; }' > gcctest.c
3831                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3832                         echo "Yes, it does." 2>&1
3833                         case "$ccflags" in
3834                         *strict-aliasing*) 
3835                                 echo "Leaving current flags $ccflags alone." 2>&1
3836                                 ;;
3837                         *) dflt="$dflt -fno-strict-aliasing" ;;
3838                         esac
3839                 else
3840                         echo "Nope, it doesn't, but that's ok." 2>&1
3841                 fi
3842                 ;;
3843         esac
3844         ;;
3845 esac
3846
3847 case "$mips_type" in
3848 *BSD*|'') inclwanted="$locincpth $usrinc";;
3849 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3850 esac
3851 for thisincl in $inclwanted; do
3852         if $test -d $thisincl; then
3853                 if $test x$thisincl != x$usrinc; then
3854                         case "$dflt" in
3855                         *$thisincl*);;
3856                         *) dflt="$dflt -I$thisincl";;
3857                         esac
3858                 fi
3859         fi
3860 done
3861
3862 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3863         xxx=true;
3864 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3865         xxx=true;
3866 else
3867         xxx=false;
3868 fi;
3869 if $xxx; then
3870         case "$dflt" in
3871         *$2*);;
3872         *) dflt="$dflt -D$2";;
3873         esac;
3874 fi'
3875
3876 set signal.h LANGUAGE_C; eval $inctest
3877
3878 case "$usesocks" in
3879 $define)
3880         ccflags="$ccflags -DSOCKS"
3881         ;;
3882 esac
3883
3884 case "$hint" in
3885 default|recommended) dflt="$ccflags $dflt" ;;
3886 *) dflt="$ccflags";;
3887 esac
3888
3889 case "$dflt" in
3890 ''|' ') dflt=none;;
3891 esac
3892 $cat <<EOH
3893
3894 Your C compiler may want other flags.  For this question you should include
3895 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3896 but you should NOT include libraries or ld flags like -lwhatever.  If you
3897 want $package to honor its debug switch, you should include -DDEBUGGING here.
3898 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3899
3900 To use no flags, specify the word "none".
3901
3902 EOH
3903 set X $dflt
3904 shift
3905 dflt=${1+"$@"}
3906 rp="Any additional cc flags?"
3907 . ./myread
3908 case "$ans" in
3909 none) ccflags='';;
3910 *) ccflags="$ans";;
3911 esac
3912
3913 : the following weeds options from ccflags that are of no interest to cpp
3914 cppflags="$ccflags"
3915 case "$gccversion" in
3916 1*) cppflags="$cppflags -D__GNUC__"
3917 esac
3918 case "$mips_type" in
3919 '');;
3920 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3921 esac
3922 case "$cppflags" in
3923 '');;
3924 *)
3925         echo " "
3926         echo "Let me guess what the preprocessor flags are..." >&4
3927         set X $cppflags
3928         shift
3929         cppflags=''
3930         $cat >cpp.c <<'EOM'
3931 #define BLURFL foo
3932
3933 BLURFL xx LFRULB
3934 EOM
3935         previous=''
3936         for flag in $*
3937         do
3938                 case "$flag" in
3939                 -*) ftry="$flag";;
3940                 *) ftry="$previous $flag";;
3941                 esac
3942                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3943                         >cpp1.out 2>/dev/null && \
3944                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3945                         >cpp2.out 2>/dev/null && \
3946                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3947                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3948                 then
3949                         cppflags="$cppflags $ftry"
3950                         previous=''
3951                 else
3952                         previous="$flag"
3953                 fi
3954         done
3955         set X $cppflags
3956         shift
3957         cppflags=${1+"$@"}
3958         case "$cppflags" in
3959         *-*)  echo "They appear to be: $cppflags";;
3960         esac
3961         $rm -f cpp.c cpp?.out
3962         ;;
3963 esac
3964
3965 : flags used in final linking phase
3966 case "$ldflags" in
3967 '') if ./venix; then
3968                 dflt='-i -z'
3969         else
3970                 dflt=''
3971         fi
3972         case "$ccflags" in
3973         *-posix*) dflt="$dflt -posix" ;;
3974         esac
3975         ;;
3976 *) dflt="$ldflags";;
3977 esac
3978
3979 : Try to guess additional flags to pick up local libraries.
3980 for thislibdir in $libpth; do
3981         case " $loclibpth " in
3982         *" $thislibdir "*)
3983                 case "$dflt " in 
3984                 *"-L$thislibdir "*) ;;
3985                 *)  dflt="$dflt -L$thislibdir" ;;
3986                 esac
3987                 ;;
3988         esac
3989 done
3990
3991 case "$dflt" in
3992 '') dflt='none' ;;
3993 esac
3994
3995 $cat <<EOH
3996
3997 Your C linker may need flags.  For this question you should
3998 include -L/whatever and any other flags used by the C linker, but you
3999 should NOT include libraries like -lwhatever.
4000
4001 Make sure you include the appropriate -L/path flags if your C linker
4002 does not normally search all of the directories you specified above,
4003 namely
4004         $libpth
4005 To use no flags, specify the word "none".
4006
4007 EOH
4008
4009 rp="Any additional ld flags (NOT including libraries)?"
4010 . ./myread
4011 case "$ans" in
4012 none) ldflags='';;
4013 *) ldflags="$ans";;
4014 esac
4015 rmlist="$rmlist pdp11"
4016
4017 : coherency check
4018 echo " "
4019 echo "Checking your choice of C compiler and flags for coherency..." >&4
4020 $cat > try.c <<'EOF'
4021 #include <stdio.h>
4022 int main() { printf("Ok\n"); exit(0); }
4023 EOF
4024 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4025 shift
4026 $cat >try.msg <<'EOM'
4027 I've tried to compile and run the following simple program:
4028
4029 EOM
4030 $cat try.c >> try.msg
4031
4032 $cat >> try.msg <<EOM
4033
4034 I used the command:
4035
4036         $*
4037         ./try
4038
4039 and I got the following output:
4040
4041 EOM
4042 dflt=y
4043 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4044         if sh -c './try' >>try.msg 2>&1; then
4045                 xxx=`./try`
4046                 case "$xxx" in
4047                 "Ok") dflt=n ;;
4048                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4049                         case " $libs " in
4050                         *" -lsfio "*)
4051                                 cat >> try.msg <<'EOQS'
4052 If $libs contains -lsfio, and sfio is mis-configured, then it
4053 sometimes (apparently) runs and exits with a 0 status, but with no
4054 output!  It may have to do with sfio's use of _exit vs. exit.
4055
4056 EOQS
4057                                 rp="You have a big problem.  Shall I abort Configure"
4058                                 dflt=y
4059                                 ;;
4060                         esac
4061                         ;;
4062                 esac
4063         else
4064                 echo "The program compiled OK, but exited with status $?." >>try.msg
4065                 rp="You have a problem.  Shall I abort Configure"
4066                 dflt=y
4067         fi
4068 else
4069         echo "I can't compile the test program." >>try.msg
4070         rp="You have a BIG problem.  Shall I abort Configure"
4071         dflt=y
4072 fi
4073 case "$dflt" in
4074 y)
4075         $cat try.msg >&4
4076         case "$knowitall" in
4077         '')
4078                 echo "(The supplied flags or libraries might be incorrect.)"
4079                 ;;
4080         *) dflt=n;;
4081         esac
4082         echo " "
4083         . ./myread
4084         case "$ans" in
4085         n*|N*) ;;
4086         *)      echo "Ok.  Stopping Configure." >&4
4087                 exit 1
4088                 ;;
4089         esac
4090         ;;
4091 n) echo "OK, that should do.";;
4092 esac
4093 $rm -f try try.* core
4094
4095 : define an is-a-typedef? function
4096 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4097 case "$inclist" in
4098 "") inclist="sys/types.h";;
4099 esac;
4100 eval "varval=\$$var";
4101 case "$varval" in
4102 "")
4103         $rm -f temp.c;
4104         for inc in $inclist; do
4105                 echo "#include <$inc>" >>temp.c;
4106         done;
4107         echo "#ifdef $type" >> temp.c;
4108         echo "printf(\"We have $type\");" >> temp.c;
4109         echo "#endif" >> temp.c;
4110         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4111         if $contains $type temp.E >/dev/null 2>&1; then
4112                 eval "$var=\$type";
4113         else
4114                 eval "$var=\$def";
4115         fi;
4116         $rm -f temp.?;;
4117 *) eval "$var=\$varval";;
4118 esac'
4119
4120 : define an is-a-typedef? function that prompts if the type is not available.
4121 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4122 case "$inclist" in
4123 "") inclist="sys/types.h";;
4124 esac;
4125 eval "varval=\$$var";
4126 case "$varval" in
4127 "")
4128         $rm -f temp.c;
4129         for inc in $inclist; do
4130                 echo "#include <$inc>" >>temp.c;
4131         done;
4132         echo "#ifdef $type" >> temp.c;
4133         echo "printf(\"We have $type\");" >> temp.c;
4134         echo "#endif" >> temp.c;
4135         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4136         echo " " ;
4137         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4138         if $contains $type temp.E >/dev/null 2>&1; then
4139                 echo "$type found." >&4;
4140                 eval "$var=\$type";
4141         else
4142                 echo "$type NOT found." >&4;
4143                 dflt="$def";
4144                 . ./myread ;
4145                 eval "$var=\$ans";
4146         fi;
4147         $rm -f temp.?;;
4148 *) eval "$var=\$varval";;
4149 esac'
4150
4151 : define a shorthand compile call
4152 compile='
4153 mc_file=$1;
4154 shift;
4155 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4156 : define a shorthand compile call for compilations that should be ok.
4157 compile_ok='
4158 mc_file=$1;
4159 shift;
4160 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4161
4162 : check for lengths of integral types
4163 echo " "
4164 case "$intsize" in
4165 '')
4166         echo "Checking to see how big your integers are..." >&4
4167         $cat >intsize.c <<'EOCP'
4168 #include <stdio.h>
4169 int main()
4170 {
4171         printf("intsize=%d;\n", (int)sizeof(int));
4172         printf("longsize=%d;\n", (int)sizeof(long));
4173         printf("shortsize=%d;\n", (int)sizeof(short));
4174         exit(0);
4175 }
4176 EOCP
4177         set intsize
4178         if eval $compile_ok && ./intsize > /dev/null; then
4179                 eval `./intsize`
4180                 echo "Your integers are $intsize bytes long."
4181                 echo "Your long integers are $longsize bytes long."
4182                 echo "Your short integers are $shortsize bytes long."
4183         else
4184                 $cat >&4 <<EOM
4185 !
4186 Help! I can't compile and run the intsize test program: please enlighten me!
4187 (This is probably a misconfiguration in your system or libraries, and
4188 you really ought to fix it.  Still, I'll try anyway.)
4189 !
4190 EOM
4191                 dflt=4
4192                 rp="What is the size of an integer (in bytes)?"
4193                 . ./myread
4194                 intsize="$ans"
4195                 dflt=$intsize
4196                 rp="What is the size of a long integer (in bytes)?"
4197                 . ./myread
4198                 longsize="$ans"
4199                 dflt=2
4200                 rp="What is the size of a short integer (in bytes)?"
4201                 . ./myread
4202                 shortsize="$ans"
4203         fi
4204         ;;
4205 esac
4206 $rm -f intsize intsize.*
4207
4208 : see what type lseek is declared as in the kernel
4209 rp="What is the type used for lseek's offset on this system?"
4210 set off_t lseektype long stdio.h sys/types.h
4211 eval $typedef_ask
4212
4213 echo " "
4214 $echo $n "Checking to see how big your file offsets are...$c" >&4
4215 $cat >try.c <<EOCP
4216 #include <sys/types.h>
4217 #include <stdio.h>
4218 int main()
4219 {
4220     printf("%d\n", (int)sizeof($lseektype));
4221     return(0); 
4222 }
4223 EOCP
4224 set try
4225 if eval $compile_ok; then
4226         lseeksize=`./try`
4227         $echo " $lseeksize bytes." >&4
4228 else
4229         dflt=$longsize
4230         echo " "
4231         echo "(I can't seem to compile the test program.  Guessing...)"
4232         rp="What is the size of your file offsets (in bytes)?"
4233         . ./myread
4234         lseeksize="$ans"
4235 fi
4236 $rm -f try.c try
4237
4238 : see what type file positions are declared as in the library
4239 rp="What is the type for file position used by fsetpos()?"
4240 set fpos_t fpostype long stdio.h sys/types.h
4241 eval $typedef_ask
4242
4243 echo " "
4244 case "$fpostype" in
4245 *_t) zzz="$fpostype"    ;;
4246 *)   zzz="fpos_t"       ;;
4247 esac
4248 $echo $n "Checking the size of $zzz...$c" >&4 
4249 cat > try.c <<EOCP
4250 #include <sys/types.h>
4251 #include <stdio.h>
4252 int main() {
4253     printf("%d\n", (int)sizeof($fpostype));
4254     exit(0);
4255 }
4256 EOCP
4257 set try
4258 if eval $compile_ok; then
4259         yyy=`./try`
4260         case "$yyy" in
4261         '')     fpossize=4
4262                 echo " "
4263                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4264                 ;;
4265         *)      fpossize=$yyy
4266                 echo " $fpossize bytes."
4267                 ;;
4268         esac
4269 else
4270         dflt="$longsize"
4271         echo " "
4272         echo "(I can't compile the test program.  Guessing...)" >&4
4273         rp="What is the size of your file positions (in bytes)?"
4274         . ./myread
4275         fpossize="$ans"
4276 fi
4277
4278
4279
4280 case "$lseeksize:$fpossize" in
4281 8:8) cat <<EOM
4282
4283 You can have files larger than 2 gigabytes.
4284 EOM
4285    val="$define" ;;
4286 *) cat <<EOM
4287
4288 Perl can be built to understand large files (files larger than 2 gigabytes)
4289 on some systems.  To do so, Configure must be run with -Duselargefiles.
4290
4291 If this doesn't make any sense to you, just accept the default 'y'.
4292 EOM
4293    case "$uselargefiles" in
4294    "$undef"|false|[nN]*) dflt='n' ;;
4295    *)   dflt='y' ;;
4296    esac
4297    rp='Try to understand large files, if available?'
4298    . ./myread
4299    case "$ans" in
4300    y|Y)         val="$define" ;;
4301    *)           val="$undef"  ;;
4302    esac
4303    ;;
4304 esac
4305 set uselargefiles
4306 eval $setvar
4307 case "$uselargefiles" in
4308 "$define")
4309 : Look for a hint-file generated 'call-back-unit'.  If the
4310 : user has specified that a large files perl is to be built,
4311 : we may need to set or change some other defaults.
4312         if $test -f uselfs.cbu; then
4313                 echo "Your platform has some specific hints for large file builds, using them..."
4314                 . ./uselfs.cbu
4315                 echo " "
4316                 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4317                 $cat >try.c <<EOCP
4318 #include <sys/types.h>
4319 #include <stdio.h>
4320 int main()
4321 {
4322     printf("%d\n", (int)sizeof($lseektype));
4323     return(0); 
4324 }
4325 EOCP
4326                 set try
4327                 if eval $compile_ok; then
4328                         lseeksize=`./try`
4329                         $echo " $lseeksize bytes." >&4
4330                 else
4331                         dflt="$lseeksize"
4332                         echo " "
4333                         echo "(I can't seem to compile the test program.  Guessing...)"
4334                         rp="What is the size of your file offsets (in bytes)?"
4335                         . ./myread
4336                         lseeksize="$ans"
4337                 fi
4338                 case "$fpostype" in
4339                 *_t) zzz="$fpostype"    ;;
4340                 *)   zzz="fpos_t"       ;;
4341                 esac
4342                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4343                 $cat > try.c <<EOCP
4344 #include <sys/types.h>
4345 #include <stdio.h>
4346 int main() {
4347     printf("%d\n", (int)sizeof($fpostype));
4348     exit(0);
4349 }
4350 EOCP
4351                 set try
4352                 if eval $compile_ok; then
4353                         yyy=`./try`
4354                         dflt="$lseeksize"
4355                         case "$yyy" in
4356                         '')     echo " "
4357                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4358                                 ;;
4359                         *)      fpossize=$yyy
4360                                 echo " $fpossize bytes."
4361                                 ;;
4362                         esac
4363                 else
4364                         dflt="$fpossize"
4365                         echo " "
4366                         echo "(I can't compile the test program.  Guessing...)" >&4
4367                         rp="What is the size of your file positions (in bytes)?"
4368                         . ./myread
4369                         fpossize="$ans"
4370                 fi
4371                 $rm -f try.c try
4372         fi
4373         ;;
4374 esac
4375
4376
4377 case "$usemorebits" in
4378 "$define"|true|[yY]*)
4379         use64bits="$define"
4380         uselongdouble="$define"
4381         usemorebits="$define"
4382         ;;
4383 *)      usemorebits="$undef"
4384         ;;
4385 esac
4386
4387
4388 case "$intsize:$longsize" in
4389 8:*|*:8) cat <<EOM
4390
4391 You have natively 64-bit integers.
4392 EOM
4393    val="$define"
4394    ;;
4395 *) case "$ccflags" in
4396    *-DUSE_64_BITS*|*-DUSE_LONG_LONG*) use64bits="$define";;
4397    *) case "$uselonglong" in
4398       $define|true|[yY]*) use64bits="$define";;
4399       esac
4400       ;;
4401    esac
4402    case "$use64bits" in
4403    $define|true|[yY]*) dflt='y';;
4404    *) dflt='n';;
4405    esac
4406 cat <<EOM
4407
4408 Perl can be built to take advantage of 64-bit integer types
4409 on some systems.  To do so, Configure must be run with -Duse64bits.
4410
4411 If this doesn't make any sense to you, just accept the default '$dflt'.
4412 EOM
4413    rp='Try to use 64-bit integers, if available?'
4414    . ./myread
4415    case "$ans" in
4416    [yY]*) val="$define" ;;
4417    *)     val="$undef"  ;;
4418    esac
4419    ;;
4420 esac
4421 set use64bits
4422 eval $setvar
4423
4424 case "$archname64" in
4425 '') archname64='' ;;    # not a typo
4426 esac
4427
4428 case "$use64bits" in
4429 "$define"|true|[yY]*)
4430 : Look for a hint-file generated 'call-back-unit'.  If the
4431 : user has specified that a 64-bit perl is to be built,
4432 : we may need to set or change some other defaults.
4433         if $test -f use64bits.cbu; then
4434                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4435                 . ./use64bits.cbu
4436         else
4437                 $cat <<EOM
4438 (Your platform doesn't have any specific hints for 64-bit builds.)
4439 EOM
4440                 case "$intsize:$longsize" in
4441 8:*|*:8) cat <<EOM
4442 (This is probably okay, as your system is a natively 64-bit system.)
4443 EOM
4444                   ;;
4445                 esac
4446                 case "$gccversion" in
4447                 '')     ;;
4448                 *)      case "$ccflags" in
4449                         *-DUSE_64_BITS*) ;;
4450                         *) $cat <<EOM
4451 But since you seem to be using gcc, I will now add -DUSE_64_BITS
4452 to the compilation flags to get long longs.
4453 EOM
4454                            ccflags="$ccflags -DUSE_64_BITS"
4455                            ;;
4456                         esac
4457                         ;;
4458                 esac
4459         fi
4460         ;;
4461 esac
4462
4463 : determine the architecture name
4464 echo " "
4465 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4466         tarch=`arch`"-$osname"
4467 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4468         if uname -m > tmparch 2>&1 ; then
4469                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4470                         -e 's/$/'"-$osname/" tmparch`
4471         else
4472                 tarch="$osname"
4473         fi
4474         $rm -f tmparch
4475 else
4476         tarch="$osname"
4477 fi
4478 case "$myarchname" in
4479 ''|"$tarch") ;;
4480 *)
4481         echo "(Your architecture name used to be $myarchname.)"
4482         archname=''
4483         ;;
4484 esac
4485 myarchname="$tarch"
4486 case "$archname" in
4487 '') dflt="$tarch";;
4488 *) dflt="$archname";;
4489 esac
4490 rp='What is your architecture name'
4491 . ./myread
4492 archname="$ans"
4493 case "$usethreads" in
4494 $define)
4495         echo "Threads selected." >&4
4496         case "$archname" in
4497         *-thread*) echo "...and architecture name already has -thread." >&4
4498                 ;;
4499         *)      archname="$archname-thread"
4500                 echo "...setting architecture name to $archname." >&4
4501                 ;;
4502         esac
4503         ;;
4504 esac
4505 case "$usemultiplicity" in
4506 $define)
4507         echo "Multiplicity selected." >&4
4508         case "$archname" in
4509         *-multi*) echo "...and architecture name already has -multi." >&4
4510                 ;;
4511         *)      archname="$archname-multi"
4512                 echo "...setting architecture name to $archname." >&4
4513                 ;;
4514         esac
4515         ;;
4516 esac
4517 case "$use64bits" in
4518 $define)
4519         case "$archname64" in
4520         '')
4521                 ;;
4522         *)
4523                 case "$archname" in
4524                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4525                         ;;
4526                 *)      archname="$archname-$archname64"
4527                         echo "...setting architecture name to $archname." >&4
4528                         ;;
4529                 esac
4530                 ;;
4531         esac
4532 esac
4533
4534 : determine root of directory hierarchy where package will be installed.
4535 case "$prefix" in
4536 '')
4537         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4538         ;;
4539 *)
4540         dflt="$prefix"
4541         ;;
4542 esac
4543 $cat <<EOM
4544
4545 By default, $package will be installed in $dflt/bin, manual pages
4546 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4547 installation directories. Typically this is something like /usr/local.
4548 If you wish to have binaries under /usr/bin but other parts of the
4549 installation under /usr/local, that's ok: you will be prompted
4550 separately for each of the installation directories, the prefix being
4551 only used to set the defaults.
4552
4553 EOM
4554 fn=d~
4555 rp='Installation prefix to use?'
4556 . ./getfile
4557 oldprefix=''
4558 case "$prefix" in
4559 '') ;;
4560 *)
4561         case "$ans" in
4562         "$prefix") ;;
4563         *) oldprefix="$prefix";;
4564         esac
4565         ;;
4566 esac
4567 prefix="$ans"
4568 prefixexp="$ansexp"
4569
4570 : is AFS running?
4571 echo " "
4572 case "$afs" in
4573 $define|true)   afs=true ;;
4574 $undef|false)   afs=false ;;
4575 *)      if test -d /afs; then
4576                 afs=true
4577         else
4578                 afs=false
4579         fi
4580         ;;
4581 esac
4582 if $afs; then
4583         echo "AFS may be running... I'll be extra cautious then..." >&4
4584 else
4585         echo "AFS does not seem to be running..." >&4
4586 fi
4587
4588 : determine installation prefix for where package is to be installed.
4589 if $afs; then 
4590 $cat <<EOM
4591
4592 Since you are running AFS, I need to distinguish the directory in which
4593 files will reside from the directory in which they are installed (and from
4594 which they are presumably copied to the former directory by occult means).
4595
4596 EOM
4597         case "$installprefix" in
4598         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4599         *) dflt="$installprefix";;
4600         esac
4601 else
4602 $cat <<EOM
4603
4604 In some special cases, particularly when building $package for distribution,
4605 it is convenient to distinguish between the directory in which files should 
4606 be installed from the directory ($prefix) in which they 
4607 will eventually reside.  For most users, these two directories are the same.
4608
4609 EOM
4610         case "$installprefix" in
4611         '') dflt=$prefix ;;
4612         *) dflt=$installprefix;;
4613         esac
4614 fi
4615 fn=d~
4616 rp='What installation prefix should I use for installing files?'
4617 . ./getfile
4618 installprefix="$ans"
4619 installprefixexp="$ansexp"
4620
4621 : set the prefixit variable, to compute a suitable default value
4622 prefixit='case "$3" in
4623 ""|none)
4624         case "$oldprefix" in
4625         "") eval "$1=\"\$$2\"";;
4626         *)
4627                 case "$3" in
4628                 "") eval "$1=";;
4629                 none)
4630                         eval "tp=\"\$$2\"";
4631                         case "$tp" in
4632                         ""|" ") eval "$1=\"\$$2\"";;
4633                         *) eval "$1=";;
4634                         esac;;
4635                 esac;;
4636         esac;;
4637 *)
4638         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4639         case "$tp" in
4640         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4641         /*-$oldprefix/*|\~*-$oldprefix/*)
4642                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4643         *) eval "$1=\"\$$2\"";;
4644         esac;;
4645 esac'
4646
4647 : set the base revision
4648 baserev=5.0
4649
4650
4651 : get the patchlevel
4652 echo " "
4653 echo "Getting the current patchlevel..." >&4
4654 if $test -r $rsrc/patchlevel.h;then
4655         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4656         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4657         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4658         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4659         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4660 else
4661         patchlevel=0
4662         subversion=0
4663         api_revision=0
4664         api_version=0
4665         api_subversion=0
4666 fi
4667 $echo $n "(You have $package" $c
4668 case "$package" in
4669 "*$baserev")    ;;
4670 *)              $echo $n " $baserev" $c ;;
4671 esac
4672 $echo $n " patchlevel $patchlevel" $c
4673 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4674 echo ".)"
4675 case "$osname" in
4676 dos|vms)
4677         : XXX Should be a Configure test for double-dots in filenames.
4678         version=`echo $baserev $patchlevel $subversion | \
4679                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4680         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4681                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4682         ;;
4683 *)
4684         version=`echo $baserev $patchlevel $subversion | \
4685                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4686         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4687                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4688         ;;
4689 esac
4690 : Special case the 5.005_xx maintenance series, which used 5.005
4691 : without any subversion label as a subdirectory in $sitelib
4692 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4693         api_versionstring='5.005'
4694 fi
4695
4696 : determine installation style
4697 : For now, try to deduce it from prefix unless it is already set.
4698 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4699 case "$installstyle" in
4700 '')     case "$prefix" in
4701                 *perl*) dflt='lib';;
4702                 *) dflt='lib/perl5' ;;
4703         esac
4704         ;;
4705 *)      dflt='lib/perl5' ;;
4706 esac
4707 : Probably not worth prompting for this since we prompt for all
4708 : the directories individually, and the prompt would be too long and
4709 : confusing anyway.
4710 installstyle=$dflt
4711
4712 : determine where private library files go
4713 : Usual default is /usr/local/lib/perl5/$version.
4714 : Also allow things like /opt/perl/lib/$version, since 
4715 : /opt/perl/lib/perl5... would be redundant.
4716 : The default "style" setting is made in installstyle.U
4717 case "$installstyle" in
4718 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4719 *)       set dflt privlib lib/$version ;;
4720 esac
4721 eval $prefixit
4722 $cat <<EOM
4723
4724 There are some auxiliary files for $package that need to be put into a
4725 private library directory that is accessible by everyone.
4726
4727 EOM
4728 fn=d~+
4729 rp='Pathname where the private library files will reside?'
4730 . ./getfile
4731 privlib="$ans"
4732 privlibexp="$ansexp"
4733 : Change installation prefix, if necessary.
4734 if $test X"$prefix" != X"$installprefix"; then
4735         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4736 else
4737         installprivlib="$privlibexp"
4738 fi
4739
4740 : set the prefixup variable, to restore leading tilda escape
4741 prefixup='case "$prefixexp" in
4742 "$prefix") ;;
4743 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4744 esac'
4745
4746 : determine where public architecture dependent libraries go
4747 set archlib archlib
4748 eval $prefixit
4749 : privlib default is /usr/local/lib/$package/$version
4750 : archlib default is /usr/local/lib/$package/$version/$archname
4751 : privlib may have an optional trailing /share.
4752 tdflt=`echo $privlib | $sed 's,/share$,,'`
4753 tdflt=$tdflt/$archname
4754 case "$archlib" in
4755 '')     dflt=$tdflt
4756         ;;
4757 *)      dflt="$archlib"
4758     ;;
4759 esac
4760 $cat <<EOM
4761
4762 $spackage contains architecture-dependent library files.  If you are
4763 sharing libraries in a heterogeneous environment, you might store
4764 these files in a separate location.  Otherwise, you can just include
4765 them with the rest of the public library files.
4766
4767 EOM
4768 fn=d+~
4769 rp='Where do you want to put the public architecture-dependent libraries?'
4770 . ./getfile
4771 archlib="$ans"
4772 archlibexp="$ansexp"
4773 if $test X"$archlib" = X"$privlib"; then
4774         d_archlib="$undef"
4775 else
4776         d_archlib="$define"
4777 fi
4778 : Change installation prefix, if necessary.
4779 if $test X"$prefix" != X"$installprefix"; then
4780         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4781 else
4782         installarchlib="$archlibexp"
4783 fi
4784
4785
4786 : Binary compatibility with 5.005 is not possible for builds
4787 : with advanced features
4788 case "$usethreads$usemultiplicity" in
4789 *define*)
4790         bincompat5005="$undef"
4791         d_bincompat5005="$undef"
4792         ;;
4793 *)      $cat <<EOM
4794
4795 Perl 5.006 can be compiled for binary compatibility with 5.005.
4796 If you decide to do so, you will be able to continue using most
4797 of the extensions that were compiled for Perl 5.005.
4798
4799 EOM
4800         case "$bincompat5005$d_bincompat5005" in
4801         *"$undef"*) dflt=n ;;
4802         *) dflt=y ;;
4803         esac
4804         rp='Binary compatibility with Perl 5.005?'
4805         . ./myread
4806         case "$ans" in
4807         y*) val="$define" ;;
4808         *)  val="$undef" ;;
4809         esac
4810         set d_bincompat5005
4811         eval $setvar
4812         case "$d_bincompat5005" in
4813         "$define")
4814                 bincompat5005="$define"
4815                 ;;
4816         *)      bincompat5005="$undef"
4817                 d_bincompat5005="$undef"
4818                 ;;
4819         esac
4820         ;;
4821 esac
4822
4823
4824 : see if setuid scripts can be secure
4825 $cat <<EOM
4826
4827 Some kernels have a bug that prevents setuid #! scripts from being
4828 secure.  Some sites have disabled setuid #! scripts because of this.
4829
4830 First let's decide if your kernel supports secure setuid #! scripts.
4831 (If setuid #! scripts would be secure but have been disabled anyway,
4832 don't say that they are secure if asked.)
4833
4834 EOM
4835
4836 val="$undef"
4837 if $test -d /dev/fd; then
4838         echo "#!$ls" >reflect
4839         chmod +x,u+s reflect
4840         ./reflect >flect 2>&1
4841         if $contains "/dev/fd" flect >/dev/null; then
4842                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4843                 val="$define"
4844         else
4845                 $cat <<EOM
4846 If you are not sure if they are secure, I can check but I'll need a
4847 username and password different from the one you are using right now.
4848 If you don't have such a username or don't want me to test, simply
4849 enter 'none'.
4850
4851 EOM
4852                 rp='Other username to test security of setuid scripts with?'
4853                 dflt='none'
4854                 . ./myread
4855                 case "$ans" in
4856                 n|none)
4857                         case "$d_suidsafe" in
4858                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4859                                 dflt=n;;
4860                         "$undef")
4861                                 echo "Well, the $hint value is *not* secure." >&4
4862                                 dflt=n;;
4863                         *)      echo "Well, the $hint value *is* secure." >&4
4864                                 dflt=y;;
4865                         esac
4866                         ;;
4867                 *)
4868                         $rm -f reflect flect
4869                         echo "#!$ls" >reflect
4870                         chmod +x,u+s reflect
4871                         echo >flect
4872                         chmod a+w flect
4873                         echo '"su" will (probably) prompt you for '"$ans's password."
4874                         su $ans -c './reflect >flect'
4875                         if $contains "/dev/fd" flect >/dev/null; then
4876                                 echo "Okay, it looks like setuid scripts are secure." >&4
4877                                 dflt=y
4878                         else
4879                                 echo "I don't think setuid scripts are secure." >&4
4880                                 dflt=n
4881                         fi
4882                         ;;
4883                 esac
4884                 rp='Does your kernel have *secure* setuid scripts?'
4885                 . ./myread
4886                 case "$ans" in
4887                 [yY]*)  val="$define";;
4888                 *)      val="$undef";;
4889                 esac
4890         fi
4891 else
4892         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4893         echo "(That's for file descriptors, not floppy disks.)"
4894         val="$undef"
4895 fi
4896 set d_suidsafe
4897 eval $setvar
4898
4899 $rm -f reflect flect
4900
4901 : now see if they want to do setuid emulation
4902 echo " "
4903 val="$undef"
4904 case "$d_suidsafe" in
4905 "$define")
4906         val="$undef"
4907         echo "No need to emulate SUID scripts since they are secure here." >& 4
4908         ;;
4909 *)
4910         $cat <<EOM
4911 Some systems have disabled setuid scripts, especially systems where
4912 setuid scripts cannot be secure.  On systems where setuid scripts have
4913 been disabled, the setuid/setgid bits on scripts are currently
4914 useless.  It is possible for $package to detect those bits and emulate
4915 setuid/setgid in a secure fashion.  This emulation will only work if
4916 setuid scripts have been disabled in your kernel.
4917
4918 EOM
4919         case "$d_dosuid" in
4920         "$define") dflt=y ;;
4921         *) dflt=n ;;
4922         esac
4923         rp="Do you want to do setuid/setgid emulation?"
4924         . ./myread
4925         case "$ans" in
4926         [yY]*)  val="$define";;
4927         *)      val="$undef";;
4928         esac
4929         ;;
4930 esac
4931 set d_dosuid
4932 eval $setvar
4933
4934 : determine filename position in cpp output
4935 echo " "
4936 echo "Computing filename position in cpp output for #include directives..." >&4
4937 echo '#include <stdio.h>' > foo.c
4938 $cat >fieldn <<EOF
4939 $startsh
4940 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4941 $grep '^[       ]*#.*stdio\.h' | \
4942 while read cline; do
4943         pos=1
4944         set \$cline
4945         while $test \$# -gt 0; do
4946                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4947                         echo "\$pos"
4948                         exit 0
4949                 fi
4950                 shift
4951                 pos=\`expr \$pos + 1\`
4952         done
4953 done
4954 EOF
4955 chmod +x fieldn
4956 fieldn=`./fieldn`
4957 $rm -f foo.c fieldn
4958 case $fieldn in
4959 '') pos='???';;
4960 1) pos=first;;
4961 2) pos=second;;
4962 3) pos=third;;
4963 *) pos="${fieldn}th";;
4964 esac
4965 echo "Your cpp writes the filename in the $pos field of the line."
4966
4967 : locate header file
4968 $cat >findhdr <<EOF
4969 $startsh
4970 wanted=\$1
4971 name=''
4972 for usrincdir in $usrinc
4973 do
4974         if test -f \$usrincdir/\$wanted; then
4975                 echo "\$usrincdir/\$wanted"
4976                 exit 0
4977         fi
4978 done
4979 awkprg='{ print \$$fieldn }'
4980 echo "#include <\$wanted>" > foo\$\$.c
4981 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4982 $grep "^[       ]*#.*\$wanted" | \
4983 while read cline; do
4984         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4985         case "\$name" in
4986         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4987         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4988         *) exit 2;;
4989         esac;
4990 done;
4991 #
4992 # status = 0: grep returned 0 lines, case statement not executed
4993 # status = 1: headerfile found
4994 # status = 2: while loop executed, no headerfile found
4995 #
4996 status=\$?
4997 $rm -f foo\$\$.c;
4998 if test \$status -eq 1; then
4999         exit 0;
5000 fi
5001 exit 1
5002 EOF
5003 chmod +x findhdr
5004
5005 : define an alternate in-header-list? function
5006 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5007 cont=true; xxf="echo \"<\$1> found.\" >&4";
5008 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5009 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5010 esac;
5011 case $# in 4) instead=instead;; *) instead="at last";; esac;
5012 while $test "$cont"; do
5013         xxx=`./findhdr $1`
5014         var=$2; eval "was=\$$2";
5015         if $test "$xxx" && $test -r "$xxx";
5016         then eval $xxf;
5017         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5018                 cont="";
5019         else eval $xxnf;
5020         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5021         set $yyy; shift; shift; yyy=$@;
5022         case $# in 0) cont="";;
5023         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5024                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5025         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5026                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5027         esac;
5028 done;
5029 while $test "$yyy";
5030 do set $yyy; var=$2; eval "was=\$$2";
5031         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5032         set $yyy; shift; shift; yyy=$@;
5033 done'
5034
5035 : see if this is a malloc.h system
5036 set malloc.h i_malloc
5037 eval $inhdr
5038
5039 : see if stdlib is available
5040 set stdlib.h i_stdlib
5041 eval $inhdr
5042
5043 : determine which malloc to compile in
5044 echo " "
5045 case "$usemymalloc" in
5046 ''|[yY]*|true|$define)  dflt='y' ;;
5047 *)      dflt='n' ;;
5048 esac
5049 rp="Do you wish to attempt to use the malloc that comes with $package?"
5050 . ./myread
5051 usemymalloc="$ans"
5052 case "$ans" in
5053 y*|true)
5054         usemymalloc='y'
5055         mallocsrc='malloc.c'
5056         mallocobj="malloc$_o"
5057         d_mymalloc="$define"
5058         case "$libs" in
5059         *-lmalloc*)
5060                 : Remove malloc from list of libraries to use
5061                 echo "Removing unneeded -lmalloc from library list" >&4
5062                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5063                 shift
5064                 libs="$*"
5065                 echo "libs = $libs" >&4
5066                 ;;
5067         esac
5068         ;;
5069 *)
5070         usemymalloc='n'
5071         mallocsrc=''
5072         mallocobj=''
5073         d_mymalloc="$undef"
5074         ;;
5075 esac
5076
5077 : compute the return types of malloc and free
5078 echo " "
5079 $cat >malloc.c <<END
5080 #$i_malloc I_MALLOC
5081 #$i_stdlib I_STDLIB
5082 #include <stdio.h>
5083 #include <sys/types.h>
5084 #ifdef I_MALLOC
5085 #include <malloc.h>
5086 #endif
5087 #ifdef I_STDLIB
5088 #include <stdlib.h>
5089 #endif
5090 #ifdef TRY_MALLOC
5091 void *malloc();
5092 #endif
5093 #ifdef TRY_FREE
5094 void free();
5095 #endif
5096 END
5097 case "$malloctype" in
5098 '')
5099         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5100                 malloctype='void *'
5101         else
5102                 malloctype='char *'
5103         fi
5104         ;;
5105 esac
5106 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5107
5108 case "$freetype" in
5109 '')
5110         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5111                 freetype='void'
5112         else
5113                 freetype='int'
5114         fi
5115         ;;
5116 esac
5117 echo "Your system uses $freetype free(), it would seem." >&4
5118 $rm -f malloc.[co]
5119 $cat <<EOM
5120
5121 The installation process will also create a directory for
5122 vendor-supplied add-ons.  Vendors who supply perl with their system
5123 may find it convenient to place all vendor-supplied files in this
5124 directory rather than in the main distribution directory.  This will
5125 ease upgrades between binary-compatible maintenance versions of perl.
5126
5127 Of course you may also use these directories in whatever way you see
5128 fit.  For example, you might use them to access modules shared over a
5129 company-wide network.
5130
5131 The default answer should be fine for most people.
5132 This causes further questions about vendor add-ons to be skipped
5133 and no vendor-specific directories will be configured for perl.
5134
5135 EOM
5136 rp='Do you want to configure vendor-specific add-on directories?'
5137 case "$usevendorprefix" in
5138 define|true|[yY]*) dflt=y ;;
5139 *) dflt=n ;;
5140 esac
5141 . ./myread
5142 case "$ans" in
5143 [yY]*)  fn=d~+
5144         rp='Installation prefix to use for vendor-supplied add-ons?'
5145         case "$vendorprefix" in
5146         '') dflt='' ;;
5147         *)  dflt=$vendorprefix ;;
5148         esac
5149         . ./getfile
5150         oldvendorprefix=''
5151         case "$vendorprefix" in
5152         '') ;;
5153         *)      case "$ans" in
5154                 "$prefix") ;;
5155                 *) oldvendorprefix="$prefix";;
5156                 esac
5157                 ;;
5158         esac
5159         usevendorprefix="$define"
5160         vendorprefix="$ans"
5161         vendorprefixexp="$ansexp"
5162         ;;
5163 *)      usevendorprefix="$undef"
5164         vendorprefix=''
5165         vendorprefixexp=''
5166         ;;
5167 esac
5168
5169 case "$vendorprefix" in
5170 '')     d_vendorlib="$undef"
5171         vendorlib=''
5172         vendorlibexp=''
5173         ;;
5174 *)      d_vendorlib="$define"
5175         : determine where vendor-supplied modules go.
5176         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5177         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5178         case "$installstyle" in
5179         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5180         *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5181         esac
5182         fn=d~+
5183         rp='Pathname for the vendor-supplied library files?'
5184         . ./getfile
5185         vendorlib="$ans"
5186         vendorlibexp="$ansexp"
5187         : Change installation prefix, if necessary.
5188         if $test X"$prefix" != X"$installprefix"; then
5189                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5190         else
5191                 installvendorlib="$vendorlibexp"
5192         fi
5193         ;;
5194 esac
5195
5196 : Cruising for prototypes
5197 echo " "
5198 echo "Checking out function prototypes..." >&4
5199 $cat >prototype.c <<'EOCP'
5200 int main(int argc, char *argv[]) {
5201         exit(0);}
5202 EOCP
5203 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5204         echo "Your C compiler appears to support function prototypes."
5205         val="$define"
5206 else
5207         echo "Your C compiler doesn't seem to understand function prototypes."
5208         val="$undef"
5209 fi
5210 set prototype
5211 eval $setvar
5212 $rm -f prototype*
5213
5214 case "$prototype" in
5215 "$define") ;;
5216 *)      ansi2knr='ansi2knr'
5217         echo " "
5218         cat <<EOM >&4
5219
5220 $me:  FATAL ERROR:
5221 This version of $package can only be compiled by a compiler that 
5222 understands function prototypes.  Unfortunately, your C compiler 
5223         $cc $ccflags
5224 doesn't seem to understand them.  Sorry about that.
5225
5226 If GNU cc is available for your system, perhaps you could try that instead.  
5227
5228 Eventually, we hope to support building Perl with pre-ANSI compilers.
5229 If you would like to help in that effort, please contact <perlbug@perl.org>.
5230
5231 Aborting Configure now.
5232 EOM
5233         exit 2
5234         ;;
5235 esac
5236
5237 : determine where public executables go
5238 echo " "
5239 set dflt bin bin
5240 eval $prefixit
5241 fn=d~
5242 rp='Pathname where the public executables will reside?'
5243 . ./getfile
5244 if $test "X$ansexp" != "X$binexp"; then
5245         installbin=''
5246 fi
5247 bin="$ans"
5248 binexp="$ansexp"
5249 : Change installation prefix, if necessary.
5250 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5251 if $test X"$prefix" != X"$installprefix"; then
5252         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5253 else
5254         installbin="$binexp"
5255 fi
5256
5257 $cat <<EOM
5258
5259 After $package is installed, you may wish to install various
5260 add-on modules and utilities.  Typically, these add-ons will
5261 be installed under $prefix with the rest
5262 of this package.  However, you may wish to install such add-ons
5263 elsewhere under a different prefix.
5264
5265 If you do not wish to put everything under a single prefix, that's
5266 ok.  You will be prompted for the individual locations; this siteprefix
5267 is only used to suggest the defaults.
5268
5269 The default should be fine for most people.
5270
5271 EOM
5272 fn=d~+
5273 rp='Installation prefix to use for add-on modules and utilities?'
5274 : XXX Here might be another good place for an installstyle setting.
5275 case "$siteprefix" in
5276 '') dflt=$prefix ;;
5277 *)  dflt=$siteprefix ;;
5278 esac
5279 . ./getfile
5280 oldsiteprefix=''
5281 case "$siteprefix" in
5282 '') ;;
5283 *)
5284         case "$ans" in
5285         "$prefix") ;;
5286         *) oldsiteprefix="$prefix";;
5287         esac
5288         ;;
5289 esac
5290 siteprefix="$ans"
5291 siteprefixexp="$ansexp"
5292
5293 : determine where site specific libraries go.
5294 : Usual default is /usr/local/lib/perl5/site_perl/$version
5295 : The default "style" setting is made in installstyle.U
5296 : XXX No longer works with Prefixit stuff.
5297 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5298 case "$installstyle" in
5299 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5300 *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5301 esac
5302 $cat <<EOM
5303
5304 The installation process will create a directory for
5305 site-specific extensions and modules.  Most users find it convenient
5306 to place all site-specific files in this directory rather than in the
5307 main distribution directory.
5308
5309 EOM
5310 fn=d~+
5311 rp='Pathname for the site-specific library files?'
5312 . ./getfile
5313 sitelib="$ans"
5314 sitelibexp="$ansexp"
5315 : Change installation prefix, if necessary.
5316 if $test X"$prefix" != X"$installprefix"; then
5317         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5318 else
5319         installsitelib="$sitelibexp"
5320 fi
5321
5322 : Determine list of previous versions to include in @INC
5323 $cat > getverlist <<EOPL
5324 #!$perl -w
5325 use File::Basename;
5326 \$api_versionstring = "$api_versionstring";
5327 \$version = "$version";
5328 \$sitelib = "$sitelib";
5329 \$archname = "$archname";
5330 EOPL
5331         $cat >> getverlist <<'EOPL'
5332 # Can't have leading @ because metaconfig interprets it as a command!
5333 ;@inc_version_list=();
5334 $stem=dirname($sitelib);
5335 # Redo to do opendir/readdir? 
5336 if (-d $stem) {
5337     chdir($stem);
5338     ;@candidates = glob("5.*");
5339 }
5340 else {
5341     ;@candidates = ();
5342 }
5343
5344 # XXX ToDo:  These comparisons must be reworked when two-digit
5345 # subversions come along, so that 5.7.10 compares as greater than
5346 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5347 # widespread that we can use the built-in version vectors rather
5348 # than reinventing them here.  For 5.6.0, however, we must
5349 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5350 foreach $d (@candidates) {
5351     if ($d lt $version) {
5352         if ($d ge $api_versionstring) {
5353             unshift(@inc_version_list, "$d/$archname", $d);
5354         }
5355         elsif ($d ge "5.005") {
5356             unshift(@inc_version_list, $d);
5357         }
5358     }
5359     else {
5360         # Skip newer version.  I.e. don't look in
5361         # 5.7.0 if we're installing 5.6.1.
5362     }
5363 }
5364
5365 if (@inc_version_list) {
5366     print join(' ', @inc_version_list);
5367 }
5368 else {
5369     # Blank space to preserve value for next Configure run.
5370     print " ";
5371 }
5372 EOPL
5373 chmod +x getverlist
5374 case "$inc_version_list" in
5375 '')     if test -x $perl; then
5376                 dflt=`$perl getverlist`
5377         else
5378                 dflt='none'
5379         fi
5380         ;;
5381 $undef) dflt='none' ;;
5382 *)  dflt="$inc_version_list" ;;
5383 esac
5384 $cat <<'EOM'
5385
5386 In order to ease the process of upgrading, this version of perl 
5387 can be configured to use modules built and installed with earlier 
5388 versions of perl that were installed under $prefix.  Specify here
5389 the list of earlier versions that this version of perl should check.
5390 If Configure detected no earlier versions of perl installed under
5391 $prefix, then the list will be empty.  Answer 'none' to tell perl
5392 to not search earlier versions.
5393
5394 The default should almost always be sensible, so if you're not sure,
5395 just accept the default.
5396 EOM
5397
5398 rp='List of earlier versions to include in @INC?'
5399 . ./myread
5400 case "$ans" in
5401 [Nn]one) inc_version_list=' ' ;;
5402 *) inc_version_list="$ans" ;;
5403 esac
5404 case "$inc_version_list" in
5405 ''|' ') 
5406         inc_version_list_init='0';;
5407 *)      inc_version_list_init=`echo $inc_version_list |
5408                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5409         ;;
5410 esac
5411 $rm -f getverlist
5412
5413 : determine whether to install perl also as /usr/bin/perl
5414
5415 echo " "
5416 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5417         $cat <<EOM
5418 Many scripts expect to perl to be installed as /usr/bin/perl.
5419 I can install the perl you are about to compile also as /usr/bin/perl
5420 (in addition to $installbin/perl).
5421 EOM
5422         case "$installusrbinperl" in
5423         "$undef"|[nN]*) dflt='n';;
5424         *)              dflt='y';;
5425         esac
5426         rp="Do you want to install perl as /usr/bin/perl?"
5427         . ./myread
5428         case "$ans" in
5429         [yY]*)  val="$define";;
5430         *)      val="$undef" ;;
5431         esac
5432 else
5433         val="$undef"
5434 fi
5435 set installusrbinperl
5436 eval $setvar
5437
5438 echo " "
5439 echo "Checking for GNU C Library..." >&4
5440 cat >gnulibc.c <<EOM
5441 #include <stdio.h>
5442 int main()
5443 {
5444 #ifdef __GLIBC__
5445     exit(0);
5446 #else
5447     exit(1);
5448 #endif
5449 }
5450 EOM
5451 set gnulibc
5452 if eval $compile_ok && ./gnulibc; then
5453         val="$define"
5454         echo "You are using the GNU C Library"
5455 else
5456         val="$undef"
5457         echo "You are not using the GNU C Library"
5458 fi
5459 $rm -f gnulibc*
5460 set d_gnulibc
5461 eval $setvar
5462
5463 : see if nm is to be used to determine whether a symbol is defined or not
5464 case "$usenm" in
5465 '')
5466         dflt=''
5467         case "$d_gnulibc" in
5468         "$define")
5469                 echo " "
5470                 echo "nm probably won't work on the GNU C Library." >&4
5471                 dflt=n
5472                 ;;
5473         esac
5474         case "$dflt" in
5475         '') 
5476                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5477                         echo " "
5478                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5479                         echo "'nm' won't be sufficient on this sytem." >&4
5480                         dflt=n
5481                 fi
5482                 ;;
5483         esac
5484         case "$dflt" in
5485         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5486                 if $test $dflt -gt 20; then
5487                         dflt=y
5488                 else
5489                         dflt=n
5490                 fi
5491                 ;;
5492         esac
5493         ;;
5494 *)
5495         case "$usenm" in
5496         true|$define) dflt=y;;
5497         *) dflt=n;;
5498         esac
5499         ;;
5500 esac
5501 $cat <<EOM
5502
5503 I can use $nm to extract the symbols from your C libraries. This
5504 is a time consuming task which may generate huge output on the disk (up
5505 to 3 megabytes) but that should make the symbols extraction faster. The
5506 alternative is to skip the 'nm' extraction part and to compile a small
5507 test program instead to determine whether each symbol is present. If
5508 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5509 this may be the best solution.
5510
5511 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5512
5513 EOM
5514 rp="Shall I use $nm to extract C symbols from the libraries?"
5515 . ./myread
5516 case "$ans" in
5517 [Nn]*) usenm=false;;
5518 *) usenm=true;;
5519 esac
5520
5521 runnm=$usenm
5522 case "$reuseval" in
5523 true) runnm=false;;
5524 esac
5525
5526 : nm options which may be necessary
5527 case "$nm_opt" in
5528 '') if $test -f /mach_boot; then
5529                 nm_opt=''       # Mach
5530         elif $test -d /usr/ccs/lib; then
5531                 nm_opt='-p'     # Solaris (and SunOS?)
5532         elif $test -f /dgux; then
5533                 nm_opt='-p'     # DG-UX
5534         elif $test -f /lib64/rld; then
5535                 nm_opt='-p'     # 64-bit Irix
5536         else
5537                 nm_opt=''
5538         fi;;
5539 esac
5540
5541 : nm options which may be necessary for shared libraries but illegal
5542 : for archive libraries.  Thank you, Linux.
5543 case "$nm_so_opt" in
5544 '')     case "$myuname" in
5545         *linux*)
5546                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5547                         nm_so_opt='--dynamic'
5548                 fi
5549                 ;;
5550         esac
5551         ;;
5552 esac
5553
5554 case "$runnm" in
5555 true)
5556 : get list of predefined functions in a handy place
5557 echo " "
5558 case "$libc" in
5559 '') libc=unknown
5560         case "$libs" in
5561         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5562         esac
5563         ;;
5564 esac
5565 libnames='';
5566 case "$libs" in
5567 '') ;;
5568 *)  for thislib in $libs; do
5569         case "$thislib" in
5570         -lc|-lc_s)
5571                 : Handle C library specially below.
5572                 ;;
5573         -l*)
5574                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5575                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5576                         :
5577                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5578                         :
5579                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5580                         :
5581                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5582                         :
5583                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5584                         :
5585                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5586                         :
5587                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5588                         :
5589                 else
5590                         try=''
5591                 fi
5592                 libnames="$libnames $try"
5593                 ;;
5594         *) libnames="$libnames $thislib" ;;
5595         esac
5596         done
5597         ;;
5598 esac
5599 xxx=normal
5600 case "$libc" in
5601 unknown)
5602         set /lib/libc.$so
5603         for xxx in $libpth; do
5604                 $test -r $1 || set $xxx/libc.$so
5605                 : The messy sed command sorts on library version numbers.
5606                 $test -r $1 || \
5607                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5608                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5609                                 h
5610                                 s/[0-9][0-9]*/0000&/g
5611                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5612                                 G
5613                                 s/\n/ /' | \
5614                          sort | $sed -e 's/^.* //'`
5615                 eval set \$$#
5616         done
5617         $test -r $1 || set /usr/ccs/lib/libc.$so
5618         $test -r $1 || set /lib/libsys_s$_a
5619         ;;
5620 *)
5621         set blurfl
5622         ;;
5623 esac
5624 if $test -r "$1"; then
5625         echo "Your (shared) C library seems to be in $1."
5626         libc="$1"
5627 elif $test -r /lib/libc && $test -r /lib/clib; then
5628         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5629         xxx=apollo
5630         libc='/lib/clib /lib/libc'
5631         if $test -r /lib/syslib; then
5632                 echo "(Your math library is in /lib/syslib.)"
5633                 libc="$libc /lib/syslib"
5634         fi
5635 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5636         echo "Your C library seems to be in $libc, as you said before."
5637 elif $test -r $incpath/usr/lib/libc$_a; then
5638         libc=$incpath/usr/lib/libc$_a;
5639         echo "Your C library seems to be in $libc.  That's fine."
5640 elif $test -r /lib/libc$_a; then
5641         libc=/lib/libc$_a;
5642         echo "Your C library seems to be in $libc.  You're normal."
5643 else
5644         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5645                 :
5646         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5647                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5648         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5649                 :
5650         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5651                 :
5652         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5653                 :
5654         else
5655                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5656         fi
5657         if $test -r "$tans"; then
5658                 echo "Your C library seems to be in $tans, of all places."
5659                 libc=$tans
5660         else
5661                 libc='blurfl'
5662         fi
5663 fi
5664 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5665         dflt="$libc"
5666         cat <<EOM
5667
5668 If the guess above is wrong (which it might be if you're using a strange
5669 compiler, or your machine supports multiple models), you can override it here.
5670
5671 EOM
5672 else
5673         dflt=''
5674         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5675         cat >&4 <<EOM
5676 I can't seem to find your C library.  I've looked in the following places:
5677
5678 EOM
5679         $sed 's/^/      /' libpath
5680         cat <<EOM
5681
5682 None of these seems to contain your C library. I need to get its name...
5683
5684 EOM
5685 fi
5686 fn=f
5687 rp='Where is your C library?'
5688 . ./getfile
5689 libc="$ans"
5690
5691 echo " "
5692 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5693 set X `cat libnames`
5694 shift
5695 xxx=files
5696 case $# in 1) xxx=file; esac
5697 echo "Extracting names from the following $xxx for later perusal:" >&4
5698 echo " "
5699 $sed 's/^/      /' libnames >&4
5700 echo " "
5701 $echo $n "This may take a while...$c" >&4
5702
5703 for file in $*; do
5704         case $file in
5705         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5706         *) $nm $nm_opt $file 2>/dev/null;;
5707         esac
5708 done >libc.tmp
5709
5710 $echo $n ".$c"
5711 $grep fprintf libc.tmp > libc.ptf
5712 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5713 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5714 xxx='[ADTSIW]'
5715 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5716         eval $xscan;\
5717         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5718                 eval $xrun
5719 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5720         eval $xscan;\
5721         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5722                 eval $xrun
5723 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5724         eval $xscan;\
5725         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5726                 eval $xrun
5727 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5728         eval $xscan;\
5729         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5730                 eval $xrun
5731 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5732         eval $xscan;\
5733         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5734                 eval $xrun
5735 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5736         eval $xscan;\
5737         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5738                 eval $xrun
5739 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5740                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5741         eval $xscan;\
5742         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5743                 eval $xrun
5744 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5745         eval $xscan;\
5746         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5747                 eval $xrun
5748 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5749         eval $xscan;\
5750         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5751                 eval $xrun
5752 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5753         eval $xscan;\
5754         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5755                 eval $xrun
5756 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5757         eval $xscan;\
5758         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5759                 eval $xrun
5760 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5761         eval $xscan;\
5762         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5763                 eval $xrun
5764 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5765         eval $xscan;\
5766         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5767                 eval $xrun
5768 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5769         eval $xscan;\
5770         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5771                 eval $xrun
5772 else
5773         $nm -p $* 2>/dev/null >libc.tmp
5774         $grep fprintf libc.tmp > libc.ptf
5775         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5776                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5777         then
5778                 nm_opt='-p'
5779                 eval $xrun
5780         else
5781                 echo " "
5782                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5783                 com=''
5784                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5785                         for thisname in $libnames $libc; do
5786                                 $ar t $thisname >>libc.tmp
5787                         done
5788                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5789                         echo "Ok." >&4
5790                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5791                         # Repeat libc to extract forwarders to DLL entries too
5792                         for thisname in $libnames $libc; do
5793                                 $ar tv $thisname >>libc.tmp
5794                                 # Revision 50 of EMX has bug in $ar.
5795                                 # it will not extract forwarders to DLL entries
5796                                 # Use emximp which will extract exactly them.
5797                                 emximp -o tmp.imp $thisname \
5798                                     2>/dev/null && \
5799                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5800                                     < tmp.imp >>libc.tmp
5801                                 $rm tmp.imp
5802                         done
5803                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5804                         echo "Ok." >&4
5805                 else
5806                         echo "$ar didn't seem to work right." >&4
5807                         echo "Maybe this is a Cray...trying bld instead..." >&4
5808                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5809                         then
5810                                 for thisname in $libnames; do
5811                                         bld t $libnames | \
5812                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5813                                         $ar t $thisname >>libc.tmp
5814                                 done
5815                                 echo "Ok." >&4
5816                         else
5817                                 echo "That didn't work either.  Giving up." >&4
5818                                 exit 1
5819                         fi
5820                 fi
5821         fi
5822 fi
5823 nm_extract="$com"
5824 if $test -f /lib/syscalls.exp; then
5825         echo " "
5826         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5827         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5828 fi
5829 ;;
5830 esac
5831 $rm -f libnames libpath
5832
5833 : see if dld is available
5834 set dld.h i_dld
5835 eval $inhdr
5836
5837 : is a C symbol defined?
5838 csym='tlook=$1;
5839 case "$3" in
5840 -v) tf=libc.tmp; tc=""; tdc="";;
5841 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5842 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5843 esac;
5844 tx=yes;
5845 case "$reuseval-$4" in
5846 true-) ;;
5847 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5848 esac;
5849 case "$tx" in
5850 yes)
5851         case "$runnm" in
5852         true)
5853                 if $contains $tlook $tf >/dev/null 2>&1;
5854                 then tval=true;
5855                 else tval=false;
5856                 fi;;
5857         *)
5858                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5859                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5860                 then tval=true;
5861                 else tval=false;
5862                 fi;
5863                 $rm -f t t.c;;
5864         esac;;
5865 *)
5866         case "$tval" in
5867         $define) tval=true;;
5868         *) tval=false;;
5869         esac;;
5870 esac;
5871 eval "$2=$tval"'
5872
5873 : define an is-in-libc? function
5874 inlibc='echo " "; td=$define; tu=$undef;
5875 sym=$1; var=$2; eval "was=\$$2";
5876 tx=yes;
5877 case "$reuseval$was" in
5878 true) ;;
5879 true*) tx=no;;
5880 esac;
5881 case "$tx" in
5882 yes)
5883         set $sym tres -f;
5884         eval $csym;
5885         case "$tres" in
5886         true)
5887                 echo "$sym() found." >&4;
5888                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5889         *)
5890                 echo "$sym() NOT found." >&4;
5891                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5892         esac;;
5893 *)
5894         case "$was" in
5895         $define) echo "$sym() found." >&4;;
5896         *) echo "$sym() NOT found." >&4;;
5897         esac;;
5898 esac'
5899
5900 : see if dlopen exists
5901 xxx_runnm="$runnm"
5902 runnm=false
5903 set dlopen d_dlopen
5904 eval $inlibc
5905 runnm="$xxx_runnm"
5906
5907 : determine which dynamic loading, if any, to compile in
5908 echo " "
5909 dldir="ext/DynaLoader"
5910 case "$usedl" in
5911 $define|y|true)
5912         dflt='y'
5913         usedl="$define"
5914         ;;
5915 $undef|n|false)
5916         dflt='n'
5917         usedl="$undef"
5918         ;;
5919 *) 
5920         dflt='n'
5921         case "$d_dlopen" in
5922             $define) dflt='y' ;;
5923         esac
5924         case "$i_dld" in
5925             $define) dflt='y' ;;
5926         esac
5927         : Does a dl_xxx.xs file exist for this operating system
5928         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5929         ;;
5930 esac
5931 rp="Do you wish to use dynamic loading?"
5932 . ./myread
5933 usedl="$ans"
5934 case "$ans" in
5935 y*) usedl="$define"
5936         case "$dlsrc" in
5937         '')
5938                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5939                         dflt="$dldir/dl_${osname}.xs"
5940                 elif $test "$d_dlopen" = "$define" ; then
5941                         dflt="$dldir/dl_dlopen.xs"
5942                 elif $test "$i_dld" = "$define" ; then
5943                         dflt="$dldir/dl_dld.xs"
5944                 else
5945                         dflt=''
5946                 fi
5947                 ;;
5948         *)      dflt="$dldir/$dlsrc"
5949                 ;;
5950         esac
5951     echo "The following dynamic loading files are available:"
5952         : Can not go over to $dldir because getfile has path hard-coded in.
5953         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5954         rp="Source file to use for dynamic loading"
5955         fn="fne"
5956         gfpth="$src"
5957         . ./getfile
5958         usedl="$define"
5959         : emulate basename
5960         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5961
5962         $cat << EOM
5963
5964 Some systems may require passing special flags to $cc -c to
5965 compile modules that will be used to create a shared library.
5966 To use no flags, say "none".
5967
5968 EOM
5969     case "$cccdlflags" in
5970     '') case "$gccversion" in
5971                 '') case "$osname" in
5972                         hpux)   dflt='+z' ;;
5973                         next)   dflt='none' ;;
5974                         irix*)  dflt='-KPIC' ;;
5975                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5976                         sunos)  dflt='-pic' ;;
5977                         *)      dflt='none' ;;
5978                     esac
5979                         ;;
5980                 *)  case "$osname" in
5981                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5982                         *)      dflt='-fpic' ;;
5983                     esac ;;
5984             esac ;;
5985         ' ') dflt='none' ;;
5986     *)  dflt="$cccdlflags" ;;
5987     esac
5988     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5989     . ./myread
5990     case "$ans" in
5991     none) cccdlflags=' ' ;;
5992     *) cccdlflags="$ans" ;;
5993     esac
5994
5995     cat << EOM
5996
5997 Some systems use ld to create libraries that can be dynamically loaded,
5998 while other systems (such as those using ELF) use $cc.
5999
6000 EOM
6001         case "$ld" in
6002         '')     $cat >try.c <<'EOM'
6003 /* Test for whether ELF binaries are produced */
6004 #include <fcntl.h>
6005 #include <stdlib.h>
6006 int main() {
6007         char b[4];
6008         int i = open("a.out",O_RDONLY);
6009         if(i == -1) 
6010                 exit(1); /* fail */
6011         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6012                 exit(0); /* succeed (yes, it's ELF) */
6013         else
6014                 exit(1); /* fail */
6015 }
6016 EOM
6017                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6018                         cat <<EOM
6019 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6020 EOM
6021                         dflt="$cc"
6022                 else
6023                         echo "I'll use ld to build dynamic libraries."
6024                         dflt='ld'
6025                 fi
6026                 rm -f try.c a.out
6027                 ;;
6028         *)      dflt="$ld"
6029                 ;;
6030         esac
6031
6032     rp="What command should be used to create dynamic libraries?"
6033     . ./myread
6034         ld="$ans"
6035
6036     cat << EOM
6037
6038 Some systems may require passing special flags to $ld to create a
6039 library that can be dynamically loaded.  If your ld flags include
6040 -L/other/path options to locate libraries outside your loader's normal
6041 search path, you may need to specify those -L options here as well.  To
6042 use no flags, say "none".
6043
6044 EOM
6045     case "$lddlflags" in
6046     '') case "$osname" in
6047                         beos) dflt='-nostart' ;;
6048                         hpux)  dflt='-b +vnocompatwarnings' ;;
6049                         linux|irix*)    dflt='-shared' ;;
6050                         next)  dflt='none' ;;
6051                         solaris) dflt='-G' ;;
6052                         sunos) dflt='-assert nodefinitions' ;;
6053                         svr4*|esix*) dflt="-G $ldflags" ;;
6054                 *)     dflt='none' ;;
6055                         esac
6056                         ;;
6057     *) dflt="$lddlflags" ;;
6058     esac
6059
6060         : Try to guess additional flags to pick up local libraries.
6061         : Be careful not to append to a plain 'none'
6062         case "$dflt" in
6063         none) dflt='' ;;
6064         esac
6065         for thisflag in $ldflags; do
6066                 case "$thisflag" in
6067                 -L*)
6068                         case " $dflt " in
6069                         *" $thisflag "*) ;;
6070                         *) dflt="$dflt $thisflag" ;;
6071                         esac
6072                         ;;
6073                 esac
6074         done
6075
6076         case "$dflt" in
6077         ''|' ') dflt='none' ;;
6078         esac
6079
6080     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6081     . ./myread
6082     case "$ans" in
6083     none) lddlflags=' ' ;;
6084     *) lddlflags="$ans" ;;
6085     esac
6086
6087         cat <<EOM
6088
6089 Some systems may require passing special flags to $cc to indicate that
6090 the resulting executable will use dynamic linking.  To use no flags,
6091 say "none".
6092
6093 EOM
6094     case "$ccdlflags" in
6095     '') case "$osname" in
6096                 hpux)   dflt='-Wl,-E' ;;
6097                 linux)  dflt='-rdynamic' ;;
6098                 next)   dflt='none' ;;
6099                 sunos)  dflt='none' ;;
6100                 *)      dflt='none' ;;
6101             esac ;;
6102     ' ')  dflt='none' ;;
6103     *)  dflt="$ccdlflags" ;;
6104     esac
6105     rp="Any special flags to pass to $cc to use dynamic linking?"
6106     . ./myread
6107     case "$ans" in
6108     none) ccdlflags=' ' ;;
6109     *) ccdlflags="$ans" ;;
6110     esac
6111     ;;
6112 *)  usedl="$undef"
6113         ld='ld'
6114     dlsrc='dl_none.xs'
6115     lddlflags=''
6116     ccdlflags=''
6117     ;;
6118 esac
6119
6120 also=''
6121 case "$usedl" in
6122 $undef)
6123         # No dynamic loading being used, so don't bother even to prompt.
6124         useshrplib='false'
6125         ;;
6126 *)      case "$useshrplib" in
6127         '')     case "$osname" in
6128                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6129                         dflt=y
6130                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6131                         ;;
6132                 next*)
6133                         case "$osvers" in
6134                         4*)     dflt=y
6135                                 also='Building a shared libperl is needed for MAB support.'
6136                                 ;;
6137                         *)      dflt=n
6138                                 ;;
6139                         esac
6140                         ;;
6141                 *)      dflt=n
6142                         ;;
6143                 esac
6144                 ;;
6145         $define|true|[Yy]*)
6146                 dflt=y
6147                 ;;
6148         *)      dflt=n
6149                 ;;
6150         esac
6151         $cat << EOM
6152
6153 The perl executable is normally obtained by linking perlmain.c with
6154 libperl${_a}, any static extensions (usually just DynaLoader), and
6155 any other libraries needed on this system (such as -lm, etc.).  Since
6156 your system supports dynamic loading, it is probably possible to build
6157 a shared libperl.$so.  If you will have more than one executable linked
6158 to libperl.$so, this will significantly reduce the size of each
6159 executable, but it may have a noticeable affect on performance.  The
6160 default is probably sensible for your system.
6161 $also
6162
6163 EOM
6164         rp="Build a shared libperl.$so (y/n)"
6165         . ./myread
6166         case "$ans" in
6167         true|$define|[Yy]*)
6168                 useshrplib='true'  ;;
6169         *)      useshrplib='false' ;;
6170         esac
6171         ;;
6172 esac
6173
6174 case "$useshrplib" in
6175 true)
6176         case "$libperl" in
6177         '')
6178                 # Figure out a good name for libperl.so.  Since it gets stored in
6179                 # a version-specific architecture-dependent library, the version
6180                 # number isn't really that important, except for making cc/ld happy.
6181                 #
6182                 # A name such as libperl.so.3.1
6183                 majmin="libperl.$so.$patchlevel.$subversion"
6184                 # A name such as libperl.so.301
6185                 majonly=`echo $patchlevel $subversion |
6186                         $awk '{printf "%d%02d", $1, $2}'`
6187                 majonly=libperl.$so.$majonly
6188                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6189                 # rely on figuring it out from the naming of libc.
6190                 case "${osname}${osvers}" in
6191                 next4*)
6192                         dflt=libperl.5.$so
6193                         # XXX How handle the --version stuff for MAB?
6194                         ;;
6195                 linux*)  # ld won't link with a bare -lperl otherwise.
6196                         dflt=libperl.$so
6197                         ;;
6198                 cygwin*) # include version
6199                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6200                         ;;
6201                 *)      # Try to guess based on whether libc has major.minor.
6202                         case "$libc" in
6203                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6204                         *libc.$so.[0-9]*) dflt=$majonly ;;
6205                         *)      dflt=libperl.$so ;;
6206                         esac
6207                         ;;
6208                 esac
6209                 ;;
6210         *)      dflt=$libperl
6211                 ;;
6212         esac
6213         cat << EOM
6214
6215 I need to select a good name for the shared libperl.  If your system uses
6216 library names with major and minor numbers, then you might want something
6217 like $majmin.  Alternatively, if your system uses a single version
6218 number for shared libraries, then you might want to use $majonly.
6219 Or, your system might be quite happy with a simple libperl.$so.
6220
6221 Since the shared libperl will get installed into a version-specific
6222 architecture-dependent directory, the version number of the shared perl
6223 library probably isn't important, so the default should be o.k.
6224
6225 EOM
6226         rp='What name do you want to give to the shared libperl?'
6227         . ./myread
6228         libperl=$ans
6229         echo "Ok, I'll use $libperl"
6230         ;;
6231 *)
6232         libperl="libperl${_a}"
6233         ;;
6234 esac
6235
6236 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6237 case "$shrpdir" in
6238 '') ;;
6239 *)      $cat >&4 <<EOM
6240 WARNING:  Use of the shrpdir variable for the installation location of
6241 the shared $libperl is not supported.  It was never documented and
6242 will not work in this version.  Let me (perlbug@perl.com)
6243 know of any problems this may cause.
6244
6245 EOM
6246         case "$shrpdir" in
6247         "$archlibexp/CORE")
6248                 $cat >&4 <<EOM
6249 But your current setting of $shrpdir is
6250 the default anyway, so it's harmless.
6251 EOM
6252                 ;;
6253         *)
6254                 $cat >&4 <<EOM
6255 Further, your current attempted setting of $shrpdir
6256 conflicts with the value of $archlibexp/CORE
6257 that installperl will use.
6258 EOM
6259                 ;;
6260         esac
6261         ;;
6262 esac
6263
6264 # How will the perl executable find the installed shared $libperl?
6265 # Add $xxx to ccdlflags.
6266 # If we can't figure out a command-line option, use $shrpenv to
6267 # set env LD_RUN_PATH.  The main perl makefile uses this.
6268 shrpdir=$archlibexp/CORE
6269 xxx=''
6270 tmp_shrpenv=''
6271 if "$useshrplib"; then
6272     case "$osname" in 
6273         aix)
6274                 # We'll set it in Makefile.SH...
6275                 ;;
6276         solaris|netbsd)
6277                 xxx="-R $shrpdir"
6278                 ;;
6279         freebsd)
6280                 xxx="-Wl,-R$shrpdir"
6281                 ;;
6282         linux|irix*|dec_osf)
6283                 xxx="-Wl,-rpath,$shrpdir"
6284                 ;;
6285         next)
6286                 # next doesn't like the default...
6287                 ;;
6288         beos)
6289                 # beos doesn't like the default, either.
6290                 ;;
6291         hpux*)
6292                 # hpux doesn't like the default, either.
6293                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6294                 ;;
6295         *)
6296                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6297                 ;;
6298         esac
6299         case "$xxx" in
6300         '') ;;
6301         *)      
6302                 # Only add $xxx if it isn't already in ccdlflags.
6303                 case " $ccdlflags " in
6304                 *" $xxx "*)     ;;
6305                 *)      ccdlflags="$ccdlflags $xxx"
6306                         cat <<EOM >&4
6307
6308 Adding $xxx to the flags
6309 passed to $ld so that the perl executable will find the 
6310 installed shared $libperl.
6311
6312 EOM
6313                         ;;
6314                 esac
6315                 ;;
6316         esac
6317 fi
6318 # Fix ccdlflags in AIX for building external extensions.
6319 # (For building Perl itself bare -bE:perl.exp is needed,
6320 #  Makefile.SH takes care of this.)
6321 case "$osname" in
6322 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6323 esac
6324 # Respect a hint or command-line value.
6325 case "$shrpenv" in
6326 '') shrpenv="$tmp_shrpenv" ;;
6327 esac
6328 case "$ldlibpthname" in
6329 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6330 none)   ldlibpthname='' ;;
6331 esac
6332
6333 : determine where manual pages go
6334 set man1dir man1dir none
6335 eval $prefixit
6336 $cat <<EOM
6337
6338 $spackage has manual pages available in source form.
6339 EOM
6340 case "$nroff" in
6341 nroff)
6342         echo "However, you don't have nroff, so they're probably useless to you."
6343         case "$man1dir" in
6344         '') man1dir="none";;
6345         esac;;
6346 esac
6347 echo "If you don't want the manual sources installed, answer 'none'."
6348 case "$man1dir" in
6349 ' ') dflt=none
6350         ;;
6351 '')
6352         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6353         lookpath="$lookpath $prefixexp/man/p_man/man1"
6354         lookpath="$lookpath $prefixexp/man/u_man/man1"
6355         lookpath="$lookpath $prefixexp/man/man.1"
6356         case "$sysman" in
6357         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6358         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6359         esac
6360         set dflt
6361         eval $prefixup
6362         ;;
6363 *)  dflt="$man1dir"
6364         ;;
6365 esac
6366 echo " "
6367 fn=dn+~
6368 rp="Where do the main $spackage manual pages (source) go?"
6369 . ./getfile
6370 if $test "X$man1direxp" != "X$ansexp"; then
6371         installman1dir=''
6372 fi
6373 man1dir="$ans"
6374 man1direxp="$ansexp"
6375 case "$man1dir" in
6376 '')     man1dir=' '
6377         installman1dir='';;
6378 esac
6379
6380 : Change installation prefix, if necessary.
6381 if $test X"$prefix" != X"$installprefix"; then
6382         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6383 else
6384         installman1dir="$man1direxp"
6385 fi
6386
6387 : What suffix to use on installed man pages
6388
6389 case "$man1dir" in
6390 ' ')
6391         man1ext='0'
6392         ;;
6393 *)
6394         rp="What suffix should be used for the main $spackage man pages?"
6395         case "$man1ext" in
6396         '')     case "$man1dir" in
6397                 *1)  dflt=1 ;;
6398                 *1p) dflt=1p ;;
6399                 *1pm) dflt=1pm ;;
6400                 *l) dflt=l;;
6401                 *n) dflt=n;;
6402                 *o) dflt=o;;
6403                 *p) dflt=p;;
6404                 *C) dflt=C;;
6405                 *L) dflt=L;;
6406                 *L1) dflt=L1;;
6407                 *) dflt=1;;
6408                 esac
6409                 ;;
6410         *)      dflt="$man1ext";;
6411         esac
6412         . ./myread
6413         man1ext="$ans"
6414         ;;
6415 esac
6416
6417 : see if we can have long filenames
6418 echo " "
6419 rmlist="$rmlist /tmp/cf$$"
6420 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6421 first=123456789abcdef
6422 second=/tmp/cf$$/$first
6423 $rm -f $first $second
6424 if (echo hi >$first) 2>/dev/null; then
6425         if $test -f 123456789abcde; then
6426                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6427                 val="$undef"
6428         else
6429                 if (echo hi >$second) 2>/dev/null; then
6430                         if $test -f /tmp/cf$$/123456789abcde; then
6431                                 $cat <<'EOM'
6432 That's peculiar... You can have filenames longer than 14 characters, but only
6433 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6434 I shall consider your system cannot support long filenames at all.
6435 EOM
6436                                 val="$undef"
6437                         else
6438                                 echo 'You can have filenames longer than 14 characters.' >&4
6439                                 val="$define"
6440                         fi
6441                 else
6442                         $cat <<'EOM'
6443 How confusing! Some of your filesystems are sane enough to allow filenames
6444 longer than 14 characters but some others like /tmp can't even think about them.
6445 So, for now on, I shall assume your kernel does not allow them at all.
6446 EOM
6447                         val="$undef"
6448                 fi
6449         fi
6450 else
6451         $cat <<'EOM'
6452 You can't have filenames longer than 14 chars.  You can't even think about them!
6453 EOM
6454         val="$undef"
6455 fi 
6456 set d_flexfnam
6457 eval $setvar
6458 $rm -rf /tmp/cf$$ 123456789abcde*
6459
6460 : determine where library module manual pages go
6461 set man3dir man3dir none
6462 eval $prefixit
6463 $cat <<EOM
6464
6465 $spackage has manual pages for many of the library modules.
6466 EOM
6467
6468 case "$nroff" in
6469 nroff)
6470         $cat <<'EOM'
6471 However, you don't have nroff, so they're probably useless to you.
6472 EOM
6473         case "$man3dir" in
6474         '') man3dir="none";;
6475         esac;;
6476 esac
6477
6478 case "$d_flexfnam" in
6479 undef)
6480         $cat <<'EOM'
6481 However, your system can't handle the long file names like File::Basename.3. 
6482 EOM
6483         case "$man3dir" in
6484         '') man3dir="none";;
6485         esac;;
6486 esac
6487
6488 echo "If you don't want the manual sources installed, answer 'none'."
6489 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6490 case "$man3dir" in
6491 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6492         if $test -d "$privlib/man/man3"; then
6493                 cat <<EOM >&4
6494
6495 WARNING:  Previous versions of perl installed man3 pages into
6496 $privlib/man/man3.  This version will suggest a 
6497 new default of $dflt.  
6498 EOM
6499                 tdflt=$dflt
6500                 dflt='n'
6501                 rp='Do you wish to preserve the old behavior?(y/n)'
6502                 . ./myread
6503                 case "$ans" in
6504                 y*) dflt="$privlib/man/man3" ;;
6505                 *)  dflt=$tdflt ;;
6506                 esac
6507     fi
6508         ;;
6509 ' ') dflt=none;;
6510 *)      dflt="$man3dir" ;;
6511 esac
6512 echo " "
6513 fn=dn+~
6514 rp="Where do the $package library man pages (source) go?"
6515 . ./getfile
6516 man3dir="$ans"
6517 man3direxp="$ansexp"
6518 case "$man1dir" in
6519 '')     man3dir=' '
6520         installman3dir='';;
6521 esac
6522
6523 : Change installation prefix, if necessary.
6524 if $test X"$prefix" != X"$installprefix"; then
6525         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6526 else
6527         installman3dir="$man3direxp"
6528 fi
6529
6530 : What suffix to use on installed man pages
6531 case "$man3dir" in
6532 ' ')
6533         man3ext='0'
6534         ;;
6535 *)
6536         rp="What suffix should be used for the $package library man pages?"
6537         case "$man3ext" in
6538         '')     case "$man3dir" in
6539                 *3)  dflt=3 ;;
6540                 *3p) dflt=3p ;;
6541                 *3pm) dflt=3pm ;;
6542                 *l) dflt=l;;
6543                 *n) dflt=n;;
6544                 *o) dflt=o;;
6545                 *p) dflt=p;;
6546                 *C) dflt=C;;
6547                 *L) dflt=L;;
6548                 *L3) dflt=L3;;
6549                 *) dflt=3;;
6550                 esac
6551                 ;;
6552         *)      dflt="$man3ext";;
6553         esac
6554         . ./myread
6555         man3ext="$ans"
6556         ;;
6557 esac
6558
6559 : see if we have to deal with yellow pages, now NIS.
6560 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6561         if $test -f /usr/etc/nibindd; then
6562                 echo " "
6563                 echo "I'm fairly confident you're on a NeXT."
6564                 echo " "
6565                 rp='Do you get the hosts file via NetInfo?'
6566                 dflt=y
6567                 case "$hostcat" in
6568                 nidump*) ;;
6569                 '') ;;
6570                 *) dflt=n;;
6571                 esac
6572                 . ./myread
6573                 case "$ans" in
6574                 y*) hostcat='nidump hosts .';;
6575                 *)      case "$hostcat" in
6576                         nidump*) hostcat='';;
6577                         esac
6578                         ;;
6579                 esac
6580         fi
6581         case "$hostcat" in
6582         nidump*) ;;
6583         *)
6584                 case "$hostcat" in
6585                 *ypcat*) dflt=y;;
6586                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6587                                 dflt=y
6588                         else
6589                                 dflt=n
6590                         fi;;
6591                 *) dflt=n;;
6592                 esac
6593                 echo " "
6594                 rp='Are you getting the hosts file via yellow pages?'
6595                 . ./myread
6596                 case "$ans" in
6597                 y*) hostcat='ypcat hosts';;
6598                 *) hostcat='cat /etc/hosts';;
6599                 esac
6600                 ;;
6601         esac
6602 fi
6603 case "$hostcat" in
6604 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6605 esac
6606 case "$groupcat" in
6607 '') test -f /etc/group && groupcat='cat /etc/group';;
6608 esac
6609 case "$passcat" in
6610 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6611 esac
6612
6613 : now get the host name
6614 echo " "
6615 echo "Figuring out host name..." >&4
6616 case "$myhostname" in
6617 '') cont=true
6618         echo 'Maybe "hostname" will work...'
6619         if tans=`sh -c hostname 2>&1` ; then
6620                 myhostname=$tans
6621                 phostname=hostname
6622                 cont=''
6623         fi
6624         ;;
6625 *) cont='';;
6626 esac
6627 if $test "$cont"; then
6628         if ./xenix; then
6629                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6630                 if tans=`cat /etc/systemid 2>&1` ; then
6631                         myhostname=$tans
6632                         phostname='cat /etc/systemid'
6633                         echo "Whadyaknow.  Xenix always was a bit strange..."
6634                         cont=''
6635                 fi
6636         elif $test -r /etc/systemid; then
6637                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6638         fi
6639 fi
6640 if $test "$cont"; then
6641         echo 'No, maybe "uuname -l" will work...'
6642         if tans=`sh -c 'uuname -l' 2>&1` ; then
6643                 myhostname=$tans
6644                 phostname='uuname -l'
6645         else
6646                 echo 'Strange.  Maybe "uname -n" will work...'
6647                 if tans=`sh -c 'uname -n' 2>&1` ; then
6648                         myhostname=$tans
6649                         phostname='uname -n'
6650                 else
6651                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6652                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6653                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6654                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6655                         else
6656                                 case "$myhostname" in
6657                                 '') echo "Does this machine have an identity crisis or something?"
6658                                         phostname='';;
6659                                 *)
6660                                         echo "Well, you said $myhostname before..."
6661                                         phostname='echo $myhostname';;
6662                                 esac
6663                         fi
6664                 fi
6665         fi
6666 fi
6667 : you do not want to know about this
6668 set $myhostname
6669 myhostname=$1
6670
6671 : verify guess
6672 if $test "$myhostname" ; then
6673         dflt=y
6674         rp='Your host name appears to be "'$myhostname'".'" Right?"
6675         . ./myread
6676         case "$ans" in
6677         y*) ;;
6678         *) myhostname='';;
6679         esac
6680 fi
6681
6682 : bad guess or no guess
6683 while $test "X$myhostname" = X ; do
6684         dflt=''
6685         rp="Please type the (one word) name of your host:"
6686         . ./myread
6687         myhostname="$ans"
6688 done
6689
6690 : translate upper to lower if necessary
6691 case "$myhostname" in
6692 *[A-Z]*)
6693         echo "(Normalizing case in your host name)"
6694         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6695         ;;
6696 esac
6697
6698 case "$myhostname" in
6699 *.*)
6700         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6701         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6702         echo "(Trimming domain name from host name--host name is now $myhostname)"
6703         ;;
6704 *) case "$mydomain" in
6705         '')
6706                 {
6707                         test "X$hostcat" = "Xypcat hosts" &&
6708                         ypmatch "$myhostname" hosts 2>/dev/null |\
6709                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6710                         $test -s hosts
6711                 } || {
6712                         test "X$hostcat" != "X" &&
6713                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6714                                         /[       ]$myhostname[  . ]/p" > hosts
6715                 }
6716                 tmp_re="[       . ]"
6717                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6718                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6719                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6720                         hosts | $sort | $uniq | \
6721                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6722                 case `$echo X$dflt` in
6723                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6724                         dflt=.
6725                         ;;
6726                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6727                         ;;
6728                 esac
6729                 case "$dflt" in
6730                 .)
6731                         tans=`./loc resolv.conf X /etc /usr/etc`
6732                         if $test -f "$tans"; then
6733                                 echo "(Attempting domain name extraction from $tans)"
6734                                 dflt=.`$sed -n -e 's/   / /g' \
6735                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6736                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6737                                 case "$dflt" in
6738                                 .) dflt=.`$sed -n -e 's/        / /g' \
6739                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6740                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6741                                         ;;
6742                                 esac
6743                         fi
6744                         ;;
6745                 esac
6746                 case "$dflt" in
6747                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6748                         dflt=.`sh -c domainname 2>/dev/null`
6749                         case "$dflt" in
6750                         '') dflt='.';;
6751                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6752                         esac
6753                         ;;
6754                 esac
6755                 case "$dflt" in
6756                 .) echo "(Lost all hope -- silly guess then)"
6757                         dflt='.uucp'
6758                         ;;
6759                 esac
6760                 $rm -f hosts
6761                 ;;
6762         *) dflt="$mydomain";;
6763         esac;;
6764 esac
6765 echo " "
6766 rp="What is your domain name?"
6767 . ./myread
6768 tans="$ans"
6769 case "$ans" in
6770 '') ;;
6771 .*) ;;
6772 *) tans=".$tans";;
6773 esac
6774 mydomain="$tans"
6775
6776 : translate upper to lower if necessary
6777 case "$mydomain" in
6778 *[A-Z]*)
6779         echo "(Normalizing case in your domain name)"
6780         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6781         ;;
6782 esac
6783
6784 : a little sanity check here
6785 case "$phostname" in
6786 '') ;;
6787 *)
6788         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6789         $myhostname$mydomain|$myhostname) ;;
6790         *)
6791                 case "$phostname" in
6792                 sed*)
6793                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6794                         ;;
6795                 *)
6796                         echo "(That doesn't agree with your $phostname command, by the way.)"
6797                         ;;
6798                 esac
6799         ;;
6800         esac
6801         ;;
6802 esac
6803
6804 $cat <<EOM
6805
6806 I need to get your e-mail address in Internet format if possible, i.e.
6807 something like user@host.domain. Please answer accurately since I have
6808 no easy means to double check it. The default value provided below
6809 is most probably close to reality but may not be valid from outside
6810 your organization...
6811
6812 EOM
6813 cont=x
6814 while test "$cont"; do
6815         case "$cf_email" in
6816         '') dflt="$cf_by@$myhostname$mydomain";;
6817         *) dflt="$cf_email";;
6818         esac
6819         rp='What is your e-mail address?'
6820         . ./myread
6821         cf_email="$ans"
6822         case "$cf_email" in
6823         *@*.*) cont='' ;;
6824         *)
6825                 rp='Address does not look like an Internet one.  Use it anyway?'
6826                 case "$fastread" in
6827                 yes) dflt=y ;;
6828                 *) dflt=n ;;
6829                 esac
6830                 . ./myread
6831                 case "$ans" in
6832                 y*) cont='' ;;
6833                 *) echo " " ;;
6834                 esac
6835                 ;;
6836         esac
6837 done
6838
6839 $cat <<EOM
6840
6841 If you or somebody else will be maintaining perl at your site, please
6842 fill in the correct e-mail address here so that they may be contacted
6843 if necessary. Currently, the "perlbug" program included with perl
6844 will send mail to this address in addition to perlbug@perl.com. You may
6845 enter "none" for no administrator.
6846
6847 EOM
6848 case "$perladmin" in
6849 '') dflt="$cf_email";;
6850 *) dflt="$perladmin";;
6851 esac
6852 rp='Perl administrator e-mail address'
6853 . ./myread
6854 perladmin="$ans"
6855
6856 : figure out how to guarantee perl startup
6857 case "$startperl" in
6858 '')
6859         case "$sharpbang" in
6860         *!)
6861                 $cat <<EOH
6862
6863 I can use the #! construct to start perl on your system. This will
6864 make startup of perl scripts faster, but may cause problems if you
6865 want to share those scripts and perl is not in a standard place
6866 ($binexp/perl) on all your platforms. The alternative is to force
6867 a shell by starting the script with a single ':' character.
6868
6869 EOH
6870                 dflt="$binexp/perl"
6871                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6872                 . ./myread
6873                 case "$ans" in
6874                 none)   startperl=": # use perl";;
6875                 *)      startperl="#!$ans"
6876                         if $test 30 -lt `echo "$ans" | wc -c`; then
6877                                 $cat >&4 <<EOM
6878
6879 WARNING:  Some systems limit the #! command to 32 characters.
6880 If you experience difficulty running Perl scripts with #!, try
6881 installing Perl in a directory with a shorter pathname.
6882
6883 EOM
6884                         fi ;;
6885                 esac
6886                 ;;
6887         *) startperl=": # use perl"
6888                 ;;
6889         esac
6890         ;;
6891 esac
6892 echo "I'll use $startperl to start perl scripts."
6893
6894 : figure best path for perl in scripts
6895 case "$perlpath" in
6896 '')
6897         perlpath="$binexp/perl"
6898         case "$startperl" in
6899         *!*) ;;
6900         *)
6901                 $cat <<EOH
6902
6903 I will use the "eval 'exec'" idiom to start Perl on your system.
6904 I can use the full path of your Perl binary for this purpose, but
6905 doing so may cause problems if you want to share those scripts and
6906 Perl is not always in a standard place ($binexp/perl).
6907
6908 EOH
6909                 dflt="$binexp/perl"
6910                 rp="What path shall I use in \"eval 'exec'\"?"
6911                 . ./myread
6912                 perlpath="$ans"
6913                 ;;
6914         esac
6915         ;;
6916 esac
6917 case "$startperl" in
6918 *!*)    ;;
6919 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6920 esac
6921
6922 : determine where public executable scripts go
6923 set scriptdir scriptdir
6924 eval $prefixit
6925 case "$scriptdir" in
6926 '')
6927         dflt="$bin"
6928         : guess some guesses
6929         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6930         $test -d /usr/share/bin     && dflt=/usr/share/bin
6931         $test -d /usr/local/script  && dflt=/usr/local/script
6932         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6933         $test -d $prefixexp/script  && dflt=$prefixexp/script
6934         set dflt
6935         eval $prefixup
6936         ;;
6937 *)  dflt="$scriptdir"
6938         ;;
6939 esac
6940 $cat <<EOM
6941  
6942 Some installations have a separate directory just for executable scripts so
6943 that they can mount it across multiple architectures but keep the scripts in
6944 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6945 Or you might just lump your scripts in with all your other executables.
6946  
6947 EOM
6948 fn=d~
6949 rp='Where do you keep publicly executable scripts?'
6950 . ./getfile
6951 if $test "X$ansexp" != "X$scriptdirexp"; then
6952         installscript=''
6953 fi
6954 scriptdir="$ans"
6955 scriptdirexp="$ansexp"
6956 : Change installation prefix, if necessary.
6957 if $test X"$prefix" != X"$installprefix"; then
6958         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6959 else
6960         installscript="$scriptdirexp"
6961 fi
6962
6963 : determine where site specific architecture-dependent libraries go.
6964 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6965 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6966 : sitelib may have an optional trailing /share.
6967 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6968 tdflt="$tdflt/$archname"
6969 set sitearch sitearch none
6970 eval $prefixit
6971 case "$sitearch" in
6972 '')     dflt="$tdflt" ;;
6973 *)      dflt="$sitearch" ;;
6974 esac
6975 $cat <<EOM
6976
6977 The installation process will also create a directory for
6978 architecture-dependent site-specific extensions and modules.
6979
6980 EOM
6981 fn=nd~+
6982 rp='Pathname for the site-specific architecture-dependent library files?'
6983 . ./getfile
6984 sitearch="$ans"
6985 sitearchexp="$ansexp"
6986 : Change installation prefix, if necessary.
6987 if $test X"$prefix" != X"$installprefix"; then
6988         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6989 else
6990         installsitearch="$sitearchexp"
6991 fi
6992
6993 : determine where add-on public executables go
6994 case "$sitebin" in
6995 '')     dflt=$siteprefix/bin ;;
6996 *)      dflt=$sitebin ;;
6997 esac
6998 fn=d~
6999 rp='Pathname where the add-on public executables should be installed?'
7000 . ./getfile
7001 sitebin="$ans"
7002 sitebinexp="$ansexp"
7003 : Change installation prefix, if necessary.
7004 if $test X"$prefix" != X"$installprefix"; then
7005         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7006 else
7007         installsitebin="$sitebinexp"
7008 fi
7009
7010 : see if sqrtl exists
7011 set sqrtl d_sqrtl
7012 eval $inlibc
7013
7014 cat <<EOM
7015
7016 Perl can be built to take advantage of long doubles which
7017 (if available) may give more accuracy and range for floating point numbers.
7018
7019 If this doesn't make any sense to you, just accept the default 'n'.
7020 EOM
7021
7022 case "$ccflags" in
7023 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7024 esac
7025
7026 case "$uselongdouble" in
7027 $define|true|[yY]*)     dflt='y';;
7028 *) dflt='n';;
7029 esac
7030 rp='Try to use long doubles if available?'
7031 . ./myread
7032 case "$ans" in
7033 y|Y)    val="$define"   ;;
7034 *)      val="$undef"    ;;
7035 esac
7036 set uselongdouble
7037 eval $setvar
7038
7039 case "$uselongdouble" in
7040 true|[yY]*) uselongdouble="$define" ;;
7041 esac
7042
7043 case "$uselongdouble" in
7044 $define)
7045 : Look for a hint-file generated 'call-back-unit'.  If the
7046 : user has specified that long doubles should be used,
7047 : we may need to set or change some other defaults.
7048         if $test -f uselongdouble.cbu; then
7049                 echo "Your platform has some specific hints for long doubles, using them..."
7050                 . ./uselongdouble.cbu
7051         else
7052                 $cat <<EOM
7053 (Your platform doesn't have any specific hints for long doubles.)
7054 EOM
7055         fi
7056         ;;
7057 esac
7058
7059 case "$uselongdouble:$d_sqrtl" in
7060 $define:$undef)
7061                 $cat <<EOM >&4
7062
7063 You requested the use of long doubles but you do not seem to have
7064 the mathematic functions for long doubles.  I'm disabling the use
7065 of long doubles.
7066 EOM
7067         uselongdouble=$undef
7068         ;;
7069 esac
7070
7071 cat <<EOM
7072
7073 Previous version of $package used the standard IO mechanisms as defined
7074 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7075 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7076 the default.  This abstraction layer can use AT&T's sfio (if you already
7077 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7078 problems with some extension modules.  Using PerlIO with stdio is safe,
7079 but it is slower than plain stdio and therefore is not the default.
7080
7081 If this doesn't make any sense to you, just accept the default 'n'.
7082 EOM
7083 case "$useperlio" in
7084 $define|true|[yY]*)     dflt='y';;
7085 *) dflt='n';;
7086 esac
7087 rp='Use the experimental PerlIO abstraction layer?'
7088 . ./myread
7089 case "$ans" in
7090 y|Y) 
7091         val="$define"
7092         ;;     
7093 *)      
7094         echo "Ok, doing things the stdio way"
7095         val="$undef"
7096         ;;
7097 esac
7098 set useperlio
7099 eval $setvar 
7100
7101 case "$vendorprefix" in
7102 '')     d_vendorbin="$undef"
7103         vendorbin=''
7104         vendorbinexp=''
7105         ;;
7106 *)      d_vendorbin="$define"
7107         : determine where vendor-supplied executables go.
7108         dflt=$vendorprefix/bin
7109         fn=d~+
7110         rp='Pathname for the vendor-supplied executables directory?'
7111         . ./getfile
7112         vendorbin="$ans"
7113         vendorbinexp="$ansexp"
7114         : Change installation prefix, if necessary.
7115         if $test X"$prefix" != X"$installprefix"; then
7116                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7117         else
7118                 installvendorbin="$vendorbinexp"
7119         fi
7120         ;;
7121 esac
7122
7123 : check for length of double
7124 echo " "
7125 case "$doublesize" in
7126 '')
7127         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7128         $cat >try.c <<'EOCP'
7129 #include <stdio.h>
7130 int main()
7131 {
7132     printf("%d\n", (int)sizeof(double));
7133     exit(0);
7134 }
7135 EOCP
7136         set try
7137         if eval $compile_ok; then
7138                 doublesize=`./try`
7139                 $echo " $doublesize bytes." >&4
7140         else
7141                 dflt='8'
7142                 echo "(I can't seem to compile the test program.  Guessing...)"
7143                 rp="What is the size of a double precision number (in bytes)?"
7144                 . ./myread
7145                 doublesize="$ans"
7146         fi
7147         ;;
7148 esac
7149 $rm -f try.c try
7150
7151 : check for long doubles
7152 echo " "
7153 $echo $n "Checking to see if your system supports long double..." $c >&4
7154 echo 'int main() { long double x = 7.0; }' > try.c
7155 set try
7156 if eval $compile; then
7157         val="$define"
7158         echo " Yes, it does." >&4
7159 else
7160         val="$undef"
7161         echo " No, it doesn't." >&4
7162 fi
7163 $rm try.*
7164 set d_longdbl
7165 eval $setvar
7166
7167 : check for length of long double
7168 case "${d_longdbl}${longdblsize}" in
7169 $define)
7170         echo " "
7171         $echo $n "Checking to see how big your long doubles are..." $c >&4
7172         $cat >try.c <<'EOCP'
7173 #include <stdio.h>
7174 int main()
7175 {
7176         printf("%d\n", sizeof(long double));
7177 }
7178 EOCP
7179         set try
7180         set try
7181         if eval $compile; then
7182                 longdblsize=`./try$exe_ext`
7183                 $echo " $longdblsize bytes." >&4
7184         else
7185                 dflt='8'
7186                 echo " "
7187                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7188                 rp="What is the size of a long double (in bytes)?"
7189                 . ./myread
7190                 longdblsize="$ans"
7191         fi
7192         if $test "X$doublesize" = "X$longdblsize"; then
7193                 echo "(That isn't any different from an ordinary double.)"
7194         fi      
7195         ;;
7196 esac
7197 $rm -f try.* try
7198
7199 : Check how to convert floats to strings.
7200 if test "X$d_Gconvert" = X; then
7201         echo " "
7202         echo "Checking for an efficient way to convert floats to strings."
7203         $cat >try.c <<EOP
7204 #ifdef TRY_gconvert
7205 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7206 char *myname = "gconvert";
7207 #endif
7208 #ifdef TRY_gcvt
7209 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7210 char *myname = "gcvt";
7211 #endif
7212 #ifdef TRY_qgcvt
7213 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7214 char *myname = "qgcvt";
7215 #define DOUBLETYPE long double
7216 #endif
7217 #ifdef TRY_sprintf
7218 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7219 char *myname = "sprintf";
7220 #endif
7221
7222 #ifndef DOUBLETYPE
7223 #define DOUBLETYPE double
7224 #endif
7225
7226 #include <stdio.h>
7227
7228 #define I_STDLIB $i_stdlib
7229 #ifdef I_STDLIB
7230 #include <stdlib.h>
7231 #endif
7232
7233 int
7234 checkit(expect, got)
7235 char *expect;
7236 char *got;
7237 {
7238     if (strcmp(expect, got)) {
7239                 printf("%s oddity:  Expected %s, got %s\n",
7240                         myname, expect, got);
7241                 exit(1);
7242         }
7243 }
7244
7245 int main()
7246
7247         char buf[64]; 
7248         buf[63] = '\0';
7249
7250         /* This must be 1st test on (which?) platform */
7251         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7252         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7253         checkit("0.1", buf);
7254
7255         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7256         checkit("1", buf);
7257
7258         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7259         checkit("0", buf);
7260
7261         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7262         checkit("-1", buf);
7263
7264         /* Some Linux gcvt's give 1.e+5 here. */
7265         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7266         checkit("100000", buf);
7267         
7268         /* Some Linux gcvt's give -1.e+5 here. */
7269         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7270         checkit("-100000", buf);
7271
7272         exit(0);
7273 }
7274 EOP
7275         case "$d_Gconvert" in
7276         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7277         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7278         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7279         *) xxx_list='gconvert gcvt sprintf' ;;
7280         esac
7281
7282         case "$d_longdbl$uselongdouble" in
7283         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7284         esac
7285
7286         for xxx_convert in $xxx_list; do
7287                 echo "Trying $xxx_convert..."
7288                 $rm -f try try$_o
7289                 set try -DTRY_$xxx_convert
7290                 if eval $compile; then
7291                         echo "$xxx_convert() found." >&4
7292                         if ./try; then
7293                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7294                                 break;
7295                         else
7296                                 echo "...But $xxx_convert didn't work as I expected."
7297                         fi
7298                 else
7299                         echo "$xxx_convert NOT found." >&4
7300                 fi
7301         done
7302                 
7303         case "$xxx_convert" in
7304         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7305         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7306         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7307         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7308         esac
7309 fi
7310
7311 echo " "
7312
7313 if $test X"$d_longdbl" = X"$define"; then
7314
7315 echo "Checking how to print long doubles..." >&4
7316
7317 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7318         $cat >try.c <<'EOCP'
7319 #include <sys/types.h>
7320 #include <stdio.h>
7321 int main() {
7322   double d = 123.456;
7323   printf("%.3f\n", d);
7324 }
7325 EOCP
7326         set try
7327         if eval $compile; then
7328                 yyy=`./try$exe_ext`
7329                 case "$yyy" in
7330                 123.456)
7331                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7332                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7333                         echo "We will use %f."
7334                         ;;
7335                 esac
7336         fi
7337 fi
7338
7339 if $test X"$sPRIfldbl" = X; then
7340         $cat >try.c <<'EOCP'
7341 #include <sys/types.h>
7342 #include <stdio.h>
7343 int main() {
7344   long double d = 123.456;
7345   printf("%.3llf\n", d);
7346 }
7347 EOCP
7348         set try
7349         if eval $compile; then
7350                 yyy=`./try$exe_ext`
7351                 case "$yyy" in
7352                 123.456)
7353                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7354                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7355                         echo "We will use %llf."
7356                         ;;
7357                 esac
7358         fi
7359 fi
7360
7361 if $test X"$sPRIfldbl" = X; then
7362         $cat >try.c <<'EOCP'
7363 #include <sys/types.h>
7364 #include <stdio.h>
7365 int main() {
7366   long double d = 123.456;
7367   printf("%.3Lf\n", d);
7368 }
7369 EOCP
7370         set try
7371         if eval $compile; then
7372                 yyy=`./try$exe_ext`
7373                 case "$yyy" in
7374                 123.456)
7375                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7376                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7377                         echo "We will use %Lf."
7378                         ;;
7379                 esac
7380         fi
7381 fi
7382
7383 if $test X"$sPRIfldbl" = X; then
7384         $cat >try.c <<'EOCP'
7385 #include <sys/types.h>
7386 #include <stdio.h>
7387 int main() {
7388   long double d = 123.456;
7389   printf("%.3lf\n", d);
7390 }
7391 EOCP
7392         set try
7393         if eval $compile; then
7394                 yyy=`./try$exe_ext`
7395                 case "$yyy" in
7396                 123.456)
7397                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7398                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7399                         echo "We will use %lf."
7400                         ;;
7401                 esac
7402         fi
7403 fi
7404
7405 if $test X"$sPRIfldbl" = X; then
7406         echo "Cannot figure out how to print long doubles." >&4
7407 fi
7408
7409 $rm -f try try.*
7410
7411 fi # d_longdbl
7412
7413 case "$sPRIfldbl" in
7414 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7415         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7416         ;;
7417 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7418         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7419         ;;
7420 esac
7421
7422 : Initialize h_fcntl
7423 h_fcntl=false
7424
7425 : Initialize h_sysfile
7426 h_sysfile=false
7427
7428 : access call always available on UNIX
7429 set access d_access
7430 eval $inlibc
7431
7432 : locate the flags for 'access()'
7433 case "$d_access" in
7434 "$define")
7435         echo " "
7436         $cat >access.c <<'EOCP'
7437 #include <sys/types.h>
7438 #ifdef I_FCNTL
7439 #include <fcntl.h>
7440 #endif
7441 #ifdef I_SYS_FILE
7442 #include <sys/file.h>
7443 #endif
7444 #ifdef I_UNISTD
7445 #include <unistd.h>
7446 #endif
7447 int main() {
7448         exit(R_OK);
7449 }
7450 EOCP
7451         : check sys/file.h first, no particular reason here
7452         if $test `./findhdr sys/file.h` && \
7453                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7454                 h_sysfile=true;
7455                 echo "<sys/file.h> defines the *_OK access constants." >&4
7456         elif $test `./findhdr fcntl.h` && \
7457                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7458                 h_fcntl=true;
7459                 echo "<fcntl.h> defines the *_OK access constants." >&4
7460         elif $test `./findhdr unistd.h` && \
7461                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7462                 echo "<unistd.h> defines the *_OK access constants." >&4
7463         else
7464                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7465         fi
7466         ;;
7467 esac
7468 $rm -f access*
7469
7470 : see if accessx exists
7471 set accessx d_accessx
7472 eval $inlibc
7473
7474 : see if alarm exists
7475 set alarm d_alarm
7476 eval $inlibc
7477
7478 : see if atolf exists
7479 set atolf d_atolf
7480 eval $inlibc
7481
7482 : see if atoll exists
7483 set atoll d_atoll
7484 eval $inlibc
7485
7486 : Look for GNU-cc style attribute checking
7487 echo " "
7488 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7489 $cat >attrib.c <<'EOCP'
7490 #include <stdio.h>
7491 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7492 EOCP
7493 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7494         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7495                 echo "Your C compiler doesn't fully support __attribute__."
7496                 val="$undef"
7497         else
7498                 echo "Your C compiler supports __attribute__."
7499                 val="$define"
7500         fi
7501 else
7502         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7503         val="$undef"
7504 fi
7505 set d_attribut
7506 eval $setvar
7507 $rm -f attrib*
7508
7509 : see if bcmp exists
7510 set bcmp d_bcmp
7511 eval $inlibc
7512
7513 : see if bcopy exists
7514 set bcopy d_bcopy
7515 eval $inlibc
7516
7517 : see if this is a unistd.h system
7518 set unistd.h i_unistd
7519 eval $inhdr
7520
7521 : see if getpgrp exists
7522 set getpgrp d_getpgrp
7523 eval $inlibc
7524
7525 case "$d_getpgrp" in
7526 "$define")
7527         echo " "
7528         echo "Checking to see which flavor of getpgrp is in use..."
7529         $cat >set.c <<EOP
7530 #$i_unistd I_UNISTD
7531 #include <sys/types.h>
7532 #ifdef I_UNISTD
7533 #  include <unistd.h>
7534 #endif
7535 int main()
7536 {
7537         if (getuid() == 0) {
7538                 printf("(I see you are running Configure as super-user...)\n");
7539                 setuid(1);
7540         }
7541 #ifdef TRY_BSD_PGRP
7542         if (getpgrp(1) == 0)
7543                 exit(0);
7544 #else
7545         if (getpgrp() > 0)
7546                 exit(0);
7547 #endif
7548         exit(1);
7549 }
7550 EOP
7551         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7552                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7553                 val="$define"
7554         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7555                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7556                 val="$undef"
7557         else
7558                 echo "I can't seem to compile and run the test program."
7559                 if ./usg; then
7560                         xxx="a USG one, i.e. you use getpgrp()."
7561                 else
7562                         # SVR4 systems can appear rather BSD-ish.
7563                         case "$i_unistd" in
7564                         $undef)
7565                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7566                                 val="$define"
7567                                 ;;
7568                         $define)
7569                                 xxx="probably a USG one, i.e. you use getpgrp()."
7570                                 val="$undef"
7571                                 ;;
7572                         esac
7573                 fi
7574                 echo "Assuming your getpgrp is $xxx" >&4
7575         fi
7576         ;;
7577 *) val="$undef";;
7578 esac
7579 set d_bsdgetpgrp
7580 eval $setvar
7581 $rm -f set set.c
7582
7583 : see if setpgrp exists
7584 set setpgrp d_setpgrp
7585 eval $inlibc
7586
7587 case "$d_setpgrp" in
7588 "$define")
7589         echo " "
7590         echo "Checking to see which flavor of setpgrp is in use..."
7591         $cat >set.c <<EOP
7592 #$i_unistd I_UNISTD
7593 #include <sys/types.h>
7594 #ifdef I_UNISTD
7595 #  include <unistd.h>
7596 #endif
7597 int main()
7598 {
7599         if (getuid() == 0) {
7600                 printf("(I see you are running Configure as super-user...)\n");
7601                 setuid(1);
7602         }
7603 #ifdef TRY_BSD_PGRP
7604         if (-1 == setpgrp(1, 1))
7605                 exit(0);
7606 #else
7607         if (setpgrp() != -1)
7608                 exit(0);
7609 #endif
7610         exit(1);
7611 }
7612 EOP
7613         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7614                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7615                 val="$define"
7616         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7617                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7618                 val="$undef"
7619         else
7620                 echo "(I can't seem to compile and run the test program.)"
7621                 if ./usg; then
7622                         xxx="a USG one, i.e. you use setpgrp()."
7623                 else
7624                         # SVR4 systems can appear rather BSD-ish.
7625                         case "$i_unistd" in
7626                         $undef)
7627                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7628                                 val="$define"
7629                                 ;;
7630                         $define)
7631                                 xxx="probably a USG one, i.e. you use setpgrp()."
7632                                 val="$undef"
7633                                 ;;
7634                         esac
7635                 fi
7636                 echo "Assuming your setpgrp is $xxx" >&4
7637         fi
7638         ;;
7639 *) val="$undef";;
7640 esac
7641 set d_bsdsetpgrp
7642 eval $setvar
7643 $rm -f set set.c
7644 : see if bzero exists
7645 set bzero d_bzero
7646 eval $inlibc
7647
7648 : see if signal is declared as pointer to function returning int or void
7649 echo " "
7650 xxx=`./findhdr signal.h`
7651 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7652 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7653         echo "You have int (*signal())() instead of void." >&4
7654         val="$undef"
7655 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7656         echo "You have void (*signal())()." >&4
7657         val="$define"
7658 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7659         echo "You have int (*signal())() instead of void." >&4
7660         val="$undef"
7661 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7662         echo "You have void (*signal())()." >&4
7663         val="$define"
7664 else
7665         case "$d_voidsig" in
7666         '')
7667         echo "I can't determine whether signal handler returns void or int..." >&4
7668                 dflt=void
7669                 rp="What type does your signal handler return?"
7670                 . ./myread
7671                 case "$ans" in
7672                 v*) val="$define";;
7673                 *) val="$undef";;
7674                 esac;;
7675         "$define")
7676                 echo "As you already told me, signal handler returns void." >&4
7677                 val="$define"
7678                 ;;
7679         *)      echo "As you already told me, signal handler returns int." >&4
7680                 val="$undef"
7681                 ;;
7682         esac
7683 fi
7684 set d_voidsig
7685 eval $setvar
7686 case "$d_voidsig" in
7687 "$define") signal_t="void";;
7688 *) signal_t="int";;
7689 esac
7690 $rm -f $$.tmp
7691
7692 : check for ability to cast large floats to 32-bit ints.
7693 echo " "
7694 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7695 if $test "$intsize" -ge 4; then
7696         xxx=int
7697 else
7698         xxx=long
7699 fi
7700 $cat >try.c <<EOCP
7701 #include <stdio.h>
7702 #include <sys/types.h>
7703 #include <signal.h>
7704 $signal_t blech(s) int s; { exit(3); }
7705 int main()
7706 {
7707         $xxx i32;
7708         double f, g;
7709         int result = 0;
7710         char str[16];
7711         signal(SIGFPE, blech);
7712
7713         /* Don't let compiler optimize the test away.  Store the number 
7714            in a writable string for gcc to pass to sscanf under HP/UX.
7715         */
7716         sprintf(str, "2147483647");
7717         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7718         g = 10 * f;
7719         i32  = ($xxx) g;
7720
7721         /* x86 processors will probably give 0x8000 0000, which is a
7722        sign change.  We don't want that.  We want to mimic SPARC
7723            behavior here, which is to preserve the sign and give
7724            back 0x7fff ffff.
7725         */
7726         if (i32 != ($xxx) f)
7727                 result |= 1;
7728         exit(result);
7729 }
7730 EOCP
7731 set try
7732 if eval $compile_ok; then
7733         ./try
7734         yyy=$?
7735 else
7736         echo "(I can't seem to compile the test program--assuming it can't)"
7737         yyy=1
7738 fi
7739 case "$yyy" in
7740 0)      val="$define"
7741         echo "Yup, it can."
7742         ;;
7743 *)      val="$undef"
7744         echo "Nope, it can't."
7745         ;;
7746 esac
7747 set d_casti32
7748 eval $setvar
7749 $rm -f try try.*
7750
7751 : check for ability to cast negative floats to unsigned
7752 echo " "
7753 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7754 $cat >try.c <<EOCP
7755 #include <stdio.h>
7756 #include <sys/types.h>
7757 #include <signal.h>
7758 $signal_t blech(s) int s; { exit(7); }
7759 $signal_t blech_in_list(s) int s; { exit(4); }
7760 unsigned long dummy_long(p) unsigned long p; { return p; }
7761 unsigned int dummy_int(p) unsigned int p; { return p; }
7762 unsigned short dummy_short(p) unsigned short p; { return p; }
7763 int main()
7764 {
7765         double f;
7766         unsigned long along;
7767         unsigned int aint;
7768         unsigned short ashort;
7769         int result = 0;
7770         char str[16];
7771         
7772         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7773            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7774            optimized the whole file away
7775         */
7776         /* Store the number in a writable string for gcc to pass to 
7777            sscanf under HP/UX.
7778         */
7779         sprintf(str, "-123");
7780         sscanf(str, "%lf", &f);  /* f = -123.; */
7781
7782         signal(SIGFPE, blech);
7783         along = (unsigned long)f;
7784         aint = (unsigned int)f;
7785         ashort = (unsigned short)f;
7786         if (along != (unsigned long)-123)
7787                 result |= 1;
7788         if (aint != (unsigned int)-123)
7789                 result |= 1;
7790         if (ashort != (unsigned short)-123)
7791                 result |= 1;
7792         sprintf(str, "1073741824.");
7793         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7794         f = f + f;
7795         along = 0;
7796         along = (unsigned long)f;
7797         if (along != 0x80000000)
7798                 result |= 2;
7799         f -= 1.;
7800         along = 0;
7801         along = (unsigned long)f;
7802         if (along != 0x7fffffff)
7803                 result |= 1;
7804         f += 2.;
7805         along = 0;
7806         along = (unsigned long)f;
7807         if (along != 0x80000001)
7808                 result |= 2;
7809         if (result)
7810                 exit(result);
7811         signal(SIGFPE, blech_in_list);
7812         sprintf(str, "123.");
7813         sscanf(str, "%lf", &f);  /* f = 123.; */
7814         along = dummy_long((unsigned long)f);
7815         aint = dummy_int((unsigned int)f);
7816         ashort = dummy_short((unsigned short)f);
7817         if (along != (unsigned long)123)
7818                 result |= 4;
7819         if (aint != (unsigned int)123)
7820                 result |= 4;
7821         if (ashort != (unsigned short)123)
7822                 result |= 4;
7823         exit(result);
7824
7825 }
7826 EOCP
7827 set try
7828 if eval $compile_ok; then
7829         ./try
7830         castflags=$?
7831 else
7832         echo "(I can't seem to compile the test program--assuming it can't)"
7833         castflags=7
7834 fi
7835 case "$castflags" in
7836 0)      val="$define"
7837         echo "Yup, it can."
7838         ;;
7839 *)      val="$undef"
7840         echo "Nope, it can't."
7841         ;;
7842 esac
7843 set d_castneg
7844 eval $setvar
7845 $rm -f try.*
7846
7847 : see if vprintf exists
7848 echo " "
7849 if set vprintf val -f d_vprintf; eval $csym; $val; then
7850         echo 'vprintf() found.' >&4
7851         val="$define"
7852         $cat >vprintf.c <<'EOF'
7853 #include <varargs.h>
7854
7855 int main() { xxx("foo"); }
7856
7857 xxx(va_alist)
7858 va_dcl
7859 {
7860         va_list args;
7861         char buf[10];
7862
7863         va_start(args);
7864         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7865 }
7866 EOF
7867         set vprintf
7868         if eval $compile && ./vprintf; then
7869                 echo "Your vsprintf() returns (int)." >&4
7870                 val2="$undef"
7871         else
7872                 echo "Your vsprintf() returns (char*)." >&4
7873                 val2="$define"
7874         fi
7875 else
7876         echo 'vprintf() NOT found.' >&4
7877                 val="$undef"
7878                 val2="$undef"
7879 fi
7880 set d_vprintf
7881 eval $setvar
7882 val=$val2
7883 set d_charvspr
7884 eval $setvar
7885
7886 : see if chown exists
7887 set chown d_chown
7888 eval $inlibc
7889
7890 : see if chroot exists
7891 set chroot d_chroot
7892 eval $inlibc
7893
7894 : see if chsize exists
7895 set chsize d_chsize
7896 eval $inlibc
7897
7898 : check for const keyword
7899 echo " "
7900 echo 'Checking to see if your C compiler knows about "const"...' >&4
7901 $cat >const.c <<'EOCP'
7902 typedef struct spug { int drokk; } spug;
7903 int main()
7904 {
7905         const char *foo;
7906         const spug y;
7907 }
7908 EOCP
7909 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7910         val="$define"
7911         echo "Yup, it does."
7912 else
7913         val="$undef"
7914         echo "Nope, it doesn't."
7915 fi
7916 set d_const
7917 eval $setvar
7918
7919 : see if crypt exists
7920 echo " "
7921 if set crypt val -f d_crypt; eval $csym; $val; then
7922         echo 'crypt() found.' >&4
7923         val="$define"
7924         cryptlib=''
7925 else
7926         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7927         if $test -z "$cryptlib"; then
7928                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7929         else
7930                 cryptlib=-lcrypt
7931         fi
7932         if $test -z "$cryptlib"; then
7933                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7934         else
7935                 cryptlib=-lcrypt
7936         fi
7937         if $test -z "$cryptlib"; then
7938                 cryptlib=`./loc libcrypt$_a "" $libpth`
7939         else
7940                 cryptlib=-lcrypt
7941         fi
7942         if $test -z "$cryptlib"; then
7943                 echo 'crypt() NOT found.' >&4
7944                 val="$undef"
7945         else
7946                 val="$define"
7947         fi
7948 fi
7949 set d_crypt
7950 eval $setvar
7951
7952 : get csh whereabouts
7953 case "$csh" in
7954 'csh') val="$undef" ;;
7955 *) val="$define" ;;
7956 esac
7957 set d_csh
7958 eval $setvar
7959 : Respect a hint or command line value for full_csh.
7960 case "$full_csh" in
7961 '') full_csh=$csh ;;
7962 esac
7963
7964 : see if cuserid exists
7965 set cuserid d_cuserid
7966 eval $inlibc
7967
7968 : see if this is a limits.h system
7969 set limits.h i_limits
7970 eval $inhdr
7971
7972 : see if this is a float.h system
7973 set float.h i_float
7974 eval $inhdr
7975
7976 : See if number of significant digits in a double precision number is known
7977 echo " "
7978 $cat >dbl_dig.c <<EOM
7979 #$i_limits I_LIMITS
7980 #$i_float I_FLOAT
7981 #ifdef I_LIMITS
7982 #include <limits.h>
7983 #endif
7984 #ifdef I_FLOAT
7985 #include <float.h>
7986 #endif
7987 #ifdef DBL_DIG
7988 printf("Contains DBL_DIG");
7989 #endif
7990 EOM
7991 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7992 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7993         echo "DBL_DIG found." >&4
7994         val="$define"
7995 else
7996         echo "DBL_DIG NOT found." >&4
7997         val="$undef"
7998 fi
7999 $rm -f dbl_dig.?
8000 set d_dbl_dig
8001 eval $setvar
8002
8003 : see if difftime exists
8004 set difftime d_difftime
8005 eval $inlibc
8006
8007 : see if this is a dirent system
8008 echo " "
8009 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8010         val="$define"
8011         echo "<dirent.h> found." >&4
8012 else
8013         val="$undef"
8014         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8015                 echo "<sys/dir.h> found." >&4
8016                 echo " "
8017         else
8018                 xinc=`./findhdr sys/ndir.h`
8019         fi
8020         echo "<dirent.h> NOT found." >&4
8021 fi
8022 set i_dirent
8023 eval $setvar
8024
8025 : Look for type of directory structure.
8026 echo " "
8027 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8028
8029 case "$direntrytype" in
8030 ''|' ')
8031         case "$i_dirent" in
8032         $define) guess1='struct dirent' ;;
8033         *) guess1='struct direct'  ;;
8034         esac
8035         ;;
8036 *)      guess1="$direntrytype"
8037         ;;
8038 esac
8039
8040 case "$guess1" in
8041 'struct dirent') guess2='struct direct' ;;
8042 *) guess2='struct dirent' ;;
8043 esac
8044                 
8045 if $contains "$guess1" try.c >/dev/null 2>&1; then
8046         direntrytype="$guess1"
8047         echo "Your directory entries are $direntrytype." >&4
8048 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8049         direntrytype="$guess2"
8050         echo "Your directory entries seem to be $direntrytype." >&4
8051 else
8052         echo "I don't recognize your system's directory entries." >&4
8053         rp="What type is used for directory entries on this system?"
8054         dflt="$guess1"
8055         . ./myread
8056         direntrytype="$ans"
8057 fi
8058 $rm -f try.c
8059
8060
8061 : see if the directory entry stores field length
8062 echo " "
8063 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8064 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8065         echo "Good, your directory entry keeps length information in d_namlen." >&4
8066         val="$define"
8067 else
8068         echo "Your directory entry does not know about the d_namlen field." >&4
8069         val="$undef"
8070 fi
8071 set d_dirnamlen
8072 eval $setvar
8073 $rm -f try.c
8074
8075 : see if dlerror exists
8076 xxx_runnm="$runnm"
8077 runnm=false
8078 set dlerror d_dlerror
8079 eval $inlibc
8080 runnm="$xxx_runnm"
8081
8082 : see if dlfcn is available
8083 set dlfcn.h i_dlfcn
8084 eval $inhdr
8085
8086 case "$usedl" in
8087 $define|y|true)
8088         $cat << EOM
8089
8090 On a few systems, the dynamically loaded modules that perl generates and uses
8091 will need a different extension than shared libs. The default will probably
8092 be appropriate.
8093
8094 EOM
8095         case "$dlext" in
8096         '')     dflt="$so" ;;
8097         *)      dflt="$dlext" ;;
8098         esac
8099         rp='What is the extension of dynamically loaded modules'
8100         . ./myread
8101         dlext="$ans"
8102         ;;
8103 *)
8104         dlext="none"
8105         ;;
8106 esac
8107
8108 : Check if dlsym need a leading underscore
8109 echo " "
8110 val="$undef"
8111
8112 case "$dlsrc" in
8113 dl_dlopen.xs)
8114         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8115         $cat >dyna.c <<'EOM'
8116 fred () { }
8117 EOM
8118
8119 $cat >fred.c<<EOM
8120
8121 #include <stdio.h>
8122 #$i_dlfcn I_DLFCN
8123 #ifdef I_DLFCN
8124 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8125 #else
8126 #include <sys/types.h>
8127 #include <nlist.h>
8128 #include <link.h>
8129 #endif
8130
8131 extern int fred() ;
8132
8133 int main()
8134 {
8135     void * handle ;
8136     void * symbol ;
8137 #ifndef RTLD_LAZY
8138     int mode = 1 ;
8139 #else
8140     int mode = RTLD_LAZY ;
8141 #endif
8142     handle = dlopen("./dyna.$dlext", mode) ;
8143     if (handle == NULL) {
8144         printf ("1\n") ;
8145         fflush (stdout) ;
8146         exit(0);
8147     }
8148     symbol = dlsym(handle, "fred") ;
8149     if (symbol == NULL) {
8150         /* try putting a leading underscore */
8151         symbol = dlsym(handle, "_fred") ;
8152         if (symbol == NULL) {
8153             printf ("2\n") ;
8154             fflush (stdout) ;
8155             exit(0);
8156         }
8157         printf ("3\n") ;
8158     }
8159     else
8160         printf ("4\n") ;
8161     fflush (stdout) ;
8162     exit(0);
8163 }
8164 EOM
8165         : Call the object file tmp-dyna.o in case dlext=o.
8166         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8167                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8168                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8169                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8170                 xxx=`./fred`
8171                 case $xxx in
8172                 1)      echo "Test program failed using dlopen." >&4
8173                         echo "Perhaps you should not use dynamic loading." >&4;;
8174                 2)      echo "Test program failed using dlsym." >&4
8175                         echo "Perhaps you should not use dynamic loading." >&4;;
8176                 3)      echo "dlsym needs a leading underscore" >&4
8177                         val="$define" ;;
8178                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8179                 esac
8180         else
8181                 echo "I can't compile and run the test program." >&4
8182                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8183         fi
8184         ;;
8185 esac
8186                 
8187 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8188
8189 set d_dlsymun
8190 eval $setvar
8191
8192 hasproto='varname=$1; func=$2; shift; shift;
8193 while $test $# -ge 2; do
8194         case "$1" in
8195         $define) echo "#include <$2>";;
8196         esac ;
8197     shift 2;
8198 done > try.c;
8199 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8200 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8201         echo "$func() prototype found.";
8202         val="$define";
8203 else
8204         echo "$func() prototype NOT found.";
8205         val="$undef";
8206 fi;
8207 set $varname;
8208 eval $setvar;
8209 $rm -f try.c tryout.c'
8210
8211 : see if prototype for drand48 is available
8212 echo " "
8213 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8214 eval $hasproto
8215
8216 : see if dup2 exists
8217 set dup2 d_dup2
8218 eval $inlibc
8219
8220 : see if eaccess exists
8221 set eaccess d_eaccess
8222 eval $inlibc
8223
8224 : see if endgrent exists
8225 set endgrent d_endgrent
8226 eval $inlibc
8227
8228 : see if endhostent exists
8229 set endhostent d_endhent
8230 eval $inlibc
8231
8232 : see if endnetent exists
8233 set endnetent d_endnent
8234 eval $inlibc
8235
8236 : see if endprotoent exists
8237 set endprotoent d_endpent
8238 eval $inlibc
8239
8240 : see if endpwent exists
8241 set endpwent d_endpwent
8242 eval $inlibc
8243
8244 : see if endservent exists
8245 set endservent d_endsent
8246 eval $inlibc
8247
8248 : see if endspent exists
8249 set endspent d_endspent
8250 eval $inlibc
8251
8252 : Locate the flags for 'open()'
8253 echo " "
8254 $cat >open3.c <<'EOCP'
8255 #include <sys/types.h>
8256 #ifdef I_FCNTL
8257 #include <fcntl.h>
8258 #endif
8259 #ifdef I_SYS_FILE
8260 #include <sys/file.h>
8261 #endif
8262 int main() {
8263         if(O_RDONLY);
8264 #ifdef O_TRUNC
8265         exit(0);
8266 #else
8267         exit(1);
8268 #endif
8269 }
8270 EOCP
8271 : check sys/file.h first to get FREAD on Sun
8272 if $test `./findhdr sys/file.h` && \
8273                 set open3 -DI_SYS_FILE && eval $compile; then
8274         h_sysfile=true;
8275         echo "<sys/file.h> defines the O_* constants..." >&4
8276         if ./open3; then
8277                 echo "and you have the 3 argument form of open()." >&4
8278                 val="$define"
8279         else
8280                 echo "but not the 3 argument form of open().  Oh, well." >&4
8281                 val="$undef"
8282         fi
8283 elif $test `./findhdr fcntl.h` && \
8284                 set open3 -DI_FCNTL && eval $compile; then
8285         h_fcntl=true;
8286         echo "<fcntl.h> defines the O_* constants..." >&4
8287         if ./open3; then
8288                 echo "and you have the 3 argument form of open()." >&4
8289                 val="$define"
8290         else
8291                 echo "but not the 3 argument form of open().  Oh, well." >&4
8292                 val="$undef"
8293         fi
8294 else
8295         val="$undef"
8296         echo "I can't find the O_* constant definitions!  You got problems." >&4
8297 fi
8298 set d_open3
8299 eval $setvar
8300 $rm -f open3*
8301
8302 : see which of string.h or strings.h is needed
8303 echo " "
8304 strings=`./findhdr string.h`
8305 if $test "$strings" && $test -r "$strings"; then
8306         echo "Using <string.h> instead of <strings.h>." >&4
8307         val="$define"
8308 else
8309         val="$undef"
8310         strings=`./findhdr strings.h`
8311         if $test "$strings" && $test -r "$strings"; then
8312                 echo "Using <strings.h> instead of <string.h>." >&4
8313         else
8314                 echo "No string header found -- You'll surely have problems." >&4
8315         fi
8316 fi
8317 set i_string
8318 eval $setvar
8319 case "$i_string" in
8320 "$undef") strings=`./findhdr strings.h`;;
8321 *)        strings=`./findhdr string.h`;;
8322 esac
8323
8324 : check for non-blocking I/O stuff
8325 case "$h_sysfile" in
8326 true) echo "#include <sys/file.h>" > head.c;;
8327 *)
8328         case "$h_fcntl" in
8329         true) echo "#include <fcntl.h>" > head.c;;
8330         *) echo "#include <sys/fcntl.h>" > head.c;;
8331         esac
8332         ;;
8333 esac
8334 echo " "
8335 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8336 case "$o_nonblock" in
8337 '')
8338         $cat head.c > try.c
8339         $cat >>try.c <<'EOCP'
8340 #include <stdio.h>
8341 int main() {
8342 #ifdef O_NONBLOCK
8343         printf("O_NONBLOCK\n");
8344         exit(0);
8345 #endif
8346 #ifdef O_NDELAY
8347         printf("O_NDELAY\n");
8348         exit(0);
8349 #endif
8350 #ifdef FNDELAY
8351         printf("FNDELAY\n");
8352         exit(0);
8353 #endif
8354         exit(0);
8355 }
8356 EOCP
8357         set try
8358         if eval $compile_ok; then
8359                 o_nonblock=`./try`
8360                 case "$o_nonblock" in
8361                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8362                 *) echo "Seems like we can use $o_nonblock.";;
8363                 esac
8364         else
8365                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8366         fi
8367         ;;
8368 *) echo "Using $hint value $o_nonblock.";;
8369 esac
8370 $rm -f try try.* .out core
8371
8372 echo " "
8373 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8374 case "$eagain" in
8375 '')
8376         $cat head.c > try.c
8377         $cat >>try.c <<EOCP
8378 #include <errno.h>
8379 #include <sys/types.h>
8380 #include <signal.h>
8381 #include <stdio.h> 
8382 #define MY_O_NONBLOCK $o_nonblock
8383 #ifndef errno  /* XXX need better Configure test */
8384 extern int errno;
8385 #endif
8386 #$i_unistd I_UNISTD
8387 #ifdef I_UNISTD
8388 #include <unistd.h>
8389 #endif
8390 #ifdef $i_string
8391 #include <string.h>
8392 #else
8393 #include <strings.h>
8394 #endif
8395 $signal_t blech(x) int x; { exit(3); }
8396 EOCP
8397         $cat >> try.c <<'EOCP'
8398 int main()
8399 {
8400         int pd[2];
8401         int pu[2];
8402         char buf[1];
8403         char string[100];
8404
8405         pipe(pd);       /* Down: child -> parent */
8406         pipe(pu);       /* Up: parent -> child */
8407         if (0 != fork()) {
8408                 int ret;
8409                 close(pd[1]);   /* Parent reads from pd[0] */
8410                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8411                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8412                         exit(1);
8413                 signal(SIGALRM, blech);
8414                 alarm(5);
8415                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8416                         exit(2);
8417                 sprintf(string, "%d\n", ret);
8418                 write(2, string, strlen(string));
8419                 alarm(0);
8420 #ifdef EAGAIN
8421                 if (errno == EAGAIN) {
8422                         printf("EAGAIN\n");
8423                         goto ok;
8424                 }
8425 #endif
8426 #ifdef EWOULDBLOCK
8427                 if (errno == EWOULDBLOCK)
8428                         printf("EWOULDBLOCK\n");
8429 #endif
8430         ok:
8431                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8432                 sleep(2);                               /* Give it time to close our pipe */
8433                 alarm(5);
8434                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8435                 alarm(0);
8436                 sprintf(string, "%d\n", ret);
8437                 write(3, string, strlen(string));
8438                 exit(0);
8439         }
8440
8441         close(pd[0]);                   /* We write to pd[1] */
8442         close(pu[1]);                   /* We read from pu[0] */
8443         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8444         close(pd[1]);                   /* Pipe pd is now fully closed! */
8445         exit(0);                                /* Bye bye, thank you for playing! */
8446 }
8447 EOCP
8448         set try
8449         if eval $compile_ok; then
8450                 echo "$startsh" >mtry
8451                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8452                 chmod +x mtry
8453                 ./mtry >/dev/null 2>&1
8454                 case $? in
8455                 0) eagain=`$cat try.out`;;
8456                 1) echo "Could not perform non-blocking setting!";;
8457                 2) echo "I did a successful read() for something that was not there!";;
8458                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8459                 *) echo "Something terribly wrong happened during testing.";;
8460                 esac
8461                 rd_nodata=`$cat try.ret`
8462                 echo "A read() system call with no data present returns $rd_nodata."
8463                 case "$rd_nodata" in
8464                 0|-1) ;;
8465                 *)
8466                         echo "(That's peculiar, fixing that to be -1.)"
8467                         rd_nodata=-1
8468                         ;;
8469                 esac
8470                 case "$eagain" in
8471                 '')
8472                         echo "Forcing errno EAGAIN on read() with no data available."
8473                         eagain=EAGAIN
8474                         ;;
8475                 *)
8476                         echo "Your read() sets errno to $eagain when no data is available."
8477                         ;;
8478                 esac
8479                 status=`$cat try.err`
8480                 case "$status" in
8481                 0) echo "And it correctly returns 0 to signal EOF.";;
8482                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8483                 *) echo "However, your read() returns '$status' on EOF??";;
8484                 esac
8485                 val="$define"
8486                 if test "$status" = "$rd_nodata"; then
8487                         echo "WARNING: you can't distinguish between EOF and no data!"
8488                         val="$undef"
8489                 fi
8490         else
8491                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8492                 eagain=EAGAIN
8493         fi
8494         set d_eofnblk
8495         eval $setvar
8496         ;;
8497 *)
8498         echo "Using $hint value $eagain."
8499         echo "Your read() returns $rd_nodata when no data is present."
8500         case "$d_eofnblk" in
8501         "$define") echo "And you can see EOF because read() returns 0.";;
8502         "$undef") echo "But you can't see EOF status from read() returned value.";;
8503         *)
8504                 echo "(Assuming you can't see EOF status from read anyway.)"
8505                 d_eofnblk=$undef
8506                 ;;
8507         esac
8508         ;;
8509 esac
8510 $rm -f try try.* .out core head.c mtry
8511
8512 : see if fchmod exists
8513 set fchmod d_fchmod
8514 eval $inlibc
8515
8516 : see if fchown exists
8517 set fchown d_fchown
8518 eval $inlibc
8519
8520 : see if this is an fcntl system
8521 set fcntl d_fcntl
8522 eval $inlibc
8523
8524 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8525 while $test $# -ge 2; do
8526         case "$1" in
8527         $define) echo "#include <$2>";;
8528         esac ;
8529     shift 2;
8530 done > try.c;
8531 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8532 set try;
8533 if eval $compile; then
8534         val="$define";
8535 else
8536         val="$undef";
8537 fi;
8538 set $varname;
8539 eval $setvar;
8540 $rm -f try.c try.o'
8541
8542 socketlib=''
8543 sockethdr=''
8544 : see whether socket exists
8545 echo " "
8546 $echo $n "Hmm... $c" >&4
8547 if set socket val -f d_socket; eval $csym; $val; then
8548         echo "Looks like you have Berkeley networking support." >&4
8549         d_socket="$define"
8550         if set setsockopt val -f; eval $csym; $val; then
8551                 d_oldsock="$undef"
8552         else
8553                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8554                 d_oldsock="$define"
8555         fi
8556 else
8557         if $contains socklib libc.list >/dev/null 2>&1; then
8558                 echo "Looks like you have Berkeley networking support." >&4
8559                 d_socket="$define"
8560                 : we will have to assume that it supports the 4.2 BSD interface
8561                 d_oldsock="$undef"
8562         else
8563                 echo "You don't have Berkeley networking in libc$_a..." >&4
8564                 if test "X$d_socket" = "X$define"; then
8565                    echo "...but you seem to believe that you have sockets." >&4
8566                 else
8567                         for net in net socket
8568                         do
8569                                 if test -f /usr/lib/lib$net$_a; then
8570                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8571                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8572                                         if $contains socket libc.list >/dev/null 2>&1; then
8573                                                 d_socket="$define"
8574                                                 socketlib="-l$net"
8575                                                 case "$net" in
8576                                                 net)
8577                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8578                                                         sockethdr="-I/usr/netinclude"
8579                                                         ;;
8580                                                 esac
8581                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8582                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8583                                                         d_oldsock="$undef"
8584                                                 else
8585                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8586                                                         d_oldsock="$define"
8587                                                 fi
8588                                                 break
8589                                         fi
8590                                 fi
8591                         done
8592                         if test "X$d_socket" != "X$define"; then
8593                            echo "or anywhere else I see." >&4
8594                            d_socket="$undef"
8595                            d_oldsock="$undef"
8596                         fi
8597                 fi
8598         fi
8599 fi
8600
8601 : see if socketpair exists
8602 set socketpair d_sockpair
8603 eval $inlibc
8604
8605
8606 echo " "
8607 echo "Checking the availability of certain socket constants..." >& 4
8608 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8609         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8610         $cat >try.c <<EOF
8611 #include <sys/types.h>
8612 #include <sys/socket.h>
8613 int main() {
8614     int i = $ENUM;
8615 }
8616 EOF
8617         val="$undef"
8618         set try; if eval $compile; then
8619                 val="$define"
8620         fi
8621         set d_${enum}; eval $setvar
8622         $rm -f try.c try
8623 done
8624
8625 : see if sys/select.h has to be included
8626 set sys/select.h i_sysselct
8627 eval $inhdr
8628
8629 : see if we should include time.h, sys/time.h, or both
8630 echo " "
8631 if test "X$timeincl" = X; then
8632         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8633         $echo $n "I'm now running the test program...$c"
8634         $cat >try.c <<'EOCP'
8635 #include <sys/types.h>
8636 #ifdef I_TIME
8637 #include <time.h>
8638 #endif
8639 #ifdef I_SYSTIME
8640 #ifdef SYSTIMEKERNEL
8641 #define KERNEL
8642 #endif
8643 #include <sys/time.h>
8644 #endif
8645 #ifdef I_SYSSELECT
8646 #include <sys/select.h>
8647 #endif
8648 int main()
8649 {
8650         struct tm foo;
8651 #ifdef S_TIMEVAL
8652         struct timeval bar;
8653 #endif
8654 #ifdef S_TIMEZONE
8655         struct timezone tzp;
8656 #endif
8657         if (foo.tm_sec == foo.tm_sec)
8658                 exit(0);
8659 #ifdef S_TIMEVAL
8660         if (bar.tv_sec == bar.tv_sec)
8661                 exit(0);
8662 #endif
8663         exit(1);
8664 }
8665 EOCP
8666         flags=''
8667         for s_timezone in '-DS_TIMEZONE' ''; do
8668         sysselect=''
8669         for s_timeval in '-DS_TIMEVAL' ''; do
8670         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8671         for i_time in '' '-DI_TIME'; do
8672         for i_systime in '-DI_SYSTIME' ''; do
8673                 case "$flags" in
8674                 '') $echo $n ".$c"
8675                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8676                         if eval $compile; then
8677                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8678                                 shift
8679                                 flags="$*"
8680                                 echo " "
8681                                 $echo $n "Succeeded with $flags$c"
8682                         fi
8683                         ;;
8684                 esac
8685         done
8686         done
8687         done
8688         done
8689         done
8690         timeincl=''
8691         echo " "
8692         case "$flags" in
8693         *SYSTIMEKERNEL*) i_systimek="$define"
8694                 timeincl=`./findhdr sys/time.h`
8695                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8696         *) i_systimek="$undef";;
8697         esac
8698         case "$flags" in
8699         *I_TIME*) i_time="$define"
8700                 timeincl=`./findhdr time.h`" $timeincl"
8701                 echo "We'll include <time.h>." >&4;;
8702         *) i_time="$undef";;
8703         esac
8704         case "$flags" in
8705         *I_SYSTIME*) i_systime="$define"
8706                 timeincl=`./findhdr sys/time.h`" $timeincl"
8707                 echo "We'll include <sys/time.h>." >&4;;
8708         *) i_systime="$undef";;
8709         esac
8710         $rm -f try.c try
8711 fi
8712
8713 : check for fd_set items
8714 $cat <<EOM
8715
8716 Checking to see how well your C compiler handles fd_set and friends ...
8717 EOM
8718 $cat >fd_set.c <<EOCP
8719 #$i_systime I_SYS_TIME
8720 #$i_sysselct I_SYS_SELECT
8721 #$d_socket HAS_SOCKET
8722 #include <sys/types.h>
8723 #ifdef HAS_SOCKET
8724 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8725 #endif
8726 #ifdef I_SYS_TIME
8727 #include <sys/time.h>
8728 #endif
8729 #ifdef I_SYS_SELECT
8730 #include <sys/select.h>
8731 #endif
8732 int main() {
8733         fd_set fds;
8734
8735 #ifdef TRYBITS
8736         if(fds.fds_bits);
8737 #endif
8738
8739 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8740         exit(0);
8741 #else
8742         exit(1);
8743 #endif
8744 }
8745 EOCP
8746 set fd_set -DTRYBITS
8747 if eval $compile; then
8748         d_fds_bits="$define"
8749         d_fd_set="$define"
8750         echo "Well, your system knows about the normal fd_set typedef..." >&4
8751         if ./fd_set; then
8752                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8753                 d_fd_macros="$define"
8754         else
8755                 $cat >&4 <<'EOM'
8756 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8757 EOM
8758                 d_fd_macros="$undef"
8759         fi
8760 else
8761         $cat <<'EOM'
8762 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8763 EOM
8764         set fd_set
8765         if eval $compile; then
8766                 d_fds_bits="$undef"
8767                 d_fd_set="$define"
8768                 echo "Well, your system has some sort of fd_set available..." >&4
8769                 if ./fd_set; then
8770                         echo "and you have the normal fd_set macros." >&4
8771                         d_fd_macros="$define"
8772                 else
8773                         $cat <<'EOM'
8774 but not the normal fd_set macros!  Gross!  More work for me...
8775 EOM
8776                         d_fd_macros="$undef"
8777                 fi
8778         else
8779         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8780                 d_fd_set="$undef"
8781                 d_fds_bits="$undef"
8782                 d_fd_macros="$undef"
8783         fi
8784 fi
8785 $rm -f fd_set*
8786
8787 : see if fgetpos exists
8788 set fgetpos d_fgetpos
8789 eval $inlibc
8790
8791 : see if flock exists
8792 set flock d_flock
8793 eval $inlibc
8794
8795 : see if fork exists
8796 set fork d_fork
8797 eval $inlibc
8798
8799 : see if pathconf exists
8800 set pathconf d_pathconf
8801 eval $inlibc
8802
8803 : see if fpathconf exists
8804 set fpathconf d_fpathconf
8805 eval $inlibc
8806
8807
8808 : check for off64_t
8809 echo " "
8810 echo "Checking to see if your system supports off64_t..." >&4
8811 $cat >try.c <<EOCP
8812 #include <sys/types.h>
8813 #include <unistd.h>
8814 int main() { off64_t x = 7; }'
8815 EOCP
8816 set try
8817 if eval $compile; then
8818         val="$define"
8819         echo "Yes, it does."
8820 else
8821         val="$undef"
8822         echo "No, it doesn't."
8823         case "$lseeksize" in
8824         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8825         esac
8826 fi
8827 $rm -f try.* try
8828 set d_off64_t
8829 eval $setvar
8830
8831 : check for fpos64_t
8832 echo " "
8833 echo "Checking to see if your system supports fpos64_t..." >&4
8834 $cat >try.c <<EOCP
8835 #include <sys/stdio.h>
8836 int main() { fpos64_t x x = 7; }'
8837 EOCP
8838 set try
8839 if eval $compile; then
8840         val="$define"
8841         echo "Yes, it does."
8842 else
8843         val="$undef"
8844         echo "No, it doesn't."
8845         case "$fpossize" in
8846         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8847         esac
8848 fi
8849 $rm -f try.* try
8850 set d_fpos64_t
8851 eval $setvar
8852
8853 hasstruct='varname=$1; struct=$2; shift; shift;
8854 while $test $# -ge 2; do
8855         case "$1" in
8856         $define) echo "#include <$2>";;
8857         esac ;
8858     shift 2;
8859 done > try.c;
8860 echo "int main () { struct $struct foo; }" >> try.c;
8861 set try;
8862 if eval $compile; then
8863         val="$define";
8864 else
8865         val="$undef";
8866 fi;
8867 set $varname;
8868 eval $setvar;
8869 $rm -f try.c try.o'
8870
8871 : see if this is a sys/param system
8872 set sys/param.h i_sysparam
8873 eval $inhdr
8874
8875 : see if this is a sys/mount.h system
8876 set sys/mount.h i_sysmount
8877 eval $inhdr
8878
8879 : see if sys/types.h has to be included
8880 set sys/types.h i_systypes
8881 eval $inhdr
8882
8883
8884 echo " "
8885 echo "Checking to see if your system supports struct fs_data..." >&4
8886 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8887 eval $hasstruct
8888 case "$d_fs_data_s" in
8889 "$define")      echo "Yes, it does."   ;;
8890 *)              echo "No, it doesn't." ;;
8891 esac
8892
8893 : see if fseeko exists
8894 set fseeko d_fseeko
8895 eval $inlibc
8896 case "$longsize" in
8897 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8898 esac
8899
8900 : see if fsetpos exists
8901 set fsetpos d_fsetpos
8902 eval $inlibc
8903
8904
8905 : see if fstatfs exists
8906 set fstatfs d_fstatfs
8907 eval $inlibc
8908
8909
8910 : see if statvfs exists
8911 set statvfs d_statvfs
8912 eval $inlibc
8913
8914 : see if fstatvfs exists
8915 set fstatvfs d_fstatvfs
8916 eval $inlibc
8917
8918
8919 : see if ftello exists
8920 set ftello d_ftello
8921 eval $inlibc
8922 case "$longsize" in
8923 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8924 esac
8925
8926 : see if getcwd exists
8927 set getcwd d_getcwd
8928 eval $inlibc
8929
8930 : see if getgrent exists
8931 set getgrent d_getgrent
8932 eval $inlibc
8933
8934 : see if gethostbyaddr exists
8935 set gethostbyaddr d_gethbyaddr
8936 eval $inlibc
8937
8938 : see if gethostbyname exists
8939 set gethostbyname d_gethbyname
8940 eval $inlibc
8941
8942 : see if gethostent exists
8943 set gethostent d_gethent
8944 eval $inlibc
8945
8946 : see how we will look up host name
8947 echo " "
8948 call=''
8949 if set gethostname val -f d_gethname; eval $csym; $val; then
8950         echo 'gethostname() found.' >&4
8951         d_gethname="$define"
8952         call=gethostname
8953 fi
8954 if set uname val -f d_uname; eval $csym; $val; then
8955         if ./xenix; then
8956                 $cat <<'EOM'
8957 uname() was found, but you're running xenix, and older versions of xenix
8958 have a broken uname(). If you don't really know whether your xenix is old
8959 enough to have a broken system call, use the default answer.
8960
8961 EOM
8962                 dflt=y
8963                 case "$d_uname" in
8964                 "$define") dflt=n;;
8965                 esac
8966                 rp='Is your uname() broken?'
8967                 . ./myread
8968                 case "$ans" in
8969                 n*) d_uname="$define"; call=uname;;
8970                 esac
8971         else
8972                 echo 'uname() found.' >&4
8973                 d_uname="$define"
8974                 case "$call" in
8975                 '') call=uname ;;
8976                 esac
8977         fi
8978 fi
8979 case "$d_gethname" in
8980 '') d_gethname="$undef";;
8981 esac
8982 case "$d_uname" in
8983 '') d_uname="$undef";;
8984 esac
8985 case "$d_uname$d_gethname" in
8986 *define*)
8987         dflt=n
8988         cat <<EOM
8989  
8990 Every now and then someone has a $call() that lies about the hostname
8991 but can't be fixed for political or economic reasons.  If you wish, I can
8992 pretend $call() isn't there and maybe compute hostname at run-time
8993 thanks to the '$phostname' command.
8994
8995 EOM
8996         rp="Shall I ignore $call() from now on?"
8997         . ./myread
8998         case "$ans" in
8999         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9000         esac;;
9001 esac
9002 case "$phostname" in
9003 '') aphostname='';;
9004 *) case "$aphostname" in
9005         /*) ;;
9006         *) set X $phostname
9007                 shift
9008                 file=$1
9009                 shift
9010                 file=`./loc $file $file $pth`
9011                 aphostname=`echo $file $*`
9012                 ;;
9013         esac
9014         ;;
9015 esac
9016 case "$d_uname$d_gethname" in
9017 *define*) ;;
9018 *)
9019         case "$phostname" in
9020         '')
9021                 echo "There will be no way for $package to get your hostname." >&4;;
9022         *)
9023         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9024                 ;;
9025         esac;;
9026 esac
9027 case "$d_phostname" in
9028 '') d_phostname="$undef";;
9029 esac
9030
9031 : see if this is a netdb.h system
9032 set netdb.h i_netdb
9033 eval $inhdr
9034
9035 : see if prototypes for various gethostxxx netdb.h functions are available
9036 echo " "
9037 set d_gethostprotos gethostent $i_netdb netdb.h
9038 eval $hasproto
9039
9040 : see if getlogin exists
9041 set getlogin d_getlogin
9042 eval $inlibc
9043
9044 : see if getmnt exists
9045 set getmnt d_getmnt
9046 eval $inlibc
9047
9048 : see if getmntent exists
9049 set getmntent d_getmntent
9050 eval $inlibc
9051
9052 : see if getnetbyaddr exists
9053 set getnetbyaddr d_getnbyaddr
9054 eval $inlibc
9055
9056 : see if getnetbyname exists
9057 set getnetbyname d_getnbyname
9058 eval $inlibc
9059
9060 : see if getnetent exists
9061 set getnetent d_getnent
9062 eval $inlibc
9063
9064 : see if prototypes for various getnetxxx netdb.h functions are available
9065 echo " "
9066 set d_getnetprotos getnetent $i_netdb netdb.h
9067 eval $hasproto
9068
9069
9070 : see if getprotobyname exists
9071 set getprotobyname d_getpbyname
9072 eval $inlibc
9073
9074 : see if getprotobynumber exists
9075 set getprotobynumber d_getpbynumber
9076 eval $inlibc
9077
9078 : see if getprotoent exists
9079 set getprotoent d_getpent
9080 eval $inlibc
9081
9082 : see if getpgid exists
9083 set getpgid d_getpgid
9084 eval $inlibc
9085
9086 : see if getpgrp2 exists
9087 set getpgrp2 d_getpgrp2
9088 eval $inlibc
9089
9090 : see if getppid exists
9091 set getppid d_getppid
9092 eval $inlibc
9093
9094 : see if getpriority exists
9095 set getpriority d_getprior
9096 eval $inlibc
9097
9098 : see if prototypes for various getprotoxxx netdb.h functions are available
9099 echo " "
9100 set d_getprotoprotos getprotoent $i_netdb netdb.h
9101 eval $hasproto
9102
9103 : see if getpwent exists
9104 set getpwent d_getpwent
9105 eval $inlibc
9106
9107
9108 : see if getservbyname exists
9109 set getservbyname d_getsbyname
9110 eval $inlibc
9111
9112 : see if getservbyport exists
9113 set getservbyport d_getsbyport
9114 eval $inlibc
9115
9116 : see if getservent exists
9117 set getservent d_getsent
9118 eval $inlibc
9119
9120 : see if prototypes for various getservxxx netdb.h functions are available
9121 echo " "
9122 set d_getservprotos getservent $i_netdb netdb.h
9123 eval $hasproto
9124
9125 : see if getspent exists
9126 set getspent d_getspent
9127 eval $inlibc
9128
9129 : see if getspnam exists
9130 set getspnam d_getspnam
9131 eval $inlibc
9132
9133 : see if gettimeofday or ftime exists
9134 set gettimeofday d_gettimeod
9135 eval $inlibc
9136 case "$d_gettimeod" in
9137 "$undef")
9138         set ftime d_ftime 
9139         eval $inlibc
9140         ;;
9141 *)
9142         val="$undef"; set d_ftime; eval $setvar
9143         ;;
9144 esac
9145 case "$d_gettimeod$d_ftime" in
9146 "$undef$undef")
9147         echo " "
9148         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9149         ;;
9150 esac
9151
9152 : see if this is an grp system
9153 set grp.h i_grp
9154 eval $inhdr
9155
9156 case "$i_grp" in
9157 $define)
9158         xxx=`./findhdr grp.h`
9159         $cppstdin $cppflags $cppminus < $xxx >$$.h
9160
9161         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9162                 val="$define"
9163         else
9164                 val="$undef"
9165         fi
9166         set d_grpasswd
9167         eval $setvar
9168
9169         $rm -f $$.h
9170         ;;
9171 *)
9172         val="$undef";
9173         set d_grpasswd; eval $setvar
9174         ;;
9175 esac
9176
9177 : see if hasmntopt exists
9178 set hasmntopt d_hasmntopt
9179 eval $inlibc
9180
9181 : see if this is a netinet/in.h or sys/in.h system
9182 set netinet/in.h i_niin sys/in.h i_sysin
9183 eval $inhdr
9184
9185 : see if arpa/inet.h has to be included
9186 set arpa/inet.h i_arpainet
9187 eval $inhdr
9188
9189 : see if htonl --and friends-- exists
9190 val=''
9191 set htonl val
9192 eval $inlibc
9193
9194 : Maybe they are macros.
9195 case "$val" in
9196 $undef)
9197         $cat >htonl.c <<EOM
9198 #include <stdio.h>
9199 #include <sys/types.h>
9200 #$i_niin I_NETINET_IN
9201 #$i_sysin I_SYS_IN
9202 #$i_arpainet I_ARPA_INET
9203 #ifdef I_NETINET_IN
9204 #include <netinet/in.h>
9205 #endif
9206 #ifdef I_SYS_IN
9207 #include <sys/in.h>
9208 #endif
9209 #ifdef I_ARPA_INET
9210 #include <arpa/inet.h>
9211 #endif
9212 #ifdef htonl
9213 printf("Defined as a macro.");
9214 #endif
9215 EOM
9216         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9217         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9218                 val="$define"
9219                 echo "But it seems to be defined as a macro." >&4
9220         fi
9221         $rm -f htonl.?
9222         ;;
9223 esac
9224 set d_htonl
9225 eval $setvar
9226
9227 : see if iconv exists
9228 set iconv d_iconv
9229 eval $inlibc
9230
9231 : index or strchr
9232 echo " "
9233 if set index val -f; eval $csym; $val; then
9234         if set strchr val -f d_strchr; eval $csym; $val; then
9235                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9236                         val="$define"
9237                         vali="$undef"
9238                         echo "strchr() found." >&4
9239                 else
9240                         val="$undef"
9241                         vali="$define"
9242                         echo "index() found." >&4
9243                 fi
9244         else
9245                 val="$undef"
9246                 vali="$define"
9247                 echo "index() found." >&4
9248         fi
9249 else
9250         if set strchr val -f d_strchr; eval $csym; $val; then
9251                 val="$define"
9252                 vali="$undef"
9253                 echo "strchr() found." >&4
9254         else
9255                 echo "No index() or strchr() found!" >&4
9256                 val="$undef"
9257                 vali="$undef"
9258         fi
9259 fi
9260 set d_strchr; eval $setvar
9261 val="$vali"
9262 set d_index; eval $setvar
9263
9264 : check whether inet_aton exists
9265 set inet_aton d_inetaton
9266 eval $inlibc
9267
9268 : see if inttypes.h is available
9269 : we want a real compile instead of Inhdr because some systems
9270 : have an inttypes.h which includes non-existent headers
9271 echo " "
9272 $cat >try.c <<EOCP
9273 #include <inttypes.h>
9274 int main() {
9275         static int32_t foo32 = 0x12345678;
9276 }
9277 EOCP
9278 set try
9279 if eval $compile; then
9280         echo "<inttypes.h> found." >&4
9281         val="$define"
9282 else
9283         echo "<inttypes.h> NOT found." >&4
9284         val="$undef"
9285 fi
9286 $rm -f try.c try
9287 set i_inttypes
9288 eval $setvar
9289
9290 : check for int64_t
9291 echo " "
9292 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9293 $cat >try.c <<EOCP
9294 #include <sys/types.h>
9295 #$i_inttypes I_INTTYPES
9296 #ifdef I_INTTYPES
9297 #include <inttypes.h>
9298 #endif
9299 int main() { int64_t x = 7; }
9300 EOCP
9301 set try
9302 if eval $compile; then
9303         val="$define"
9304         echo " Yes, it does." >&4
9305 else
9306         val="$undef"
9307         echo " No, it doesn't." >&4
9308 fi
9309 $rm -f try try.*
9310 set d_int64t
9311 eval $setvar
9312
9313 : Look for isascii
9314 echo " "
9315 $cat >isascii.c <<'EOCP'
9316 #include <stdio.h>
9317 #include <ctype.h>
9318 int main() {
9319         int c = 'A';
9320         if (isascii(c))
9321                 exit(0);
9322         else
9323                 exit(1);
9324 }
9325 EOCP
9326 set isascii
9327 if eval $compile; then
9328         echo "isascii() found." >&4
9329         val="$define"
9330 else
9331         echo "isascii() NOT found." >&4
9332         val="$undef"
9333 fi
9334 set d_isascii
9335 eval $setvar
9336 $rm -f isascii*
9337
9338 : see if killpg exists
9339 set killpg d_killpg
9340 eval $inlibc
9341
9342 : see if lchown exists
9343 echo " "
9344 $cat > try.c <<'EOCP'
9345 /* System header to define __stub macros and hopefully few prototypes,
9346     which can conflict with char lchown(); below.  */
9347 #include <assert.h>
9348 /* Override any gcc2 internal prototype to avoid an error.  */
9349 /* We use char because int might match the return type of a gcc2
9350    builtin and then its argument prototype would still apply.  */
9351 char lchown();
9352 int main() {
9353     /*  The GNU C library defines this for functions which it implements
9354         to always fail with ENOSYS.  Some functions are actually named
9355         something starting with __ and the normal name is an alias.  */
9356 #if defined (__stub_lchown) || defined (__stub___lchown)
9357 choke me
9358 #else
9359 lchown();
9360 #endif
9361 ; return 0; }
9362 EOCP
9363 set try
9364 if eval $compile; then
9365     $echo "lchown() found." >&4
9366     val="$define"
9367 else
9368     $echo "lchown() NOT found." >&4
9369     val="$undef"
9370 fi
9371 set d_lchown
9372 eval $setvar
9373
9374 : See if number of significant digits in a double precision number is known
9375 echo " "
9376 $cat >ldbl_dig.c <<EOM
9377 #$i_limits I_LIMITS
9378 #$i_float I_FLOAT
9379 #ifdef I_LIMITS
9380 #include <limits.h>
9381 #endif
9382 #ifdef I_FLOAT
9383 #include <float.h>
9384 #endif
9385 #ifdef LDBL_DIG
9386 printf("Contains LDBL_DIG");
9387 #endif
9388 EOM
9389 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9390 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9391         echo "LDBL_DIG found." >&4
9392         val="$define"
9393 else
9394         echo "LDBL_DIG NOT found." >&4
9395         val="$undef"
9396 fi
9397 $rm -f ldbl_dig.?
9398 set d_ldbl_dig
9399 eval $setvar
9400
9401 : see if link exists
9402 set link d_link
9403 eval $inlibc
9404
9405 : see if localeconv exists
9406 set localeconv d_locconv
9407 eval $inlibc
9408
9409 : see if lockf exists
9410 set lockf d_lockf
9411 eval $inlibc
9412
9413 : check for long long
9414 echo " "
9415 $echo $n "Checking to see if your system supports long long..." $c >&4
9416 echo 'int main() { long long x = 7; return 0; }' > try.c
9417 set try
9418 if eval $compile; then
9419         val="$define"
9420         echo " Yes, it does." >&4
9421 else
9422         val="$undef"
9423         echo " No, it doesn't." >&4
9424 fi
9425 $rm try.*
9426 set d_longlong
9427 eval $setvar
9428
9429 : check for length of long long
9430 case "${d_longlong}${longlongsize}" in
9431 $define)
9432         echo " "
9433         $echo $n "Checking to see how big your long longs are..." $c >&4
9434         $cat >try.c <<'EOCP'
9435 #include <stdio.h>
9436 int main()
9437 {
9438     printf("%d\n", (int)sizeof(long long));
9439     return(0);
9440 }
9441 EOCP
9442         set try
9443         if eval $compile_ok; then
9444                 longlongsize=`./try$exe_ext`
9445                 $echo " $longlongsize bytes." >&4
9446         else
9447                 dflt='8'
9448                 echo " "
9449                 echo "(I can't seem to compile the test program.  Guessing...)"
9450                 rp="What is the size of a long long (in bytes)?"
9451                 . ./myread
9452                 longlongsize="$ans"
9453         fi
9454         if $test "X$longsize" = "X$longlongsize"; then
9455                 echo "(That isn't any different from an ordinary long.)"
9456         fi      
9457         ;;
9458 esac
9459 $rm -f try.* try
9460
9461 : see if lstat exists
9462 set lstat d_lstat
9463 eval $inlibc
9464
9465 : see if mblen exists
9466 set mblen d_mblen
9467 eval $inlibc
9468
9469 : see if mbstowcs exists
9470 set mbstowcs d_mbstowcs
9471 eval $inlibc
9472
9473 : see if mbtowc exists
9474 set mbtowc d_mbtowc
9475 eval $inlibc
9476
9477 : see if memchr exists
9478 set memchr d_memchr
9479 eval $inlibc
9480
9481 : see if memcmp exists
9482 set memcmp d_memcmp
9483 eval $inlibc
9484
9485 : see if memcpy exists
9486 set memcpy d_memcpy
9487 eval $inlibc
9488
9489 : see if memmove exists
9490 set memmove d_memmove
9491 eval $inlibc
9492
9493 : see if memset exists
9494 set memset d_memset
9495 eval $inlibc
9496
9497 : see if mkdir exists
9498 set mkdir d_mkdir
9499 eval $inlibc
9500
9501 : see if mkdtemp exists
9502 set mkdtemp d_mkdtemp
9503 eval $inlibc
9504
9505 : see if mkfifo exists
9506 set mkfifo d_mkfifo
9507 eval $inlibc
9508
9509 : see if mkstemp exists
9510 set mkstemp d_mkstemp
9511 eval $inlibc
9512
9513 : see if mkstemps exists
9514 set mkstemps d_mkstemps
9515 eval $inlibc
9516
9517 : see if mktime exists
9518 set mktime d_mktime
9519 eval $inlibc
9520
9521 : see if mprotect exists
9522 set mprotect d_mprotect
9523 eval $inlibc
9524
9525 : see if msgctl exists
9526 set msgctl d_msgctl
9527 eval $inlibc
9528
9529 : see if msgget exists
9530 set msgget d_msgget
9531 eval $inlibc
9532
9533 : see if msgsnd exists
9534 set msgsnd d_msgsnd
9535 eval $inlibc
9536
9537 : see if msgrcv exists
9538 set msgrcv d_msgrcv
9539 eval $inlibc
9540
9541 : see how much of the 'msg*(2)' library is present.
9542 h_msg=true
9543 echo " "
9544 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9545 *"$undef"*) h_msg=false;;
9546 esac
9547 case "$osname" in
9548 freebsd)
9549     case "`ipcs 2>&1`" in
9550     "SVID messages"*"not configured"*)
9551         echo "Your $osname does not have the msg*(2) configured." >&4
9552         h_msg=false
9553         val="$undef"
9554         set msgctl d_msgctl
9555         eval $setvar
9556         set msgget d_msgget
9557         eval $setvar
9558         set msgsnd d_msgsnd
9559         eval $setvar
9560         set msgrcv d_msgrcv
9561         eval $setvar
9562         ;;
9563     esac
9564     ;;
9565 esac
9566 : we could also check for sys/ipc.h ...
9567 if $h_msg && $test `./findhdr sys/msg.h`; then
9568         echo "You have the full msg*(2) library." >&4
9569         val="$define"
9570 else
9571         echo "You don't have the full msg*(2) library." >&4
9572         val="$undef"
9573 fi
9574 set d_msg
9575 eval $setvar
9576
9577 : see if msync exists
9578 set msync d_msync
9579 eval $inlibc
9580
9581 : see if munmap exists
9582 set munmap d_munmap
9583 eval $inlibc
9584
9585 : see if nice exists
9586 set nice d_nice
9587 eval $inlibc
9588
9589
9590 echo " "
9591 echo "Checking which 64-bit integer type we could use..." >&4
9592
9593 case "$intsize" in
9594 8) val=int
9595    set quadtype
9596    eval $setvar
9597    val='"unsigned int"'
9598    set uquadtype
9599    eval $setvar
9600    quadkind=1
9601    ;;
9602 *) case "$longsize" in
9603    8) val=long
9604       set quadtype
9605       eval $setvar
9606       val='"unsigned long"'
9607       set uquadtype
9608       eval $setvar
9609       quadkind=2
9610       ;;
9611    *) case "$d_longlong:$longlongsize" in
9612       define:8)
9613         val='"long long"'
9614         set quadtype
9615         eval $setvar
9616         val='"unsigned long long"'
9617         set uquadtype
9618         eval $setvar
9619         quadkind=3
9620         ;;
9621       *) case "$d_int64t" in
9622          define)
9623            val=int64_t
9624            set quadtype
9625            eval $setvar
9626            val=uint64_t
9627            set uquadtype
9628            eval $setvar
9629            quadkind=4
9630            ;;
9631          esac
9632          ;;
9633       esac
9634       ;;
9635    esac
9636    ;;
9637 esac
9638
9639 case "$quadtype" in
9640 '')     echo "Alas, no 64-bit integer types in sight." >&4
9641         d_quad="$undef"
9642         ;;
9643 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9644             verb="will"
9645         else
9646             verb="could"
9647         fi
9648         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9649         d_quad="$define"
9650         ;;
9651 esac
9652
9653 : check for length of character
9654 echo " "
9655 case "$charsize" in
9656 '')
9657         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9658         $cat >try.c <<'EOCP'
9659 #include <stdio.h>
9660 int main()
9661 {
9662     printf("%d\n", (int)sizeof(char));
9663     exit(0);
9664 }
9665 EOCP
9666         set try
9667         if eval $compile_ok; then
9668                 dflt=`./try`
9669         else
9670                 dflt='1'
9671                 echo "(I can't seem to compile the test program.  Guessing...)"
9672         fi
9673         ;;
9674 *)
9675         dflt="$charsize"
9676         ;;
9677 esac
9678 rp="What is the size of a character (in bytes)?"
9679 . ./myread
9680 charsize="$ans"
9681 $rm -f try.c try
9682
9683
9684 echo " "
9685 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9686
9687 case "$use64bits:$d_quad:$quadtype" in
9688 define:define:?*)
9689         ivtype="$quadtype"
9690         uvtype="$uquadtype"
9691         ivsize=8
9692         uvsize=8
9693         ;;
9694 *)      ivtype="long"
9695         uvtype="unsigned long"
9696         ivsize=$longsize
9697         uvsize=$longsize
9698         ;;
9699 esac
9700
9701 case "$uselongdouble:$d_longdbl" in
9702 define:define)
9703         nvtype="long double"
9704         nvsize=$longdblsize
9705         ;;
9706 *)      nvtype=double
9707         nvsize=$doublesize
9708         ;;
9709 esac
9710
9711 $echo "(IV will be "$ivtype", $ivsize bytes)"
9712 $echo "(UV will be "$uvtype", $uvsize bytes)"
9713 $echo "(NV will be "$nvtype", $nvsize bytes)"
9714
9715 $cat >try.c <<EOCP
9716 #$i_inttypes I_INTTYPES
9717 #ifdef I_INTTYPES
9718 #include <inttypes.h>
9719 #endif
9720 #include <stdio.h>
9721 int main() {
9722 #ifdef INT8
9723    int8_t i =  INT8_MAX;
9724   uint8_t u = UINT8_MAX;
9725   printf("int8_t\n");
9726 #endif
9727 #ifdef INT16
9728    int16_t i =  INT16_MAX;
9729   uint16_t i = UINT16_MAX;
9730   printf("int16_t\n");
9731 #endif
9732 #ifdef INT32
9733    int32_t i =  INT32_MAX;
9734   uint32_t u = UINT32_MAX;
9735   printf("int32_t\n");
9736 #endif
9737 }
9738 EOCP
9739
9740 case "$i8type" in
9741 '')     case "$charsize" in
9742         1)      i8type=char
9743                 u8type="unsigned char"
9744                 i8size=$charsize
9745                 u8size=$charsize
9746                 ;;
9747         esac
9748         ;;
9749 esac
9750 case "$i8type" in
9751 '')     set try -DINT8
9752         if eval $compile; then
9753                 case "`./try$exe_ext`" in
9754                 int8_t) i8type=int8_t
9755                         u8type=uint8_t
9756                         i8size=1
9757                         u8size=1
9758                         ;;
9759                 esac
9760         fi
9761         ;;
9762 esac
9763 case "$i8type" in
9764 '')     if $test $charsize -ge 1; then
9765                 i8type=char
9766                 u8type="unsigned char"
9767                 i8size=$charsize
9768                 u8size=$charsize
9769         fi
9770         ;;
9771 esac
9772
9773 case "$i16type" in
9774 '')     case "$shortsize" in
9775         2)      i16type=short
9776                 u16type="unsigned short"
9777                 i16size=$shortsize
9778                 u16size=$shortsize
9779                 ;;
9780         esac
9781         ;;
9782 esac
9783 case "$i16type" in
9784 '')     set try -DINT16
9785         if eval $compile; then
9786                 case "`./try$exe_ext`" in
9787                 int16_t)
9788                         i16type=int16_t
9789                         u16type=uint16_t
9790                         i16size=2
9791                         u16size=2
9792                         ;;
9793                 esac
9794         fi
9795         ;;
9796 esac
9797 case "$i16type" in
9798 '')     if $test $shortsize -ge 2; then
9799                 i16type=short
9800                 u16type="unsigned short"
9801                 i16size=$shortsize
9802                 u16size=$shortsize
9803         fi
9804         ;;
9805 esac
9806
9807 case "$i32type" in
9808 '')     case "$longsize" in
9809         4)      i32type=long
9810                 u32type="unsigned long"
9811                 i32size=$longsize
9812                 u32size=$longsize
9813                 ;;
9814         *)      case "$intsize" in
9815                 4)      i32type=int
9816                         u32type="unsigned int"
9817                         i32size=$intsize
9818                         u32size=$intsize
9819                         ;;
9820                 esac
9821                 ;;
9822         esac
9823         ;;
9824 esac
9825 case "$i32type" in
9826 '')     set try -DINT32
9827         if eval $compile; then
9828                 case "`./try$exe_ext`" in
9829                 int32_t)
9830                         i32type=int32_t
9831                         u32type=uint32_t
9832                         i32size=4
9833                         u32size=4
9834                         ;;
9835                 esac
9836         fi
9837         ;;
9838 esac
9839 case "$i32type" in
9840 '')     if $test $intsize -ge 4; then
9841                 i32type=int
9842                 u32type="unsigned int"
9843                 i32size=$intsize
9844                 u32size=$intsize
9845         fi
9846         ;;
9847 esac
9848
9849 case "$i64type" in
9850 '')     case "$d_quad:$quadtype" in
9851         define:?*)
9852                 i64type="$quadtype"
9853                 u64type="$uquadtype"
9854                 i64size=8
9855                 u64size=8
9856                 ;;
9857         esac
9858         ;;
9859 esac
9860
9861 $echo "Checking whether your NVs can preserve your UVs..." >&4
9862 $cat <<EOP >try.c
9863 #include <stdio.h>
9864 int main() {
9865     $uvtype k = ($uvtype)~0, l;
9866     $nvtype d;
9867     l = k;
9868     d = ($nvtype)l;
9869     l = ($uvtype)d;
9870     if (l == k)
9871        printf("preserve\n");
9872     exit(0);
9873 }
9874 EOP
9875 set try
9876 if eval $compile; then
9877         case "`./try$exe_ext`" in
9878         preserve) d_nv_preserves_uv="$define" ;;
9879         esac
9880 fi      
9881 case "$d_nv_preserves_uv" in
9882 $define) $echo "Yes, they can."  2>&1 ;;
9883 *)       $echo "No, they can't." 2>&1
9884          d_nv_preserves_uv="$undef"
9885          ;;
9886 esac
9887
9888 $rm -f try.* try
9889
9890 : see if POSIX threads are available
9891 set pthread.h i_pthread
9892 eval $inhdr
9893
9894
9895
9896
9897 : how to create joinable pthreads
9898 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9899         echo " "
9900         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9901         $cat >try.c <<'EOCP'
9902 #include <pthread.h>
9903 int main() {
9904     int detachstate = JOINABLE;
9905 }
9906 EOCP
9907         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9908         if eval $compile; then
9909                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9910                 val="$undef" # Yes, undef.
9911                 set d_old_pthread_create_joinable
9912                 eval $setvar
9913                 val=""
9914                 set old_pthread_create_joinable
9915                 eval $setvar
9916         else
9917                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9918                 if eval $compile; then
9919                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9920                         val="$define"
9921                         set d_old_pthread_create_joinable
9922                         eval $setvar
9923                         val=PTHREAD_CREATE_UNDETACHED
9924                         set old_pthread_create_joinable
9925                         eval $setvar
9926                 else            
9927                         set try -DJOINABLE=__UNDETACHED
9928                         if eval $compile; then
9929                                 echo "You seem to use __UNDETACHED." >&4
9930                                 val="$define"
9931                                 set d_old_pthread_create_joinable
9932                                 eval $setvar
9933                                 val=__UNDETACHED
9934                                 set old_pthread_create_joinable
9935                                 eval $setvar
9936                         else
9937                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9938                                 val="$define"
9939                                 set d_old_pthread_create_joinable
9940                                 eval $setvar
9941                                 val=0
9942                                 set old_pthread_create_joinable
9943                                 eval $setvar
9944                         fi
9945                 fi
9946         fi
9947         $rm -f try try.*
9948 else
9949     d_old_pthread_create_joinable="$undef"
9950     old_pthread_create_joinable=""
9951 fi
9952
9953 : see if pause exists
9954 set pause d_pause
9955 eval $inlibc
9956
9957 : see if pipe exists
9958 set pipe d_pipe
9959 eval $inlibc
9960
9961 : see if poll exists
9962 set poll d_poll
9963 eval $inlibc
9964
9965
9966 : see whether the various POSIXish _yields exist
9967 $cat >try.c <<EOP
9968 #include <pthread.h>
9969 #include <stdio.h>
9970 int main() {
9971 #ifdef SCHED_YIELD
9972         sched_yield();
9973 #else
9974 #ifdef PTHREAD_YIELD
9975         pthread_yield();
9976 #else
9977 #ifdef PTHREAD_YIELD_NULL
9978         pthread_yield(NULL);
9979 #endif
9980 #endif
9981 #endif
9982 }
9983 EOP
9984 : see if sched_yield exists
9985 set try -DSCHED_YIELD
9986 if eval $compile; then
9987     val="$define"
9988     sched_yield='sched_yield()'
9989 else
9990     val="$undef"
9991 fi
9992 case "$usethreads" in
9993 $define)
9994         case "$val" in
9995         $define) echo 'sched_yield() found.' >&4        ;;
9996         *)       echo 'sched_yield() NOT found.' >&4    ;;
9997         esac
9998 esac
9999 set d_sched_yield
10000 eval $setvar
10001
10002 : see if pthread_yield exists
10003 set try -DPTHREAD_YIELD
10004 if eval $compile; then
10005     val="$define"
10006     case "$sched_yield" in
10007     '') sched_yield='pthread_yield()' ;;
10008     esac
10009 else
10010     set try -DPTHREAD_YIELD_NULL
10011     if eval $compile; then
10012         val="$define"
10013         case "$sched_yield" in
10014         '') sched_yield='pthread_yield(NULL)' ;;
10015         esac
10016     else
10017         val="$undef"
10018     fi
10019 fi
10020 case "$usethreads" in
10021 $define)
10022         case "$val" in
10023         $define) echo 'pthread_yield() found.' >&4      ;;
10024         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10025         esac
10026         ;;
10027 esac
10028 set d_pthread_yield
10029 eval $setvar
10030
10031 case "$sched_yield" in
10032 '') sched_yield=undef ;;
10033 esac
10034
10035 $rm -f try try.*
10036
10037 : see if this is a pwd.h system
10038 set pwd.h i_pwd
10039 eval $inhdr
10040
10041 case "$i_pwd" in
10042 $define)
10043         xxx=`./findhdr pwd.h`
10044         $cppstdin $cppflags $cppminus < $xxx >$$.h
10045
10046         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10047                 val="$define"
10048         else
10049                 val="$undef"
10050         fi
10051         set d_pwquota
10052         eval $setvar
10053
10054         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10055                 val="$define"
10056         else
10057                 val="$undef"
10058         fi
10059         set d_pwage
10060         eval $setvar
10061
10062         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10063                 val="$define"
10064         else
10065                 val="$undef"
10066         fi
10067         set d_pwchange
10068         eval $setvar
10069
10070         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10071                 val="$define"
10072         else
10073                 val="$undef"
10074         fi
10075         set d_pwclass
10076         eval $setvar
10077
10078         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10079                 val="$define"
10080         else
10081                 val="$undef"
10082         fi
10083         set d_pwexpire
10084         eval $setvar
10085
10086         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10087                 val="$define"
10088         else
10089                 val="$undef"
10090         fi
10091         set d_pwcomment
10092         eval $setvar
10093
10094         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10095                 val="$define"
10096         else
10097                 val="$undef"
10098         fi
10099         set d_pwgecos
10100         eval $setvar
10101
10102         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10103                 val="$define"
10104         else
10105                 val="$undef"
10106         fi
10107         set d_pwpasswd
10108         eval $setvar
10109
10110         $rm -f $$.h
10111         ;;
10112 *)
10113         val="$undef"; 
10114         set d_pwquota; eval $setvar
10115         set d_pwage; eval $setvar
10116         set d_pwchange; eval $setvar
10117         set d_pwclass; eval $setvar
10118         set d_pwexpire; eval $setvar
10119         set d_pwcomment; eval $setvar
10120         set d_pwgecos; eval $setvar
10121         set d_pwpasswd; eval $setvar
10122         ;;
10123 esac
10124
10125 : see if readdir and friends exist
10126 set readdir d_readdir
10127 eval $inlibc
10128 set seekdir d_seekdir
10129 eval $inlibc
10130 set telldir d_telldir
10131 eval $inlibc
10132 set rewinddir d_rewinddir
10133 eval $inlibc
10134
10135 : see if readlink exists
10136 set readlink d_readlink
10137 eval $inlibc
10138
10139 : see if rename exists
10140 set rename d_rename
10141 eval $inlibc
10142
10143 : see if rmdir exists
10144 set rmdir d_rmdir
10145 eval $inlibc
10146
10147 : see if memory.h is available.
10148 val=''
10149 set memory.h val
10150 eval $inhdr
10151
10152 : See if it conflicts with string.h
10153 case "$val" in
10154 $define)
10155         case "$strings" in
10156         '') ;;
10157         *)
10158                 $cppstdin $cppflags $cppminus < $strings > mem.h
10159                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10160                         echo " "
10161                         echo "We won't be including <memory.h>."
10162                         val="$undef"
10163                 fi
10164                 $rm -f mem.h
10165                 ;;
10166         esac
10167 esac
10168 set i_memory
10169 eval $setvar
10170
10171 : can bcopy handle overlapping blocks?
10172 val="$undef"
10173 case "$d_bcopy" in
10174 "$define")
10175         echo " "
10176         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10177         $cat >try.c <<EOCP
10178 #$i_memory I_MEMORY
10179 #$i_stdlib I_STDLIB
10180 #$i_string I_STRING
10181 #$i_unistd I_UNISTD
10182 EOCP
10183         $cat >>try.c <<'EOCP'
10184 #include <stdio.h>
10185 #ifdef I_MEMORY
10186 #  include <memory.h>
10187 #endif
10188 #ifdef I_STDLIB
10189 #  include <stdlib.h>
10190 #endif
10191 #ifdef I_STRING
10192 #  include <string.h>
10193 #else
10194 #  include <strings.h>
10195 #endif
10196 #ifdef I_UNISTD
10197 #  include <unistd.h>  /* Needed for NetBSD */
10198 #endif
10199 int main()
10200 {
10201 char buf[128], abc[128];
10202 char *b;
10203 int len;
10204 int off;
10205 int align;
10206
10207 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10208
10209 for (align = 7; align >= 0; align--) {
10210         for (len = 36; len; len--) {
10211                 b = buf+align;
10212                 bcopy(abc, b, len);
10213                 for (off = 1; off <= len; off++) {
10214                         bcopy(b, b+off, len);
10215                         bcopy(b+off, b, len);
10216                         if (bcmp(b, abc, len))
10217                                 exit(1);
10218                 }
10219         }
10220 }
10221 exit(0);
10222 }
10223 EOCP
10224         set try
10225         if eval $compile_ok; then
10226                 if ./try 2>/dev/null; then
10227                         echo "Yes, it can."
10228                         val="$define"
10229                 else
10230                         echo "It can't, sorry."
10231                         case "$d_memmove" in
10232                         "$define") echo "But that's Ok since you have memmove()." ;;
10233                         esac
10234                 fi
10235         else
10236                 echo "(I can't compile the test program, so we'll assume not...)"
10237                 case "$d_memmove" in
10238                 "$define") echo "But that's Ok since you have memmove()." ;;
10239                 esac
10240         fi
10241         ;;
10242 esac
10243 $rm -f try.* try core
10244 set d_safebcpy
10245 eval $setvar
10246
10247 : can memcpy handle overlapping blocks?
10248 val="$undef"
10249 case "$d_memcpy" in
10250 "$define")
10251         echo " "
10252         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10253         $cat >try.c <<EOCP
10254 #$i_memory I_MEMORY
10255 #$i_stdlib I_STDLIB
10256 #$i_string I_STRING
10257 #$i_unistd I_UNISTD
10258 EOCP
10259         $cat >>try.c <<'EOCP'
10260 #include <stdio.h>
10261 #ifdef I_MEMORY
10262 #  include <memory.h>
10263 #endif
10264 #ifdef I_STDLIB
10265 #  include <stdlib.h>
10266 #endif
10267 #ifdef I_STRING
10268 #  include <string.h>
10269 #else
10270 #  include <strings.h>
10271 #endif
10272 #ifdef I_UNISTD
10273 #  include <unistd.h>  /* Needed for NetBSD */
10274 #endif
10275 int main()
10276 {
10277 char buf[128], abc[128];
10278 char *b;
10279 int len;
10280 int off;
10281 int align;
10282
10283 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10284    try to store the string in read-only memory. */
10285 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10286
10287 for (align = 7; align >= 0; align--) {
10288         for (len = 36; len; len--) {
10289                 b = buf+align;
10290                 memcpy(b, abc, len);
10291                 for (off = 1; off <= len; off++) {
10292                         memcpy(b+off, b, len);
10293                         memcpy(b, b+off, len);
10294                         if (memcmp(b, abc, len))
10295                                 exit(1);
10296                 }
10297         }
10298 }
10299 exit(0);
10300 }
10301 EOCP
10302         set try
10303         if eval $compile_ok; then
10304                 if ./try 2>/dev/null; then
10305                         echo "Yes, it can."
10306                         val="$define"
10307                 else
10308                         echo "It can't, sorry."
10309                         case "$d_memmove" in
10310                         "$define") echo "But that's Ok since you have memmove()." ;;
10311                         esac
10312                 fi
10313         else
10314                 echo "(I can't compile the test program, so we'll assume not...)"
10315                 case "$d_memmove" in
10316                 "$define") echo "But that's Ok since you have memmove()." ;;
10317                 esac
10318         fi
10319         ;;
10320 esac
10321 $rm -f try.* try core
10322 set d_safemcpy
10323 eval $setvar
10324
10325 : can memcmp be trusted to compare relative magnitude?
10326 val="$undef"
10327 case "$d_memcmp" in
10328 "$define")
10329         echo " "
10330         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10331         $cat >try.c <<EOCP
10332 #$i_memory I_MEMORY
10333 #$i_stdlib I_STDLIB
10334 #$i_string I_STRING
10335 #$i_unistd I_UNISTD
10336 EOCP
10337         $cat >>try.c <<'EOCP'
10338 #include <stdio.h>
10339 #ifdef I_MEMORY
10340 #  include <memory.h>
10341 #endif
10342 #ifdef I_STDLIB
10343 #  include <stdlib.h>
10344 #endif
10345 #ifdef I_STRING
10346 #  include <string.h>
10347 #else
10348 #  include <strings.h>
10349 #endif
10350 #ifdef I_UNISTD
10351 #  include <unistd.h>  /* Needed for NetBSD */
10352 #endif
10353 int main()
10354 {
10355 char a = -1;
10356 char b = 0;
10357 if ((a < b) && memcmp(&a, &b, 1) < 0)
10358         exit(1);
10359 exit(0);
10360 }
10361 EOCP
10362         set try
10363         if eval $compile_ok; then
10364                 if ./try 2>/dev/null; then
10365                         echo "Yes, it can."
10366                         val="$define"
10367                 else
10368                         echo "No, it can't (it uses signed chars)."
10369                 fi
10370         else
10371                 echo "(I can't compile the test program, so we'll assume not...)"
10372         fi
10373         ;;
10374 esac
10375 $rm -f try.* try core
10376 set d_sanemcmp
10377 eval $setvar
10378
10379 : see if select exists
10380 set select d_select
10381 eval $inlibc
10382
10383 : see if semctl exists
10384 set semctl d_semctl
10385 eval $inlibc
10386
10387 : see if semget exists
10388 set semget d_semget
10389 eval $inlibc
10390
10391 : see if semop exists
10392 set semop d_semop
10393 eval $inlibc
10394
10395 : see how much of the 'sem*(2)' library is present.
10396 h_sem=true
10397 echo " "
10398 case "$d_semctl$d_semget$d_semop" in
10399 *"$undef"*) h_sem=false;;
10400 esac
10401 case "$osname" in
10402 freebsd)
10403     case "`ipcs 2>&1`" in
10404     "SVID messages"*"not configured"*)
10405         echo "Your $osname does not have the sem*(2) configured." >&4
10406         h_sem=false
10407         val="$undef"
10408         set semctl d_semctl
10409         eval $setvar
10410         set semget d_semget
10411         eval $setvar
10412         set semop d_semop
10413         eval $setvar
10414         ;;
10415     esac
10416     ;;
10417 esac
10418 : we could also check for sys/ipc.h ...
10419 if $h_sem && $test `./findhdr sys/sem.h`; then
10420         echo "You have the full sem*(2) library." >&4
10421         val="$define"
10422 else
10423         echo "You don't have the full sem*(2) library." >&4
10424         val="$undef"
10425 fi
10426 set d_sem
10427 eval $setvar
10428
10429 : see whether sys/sem.h defines union semun
10430 echo " "
10431 $cat > try.c <<'END'
10432 #include <sys/types.h>
10433 #include <sys/ipc.h>
10434 #include <sys/sem.h>
10435 int main () { union semun semun; semun.buf = 0; }
10436 END
10437 set try
10438 if eval $compile; then
10439     echo "You have union semun in <sys/sem.h>." >&4
10440     val="$define"
10441 else
10442     echo "You do not have union semun in <sys/sem.h>." >&4
10443     val="$undef"
10444 fi
10445 $rm -f try try.c try.h
10446 set d_union_semun
10447 eval $setvar
10448
10449 : see how to do semctl IPC_STAT
10450 case "$d_sem" in
10451 $define)
10452     : see whether semctl IPC_STAT can use union semun
10453     echo " "
10454     $cat > try.h <<END
10455 #ifndef S_IRUSR
10456 #   ifdef S_IREAD
10457 #       define S_IRUSR S_IREAD
10458 #       define S_IWUSR S_IWRITE
10459 #       define S_IXUSR S_IEXEC
10460 #   else
10461 #       define S_IRUSR 0400
10462 #       define S_IWUSR 0200
10463 #       define S_IXUSR 0100
10464 #   endif
10465 #   define S_IRGRP (S_IRUSR>>3)
10466 #   define S_IWGRP (S_IWUSR>>3)
10467 #   define S_IXGRP (S_IXUSR>>3)
10468 #   define S_IROTH (S_IRUSR>>6)
10469 #   define S_IWOTH (S_IWUSR>>6)
10470 #   define S_IXOTH (S_IXUSR>>6)
10471 #endif
10472 #ifndef S_IRWXU
10473 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10474 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10475 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10476 #endif
10477 END
10478
10479     $cat > try.c <<END
10480 #include <sys/types.h>
10481 #include <sys/ipc.h>
10482 #include <sys/sem.h>
10483 #include <sys/stat.h>
10484 #include <stdio.h>
10485 #include <errno.h>
10486 #include "try.h"
10487 #ifndef errno
10488 extern int errno;
10489 #endif
10490 #$d_union_semun HAS_UNION_SEMUN
10491 int main() {
10492     union semun
10493 #ifndef HAS_UNION_SEMUN
10494     {
10495         int val;
10496         struct semid_ds *buf;
10497         unsigned short *array;
10498     }
10499 #endif
10500     arg;
10501     int sem, st;
10502
10503 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10504     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10505     if (sem > -1) {
10506         struct semid_ds argbuf;
10507         arg.buf = &argbuf;
10508 #       ifdef IPC_STAT
10509         st = semctl(sem, 0, IPC_STAT, arg);
10510         if (st == 0)
10511             printf("semun\n");
10512         else
10513 #       endif /* IPC_STAT */
10514             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10515 #       ifdef IPC_RMID
10516         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10517 #       endif /* IPC_RMID */
10518             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10519     } else
10520 #endif /* IPC_PRIVATE && ... */
10521         printf("semget failed: errno = %d\n", errno);
10522   return 0;
10523 }
10524 END
10525     val="$undef"
10526     set try
10527     if eval $compile; then
10528         xxx=`./try`
10529         case "$xxx" in
10530         semun) val="$define" ;;
10531         esac
10532     fi
10533     $rm -f try try.c
10534     set d_semctl_semun
10535     eval $setvar
10536     case "$d_semctl_semun" in
10537     $define)
10538         echo "You can use union semun for semctl IPC_STAT." >&4
10539         also='also'
10540         ;;
10541     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10542         also=''
10543         ;;
10544     esac
10545
10546     : see whether semctl IPC_STAT can use struct semid_ds pointer
10547     $cat > try.c <<'END'
10548 #include <sys/types.h>
10549 #include <sys/ipc.h>
10550 #include <sys/sem.h>
10551 #include <sys/stat.h>
10552 #include "try.h"
10553 #include <stdio.h>
10554 #include <errno.h>
10555 #ifndef errno
10556 extern int errno;
10557 #endif
10558 int main() {
10559     struct semid_ds arg;
10560     int sem, st;
10561
10562 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10563     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10564     if (sem > -1) {
10565 #       ifdef IPC_STAT
10566         st = semctl(sem, 0, IPC_STAT, &arg);
10567         if (st == 0)
10568             printf("semid_ds\n");
10569         else
10570 #       endif /* IPC_STAT */
10571             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10572 #       ifdef IPC_RMID
10573         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10574 #       endif /* IPC_RMID */
10575             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10576     } else
10577 #endif /* IPC_PRIVATE && ... */
10578         printf("semget failed: errno = %d\n", errno);
10579
10580     return 0;
10581 }
10582 END
10583     val="$undef"
10584     set try
10585     if eval $compile; then
10586         xxx=`./try`
10587         case "$xxx" in
10588         semid_ds) val="$define" ;;
10589         esac
10590     fi
10591     $rm -f try try.c
10592     set d_semctl_semid_ds
10593     eval $setvar
10594     case "$d_semctl_semid_ds" in
10595     $define)
10596         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10597         ;;
10598     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10599         ;;
10600     esac
10601     $rm -f try.h
10602     ;;
10603 *)  val="$undef"
10604
10605     # We do not have the full sem*(2) library, so assume we can not
10606     # use either.
10607
10608     set d_semctl_semun
10609     eval $setvar
10610
10611     set d_semctl_semid_ds
10612     eval $setvar
10613     ;;
10614 esac
10615
10616 : see if setegid exists
10617 set setegid d_setegid
10618 eval $inlibc
10619
10620 : see if seteuid exists
10621 set seteuid d_seteuid
10622 eval $inlibc
10623
10624 : see if setgrent exists
10625 set setgrent d_setgrent
10626 eval $inlibc
10627
10628 : see if sethostent exists
10629 set sethostent d_sethent
10630 eval $inlibc
10631
10632 : see if setlinebuf exists
10633 set setlinebuf d_setlinebuf
10634 eval $inlibc
10635
10636 : see if setlocale exists
10637 set setlocale d_setlocale
10638 eval $inlibc
10639
10640 : see if setnetent exists
10641 set setnetent d_setnent
10642 eval $inlibc
10643
10644 : see if setprotoent exists
10645 set setprotoent d_setpent
10646 eval $inlibc
10647
10648 : see if setpgid exists
10649 set setpgid d_setpgid
10650 eval $inlibc
10651
10652 : see if setpgrp2 exists
10653 set setpgrp2 d_setpgrp2
10654 eval $inlibc
10655
10656 : see if setpriority exists
10657 set setpriority d_setprior
10658 eval $inlibc
10659
10660 : see if setpwent exists
10661 set setpwent d_setpwent
10662 eval $inlibc
10663
10664 : see if setregid exists
10665 set setregid d_setregid
10666 eval $inlibc
10667 set setresgid d_setresgid
10668 eval $inlibc
10669
10670 : see if setreuid exists
10671 set setreuid d_setreuid
10672 eval $inlibc
10673 set setresuid d_setresuid
10674 eval $inlibc
10675
10676 : see if setrgid exists
10677 set setrgid d_setrgid
10678 eval $inlibc
10679
10680 : see if setruid exists
10681 set setruid d_setruid
10682 eval $inlibc
10683
10684 : see if setservent exists
10685 set setservent d_setsent
10686 eval $inlibc
10687
10688 : see if setsid exists
10689 set setsid d_setsid
10690 eval $inlibc
10691
10692 : see if setspent exists
10693 set setspent d_setspent
10694 eval $inlibc
10695
10696 : see if setvbuf exists
10697 set setvbuf d_setvbuf
10698 eval $inlibc
10699
10700 : see if sfio.h is available
10701 set sfio.h i_sfio
10702 eval $inhdr
10703
10704
10705 : see if sfio library is available
10706 case "$i_sfio" in
10707 $define)
10708         val=''
10709         set sfreserve val
10710         eval $inlibc
10711         ;;
10712 *)
10713         val="$undef"
10714         ;;
10715 esac
10716 : Ok, but do we want to use it.
10717 case "$val" in
10718 $define)
10719         case "$usesfio" in
10720         true|$define|[yY]*) dflt='y';;
10721         *) dflt='n';;
10722         esac
10723         echo "$package can use the sfio library, but it is experimental."
10724         rp="You seem to have sfio available, do you want to try using it?"
10725         . ./myread
10726         case "$ans" in
10727         y|Y) ;;
10728         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10729                 val="$undef"
10730                 : Remove sfio from list of libraries to use
10731                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10732                 shift
10733                 libs="$*"
10734                 echo "libs = $libs" >&4
10735                 ;;
10736         esac
10737         ;;
10738 *)      case "$usesfio" in
10739         true|$define|[yY]*)
10740                 echo "Sorry, cannot find sfio on this machine" >&4
10741                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10742                 ;;
10743         esac
10744         ;;
10745 esac
10746 set d_sfio
10747 eval $setvar
10748 case "$d_sfio" in
10749 $define) usesfio='true';;
10750 *) usesfio='false';;
10751 esac
10752
10753 : see if shmctl exists
10754 set shmctl d_shmctl
10755 eval $inlibc
10756
10757 : see if shmget exists
10758 set shmget d_shmget
10759 eval $inlibc
10760
10761 : see if shmat exists
10762 set shmat d_shmat
10763 eval $inlibc
10764 : see what shmat returns
10765 case "$d_shmat" in
10766 "$define")
10767         $cat >shmat.c <<'END'
10768 #include <sys/shm.h>
10769 void *shmat();
10770 END
10771         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10772                 shmattype='void *'
10773         else
10774                 shmattype='char *'
10775         fi
10776         echo "and it returns ($shmattype)." >&4
10777         : see if a prototype for shmat is available
10778         xxx=`./findhdr sys/shm.h`
10779         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10780         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10781                 val="$define"
10782         else
10783                 val="$undef"
10784         fi
10785         $rm -f shmat.[co]
10786         ;;
10787 *)
10788         val="$undef"
10789         ;;
10790 esac
10791 set d_shmatprototype
10792 eval $setvar
10793
10794 : see if shmdt exists
10795 set shmdt d_shmdt
10796 eval $inlibc
10797
10798 : see how much of the 'shm*(2)' library is present.
10799 h_shm=true
10800 echo " "
10801 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10802 *"$undef"*) h_shm=false;;
10803 esac
10804 case "$osname" in
10805 freebsd)
10806     case "`ipcs 2>&1`" in
10807     "SVID shared memory"*"not configured"*)
10808         echo "Your $osname does not have the shm*(2) configured." >&4
10809         h_shm=false
10810         val="$undef"
10811         set shmctl d_shmctl
10812         evat $setvar
10813         set shmget d_shmget
10814         evat $setvar
10815         set shmat d_shmat
10816         evat $setvar
10817         set shmdt d_shmdt
10818         evat $setvar
10819         ;;
10820     esac
10821     ;;
10822 esac
10823 : we could also check for sys/ipc.h ...
10824 if $h_shm && $test `./findhdr sys/shm.h`; then
10825         echo "You have the full shm*(2) library." >&4
10826         val="$define"
10827 else
10828         echo "You don't have the full shm*(2) library." >&4
10829         val="$undef"
10830 fi
10831 set d_shm
10832 eval $setvar
10833
10834 echo " "
10835 : see if we have sigaction
10836 if set sigaction val -f d_sigaction; eval $csym; $val; then
10837         echo 'sigaction() found.' >&4
10838         $cat > try.c <<'EOP'
10839 #include <stdio.h>
10840 #include <sys/types.h>
10841 #include <signal.h>
10842 int main()
10843 {
10844     struct sigaction act, oact;
10845     act.sa_flags = 0;
10846     oact.sa_handler = 0;
10847     /* so that act and oact are used */
10848     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10849 }
10850 EOP
10851         set try
10852         if eval $compile_ok; then
10853                 val="$define"
10854         else
10855                 echo "But you don't seem to have a useable struct sigaction." >&4
10856                 val="$undef"
10857         fi
10858 else
10859         echo 'sigaction NOT found.' >&4
10860         val="$undef"
10861 fi
10862 set d_sigaction; eval $setvar
10863 $rm -f try try$_o try.c
10864
10865 : see if sigsetjmp exists
10866 echo " "
10867 case "$d_sigsetjmp" in
10868 '')
10869         $cat >try.c <<'EOP'
10870 #include <setjmp.h>
10871 sigjmp_buf env;
10872 int set = 1;
10873 int main()
10874 {
10875         if (sigsetjmp(env,1))
10876                 exit(set);
10877         set = 0;
10878         siglongjmp(env, 1);
10879         exit(1);
10880 }
10881 EOP
10882         set try
10883         if eval $compile; then
10884                 if ./try >/dev/null 2>&1; then
10885                         echo "POSIX sigsetjmp found." >&4
10886                         val="$define"
10887                 else
10888                         $cat >&4 <<EOM
10889 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10890 I'll ignore them.
10891 EOM
10892                         val="$undef"
10893                 fi
10894         else
10895                 echo "sigsetjmp not found." >&4
10896                 val="$undef"
10897         fi
10898         ;;
10899 *) val="$d_sigsetjmp"
10900         case "$d_sigsetjmp" in
10901         $define) echo "POSIX sigsetjmp found." >&4;;
10902         $undef) echo "sigsetjmp not found." >&4;;
10903         esac
10904         ;;
10905 esac
10906 set d_sigsetjmp
10907 eval $setvar
10908 $rm -f try.c try
10909
10910 : see if sys/stat.h is available
10911 set sys/stat.h i_sysstat
10912 eval $inhdr
10913
10914
10915 : see if stat knows about block sizes
10916 echo " "
10917 echo "Checking to see if your struct stat has st_blocks field..." >&4
10918 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10919 eval $hasfield
10920
10921
10922 : see if this is a sys/vfs.h system
10923 set sys/vfs.h i_sysvfs
10924 eval $inhdr
10925
10926
10927 : see if this is a sys/statfs.h system
10928 set sys/statfs.h i_sysstatfs
10929 eval $inhdr
10930
10931
10932 echo " "
10933 echo "Checking to see if your system supports struct statfs..." >&4
10934 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
10935 eval $hasstruct
10936 case "$d_statfs_s" in
10937 "$define")      echo "Yes, it does."   ;;
10938 *)              echo "No, it doesn't." ;;
10939 esac
10940
10941
10942
10943 : see if struct statfs knows about f_flags
10944 case "$d_statfs_s" in
10945 define) 
10946         echo " "
10947         echo "Checking to see if your struct statfs has f_flags field..." >&4
10948         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
10949         eval $hasfield
10950         ;;
10951 *)      val="$undef"
10952         set d_statfs_f_flags
10953         eval $setvar
10954         ;;
10955 esac
10956 case "$d_statfs_f_flags" in
10957 "$define")      echo "Yes, it does."   ;;
10958 *)              echo "No, it doesn't." ;;
10959 esac
10960
10961 : see if _ptr and _cnt from stdio act std
10962 echo " "
10963 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10964         echo "(Looks like you have stdio.h from Linux.)"
10965         case "$stdio_ptr" in
10966         '') stdio_ptr='((fp)->_IO_read_ptr)'
10967                 ptr_lval=$define
10968                 ;;
10969         *)      ptr_lval=$d_stdio_ptr_lval;;
10970         esac
10971         case "$stdio_cnt" in
10972         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10973                 cnt_lval=$undef
10974                 ;;
10975         *)      cnt_lval=$d_stdio_cnt_lval;;
10976         esac
10977         case "$stdio_base" in
10978         '') stdio_base='((fp)->_IO_read_base)';;
10979         esac
10980         case "$stdio_bufsiz" in
10981         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10982         esac
10983 else
10984         case "$stdio_ptr" in
10985         '') stdio_ptr='((fp)->_ptr)'
10986                 ptr_lval=$define
10987                 ;;
10988         *)      ptr_lval=$d_stdio_ptr_lval;;
10989         esac
10990         case "$stdio_cnt" in
10991         '') stdio_cnt='((fp)->_cnt)'
10992                 cnt_lval=$define
10993                 ;;
10994         *)      cnt_lval=$d_stdio_cnt_lval;;
10995         esac
10996         case "$stdio_base" in
10997         '') stdio_base='((fp)->_base)';;
10998         esac
10999         case "$stdio_bufsiz" in
11000         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11001         esac
11002 fi
11003 : test whether _ptr and _cnt really work
11004 echo "Checking how std your stdio is..." >&4
11005 $cat >try.c <<EOP
11006 #include <stdio.h>
11007 #define FILE_ptr(fp)    $stdio_ptr
11008 #define FILE_cnt(fp)    $stdio_cnt
11009 int main() {
11010         FILE *fp = fopen("try.c", "r");
11011         char c = getc(fp);
11012         if (
11013                 18 <= FILE_cnt(fp) &&
11014                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11015         )
11016                 exit(0);
11017         exit(1);
11018 }
11019 EOP
11020 val="$undef"
11021 set try
11022 if eval $compile; then
11023         if ./try; then
11024                 echo "Your stdio acts pretty std."
11025                 val="$define"
11026         else
11027                 echo "Your stdio isn't very std."
11028         fi
11029 else
11030         echo "Your stdio doesn't appear very std."
11031 fi
11032 $rm -f try.c try
11033 set d_stdstdio
11034 eval $setvar
11035
11036 : Can _ptr be used as an lvalue?
11037 case "$d_stdstdio$ptr_lval" in
11038 $define$define) val=$define ;;
11039 *) val=$undef ;;
11040 esac
11041 set d_stdio_ptr_lval
11042 eval $setvar
11043
11044 : Can _cnt be used as an lvalue?
11045 case "$d_stdstdio$cnt_lval" in
11046 $define$define) val=$define ;;
11047 *) val=$undef ;;
11048 esac
11049 set d_stdio_cnt_lval
11050 eval $setvar
11051
11052 : see if _base is also standard
11053 val="$undef"
11054 case "$d_stdstdio" in
11055 $define)
11056         $cat >try.c <<EOP
11057 #include <stdio.h>
11058 #define FILE_base(fp)   $stdio_base
11059 #define FILE_bufsiz(fp) $stdio_bufsiz
11060 int main() {
11061         FILE *fp = fopen("try.c", "r");
11062         char c = getc(fp);
11063         if (
11064                 19 <= FILE_bufsiz(fp) &&
11065                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11066         )
11067                 exit(0);
11068         exit(1);
11069 }
11070 EOP
11071         set try
11072         if eval $compile; then
11073                 if ./try; then
11074                         echo "And its _base field acts std."
11075                         val="$define"
11076                 else
11077                         echo "But its _base field isn't std."
11078                 fi
11079         else
11080                 echo "However, it seems to be lacking the _base field."
11081         fi
11082         $rm -f try.c try
11083         ;;
11084 esac
11085 set d_stdiobase
11086 eval $setvar
11087
11088 $cat >&4 <<EOM
11089 Checking how to access stdio streams by file descriptor number...
11090 EOM
11091 case "$stdio_stream_array" in
11092 '')     $cat >try.c <<EOCP
11093 #include <stdio.h>
11094 int main() {
11095   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11096     printf("yes\n");
11097 }
11098 EOCP
11099         for s in _iob __iob __sF
11100         do
11101                 set try -DSTDIO_STREAM_ARRAY=$s
11102                 if eval $compile; then
11103                         case "`./try$exe_ext`" in
11104                         yes)    stdio_stream_array=$s; break ;;
11105                         esac
11106                 fi
11107         done
11108         $rm -f try.* try$exe_ext
11109 esac
11110 case "$stdio_stream_array" in
11111 '')     $cat >&4 <<EOM
11112 I can't figure out how to access stdio streams by file descriptor number.
11113 EOM
11114         d_stdio_stream_array="$undef"
11115         ;;
11116 *)      $cat >&4 <<EOM
11117 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11118 EOM
11119         d_stdio_stream_array="$define"
11120         ;;
11121 esac
11122
11123 : see if strcoll exists
11124 set strcoll d_strcoll
11125 eval $inlibc
11126
11127 : check for structure copying
11128 echo " "
11129 echo "Checking to see if your C compiler can copy structs..." >&4
11130 $cat >try.c <<'EOCP'
11131 int main()
11132 {
11133         struct blurfl {
11134                 int dyick;
11135         } foo, bar;
11136
11137         foo = bar;
11138 }
11139 EOCP
11140 if $cc -c try.c >/dev/null 2>&1 ; then
11141         val="$define"
11142         echo "Yup, it can."
11143 else
11144         val="$undef"
11145         echo "Nope, it can't."
11146 fi
11147 set d_strctcpy
11148 eval $setvar
11149 $rm -f try.*
11150
11151 : see if strerror and/or sys_errlist[] exist
11152 echo " "
11153 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11154     if set strerror val -f d_strerror; eval $csym; $val; then
11155                 echo 'strerror() found.' >&4
11156                 d_strerror="$define"
11157                 d_strerrm='strerror(e)'
11158                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11159                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11160                         d_syserrlst="$define"
11161                 else
11162                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11163                         d_syserrlst="$undef"
11164                 fi
11165     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11166                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11167                 echo 'strerror() found in string header.' >&4
11168                 d_strerror="$define"
11169                 d_strerrm='strerror(e)'
11170                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11171                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11172                                 d_syserrlst="$define"
11173                 else
11174                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11175                         d_syserrlst="$undef"
11176                 fi
11177     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11178                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11179                 d_strerror="$undef"
11180                 d_syserrlst="$define"
11181                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11182     else
11183                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11184                 d_strerror="$undef"
11185                 d_syserrlst="$undef"
11186                 d_strerrm='"unknown"'
11187     fi
11188 fi
11189
11190 : see if strtod exists
11191 set strtod d_strtod
11192 eval $inlibc
11193
11194 : see if strtol exists
11195 set strtol d_strtol
11196 eval $inlibc
11197
11198 : see if strtold exists
11199 set strtold d_strtold
11200 eval $inlibc
11201
11202 : see if strtoll exists
11203 set strtoll d_strtoll
11204 eval $inlibc
11205
11206 : see if strtoul exists
11207 set strtoul d_strtoul
11208 eval $inlibc
11209
11210 : see if strtoull exists
11211 set strtoull d_strtoull
11212 eval $inlibc
11213
11214 : see if strtouq exists
11215 set strtouq d_strtouq
11216 eval $inlibc
11217
11218 : see if strxfrm exists
11219 set strxfrm d_strxfrm
11220 eval $inlibc
11221
11222 : see if symlink exists
11223 set symlink d_symlink
11224 eval $inlibc
11225
11226 : see if syscall exists
11227 set syscall d_syscall
11228 eval $inlibc
11229
11230 : see if sysconf exists
11231 set sysconf d_sysconf
11232 eval $inlibc
11233
11234 : see if system exists
11235 set system d_system
11236 eval $inlibc
11237
11238 : see if tcgetpgrp exists
11239 set tcgetpgrp d_tcgetpgrp
11240 eval $inlibc
11241
11242 : see if tcsetpgrp exists
11243 set tcsetpgrp d_tcsetpgrp
11244 eval $inlibc
11245
11246 : see if prototype for telldir is available
11247 echo " "
11248 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11249 eval $hasproto
11250
11251 : see if this is a sys/times.h system
11252 set sys/times.h i_systimes
11253 eval $inhdr
11254
11255 : see if times exists
11256 echo " "
11257 if set times val -f d_times; eval $csym; $val; then
11258         echo 'times() found.' >&4
11259         d_times="$define"
11260         inc=''
11261         case "$i_systimes" in
11262         "$define") inc='sys/times.h';;
11263         esac
11264         rp="What is the type returned by times() on this system?"
11265         set clock_t clocktype long stdio.h sys/types.h $inc
11266         eval $typedef_ask
11267 else
11268         echo 'times() NOT found, hope that will do.' >&4
11269         d_times="$undef"
11270         clocktype='int'
11271 fi
11272
11273 : see if truncate exists
11274 set truncate d_truncate
11275 eval $inlibc
11276
11277 : see if tzname[] exists
11278 echo " "
11279 if set tzname val -a d_tzname; eval $csym; $val; then
11280         val="$define"
11281         echo 'tzname[] found.' >&4
11282 else
11283         val="$undef"
11284         echo 'tzname[] NOT found.' >&4
11285 fi
11286 set d_tzname
11287 eval $setvar
11288
11289 : see if umask exists
11290 set umask d_umask
11291 eval $inlibc
11292
11293 : see if ustat exists
11294 set ustat d_ustat
11295 eval $inlibc
11296
11297 : backward compatibility for d_hvfork
11298 if test X$d_hvfork != X; then
11299         d_vfork="$d_hvfork"
11300         d_hvfork=''
11301 fi
11302 : see if there is a vfork
11303 val=''
11304 set vfork val
11305 eval $inlibc
11306
11307 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11308 : perl on Solaris 2.x, and probably elsewhere.
11309 case "$val" in
11310 $define)
11311         echo " "
11312         case "$usevfork" in
11313         false) dflt='n';;
11314         *) dflt='y';;
11315         esac
11316         cat <<'EOM'
11317  
11318 Perl can only use a vfork() that doesn't suffer from strict
11319 restrictions on calling functions or modifying global data in
11320 the child.  For example, glibc-2.1 contains such a vfork()
11321 that is unsuitable.  If your system provides a proper fork()
11322 call, chances are that you do NOT want perl to use vfork().
11323
11324 EOM
11325         rp="Do you still want to use vfork()?"
11326         . ./myread
11327         case "$ans" in
11328         y|Y) ;;
11329         *)
11330                 echo "Ok, we won't use vfork()."
11331                 val="$undef"
11332                 ;;
11333         esac
11334         ;;
11335 esac
11336 set d_vfork
11337 eval $setvar
11338 case "$d_vfork" in
11339 $define) usevfork='true';;
11340 *) usevfork='false';;
11341 esac
11342
11343 : see if this is an sysdir system
11344 set sys/dir.h i_sysdir
11345 eval $inhdr
11346
11347 : see if this is an sysndir system
11348 set sys/ndir.h i_sysndir
11349 eval $inhdr
11350
11351 : see if closedir exists
11352 set closedir d_closedir
11353 eval $inlibc
11354
11355 case "$d_closedir" in
11356 "$define")
11357         echo " "
11358         echo "Checking whether closedir() returns a status..." >&4
11359         cat > closedir.c <<EOM
11360 #$i_dirent I_DIRENT             /**/
11361 #$i_sysdir I_SYS_DIR            /**/
11362 #$i_sysndir I_SYS_NDIR          /**/
11363 #$i_systypes I_SYS_TYPES        /**/
11364
11365 #if defined(I_SYS_TYPES)
11366 #include <sys/types.h>
11367 #endif
11368 #if defined(I_DIRENT)
11369 #include <dirent.h>
11370 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11371 #include <sys/dir.h>
11372 #endif
11373 #else
11374 #ifdef I_SYS_NDIR
11375 #include <sys/ndir.h>
11376 #else
11377 #ifdef I_SYS_DIR
11378 #ifdef hp9000s500
11379 #include <ndir.h>       /* may be wrong in the future */
11380 #else
11381 #include <sys/dir.h>
11382 #endif
11383 #endif
11384 #endif
11385 #endif 
11386 int main() { return closedir(opendir(".")); }
11387 EOM
11388         set closedir
11389         if eval $compile_ok; then
11390                 if ./closedir > /dev/null 2>&1 ; then
11391                         echo "Yes, it does."
11392                         val="$undef"
11393                 else
11394                         echo "No, it doesn't."
11395                         val="$define"
11396                 fi
11397         else
11398                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11399                 val="$define"
11400         fi
11401         ;;
11402 *)
11403         val="$undef";
11404         ;;
11405 esac
11406 set d_void_closedir
11407 eval $setvar
11408 $rm -f closedir*
11409 : check for volatile keyword
11410 echo " "
11411 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11412 $cat >try.c <<'EOCP'
11413 int main()
11414 {
11415         typedef struct _goo_struct goo_struct;
11416         goo_struct * volatile goo = ((goo_struct *)0);
11417         struct _goo_struct {
11418                 long long_int;
11419                 int reg_int;
11420                 char char_var;
11421         };
11422         typedef unsigned short foo_t;
11423         char *volatile foo;
11424         volatile int bar;
11425         volatile foo_t blech;
11426         foo = foo;
11427 }
11428 EOCP
11429 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11430         val="$define"
11431         echo "Yup, it does."
11432 else
11433         val="$undef"
11434         echo "Nope, it doesn't."
11435 fi
11436 set d_volatile
11437 eval $setvar
11438 $rm -f try.*
11439
11440 : see if there is a wait4
11441 set wait4 d_wait4
11442 eval $inlibc
11443
11444 : see if waitpid exists
11445 set waitpid d_waitpid
11446 eval $inlibc
11447
11448 : see if wcstombs exists
11449 set wcstombs d_wcstombs
11450 eval $inlibc
11451
11452 : see if wctomb exists
11453 set wctomb d_wctomb
11454 eval $inlibc
11455
11456 : preserve RCS keywords in files with variable substitution, grrr
11457 Date='$Date'
11458 Id='$Id'
11459 Log='$Log'
11460 RCSfile='$RCSfile'
11461 Revision='$Revision'
11462
11463 case "$crosscompile" in
11464 ''|[nN]*) crosscompile="$undef" ;;
11465 esac
11466
11467 case "$osname" in
11468 next|rhapsody) multiarch="$define" ;;
11469 esac
11470 case "$multiarch" in
11471 ''|[nN]*) multiarch="$undef" ;;
11472 esac
11473
11474 : check for alignment requirements
11475 echo " "
11476 case "$crosscompile$multiarch" in
11477 *$define*)
11478         $cat <<EOM
11479 You seem to be either cross-compiling or doing a multiarchitecture build,
11480 skipping the memory alignment check.
11481
11482 EOM
11483         case "$alignbytes" in
11484         '') alignbytes=8 ;;
11485         esac
11486         ;;
11487 *)
11488         case "$alignbytes" in
11489         '') echo "Checking alignment constraints..." >&4
11490                 $cat >try.c <<'EOCP'
11491 #include <stdio.h>
11492 struct foobar {
11493         char foo;
11494         double bar;
11495 } try_algn;
11496 int main()
11497 {
11498     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11499     return(0);
11500 }
11501 EOCP
11502                 set try
11503                 if eval $compile_ok; then
11504                         dflt=`./try`
11505                 else
11506                         dflt='8'
11507                         echo "(I can't seem to compile the test program...)"
11508                 fi
11509                 ;;
11510         *) dflt="$alignbytes"
11511                 ;;
11512         esac
11513         rp="Doubles must be aligned on a how-many-byte boundary?"
11514         . ./myread
11515         alignbytes="$ans"
11516         $rm -f try.c try
11517         ;;
11518 esac
11519
11520
11521 : check for ordering of bytes in a long
11522 echo " "
11523 case "$crosscompile$multiarch" in
11524 *$define*)
11525         $cat <<EOM
11526 You seem to be either cross-compiling or doing a multiarchitecture build,
11527 skipping the byteorder check.
11528
11529 EOM
11530         byteorder='0xffff'
11531         ;;
11532 *)
11533         case "$byteorder" in
11534         '')
11535                 $cat <<'EOM'
11536 In the following, larger digits indicate more significance.  A big-endian
11537 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11538 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11539 machines may have weird orders like 3412.  A Cray will report 87654321,
11540 an Alpha will report 12345678. If the test program works the default is
11541 probably right.
11542 I'm now running the test program...
11543 EOM
11544                 $cat >try.c <<'EOCP'
11545 #include <stdio.h>
11546 int main()
11547 {
11548         int i;
11549         union {
11550                 unsigned long l;
11551                 char c[sizeof(long)];
11552         } u;
11553
11554         if (sizeof(long) > 4)
11555                 u.l = (0x08070605L << 32) | 0x04030201L;
11556         else
11557                 u.l = 0x04030201L;
11558         for (i = 0; i < sizeof(long); i++)
11559                 printf("%c", u.c[i]+'0');
11560         printf("\n");
11561         exit(0);
11562 }
11563 EOCP
11564                 xxx_prompt=y
11565                 set try
11566                 if eval $compile && ./try > /dev/null; then
11567                         dflt=`./try`
11568                         case "$dflt" in
11569                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11570                                 echo "(The test program ran ok.)"
11571                                 echo "byteorder=$dflt"
11572                                 xxx_prompt=n
11573                         ;;
11574                         ????|????????) echo "(The test program ran ok.)" ;;
11575                         *) echo "(The test program didn't run right for some reason.)" ;;
11576                         esac
11577                 else
11578                         dflt='4321'
11579                         cat <<'EOM'
11580 (I can't seem to compile the test program.  Guessing big-endian...)
11581 EOM
11582                 fi
11583                 case "$xxx_prompt" in
11584                 y)
11585                         rp="What is the order of bytes in a long?"
11586                         . ./myread
11587                         byteorder="$ans"
11588                         ;;
11589                 *)      byteorder=$dflt
11590                         ;;
11591                 esac
11592                 ;;
11593         esac
11594         $rm -f try.c try
11595         ;;
11596 esac
11597
11598
11599 : how do we catenate cpp tokens here?
11600 echo " "
11601 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11602 $cat >cpp_stuff.c <<'EOCP'
11603 #define RCAT(a,b)a/**/b
11604 #define ACAT(a,b)a ## b
11605 RCAT(Rei,ser)
11606 ACAT(Cir,cus)
11607 EOCP
11608 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11609 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11610         echo "Oh!  Smells like ANSI's been here." >&4
11611         echo "We can catify or stringify, separately or together!"
11612         cpp_stuff=42
11613 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11614         echo "Ah, yes!  The good old days!" >&4
11615         echo "However, in the good old days we don't know how to stringify and"
11616         echo "catify at the same time."
11617         cpp_stuff=1
11618 else
11619         $cat >&4 <<EOM
11620 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11621 to have to edit the values of CAT[2-5] in config.h...
11622 EOM
11623         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11624 fi
11625 $rm -f cpp_stuff.*
11626
11627 : see if this is a db.h system
11628 set db.h i_db
11629 eval $inhdr
11630
11631 case "$i_db" in
11632 $define)
11633         : Check db version.
11634         echo " "
11635         echo "Checking Berkeley DB version ..." >&4
11636         $cat >try.c <<EOCP
11637 #$d_const HASCONST
11638 #ifndef HASCONST
11639 #define const
11640 #endif
11641 #include <sys/types.h>
11642 #include <stdio.h>
11643 #include <db.h>
11644 int main()
11645 {
11646 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11647     int Major, Minor, Patch ;
11648     unsigned long Version ;
11649     (void)db_version(&Major, &Minor, &Patch) ;
11650     printf("You have Berkeley DB Version 2 or greater\n");
11651
11652     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11653                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11654     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11655                 Major, Minor, Patch) ;
11656
11657     /* check that db.h & libdb are compatible */
11658     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11659         printf("db.h and libdb are incompatible\n") ;
11660         exit(3);        
11661     }
11662
11663     printf("db.h and libdb are compatible\n") ;
11664
11665     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11666                 + DB_VERSION_PATCH ;
11667
11668     /* needs to be >= 2.3.4 */
11669     if (Version < 2003004) {
11670     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11671         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11672         exit(2);        
11673     }
11674
11675     exit(0);
11676 #else
11677 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11678     printf("You have Berkeley DB Version 1\n");
11679     exit(0);    /* DB version < 2: the coast is clear. */
11680 #else
11681     exit(1);    /* <db.h> not Berkeley DB? */
11682 #endif
11683 #endif
11684 }
11685 EOCP
11686         set try
11687         if eval $compile_ok && ./try; then
11688                 echo 'Looks OK.' >&4
11689         else
11690                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11691                 i_db=$undef
11692                 case " $libs " in
11693                 *"-ldb "*)
11694                         : Remove db from list of libraries to use
11695                         echo "Removing unusable -ldb from library list" >&4
11696                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11697                         shift
11698                         libs="$*"
11699                         echo "libs = $libs" >&4
11700                         ;;
11701                 esac
11702         fi
11703         $rm -f try.*
11704         ;;
11705 esac
11706
11707 case "$i_db" in
11708 define)
11709         : Check the return type needed for hash 
11710         echo " "
11711         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11712         $cat >try.c <<EOCP
11713 #$d_const HASCONST
11714 #ifndef HASCONST
11715 #define const
11716 #endif
11717 #include <sys/types.h>
11718 #include <db.h>
11719
11720 #ifndef DB_VERSION_MAJOR
11721 u_int32_t hash_cb (ptr, size)
11722 const void *ptr;
11723 size_t size;
11724 {
11725 }
11726 HASHINFO info;
11727 int main()
11728 {
11729         info.hash = hash_cb;
11730 }
11731 #endif
11732 EOCP
11733         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11734                 if $contains warning try.out >>/dev/null 2>&1 ; then
11735                         db_hashtype='int'
11736                 else
11737                         db_hashtype='u_int32_t'
11738                 fi
11739         else
11740                 : XXX Maybe we should just give up here.
11741                 db_hashtype=u_int32_t
11742                 $cat try.out >&4
11743                 echo "Help:  I can't seem to compile the db test program." >&4
11744                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11745         fi
11746         $rm -f try.*
11747         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11748         ;;
11749 *)      db_hashtype=u_int32_t
11750         ;;
11751 esac
11752 case "$i_db" in
11753 define)
11754         : Check the return type needed for prefix 
11755         echo " "
11756         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11757         cat >try.c <<EOCP
11758 #$d_const HASCONST
11759 #ifndef HASCONST
11760 #define const
11761 #endif
11762 #include <sys/types.h>
11763 #include <db.h>
11764
11765 #ifndef DB_VERSION_MAJOR
11766 size_t prefix_cb (key1, key2)
11767 const DBT *key1;
11768 const DBT *key2;
11769 {
11770 }
11771 BTREEINFO info;
11772 int main()
11773 {
11774         info.prefix = prefix_cb;
11775 }
11776 #endif
11777 EOCP
11778         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11779                 if $contains warning try.out >>/dev/null 2>&1 ; then
11780                         db_prefixtype='int'
11781                 else
11782                         db_prefixtype='size_t'
11783                 fi
11784         else
11785                 db_prefixtype='size_t'
11786                 : XXX Maybe we should just give up here.
11787                 $cat try.out >&4
11788                 echo "Help:  I can't seem to compile the db test program." >&4
11789                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11790         fi
11791         $rm -f try.*
11792         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11793         ;;
11794 *)      db_prefixtype='size_t'
11795         ;;
11796 esac
11797
11798 : check for void type
11799 echo " "
11800 echo "Checking to see how well your C compiler groks the void type..." >&4
11801 case "$voidflags" in
11802 '')
11803         $cat >try.c <<'EOCP'
11804 #if TRY & 1
11805 void sub() {
11806 #else
11807 sub() {
11808 #endif
11809         extern void moo();      /* function returning void */
11810         void (*goo)();          /* ptr to func returning void */
11811 #if TRY & 8
11812         void *hue;              /* generic ptr */
11813 #endif
11814 #if TRY & 2
11815         void (*foo[10])();
11816 #endif
11817
11818 #if TRY & 4
11819         if(goo == moo) {
11820                 exit(0);
11821         }
11822 #endif
11823         exit(0);
11824 }
11825 int main() { sub(); }
11826 EOCP
11827         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11828                 voidflags=$defvoidused
11829         echo "Good.  It appears to support void to the level $package wants.">&4
11830                 if $contains warning .out >/dev/null 2>&1; then
11831                         echo "However, you might get some warnings that look like this:"
11832                         $cat .out
11833                 fi
11834         else
11835 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11836                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11837                         echo "It supports 1..."
11838                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11839                                 echo "It also supports 2..."
11840                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11841                                         voidflags=7
11842                                         echo "And it supports 4 but not 8 definitely."
11843                                 else
11844                                         echo "It doesn't support 4..."
11845                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11846                                                 voidflags=11
11847                                                 echo "But it supports 8."
11848                                         else
11849                                                 voidflags=3
11850                                                 echo "Neither does it support 8."
11851                                         fi
11852                                 fi
11853                         else
11854                                 echo "It does not support 2..."
11855                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11856                                         voidflags=13
11857                                         echo "But it supports 4 and 8."
11858                                 else
11859                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11860                                                 voidflags=5
11861                                                 echo "And it supports 4 but has not heard about 8."
11862                                         else
11863                                                 echo "However it supports 8 but not 4."
11864                                         fi
11865                                 fi
11866                         fi
11867                 else
11868                         echo "There is no support at all for void."
11869                         voidflags=0
11870                 fi
11871         fi
11872 esac
11873 case "$voidflags" in
11874 "$defvoidused") ;;
11875 *)      $cat >&4 <<'EOM'
11876   Support flag bits are:
11877     1: basic void declarations.
11878     2: arrays of pointers to functions returning void.
11879     4: operations between pointers to and addresses of void functions.
11880     8: generic void pointers.
11881 EOM
11882         dflt="$voidflags";
11883         rp="Your void support flags add up to what?"
11884         . ./myread
11885         voidflags="$ans"
11886         ;;
11887 esac
11888 $rm -f try.* .out
11889
11890
11891 : How can we generate normalized random numbers ?
11892 echo " "
11893 echo "Looking for a random number function..." >&4
11894 case "$randfunc" in
11895 '')
11896         if set drand48 val -f; eval $csym; $val; then
11897                 dflt="drand48"
11898                 echo "Good, found drand48()." >&4
11899         elif set random val -f; eval $csym; $val; then
11900                 dflt="random"
11901                 echo "OK, found random()." >&4
11902         else
11903                 dflt="rand"
11904                 echo "Yick, looks like I have to use rand()." >&4
11905         fi
11906         echo " "
11907         ;;
11908 *)
11909         dflt="$randfunc"
11910         ;;
11911 esac
11912 cont=true
11913
11914 case "$ccflags" in
11915 *-Dmy_rand=*|*-Dmy_srand=*)
11916         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11917         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11918         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11919         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11920         ;;
11921 esac
11922
11923 while $test "$cont"; do
11924         rp="Use which function to generate random numbers?"
11925         . ./myread
11926         if $test "$ans" = "$dflt"; then
11927                 : null
11928         else
11929                 randbits=''
11930         fi
11931         randfunc="$ans"
11932         if set $ans val -f; eval $csym; $val; then
11933                 cont=''
11934         else
11935                 dflt=y
11936                 rp="I cannot find function $ans. Use that name anyway?"
11937                 . ./myread
11938                 dflt=rand
11939                 case "$ans" in
11940                         [yY]*) cont='';;
11941                 esac
11942         fi
11943         case "$cont" in
11944         '')
11945                 case "$randfunc" in
11946                 drand48)
11947                         drand01="drand48()"
11948                         seedfunc="srand48"
11949                         randbits=48
11950                         randseedtype=long
11951                         ;;
11952                 rand|random)
11953                         case "$randbits" in
11954                         '')
11955 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11956                                 $cat >try.c <<EOCP
11957 #$i_unistd I_UNISTD
11958 #$i_stdlib I_STDLIB
11959 #include <stdio.h>
11960 #ifdef I_UNISTD
11961 #  include <unistd.h>
11962 #endif
11963 #ifdef I_STDLIB
11964 #  include <stdlib.h>
11965 #endif
11966 int main()
11967 {
11968         register int i;
11969         register unsigned long tmp;
11970         register unsigned long max = 0L;
11971
11972         for (i = 1000; i; i--) {
11973                 tmp = (unsigned long) $randfunc();
11974                 if (tmp > max) max = tmp;
11975         }
11976         for (i = 0; max; i++)
11977                 max /= 2;
11978         printf("%d\n",i);
11979 }
11980 EOCP
11981                                 set try
11982                                 if eval $compile_ok; then
11983                                         dflt=`try`
11984                                 else
11985                                         dflt='?'
11986                                         echo "(I can't seem to compile the test program...)"
11987                                 fi
11988                                 ;;
11989                         *)
11990                                 dflt="$randbits"
11991                                 ;;
11992                         esac
11993                         rp="How many bits does your $randfunc() function produce?"
11994                         . ./myread
11995                         randbits="$ans"
11996                         $rm -f try.c try
11997                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11998                         seedfunc="s$randfunc"
11999                         randseedtype=unsigned
12000                         ;;
12001                 *)
12002                         dflt="31"
12003                         rp="How many bits does your $randfunc() function produce?"
12004                         . ./myread
12005                         randbits="$ans"
12006                         seedfunc="s$randfunc"
12007                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12008                         if set $seedfunc val -f; eval $csym; $val; then
12009                                 echo "(Using $seedfunc() to seed random generator)"
12010                         else
12011                                 echo "(Warning: no $seedfunc() to seed random generator)"
12012                                 seedfunc=rand
12013                         fi
12014                         randseedtype=unsigned
12015                         ;;
12016                 esac
12017                 ;;
12018         esac
12019 done
12020
12021 echo " "
12022 echo "Determining whether or not we are on an EBCDIC system..." >&4
12023 $cat >tebcdic.c <<'EOM'
12024 int main()
12025 {
12026   if ('M'==0xd4) return 0;
12027   return 1;
12028 }
12029 EOM
12030
12031 val=$undef
12032 set tebcdic
12033 if eval $compile_ok; then
12034         if ./tebcdic; then
12035                 echo "You have EBCDIC." >&4
12036                 val="$define"
12037         else
12038                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12039         fi
12040 else
12041         echo "I'm unable to compile the test program." >&4
12042         echo "I'll assume ASCII or some ISO Latin." >&4
12043 fi
12044 $rm -f tebcdic.c tebcdic
12045 set ebcdic
12046 eval $setvar
12047
12048 echo " "
12049 $cat >&4 <<EOM
12050 Checking how to flush all pending stdio output...
12051 EOM
12052 # I only know how to find the first 32 possibly open files on SunOS.
12053 # See also hints/sunos_4_1.sh and util.c  --AD
12054 case "$osname" in
12055 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12056 esac
12057 $cat >>try.c <<EOCP
12058 #include <stdio.h>
12059 #$i_unistd I_UNISTD
12060 #ifdef I_UNISTD
12061 # include <unistd.h>
12062 #endif
12063 #$d_sysconf HAS_SYSCONF
12064 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12065 #ifdef HAS_STDIO_STREAM_ARRAY
12066 # define STDIO_STREAM_ARRAY $stdio_stream_array
12067 #endif
12068 int main() {
12069   FILE* p = fopen("try.out", "w");
12070 #ifdef TRY_FPUTC
12071   fputc('x', p);
12072 #else
12073 # ifdef TRY_FPRINTF
12074   fprintf(p, "x");
12075 # endif
12076 #endif
12077 #ifdef TRY_FFLUSH_NULL
12078   fflush(NULL);
12079 #endif
12080 #ifdef TRY_FFLUSH_ALL
12081   {
12082     long open_max = -1;
12083 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12084     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12085 # else
12086 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12087     open_max = sysconf(_SC_OPEN_MAX);
12088 #  else
12089 #   ifdef FOPEN_MAX
12090     open_max = FOPEN_MAX;
12091 #   else
12092 #    ifdef OPEN_MAX
12093     open_max = OPEN_MAX;
12094 #    else
12095 #     ifdef _NFILE
12096     open_max = _NFILE;
12097 #     endif
12098 #    endif
12099 #   endif
12100 #  endif
12101 # endif 
12102 # ifdef HAS_STDIO_STREAM_ARRAY
12103     if (open_max > 0) {
12104       long i;
12105       for (i = 0; i < open_max; i++)
12106             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12107                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12108                 STDIO_STREAM_ARRAY[i]._flag)
12109                 fflush(&STDIO_STREAM_ARRAY[i]);
12110     }   
12111   }
12112 # endif
12113 #endif
12114   _exit(42);
12115 }
12116 EOCP
12117 : first we have to find out how _not_ to flush
12118 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12119     output=''
12120     set try -DTRY_FPUTC
12121     if eval $compile; then
12122             $rm -f try.out
12123             ./try$exe_ext 2>/dev/null
12124             if $test ! -s try.out -a "X$?" = X42; then
12125                 output=-DTRY_FPUTC
12126             fi
12127     fi
12128     case "$output" in
12129     '')
12130             set try -DTRY_FPRINTF
12131             $rm -f try.out
12132             if eval $compile; then
12133                     $rm -f try.out
12134                     ./try$exe_ext 2>/dev/null
12135                     if $test ! -s try.out -a "X$?" = X42; then
12136                         output=-DTRY_FPRINTF
12137                     fi
12138             fi
12139         ;;
12140     esac
12141 fi
12142 : check for fflush NULL behaviour
12143 case "$fflushNULL" in
12144 '')     set try -DTRY_FFLUSH_NULL $output
12145         if eval $compile; then
12146                 $rm -f try.out
12147                 ./try$exe_ext 2>/dev/null
12148                 code="$?"
12149                 if $test -s try.out -a "X$code" = X42; then
12150                         fflushNULL="`$cat try.out`"
12151                 else
12152                         if $test "X$code" != X42; then
12153                                 $cat >&4 <<EOM
12154 (If this test failed, don't worry, we'll try another method shortly.)
12155 EOM
12156                         fi
12157                 fi
12158         fi
12159         $rm -f core try.core core.try.*
12160         case "$fflushNULL" in
12161         x)      $cat >&4 <<EOM
12162 Your fflush(NULL) works okay.
12163 EOM
12164                 fflushNULL="$define"
12165                 ;;
12166         '')     $cat >&4 <<EOM
12167 Your fflush(NULL) isn't working (contrary to ANSI C).
12168 EOM
12169                 fflushNULL="$undef"
12170                 ;;
12171         *)      $cat >&4 <<EOM
12172 Cannot figure out whether your fflush(NULL) works or not.
12173 I'm assuming it doesn't (contrary to ANSI C).
12174 EOM
12175                 fflushNULL="$undef"
12176                 ;;
12177         esac
12178         ;;
12179 $define|true|[yY]*)
12180         fflushNULL="$define"
12181         ;;
12182 *)
12183         fflushNULL="$undef"
12184         ;;
12185 esac
12186 : check explicit looping only if NULL did not work
12187 case "$fflushNULL" in
12188 "$undef")
12189         : check for fflush all behaviour
12190         case "$fflushall" in
12191         '')     set try -DTRY_FFLUSH_ALL $output
12192                 if eval $compile; then
12193                         $cat >&4 <<EOM
12194 (Now testing the other method--but note that also this may fail.)
12195 EOM
12196                         $rm -f try.out
12197                         ./try$exe_ext 2>/dev/null
12198                         if $test -s try.out -a "X$?" = X42; then
12199                                 fflushall="`$cat try.out`"
12200                         fi
12201                 fi
12202                 $rm -f core try.core core.try.*
12203                 case "$fflushall" in
12204                 x)      $cat >&4 <<EOM
12205 Whew. Flushing explicitly all the stdio streams works.
12206 EOM
12207                         fflushall="$define"
12208                         ;;
12209                 '')     $cat >&4 <<EOM
12210 Sigh. Flushing explicitly all the stdio streams doesn't work.
12211 EOM
12212                         fflushall="$undef"
12213                         ;;
12214                 *)      $cat >&4 <<EOM
12215 Cannot figure out whether flushing stdio streams explicitly works or not.
12216 I'm assuming it doesn't.
12217 EOM
12218                         fflushall="$undef"
12219                         ;;
12220                 esac
12221                 ;;
12222         "$define"|true|[yY]*)
12223                 fflushall="$define"
12224                 ;;
12225         *)
12226                 fflushall="$undef"
12227                 ;;
12228         esac
12229         ;;
12230 *)      fflushall="$undef"      
12231         ;;
12232 esac
12233 case "$fflushNULL$fflushall" in
12234 undefundef)
12235         $cat <<EOM
12236 I cannot figure out how to flush pending stdio output.
12237 EOM
12238         ;;
12239 esac
12240 $rm -f try.* try$exe_ext
12241
12242 : Store the full pathname to the ar program for use in the C program
12243 : Respect a hint or command line value for full_ar.
12244 case "$full_ar" in
12245 '') full_ar=$ar ;;
12246 esac
12247
12248 : Store the full pathname to the sed program for use in the C program
12249 full_sed=$sed
12250
12251 : see what type gids are declared as in the kernel
12252 echo " "
12253 echo "Looking for the type for group ids returned by getgid()."
12254 set gid_t gidtype xxx stdio.h sys/types.h
12255 eval $typedef
12256 case "$gidtype" in
12257 xxx)
12258         xxx=`./findhdr sys/user.h`
12259         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12260         case $1 in
12261         unsigned) dflt="$1 $2" ;;
12262         *) dflt="$1" ;;
12263         esac
12264         ;;
12265 *) dflt="$gidtype";;
12266 esac
12267 case "$gidtype" in
12268 gid_t) echo "gid_t found." ;;
12269 *)      rp="What is the type for group ids returned by getgid()?"
12270         . ./myread
12271         gidtype="$ans"
12272         ;;
12273 esac
12274
12275 echo " "
12276 case "$gidtype" in
12277 *_t) zzz="$gidtype"     ;;
12278 *)   zzz="gid"          ;;
12279 esac
12280 echo "Checking the size of $zzz..." >&4 
12281 cat > try.c <<EOCP
12282 #include <sys/types.h>
12283 #include <stdio.h>
12284 int main() {
12285     printf("%d\n", (int)sizeof($gidtype));
12286     exit(0);
12287 }
12288 EOCP
12289 set try
12290 if eval $compile_ok; then
12291         yyy=`./try`
12292         case "$yyy" in
12293         '')     gidsize=4
12294                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12295                 ;;
12296         *)      gidsize=$yyy
12297                 echo "Your $zzz size is $gidsize bytes."
12298                 ;;
12299         esac
12300 else
12301         gidsize=4
12302         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12303 fi
12304
12305
12306 echo " "
12307 case "$gidtype" in
12308 *_t) zzz="$gidtype"     ;;
12309 *)   zzz="gid"          ;;
12310 esac
12311 echo "Checking the sign of $zzz..." >&4 
12312 cat > try.c <<EOCP
12313 #include <sys/types.h>
12314 #include <stdio.h>
12315 int main() {
12316         $gidtype foo = -1;
12317         if (foo < 0)
12318                 printf("-1\n");
12319         else
12320                 printf("1\n");
12321 }
12322 EOCP
12323 set try
12324 if eval $compile; then
12325         yyy=`./try`
12326         case "$yyy" in
12327         '')     gidsign=1
12328                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12329                 ;;
12330         *)      gidsign=$yyy
12331                 case "$gidsign" in
12332                  1) echo "Your $zzz is unsigned." ;;
12333                 -1) echo "Your $zzz is signed."   ;;
12334                 esac
12335                 ;;
12336         esac
12337 else
12338         gidsign=1
12339         echo "(I can't compile the test program--guessing unsigned.)" >&4
12340 fi
12341
12342
12343 echo " "
12344
12345 if $test X"$quadtype" != X; then
12346
12347 echo "Checking how to print 64-bit integers..." >&4
12348
12349 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12350         $cat >try.c <<'EOCP'
12351 #include <sys/types.h>
12352 #include <stdio.h>
12353 int main() {
12354   int q = 12345678901;
12355   printf("%ld\n", q);
12356 }
12357 EOCP
12358         set try
12359         if eval $compile; then
12360                 yyy=`./try$exe_ext`
12361                 case "$yyy" in
12362                 12345678901)
12363                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12364                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12365                         echo "We will use %d."
12366                         ;;
12367                 esac
12368         fi
12369 fi
12370
12371 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12372         $cat >try.c <<'EOCP'
12373 #include <sys/types.h>
12374 #include <stdio.h>
12375 int main() {
12376   long q = 12345678901;
12377   printf("%ld\n", q);
12378 }
12379 EOCP
12380         set try
12381         if eval $compile; then
12382                 yyy=`./try$exe_ext`
12383                 case "$yyy" in
12384                 12345678901)
12385                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12386                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12387                         echo "We will use %ld."
12388                         ;;
12389                 esac
12390         fi
12391 fi
12392
12393 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12394         $cat >try.c <<'EOCP'
12395 #include <sys/types.h>
12396 #include <inttypes.h>
12397 #include <stdio.h>
12398 int main() {
12399   int64_t q = 12345678901;
12400   printf("%" PRId64 "\n", q);
12401 }
12402 EOCP
12403         set try
12404         if eval $compile; then
12405                 yyy=`./try$exe_ext`
12406                 case "$yyy" in
12407                 12345678901)
12408                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12409                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12410                         echo "We will use the C9X style."
12411                         ;;
12412                 esac
12413         fi
12414 fi
12415
12416 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12417         $cat >try.c <<'EOCP'
12418 #include <sys/types.h>
12419 #include <stdio.h>
12420 int main() {
12421   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12422   printf("%lld\n", q);
12423 }
12424 EOCP
12425         set try
12426         if eval $compile; then
12427                 yyy=`./try$exe_ext`
12428                 case "$yyy" in
12429                 12345678901)
12430                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12431                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12432                         echo "We will use the %lld style."
12433                         ;;
12434                 esac
12435         fi
12436 fi
12437
12438 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12439         $cat >try.c <<EOCP
12440 #include <sys/types.h>
12441 #include <stdio.h>
12442 int main() {
12443   $quadtype q = 12345678901;
12444   printf("%Ld\n", q);
12445 }
12446 EOCP
12447         set try
12448         if eval $compile; then
12449                 yyy=`./try$exe_ext`
12450                 case "$yyy" in
12451                 12345678901)
12452                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12453                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12454                         echo "We will use %Ld."
12455                         ;;
12456                 esac
12457         fi
12458 fi
12459
12460 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12461         $cat >try.c <<EOCP
12462 #include <sys/types.h>
12463 #include <stdio.h>
12464 int main() {
12465   $quadtype q = 12345678901;
12466   printf("%qd\n", q);
12467 }
12468 EOCP
12469         set try
12470         if eval $compile; then
12471                 yyy=`./try$exe_ext`
12472                 case "$yyy" in
12473                 12345678901)
12474                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12475                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12476                         echo "We will use %qd."
12477                         ;;
12478                 esac
12479         fi
12480 fi
12481
12482 if $test X"$sPRId64" = X; then
12483         echo "Cannot figure out how to print 64-bit integers." >&4
12484 fi
12485
12486 $rm -f try try.*
12487
12488 fi
12489
12490 case "$sPRId64" in
12491 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12492         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12493         ;;
12494 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12495         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12496         ;;
12497 esac
12498
12499
12500 echo " "
12501 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12502
12503 if $test X"$ivsize" = X8; then
12504         ivdformat="$sPRId64"
12505         uvuformat="$sPRIu64"
12506         uvoformat="$sPRIo64"
12507         uvxformat="$sPRIx64"
12508 else
12509         if $test X"$ivsize" = X"$longsize"; then
12510                 ivdformat='"ld"'
12511                 uvuformat='"lu"'
12512                 uvoformat='"lo"'
12513                 uvxformat='"lx"'
12514         else
12515                 if $test X"$ivsize" = X"$intsize"; then
12516                         ivdformat='"d"'
12517                         uvuformat='"u"'
12518                         uvoformat='"o"'
12519                         uvxformat='"x"'
12520                 else
12521                         : far out
12522                         if $test X"$ivsize" = X"$shortsize"; then
12523                                 ivdformat='"hd"'
12524                                 uvuformat='"hu"'
12525                                 uvoformat='"ho"'
12526                                 uvxformat='"hx"'
12527                         fi
12528                 fi
12529         fi
12530 fi
12531
12532 case "$ivdformat" in
12533 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12534     exit 1
12535     ;;
12536 esac
12537
12538
12539 echo " "
12540 $echo "Checking the format string to be used for gids..." >&4
12541
12542 case "$gidsign" in
12543 -1)     if $test X"$gidsize" = X"$ivsize"; then
12544                 gidformat="$ivdformat"
12545         else
12546                 if $test X"$gidsize" = X"$longsize"; then
12547                         gidformat='"ld"'
12548                 else
12549                         if $test X"$gidsize" = X"$intsize"; then
12550                                 gidformat='"d"'
12551                         else
12552                                 if $test X"$gidsize" = X"$shortsize"; then
12553                                         gidformat='"hd"'
12554                                 fi
12555                         fi
12556                 fi
12557         fi
12558         ;;
12559 *)      if $test X"$gidsize" = X"$uvsize"; then
12560                 gidformat="$uvuformat"
12561         else
12562                 if $test X"$gidsize" = X"$longsize"; then
12563                         gidformat='"lu"'
12564                 else
12565                         if $test X"$gidsize" = X"$intsize"; then
12566                                 gidformat='"u"'
12567                         else
12568                                 if $test X"$gidsize" = X"$shortsize"; then
12569                                         gidformat='"hu"'
12570                                 fi
12571                         fi
12572                 fi
12573         fi
12574         ;;
12575 esac
12576
12577 : see if getgroups exists
12578 set getgroups d_getgrps
12579 eval $inlibc
12580
12581 : see if setgroups exists
12582 set setgroups d_setgrps
12583 eval $inlibc
12584
12585
12586 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12587 echo " "
12588 case "$d_getgrps$d_setgrps" in
12589 *define*)
12590         case "$groupstype" in
12591         '') dflt="$gidtype" ;;
12592         *)  dflt="$groupstype" ;;
12593         esac
12594         $cat <<EOM
12595 What type of pointer is the second argument to getgroups() and setgroups()?
12596 Usually this is the same as group ids, $gidtype, but not always.
12597
12598 EOM
12599         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12600         . ./myread
12601         groupstype="$ans"
12602         ;;
12603 *)  groupstype="$gidtype";;
12604 esac
12605
12606 echo " "
12607 echo "Checking if your $make program sets \$(MAKE)..." >&4
12608 case "$make_set_make" in
12609 '')
12610         $sed 's/^X //' > testmake.mak << 'EOF'
12611 Xall:
12612 X       @echo 'maketemp="$(MAKE)"'
12613 EOF
12614         case "`$make -f testmake.mak 2>/dev/null`" in
12615         *maketemp=*) make_set_make='#' ;;
12616         *)      make_set_make="MAKE=$make" ;;
12617         esac
12618         $rm -f testmake.mak
12619         ;;
12620 esac
12621 case "$make_set_make" in
12622 '#') echo "Yup, it does.";;
12623 *) echo "Nope, it doesn't.";;
12624 esac
12625
12626 : see if this is a sys/mman.h system
12627 set sys/mman.h i_sysmman
12628 eval $inhdr
12629
12630 : see if mmap exists
12631 set mmap d_mmap
12632 eval $inlibc
12633 : see what shmat returns
12634 : default to something harmless
12635 mmaptype='void *'
12636 case "$i_sysmman$d_mmap" in
12637 "$define$define")
12638         $cat >mmap.c <<'END'
12639 #include <sys/mman.h>
12640 void *mmap();
12641 END
12642         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
12643                 mmaptype='void *'
12644         else
12645                 mmaptype='caddr_t'
12646         fi
12647         echo "and it returns ($mmaptype)." >&4
12648         ;;
12649 esac
12650
12651
12652
12653 : see what type is used for mode_t
12654 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12655 set mode_t modetype int stdio.h sys/types.h
12656 eval $typedef_ask
12657
12658 : define a fucntion to check prototypes
12659 $cat > protochk <<EOSH
12660 $startsh
12661 cc="$cc"
12662 optimize="$optimize"
12663 ccflags="$ccflags"
12664 prototype="$prototype"
12665 define="$define"
12666 rm=$rm
12667 EOSH
12668
12669 $cat >> protochk <<'EOSH'
12670
12671 $rm -f try.c
12672 foo="$1"
12673 shift
12674 while test $# -ge 2; do
12675         case "$1" in
12676                 $define) echo "#include <$2>" >> try.c ;;
12677                 literal) echo "$2" >> try.c ;;
12678         esac
12679     shift 2
12680 done
12681 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12682 cat >> try.c <<'EOCP'
12683 #ifdef CAN_PROTOTYPE
12684 #define _(args) args
12685 #else
12686 #define _(args) ()
12687 #endif
12688 EOCP
12689 echo "$foo" >> try.c
12690 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12691 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12692 status=$?
12693 $rm -f try.[co]
12694 exit $status
12695 EOSH
12696 chmod +x protochk
12697 $eunicefix protochk
12698
12699 : see what type is used for size_t
12700 rp="What is the type used for the length parameter for string functions?"
12701 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12702 eval $typedef_ask
12703
12704 : check for type of arguments to gethostbyaddr. 
12705 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12706         case "$d_gethbyaddr" in
12707         $define)
12708                 $cat <<EOM
12709
12710 Checking to see what type of arguments are accepted by gethostbyaddr().
12711 EOM
12712                 hdrs="$define sys/types.h
12713                         $d_socket sys/socket.h 
12714                         $i_niin netinet/in.h 
12715                         $i_netdb netdb.h
12716                         $i_unistd unistd.h"
12717                 : The first arg can 'char *' or 'void *'
12718                 : The second arg is some of integral type
12719                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12720                         for yyy in size_t long int; do
12721                                 case "$netdb_host_type" in
12722                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12723                                         if ./protochk "$try" $hdrs; then
12724                                                 echo "Your system accepts $xxx for the first arg."
12725                                                 echo "...and $yyy for the second arg."
12726                                                 netdb_host_type="$xxx"
12727                                                 netdb_hlen_type="$yyy"
12728                                         fi
12729                                         ;;
12730                                 esac
12731                         done
12732                 done
12733                 : In case none of those worked, prompt the user.
12734                 case "$netdb_host_type" in
12735                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12736                         dflt='char *'
12737                         . ./myread
12738                         netdb_host_type=$ans
12739                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12740                         dflt="$sizetype"
12741                         . ./myread
12742                         netdb_hlen_type=$ans
12743                         ;;
12744                 esac
12745                 ;;
12746         *)      : no gethostbyaddr, so pick harmless defaults
12747                 netdb_host_type='char *'
12748                 netdb_hlen_type="$sizetype"
12749                 ;;
12750         esac
12751         # Remove the "const" if needed. -- but then we'll have a 
12752         # prototype clash!
12753         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12754 fi
12755
12756 : check for type of argument to gethostbyname. 
12757 if test "X$netdb_name_type" = X ; then
12758         case "$d_gethbyname" in
12759         $define)
12760                 $cat <<EOM
12761
12762 Checking to see what type of argument is accepted by gethostbyname().
12763 EOM
12764                 hdrs="$define sys/types.h
12765                         $d_socket sys/socket.h 
12766                         $i_niin netinet/in.h 
12767                         $i_netdb netdb.h
12768                         $i_unistd unistd.h"
12769                 for xxx in "const char *" "char *"; do
12770                         case "$netdb_name_type" in
12771                         '')     try="extern struct hostent *gethostbyname($xxx);"
12772                                 if ./protochk "$try" $hdrs; then
12773                                         echo "Your system accepts $xxx."
12774                                         netdb_name_type="$xxx"
12775                                 fi
12776                                 ;;
12777                         esac
12778                 done
12779                 : In case none of those worked, prompt the user.
12780                 case "$netdb_name_type" in
12781                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12782                         dflt='char *'
12783                         . ./myread
12784                         netdb_name_type=$ans
12785                         ;;
12786                 esac
12787                 ;;
12788         *)      : no gethostbyname, so pick harmless default
12789                 netdb_name_type='char *'
12790                 ;;
12791         esac
12792 fi
12793
12794 : check for type of 1st argument to getnetbyaddr. 
12795 if test "X$netdb_net_type" = X ; then
12796         case "$d_getnbyaddr" in
12797         $define)
12798                 $cat <<EOM
12799
12800 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12801 EOM
12802                 hdrs="$define sys/types.h
12803                         $d_socket sys/socket.h 
12804                         $i_niin netinet/in.h 
12805                         $i_netdb netdb.h
12806                         $i_unistd unistd.h"
12807                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12808                         case "$netdb_net_type" in
12809                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12810                                 if ./protochk "$try" $hdrs; then
12811                                         echo "Your system accepts $xxx."
12812                                         netdb_net_type="$xxx"
12813                                 fi
12814                                 ;;
12815                         esac
12816                 done
12817                 : In case none of those worked, prompt the user.
12818                 case "$netdb_net_type" in
12819                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12820                         dflt='long'
12821                         . ./myread
12822                         netdb_net_type=$ans
12823                         ;;
12824                 esac
12825                 ;;
12826         *)      : no getnetbyaddr, so pick harmless default
12827                 netdb_net_type='long'
12828                 ;;
12829         esac
12830 fi
12831 : locate the preferred pager for this system
12832 case "$pager" in
12833 '')
12834         dflt=''
12835         case "$pg" in
12836         /*) dflt=$pg;;
12837         esac
12838         case "$more" in
12839         /*) dflt=$more;;
12840         esac
12841         case "$less" in
12842         /*) dflt=$less;;
12843         esac
12844         case "$dflt" in
12845         '') dflt=/usr/ucb/more;;
12846         esac
12847         ;;
12848 *) dflt="$pager";;
12849 esac
12850 echo " "
12851 fn=f/
12852 rp='What pager is used on your system?'
12853 . ./getfile
12854 pager="$ans"
12855
12856 : see what type pids are declared as in the kernel
12857 rp="What is the type of process ids on this system?"
12858 set pid_t pidtype int stdio.h sys/types.h
12859 eval $typedef_ask
12860
12861 : Find earliest binary compatible site_perl subdirectory perl can use.
12862 case "$bincompat5005" in
12863 "$define") xs_apiversion='5.005' ;;
12864 *) xs_apiversion=$version ;;   # The current site_perl version.
12865 esac
12866 : Find earliest pure perl site_perl subdirectory perl can use.
12867 : The versioned directories started at 5.005.
12868 pm_apiversion='5.005'
12869
12870 : check for length of pointer
12871 echo " "
12872 case "$ptrsize" in
12873 '')
12874         $echo $n "Checking to see how big your pointers are...$c" >&4
12875         if test "$voidflags" -gt 7; then
12876                 echo '#define VOID_PTR char *' > try.c
12877         else
12878                 echo '#define VOID_PTR void *' > try.c
12879         fi
12880         $cat >>try.c <<'EOCP'
12881 #include <stdio.h>
12882 int main()
12883 {
12884     printf("%d\n", (int)sizeof(VOID_PTR));
12885     exit(0);
12886 }
12887 EOCP
12888         set try
12889         if eval $compile_ok; then
12890                 ptrsize=`./try`
12891                 $echo " $ptrsize bytes." >&4
12892         else
12893                 dflt='4'
12894                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12895                 rp="What is the size of a pointer (in bytes)?"
12896                 . ./myread
12897                 ptrsize="$ans"
12898         fi
12899         ;;
12900 esac
12901 $rm -f try.c try
12902
12903 : see if ar generates random libraries by itself
12904 echo " "
12905 echo "Checking how to generate random libraries on your machine..." >&4
12906 echo 'int bar1() { return bar2(); }' > bar1.c
12907 echo 'int bar2() { return 2; }' > bar2.c
12908 $cat > foo.c <<'EOP'
12909 int main() { printf("%d\n", bar1()); exit(0); }
12910 EOP
12911 $cc $ccflags -c bar1.c >/dev/null 2>&1
12912 $cc $ccflags -c bar2.c >/dev/null 2>&1
12913 $cc $ccflags -c foo.c >/dev/null 2>&1
12914 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12915 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12916         ./foobar >/dev/null 2>&1; then
12917         echo "$ar appears to generate random libraries itself."
12918         orderlib=false
12919         ranlib=":"
12920 elif $ar ts bar$_a >/dev/null 2>&1 &&
12921         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12922         ./foobar >/dev/null 2>&1; then
12923                 echo "a table of contents needs to be added with '$ar ts'."
12924                 orderlib=false
12925                 ranlib="$ar ts"
12926 else
12927         case "$ranlib" in
12928         :) ranlib='';;
12929         '')
12930                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12931                 $test -f $ranlib || ranlib=''
12932                 ;;
12933         esac
12934         if $test -n "$ranlib"; then
12935                 echo "your system has '$ranlib'; we'll use that."
12936                 orderlib=false
12937         else
12938                 echo "your system doesn't seem to support random libraries"
12939                 echo "so we'll use lorder and tsort to order the libraries."
12940                 orderlib=true
12941                 ranlib=":"
12942         fi
12943 fi
12944 $rm -f foo* bar* 
12945
12946 : check for type of arguments to select. 
12947 case "$selecttype" in
12948 '') case "$d_select" in
12949         $define)
12950                 echo " "
12951                 $cat <<EOM
12952 Checking to see what type of arguments are accepted by select().
12953 EOM
12954                 hdrs="$define sys/types.h
12955                         $i_systime sys/time.h 
12956                         $i_sysselct sys/select.h
12957                         $d_socket sys/socket.h"
12958                 : The first arg can be int, unsigned, or size_t
12959                 : The last arg may or may not be 'const'
12960                 val=''
12961                 : void pointer has been seen but using that
12962                 : breaks the selectminbits test
12963                 for xxx in 'fd_set *' 'int *'; do
12964                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12965                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12966                                         case "$val" in
12967                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12968                                                 if ./protochk "$try" $hdrs; then
12969                                                         echo "Your system accepts $xxx."
12970                                                         val="$xxx"
12971                                                 fi
12972                                                 ;;
12973                                         esac
12974                                 done
12975                         done
12976                 done
12977                 case "$val" in
12978                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12979                         case "$d_fd_set" in
12980                                 $define) dflt="fd_set *" ;;
12981                                 *)              dflt="int *" ;;
12982                         esac
12983                         . ./myread
12984                         val=$ans
12985                         ;;
12986                 esac
12987                 selecttype="$val"
12988                 ;;
12989         *)      : no select, so pick a harmless default
12990                 selecttype='int *'
12991                 ;;
12992         esac
12993         ;;
12994 esac
12995
12996 : check for the select 'width'
12997 case "$selectminbits" in
12998 '') case "$d_select" in
12999         $define)
13000                 $cat <<EOM
13001
13002 Checking to see on how many bits at a time your select() operates...
13003 EOM
13004                 $cat >try.c <<EOCP
13005 #include <sys/types.h>
13006 #$i_time I_TIME
13007 #$i_systime I_SYS_TIME
13008 #$i_systimek I_SYS_TIME_KERNEL
13009 #ifdef I_TIME
13010 #   include <time.h>
13011 #endif
13012 #ifdef I_SYS_TIME
13013 #   ifdef I_SYS_TIME_KERNEL
13014 #       define KERNEL
13015 #   endif
13016 #   include <sys/time.h>
13017 #   ifdef I_SYS_TIME_KERNEL
13018 #       undef KERNEL
13019 #   endif
13020 #endif
13021 #$i_sysselct I_SYS_SELECT
13022 #ifdef I_SYS_SELECT
13023 #include <sys/select.h>
13024 #endif
13025 #$d_socket HAS_SOCKET
13026 #ifdef HAS_SOCKET
13027 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13028 #endif
13029 #include <stdio.h>
13030 $selecttype b;
13031 #define S sizeof(*(b))
13032 #define MINBITS 64
13033 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13034 #define NBITS  (NBYTES * 8)
13035 int main() {
13036     char s[NBYTES];
13037     struct timeval t;
13038     int i;
13039     FILE* fp;
13040     int fd;
13041
13042     fclose(stdin);
13043     fp = fopen("try.c", "r");
13044     if (fp == 0)
13045       exit(1);
13046     fd = fileno(fp);
13047     if (fd < 0)
13048       exit(2);
13049     b = ($selecttype)s;
13050     for (i = 0; i < NBITS; i++)
13051         FD_SET(i, b);
13052     t.tv_sec  = 0;
13053     t.tv_usec = 0;
13054     select(fd + 1, b, 0, 0, &t);
13055     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13056     printf("%d\n", i + 1);
13057     return 0;
13058 }
13059 EOCP
13060                 set try
13061                 if eval $compile_ok; then
13062                         selectminbits=`./try`
13063                         case "$selectminbits" in
13064                         '')     cat >&4 <<EOM
13065 Cannot figure out on how many bits at a time your select() operates.
13066 I'll play safe and guess it is 32 bits.
13067 EOM
13068                                 selectminbits=32
13069                                 bits="32 bits"
13070                                 ;;
13071                         1)      bits="1 bit" ;;
13072                         *)      bits="$selectminbits bits" ;;
13073                         esac
13074                         echo "Your select() operates on $bits at a time." >&4
13075                 else
13076                         rp='What is the minimum number of bits your select() operates on?'
13077                         case "$byteorder" in
13078                         1234|12345678)  dflt=32 ;;
13079                         *)              dflt=1  ;;
13080                         esac
13081                         . ./myread
13082                         val=$ans
13083                         selectminbits="$val"
13084                 fi
13085                 $rm -f try.* try
13086                 ;;
13087         *)      : no select, so pick a harmless default
13088                 selectminbits='32'
13089                 ;;
13090         esac
13091         ;;
13092 esac
13093
13094 : Trace out the files included by signal.h, then look for SIGxxx names.
13095 : Remove SIGARRAYSIZE used by HPUX.
13096 : Remove SIGSTKSIZE used by Linux.
13097 : Remove SIGSTKSZ used by Posix.
13098 : Remove SIGTYP void lines used by OS2.
13099 : Some cpps, like os390, dont give the file name anywhere
13100 if [ "X$fieldn" = X ]; then
13101         : Just make some guesses.  We check them later.
13102         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13103 else
13104         xxx=`echo '#include <signal.h>' |
13105         $cppstdin $cppminus $cppflags 2>/dev/null |
13106         $grep '^[       ]*#.*include' | 
13107         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13108 fi
13109 : Check this list of files to be sure we have parsed the cpp output ok.
13110 : This will also avoid potentially non-existent files, such 
13111 : as ../foo/bar.h
13112 xxxfiles=''
13113 for xx in $xxx /dev/null ; do
13114         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13115 done
13116 : If we have found no files, at least try signal.h
13117 case "$xxxfiles" in
13118 '')     xxxfiles=`./findhdr signal.h` ;;
13119 esac
13120 xxx=`awk '
13121 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13122         print substr($2, 4, 20)
13123 }
13124 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13125         print substr($3, 4, 20)
13126 }' $xxxfiles`
13127 : Append some common names just in case the awk scan failed.
13128 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13129 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13130 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13131 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13132 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13133
13134 : generate a few handy files for later
13135 $cat > signal.c <<'EOCP'
13136 #include <sys/types.h>
13137 #include <signal.h>
13138 #include <stdio.h>
13139 int main() {
13140
13141 /* Strange style to avoid deeply-nested #if/#else/#endif */
13142 #ifndef NSIG
13143 #  ifdef _NSIG
13144 #    define NSIG (_NSIG)
13145 #  endif
13146 #endif
13147
13148 #ifndef NSIG
13149 #  ifdef SIGMAX
13150 #    define NSIG (SIGMAX+1)
13151 #  endif
13152 #endif
13153
13154 #ifndef NSIG
13155 #  ifdef SIG_MAX
13156 #    define NSIG (SIG_MAX+1)
13157 #  endif
13158 #endif
13159
13160 #ifndef NSIG
13161 #  ifdef MAXSIG
13162 #    define NSIG (MAXSIG+1)
13163 #  endif
13164 #endif
13165
13166 #ifndef NSIG
13167 #  ifdef MAX_SIG
13168 #    define NSIG (MAX_SIG+1)
13169 #  endif
13170 #endif
13171
13172 #ifndef NSIG
13173 #  ifdef SIGARRAYSIZE
13174 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13175 #  endif
13176 #endif
13177
13178 #ifndef NSIG
13179 #  ifdef _sys_nsig
13180 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13181 #  endif
13182 #endif
13183
13184 /* Default to some arbitrary number that's big enough to get most
13185    of the common signals.
13186 */
13187 #ifndef NSIG
13188 #    define NSIG 50
13189 #endif
13190
13191 printf("NSIG %d\n", NSIG);
13192
13193 #ifndef JUST_NSIG
13194
13195 EOCP
13196
13197 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13198 {
13199         printf "#ifdef SIG"; printf $1; printf "\n"
13200         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13201         printf $1; printf ");\n"
13202         printf "#endif\n"
13203 }
13204 END {
13205         printf "#endif /* JUST_NSIG */\n";
13206         printf "exit(0);\n}\n";
13207 }
13208 ' >>signal.c
13209 $cat >signal.awk <<'EOP'
13210 BEGIN { ndups = 0 }
13211 $1 ~ /^NSIG$/ { nsig = $2 }
13212 ($1 !~ /^NSIG$/) && (NF == 2) {
13213     if ($2 > maxsig) { maxsig = $2 }
13214     if (sig_name[$2]) {
13215         dup_name[ndups] = $1
13216         dup_num[ndups] = $2
13217         ndups++ 
13218     }
13219     else {
13220         sig_name[$2] = $1
13221         sig_num[$2] = $2
13222     }
13223 }
13224 END { 
13225     if (nsig == 0) {
13226         nsig = maxsig + 1
13227     }
13228     printf("NSIG %d\n", nsig);
13229     for (n = 1; n < nsig; n++) {
13230         if (sig_name[n]) {
13231             printf("%s %d\n", sig_name[n], sig_num[n])
13232         }
13233         else {
13234             printf("NUM%d %d\n", n, n) 
13235         }
13236     }
13237     for (n = 0; n < ndups; n++) {
13238         printf("%s %d\n", dup_name[n], dup_num[n])
13239     }
13240 }
13241 EOP
13242 $cat >signal_cmd <<EOS
13243 $startsh
13244 if $test -s signal.lst; then
13245     echo "Using your existing signal.lst file"
13246         exit 0
13247 fi
13248 xxx="$xxx"
13249 EOS
13250 $cat >>signal_cmd <<'EOS'
13251
13252 set signal
13253 if eval $compile_ok; then
13254         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13255 else
13256         echo "(I can't seem be able to compile the whole test program)" >&4
13257         echo "(I'll try it in little pieces.)" >&4
13258         set signal -DJUST_NSIG
13259         if eval $compile_ok; then
13260                 ./signal$_exe > signal.nsg
13261                 $cat signal.nsg
13262         else
13263                 echo "I can't seem to figure out how many signals you have." >&4
13264                 echo "Guessing 50." >&4
13265                 echo 'NSIG 50' > signal.nsg
13266         fi
13267         : Now look at all the signal names, one at a time.
13268         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13269                 $cat > signal.c <<EOCP
13270 #include <sys/types.h>
13271 #include <signal.h>
13272 #include <stdio.h>
13273 int main() {
13274 printf("$xx %d\n", SIG${xx});
13275 return 0;
13276 }
13277 EOCP
13278                 set signal
13279                 if eval $compile; then
13280                         echo "SIG${xx} found."
13281                         ./signal$_exe  >> signal.ls1
13282                 else
13283                         echo "SIG${xx} NOT found."
13284                 fi
13285         done
13286         if $test -s signal.ls1; then
13287                 $cat signal.nsg signal.ls1 |
13288                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13289         fi
13290
13291 fi
13292 if $test -s signal.lst; then
13293         :
13294 else
13295         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13296         echo 'kill -l' >signal
13297         set X `csh -f <signal`
13298         $rm -f signal
13299         shift
13300         case $# in
13301         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13302         esac
13303         echo $@ | $tr ' ' $trnl | \
13304             $awk '{ printf "%s %d\n", $1, ++s; }
13305                   END { printf "NSIG %d\n", ++s }' >signal.lst
13306 fi
13307 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13308 EOS
13309 chmod a+x signal_cmd
13310 $eunicefix signal_cmd
13311
13312 : generate list of signal names
13313 echo " "
13314 case "$sig_name_init" in
13315 '') doinit=yes ;;
13316 *)  case "$sig_num_init" in
13317     ''|*,*) doinit=yes ;;
13318     esac ;;
13319 esac
13320 case "$doinit" in
13321 yes)
13322         echo "Generating a list of signal names and numbers..." >&4
13323         . ./signal_cmd
13324         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13325         sig_name=`$awk 'BEGIN { printf "ZERO " }
13326                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13327         sig_num=`$awk  'BEGIN { printf "0 " }
13328                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13329         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13330                              !/^NSIG/   { printf "\"%s\", ", $1 }
13331                              END        { printf "0\n" }' signal.lst`
13332         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13333                              !/^NSIG/   { printf "%d, ", $2}
13334                              END        { printf "0\n"}' signal.lst`
13335         ;;
13336 esac
13337 echo "The following $sig_count signals are available:"
13338 echo " "
13339 echo $sig_name | $awk \
13340 'BEGIN { linelen = 0 }
13341 {
13342         for (i = 1; i <= NF; i++) {
13343                 name = "SIG" $i " "
13344                 linelen = linelen + length(name)
13345                 if (linelen > 70) {
13346                         printf "\n"
13347                         linelen = length(name)
13348                 }
13349                 printf "%s", name
13350         }
13351         printf "\n"
13352 }'
13353 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13354
13355 : see what type is used for signed size_t
13356 set ssize_t ssizetype int stdio.h sys/types.h
13357 eval $typedef
13358 dflt="$ssizetype"
13359 $cat > ssize.c <<EOM
13360 #include <stdio.h>
13361 #include <sys/types.h>
13362 #define Size_t $sizetype
13363 #define SSize_t $dflt
13364 int main()
13365 {
13366         if (sizeof(Size_t) == sizeof(SSize_t))
13367                 printf("$dflt\n");
13368         else if (sizeof(Size_t) == sizeof(int))
13369                 printf("int\n");
13370         else 
13371                 printf("long\n");
13372         exit(0);
13373 }
13374 EOM
13375 echo " "
13376 set ssize
13377 if eval $compile_ok && ./ssize > /dev/null; then
13378         ssizetype=`./ssize`
13379         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13380 else
13381         $cat >&4 <<EOM
13382 Help! I can't compile and run the ssize_t test program: please enlighten me!
13383 (This is probably a misconfiguration in your system or libraries, and
13384 you really ought to fix it.  Still, I'll try anyway.)
13385
13386 I need a type that is the same size as $sizetype, but is guaranteed to
13387 be signed.  Common values are ssize_t, int and long.
13388
13389 EOM
13390         rp="What signed type is the same size as $sizetype?"
13391         . ./myread
13392         ssizetype="$ans"
13393 fi
13394 $rm -f ssize ssize.*
13395
13396 : see what type of char stdio uses.
13397 echo " "
13398 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13399         echo "Your stdio uses unsigned chars." >&4
13400         stdchar="unsigned char"
13401 else
13402         echo "Your stdio uses signed chars." >&4
13403         stdchar="char"
13404 fi
13405
13406 : see if time exists
13407 echo " "
13408 if test "X$d_time" = X -o X"$timetype" = X; then
13409     if set time val -f d_time; eval $csym; $val; then
13410                 echo 'time() found.' >&4
13411                 val="$define"
13412                 rp="What is the type returned by time() on this system?"
13413                 set time_t timetype long stdio.h sys/types.h
13414                 eval $typedef_ask
13415     else
13416                 echo 'time() not found, hope that will do.' >&4
13417                 val="$undef"
13418                 timetype='int';
13419     fi
13420     set d_time
13421     eval $setvar
13422 fi
13423
13424 : see what type uids are declared as in the kernel
13425 echo " "
13426 echo "Looking for the type for user ids returned by getuid()."
13427 set uid_t uidtype xxx stdio.h sys/types.h
13428 eval $typedef
13429 case "$uidtype" in
13430 xxx)
13431         xxx=`./findhdr sys/user.h`
13432         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13433         case $1 in
13434         unsigned) dflt="$1 $2" ;;
13435         *) dflt="$1" ;;
13436         esac
13437         ;;
13438 *) dflt="$uidtype";;
13439 esac
13440 case "$uidtype" in
13441 uid_t)  echo "uid_t found." ;;
13442 *)      rp="What is the type for user ids returned by getuid()?"
13443         . ./myread
13444         uidtype="$ans"
13445         ;;
13446 esac
13447
13448 echo " "
13449 case "$uidtype" in
13450 *_t) zzz="$uidtype"     ;;
13451 *)   zzz="uid"          ;;
13452 esac
13453 echo "Checking the size of $zzz..." >&4 
13454 cat > try.c <<EOCP
13455 #include <sys/types.h>
13456 #include <stdio.h>
13457 int main() {
13458     printf("%d\n", (int)sizeof($uidtype));
13459     exit(0);
13460 }
13461 EOCP
13462 set try
13463 if eval $compile_ok; then
13464         yyy=`./try`
13465         case "$yyy" in
13466         '')     uidsize=4
13467                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13468                 ;;
13469         *)      uidsize=$yyy
13470                 echo "Your $zzz size is $uidsize bytes."
13471                 ;;
13472         esac
13473 else
13474         uidsize=4
13475         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13476 fi
13477
13478 echo " "
13479 case "$uidtype" in
13480 *_t) zzz="$uidtype"     ;;
13481 *)   zzz="uid"          ;;
13482 esac
13483 echo "Checking the sign of $zzz..." >&4
13484 cat > try.c <<EOCP
13485 #include <sys/types.h>
13486 #include <stdio.h>
13487 int main() {
13488         $uidtype foo = -1;
13489         if (foo < 0)
13490                 printf("-1\n");
13491         else
13492                 printf("1\n");
13493 }
13494 EOCP
13495 set try
13496 if eval $compile; then
13497         yyy=`./try`
13498         case "$yyy" in
13499         '')     uidsign=1
13500                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13501                 ;;
13502         *)      uidsign=$yyy
13503                 case "$uidsign" in
13504                  1) echo "Your $zzz is unsigned." ;;
13505                 -1) echo "Your $zzz is signed."   ;;
13506                 esac
13507                 ;;
13508         esac
13509 else
13510         uidsign=1
13511         echo "(I can't compile the test program--guessing unsigned.)" >&4
13512 fi
13513
13514
13515
13516 echo " "
13517 $echo "Checking the format string to be used for uids..." >&4
13518
13519 case "$uidsign" in
13520 -1)     if $test X"$uidsize" = X"$ivsize"; then
13521                 uidformat="$ivdformat"
13522         else
13523                 if $test X"$uidsize" = X"$longsize"; then
13524                         uidformat='"ld"'
13525                 else
13526                         if $test X"$uidsize" = X"$intsize"; then
13527                                 uidformat='"d"'
13528                         else
13529                                 if $test X"$uidsize" = X"$shortsize"; then
13530                                         uidformat='"hd"'
13531                                 fi
13532                         fi
13533                 fi
13534         fi
13535         ;;
13536 *)      if $test X"$uidsize" = X"$uvsize"; then
13537                 uidformat="$uvuformat"
13538         else
13539                 if $test X"$uidsize" = X"$longsize"; then
13540                         uidformat='"lu"'
13541                 else
13542                         if $test X"$uidsize" = X"$intsize"; then
13543                                 uidformat='"u"'
13544                         else
13545                                 if $test X"$uidsize" = X"$shortsize"; then
13546                                         uidformat='"hu"'
13547                                 fi
13548                         fi
13549                 fi
13550         fi
13551         ;;
13552 esac
13553
13554 : see if dbm.h is available
13555 : see if dbmclose exists
13556 set dbmclose d_dbmclose
13557 eval $inlibc
13558
13559 case "$d_dbmclose" in
13560 $define)
13561         set dbm.h i_dbm
13562         eval $inhdr
13563         case "$i_dbm" in
13564         $define)
13565                 val="$undef"
13566                 set i_rpcsvcdbm
13567                 eval $setvar
13568                 ;;
13569         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13570                 eval $inhdr
13571                 ;;
13572         esac
13573         ;;
13574 *)      echo "We won't be including <dbm.h>"
13575         val="$undef"
13576         set i_dbm
13577         eval $setvar
13578         val="$undef"
13579         set i_rpcsvcdbm
13580         eval $setvar
13581         ;;
13582 esac
13583
13584 : see if this is a sys/file.h system
13585 val=''
13586 set sys/file.h val
13587 eval $inhdr
13588
13589 : do we need to include sys/file.h ?
13590 case "$val" in
13591 "$define")
13592         echo " "
13593         if $h_sysfile; then
13594                 val="$define"
13595                 echo "We'll be including <sys/file.h>." >&4
13596         else
13597                 val="$undef"
13598                 echo "We won't be including <sys/file.h>." >&4
13599         fi
13600         ;;
13601 *)
13602         h_sysfile=false
13603         ;;
13604 esac
13605 set i_sysfile
13606 eval $setvar
13607
13608 : see if fcntl.h is there
13609 val=''
13610 set fcntl.h val
13611 eval $inhdr
13612
13613 : see if we can include fcntl.h
13614 case "$val" in
13615 "$define")
13616         echo " "
13617         if $h_fcntl; then
13618                 val="$define"
13619                 echo "We'll be including <fcntl.h>." >&4
13620         else
13621                 val="$undef"
13622                 if $h_sysfile; then
13623         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13624                 else
13625                         echo "We won't be including <fcntl.h>." >&4
13626                 fi
13627         fi
13628         ;;
13629 *)
13630         h_fcntl=false
13631         val="$undef"
13632         ;;
13633 esac
13634 set i_fcntl
13635 eval $setvar
13636
13637 : see if this is a iconv.h system
13638 set iconv.h i_iconv
13639 eval $inhdr
13640
13641 : see if locale.h is available
13642 set locale.h i_locale
13643 eval $inhdr
13644
13645 : see if mach cthreads are available
13646 if test "X$usethreads" = "X$define"; then
13647         set mach/cthreads.h i_machcthr
13648         eval $inhdr
13649 else
13650         i_machcthr="$undef"
13651 fi
13652
13653
13654
13655 : see if this is a math.h system
13656 set math.h i_math
13657 eval $inhdr
13658
13659 : see if this is a mntent.h system
13660 set mntent.h i_mntent
13661 eval $inhdr
13662
13663 : see if ndbm.h is available
13664 set ndbm.h t_ndbm
13665 eval $inhdr
13666 case "$t_ndbm" in
13667 $define)
13668         : see if dbm_open exists
13669         set dbm_open d_dbm_open
13670         eval $inlibc
13671         case "$d_dbm_open" in
13672         $undef)
13673                 t_ndbm="$undef"
13674                 echo "We won't be including <ndbm.h>"
13675                 ;;
13676         esac
13677         ;;
13678 esac
13679 val="$t_ndbm"
13680 set i_ndbm
13681 eval $setvar
13682
13683 : see if net/errno.h is available
13684 val=''
13685 set net/errno.h val
13686 eval $inhdr
13687
13688 : Unfortunately, it causes problems on some systems.  Arrgh.
13689 case "$val" in
13690 $define)
13691         cat > try.c <<'EOM'
13692 #include <stdio.h>
13693 #include <errno.h>
13694 #include <net/errno.h>
13695 int func()
13696 {
13697         return ENOTSOCK;
13698 }
13699 EOM
13700         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13701                 echo "We'll be including <net/errno.h>." >&4
13702         else
13703                 echo "We won't be including <net/errno.h>." >&4
13704                 val="$undef"
13705         fi
13706         $rm -f try.* try
13707         ;;
13708 esac
13709 set i_neterrno
13710 eval $setvar
13711
13712 : see if netinet/tcp.h is available
13713 set netinet/tcp.h i_netinettcp
13714 eval $inhdr
13715
13716 : see if this is a poll.h system
13717 set poll.h i_poll
13718 eval $inhdr
13719
13720 echo " "
13721 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13722 $cat <<'EOSH' > Cppsym.know
13723 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13724 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13725 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13726 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13727 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13728 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13729 bull c cadmus clipper CMU COFF COMPILER_VERSION
13730 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13731 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13732 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13733 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13734 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13735 H3050R H3050RX hbullx20 hcx host_mips
13736 hp200 hp300 hp700 HP700 hp800 hp9000
13737 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13738 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13739 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13740 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13741 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13742 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13743 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13744 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13745 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13746 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13747 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13748 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13749 MATH_HAS_NO_SIDE_EFFECTS
13750 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13751 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13752 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13753 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13754 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13755 NetBSD news1500 news1700 news1800 news1900 news3700
13756 news700 news800 news900 NeXT NLS ns16000 ns32000
13757 ns32016 ns32332 ns32k nsc32000
13758 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13759 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13760 pc532 pdp11 PGC PIC plexus PORTAR posix
13761 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13762 POSIX_C_SOURCE POSIX_SOURCE POWER
13763 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13764 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13765 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13766 sony sony_news sonyrisc sparc sparclite spectrum
13767 stardent stdc STDC_EXT stratos sun sun3 sun386
13768 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13769 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13770 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13771 sysV68 sysV88 Tek4132 Tek4300 titan
13772 tower tower32 tower32_200 tower32_600 tower32_700
13773 tower32_800 tower32_850 tss
13774 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13775 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13776 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13777 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13778 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13779 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13780 z8000
13781 EOSH
13782 # Maybe put other stuff here too.
13783 cat <<EOSH >>Cppsym.know
13784 $osname
13785 EOSH
13786 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13787 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13788 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13789 $rm -f Cppsym.a Cppsym.b
13790 cat <<EOSH > Cppsym
13791 $startsh
13792 if $test \$# -gt 0; then
13793     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13794     if $test -s Cppsym.got; then
13795         $rm -f Cppsym.got
13796         exit 0
13797     fi
13798     $rm -f Cppsym.got
13799     exit 1
13800 else
13801     $tr " " "$trnl" | ./Cppsym.try
13802     exit 0
13803 fi
13804 EOSH
13805 chmod +x Cppsym
13806 $eunicefix Cppsym
13807 cat <<EOSH > Cppsym.try
13808 $startsh
13809 cat <<'EOCP' > try.c
13810 #include <stdio.h>
13811 int main() {
13812 EOCP
13813 $awk \\
13814 EOSH
13815 cat <<'EOSH' >> Cppsym.try
13816 'length($1) > 0 {
13817     printf "#ifdef %s\n#if %s+0\nprintf(\"%s=%%ld\\n\", %s);\n#else\nprintf(\"%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13818     printf "#ifdef _%s\n#if _%s+0\nprintf(\"_%s=%%ld\\n\", _%s);\n#else\nprintf(\"_%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13819     printf "#ifdef __%s\n#if __%s+0\nprintf(\"__%s=%%ld\\n\", __%s);\n#else\nprintf(\"__%s\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13820     printf "#ifdef __%s__\n#if __%s__+0\nprintf(\"__%s__=%%ld\\n\", __%s__);\n#else\nprintf(\"__%s__\\n\");\n#endif\n#endif\n", $1, $1, $1, $1, $1
13821 }'       >> try.c
13822 echo '}' >> try.c
13823 EOSH
13824 cat <<EOSH >> Cppsym.try
13825 cc="$cc"
13826 optimize="$optimize"
13827 ccflags="$ccflags"
13828 ldflags="$ldflags"
13829 libs="$libs"
13830 exe_ext="$exe_ext"
13831 $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try$exe_ext
13832 EOSH
13833 chmod +x Cppsym.try
13834 $eunicefix Cppsym.try
13835 ./Cppsym < Cppsym.know > Cppsym.true
13836 : now check the C compiler for additional symbols
13837 postprocess_cc_v=''
13838 case "$osname" in
13839 aix) postprocess_cc_v="|$tr , ' '" ;;
13840 esac
13841 $cat >ccsym <<EOS
13842 $startsh
13843 $cat >tmp.c <<EOF
13844 extern int foo;
13845 EOF
13846 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13847 do
13848         case "\$i" in
13849         -D*) echo "\$i" | $sed 's/^-D//';;
13850         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13851         esac
13852 done
13853 $rm -f try.c
13854 EOS
13855 postprocess_cc_v=''
13856 chmod +x ccsym
13857 $eunicefix ccsym
13858 ./ccsym > ccsym1.raw
13859 if $test -s ccsym1.raw; then
13860        $sort ccsym1.raw | $uniq >ccsym.raw
13861 else
13862        mv ccsym1.raw ccsym.raw
13863 fi
13864
13865 $awk '/\=/ { print $0; next }
13866         { print $0"=1" }' ccsym.raw >ccsym.list
13867 $awk '/\=/ { print $0; next }
13868         { print $0"=1" }' Cppsym.true >ccsym.true
13869 $comm -13 ccsym.true ccsym.list >ccsym.own
13870 $comm -12 ccsym.true ccsym.list >ccsym.com
13871 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13872 also=''
13873 if $test -z ccsym.raw; then
13874         echo "Your C compiler doesn't seem to define any symbols!" >&4
13875         echo " "
13876         echo "However, your C preprocessor defines the following symbols:"
13877         $cat Cppsym.true
13878         ccsymbols=''
13879         cppsymbols=`$cat Cppsym.true`
13880         cppsymbols=`echo $cppsymbols`
13881         cppccsymbols="$cppsymbols"
13882 else
13883         if $test -s ccsym.com; then
13884                 echo "Your C compiler and pre-processor define these symbols:"
13885                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13886                 also='also '
13887                 symbols='ones'
13888                 cppccsymbols=`$cat ccsym.com`
13889                 cppccsymbols=`echo $cppccsymbols`
13890                 $test "$silent" || sleep 1
13891         fi
13892         if $test -s ccsym.cpp; then
13893                 $test "$also" && echo " "
13894                 echo "Your C pre-processor ${also}defines the following symbols:"
13895                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13896                 also='further '
13897                 cppsymbols=`$cat ccsym.cpp`
13898                 cppsymbols=`echo $cppsymbols`
13899                 $test "$silent" || sleep 1
13900         fi
13901         if $test -s ccsym.own; then
13902                 $test "$also" && echo " "
13903                 echo "Your C compiler ${also}defines the following cpp symbols:"
13904                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13905                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13906                 ccsymbols=`$cat ccsym.own`
13907                 ccsymbols=`echo $ccsymbols`
13908                 $test "$silent" || sleep 1
13909         fi
13910 fi
13911 $rm -f ccsym*
13912
13913 : see if this is a termio system
13914 val="$undef"
13915 val2="$undef"
13916 val3="$undef"
13917 if $test `./findhdr termios.h`; then
13918         set tcsetattr i_termios
13919         eval $inlibc
13920         val3="$i_termios"
13921 fi
13922 echo " "
13923 case "$val3" in
13924 "$define") echo "You have POSIX termios.h... good!" >&4;;
13925 *) if ./Cppsym pyr; then
13926                 case "`/bin/universe`" in
13927                 ucb) if $test `./findhdr sgtty.h`; then
13928                                 val2="$define"
13929                                 echo "<sgtty.h> found." >&4
13930                         else
13931                                 echo "System is pyramid with BSD universe."
13932                                 echo "<sgtty.h> not found--you could have problems." >&4
13933                         fi;;
13934                 *) if $test `./findhdr termio.h`; then
13935                                 val="$define"
13936                                 echo "<termio.h> found." >&4
13937                         else
13938                                 echo "System is pyramid with USG universe."
13939                                 echo "<termio.h> not found--you could have problems." >&4
13940                         fi;;
13941                 esac
13942         elif ./usg; then
13943                 if $test `./findhdr termio.h`; then
13944                         echo "<termio.h> found." >&4
13945                         val="$define"
13946                 elif $test `./findhdr sgtty.h`; then
13947                         echo "<sgtty.h> found." >&4
13948                         val2="$define"
13949                 else
13950 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13951                 fi
13952         else
13953                 if $test `./findhdr sgtty.h`; then
13954                         echo "<sgtty.h> found." >&4
13955                         val2="$define"
13956                 elif $test `./findhdr termio.h`; then
13957                         echo "<termio.h> found." >&4
13958                         val="$define"
13959                 else
13960 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13961                 fi
13962         fi;;
13963 esac
13964 set i_termio; eval $setvar
13965 val=$val2; set i_sgtty; eval $setvar
13966 val=$val3; set i_termios; eval $setvar
13967
13968 : see if this is a shadow.h system
13969 set shadow.h i_shadow
13970 eval $inhdr
13971
13972 : see if this is a socks.h system
13973 set socks.h i_socks
13974 eval $inhdr
13975
13976 : see if stdarg is available
13977 echo " "
13978 if $test `./findhdr stdarg.h`; then
13979         echo "<stdarg.h> found." >&4
13980         valstd="$define"
13981 else
13982         echo "<stdarg.h> NOT found." >&4
13983         valstd="$undef"
13984 fi
13985
13986 : see if varags is available
13987 echo " "
13988 if $test `./findhdr varargs.h`; then
13989         echo "<varargs.h> found." >&4
13990 else
13991         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13992 fi
13993
13994 : set up the varargs testing programs
13995 $cat > varargs.c <<EOP
13996 #ifdef I_STDARG
13997 #include <stdarg.h>
13998 #endif
13999 #ifdef I_VARARGS
14000 #include <varargs.h>
14001 #endif
14002
14003 #ifdef I_STDARG
14004 int f(char *p, ...)
14005 #else
14006 int f(va_alist)
14007 va_dcl
14008 #endif
14009 {
14010         va_list ap;
14011 #ifndef I_STDARG
14012         char *p;
14013 #endif
14014 #ifdef I_STDARG
14015         va_start(ap,p);
14016 #else
14017         va_start(ap);
14018         p = va_arg(ap, char *);
14019 #endif
14020         va_end(ap);
14021 }
14022 EOP
14023 $cat > varargs <<EOP
14024 $startsh
14025 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14026         echo "true"
14027 else
14028         echo "false"
14029 fi
14030 $rm -f varargs$_o
14031 EOP
14032 chmod +x varargs
14033
14034 : now check which varargs header should be included
14035 echo " "
14036 i_varhdr=''
14037 case "$valstd" in
14038 "$define")
14039         if `./varargs I_STDARG`; then
14040                 val='stdarg.h'
14041         elif `./varargs I_VARARGS`; then
14042                 val='varargs.h'
14043         fi
14044         ;;
14045 *)
14046         if `./varargs I_VARARGS`; then
14047                 val='varargs.h'
14048         fi
14049         ;;
14050 esac
14051 case "$val" in
14052 '')
14053 echo "I could not find the definition for va_dcl... You have problems..." >&4
14054         val="$undef"; set i_stdarg; eval $setvar
14055         val="$undef"; set i_varargs; eval $setvar
14056         ;;
14057 *) 
14058         set i_varhdr
14059         eval $setvar
14060         case "$i_varhdr" in
14061         stdarg.h)
14062                 val="$define"; set i_stdarg; eval $setvar
14063                 val="$undef"; set i_varargs; eval $setvar
14064                 ;;
14065         varargs.h)
14066                 val="$undef"; set i_stdarg; eval $setvar
14067                 val="$define"; set i_varargs; eval $setvar
14068                 ;;
14069         esac
14070         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14071 esac
14072 $rm -f varargs*
14073
14074 : see if stddef is available
14075 set stddef.h i_stddef
14076 eval $inhdr
14077
14078 : see if sys/access.h is available
14079 set sys/access.h i_sysaccess
14080 eval $inhdr
14081
14082 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14083 set sys/filio.h i_sysfilio
14084 eval $inhdr
14085 echo " "
14086 if $test `./findhdr sys/ioctl.h`; then
14087         val="$define"
14088         echo '<sys/ioctl.h> found.' >&4
14089 else
14090         val="$undef"
14091         if $test $i_sysfilio = "$define"; then
14092             echo '<sys/ioctl.h> NOT found.' >&4
14093         else
14094                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14095                 $test $i_termio = "$define" && xxx="termio.h"
14096                 $test $i_termios = "$define" && xxx="termios.h"
14097 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14098         fi
14099 fi
14100 set i_sysioctl
14101 eval $setvar
14102
14103
14104 : see if this is a syslog.h system
14105 set syslog.h i_syslog
14106 eval $inhdr
14107
14108 : see if sys/resource.h has to be included
14109 set sys/resource.h i_sysresrc
14110 eval $inhdr
14111
14112 : see if sys/security.h is available
14113 set sys/security.h i_syssecrt
14114 eval $inhdr
14115
14116 : see if this is a sys/statvfs.h system
14117 set sys/statvfs.h i_sysstatvfs
14118 eval $inhdr
14119
14120 : see if this is a sys/uio.h system
14121 set sys/uio.h i_sysuio
14122 eval $inhdr
14123
14124 : see if this is a sys/un.h system
14125 set sys/un.h i_sysun
14126 eval $inhdr
14127
14128 : see if this is a syswait system
14129 set sys/wait.h i_syswait
14130 eval $inhdr
14131
14132 : see if this is a ustat.h system
14133 set ustat.h i_ustat
14134 eval $inhdr
14135
14136 : see if this is an utime system
14137 set utime.h i_utime
14138 eval $inhdr
14139
14140 : see if this is a values.h system
14141 set values.h i_values
14142 eval $inhdr
14143
14144 : see if this is a vfork system
14145 case "$d_vfork" in
14146 "$define")
14147         set vfork.h i_vfork
14148         eval $inhdr
14149         ;;
14150 *)
14151         i_vfork="$undef"
14152         ;;
14153 esac
14154
14155 : see if gdbm.h is available
14156 set gdbm.h t_gdbm
14157 eval $inhdr
14158 case "$t_gdbm" in
14159 $define)
14160         : see if gdbm_open exists
14161         set gdbm_open d_gdbm_open
14162         eval $inlibc
14163         case "$d_gdbm_open" in
14164         $undef)
14165                 t_gdbm="$undef"
14166                 echo "We won't be including <gdbm.h>"
14167                 ;;
14168         esac
14169         ;;
14170 esac
14171 val="$t_gdbm"
14172 set i_gdbm
14173 eval $setvar
14174
14175 echo " "
14176 echo "Looking for extensions..." >&4
14177 : If we are using the old config.sh, known_extensions may contain
14178 : old or inaccurate or duplicate values.
14179 known_extensions=''
14180 nonxs_extensions=''
14181 : We do not use find because it might not be available.
14182 : We do not just use MANIFEST because the user may have dropped
14183 : some additional extensions into the source tree and expect them
14184 : to be built.
14185
14186 : Function to recursively find available extensions, ignoring DynaLoader
14187 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14188 find_extensions='
14189     for xxx in *; do
14190        case "$xxx" in
14191            DynaLoader|dynaload) ;;
14192            *)
14193            if $test -f $xxx/$xxx.xs; then
14194                known_extensions="$known_extensions $1$xxx";
14195            elif $test -f $xxx/Makefile.PL; then
14196                nonxs_extensions="$nonxs_extensions $1$xxx";
14197            else
14198                if $test -d $xxx -a $# -lt 10; then
14199                    set $1$xxx/ $*;
14200                    cd $xxx;
14201                    eval $find_extensions;
14202                    cd ..;
14203                    shift;
14204                fi;
14205            fi
14206            ;;
14207        esac;
14208     done'
14209 tdir=`pwd`
14210 cd $rsrc/ext
14211 set X
14212 shift
14213 eval $find_extensions
14214 set X $nonxs_extensions
14215 shift
14216 nonxs_extensions="$*"
14217 set X $known_extensions
14218 shift
14219 known_extensions="$*"
14220 cd $tdir
14221
14222 : Now see which are supported on this system.
14223 avail_ext=''
14224 for xxx in $known_extensions ; do
14225         case "$xxx" in
14226         DB_File|db_file)
14227                 case "$i_db" in
14228                 $define) avail_ext="$avail_ext $xxx" ;;
14229                 esac
14230                 ;;
14231         GDBM_File|gdbm_fil)
14232                 case "$i_gdbm" in 
14233                 $define) avail_ext="$avail_ext $xxx" ;;
14234                 esac
14235                 ;;
14236         NDBM_File|ndbm_fil)
14237                 case "$i_ndbm" in
14238                 $define)
14239                     case "$osname-$use64bits" in
14240                     hpux-define)
14241                         case "$libs" in
14242                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14243                         esac
14244                         ;;
14245                     *) avail_ext="$avail_ext $xxx" ;;
14246                     esac
14247                     ;;
14248                 esac
14249                 ;;
14250         ODBM_File|odbm_fil) 
14251                 case "${i_dbm}${i_rpcsvcdbm}" in
14252                 *"${define}"*)
14253                     case "$osname-$use64bits" in
14254                     hpux-define)
14255                         case "$libs" in
14256                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14257                         esac
14258                         ;;
14259                     *) avail_ext="$avail_ext $xxx" ;;
14260                     esac
14261                     ;;
14262                 esac
14263                 ;;
14264         POSIX|posix)
14265                 case "$useposix" in
14266                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14267                 esac
14268                 ;;
14269         Opcode|opcode)
14270                 case "$useopcode" in
14271                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14272                 esac
14273                 ;;
14274         Socket|socket)
14275                 case "$d_socket" in 
14276                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14277                 esac
14278                 ;;
14279         Thread|thread)
14280                 case "$usethreads" in 
14281                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14282                 esac
14283                 ;;
14284         IPC/SysV|ipc/sysv)
14285                 : XXX Do we need a useipcsysv variable here
14286                 case "${d_msg}${d_sem}${d_shm}" in 
14287                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14288                 esac
14289                 ;;
14290         *)      avail_ext="$avail_ext $xxx"
14291                 ;;
14292         esac
14293 done
14294
14295 set X $avail_ext
14296 shift
14297 avail_ext="$*"
14298
14299 : Now see which nonxs extensions are supported on this system.
14300 : For now assume all are.
14301 nonxs_ext=''
14302 for xxx in $nonxs_extensions ; do
14303         case "$xxx" in
14304         *)      nonxs_ext="$nonxs_ext $xxx"
14305                 ;;
14306         esac
14307 done
14308
14309 set X $nonxs_ext
14310 shift
14311 nonxs_ext="$*"
14312
14313 case $usedl in
14314 $define)
14315         $cat <<EOM
14316 A number of extensions are supplied with $package.  You may choose to
14317 compile these extensions for dynamic loading (the default), compile
14318 them into the $package executable (static loading), or not include
14319 them at all.  Answer "none" to include no extensions.
14320 Note that DynaLoader is always built and need not be mentioned here.
14321
14322 EOM
14323         case "$dynamic_ext" in
14324         '') dflt="$avail_ext" ;;
14325         *)      dflt="$dynamic_ext"
14326                 # Perhaps we are reusing an old out-of-date config.sh.
14327                 case "$hint" in
14328                 previous)
14329                         if test X"$dynamic_ext" != X"$avail_ext"; then
14330                                 $cat <<EOM
14331 NOTICE:  Your previous config.sh list may be incorrect. 
14332 The extensions now available to you are 
14333         ${avail_ext}
14334 but the default list from your previous config.sh is
14335         ${dynamic_ext} 
14336
14337 EOM
14338                         fi
14339                         ;;
14340                 esac
14341                 ;;
14342         esac
14343         case "$dflt" in
14344         '')     dflt=none;;
14345         esac
14346         rp="What extensions do you wish to load dynamically?"
14347         . ./myread
14348         case "$ans" in
14349         none) dynamic_ext=' ' ;;
14350         *) dynamic_ext="$ans" ;;
14351         esac
14352
14353         case "$static_ext" in
14354         '')
14355                 : Exclude those already listed in dynamic linking
14356                 dflt=''
14357                 for xxx in $avail_ext; do
14358                         case " $dynamic_ext " in
14359                         *" $xxx "*) ;;
14360                         *) dflt="$dflt $xxx" ;;
14361                         esac
14362                 done
14363                 set X $dflt
14364                 shift
14365                 dflt="$*"
14366                 ;;
14367         *)  dflt="$static_ext" 
14368                 ;;
14369         esac
14370
14371         case "$dflt" in
14372         '')     dflt=none;;
14373         esac
14374         rp="What extensions do you wish to load statically?"
14375         . ./myread
14376         case "$ans" in
14377         none) static_ext=' ' ;;
14378         *) static_ext="$ans" ;;
14379         esac
14380         ;;
14381 *)
14382         $cat <<EOM
14383 A number of extensions are supplied with $package.  Answer "none" 
14384 to include no extensions. 
14385 Note that DynaLoader is always built and need not be mentioned here.
14386
14387 EOM
14388         case "$static_ext" in
14389         '') dflt="$avail_ext" ;;
14390         *)      dflt="$static_ext"
14391                 # Perhaps we are reusing an old out-of-date config.sh.
14392                 case "$hint" in
14393                 previous)
14394                         if test X"$static_ext" != X"$avail_ext"; then
14395                                 $cat <<EOM
14396 NOTICE:  Your previous config.sh list may be incorrect. 
14397 The extensions now available to you are 
14398         ${avail_ext}
14399 but the default list from your previous config.sh is
14400         ${static_ext} 
14401
14402 EOM
14403                         fi
14404                         ;;
14405                 esac
14406                 ;;
14407         esac
14408         : Exclude those that are not xs extensions
14409         case "$dflt" in
14410         '')     dflt=none;;
14411         esac
14412         rp="What extensions do you wish to include?"
14413         . ./myread
14414         case "$ans" in
14415         none) static_ext=' ' ;;
14416         *) static_ext="$ans" ;;
14417         esac
14418         ;;
14419 esac
14420
14421 set X $dynamic_ext $static_ext $nonxs_ext
14422 shift
14423 extensions="$*"
14424
14425 : Remove build directory name from cppstdin so it can be used from
14426 : either the present location or the final installed location.
14427 echo " "
14428 : Get out of the UU directory to get correct path name.
14429 cd ..
14430 case "$cppstdin" in
14431 `pwd`/cppstdin)
14432         echo "Stripping down cppstdin path name"
14433         cppstdin=cppstdin
14434         ;;
14435 esac
14436 cd UU
14437
14438 : end of configuration questions
14439 echo " "
14440 echo "End of configuration questions."
14441 echo " "
14442
14443 : back to where it started
14444 if test -d ../UU; then
14445         cd ..
14446 fi
14447
14448 : configuration may be patched via a 'config.over' file
14449 if $test -f config.over; then
14450         echo " "
14451         dflt=y
14452         rp='I see a config.over file.  Do you wish to load it?'
14453         . UU/myread
14454         case "$ans" in
14455         n*) echo "OK, I'll ignore it.";;
14456         *)      . ./config.over
14457                 echo "Configuration override changes have been loaded."
14458                 ;;
14459         esac
14460 fi
14461
14462 : in case they want portability, strip down executable paths
14463 case "$d_portable" in
14464 "$define")
14465         echo " "
14466         echo "Stripping down executable paths..." >&4
14467         for file in $loclist $trylist; do
14468                 eval temp=\$$file
14469                 eval $file=`basename $temp`
14470         done
14471         ;;
14472 esac
14473
14474 : create config.sh file
14475 echo " "
14476 echo "Creating config.sh..." >&4
14477 $spitshell <<EOT >config.sh
14478 $startsh
14479 #
14480 # This file was produced by running the Configure script. It holds all the
14481 # definitions figured out by Configure. Should you modify one of these values,
14482 # do not forget to propagate your changes by running "Configure -der". You may
14483 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14484 #
14485
14486 # Package name      : $package
14487 # Source directory  : $src
14488 # Configuration time: $cf_time
14489 # Configured by     : $cf_by
14490 # Target system     : $myuname
14491
14492 Author='$Author'
14493 Date='$Date'
14494 Header='$Header'
14495 Id='$Id'
14496 Locker='$Locker'
14497 Log='$Log'
14498 Mcc='$Mcc'
14499 RCSfile='$RCSfile'
14500 Revision='$Revision'
14501 Source='$Source'
14502 State='$State'
14503 _a='$_a'
14504 _exe='$_exe'
14505 _o='$_o'
14506 afs='$afs'
14507 alignbytes='$alignbytes'
14508 ansi2knr='$ansi2knr'
14509 aphostname='$aphostname'
14510 api_revision='$api_revision'
14511 api_subversion='$api_subversion'
14512 api_version='$api_version'
14513 api_versionstring='$api_versionstring'
14514 ar='$ar'
14515 archlib='$archlib'
14516 archlibexp='$archlibexp'
14517 archname64='$archname64'
14518 archname='$archname'
14519 archobjs='$archobjs'
14520 awk='$awk'
14521 baserev='$baserev'
14522 bash='$bash'
14523 bin='$bin'
14524 bincompat5005='$bincompat5005'
14525 binexp='$binexp'
14526 bison='$bison'
14527 byacc='$byacc'
14528 byteorder='$byteorder'
14529 c='$c'
14530 castflags='$castflags'
14531 cat='$cat'
14532 cc='$cc'
14533 cccdlflags='$cccdlflags'
14534 ccdlflags='$ccdlflags'
14535 ccflags='$ccflags'
14536 ccsymbols='$ccsymbols'
14537 cf_by='$cf_by'
14538 cf_email='$cf_email'
14539 cf_time='$cf_time'
14540 charsize='$charsize'
14541 chgrp='$chgrp'
14542 chmod='$chmod'
14543 chown='$chown'
14544 clocktype='$clocktype'
14545 comm='$comm'
14546 compress='$compress'
14547 contains='$contains'
14548 cp='$cp'
14549 cpio='$cpio'
14550 cpp='$cpp'
14551 cpp_stuff='$cpp_stuff'
14552 cppccsymbols='$cppccsymbols'
14553 cppflags='$cppflags'
14554 cpplast='$cpplast'
14555 cppminus='$cppminus'
14556 cpprun='$cpprun'
14557 cppstdin='$cppstdin'
14558 cppsymbols='$cppsymbols'
14559 crosscompile='$crosscompile'
14560 cryptlib='$cryptlib'
14561 csh='$csh'
14562 d_Gconvert='$d_Gconvert'
14563 d_PRIEldbl='$d_PRIEldbl'
14564 d_PRIFldbl='$d_PRIFldbl'
14565 d_PRIGldbl='$d_PRIGldbl'
14566 d_PRIX64='$d_PRIX64'
14567 d_PRId64='$d_PRId64'
14568 d_PRIeldbl='$d_PRIeldbl'
14569 d_PRIfldbl='$d_PRIfldbl'
14570 d_PRIgldbl='$d_PRIgldbl'
14571 d_PRIi64='$d_PRIi64'
14572 d_PRIo64='$d_PRIo64'
14573 d_PRIu64='$d_PRIu64'
14574 d_PRIx64='$d_PRIx64'
14575 d_access='$d_access'
14576 d_accessx='$d_accessx'
14577 d_alarm='$d_alarm'
14578 d_archlib='$d_archlib'
14579 d_atolf='$d_atolf'
14580 d_atoll='$d_atoll'
14581 d_attribut='$d_attribut'
14582 d_bcmp='$d_bcmp'
14583 d_bcopy='$d_bcopy'
14584 d_bincompat5005='$d_bincompat5005'
14585 d_bsd='$d_bsd'
14586 d_bsdgetpgrp='$d_bsdgetpgrp'
14587 d_bsdsetpgrp='$d_bsdsetpgrp'
14588 d_bzero='$d_bzero'
14589 d_casti32='$d_casti32'
14590 d_castneg='$d_castneg'
14591 d_charvspr='$d_charvspr'
14592 d_chown='$d_chown'
14593 d_chroot='$d_chroot'
14594 d_chsize='$d_chsize'
14595 d_closedir='$d_closedir'
14596 d_const='$d_const'
14597 d_crypt='$d_crypt'
14598 d_csh='$d_csh'
14599 d_cuserid='$d_cuserid'
14600 d_dbl_dig='$d_dbl_dig'
14601 d_difftime='$d_difftime'
14602 d_dirnamlen='$d_dirnamlen'
14603 d_dlerror='$d_dlerror'
14604 d_dlopen='$d_dlopen'
14605 d_dlsymun='$d_dlsymun'
14606 d_dosuid='$d_dosuid'
14607 d_drand48proto='$d_drand48proto'
14608 d_dup2='$d_dup2'
14609 d_eaccess='$d_eaccess'
14610 d_endgrent='$d_endgrent'
14611 d_endhent='$d_endhent'
14612 d_endnent='$d_endnent'
14613 d_endpent='$d_endpent'
14614 d_endpwent='$d_endpwent'
14615 d_endsent='$d_endsent'
14616 d_endspent='$d_endspent'
14617 d_eofnblk='$d_eofnblk'
14618 d_eunice='$d_eunice'
14619 d_fchmod='$d_fchmod'
14620 d_fchown='$d_fchown'
14621 d_fcntl='$d_fcntl'
14622 d_fd_macros='$d_fd_macros'
14623 d_fd_set='$d_fd_set'
14624 d_fds_bits='$d_fds_bits'
14625 d_fgetpos='$d_fgetpos'
14626 d_flexfnam='$d_flexfnam'
14627 d_flock='$d_flock'
14628 d_fork='$d_fork'
14629 d_fpathconf='$d_fpathconf'
14630 d_fpos64_t='$d_fpos64_t'
14631 d_fs_data_s='$d_fs_data_s'
14632 d_fseeko='$d_fseeko'
14633 d_fsetpos='$d_fsetpos'
14634 d_fstatfs='$d_fstatfs'
14635 d_fstatvfs='$d_fstatvfs'
14636 d_ftello='$d_ftello'
14637 d_ftime='$d_ftime'
14638 d_getcwd='$d_getcwd'
14639 d_getgrent='$d_getgrent'
14640 d_getgrps='$d_getgrps'
14641 d_gethbyaddr='$d_gethbyaddr'
14642 d_gethbyname='$d_gethbyname'
14643 d_gethent='$d_gethent'
14644 d_gethname='$d_gethname'
14645 d_gethostprotos='$d_gethostprotos'
14646 d_getlogin='$d_getlogin'
14647 d_getmnt='$d_getmnt'
14648 d_getmntent='$d_getmntent'
14649 d_getnbyaddr='$d_getnbyaddr'
14650 d_getnbyname='$d_getnbyname'
14651 d_getnent='$d_getnent'
14652 d_getnetprotos='$d_getnetprotos'
14653 d_getpbyname='$d_getpbyname'
14654 d_getpbynumber='$d_getpbynumber'
14655 d_getpent='$d_getpent'
14656 d_getpgid='$d_getpgid'
14657 d_getpgrp2='$d_getpgrp2'
14658 d_getpgrp='$d_getpgrp'
14659 d_getppid='$d_getppid'
14660 d_getprior='$d_getprior'
14661 d_getprotoprotos='$d_getprotoprotos'
14662 d_getpwent='$d_getpwent'
14663 d_getsbyname='$d_getsbyname'
14664 d_getsbyport='$d_getsbyport'
14665 d_getsent='$d_getsent'
14666 d_getservprotos='$d_getservprotos'
14667 d_getspent='$d_getspent'
14668 d_getspnam='$d_getspnam'
14669 d_gettimeod='$d_gettimeod'
14670 d_gnulibc='$d_gnulibc'
14671 d_grpasswd='$d_grpasswd'
14672 d_hasmntopt='$d_hasmntopt'
14673 d_htonl='$d_htonl'
14674 d_iconv='$d_iconv'
14675 d_index='$d_index'
14676 d_inetaton='$d_inetaton'
14677 d_int64t='$d_int64t'
14678 d_isascii='$d_isascii'
14679 d_killpg='$d_killpg'
14680 d_lchown='$d_lchown'
14681 d_ldbl_dig='$d_ldbl_dig'
14682 d_link='$d_link'
14683 d_locconv='$d_locconv'
14684 d_lockf='$d_lockf'
14685 d_longdbl='$d_longdbl'
14686 d_longlong='$d_longlong'
14687 d_lstat='$d_lstat'
14688 d_mblen='$d_mblen'
14689 d_mbstowcs='$d_mbstowcs'
14690 d_mbtowc='$d_mbtowc'
14691 d_memchr='$d_memchr'
14692 d_memcmp='$d_memcmp'
14693 d_memcpy='$d_memcpy'
14694 d_memmove='$d_memmove'
14695 d_memset='$d_memset'
14696 d_mkdir='$d_mkdir'
14697 d_mkdtemp='$d_mkdtemp'
14698 d_mkfifo='$d_mkfifo'
14699 d_mkstemp='$d_mkstemp'
14700 d_mkstemps='$d_mkstemps'
14701 d_mktime='$d_mktime'
14702 d_mmap='$d_mmap'
14703 d_mprotect='$d_mprotect'
14704 d_msg='$d_msg'
14705 d_msg_ctrunc='$d_msg_ctrunc'
14706 d_msg_dontroute='$d_msg_dontroute'
14707 d_msg_oob='$d_msg_oob'
14708 d_msg_peek='$d_msg_peek'
14709 d_msg_proxy='$d_msg_proxy'
14710 d_msgctl='$d_msgctl'
14711 d_msgget='$d_msgget'
14712 d_msgrcv='$d_msgrcv'
14713 d_msgsnd='$d_msgsnd'
14714 d_msync='$d_msync'
14715 d_munmap='$d_munmap'
14716 d_mymalloc='$d_mymalloc'
14717 d_nice='$d_nice'
14718 d_nv_preserves_uv='$d_nv_preserves_uv'
14719 d_off64_t='$d_off64_t'
14720 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14721 d_oldpthreads='$d_oldpthreads'
14722 d_oldsock='$d_oldsock'
14723 d_open3='$d_open3'
14724 d_pathconf='$d_pathconf'
14725 d_pause='$d_pause'
14726 d_phostname='$d_phostname'
14727 d_pipe='$d_pipe'
14728 d_poll='$d_poll'
14729 d_portable='$d_portable'
14730 d_pthread_yield='$d_pthread_yield'
14731 d_pwage='$d_pwage'
14732 d_pwchange='$d_pwchange'
14733 d_pwclass='$d_pwclass'
14734 d_pwcomment='$d_pwcomment'
14735 d_pwexpire='$d_pwexpire'
14736 d_pwgecos='$d_pwgecos'
14737 d_pwpasswd='$d_pwpasswd'
14738 d_pwquota='$d_pwquota'
14739 d_quad='$d_quad'
14740 d_readdir='$d_readdir'
14741 d_readlink='$d_readlink'
14742 d_rename='$d_rename'
14743 d_rewinddir='$d_rewinddir'
14744 d_rmdir='$d_rmdir'
14745 d_safebcpy='$d_safebcpy'
14746 d_safemcpy='$d_safemcpy'
14747 d_sanemcmp='$d_sanemcmp'
14748 d_sched_yield='$d_sched_yield'
14749 d_scm_rights='$d_scm_rights'
14750 d_seekdir='$d_seekdir'
14751 d_select='$d_select'
14752 d_sem='$d_sem'
14753 d_semctl='$d_semctl'
14754 d_semctl_semid_ds='$d_semctl_semid_ds'
14755 d_semctl_semun='$d_semctl_semun'
14756 d_semget='$d_semget'
14757 d_semop='$d_semop'
14758 d_setegid='$d_setegid'
14759 d_seteuid='$d_seteuid'
14760 d_setgrent='$d_setgrent'
14761 d_setgrps='$d_setgrps'
14762 d_sethent='$d_sethent'
14763 d_setlinebuf='$d_setlinebuf'
14764 d_setlocale='$d_setlocale'
14765 d_setnent='$d_setnent'
14766 d_setpent='$d_setpent'
14767 d_setpgid='$d_setpgid'
14768 d_setpgrp2='$d_setpgrp2'
14769 d_setpgrp='$d_setpgrp'
14770 d_setprior='$d_setprior'
14771 d_setpwent='$d_setpwent'
14772 d_setregid='$d_setregid'
14773 d_setresgid='$d_setresgid'
14774 d_setresuid='$d_setresuid'
14775 d_setreuid='$d_setreuid'
14776 d_setrgid='$d_setrgid'
14777 d_setruid='$d_setruid'
14778 d_setsent='$d_setsent'
14779 d_setsid='$d_setsid'
14780 d_setspent='$d_setspent'
14781 d_setvbuf='$d_setvbuf'
14782 d_sfio='$d_sfio'
14783 d_shm='$d_shm'
14784 d_shmat='$d_shmat'
14785 d_shmatprototype='$d_shmatprototype'
14786 d_shmctl='$d_shmctl'
14787 d_shmdt='$d_shmdt'
14788 d_shmget='$d_shmget'
14789 d_sigaction='$d_sigaction'
14790 d_sigsetjmp='$d_sigsetjmp'
14791 d_socket='$d_socket'
14792 d_sockpair='$d_sockpair'
14793 d_sqrtl='$d_sqrtl'
14794 d_statblks='$d_statblks'
14795 d_statfs_f_flags='$d_statfs_f_flags'
14796 d_statfs_s='$d_statfs_s'
14797 d_statvfs='$d_statvfs'
14798 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14799 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14800 d_stdio_stream_array='$d_stdio_stream_array'
14801 d_stdiobase='$d_stdiobase'
14802 d_stdstdio='$d_stdstdio'
14803 d_strchr='$d_strchr'
14804 d_strcoll='$d_strcoll'
14805 d_strctcpy='$d_strctcpy'
14806 d_strerrm='$d_strerrm'
14807 d_strerror='$d_strerror'
14808 d_strtod='$d_strtod'
14809 d_strtol='$d_strtol'
14810 d_strtold='$d_strtold'
14811 d_strtoll='$d_strtoll'
14812 d_strtoul='$d_strtoul'
14813 d_strtoull='$d_strtoull'
14814 d_strtouq='$d_strtouq'
14815 d_strxfrm='$d_strxfrm'
14816 d_suidsafe='$d_suidsafe'
14817 d_symlink='$d_symlink'
14818 d_syscall='$d_syscall'
14819 d_sysconf='$d_sysconf'
14820 d_sysernlst='$d_sysernlst'
14821 d_syserrlst='$d_syserrlst'
14822 d_system='$d_system'
14823 d_tcgetpgrp='$d_tcgetpgrp'
14824 d_tcsetpgrp='$d_tcsetpgrp'
14825 d_telldir='$d_telldir'
14826 d_telldirproto='$d_telldirproto'
14827 d_time='$d_time'
14828 d_times='$d_times'
14829 d_truncate='$d_truncate'
14830 d_tzname='$d_tzname'
14831 d_umask='$d_umask'
14832 d_uname='$d_uname'
14833 d_union_semun='$d_union_semun'
14834 d_ustat='$d_ustat'
14835 d_vendorbin='$d_vendorbin'
14836 d_vendorlib='$d_vendorlib'
14837 d_vfork='$d_vfork'
14838 d_void_closedir='$d_void_closedir'
14839 d_voidsig='$d_voidsig'
14840 d_voidtty='$d_voidtty'
14841 d_volatile='$d_volatile'
14842 d_vprintf='$d_vprintf'
14843 d_wait4='$d_wait4'
14844 d_waitpid='$d_waitpid'
14845 d_wcstombs='$d_wcstombs'
14846 d_wctomb='$d_wctomb'
14847 d_xenix='$d_xenix'
14848 date='$date'
14849 db_hashtype='$db_hashtype'
14850 db_prefixtype='$db_prefixtype'
14851 defvoidused='$defvoidused'
14852 direntrytype='$direntrytype'
14853 dlext='$dlext'
14854 dlsrc='$dlsrc'
14855 doublesize='$doublesize'
14856 drand01='$drand01'
14857 dynamic_ext='$dynamic_ext'
14858 eagain='$eagain'
14859 ebcdic='$ebcdic'
14860 echo='$echo'
14861 egrep='$egrep'
14862 emacs='$emacs'
14863 eunicefix='$eunicefix'
14864 exe_ext='$exe_ext'
14865 expr='$expr'
14866 extensions='$extensions'
14867 fflushNULL='$fflushNULL'
14868 fflushall='$fflushall'
14869 find='$find'
14870 firstmakefile='$firstmakefile'
14871 flex='$flex'
14872 fpossize='$fpossize'
14873 fpostype='$fpostype'
14874 freetype='$freetype'
14875 full_ar='$full_ar'
14876 full_csh='$full_csh'
14877 full_sed='$full_sed'
14878 gccversion='$gccversion'
14879 gidformat='$gidformat'
14880 gidsign='$gidsign'
14881 gidsize='$gidsize'
14882 gidtype='$gidtype'
14883 glibpth='$glibpth'
14884 grep='$grep'
14885 groupcat='$groupcat'
14886 groupstype='$groupstype'
14887 gzip='$gzip'
14888 h_fcntl='$h_fcntl'
14889 h_sysfile='$h_sysfile'
14890 hint='$hint'
14891 hostcat='$hostcat'
14892 huge='$huge'
14893 i16size='$i16size'
14894 i16type='$i16type'
14895 i32size='$i32size'
14896 i32type='$i32type'
14897 i64size='$i64size'
14898 i64type='$i64type'
14899 i8size='$i8size'
14900 i8type='$i8type'
14901 i_arpainet='$i_arpainet'
14902 i_bsdioctl='$i_bsdioctl'
14903 i_db='$i_db'
14904 i_dbm='$i_dbm'
14905 i_dirent='$i_dirent'
14906 i_dld='$i_dld'
14907 i_dlfcn='$i_dlfcn'
14908 i_fcntl='$i_fcntl'
14909 i_float='$i_float'
14910 i_gdbm='$i_gdbm'
14911 i_grp='$i_grp'
14912 i_iconv='$i_iconv'
14913 i_inttypes='$i_inttypes'
14914 i_limits='$i_limits'
14915 i_locale='$i_locale'
14916 i_machcthr='$i_machcthr'
14917 i_malloc='$i_malloc'
14918 i_math='$i_math'
14919 i_memory='$i_memory'
14920 i_mntent='$i_mntent'
14921 i_ndbm='$i_ndbm'
14922 i_netdb='$i_netdb'
14923 i_neterrno='$i_neterrno'
14924 i_netinettcp='$i_netinettcp'
14925 i_niin='$i_niin'
14926 i_poll='$i_poll'
14927 i_pthread='$i_pthread'
14928 i_pwd='$i_pwd'
14929 i_rpcsvcdbm='$i_rpcsvcdbm'
14930 i_sfio='$i_sfio'
14931 i_sgtty='$i_sgtty'
14932 i_shadow='$i_shadow'
14933 i_socks='$i_socks'
14934 i_stdarg='$i_stdarg'
14935 i_stddef='$i_stddef'
14936 i_stdlib='$i_stdlib'
14937 i_string='$i_string'
14938 i_sysaccess='$i_sysaccess'
14939 i_sysdir='$i_sysdir'
14940 i_sysfile='$i_sysfile'
14941 i_sysfilio='$i_sysfilio'
14942 i_sysin='$i_sysin'
14943 i_sysioctl='$i_sysioctl'
14944 i_syslog='$i_syslog'
14945 i_sysmman='$i_sysmman'
14946 i_sysmount='$i_sysmount'
14947 i_sysndir='$i_sysndir'
14948 i_sysparam='$i_sysparam'
14949 i_sysresrc='$i_sysresrc'
14950 i_syssecrt='$i_syssecrt'
14951 i_sysselct='$i_sysselct'
14952 i_syssockio='$i_syssockio'
14953 i_sysstat='$i_sysstat'
14954 i_sysstatfs='$i_sysstatfs'
14955 i_sysstatvfs='$i_sysstatvfs'
14956 i_systime='$i_systime'
14957 i_systimek='$i_systimek'
14958 i_systimes='$i_systimes'
14959 i_systypes='$i_systypes'
14960 i_sysuio='$i_sysuio'
14961 i_sysun='$i_sysun'
14962 i_sysvfs='$i_sysvfs'
14963 i_syswait='$i_syswait'
14964 i_termio='$i_termio'
14965 i_termios='$i_termios'
14966 i_time='$i_time'
14967 i_unistd='$i_unistd'
14968 i_ustat='$i_ustat'
14969 i_utime='$i_utime'
14970 i_values='$i_values'
14971 i_varargs='$i_varargs'
14972 i_varhdr='$i_varhdr'
14973 i_vfork='$i_vfork'
14974 ignore_versioned_solibs='$ignore_versioned_solibs'
14975 inc_version_list='$inc_version_list'
14976 inc_version_list_init='$inc_version_list_init'
14977 incpath='$incpath'
14978 inews='$inews'
14979 installarchlib='$installarchlib'
14980 installbin='$installbin'
14981 installman1dir='$installman1dir'
14982 installman3dir='$installman3dir'
14983 installprefix='$installprefix'
14984 installprefixexp='$installprefixexp'
14985 installprivlib='$installprivlib'
14986 installscript='$installscript'
14987 installsitearch='$installsitearch'
14988 installsitebin='$installsitebin'
14989 installsitelib='$installsitelib'
14990 installstyle='$installstyle'
14991 installusrbinperl='$installusrbinperl'
14992 installvendorbin='$installvendorbin'
14993 installvendorlib='$installvendorlib'
14994 intsize='$intsize'
14995 ivdformat='$ivdformat'
14996 ivsize='$ivsize'
14997 ivtype='$ivtype'
14998 known_extensions='$known_extensions'
14999 ksh='$ksh'
15000 large='$large'
15001 ld='$ld'
15002 lddlflags='$lddlflags'
15003 ldflags='$ldflags'
15004 ldlibpthname='$ldlibpthname'
15005 less='$less'
15006 lib_ext='$lib_ext'
15007 libc='$libc'
15008 libperl='$libperl'
15009 libpth='$libpth'
15010 libs='$libs'
15011 libsdirs='$libsdirs'
15012 libsfiles='$libsfiles'
15013 libsfound='$libsfound'
15014 libswanted='$libswanted'
15015 line='$line'
15016 lint='$lint'
15017 lkflags='$lkflags'
15018 ln='$ln'
15019 lns='$lns'
15020 locincpth='$locincpth'
15021 loclibpth='$loclibpth'
15022 longdblsize='$longdblsize'
15023 longlongsize='$longlongsize'
15024 longsize='$longsize'
15025 lp='$lp'
15026 lpr='$lpr'
15027 ls='$ls'
15028 lseeksize='$lseeksize'
15029 lseektype='$lseektype'
15030 mail='$mail'
15031 mailx='$mailx'
15032 make='$make'
15033 make_set_make='$make_set_make'
15034 mallocobj='$mallocobj'
15035 mallocsrc='$mallocsrc'
15036 malloctype='$malloctype'
15037 man1dir='$man1dir'
15038 man1direxp='$man1direxp'
15039 man1ext='$man1ext'
15040 man3dir='$man3dir'
15041 man3direxp='$man3direxp'
15042 man3ext='$man3ext'
15043 medium='$medium'
15044 mips_type='$mips_type'
15045 mkdir='$mkdir'
15046 mmaptype='$mmaptype'
15047 models='$models'
15048 modetype='$modetype'
15049 more='$more'
15050 multiarch='$multiarch'
15051 mv='$mv'
15052 myarchname='$myarchname'
15053 mydomain='$mydomain'
15054 myhostname='$myhostname'
15055 myuname='$myuname'
15056 n='$n'
15057 netdb_hlen_type='$netdb_hlen_type'
15058 netdb_host_type='$netdb_host_type'
15059 netdb_name_type='$netdb_name_type'
15060 netdb_net_type='$netdb_net_type'
15061 nm='$nm'
15062 nm_opt='$nm_opt'
15063 nm_so_opt='$nm_so_opt'
15064 nonxs_ext='$nonxs_ext'
15065 nroff='$nroff'
15066 nvsize='$nvsize'
15067 nvtype='$nvtype'
15068 o_nonblock='$o_nonblock'
15069 obj_ext='$obj_ext'
15070 old_pthread_create_joinable='$old_pthread_create_joinable'
15071 optimize='$optimize'
15072 orderlib='$orderlib'
15073 osname='$osname'
15074 osvers='$osvers'
15075 package='$package'
15076 pager='$pager'
15077 passcat='$passcat'
15078 patchlevel='$patchlevel'
15079 path_sep='$path_sep'
15080 perl='$perl'
15081 perladmin='$perladmin'
15082 perlpath='$perlpath'
15083 pg='$pg'
15084 phostname='$phostname'
15085 pidtype='$pidtype'
15086 plibpth='$plibpth'
15087 pm_apiversion='$pm_apiversion'
15088 pmake='$pmake'
15089 pr='$pr'
15090 prefix='$prefix'
15091 prefixexp='$prefixexp'
15092 privlib='$privlib'
15093 privlibexp='$privlibexp'
15094 prototype='$prototype'
15095 ptrsize='$ptrsize'
15096 quadkind='$quadkind'
15097 quadtype='$quadtype'
15098 randbits='$randbits'
15099 randfunc='$randfunc'
15100 randseedtype='$randseedtype'
15101 ranlib='$ranlib'
15102 rd_nodata='$rd_nodata'
15103 rm='$rm'
15104 rmail='$rmail'
15105 runnm='$runnm'
15106 sPRIEldbl='$sPRIEldbl'
15107 sPRIFldbl='$sPRIFldbl'
15108 sPRIGldbl='$sPRIGldbl'
15109 sPRIX64='$sPRIX64'
15110 sPRId64='$sPRId64'
15111 sPRIeldbl='$sPRIeldbl'
15112 sPRIfldbl='$sPRIfldbl'
15113 sPRIgldbl='$sPRIgldbl'
15114 sPRIi64='$sPRIi64'
15115 sPRIo64='$sPRIo64'
15116 sPRIu64='$sPRIu64'
15117 sPRIx64='$sPRIx64'
15118 sched_yield='$sched_yield'
15119 scriptdir='$scriptdir'
15120 scriptdirexp='$scriptdirexp'
15121 sed='$sed'
15122 seedfunc='$seedfunc'
15123 selectminbits='$selectminbits'
15124 selecttype='$selecttype'
15125 sendmail='$sendmail'
15126 sh='$sh'
15127 shar='$shar'
15128 sharpbang='$sharpbang'
15129 shmattype='$shmattype'
15130 shortsize='$shortsize'
15131 shrpenv='$shrpenv'
15132 shsharp='$shsharp'
15133 sig_count='$sig_count'
15134 sig_name='$sig_name'
15135 sig_name_init='$sig_name_init'
15136 sig_num='$sig_num'
15137 sig_num_init='$sig_num_init'
15138 signal_t='$signal_t'
15139 sitearch='$sitearch'
15140 sitearchexp='$sitearchexp'
15141 sitebin='$sitebin'
15142 sitebinexp='$sitebinexp'
15143 sitelib='$sitelib'
15144 sitelibexp='$sitelibexp'
15145 siteprefix='$siteprefix'
15146 siteprefixexp='$siteprefixexp'
15147 sizetype='$sizetype'
15148 sleep='$sleep'
15149 smail='$smail'
15150 small='$small'
15151 so='$so'
15152 sockethdr='$sockethdr'
15153 socketlib='$socketlib'
15154 sort='$sort'
15155 spackage='$spackage'
15156 spitshell='$spitshell'
15157 split='$split'
15158 src='$src'
15159 ssizetype='$ssizetype'
15160 startperl='$startperl'
15161 startsh='$startsh'
15162 static_ext='$static_ext'
15163 stdchar='$stdchar'
15164 stdio_base='$stdio_base'
15165 stdio_bufsiz='$stdio_bufsiz'
15166 stdio_cnt='$stdio_cnt'
15167 stdio_filbuf='$stdio_filbuf'
15168 stdio_ptr='$stdio_ptr'
15169 stdio_stream_array='$stdio_stream_array'
15170 strings='$strings'
15171 submit='$submit'
15172 subversion='$subversion'
15173 sysman='$sysman'
15174 tail='$tail'
15175 tar='$tar'
15176 tbl='$tbl'
15177 tee='$tee'
15178 test='$test'
15179 timeincl='$timeincl'
15180 timetype='$timetype'
15181 touch='$touch'
15182 tr='$tr'
15183 trnl='$trnl'
15184 troff='$troff'
15185 u16size='$u16size'
15186 u16type='$u16type'
15187 u32size='$u32size'
15188 u32type='$u32type'
15189 u64size='$u64size'
15190 u64type='$u64type'
15191 u8size='$u8size'
15192 u8type='$u8type'
15193 uidformat='$uidformat'
15194 uidsign='$uidsign'
15195 uidsize='$uidsize'
15196 uidtype='$uidtype'
15197 uname='$uname'
15198 uniq='$uniq'
15199 uquadtype='$uquadtype'
15200 use5005threads='$use5005threads'
15201 use64bits='$use64bits'
15202 usedl='$usedl'
15203 useithreads='$useithreads'
15204 uselargefiles='$uselargefiles'
15205 uselongdouble='$uselongdouble'
15206 usemorebits='$usemorebits'
15207 usemultiplicity='$usemultiplicity'
15208 usemymalloc='$usemymalloc'
15209 usenm='$usenm'
15210 useopcode='$useopcode'
15211 useperlio='$useperlio'
15212 useposix='$useposix'
15213 usesfio='$usesfio'
15214 useshrplib='$useshrplib'
15215 usesocks='$usesocks'
15216 usethreads='$usethreads'
15217 usevendorprefix='$usevendorprefix'
15218 usevfork='$usevfork'
15219 usrinc='$usrinc'
15220 uuname='$uuname'
15221 uvoformat='$uvoformat'
15222 uvsize='$uvsize'
15223 uvtype='$uvtype'
15224 uvuformat='$uvuformat'
15225 uvxformat='$uvxformat'
15226 vendorbin='$vendorbin'
15227 vendorbinexp='$vendorbinexp'
15228 vendorlib='$vendorlib'
15229 vendorlibexp='$vendorlibexp'
15230 vendorprefix='$vendorprefix'
15231 vendorprefixexp='$vendorprefixexp'
15232 version='$version'
15233 vi='$vi'
15234 voidflags='$voidflags'
15235 xlibpth='$xlibpth'
15236 xs_apiversion='$xs_apiversion'
15237 zcat='$zcat'
15238 zip='$zip'
15239 EOT
15240
15241 : Add in command line options if available
15242 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15243
15244 : add special variables
15245 $test -f $src/patchlevel.h && \
15246 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15247 echo "CONFIGDOTSH=true" >>config.sh
15248
15249 : propagate old symbols
15250 if $test -f UU/config.sh; then
15251         <UU/config.sh sort | uniq >UU/oldconfig.sh
15252         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15253         sort | uniq -u >UU/oldsyms
15254         set X `cat UU/oldsyms`
15255         shift
15256         case $# in
15257         0) ;;
15258         *)
15259                 cat <<EOM
15260 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15261 EOM
15262                 echo "# Variables propagated from previous config.sh file." >>config.sh
15263                 for sym in `cat UU/oldsyms`; do
15264                         echo "    Propagating $hint variable "'$'"$sym..."
15265                         eval 'tmp="$'"${sym}"'"'
15266                         echo "$tmp" | \
15267                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15268                 done
15269                 ;;
15270         esac
15271 fi
15272
15273 : Finish up by extracting the .SH files
15274 case "$alldone" in
15275 exit)
15276         $rm -rf UU
15277         echo "Done."
15278         exit 0
15279         ;;
15280 cont)
15281         ;;
15282 '')
15283         dflt=''
15284         nostick=true
15285         $cat <<EOM
15286
15287 If you'd like to make any changes to the config.sh file before I begin
15288 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15289
15290 EOM
15291         rp="Press return or use a shell escape to edit config.sh:"
15292         . UU/myread
15293         nostick=''
15294         case "$ans" in
15295         '') ;;
15296         *) : in case they cannot read
15297                 sh 1>&4 -c "$ans";;
15298         esac
15299         ;;
15300 esac
15301
15302 : if this fails, just run all the .SH files by hand
15303 . ./config.sh
15304
15305 echo " "
15306 exec 1>&4
15307 . ./UU/extract
15308
15309 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15310         dflt=y
15311         case "$silent" in
15312         true) ;;
15313         *)
15314                 $cat <<EOM
15315
15316 Now you need to generate make dependencies by running "$make depend".
15317 You might prefer to run it in background: "$make depend > makedepend.out &"
15318 It can take a while, so you might not want to run it right now.
15319
15320 EOM
15321                 ;;
15322         esac
15323         rp="Run $make depend now?"
15324         . UU/myread
15325         case "$ans" in
15326         y*)
15327                 $make depend && echo "Now you must run a $make."
15328                 ;;
15329         *)
15330                 echo "You must run '$make depend' then '$make'."
15331                 ;;
15332         esac
15333 elif test -f [Mm]akefile; then
15334         echo " "
15335         echo "Now you must run a $make."
15336 else
15337         echo "Done."
15338 fi
15339
15340 if $test -f Policy.sh; then
15341     $cat <<EOM
15342
15343 If you compile $package on a different machine or from a different object
15344 directory, copy the Policy.sh file from this object directory to the
15345 new one before you run Configure -- this will help you with most of
15346 the policy defaults.
15347
15348 EOM
15349 fi
15350 if $test -f config.msg; then
15351     echo "Hmm.  I also noted the following information while running:"
15352     echo " "
15353     $cat config.msg >&4
15354     $rm -f config.msg
15355 fi
15356 $rm -f kit*isdone ark*isdone
15357 $rm -rf UU
15358
15359 : End of Configure
15360