Fixes for building on HP-UX using gcc from Daniel S. Lewart.
[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 29 02:20:39 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_fpos64_t=''
358 d_fs_data_s=''
359 d_fseeko=''
360 d_fsetpos=''
361 d_fstatfs=''
362 d_ftello=''
363 d_ftime=''
364 d_gettimeod=''
365 d_Gconvert=''
366 d_getcwd=''
367 d_getfsstat=''
368 d_getgrent=''
369 d_getgrps=''
370 d_gethbyaddr=''
371 d_gethbyname=''
372 d_gethent=''
373 aphostname=''
374 d_gethname=''
375 d_phostname=''
376 d_uname=''
377 d_gethostprotos=''
378 d_getlogin=''
379 d_getmnt=''
380 d_getmntent=''
381 d_getnbyaddr=''
382 d_getnbyname=''
383 d_getnent=''
384 d_getnetprotos=''
385 d_getpent=''
386 d_getpgid=''
387 d_getpgrp2=''
388 d_bsdgetpgrp=''
389 d_getpgrp=''
390 d_getppid=''
391 d_getprior=''
392 d_getpbyname=''
393 d_getpbynumber=''
394 d_getprotoprotos=''
395 d_getpwent=''
396 d_getsent=''
397 d_getservprotos=''
398 d_getspent=''
399 d_getspnam=''
400 d_getsbyname=''
401 d_getsbyport=''
402 d_gnulibc=''
403 d_hasmntopt=''
404 d_htonl=''
405 d_iconv=''
406 d_inetaton=''
407 d_int64_t=''
408 d_isascii=''
409 d_killpg=''
410 d_lchown=''
411 d_ldbl_dig=''
412 d_link=''
413 d_locconv=''
414 d_lockf=''
415 d_longdbl=''
416 longdblsize=''
417 d_longlong=''
418 longlongsize=''
419 d_lseekproto=''
420 d_lstat=''
421 d_madvise=''
422 d_mblen=''
423 d_mbstowcs=''
424 d_mbtowc=''
425 d_memchr=''
426 d_memcmp=''
427 d_memcpy=''
428 d_memmove=''
429 d_memset=''
430 d_mkdir=''
431 d_mkdtemp=''
432 d_mkfifo=''
433 d_mkstemp=''
434 d_mkstemps=''
435 d_mktime=''
436 d_mmap=''
437 mmaptype=''
438 d_mprotect=''
439 d_msg=''
440 d_msgctl=''
441 d_msgget=''
442 d_msgrcv=''
443 d_msgsnd=''
444 d_msync=''
445 d_munmap=''
446 d_nice=''
447 d_off64_t=''
448 d_open3=''
449 d_fpathconf=''
450 d_pathconf=''
451 d_pause=''
452 d_pipe=''
453 d_poll=''
454 d_portable=''
455 d_old_pthread_create_joinable=''
456 old_pthread_create_joinable=''
457 d_pthread_yield=''
458 d_sched_yield=''
459 sched_yield=''
460 d_readdir=''
461 d_rewinddir=''
462 d_seekdir=''
463 d_telldir=''
464 d_readlink=''
465 d_rename=''
466 d_rmdir=''
467 d_safebcpy=''
468 d_safemcpy=''
469 d_sanemcmp=''
470 d_select=''
471 d_sem=''
472 d_semctl=''
473 d_semget=''
474 d_semop=''
475 d_setegid=''
476 d_seteuid=''
477 d_setgrent=''
478 d_setgrps=''
479 d_sethent=''
480 d_setlinebuf=''
481 d_setlocale=''
482 d_setnent=''
483 d_setpent=''
484 d_setpgid=''
485 d_setpgrp2=''
486 d_bsdsetpgrp=''
487 d_setpgrp=''
488 d_setprior=''
489 d_setpwent=''
490 d_setregid=''
491 d_setresgid=''
492 d_setresuid=''
493 d_setreuid=''
494 d_setrgid=''
495 d_setruid=''
496 d_setsent=''
497 d_setsid=''
498 d_setspent=''
499 d_setvbuf=''
500 d_sfio=''
501 usesfio=''
502 d_shm=''
503 d_shmat=''
504 d_shmatprototype=''
505 shmattype=''
506 d_shmctl=''
507 d_shmdt=''
508 d_shmget=''
509 d_sigaction=''
510 d_sigsetjmp=''
511 d_msg_ctrunc=''
512 d_msg_dontroute=''
513 d_msg_oob=''
514 d_msg_peek=''
515 d_msg_proxy=''
516 d_oldsock=''
517 d_scm_rights=''
518 d_socket=''
519 d_sockpair=''
520 sockethdr=''
521 socketlib=''
522 d_socklen_t=''
523 d_sqrtl=''
524 d_statblks=''
525 d_statfs_f_flags=''
526 d_statfs_s=''
527 d_fstatvfs=''
528 d_statvfs=''
529 d_stdio_cnt_lval=''
530 d_stdio_ptr_lval=''
531 d_stdiobase=''
532 d_stdstdio=''
533 stdio_base=''
534 stdio_bufsiz=''
535 stdio_cnt=''
536 stdio_filbuf=''
537 stdio_ptr=''
538 d_index=''
539 d_strchr=''
540 d_strcoll=''
541 d_strctcpy=''
542 d_strerrm=''
543 d_strerror=''
544 d_sysernlst=''
545 d_syserrlst=''
546 d_strtod=''
547 d_strtol=''
548 d_strtold=''
549 d_strtoll=''
550 d_strtoul=''
551 d_strtoull=''
552 d_strtouq=''
553 d_strxfrm=''
554 d_symlink=''
555 d_syscall=''
556 d_sysconf=''
557 d_system=''
558 d_tcgetpgrp=''
559 d_tcsetpgrp=''
560 d_telldirproto=''
561 d_time=''
562 timetype=''
563 clocktype=''
564 d_times=''
565 d_truncate=''
566 d_tzname=''
567 d_umask=''
568 d_semctl_semid_ds=''
569 d_semctl_semun=''
570 d_union_semun=''
571 d_ustat=''
572 d_vfork=''
573 usevfork=''
574 d_voidsig=''
575 signal_t=''
576 d_volatile=''
577 d_charvspr=''
578 d_vprintf=''
579 d_wait4=''
580 d_waitpid=''
581 d_wcstombs=''
582 d_wctomb=''
583 dlext=''
584 cccdlflags=''
585 ccdlflags=''
586 dlsrc=''
587 ld=''
588 lddlflags=''
589 usedl=''
590 doublesize=''
591 ebcdic=''
592 fflushNULL=''
593 fflushall=''
594 fpossize=''
595 fpostype=''
596 gidformat=''
597 gidsign=''
598 gidsize=''
599 gidtype=''
600 groupstype=''
601 h_fcntl=''
602 h_sysfile=''
603 i_arpainet=''
604 db_hashtype=''
605 db_prefixtype=''
606 i_db=''
607 i_dbm=''
608 i_rpcsvcdbm=''
609 d_dirnamlen=''
610 direntrytype=''
611 i_dirent=''
612 i_dld=''
613 i_dlfcn=''
614 i_fcntl=''
615 i_float=''
616 i_gdbm=''
617 d_grpasswd=''
618 i_grp=''
619 i_iconv=''
620 i_inttypes=''
621 i_limits=''
622 i_locale=''
623 i_machcthr=''
624 i_malloc=''
625 i_math=''
626 i_memory=''
627 i_mntent=''
628 i_ndbm=''
629 i_netdb=''
630 i_neterrno=''
631 i_netinettcp=''
632 i_niin=''
633 i_sysin=''
634 i_poll=''
635 i_pthread=''
636 d_pwage=''
637 d_pwchange=''
638 d_pwclass=''
639 d_pwcomment=''
640 d_pwexpire=''
641 d_pwgecos=''
642 d_pwpasswd=''
643 d_pwquota=''
644 i_pwd=''
645 i_sfio=''
646 i_shadow=''
647 i_socks=''
648 i_stddef=''
649 i_stdlib=''
650 i_string=''
651 strings=''
652 i_sysaccess=''
653 i_sysdir=''
654 i_sysfile=''
655 d_voidtty=''
656 i_bsdioctl=''
657 i_sysfilio=''
658 i_sysioctl=''
659 i_syssockio=''
660 i_syslog=''
661 i_sysmman=''
662 i_sysmode=''
663 i_sysmount=''
664 i_sysndir=''
665 i_sysparam=''
666 i_sysresrc=''
667 i_syssecrt=''
668 i_sysselct=''
669 i_sysstat=''
670 i_sysstatfs=''
671 i_sysstatvfs=''
672 i_systimes=''
673 i_systypes=''
674 i_sysuio=''
675 i_sysun=''
676 i_sysutsname=''
677 i_sysvfs=''
678 i_syswait=''
679 i_sgtty=''
680 i_termio=''
681 i_termios=''
682 i_systime=''
683 i_systimek=''
684 i_time=''
685 timeincl=''
686 i_unistd=''
687 i_ustat=''
688 i_utime=''
689 i_values=''
690 i_stdarg=''
691 i_varargs=''
692 i_varhdr=''
693 i_vfork=''
694 inc_version_list=''
695 inc_version_list_init=''
696 installprefix=''
697 installprefixexp=''
698 installstyle=''
699 installusrbinperl=''
700 intsize=''
701 longsize=''
702 shortsize=''
703 libc=''
704 ldlibpthname=''
705 libperl=''
706 shrpenv=''
707 useshrplib=''
708 glibpth=''
709 libpth=''
710 loclibpth=''
711 plibpth=''
712 xlibpth=''
713 ignore_versioned_solibs=''
714 libs=''
715 libsdirs=''
716 libsfiles=''
717 libsfound=''
718 libspath=''
719 lns=''
720 d_PRIEldbl=''
721 d_PRIFldbl=''
722 d_PRIGldbl=''
723 d_PRIeldbl=''
724 d_PRIfldbl=''
725 d_PRIgldbl=''
726 sPRIEldbl=''
727 sPRIFldbl=''
728 sPRIGldbl=''
729 sPRIeldbl=''
730 sPRIfldbl=''
731 sPRIgldbl=''
732 lseeksize=''
733 lseektype=''
734 make_set_make=''
735 d_mymalloc=''
736 freetype=''
737 mallocobj=''
738 mallocsrc=''
739 malloctype=''
740 usemymalloc=''
741 installman1dir=''
742 man1dir=''
743 man1direxp=''
744 man1ext=''
745 installman3dir=''
746 man3dir=''
747 man3direxp=''
748 man3ext=''
749 huge=''
750 large=''
751 medium=''
752 models=''
753 small=''
754 split=''
755 modetype=''
756 multiarch=''
757 mydomain=''
758 myhostname=''
759 phostname=''
760 c=''
761 n=''
762 d_eofnblk=''
763 eagain=''
764 o_nonblock=''
765 rd_nodata=''
766 netdb_hlen_type=''
767 netdb_host_type=''
768 netdb_name_type=''
769 netdb_net_type=''
770 groupcat=''
771 hostcat=''
772 passcat=''
773 orderlib=''
774 ranlib=''
775 package=''
776 spackage=''
777 pager=''
778 api_revision=''
779 api_subversion=''
780 api_version=''
781 api_versionstring=''
782 patchlevel=''
783 revision=''
784 subversion=''
785 version=''
786 perl5=''
787 perladmin=''
788 perlpath=''
789 d_nv_preserves_uv=''
790 i16size=''
791 i16type=''
792 i32size=''
793 i32type=''
794 i64size=''
795 i64type=''
796 i8size=''
797 i8type=''
798 ivsize=''
799 ivtype=''
800 nvsize=''
801 nvtype=''
802 u16size=''
803 u16type=''
804 u32size=''
805 u32type=''
806 u64size=''
807 u64type=''
808 u8size=''
809 u8type=''
810 uvsize=''
811 uvtype=''
812 ivdformat=''
813 uvoformat=''
814 uvuformat=''
815 uvxformat=''
816 pidtype=''
817 prefix=''
818 prefixexp=''
819 installprivlib=''
820 privlib=''
821 privlibexp=''
822 prototype=''
823 ptrsize=''
824 d_PRIX64=''
825 d_PRId64=''
826 d_PRIi64=''
827 d_PRIo64=''
828 d_PRIu64=''
829 d_PRIx64=''
830 sPRIX64=''
831 sPRId64=''
832 sPRIi64=''
833 sPRIo64=''
834 sPRIu64=''
835 sPRIx64=''
836 d_quad=''
837 quadkind=''
838 quadtype=''
839 uquadtype=''
840 drand01=''
841 randbits=''
842 randfunc=''
843 randseedtype=''
844 seedfunc=''
845 installscript=''
846 scriptdir=''
847 scriptdirexp=''
848 selectminbits=''
849 selecttype=''
850 sh=''
851 sig_count=''
852 sig_name=''
853 sig_name_init=''
854 sig_num=''
855 sig_num_init=''
856 installsitearch=''
857 sitearch=''
858 sitearchexp=''
859 installsitebin=''
860 sitebin=''
861 sitebinexp=''
862 installsitelib=''
863 sitelib=''
864 sitelibexp=''
865 siteprefix=''
866 siteprefixexp=''
867 sizetype=''
868 so=''
869 socksizetype=''
870 sharpbang=''
871 shsharp=''
872 spitshell=''
873 src=''
874 ssizetype=''
875 startperl=''
876 startsh=''
877 stdchar=''
878 d_stdio_stream_array=''
879 stdio_stream_array=''
880 sysman=''
881 trnl=''
882 uidformat=''
883 uidsign=''
884 uidsize=''
885 uidtype=''
886 archname64=''
887 use64bitall=''
888 use64bitint=''
889 uselargefiles=''
890 uselongdouble=''
891 usemorebits=''
892 usemultiplicity=''
893 nm_opt=''
894 nm_so_opt=''
895 runnm=''
896 usenm=''
897 useperlio=''
898 usesocks=''
899 d_oldpthreads=''
900 use5005threads=''
901 useithreads=''
902 usethreads=''
903 incpath=''
904 mips_type=''
905 usrinc=''
906 d_vendorbin=''
907 installvendorbin=''
908 vendorbin=''
909 vendorbinexp=''
910 d_vendorlib=''
911 installvendorlib=''
912 vendorlib=''
913 vendorlibexp=''
914 usevendorprefix=''
915 vendorprefix=''
916 vendorprefixexp=''
917 defvoidused=''
918 voidflags=''
919 pm_apiversion=''
920 xs_apiversion=''
921 CONFIG=''
922
923 define='define'
924 undef='undef'
925 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
926 rmlist=''
927
928 : We must find out about Eunice early
929 eunicefix=':'
930 if test -f /etc/unixtovms; then
931         eunicefix=/etc/unixtovms
932 fi
933 if test -f /etc/unixtovms.exe; then
934         eunicefix=/etc/unixtovms.exe
935 fi
936
937 i_whoami=''
938 : set useposix=false in your hint file to disable the POSIX extension.
939 useposix=true
940 : set useopcode=false in your hint file to disable the Opcode extension.
941 useopcode=true
942 : Trailing extension.  Override this in a hint file, if needed.
943 _exe=''
944 : Extra object files, if any, needed on this platform.
945 archobjs=''
946 : Possible local include directories to search.
947 : Set locincpth to "" in a hint file to defeat local include searches.
948 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
949 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
950 :
951 : no include file wanted by default
952 inclwanted=''
953
954 groupstype=''
955 : change the next line if compiling for Xenix/286 on Xenix/386
956 xlibpth='/usr/lib/386 /lib/386'
957 : Possible local library directories to search.
958 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
959 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
960
961 : general looking path for locating libraries
962 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
963 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
964 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
965 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
966 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
967
968 : Private path used by Configure to find libraries.  Its value
969 : is prepended to libpth. This variable takes care of special
970 : machines, like the mips.  Usually, it should be empty.
971 plibpth=''
972
973 : default library list
974 libswanted=''
975 : some systems want to use only the non-versioned libso:s
976 ignore_versioned_solibs=''
977 : set usemultiplicity on the Configure command line to enable multiplicity.
978 : set usesocks on the Configure command line to enable socks.
979 : set usethreads on the Configure command line to enable threads.
980 : full support for void wanted by default
981 defvoidused=15
982
983 : List of libraries we want.
984 : If anyone needs -lnet, put it in a hint file.
985 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
986 libswanted="$libswanted dld ld sun m c cposix posix"
987 libswanted="$libswanted ndir dir crypt sec"
988 libswanted="$libswanted ucb bsd BSD PW x"
989 : We probably want to search /usr/shlib before most other libraries.
990 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
991 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
992 glibpth="/usr/shlib $glibpth"
993 : Do not use vfork unless overridden by a hint file.
994 usevfork=false
995
996 : Find the basic shell for Bourne shell scripts
997 case "$sh" in
998 '')
999         case "$SYSTYPE" in
1000         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1001         *) xxx='/bin/sh';;
1002         esac
1003         if test -f "$xxx"; then
1004                 sh="$xxx"
1005         else
1006                 : Build up a list and do a single loop so we can 'break' out.
1007                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1008                 for xxx in sh bash ksh pdksh ash; do
1009                         for p in $pth; do
1010                                 try="$try ${p}/${xxx}"
1011                         done
1012                 done
1013                 for xxx in $try; do
1014                         if test -f "$xxx"; then
1015                                 sh="$xxx";
1016                                 break
1017                         elif test -f "$xxx.exe"; then
1018                                 sh="$xxx";
1019                                 break
1020                         fi
1021                 done
1022         fi
1023         ;;
1024 esac
1025
1026 case "$sh" in
1027 '')     cat <<EOM >&2
1028 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1029
1030 Usually it's in /bin/sh.  How did you even get this far?
1031 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1032 we'll try to straighten this all out.
1033 EOM
1034         exit 1
1035         ;;
1036 esac
1037
1038 : see if sh knows # comments
1039 if `$sh -c '#' >/dev/null 2>&1`; then
1040         shsharp=true
1041         spitshell=cat
1042         xcat=/bin/cat
1043         test -f $xcat || xcat=/usr/bin/cat
1044         echo "#!$xcat" >try
1045         $eunicefix try
1046         chmod +x try
1047         ./try > today
1048         if test -s today; then
1049                 sharpbang='#!'
1050         else
1051                 echo "#! $xcat" > try
1052                 $eunicefix try
1053                 chmod +x try
1054                 ./try > today
1055                 if test -s today; then
1056                         sharpbang='#! '
1057                 else
1058                         sharpbang=': use '
1059                 fi
1060         fi
1061 else
1062         echo " "
1063         echo "Your $sh doesn't grok # comments--I will strip them later on."
1064         shsharp=false
1065         cd ..
1066         echo "exec grep -v '^[  ]*#'" >spitshell
1067         chmod +x spitshell
1068         $eunicefix spitshell
1069         spitshell=`pwd`/spitshell
1070         cd UU
1071         echo "I presume that if # doesn't work, #! won't work either!"
1072         sharpbang=': use '
1073 fi
1074 rm -f try today
1075
1076 : figure out how to guarantee sh startup
1077 case "$startsh" in
1078 '') startsh=${sharpbang}${sh} ;;
1079 *)
1080 esac
1081 cat >try <<EOSS
1082 $startsh
1083 set abc
1084 test "$?abc" != 1
1085 EOSS
1086
1087 chmod +x try
1088 $eunicefix try
1089 if ./try; then
1090         : echo "Yup, it does."
1091 else
1092         echo "Hmm... '$startsh' does not guarantee sh startup..."
1093         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1094 fi
1095 rm -f try
1096
1097
1098 : Save command line options in file UU/cmdline.opt for later use in
1099 : generating config.sh.
1100 cat > cmdline.opt <<EOSH
1101 # Configure command line arguments.
1102 config_arg0='$0'
1103 config_args='$*'
1104 config_argc=$#
1105 EOSH
1106 argn=1
1107 for arg in "$@"; do
1108         cat >>cmdline.opt <<EOSH
1109 config_arg$argn='$arg'
1110 EOSH
1111         argn=`expr $argn + 1`
1112 done
1113
1114 : produce awk script to parse command line options
1115 cat >options.awk <<'EOF'
1116 BEGIN {
1117         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1118
1119         len = length(optstr);
1120         for (i = 1; i <= len; i++) {
1121                 c = substr(optstr, i, 1);
1122                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1123                 if (a == ":") {
1124                         arg[c] = 1;
1125                         i++;
1126                 }
1127                 opt[c] = 1;
1128         }
1129 }
1130 {
1131         expect = 0;
1132         str = $0;
1133         if (substr(str, 1, 1) != "-") {
1134                 printf("'%s'\n", str);
1135                 next;
1136         }
1137         len = length($0);
1138         for (i = 2; i <= len; i++) {
1139                 c = substr(str, i, 1);
1140                 if (!opt[c]) {
1141                         printf("-%s\n", substr(str, i));
1142                         next;
1143                 }
1144                 printf("-%s\n", c);
1145                 if (arg[c]) {
1146                         if (i < len)
1147                                 printf("'%s'\n", substr(str, i + 1));
1148                         else
1149                                 expect = 1;
1150                         next;
1151                 }
1152         }
1153 }
1154 END {
1155         if (expect)
1156                 print "?";
1157 }
1158 EOF
1159
1160 : process the command line options
1161 set X `for arg in "$@"; do echo "X$arg"; done |
1162         sed -e s/X// | awk -f options.awk`
1163 eval "set $*"
1164 shift
1165 rm -f options.awk
1166
1167 : set up default values
1168 fastread=''
1169 reuseval=false
1170 config_sh=''
1171 alldone=''
1172 error=''
1173 silent=''
1174 extractsh=''
1175 override=''
1176 knowitall=''
1177 rm -f optdef.sh posthint.sh
1178 cat >optdef.sh <<EOS
1179 $startsh
1180 EOS
1181
1182
1183 : option parsing
1184 while test $# -gt 0; do
1185         case "$1" in
1186         -d) shift; fastread=yes;;
1187         -e) shift; alldone=cont;;
1188         -f)
1189                 shift
1190                 cd ..
1191                 if test -r "$1"; then
1192                         config_sh="$1"
1193                 else
1194                         echo "$me: cannot read config file $1." >&2
1195                         error=true
1196                 fi
1197                 cd UU
1198                 shift;;
1199         -h) shift; error=true;;
1200         -r) shift; reuseval=true;;
1201         -s) shift; silent=true; realsilent=true;;
1202         -E) shift; alldone=exit;;
1203         -K) shift; knowitall=true;;
1204         -O) shift; override=true;;
1205         -S) shift; silent=true; extractsh=true;;
1206         -D)
1207                 shift
1208                 case "$1" in
1209                 *=)
1210                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1211                         echo "$me: ignoring -D $1" >&2
1212                         ;;
1213                 *=*) echo "$1" | \
1214                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1215                 *) echo "$1='define'" >> optdef.sh;;
1216                 esac
1217                 shift
1218                 ;;
1219         -U)
1220                 shift
1221                 case "$1" in
1222                 *=) echo "$1" >> optdef.sh;;
1223                 *=*)
1224                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1225                         echo "$me: ignoring -U $1" >&2
1226                         ;;
1227                 *) echo "$1='undef'" >> optdef.sh;;
1228                 esac
1229                 shift
1230                 ;;
1231         -A)
1232             shift
1233             xxx=''
1234             yyy="$1"
1235             zzz=''
1236             uuu=undef
1237             case "$yyy" in
1238             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1239                  case "$zzz" in
1240                  *:*) zzz='' ;;
1241                  *)   xxx=append
1242                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1243                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1244                  esac
1245                  ;;
1246             esac
1247             case "$xxx" in
1248             '')  case "$yyy" in
1249                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1250                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1251                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1252                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1253                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1254                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1255                  esac
1256                  ;;       
1257             esac
1258             case "$xxx" in
1259             append)
1260                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1261             clear)
1262                 echo "$yyy=''"                  >> posthint.sh ;;
1263             define)
1264                 case "$zzz" in
1265                 '') zzz=define ;;
1266                 esac
1267                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1268             eval)
1269                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1270             prepend)
1271                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1272             undef)
1273                 case "$zzz" in
1274                 '') zzz="$uuu" ;;
1275                 esac
1276                 echo "$yyy=$zzz"                >> posthint.sh ;;
1277             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1278             esac
1279             shift
1280             ;;
1281         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1282             exit 0;;
1283         --) break;;
1284         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1285         *) break;;
1286         esac
1287 done
1288
1289 case "$error" in
1290 true)
1291         cat >&2 <<EOM
1292 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1293                  [-U symbol] [-U symbol=] [-A command:symbol...]
1294   -d : use defaults for all answers.
1295   -e : go on without questioning past the production of config.sh.
1296   -f : specify an alternate default configuration file.
1297   -h : print this help message and exit (with an error status).
1298   -r : reuse C symbols value if possible (skips costly nm extraction).
1299   -s : silent mode, only echoes questions and essential information.
1300   -D : define symbol to have some value:
1301          -D symbol         symbol gets the value 'define'
1302          -D symbol=value   symbol gets the value 'value'
1303   -E : stop at the end of questions, after having produced config.sh.
1304   -K : do not use unless you know what you are doing.
1305   -O : let -D and -U override definitions from loaded configuration file.
1306   -S : perform variable substitutions on all .SH files (can mix with -f)
1307   -U : undefine symbol:
1308          -U symbol    symbol gets the value 'undef'
1309          -U symbol=   symbol gets completely empty
1310   -A : manipulate symbol after the platform specific hints have been applied:
1311          -A symbol=value                append " "value to symbol
1312          -A append:symbol=value         append value to symbol
1313          -A define:symbol=value         define symbol to have value
1314          -A clear:symbol                define symbol to be ''
1315          -A define:symbol               define symbol to be 'define'
1316          -A eval:symbol=value           define symbol to be eval of value
1317          -A prepend:symbol=value        prepend value to symbol
1318          -A undef:symbol                define symbol to be 'undef'
1319          -A undef:symbol=               define symbol to be ''
1320   -V : print version number and exit (with a zero status).
1321 EOM
1322         exit 1
1323         ;;
1324 esac
1325
1326 : Sanity checks
1327 case "$fastread$alldone" in
1328 yescont|yesexit) ;;
1329 *)
1330         if test ! -t 0; then
1331                 echo "Say 'sh Configure', not 'sh <Configure'"
1332                 exit 1
1333         fi
1334         ;;
1335 esac
1336
1337 exec 4>&1
1338 case "$silent" in
1339 true) exec 1>/dev/null;;
1340 esac
1341
1342 : run the defines and the undefines, if any, but leave the file out there...
1343 touch optdef.sh
1344 . ./optdef.sh
1345 : create the posthint manipulation script and leave the file out there...
1346 touch posthint.sh
1347
1348 : set package name
1349 package=perl5
1350 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1351 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1352 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1353 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1354 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1355 esac
1356
1357 : Some greps do not return status, grrr.
1358 echo "grimblepritz" >grimble
1359 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1360         contains=contains
1361 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1362         contains=grep
1363 else
1364         contains=contains
1365 fi
1366 rm -f grimble
1367 : the following should work in any shell
1368 case "$contains" in
1369 contains*)
1370         echo " "
1371         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1372         cat >contains <<'EOSS'
1373 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1374 EOSS
1375 chmod +x contains
1376 esac
1377
1378 : Find the path to the source tree
1379 case "$src" in
1380 '') case "$0" in
1381     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1382          case "$src" in
1383          /*)    ;;
1384          *)     src=`cd ../$src && pwd` ;;
1385          esac
1386          ;;
1387     *)   src='.';;
1388     esac;;
1389 esac
1390 case "$src" in
1391 '')     src=/
1392         rsrc=/
1393         ;;
1394 /*) rsrc="$src";;
1395 *) rsrc="../$src";;
1396 esac
1397 if test -f $rsrc/Configure && \
1398         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1399 then
1400    : found it, so we are ok.
1401 else
1402         rsrc=''
1403         for src in . .. ../.. ../../.. ../../../..; do
1404                 if test -f ../$src/Configure && \
1405                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1406                 then
1407                         rsrc=../$src
1408                         break
1409                 fi
1410         done
1411 fi
1412 case "$rsrc" in
1413 '')
1414         cat <<EOM >&4
1415
1416 Sorry, I can't seem to locate the source dir for $package.  Please start
1417 Configure with an explicit path -- i.e. /some/path/Configure.
1418
1419 EOM
1420         exit 1
1421         ;;
1422 ../.)   rsrc='..';;
1423 *)
1424         echo " "
1425         echo "Sources for $package found in \"$src\"." >&4
1426         ;;
1427 esac
1428
1429 : script used to extract .SH files with variable substitutions
1430 cat >extract <<'EOS'
1431 CONFIGDOTSH=true
1432 echo "Doing variable substitutions on .SH files..."
1433 if test -f $src/MANIFEST; then
1434         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1435 else
1436         echo "(Looking for .SH files under the source directory.)"
1437         set x `(cd $src; find . -name "*.SH" -print)`
1438 fi
1439 shift
1440 case $# in
1441 0) set x `(cd $src; echo *.SH)`; shift;;
1442 esac
1443 if test ! -f $src/$1; then
1444         shift
1445 fi
1446 mkdir_p='
1447 name=$1;
1448 create="";
1449 while test $name; do
1450         if test ! -d "$name"; then
1451                 create="$name $create";
1452                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1453                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1454         else
1455                 name="";
1456         fi;
1457 done;
1458 for file in $create; do
1459         mkdir $file;
1460 done
1461 '
1462 for file in $*; do
1463         case "$src" in
1464         ".")
1465                 case "$file" in
1466                 */*)
1467                         dir=`expr X$file : 'X\(.*\)/'`
1468                         file=`expr X$file : 'X.*/\(.*\)'`
1469                         (cd $dir && . ./$file)
1470                         ;;
1471                 *)
1472                         . ./$file
1473                         ;;
1474                 esac
1475                 ;;
1476         *)
1477                 case "$file" in
1478                 */*)
1479                         dir=`expr X$file : 'X\(.*\)/'`
1480                         file=`expr X$file : 'X.*/\(.*\)'`
1481                         (set x $dir; shift; eval $mkdir_p)
1482                         sh <$src/$dir/$file
1483                         ;;
1484                 *)
1485                         sh <$src/$file
1486                         ;;
1487                 esac
1488                 ;;
1489         esac
1490 done
1491 if test -f $src/config_h.SH; then
1492         if test ! -f config.h; then
1493         : oops, they left it out of MANIFEST, probably, so do it anyway.
1494         . $src/config_h.SH
1495         fi
1496 fi
1497 EOS
1498
1499 : extract files and exit if asked to do so
1500 case "$extractsh" in
1501 true)
1502         case "$realsilent" in
1503         true) ;;
1504         *) exec 1>&4;;
1505         esac
1506         case "$config_sh" in
1507         '') config_sh='config.sh';;
1508         esac
1509         echo " "
1510         echo "Fetching answers from $config_sh..."
1511         cd ..
1512         . $config_sh
1513         test "$override" && . ./optdef.sh
1514         echo " "
1515         . UU/extract
1516         rm -rf UU
1517         echo "Done."
1518         exit 0
1519         ;;
1520 esac
1521
1522 : Eunice requires " " instead of "", can you believe it
1523 echo " "
1524 : Here we go...
1525 echo "Beginning of configuration questions for $package."
1526
1527 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1528
1529 : first determine how to suppress newline on echo command
1530 echo " "
1531 echo "Checking echo to see how to suppress newlines..."
1532 (echo "hi there\c" ; echo " ") >.echotmp
1533 if $contains c .echotmp >/dev/null 2>&1 ; then
1534         echo "...using -n."
1535         n='-n'
1536         c=''
1537 else
1538         cat <<'EOM'
1539 ...using \c
1540 EOM
1541         n=''
1542         c='\c'
1543 fi
1544 echo $n "The star should be here-->$c"
1545 echo '*'
1546 rm -f .echotmp
1547
1548 : Now test for existence of everything in MANIFEST
1549 echo " "
1550 if test -f $rsrc/MANIFEST; then
1551         echo "First let's make sure your kit is complete.  Checking..." >&4
1552         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1553         rm -f missing
1554         tmppwd=`pwd`
1555         for filelist in x??; do
1556                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1557         done
1558         if test -s missing; then
1559                 cat missing >&4
1560                 cat >&4 <<'EOM'
1561
1562 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1563
1564 You have the option of continuing the configuration process, despite the
1565 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1566 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1567 and contact the author (perlbug@perl.com).
1568
1569 EOM
1570                 echo $n "Continue? [n] $c" >&4
1571                 read ans
1572                 case "$ans" in
1573                 y*)
1574                         echo "Continuing..." >&4
1575                         rm -f missing
1576                         ;;
1577                 *)
1578                         echo "ABORTING..." >&4
1579                         kill $$
1580                         ;;
1581                 esac
1582         else
1583                 echo "Looks good..."
1584         fi
1585 else
1586         echo "There is no MANIFEST file.  I hope your kit is complete !"
1587 fi
1588 rm -f missing x??
1589
1590 echo " "
1591 : Find the appropriate value for a newline for tr
1592 if test -n "$DJGPP"; then
1593        trnl='\012'
1594 fi
1595 if test X"$trnl" = X; then
1596         case "`echo foo|tr '\n' x 2>/dev/null`" in
1597         foox) trnl='\n' ;;
1598         esac
1599 fi
1600 if test X"$trnl" = X; then
1601         case "`echo foo|tr '\012' x 2>/dev/null`" in
1602         foox) trnl='\012' ;;
1603         esac
1604 fi
1605 if test X"$trnl" = X; then
1606         cat <<EOM >&2
1607
1608 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1609
1610 EOM
1611         exit 1
1612 fi
1613
1614 : compute the number of columns on the terminal for proper question formatting
1615 case "$COLUMNS" in
1616 '') COLUMNS='80';;
1617 esac
1618
1619 : set up the echo used in my read
1620 myecho="case \"\$xxxm\" in
1621 '') echo $n \"\$rp $c\" >&4;;
1622 *) case \"\$rp\" in
1623         '') echo $n \"[\$xxxm] $c\";;
1624         *)
1625                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1626                         echo \"\$rp\" >&4
1627                         echo $n \"[\$xxxm] $c\" >&4
1628                 else
1629                         echo $n \"\$rp [\$xxxm] $c\" >&4
1630                 fi
1631                 ;;
1632         esac;;
1633 esac"
1634
1635 : now set up to do reads with possible shell escape and default assignment
1636 cat <<EOSC >myread
1637 $startsh
1638 xxxm=\$dflt
1639 $myecho
1640 ans='!'
1641 case "\$fastread" in
1642 yes) case "\$dflt" in
1643         '') ;;
1644         *) ans='';
1645                 case "\$silent-\$rp" in
1646                 true-) ;;
1647                 *) echo " " >&4;;
1648                 esac;;
1649         esac;;
1650 *) case "\$silent" in
1651         true) case "\$rp" in
1652                 '') ans='';;
1653                 esac;;
1654         esac;;
1655 esac
1656 while expr "X\$ans" : "X!" >/dev/null; do
1657         read answ
1658         set x \$xxxm
1659         shift
1660         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1661         case  "\$answ" in
1662         "!")
1663                 sh 1>&4
1664                 echo " "
1665                 $myecho
1666                 ;;
1667         !*)
1668                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1669                 shift
1670                 sh 1>&4 -c "\$*"
1671                 echo " "
1672                 $myecho
1673                 ;;
1674         "\$ans")
1675                 case "\$ans" in
1676                 \\&*)
1677                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1678                         shift
1679                         case "\$1" in
1680                         -d)
1681                                 fastread=yes
1682                                 echo "(OK, I'll run with -d after this question.)" >&4
1683                                 ;;
1684                         -*)
1685                                 echo "*** Sorry, \$1 not supported yet." >&4
1686                                 ;;
1687                         esac
1688                         $myecho
1689                         ans=!
1690                         ;;
1691                 esac;;
1692         *)
1693                 case "\$aok" in
1694                 y)
1695                         echo "*** Substitution done -- please confirm."
1696                         xxxm="\$ans"
1697                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1698                         xxxm="\$ans"
1699                         ans=!
1700                         ;;
1701                 *)
1702                         echo "*** Error -- try again."
1703                         ans=!
1704                         ;;
1705                 esac
1706                 $myecho
1707                 ;;
1708         esac
1709         case "\$ans\$xxxm\$nostick" in
1710         '')
1711                 ans=!
1712                 $myecho
1713                 ;;
1714         esac
1715 done
1716 case "\$ans" in
1717 '') ans="\$xxxm";;
1718 esac
1719 EOSC
1720
1721 : create .config dir to save info across Configure sessions
1722 test -d ../.config || mkdir ../.config
1723 cat >../.config/README <<EOF
1724 This directory created by Configure to save information that should
1725 persist across sessions for $package.
1726
1727 You may safely delete it if you wish.
1728 EOF
1729
1730 : general instructions
1731 needman=true
1732 firsttime=true
1733 user=`(logname) 2>/dev/null`
1734 case "$user" in
1735 '') user=`whoami 2>&1`;;
1736 esac
1737 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1738         firsttime=false
1739         echo " "
1740         rp='Would you like to see the instructions?'
1741         dflt=n
1742         . ./myread
1743         case "$ans" in
1744         [yY]*) ;;
1745         *) needman=false;;
1746         esac
1747 fi
1748 if $needman; then
1749         cat <<EOH
1750
1751 This installation shell script will examine your system and ask you questions
1752 to determine how the perl5 package should be installed. If you get
1753 stuck on a question, you may use a ! shell escape to start a subshell or
1754 execute a command.  Many of the questions will have default answers in square
1755 brackets; typing carriage return will give you the default.
1756
1757 On some of the questions which ask for file or directory names you are allowed
1758 to use the ~name construct to specify the login directory belonging to "name",
1759 even if you don't have a shell which knows about that.  Questions where this is
1760 allowed will be marked "(~name ok)".
1761
1762 EOH
1763         rp=''
1764         dflt='Type carriage return to continue'
1765         . ./myread
1766         cat <<'EOH'
1767
1768 The prompter used in this script allows you to use shell variables and
1769 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1770 in the default answer, as if the default line was a set of arguments given to a
1771 script shell.  This means you may also use $* to repeat the whole default line,
1772 so you do not have to re-type everything to add something to the default.
1773
1774 Everytime there is a substitution, you will have to confirm.  If there is an
1775 error (e.g. an unmatched backtick), the default answer will remain unchanged
1776 and you will be prompted again.
1777
1778 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1779 the questions and use the computed defaults (or the previous answers if there
1780 was already a config.sh file). Type 'Configure -h' for a list of options.
1781 You may also start interactively and then answer '& -d' at any prompt to turn
1782 on the non-interactive behaviour for the remainder of the execution.
1783
1784 EOH
1785         . ./myread
1786         cat <<EOH
1787
1788 Much effort has been expended to ensure that this shell script will run on any
1789 Unix system.  If despite that it blows up on yours, your best bet is to edit
1790 Configure and run it again.  If you can't run Configure for some reason,
1791 you'll have to generate a config.sh file by hand.  Whatever problems you
1792 have, let me (perlbug@perl.com) know how I blew it.
1793
1794 This installation script affects things in two ways:
1795
1796 1) it may do direct variable substitutions on some of the files included
1797    in this kit.
1798 2) it builds a config.h file for inclusion in C programs.  You may edit
1799    any of these files as the need arises after running this script.
1800
1801 If you make a mistake on a question, there is no easy way to back up to it
1802 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1803 files.  Configure will offer to let you do this before it runs the SH files.
1804
1805 EOH
1806         dflt='Type carriage return to continue'
1807         . ./myread
1808         case "$firsttime" in
1809         true) echo $user >>../.config/instruct;;
1810         esac
1811 fi
1812
1813 : find out where common programs are
1814 echo " "
1815 echo "Locating common programs..." >&4
1816 cat <<EOSC >loc
1817 $startsh
1818 case \$# in
1819 0) exit 1;;
1820 esac
1821 thing=\$1
1822 shift
1823 dflt=\$1
1824 shift
1825 for dir in \$*; do
1826         case "\$thing" in
1827         .)
1828         if test -d \$dir/\$thing; then
1829                 echo \$dir
1830                 exit 0
1831         fi
1832         ;;
1833         *)
1834         for thisthing in \$dir/\$thing; do
1835                 : just loop through to pick last item
1836         done
1837         if test -f \$thisthing; then
1838                 echo \$thisthing
1839                 exit 0
1840         elif test -f \$dir/\$thing.exe; then
1841                 if test -n "$DJGPP"; then
1842                         echo \$dir/\$thing.exe
1843                 else
1844                         : on Eunice apparently
1845                         echo \$dir/\$thing
1846                 fi
1847                 exit 0
1848         fi
1849         ;;
1850         esac
1851 done
1852 echo \$dflt
1853 exit 1
1854 EOSC
1855 chmod +x loc
1856 $eunicefix loc
1857 loclist="
1858 awk
1859 cat
1860 comm
1861 cp
1862 echo
1863 expr
1864 grep
1865 ls
1866 make
1867 mkdir
1868 rm
1869 sed
1870 sort
1871 touch
1872 tr
1873 uniq
1874 "
1875 trylist="
1876 Mcc
1877 ar
1878 byacc
1879 cpp
1880 csh
1881 date
1882 egrep
1883 gzip
1884 less
1885 ln
1886 more
1887 nm
1888 nroff
1889 pg
1890 test
1891 uname
1892 zip
1893 "
1894 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1895 pth="$pth /lib /usr/lib"
1896 for file in $loclist; do
1897         eval xxx=\$$file
1898         case "$xxx" in
1899         /*|?:[\\/]*)
1900                 if test -f "$xxx"; then
1901                         : ok
1902                 else
1903                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1904                         xxx=`./loc $file $file $pth`
1905                 fi
1906                 ;;
1907         '') xxx=`./loc $file $file $pth`;;
1908         *) xxx=`./loc $xxx $xxx $pth`;;
1909         esac
1910         eval $file=$xxx
1911         eval _$file=$xxx
1912         case "$xxx" in
1913         /*)
1914                 echo $file is in $xxx.
1915                 ;;
1916         ?:[\\/]*)
1917                 echo $file is in $xxx.
1918                 ;;
1919         *)
1920                 echo "I don't know where '$file' is, and my life depends on it." >&4
1921                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1922                 exit 1
1923                 ;;
1924         esac
1925 done
1926 echo " "
1927 echo "Don't worry if any of the following aren't found..."
1928 say=offhand
1929 for file in $trylist; do
1930         eval xxx=\$$file
1931         case "$xxx" in
1932         /*|?:[\\/]*)
1933                 if test -f "$xxx"; then
1934                         : ok
1935                 else
1936                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1937                         xxx=`./loc $file $file $pth`
1938                 fi
1939                 ;;
1940         '') xxx=`./loc $file $file $pth`;;
1941         *) xxx=`./loc $xxx $xxx $pth`;;
1942         esac
1943         eval $file=$xxx
1944         eval _$file=$xxx
1945         case "$xxx" in
1946         /*)
1947                 echo $file is in $xxx.
1948                 ;;
1949         ?:[\\/]*)
1950                 echo $file is in $xxx.
1951                 ;;
1952         *)
1953                 echo "I don't see $file out there, $say."
1954                 say=either
1955                 ;;
1956         esac
1957 done
1958 case "$egrep" in
1959 egrep)
1960         echo "Substituting grep for egrep."
1961         egrep=$grep
1962         ;;
1963 esac
1964 case "$ln" in
1965 ln)
1966         echo "Substituting cp for ln."
1967         ln=$cp
1968         ;;
1969 esac
1970 case "$test" in
1971 test)
1972         echo "Hopefully test is built into your sh."
1973         ;;
1974 *)
1975         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1976                 echo "Using the test built into your sh."
1977                 test=test
1978                 _test=test
1979         fi
1980         ;;
1981 esac
1982 case "$echo" in
1983 echo)
1984         echo "Hopefully echo is built into your sh."
1985         ;;
1986 '') ;;
1987 *)
1988         echo " "
1989 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1990         $echo $n "hi there$c" >foo1
1991         echo $n "hi there$c" >foo2
1992         if cmp foo1 foo2 >/dev/null 2>&1; then
1993                 echo "They are compatible.  In fact, they may be identical."
1994         else
1995                 case "$n" in
1996                 '-n') n='' c='\c';;
1997                 *) n='-n' c='';;
1998                 esac
1999                 cat <<FOO
2000 They are not compatible!  You are probably running ksh on a non-USG system.
2001 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2002 have echo built in and we may have to run some Bourne shell scripts.  That
2003 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2004
2005 FOO
2006                 $echo $n "The star should be here-->$c"
2007                 $echo "*"
2008         fi
2009         $rm -f foo1 foo2
2010         ;;
2011 esac
2012
2013 : determine whether symbolic links are supported
2014 echo " "
2015 $touch blurfl
2016 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2017         echo "Symbolic links are supported." >&4
2018         lns="$ln -s"
2019 else
2020         echo "Symbolic links are NOT supported." >&4
2021         lns="$ln"
2022 fi
2023 $rm -f blurfl sym
2024
2025 : see whether [:lower:] and [:upper:] are supported character classes
2026 echo " "
2027 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2028 ABYZ)
2029         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2030         up='[:upper:]'
2031         low='[:lower:]'
2032         ;;
2033 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2034         # (0xc9 and 0xd1), therefore that is a nice testing point.
2035         if test "X$up" = X -o "X$low" = X; then
2036             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2037             ij) up='[A-Z]'
2038                 low='[a-z]'
2039                 ;;
2040             esac
2041         fi
2042         if test "X$up" = X -o "X$low" = X; then
2043             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2044             ij) up='A-Z'
2045                 low='a-z'
2046                 ;;
2047             esac
2048         fi
2049         if test "X$up" = X -o "X$low" = X; then
2050             case "`echo IJ | od -x 2>/dev/null`" in
2051             *C9D1*|*c9d1*)
2052                 echo "Hey, this might be EBCDIC." >&4
2053                 if test "X$up" = X -o "X$low" = X; then
2054                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2055                     ij) up='[A-IJ-RS-Z]'
2056                         low='[a-ij-rs-z]'
2057                         ;;
2058                     esac
2059                 fi
2060                 if test "X$up" = X -o "X$low" = X; then
2061                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2062                     ij) up='A-IJ-RS-Z'
2063                         low='a-ij-rs-z'
2064                         ;;
2065                     esac
2066                 fi
2067                 ;;
2068             esac
2069         fi
2070 esac
2071 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2072 ij)
2073     echo "Using $up and $low to convert case." >&4
2074     ;;
2075 *)
2076     echo "I don't know how to translate letters from upper to lower case." >&4
2077     echo "Your tr is not acting any way I know of." >&4
2078     exit 1
2079     ;;
2080 esac
2081 : set up the translation script tr, must be called with ./tr of course
2082 cat >tr <<EOSC
2083 $startsh
2084 case "\$1\$2" in
2085 '[A-Z][a-z]') exec $tr '$up' '$low';;
2086 '[a-z][A-Z]') exec $tr '$low' '$up';;
2087 esac
2088 exec $tr "\$@"
2089 EOSC
2090 chmod +x tr
2091 $eunicefix tr
2092
2093 : Try to determine whether config.sh was made on this system
2094 case "$config_sh" in
2095 '')
2096 myuname=`$uname -a 2>/dev/null`
2097 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2098 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2099 # because the A-Z/a-z are not consecutive.
2100 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2101         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2102 newmyuname="$myuname"
2103 dflt=n
2104 case "$knowitall" in
2105 '')
2106         if test -f ../config.sh; then
2107                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2108                         eval "`grep myuname= ../config.sh`"
2109                 fi
2110                 if test "X$myuname" = "X$newmyuname"; then
2111                         dflt=y
2112                 fi
2113         fi
2114         ;;
2115 *) dflt=y;;
2116 esac
2117
2118 : Get old answers from old config file if Configure was run on the
2119 : same system, otherwise use the hints.
2120 hint=default
2121 cd ..
2122 if test -f config.sh; then
2123         echo " "
2124         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2125         . UU/myread
2126         case "$ans" in
2127         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2128         *)  echo "Fetching default answers from your old config.sh file..." >&4
2129                 tmp_n="$n"
2130                 tmp_c="$c"
2131                 tmp_sh="$sh"
2132                 . ./config.sh
2133                 cp config.sh UU
2134                 n="$tmp_n"
2135                 c="$tmp_c"
2136                 : Older versions did not always set $sh.  Catch re-use of such
2137                 : an old config.sh.
2138                 case "$sh" in
2139                 '') sh="$tmp_sh" ;;
2140                 esac
2141                 hint=previous
2142                 ;;
2143         esac
2144 fi
2145 if test ! -f config.sh; then
2146         $cat <<EOM
2147
2148 First time through, eh?  I have some defaults handy for some systems
2149 that need some extra help getting the Configure answers right:
2150
2151 EOM
2152         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2153         dflt=''
2154         : Half the following guesses are probably wrong... If you have better
2155         : tests or hints, please send them to perlbug@perl.com
2156         : The metaconfig authors would also appreciate a copy...
2157         $test -f /irix && osname=irix
2158         $test -f /xenix && osname=sco_xenix
2159         $test -f /dynix && osname=dynix
2160         $test -f /dnix && osname=dnix
2161         $test -f /lynx.os && osname=lynxos
2162         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2163         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2164         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2165         $test -f /bin/mips && /bin/mips && osname=mips
2166         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2167                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2168         $test -d /usr/apollo/bin && osname=apollo
2169         $test -f /etc/saf/_sactab && osname=svr4
2170         $test -d /usr/include/minix && osname=minix
2171         if $test -d /MachTen -o -d /MachTen_Folder; then
2172                 osname=machten
2173                 if $test -x /sbin/version; then
2174                         osvers=`/sbin/version | $awk '{print $2}' |
2175                         $sed -e 's/[A-Za-z]$//'`
2176                 elif $test -x /usr/etc/version; then
2177                         osvers=`/usr/etc/version | $awk '{print $2}' |
2178                         $sed -e 's/[A-Za-z]$//'`
2179                 else
2180                         osvers="$2.$3"
2181                 fi
2182         fi
2183
2184         $test -f /sys/posix.dll &&
2185                 $test -f /usr/bin/what &&
2186                 set X `/usr/bin/what /sys/posix.dll` &&
2187                 $test "$3" = UWIN &&
2188                 osname=uwin &&
2189                 osvers="$5"
2190
2191         if $test -f $uname; then
2192                 set X $myuname
2193                 shift
2194
2195                 case "$5" in
2196                 fps*) osname=fps ;;
2197                 mips*)
2198                         case "$4" in
2199                         umips) osname=umips ;;
2200                         *) osname=mips ;;
2201                         esac;;
2202                 [23]100) osname=mips ;;
2203                 next*) osname=next ;;
2204                 i386*)
2205                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2206                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2207                                 osname='sco'
2208                                 osvers=$tmp
2209                         elif $test -f /etc/kconfig; then
2210                                 osname=isc
2211                                 if test "$lns" = "$ln -s"; then
2212                                         osvers=4
2213                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2214                                         osvers=3
2215                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2216                                         osvers=2
2217                                 fi
2218                         fi
2219                         tmp=''
2220                         ;;
2221                 pc*)
2222                         if test -n "$DJGPP"; then
2223                                 osname=dos
2224                                 osvers=djgpp
2225                         fi
2226                         ;;
2227                 esac
2228
2229                 case "$1" in
2230                 aix) osname=aix
2231                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2232                         case "$tmp" in
2233                         'not found') osvers="$4"."$3" ;;
2234                         '<3240'|'<>3240') osvers=3.2.0 ;;
2235                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2236                         '=3250'|'>3250') osvers=3.2.5 ;;
2237                         *) osvers=$tmp;;
2238                         esac
2239                         ;;
2240                 bsd386) osname=bsd386
2241                         osvers=`$uname -r`
2242                         ;;
2243                 cygwin*) osname=cygwin
2244                         osvers="$3"
2245                         ;;
2246                 *dc.osx) osname=dcosx
2247                         osvers="$3"
2248                         ;;
2249                 dnix) osname=dnix
2250                         osvers="$3"
2251                         ;;
2252                 domainos) osname=apollo
2253                         osvers="$3"
2254                         ;;
2255                 dgux) osname=dgux 
2256                         osvers="$3"
2257                         ;;
2258                 dynixptx*) osname=dynixptx
2259                         osvers=`echo "$4"|sed 's/^v//'`
2260                         ;;
2261                 freebsd) osname=freebsd 
2262                         osvers="$3" ;;
2263                 genix) osname=genix ;;
2264                 hp*) osname=hpux 
2265                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2266                         ;;
2267                 irix*) osname=irix
2268                         case "$3" in
2269                         4*) osvers=4 ;;
2270                         5*) osvers=5 ;;
2271                         *)      osvers="$3" ;;
2272                         esac
2273                         ;;
2274                 linux) osname=linux
2275                         case "$3" in
2276                         *)      osvers="$3" ;;
2277                         esac
2278                         ;;
2279                 MiNT) osname=mint
2280                         ;;
2281                 netbsd*) osname=netbsd
2282                         osvers="$3"
2283                         ;;
2284                 news-os) osvers="$3"
2285                         case "$3" in
2286                         4*) osname=newsos4 ;;
2287                         *) osname=newsos ;;
2288                         esac
2289                         ;;
2290                 next*) osname=next ;;
2291                 POSIX-BC | posix-bc ) osname=posix-bc
2292                         osvers="$3"
2293                         ;;
2294                 powerux | power_ux | powermax_os | powermaxos | \
2295                 powerunix | power_unix) osname=powerux
2296                         osvers="$3"
2297                         ;;
2298                 qnx) osname=qnx
2299                         osvers="$4"
2300                         ;;
2301                 solaris) osname=solaris
2302                         case "$3" in
2303                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2304                         *)      osvers="$3" ;;
2305                         esac
2306                         ;;
2307                 sunos) osname=sunos
2308                         case "$3" in
2309                         5*) osname=solaris
2310                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2311                         *)      osvers="$3" ;;
2312                         esac
2313                         ;;
2314                 titanos) osname=titanos
2315                         case "$3" in
2316                         1*) osvers=1 ;;
2317                         2*) osvers=2 ;;
2318                         3*) osvers=3 ;;
2319                         4*) osvers=4 ;;
2320                         *)      osvers="$3" ;;
2321                         esac
2322                         ;;
2323                 ultrix) osname=ultrix
2324                         osvers="$3"
2325                         ;;
2326                 osf1|mls+)      case "$5" in
2327                                 alpha)
2328                                         osname=dec_osf
2329                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2330                                         ;;
2331                         hp*)    osname=hp_osf1  ;;
2332                         mips)   osname=mips_osf1 ;;
2333                         esac
2334                         ;;
2335                 unixware) osname=svr5
2336                         osvers="$4"
2337                         ;;
2338                 uts) osname=uts
2339                         osvers="$3"
2340                         ;;
2341                 $2) case "$osname" in
2342                         *isc*) ;;
2343                         *freebsd*) ;;
2344                         svr*)
2345                                 : svr4.x or possibly later
2346                                 case "svr$3" in 
2347                                 ${osname}*)
2348                                         osname=svr$3
2349                                         osvers=$4
2350                                         ;;
2351                                 esac
2352                                 case "$osname" in
2353                                 svr4.0)
2354                                         : Check for ESIX
2355                                         if test -f /stand/boot ; then
2356                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2357                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2358                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2359                                                         if test -n "$isesix"; then
2360                                                                 osname=esix4
2361                                                         fi
2362                                                 fi
2363                                         fi
2364                                         ;;
2365                                 esac
2366                                 ;;
2367                         *)      if test -f /etc/systemid; then
2368                                         osname=sco
2369                                         set `echo $3 | $sed 's/\./ /g'` $4
2370                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2371                                                 osvers=$1.$2.$3
2372                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2373                                                 osvers=$1.$2
2374                                         elif $test -f $src/hints/sco_$1.sh; then
2375                                                 osvers=$1
2376                                         fi
2377                                 else
2378                                         case "$osname" in
2379                                         '') : Still unknown.  Probably a generic Sys V.
2380                                                 osname="sysv"
2381                                                 osvers="$3"
2382                                                 ;;
2383                                         esac
2384                                 fi
2385                                 ;;
2386                         esac
2387                         ;;
2388                 *)      case "$osname" in
2389                         '') : Still unknown.  Probably a generic BSD.
2390                                 osname="$1"
2391                                 osvers="$3"
2392                                 ;;
2393                         esac
2394                         ;;
2395                 esac
2396         else
2397                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2398                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2399                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2400                                 osname=news_os
2401                         fi
2402                         $rm -f UU/kernel.what
2403                 elif test -d c:/.; then
2404                         set X $myuname
2405                         osname=os2
2406                         osvers="$5"
2407                 fi
2408         fi
2409         
2410         : Now look for a hint file osname_osvers, unless one has been
2411         : specified already.
2412         case "$hintfile" in
2413         ''|' ')
2414                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2415                 : Also try without trailing minor version numbers.
2416                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2417                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2418                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2419                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2420                 case "$file" in
2421                 '') dflt=none ;;
2422                 *)  case "$osvers" in
2423                         '') dflt=$file
2424                                 ;;
2425                         *)  if $test -f $src/hints/$file.sh ; then
2426                                         dflt=$file
2427                                 elif $test -f $src/hints/$xfile.sh ; then
2428                                         dflt=$xfile
2429                                 elif $test -f $src/hints/$xxfile.sh ; then
2430                                         dflt=$xxfile
2431                                 elif $test -f $src/hints/$xxxfile.sh ; then
2432                                         dflt=$xxxfile
2433                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2434                                         dflt=$xxxxfile
2435                                 elif $test -f "$src/hints/${osname}.sh" ; then
2436                                         dflt="${osname}"
2437                                 else
2438                                         dflt=none
2439                                 fi
2440                                 ;;
2441                         esac
2442                         ;;
2443                 esac
2444                 if $test -f Policy.sh ; then
2445                         case "$dflt" in
2446                         *Policy*) ;;
2447                         none) dflt="Policy" ;;
2448                         *) dflt="Policy $dflt" ;;
2449                         esac
2450                 fi
2451                 ;;
2452         *)
2453                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2454                 ;;
2455         esac
2456
2457         if $test -f Policy.sh ; then
2458                 $cat <<EOM
2459
2460 There's also a Policy hint file available, which should make the
2461 site-specific (policy) questions easier to answer.
2462 EOM
2463
2464         fi
2465
2466         $cat <<EOM
2467
2468 You may give one or more space-separated answers, or "none" if appropriate.
2469 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2470 is a good thing.  DO NOT give a wrong version or a wrong OS.
2471
2472 EOM
2473
2474         rp="Which of these apply, if any?"
2475         . UU/myread
2476         tans=$ans
2477         for file in $tans; do
2478                 if $test X$file = XPolicy -a -f Policy.sh; then
2479                         . Policy.sh
2480                         $cat Policy.sh >> UU/config.sh
2481                 elif $test -f $src/hints/$file.sh; then
2482                         . $src/hints/$file.sh
2483                         $cat $src/hints/$file.sh >> UU/config.sh
2484                 elif $test X$tans = X -o X$tans = Xnone ; then
2485                         : nothing
2486                 else
2487                         : Give one chance to correct a possible typo.
2488                         echo "$file.sh does not exist"
2489                         dflt=$file
2490                         rp="hint to use instead?"
2491                         . UU/myread
2492                         for file in $ans; do
2493                                 if $test -f "$src/hints/$file.sh"; then
2494                                         . $src/hints/$file.sh
2495                                         $cat $src/hints/$file.sh >> UU/config.sh
2496                                 elif $test X$ans = X -o X$ans = Xnone ; then
2497                                         : nothing
2498                                 else
2499                                         echo "$file.sh does not exist -- ignored."
2500                                 fi
2501                         done
2502                 fi
2503         done
2504
2505         hint=recommended
2506         : Remember our hint file for later.
2507         if $test -f "$src/hints/$file.sh" ; then
2508                 hintfile="$file"
2509         else
2510                 hintfile=''
2511         fi
2512 fi
2513 cd UU
2514 ;;
2515 *)
2516         echo " "
2517         echo "Fetching default answers from $config_sh..." >&4
2518         tmp_n="$n"
2519         tmp_c="$c"
2520         cd ..
2521         cp $config_sh config.sh 2>/dev/null
2522         chmod +w config.sh
2523         . ./config.sh
2524         cd UU
2525         cp ../config.sh .
2526         n="$tmp_n"
2527         c="$tmp_c"
2528         hint=previous
2529         ;;
2530 esac
2531 test "$override" && . ./optdef.sh
2532 myuname="$newmyuname"
2533
2534 : Restore computed paths
2535 for file in $loclist $trylist; do
2536         eval $file="\$_$file"
2537 done
2538
2539 cat << EOM
2540
2541 Configure uses the operating system name and version to set some defaults.
2542 The default value is probably right if the name rings a bell. Otherwise,
2543 since spelling matters for me, either accept the default or answer "none"
2544 to leave it blank.
2545
2546 EOM
2547 case "$osname" in
2548         ''|' ')
2549                 case "$hintfile" in
2550                 ''|' '|none) dflt=none ;;
2551                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2552                 esac
2553                 ;;
2554         *) dflt="$osname" ;;
2555 esac
2556 rp="Operating system name?"
2557 . ./myread
2558 case "$ans" in
2559 none)  osname='' ;;
2560 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2561 esac
2562 echo " "
2563 case "$osvers" in
2564         ''|' ')
2565                 case "$hintfile" in
2566                 ''|' '|none) dflt=none ;;
2567                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2568                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2569                         case "$dflt" in
2570                         ''|' ') dflt=none ;;
2571                         esac
2572                         ;;
2573                 esac
2574                 ;;
2575         *) dflt="$osvers" ;;
2576 esac
2577 rp="Operating system version?"
2578 . ./myread
2579 case "$ans" in
2580 none)  osvers='' ;;
2581 *) osvers="$ans" ;;
2582 esac
2583
2584
2585 . ./posthint.sh
2586
2587 : who configured the system
2588 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2589 cf_by=`(logname) 2>/dev/null`
2590 case "$cf_by" in
2591 "")
2592         cf_by=`(whoami) 2>/dev/null`
2593         case "$cf_by" in
2594         "") cf_by=unknown ;;
2595         esac ;;
2596 esac
2597
2598 : set up the script used to warn in case of inconsistency
2599 cat <<EOS >whoa
2600 $startsh
2601 EOS
2602 cat <<'EOSC' >>whoa
2603 dflt=y
2604 echo " "
2605 echo "*** WHOA THERE!!! ***" >&4
2606 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2607 rp="    Keep the $hint value?"
2608 . ./myread
2609 case "$ans" in
2610 y) td=$was; tu=$was;;
2611 esac
2612 EOSC
2613
2614 : function used to set $1 to $val
2615 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2616 case "$val$was" in
2617 $define$undef) . ./whoa; eval "$var=\$td";;
2618 $undef$define) . ./whoa; eval "$var=\$tu";;
2619 *) eval "$var=$val";;
2620 esac'
2621
2622 case "$usethreads" in
2623 $define|true|[yY]*)     dflt='y';;
2624 *) dflt='n';;
2625 esac
2626 cat <<EOM
2627
2628 Perl can be built to take advantage of threads on some systems.
2629 To do so, Configure can be run with -Dusethreads.
2630
2631 Note that threading is a highly experimental feature, and
2632 some known race conditions still remain.  If you choose to try
2633 it, be very sure to not actually deploy it for production
2634 purposes.  README.threads has more details, and is required
2635 reading if you enable threads.
2636
2637 If this doesn't make any sense to you, just accept the default '$dflt'.
2638 EOM
2639 rp='Build a threading Perl?'
2640 . ./myread
2641 case "$ans" in
2642 y|Y)    val="$define" ;;
2643 *)      val="$undef" ;;
2644 esac
2645 set usethreads
2646 eval $setvar
2647
2648 case "$usethreads" in
2649 $define)
2650         $cat <<EOM
2651
2652 As of 5.5.640, Perl has two different internal threading implementations,
2653 the 5.005 version (5005threads) and an interpreter-based version
2654 (ithreads) that has one interpreter per thread.  Both are very 
2655 experimental.  This arrangement exists to help developers work out
2656 which one is better.
2657
2658 If you're a casual user, you probably don't want interpreter-threads
2659 at this time.  There doesn't yet exist a way to create threads from
2660 within Perl in this model, i.e., "use Thread;" will NOT work.
2661 EOM
2662         : Default to ithreads unless overridden on command line or with
2663         : old config.sh
2664         dflt='y'
2665         case "$use5005threads" in
2666                 $define|true|[yY]*) dflt='n';;
2667         esac
2668         case "$useithreads" in
2669                 $undef|false|[nN]*) dflt='n';;
2670         esac
2671         rp='Use interpreter-based ithreads?'
2672         . ./myread
2673         case "$ans" in
2674         y|Y)    val="$define" ;;
2675         *)      val="$undef" ;;
2676         esac
2677         set useithreads
2678         eval $setvar
2679         : Now set use5005threads to the opposite value.
2680         case "$useithreads" in
2681         $define) val="$undef" ;;
2682         *) val="$define" ;;
2683         esac
2684         set use5005threads
2685         eval $setvar
2686         ;;
2687 *)
2688         useithreads="$undef"
2689         use5005threads="$undef"
2690         ;;
2691 esac
2692
2693 case "$d_oldpthreads" in
2694 '')     : Configure tests would be welcome here.  For now, assume undef.
2695         val="$undef" ;;
2696 *)      val="$d_oldpthreads" ;;
2697 esac
2698 set d_oldpthreads
2699 eval $setvar
2700
2701
2702 case "$usethreads" in
2703 "$define"|true|[yY]*)
2704 : Look for a hint-file generated 'call-back-unit'.  If the
2705 : user has specified that a threading perl is to be built,
2706 : we may need to set or change some other defaults.
2707         if $test -f usethreads.cbu; then
2708                 echo "Your platform has some specific hints for threaded builds, using them..."
2709                 . ./usethreads.cbu
2710         else
2711                 $cat <<EOM
2712 (Your platform doesn't have any specific hints for threaded builds.
2713  Assuming POSIX threads, then.)
2714 EOM
2715         fi
2716         ;;
2717 esac
2718
2719 cat <<EOM
2720
2721 Perl can be built so that multiple Perl interpreters can coexist
2722 within the same Perl executable.
2723 EOM
2724
2725 case "$useithreads" in
2726 $define)
2727         cat <<EOM
2728 This multiple interpreter support is required for interpreter-based threads.
2729 EOM
2730         val="$define"
2731         ;;
2732 *)      case "$usemultiplicity" in
2733         $define|true|[yY]*)     dflt='y';;
2734         *) dflt='n';;
2735         esac
2736         echo " "
2737         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2738         rp='Build Perl for multiplicity?'
2739         . ./myread
2740         case "$ans" in
2741         y|Y)    val="$define" ;;
2742         *)      val="$undef" ;;
2743         esac
2744         ;;
2745 esac
2746 set usemultiplicity
2747 eval $setvar
2748
2749 : determine where manual pages are on this system
2750 echo " "
2751 case "$sysman" in
2752 '') 
2753         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2754         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2755         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2756         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2757         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2758         sysman=`./loc . /usr/man/man1 $syspath`
2759         ;;
2760 esac
2761 if $test -d "$sysman"; then
2762         echo "System manual is in $sysman." >&4
2763 else
2764         echo "Could not find manual pages in source form." >&4
2765 fi
2766
2767 : see what memory models we can support
2768 case "$models" in
2769 '')
2770         $cat >pdp11.c <<'EOP'
2771 int main() {
2772 #ifdef pdp11
2773         exit(0);
2774 #else
2775         exit(1);
2776 #endif
2777 }
2778 EOP
2779         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2780         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2781                 dflt='unsplit split'
2782         else
2783                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2784                 case "$tans" in
2785                 X) dflt='none';;
2786                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2787                                 dflt='small'
2788                         else
2789                                 dflt=''
2790                         fi
2791                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2792                                 dflt="$dflt medium"
2793                         fi
2794                         if $test -d /lib/large || $test -d /usr/lib/large; then
2795                                 dflt="$dflt large"
2796                         fi
2797                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2798                                 dflt="$dflt huge"
2799                         fi
2800                 esac
2801         fi;;
2802 *) dflt="$models";;
2803 esac
2804 $cat <<EOM
2805  
2806 Some systems have different model sizes.  On most systems they are called
2807 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2808 split.  If your system doesn't support different memory models, say "none".
2809 If you wish to force everything to one memory model, say "none" here and
2810 put the appropriate flags later when it asks you for other cc and ld flags.
2811 Venix systems may wish to put "none" and let the compiler figure things out.
2812 (In the following question multiple model names should be space separated.)
2813
2814 The default for most systems is "none".
2815
2816 EOM
2817 rp="Which memory models are supported?"
2818 . ./myread
2819 models="$ans"
2820
2821 case "$models" in
2822 none)
2823         small=''
2824         medium=''
2825         large=''
2826         huge=''
2827         unsplit=''
2828         split=''
2829         ;;
2830 *split)
2831         case "$split" in
2832         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2833                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2834                         dflt='-i'
2835                 else
2836                         dflt='none'
2837                 fi;;
2838         *) dflt="$split";;
2839         esac
2840         rp="What flag indicates separate I and D space?"
2841         . ./myread
2842         tans="$ans"
2843         case "$tans" in
2844         none) tans='';;
2845         esac
2846         split="$tans"
2847         unsplit='';;
2848 *large*|*small*|*medium*|*huge*)
2849         case "$models" in
2850         *large*)
2851                 case "$large" in
2852                 '') dflt='-Ml';;
2853                 *) dflt="$large";;
2854                 esac
2855         rp="What flag indicates large model?"
2856         . ./myread
2857         tans="$ans"
2858         case "$tans" in
2859         none) tans='';
2860         esac
2861         large="$tans";;
2862         *) large='';;
2863         esac
2864         case "$models" in
2865         *huge*) case "$huge" in
2866                 '') dflt='-Mh';;
2867                 *) dflt="$huge";;
2868                 esac
2869                 rp="What flag indicates huge model?"
2870                 . ./myread
2871                 tans="$ans"
2872                 case "$tans" in
2873                 none) tans='';
2874                 esac
2875                 huge="$tans";;
2876         *) huge="$large";;
2877         esac
2878         case "$models" in
2879         *medium*) case "$medium" in
2880                 '') dflt='-Mm';;
2881                 *) dflt="$medium";;
2882                 esac
2883                 rp="What flag indicates medium model?"
2884                 . ./myread
2885                 tans="$ans"
2886                 case "$tans" in
2887                 none) tans='';
2888                 esac
2889                 medium="$tans";;
2890         *) medium="$large";;
2891         esac
2892         case "$models" in
2893         *small*) case "$small" in
2894                 '') dflt='none';;
2895                 *) dflt="$small";;
2896                 esac
2897                 rp="What flag indicates small model?"
2898                 . ./myread
2899                 tans="$ans"
2900                 case "$tans" in
2901                 none) tans='';
2902                 esac
2903                 small="$tans";;
2904         *) small='';;
2905         esac
2906         ;;
2907 *)
2908         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2909         ;;
2910 esac
2911 $rm -f pdp11.* pdp11
2912
2913 : make some quick guesses about what we are up against
2914 echo " "
2915 $echo $n "Hmm...  $c"
2916 echo exit 1 >bsd
2917 echo exit 1 >usg
2918 echo exit 1 >v7
2919 echo exit 1 >osf1
2920 echo exit 1 >eunice
2921 echo exit 1 >xenix
2922 echo exit 1 >venix
2923 echo exit 1 >os2
2924 d_bsd="$undef"
2925 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2926 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2927 then
2928         echo "Looks kind of like an OSF/1 system, but we'll see..."
2929         echo exit 0 >osf1
2930 elif test `echo abc | tr a-z A-Z` = Abc ; then
2931         xxx=`./loc addbib blurfl $pth`
2932         if $test -f $xxx; then
2933         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2934                 echo exit 0 >bsd
2935                 echo exit 0 >usg
2936         else
2937                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2938                         echo "Looks kind of like an extended USG system, but we'll see..."
2939                 else
2940                         echo "Looks kind of like a USG system, but we'll see..."
2941                 fi
2942                 echo exit 0 >usg
2943         fi
2944 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2945         echo "Looks kind of like a BSD system, but we'll see..."
2946         d_bsd="$define"
2947         echo exit 0 >bsd
2948 else
2949         echo "Looks kind of like a Version 7 system, but we'll see..."
2950         echo exit 0 >v7
2951 fi
2952 case "$eunicefix" in
2953 *unixtovms*)
2954         $cat <<'EOI'
2955 There is, however, a strange, musty smell in the air that reminds me of
2956 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2957 EOI
2958         echo exit 0 >eunice
2959         d_eunice="$define"
2960 : it so happens the Eunice I know will not run shell scripts in Unix format
2961         ;;
2962 *)
2963         echo " "
2964         echo "Congratulations.  You aren't running Eunice."
2965         d_eunice="$undef"
2966         ;;
2967 esac
2968 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2969 case "$p_" in
2970 :) ;;
2971 *)
2972         $cat <<'EOI'
2973 I have the feeling something is not exactly right, however...don't tell me...
2974 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2975 EOI
2976         echo exit 0 >os2
2977         ;;
2978 esac
2979 if test -f /xenix; then
2980         echo "Actually, this looks more like a XENIX system..."
2981         echo exit 0 >xenix
2982         d_xenix="$define"
2983 else
2984         echo " "
2985         echo "It's not Xenix..."
2986         d_xenix="$undef"
2987 fi
2988 chmod +x xenix
2989 $eunicefix xenix
2990 if test -f /venix; then
2991         echo "Actually, this looks more like a VENIX system..."
2992         echo exit 0 >venix
2993 else
2994         echo " "
2995         if ./xenix; then
2996                 : null
2997         else
2998                 echo "Nor is it Venix..."
2999         fi
3000 fi
3001 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3002 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3003 $rm -f foo
3004
3005 : see if we need a special compiler
3006 echo " "
3007 if ./usg; then
3008         case "$cc" in
3009         '') case "$Mcc" in
3010                 /*) dflt='Mcc';;
3011                 *) case "$large" in
3012                         -M*) dflt='cc';;
3013                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3014                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3015                                                 dflt='cc'
3016                                         else
3017                                                 dflt='cc -M'
3018                                         fi
3019                                 else
3020                                         dflt='cc'
3021                                 fi;;
3022                         esac;;
3023                 esac;;
3024         *)  dflt="$cc";;
3025         esac
3026         case "$dflt" in
3027         *M*)    $cat <<'EOM'
3028 On some older systems the default C compiler will not resolve multiple global
3029 references that happen to have the same name.  On some such systems the "Mcc"
3030 command may be used to force these to be resolved.  On other systems a "cc -M"
3031 command is required.  (Note that the -M flag on other systems indicates a
3032 memory model to use!) If you have the Gnu C compiler, you might wish to use
3033 that instead.
3034
3035 EOM
3036         ;;
3037         esac
3038         rp="Use which C compiler?"
3039         . ./myread
3040         cc="$ans"
3041 else
3042         case "$cc" in
3043         '') dflt=cc;;
3044         *) dflt="$cc";;
3045         esac
3046         rp="Use which C compiler?"
3047         . ./myread
3048         cc="$ans"
3049 fi
3050 : Look for a hint-file generated 'call-back-unit'.  Now that the
3051 : user has specified the compiler, we may need to set or change some
3052 : other defaults.
3053 if $test -f cc.cbu; then
3054     . ./cc.cbu
3055 fi
3056 echo " "
3057 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3058 $cat >gccvers.c <<EOM
3059 #include <stdio.h>
3060 int main() {
3061 #ifdef __GNUC__
3062 #ifdef __VERSION__
3063         printf("%s\n", __VERSION__);
3064 #else
3065         printf("%s\n", "1");
3066 #endif
3067 #endif
3068         exit(0);
3069 }
3070 EOM
3071 if $cc $ldflags -o gccvers gccvers.c; then
3072         gccversion=`./gccvers`
3073         case "$gccversion" in
3074         '') echo "You are not using GNU cc." ;;
3075         *)  echo "You are using GNU cc $gccversion."
3076             ;;
3077         esac
3078 else
3079         echo " "
3080         echo "*** WHOA THERE!!! ***" >&4
3081         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3082         case "$knowitall" in
3083         '')
3084         echo "    You'd better start hunting for one and let me know about it." >&4
3085                 exit 1
3086                 ;;
3087         esac
3088 fi
3089 $rm -f gccvers*
3090 case "$gccversion" in
3091 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3092 esac
3093
3094 : decide how portable to be.  Allow command line overrides.
3095 case "$d_portable" in
3096 "$undef") ;;
3097 *)      d_portable="$define" ;;
3098 esac
3099
3100 : set up shell script to do ~ expansion
3101 cat >filexp <<EOSS
3102 $startsh
3103 : expand filename
3104 case "\$1" in
3105  ~/*|~)
3106         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3107         ;;
3108  ~*)
3109         if $test -f /bin/csh; then
3110                 /bin/csh -f -c "glob \$1"
3111                 failed=\$?
3112                 echo ""
3113                 exit \$failed
3114         else
3115                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3116                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3117                 if $test ! -d "\$dir"; then
3118                         me=\`basename \$0\`
3119                         echo "\$me: can't locate home directory for: \$name" >&2
3120                         exit 1
3121                 fi
3122                 case "\$1" in
3123                 */*)
3124                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3125                         ;;
3126                 *)
3127                         echo \$dir
3128                         ;;
3129                 esac
3130         fi
3131         ;;
3132 *)
3133         echo \$1
3134         ;;
3135 esac
3136 EOSS
3137 chmod +x filexp
3138 $eunicefix filexp
3139
3140 : now set up to get a file name
3141 cat <<EOS >getfile
3142 $startsh
3143 EOS
3144 cat <<'EOSC' >>getfile
3145 tilde=''
3146 fullpath=''
3147 already=''
3148 skip=''
3149 none_ok=''
3150 exp_file=''
3151 nopath_ok=''
3152 orig_rp="$rp"
3153 orig_dflt="$dflt"
3154 case "$gfpth" in
3155 '') gfpth='.' ;;
3156 esac
3157
3158 case "$fn" in
3159 *\(*)
3160         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3161         fn=`echo $fn | sed 's/(.*)//'`
3162         ;;
3163 esac
3164
3165 case "$fn" in
3166 *:*)
3167         loc_file=`expr $fn : '.*:\(.*\)'`
3168         fn=`expr $fn : '\(.*\):.*'`
3169         ;;
3170 esac
3171
3172 case "$fn" in
3173 *~*) tilde=true;;
3174 esac
3175 case "$fn" in
3176 */*) fullpath=true;;
3177 esac
3178 case "$fn" in
3179 *+*) skip=true;;
3180 esac
3181 case "$fn" in
3182 *n*) none_ok=true;;
3183 esac
3184 case "$fn" in
3185 *e*) exp_file=true;;
3186 esac
3187 case "$fn" in
3188 *p*) nopath_ok=true;;
3189 esac
3190
3191 case "$fn" in
3192 *f*) type='File';;
3193 *d*) type='Directory';;
3194 *l*) type='Locate';;
3195 esac
3196
3197 what="$type"
3198 case "$what" in
3199 Locate) what='File';;
3200 esac
3201
3202 case "$exp_file" in
3203 '')
3204         case "$d_portable" in
3205         "$define") ;;
3206         *) exp_file=true;;
3207         esac
3208         ;;
3209 esac
3210
3211 cd ..
3212 while test "$type"; do
3213         redo=''
3214         rp="$orig_rp"
3215         dflt="$orig_dflt"
3216         case "$tilde" in
3217         true) rp="$rp (~name ok)";;
3218         esac
3219         . UU/myread
3220         if test -f UU/getfile.ok && \
3221                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3222         then
3223                 value="$ans"
3224                 ansexp="$ans"
3225                 break
3226         fi
3227         case "$ans" in
3228         none)
3229                 value=''
3230                 ansexp=''
3231                 case "$none_ok" in
3232                 true) type='';;
3233                 esac
3234                 ;;
3235         *)
3236                 case "$tilde" in
3237                 '') value="$ans"
3238                         ansexp="$ans";;
3239                 *)
3240                         value=`UU/filexp $ans`
3241                         case $? in
3242                         0)
3243                                 if test "$ans" != "$value"; then
3244                                         echo "(That expands to $value on this system.)"
3245                                 fi
3246                                 ;;
3247                         *) value="$ans";;
3248                         esac
3249                         ansexp="$value"
3250                         case "$exp_file" in
3251                         '') value="$ans";;
3252                         esac
3253                         ;;
3254                 esac
3255                 case "$fullpath" in
3256                 true)
3257                         case "$ansexp" in
3258                         /*) value="$ansexp" ;;
3259                         *)
3260                                 redo=true
3261                                 case "$already" in
3262                                 true)
3263                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3264                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3265                                         ;;
3266                                 *)
3267                                 echo "Please give a full path name, starting with slash." >&4
3268                                         case "$tilde" in
3269                                         true)
3270                                 echo "Note that using ~name is ok provided it expands well." >&4
3271                                                 already=true
3272                                                 ;;
3273                                         esac
3274                                 esac
3275                                 ;;
3276                         esac
3277                         ;;
3278                 esac
3279                 case "$redo" in
3280                 '')
3281                         case "$type" in
3282                         File)
3283                                 for fp in $gfpth; do
3284                                         if test "X$fp" = X.; then
3285                                             pf="$ansexp"
3286                                         else    
3287                                             pf="$fp/$ansexp"
3288                                         fi
3289                                         if test -f "$pf"; then
3290                                                 type=''
3291                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3292                                         then
3293                                                 echo "($value is not a plain file, but that's ok.)"
3294                                                 type=''
3295                                         fi
3296                                         if test X"$type" = X; then
3297                                             value="$pf"
3298                                             break
3299                                         fi
3300                                 done
3301                                 ;;
3302                         Directory)
3303                                 for fp in $gfpth; do
3304                                         if test "X$fp" = X.; then
3305                                             pf="$ansexp"
3306                                         else    
3307                                             pf="$fp/$ansexp"
3308                                         fi
3309                                         if test -d "$pf"; then
3310                                                 type=''
3311                                                 value="$pf"
3312                                                 break
3313                                         fi
3314                                 done
3315                                 ;;
3316                         Locate)
3317                                 if test -d "$ansexp"; then
3318                                         echo "(Looking for $loc_file in directory $value.)"
3319                                         value="$value/$loc_file"
3320                                         ansexp="$ansexp/$loc_file"
3321                                 fi
3322                                 if test -f "$ansexp"; then
3323                                         type=''
3324                                 fi
3325                                 case "$nopath_ok" in
3326                                 true)   case "$value" in
3327                                         */*) ;;
3328                                         *)      echo "Assuming $value will be in people's path."
3329                                                 type=''
3330                                                 ;;
3331                                         esac
3332                                         ;;
3333                                 esac
3334                                 ;;
3335                         esac
3336
3337                         case "$skip" in
3338                         true) type='';
3339                         esac
3340
3341                         case "$type" in
3342                         '') ;;
3343                         *)
3344                                 if test "$fastread" = yes; then
3345                                         dflt=y
3346                                 else
3347                                         dflt=n
3348                                 fi
3349                                 rp="$what $value doesn't exist.  Use that name anyway?"
3350                                 . UU/myread
3351                                 dflt=''
3352                                 case "$ans" in
3353                                 y*) type='';;
3354                                 *) echo " ";;
3355                                 esac
3356                                 ;;
3357                         esac
3358                         ;;
3359                 esac
3360                 ;;
3361         esac
3362 done
3363 cd UU
3364 ans="$value"
3365 rp="$orig_rp"
3366 dflt="$orig_dflt"
3367 rm -f getfile.ok
3368 test "X$gfpthkeep" != Xy && gfpth=""
3369 EOSC
3370
3371 : What should the include directory be ?
3372 echo " "
3373 $echo $n "Hmm...  $c"
3374 dflt='/usr/include'
3375 incpath=''
3376 mips_type=''
3377 if $test -f /bin/mips && /bin/mips; then
3378         echo "Looks like a MIPS system..."
3379         $cat >usr.c <<'EOCP'
3380 #ifdef SYSTYPE_BSD43
3381 /bsd43
3382 #endif
3383 EOCP
3384         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3385                 dflt='/bsd43/usr/include'
3386                 incpath='/bsd43'
3387                 mips_type='BSD 4.3'
3388         else
3389                 mips_type='System V'
3390         fi
3391         $rm -f usr.c usr.out
3392         echo "and you're compiling with the $mips_type compiler and libraries."
3393         xxx_prompt=y
3394         echo "exit 0" >mips
3395 else
3396         echo "Doesn't look like a MIPS system."
3397         xxx_prompt=n
3398         echo "exit 1" >mips
3399 fi
3400 chmod +x mips
3401 $eunicefix mips
3402 case "$usrinc" in
3403 '') ;;
3404 *) dflt="$usrinc";;
3405 esac
3406 case "$xxx_prompt" in
3407 y)      fn=d/
3408         echo " "
3409         rp='Where are the include files you want to use?'
3410         . ./getfile
3411         usrinc="$ans"
3412         ;;
3413 *)      usrinc="$dflt"
3414         ;;
3415 esac
3416
3417 : see how we invoke the C preprocessor
3418 echo " "
3419 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3420 cat <<'EOT' >testcpp.c
3421 #define ABC abc
3422 #define XYZ xyz
3423 ABC.XYZ
3424 EOT
3425 cd ..
3426 if test ! -f cppstdin; then
3427         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3428                 # AIX cc -E doesn't show the absolute headerfile
3429                 # locations but we'll cheat by using the -M flag.
3430                 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
3431         else
3432                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3433         fi
3434 else
3435         echo "Keeping your $hint cppstdin wrapper."
3436 fi
3437 chmod 755 cppstdin
3438 wrapper=`pwd`/cppstdin
3439 ok='false'
3440 cd UU
3441
3442 if $test "X$cppstdin" != "X" && \
3443         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3444         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3445 then
3446         echo "You used to use $cppstdin $cppminus so we'll use that again."
3447         case "$cpprun" in
3448         '') echo "But let's see if we can live without a wrapper..." ;;
3449         *)
3450                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3451                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3452                 then
3453                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3454                         ok='true'
3455                 else
3456                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3457                 fi
3458                 ;;
3459         esac
3460 else
3461         case "$cppstdin" in
3462         '') ;;
3463         *)
3464                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3465                 ;;
3466         esac
3467 fi
3468
3469 if $ok; then
3470         : nothing
3471 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3472         $cc -E <testcpp.c >testcpp.out 2>&1; \
3473         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474         echo "Yup, it does."
3475         x_cpp="$cc -E"
3476         x_minus='';
3477 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3478         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3479         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480         echo "Yup, it does."
3481         x_cpp="$cc -E"
3482         x_minus='-';
3483 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3484         $cc -P <testcpp.c >testcpp.out 2>&1; \
3485         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486         echo "Yipee, that works!"
3487         x_cpp="$cc -P"
3488         x_minus='';
3489 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3490         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3491         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492         echo "At long last!"
3493         x_cpp="$cc -P"
3494         x_minus='-';
3495 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3496         $cpp <testcpp.c >testcpp.out 2>&1; \
3497         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3498         echo "It works!"
3499         x_cpp="$cpp"
3500         x_minus='';
3501 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3502         $cpp - <testcpp.c >testcpp.out 2>&1; \
3503         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3504         echo "Hooray, it works!  I was beginning to wonder."
3505         x_cpp="$cpp"
3506         x_minus='-';
3507 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3508         $wrapper <testcpp.c >testcpp.out 2>&1; \
3509         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3510         x_cpp="$wrapper"
3511         x_minus=''
3512         echo "Eureka!"
3513 else
3514         dflt=''
3515         rp="No dice.  I can't find a C preprocessor.  Name one:"
3516         . ./myread
3517         x_cpp="$ans"
3518         x_minus=''
3519         $x_cpp <testcpp.c >testcpp.out 2>&1
3520         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3521                 echo "OK, that will do." >&4
3522         else
3523 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3524                 exit 1
3525         fi
3526 fi
3527
3528 case "$ok" in
3529 false)
3530         cppstdin="$x_cpp"
3531         cppminus="$x_minus"
3532         cpprun="$x_cpp"
3533         cpplast="$x_minus"
3534         set X $x_cpp
3535         shift
3536         case "$1" in
3537         "$cpp")
3538                 echo "Perhaps can we force $cc -E using a wrapper..."
3539                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3540                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3541                 then
3542                         echo "Yup, we can."
3543                         cppstdin="$wrapper"
3544                         cppminus='';
3545                 else
3546                         echo "Nope, we'll have to live without it..."
3547                 fi
3548                 ;;
3549         esac
3550         case "$cpprun" in
3551         "$wrapper")
3552                 cpprun=''
3553                 cpplast=''
3554                 ;;
3555         esac
3556         ;;
3557 esac
3558
3559 case "$cppstdin" in
3560 "$wrapper"|'cppstdin') ;;
3561 *) $rm -f $wrapper;;
3562 esac
3563 $rm -f testcpp.c testcpp.out
3564
3565 : Set private lib path
3566 case "$plibpth" in
3567 '') if ./mips; then
3568                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3569         fi;;
3570 esac
3571 case "$libpth" in
3572 ' ') dlist='';;
3573 '') dlist="$loclibpth $plibpth $glibpth";;
3574 *) dlist="$libpth";;
3575 esac
3576
3577 : Now check and see which directories actually exist, avoiding duplicates
3578 libpth=''
3579 for xxx in $dlist
3580 do
3581     if $test -d $xxx; then
3582                 case " $libpth " in
3583                 *" $xxx "*) ;;
3584                 *) libpth="$libpth $xxx";;
3585                 esac
3586     fi
3587 done
3588 $cat <<'EOM'
3589
3590 Some systems have incompatible or broken versions of libraries.  Among
3591 the directories listed in the question below, please remove any you
3592 know not to be holding relevant libraries, and add any that are needed.
3593 Say "none" for none.
3594
3595 EOM
3596 case "$libpth" in
3597 '') dflt='none';;
3598 *)
3599         set X $libpth
3600         shift
3601         dflt=${1+"$@"}
3602         ;;
3603 esac
3604 rp="Directories to use for library searches?"
3605 . ./myread
3606 case "$ans" in
3607 none) libpth=' ';;
3608 *) libpth="$ans";;
3609 esac
3610
3611 : compute shared library extension
3612 case "$so" in
3613 '')
3614         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3615                 dflt='sl'
3616         else
3617                 dflt='so'
3618         fi
3619         ;;
3620 *) dflt="$so";;
3621 esac
3622 $cat <<EOM
3623
3624 On some systems, shared libraries may be available.  Answer 'none' if
3625 you want to suppress searching of shared libraries for the remainder
3626 of this configuration.
3627
3628 EOM
3629 rp='What is the file extension used for shared libraries?'
3630 . ./myread
3631 so="$ans"
3632
3633 : Define several unixisms.
3634 : Hints files or command line option can be used to override them.
3635 : The convoluted testing is in case hints files set either the old
3636 : or the new name.
3637 case "$_exe" in
3638 '')     case "$exe_ext" in
3639     '') ;;
3640         *)      _exe="$exe_ext" ;;
3641         esac
3642         ;;
3643 esac
3644 case "$_a" in
3645 '')     case "$lib_ext" in
3646     '') _a='.a';;
3647         *)      _a="$lib_ext" ;;
3648         esac
3649         ;;
3650 esac
3651 case "$_o" in
3652 '') case "$obj_ext" in
3653         '')     _o='.o';;
3654         *)      _o="$obj_ext";;
3655         esac
3656         ;;
3657 esac
3658 case "$p_" in
3659 '') case "$path_sep" in
3660         '')     p_=':';;
3661         *)      p_="$path_sep";;
3662         esac
3663         ;;
3664 esac
3665 exe_ext=$_exe
3666 lib_ext=$_a
3667 obj_ext=$_o
3668 path_sep=$p_
3669
3670 : Which makefile gets called first.  This is used by make depend.
3671 case "$firstmakefile" in
3672 '') firstmakefile='makefile';;
3673 esac
3674
3675 case "$usesocks" in
3676 $define|true|[yY]*)     dflt='y';;
3677 *) dflt='n';;
3678 esac
3679 cat <<EOM
3680
3681 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3682 Configure must be run with -Dusesocks.
3683
3684 If this doesn't make any sense to you, just accept the default '$dflt'.
3685 EOM
3686 rp='Build Perl for SOCKS?'
3687 . ./myread
3688 case "$ans" in
3689 y|Y)    val="$define" ;;     
3690 *)      val="$undef" ;;
3691 esac
3692 set usesocks
3693 eval $setvar
3694
3695 : Looking for optional libraries
3696 echo " "
3697 echo "Checking for optional libraries..." >&4
3698 case "$libs" in
3699 ' '|'') dflt='';;
3700 *) dflt="$libs";;
3701 esac
3702 case "$libswanted" in
3703 '') libswanted='c_s';;
3704 esac
3705 case "$usesocks" in
3706 $define)
3707         libswanted="$libswanted socks5 socks5_sh"
3708         ;;
3709 esac
3710 libsfound=''
3711 libsfiles=''
3712 libsdirs=''
3713 libspath=''
3714 for thisdir in $libpth $xlibpth; do
3715   test -d $thisdir && libspath="$libspath $thisdir"
3716 done
3717 for thislib in $libswanted; do
3718         for thisdir in $libspath; do
3719             xxx=''
3720             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3721                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3722                 $test -f "$xxx" && eval $libscheck
3723                 $test -f "$xxx" && libstyle=shared
3724             fi
3725             if test ! -f "$xxx"; then
3726                 xxx=$thisdir/lib$thislib.$so
3727                 $test -f "$xxx" && eval $libscheck
3728                 $test -f "$xxx" && libstyle=shared
3729             fi  
3730             if test ! -f "$xxx"; then
3731                 xxx=$thisdir/lib$thislib$_a
3732                 $test -f "$xxx" && eval $libscheck
3733                 $test -f "$xxx" && libstyle=static
3734             fi
3735             if test ! -f "$xxx"; then
3736                 xxx=$thisdir/$thislib$_a
3737                 $test -f "$xxx" && eval $libscheck
3738                 $test -f "$xxx" && libstyle=static
3739             fi
3740             if test ! -f "$xxx"; then
3741                 xxx=$thisdir/lib${thislib}_s$_a
3742                 $test -f "$xxx" && eval $libscheck
3743                 $test -f "$xxx" && libstyle=static
3744                 $test -f "$xxx" && thislib=${thislib}_s
3745             fi
3746             if test ! -f "$xxx"; then
3747                 xxx=$thisdir/Slib$thislib$_a
3748                 $test -f "$xxx" && eval $libscheck
3749                 $test -f "$xxx" && libstyle=static
3750             fi
3751             if $test -f "$xxx"; then
3752                 case "$libstyle" in
3753                 shared) echo "Found -l$thislib (shared)." ;;
3754                 static) echo "Found -l$thislib." ;;
3755                 *)      echo "Found -l$thislib ($libstyle)." ;;
3756                 esac
3757                 case " $dflt " in
3758                 *"-l$thislib "*);;
3759                 *) dflt="$dflt -l$thislib"
3760                    libsfound="$libsfound $xxx"
3761                    yyy=`basename $xxx`
3762                    libsfiles="$libsfiles $yyy"
3763                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3764                    case " $libsdirs " in
3765                    *" $yyy "*) ;;
3766                    *) libsdirs="$libsdirs $yyy" ;;
3767                    esac
3768                    ;;
3769                 esac
3770                 break
3771             fi  
3772         done
3773         if $test ! -f "$xxx"; then
3774             echo "No -l$thislib."
3775         fi
3776 done
3777 set X $dflt
3778 shift
3779 dflt="$*"
3780 case "$libs" in
3781 '') dflt="$dflt";;
3782 *) dflt="$libs";;
3783 esac
3784 case "$dflt" in
3785 ' '|'') dflt='none';;
3786 esac
3787
3788 $cat <<EOM
3789
3790 In order to compile $package on your machine, a number of libraries
3791 are usually needed.  Include any other special libraries here as well.
3792 Say "none" for none.  The default list is almost always right.
3793 EOM
3794
3795 echo " "
3796 rp="What libraries to use?"
3797 . ./myread
3798 case "$ans" in
3799 none) libs=' ';;
3800 *) libs="$ans";;
3801 esac
3802
3803 : determine optimization, if desired, or use for debug flag also
3804 case "$optimize" in
3805 ' '|$undef) dflt='none';;
3806 '') dflt='-O';;
3807 *) dflt="$optimize";;
3808 esac
3809 $cat <<EOH
3810
3811 By default, $package compiles with the -O flag to use the optimizer.
3812 Alternately, you might want to use the symbolic debugger, which uses
3813 the -g flag (on traditional Unix systems).  Either flag can be
3814 specified here.  To use neither flag, specify the word "none".
3815
3816 EOH
3817 rp="What optimizer/debugger flag should be used?"
3818 . ./myread
3819 optimize="$ans"
3820 case "$optimize" in
3821 'none') optimize=" ";;
3822 esac
3823
3824 dflt=''
3825 : We will not override a previous value, but we might want to
3826 : augment a hint file
3827 case "$hint" in
3828 default|recommended)
3829         case "$gccversion" in
3830         1*) dflt='-fpcc-struct-return' ;;
3831         esac
3832         case "$optimize" in
3833         *-g*) dflt="$dflt -DDEBUGGING";;
3834         esac
3835         case "$gccversion" in
3836         2*) if test -d /etc/conf/kconfig.d &&
3837                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3838                 then
3839                         dflt="$dflt -posix"
3840                 fi
3841                 ;;
3842         esac
3843         case "$gccversion" in
3844         1*) ;;
3845         2.[0-8]*) ;;
3846         ?*)     echo " "
3847                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3848                 echo 'int main(void) { return 0; }' > gcctest.c
3849                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3850                         echo "Yes, it does." 2>&1
3851                         case "$ccflags" in
3852                         *strict-aliasing*) 
3853                                 echo "Leaving current flags $ccflags alone." 2>&1
3854                                 ;;
3855                         *) dflt="$dflt -fno-strict-aliasing" ;;
3856                         esac
3857                 else
3858                         echo "Nope, it doesn't, but that's ok." 2>&1
3859                 fi
3860                 ;;
3861         esac
3862         ;;
3863 esac
3864
3865 case "$mips_type" in
3866 *BSD*|'') inclwanted="$locincpth $usrinc";;
3867 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3868 esac
3869 for thisincl in $inclwanted; do
3870         if $test -d $thisincl; then
3871                 if $test x$thisincl != x$usrinc; then
3872                         case "$dflt" in
3873                         *$thisincl*);;
3874                         *) dflt="$dflt -I$thisincl";;
3875                         esac
3876                 fi
3877         fi
3878 done
3879
3880 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3881         xxx=true;
3882 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3883         xxx=true;
3884 else
3885         xxx=false;
3886 fi;
3887 if $xxx; then
3888         case "$dflt" in
3889         *$2*);;
3890         *) dflt="$dflt -D$2";;
3891         esac;
3892 fi'
3893
3894 set signal.h LANGUAGE_C; eval $inctest
3895
3896 case "$usesocks" in
3897 $define)
3898         ccflags="$ccflags -DSOCKS"
3899         ;;
3900 esac
3901
3902 case "$hint" in
3903 default|recommended) dflt="$ccflags $dflt" ;;
3904 *) dflt="$ccflags";;
3905 esac
3906
3907 case "$dflt" in
3908 ''|' ') dflt=none;;
3909 esac
3910 $cat <<EOH
3911
3912 Your C compiler may want other flags.  For this question you should include
3913 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3914 but you should NOT include libraries or ld flags like -lwhatever.  If you
3915 want $package to honor its debug switch, you should include -DDEBUGGING here.
3916 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3917
3918 To use no flags, specify the word "none".
3919
3920 EOH
3921 set X $dflt
3922 shift
3923 dflt=${1+"$@"}
3924 rp="Any additional cc flags?"
3925 . ./myread
3926 case "$ans" in
3927 none) ccflags='';;
3928 *) ccflags="$ans";;
3929 esac
3930
3931 : the following weeds options from ccflags that are of no interest to cpp
3932 cppflags="$ccflags"
3933 case "$gccversion" in
3934 1*) cppflags="$cppflags -D__GNUC__"
3935 esac
3936 case "$mips_type" in
3937 '');;
3938 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3939 esac
3940 case "$cppflags" in
3941 '');;
3942 *)
3943         echo " "
3944         echo "Let me guess what the preprocessor flags are..." >&4
3945         set X $cppflags
3946         shift
3947         cppflags=''
3948         $cat >cpp.c <<'EOM'
3949 #define BLURFL foo
3950
3951 BLURFL xx LFRULB
3952 EOM
3953         previous=''
3954         for flag in $*
3955         do
3956                 case "$flag" in
3957                 -*) ftry="$flag";;
3958                 *) ftry="$previous $flag";;
3959                 esac
3960                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3961                         >cpp1.out 2>/dev/null && \
3962                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3963                         >cpp2.out 2>/dev/null && \
3964                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3965                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3966                 then
3967                         cppflags="$cppflags $ftry"
3968                         previous=''
3969                 else
3970                         previous="$flag"
3971                 fi
3972         done
3973         set X $cppflags
3974         shift
3975         cppflags=${1+"$@"}
3976         case "$cppflags" in
3977         *-*)  echo "They appear to be: $cppflags";;
3978         esac
3979         $rm -f cpp.c cpp?.out
3980         ;;
3981 esac
3982
3983 : flags used in final linking phase
3984 case "$ldflags" in
3985 '') if ./venix; then
3986                 dflt='-i -z'
3987         else
3988                 dflt=''
3989         fi
3990         case "$ccflags" in
3991         *-posix*) dflt="$dflt -posix" ;;
3992         esac
3993         ;;
3994 *) dflt="$ldflags";;
3995 esac
3996
3997 : Try to guess additional flags to pick up local libraries.
3998 for thislibdir in $libpth; do
3999         case " $loclibpth " in
4000         *" $thislibdir "*)
4001                 case "$dflt " in 
4002                 *"-L$thislibdir "*) ;;
4003                 *)  dflt="$dflt -L$thislibdir" ;;
4004                 esac
4005                 ;;
4006         esac
4007 done
4008
4009 case "$dflt" in
4010 '') dflt='none' ;;
4011 esac
4012
4013 $cat <<EOH
4014
4015 Your C linker may need flags.  For this question you should
4016 include -L/whatever and any other flags used by the C linker, but you
4017 should NOT include libraries like -lwhatever.
4018
4019 Make sure you include the appropriate -L/path flags if your C linker
4020 does not normally search all of the directories you specified above,
4021 namely
4022         $libpth
4023 To use no flags, specify the word "none".
4024
4025 EOH
4026
4027 rp="Any additional ld flags (NOT including libraries)?"
4028 . ./myread
4029 case "$ans" in
4030 none) ldflags='';;
4031 *) ldflags="$ans";;
4032 esac
4033 rmlist="$rmlist pdp11"
4034
4035 : coherency check
4036 echo " "
4037 echo "Checking your choice of C compiler and flags for coherency..." >&4
4038 $cat > try.c <<'EOF'
4039 #include <stdio.h>
4040 int main() { printf("Ok\n"); exit(0); }
4041 EOF
4042 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4043 shift
4044 $cat >try.msg <<'EOM'
4045 I've tried to compile and run the following simple program:
4046
4047 EOM
4048 $cat try.c >> try.msg
4049
4050 $cat >> try.msg <<EOM
4051
4052 I used the command:
4053
4054         $*
4055         ./try
4056
4057 and I got the following output:
4058
4059 EOM
4060 dflt=y
4061 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4062         if sh -c './try' >>try.msg 2>&1; then
4063                 xxx=`./try`
4064                 case "$xxx" in
4065                 "Ok") dflt=n ;;
4066                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4067                         case " $libs " in
4068                         *" -lsfio "*)
4069                                 cat >> try.msg <<'EOQS'
4070 If $libs contains -lsfio, and sfio is mis-configured, then it
4071 sometimes (apparently) runs and exits with a 0 status, but with no
4072 output!  It may have to do with sfio's use of _exit vs. exit.
4073
4074 EOQS
4075                                 rp="You have a big problem.  Shall I abort Configure"
4076                                 dflt=y
4077                                 ;;
4078                         esac
4079                         ;;
4080                 esac
4081         else
4082                 echo "The program compiled OK, but exited with status $?." >>try.msg
4083                 rp="You have a problem.  Shall I abort Configure"
4084                 dflt=y
4085         fi
4086 else
4087         echo "I can't compile the test program." >>try.msg
4088         rp="You have a BIG problem.  Shall I abort Configure"
4089         dflt=y
4090 fi
4091 case "$dflt" in
4092 y)
4093         $cat try.msg >&4
4094         case "$knowitall" in
4095         '')
4096                 echo "(The supplied flags or libraries might be incorrect.)"
4097                 ;;
4098         *) dflt=n;;
4099         esac
4100         echo " "
4101         . ./myread
4102         case "$ans" in
4103         n*|N*) ;;
4104         *)      echo "Ok.  Stopping Configure." >&4
4105                 exit 1
4106                 ;;
4107         esac
4108         ;;
4109 n) echo "OK, that should do.";;
4110 esac
4111 $rm -f try try.* core
4112
4113 : define an is-a-typedef? function
4114 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4115 case "$inclist" in
4116 "") inclist="sys/types.h";;
4117 esac;
4118 eval "varval=\$$var";
4119 case "$varval" in
4120 "")
4121         $rm -f temp.c;
4122         for inc in $inclist; do
4123                 echo "#include <$inc>" >>temp.c;
4124         done;
4125         echo "#ifdef $type" >> temp.c;
4126         echo "printf(\"We have $type\");" >> temp.c;
4127         echo "#endif" >> temp.c;
4128         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4129         if $contains $type temp.E >/dev/null 2>&1; then
4130                 eval "$var=\$type";
4131         else
4132                 eval "$var=\$def";
4133         fi;
4134         $rm -f temp.?;;
4135 *) eval "$var=\$varval";;
4136 esac'
4137
4138 : define an is-a-typedef? function that prompts if the type is not available.
4139 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4140 case "$inclist" in
4141 "") inclist="sys/types.h";;
4142 esac;
4143 eval "varval=\$$var";
4144 case "$varval" in
4145 "")
4146         $rm -f temp.c;
4147         for inc in $inclist; do
4148                 echo "#include <$inc>" >>temp.c;
4149         done;
4150         echo "#ifdef $type" >> temp.c;
4151         echo "printf(\"We have $type\");" >> temp.c;
4152         echo "#endif" >> temp.c;
4153         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4154         echo " " ;
4155         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4156         if $contains $type temp.E >/dev/null 2>&1; then
4157                 echo "$type found." >&4;
4158                 eval "$var=\$type";
4159         else
4160                 echo "$type NOT found." >&4;
4161                 dflt="$def";
4162                 . ./myread ;
4163                 eval "$var=\$ans";
4164         fi;
4165         $rm -f temp.?;;
4166 *) eval "$var=\$varval";;
4167 esac'
4168
4169 : define a shorthand compile call
4170 compile='
4171 mc_file=$1;
4172 shift;
4173 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4174 : define a shorthand compile call for compilations that should be ok.
4175 compile_ok='
4176 mc_file=$1;
4177 shift;
4178 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4179
4180 : check for lengths of integral types
4181 echo " "
4182 case "$intsize" in
4183 '')
4184         echo "Checking to see how big your integers are..." >&4
4185         $cat >intsize.c <<'EOCP'
4186 #include <stdio.h>
4187 int main()
4188 {
4189         printf("intsize=%d;\n", (int)sizeof(int));
4190         printf("longsize=%d;\n", (int)sizeof(long));
4191         printf("shortsize=%d;\n", (int)sizeof(short));
4192         exit(0);
4193 }
4194 EOCP
4195         set intsize
4196         if eval $compile_ok && ./intsize > /dev/null; then
4197                 eval `./intsize`
4198                 echo "Your integers are $intsize bytes long."
4199                 echo "Your long integers are $longsize bytes long."
4200                 echo "Your short integers are $shortsize bytes long."
4201         else
4202                 $cat >&4 <<EOM
4203 !
4204 Help! I can't compile and run the intsize test program: please enlighten me!
4205 (This is probably a misconfiguration in your system or libraries, and
4206 you really ought to fix it.  Still, I'll try anyway.)
4207 !
4208 EOM
4209                 dflt=4
4210                 rp="What is the size of an integer (in bytes)?"
4211                 . ./myread
4212                 intsize="$ans"
4213                 dflt=$intsize
4214                 rp="What is the size of a long integer (in bytes)?"
4215                 . ./myread
4216                 longsize="$ans"
4217                 dflt=2
4218                 rp="What is the size of a short integer (in bytes)?"
4219                 . ./myread
4220                 shortsize="$ans"
4221         fi
4222         ;;
4223 esac
4224 $rm -f intsize intsize.*
4225
4226 : see what type lseek is declared as in the kernel
4227 rp="What is the type used for lseek's offset on this system?"
4228 set off_t lseektype long stdio.h sys/types.h
4229 eval $typedef_ask
4230
4231 echo " "
4232 echo "Checking to see how big your file offsets are..." >&4
4233 $cat >try.c <<EOCP
4234 #include <sys/types.h>
4235 #include <stdio.h>
4236 int main()
4237 {
4238     printf("%d\n", (int)sizeof($lseektype));
4239     return(0); 
4240 }
4241 EOCP
4242 set try
4243 if eval $compile_ok; then
4244         lseeksize=`./try`
4245         echo "Your file offsets are $lseeksize bytes long."
4246 else
4247         dflt=$longsize
4248         echo " "
4249         echo "(I can't seem to compile the test program.  Guessing...)"
4250         rp="What is the size of your file offsets (in bytes)?"
4251         . ./myread
4252         lseeksize="$ans"
4253 fi
4254 $rm -f try.c try
4255
4256 : see what type file positions are declared as in the library
4257 rp="What is the type for file position used by fsetpos()?"
4258 set fpos_t fpostype long stdio.h sys/types.h
4259 eval $typedef_ask
4260
4261 echo " "
4262 case "$fpostype" in
4263 *_t) zzz="$fpostype"    ;;
4264 *)   zzz="fpos_t"       ;;
4265 esac
4266 echo "Checking the size of $zzz..." >&4 
4267 cat > try.c <<EOCP
4268 #include <sys/types.h>
4269 #include <stdio.h>
4270 int main() {
4271     printf("%d\n", (int)sizeof($fpostype));
4272     exit(0);
4273 }
4274 EOCP
4275 set try
4276 if eval $compile_ok; then
4277         yyy=`./try`
4278         case "$yyy" in
4279         '')     fpossize=4
4280                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4281                 ;;
4282         *)      fpossize=$yyy
4283                 echo "Your $zzz is $fpossize bytes long."
4284                 ;;
4285         esac
4286 else
4287         dflt="$longsize"
4288         echo " " >&4
4289         echo "(I can't compile the test program.  Guessing...)" >&4
4290         rp="What is the size of your file positions (in bytes)?"
4291         . ./myread
4292         fpossize="$ans"
4293 fi
4294
4295
4296
4297 # Backward compatibility (uselfs is deprecated).
4298 case "$uselfs" in
4299 "$define"|true|[yY]*)
4300         cat <<EOM >&4
4301
4302 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4303 EOM
4304         uselargefiles="$define"
4305         ;;
4306 esac                          
4307
4308 case "$lseeksize:$fpossize" in
4309 8:8) cat <<EOM
4310
4311 You can have files larger than 2 gigabytes.
4312 EOM
4313    val="$define" ;;
4314 *)    case "$uselargefiles" in
4315    "$undef"|false|[nN]*) dflt='n' ;;
4316    *)   dflt='y' ;;
4317    esac
4318    cat <<EOM
4319
4320 Perl can be built to understand large files (files larger than 2 gigabytes)
4321 on some systems.  To do so, Configure can be run with -Duselargefiles.
4322
4323 If this doesn't make any sense to you, just accept the default '$dflt'.
4324 EOM
4325    rp='Try to understand large files, if available?'
4326    . ./myread
4327    case "$ans" in
4328    y|Y)         val="$define" ;;
4329    *)           val="$undef"  ;;
4330    esac
4331    ;;
4332 esac
4333 set uselargefiles
4334 eval $setvar
4335 case "$uselargefiles" in
4336 "$define")
4337 : Look for a hint-file generated 'call-back-unit'.  If the
4338 : user has specified that a large files perl is to be built,
4339 : we may need to set or change some other defaults.
4340         if $test -f uselfs.cbu; then
4341                 echo "Your platform has some specific hints for large file builds, using them..."
4342                 . ./uselfs.cbu
4343                 echo " "
4344                 echo "Rechecking to see how big your file offsets are..." >&4
4345                 $cat >try.c <<EOCP
4346 #include <sys/types.h>
4347 #include <stdio.h>
4348 int main()
4349 {
4350     printf("%d\n", (int)sizeof($lseektype));
4351     return(0); 
4352 }
4353 EOCP
4354                 set try
4355                 if eval $compile_ok; then
4356                         lseeksize=`./try`
4357                         $echo "Your file offsets are now $lseeksize bytes long."
4358                 else
4359                         dflt="$lseeksize"
4360                         echo " "
4361                         echo "(I can't seem to compile the test program.  Guessing...)"
4362                         rp="What is the size of your file offsets (in bytes)?"
4363                         . ./myread
4364                         lseeksize="$ans"
4365                 fi
4366                 case "$fpostype" in
4367                 *_t) zzz="$fpostype"    ;;
4368                 *)   zzz="fpos_t"       ;;
4369                 esac
4370                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4371                 $cat > try.c <<EOCP
4372 #include <sys/types.h>
4373 #include <stdio.h>
4374 int main() {
4375     printf("%d\n", (int)sizeof($fpostype));
4376     exit(0);
4377 }
4378 EOCP
4379                 set try
4380                 if eval $compile_ok; then
4381                         yyy=`./try`
4382                         dflt="$lseeksize"
4383                         case "$yyy" in
4384                         '')     echo " "
4385                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4386                                 ;;
4387                         *)      fpossize=$yyy
4388                                 echo " $fpossize bytes." >&4
4389                                 ;;
4390                         esac
4391                 else
4392                         dflt="$fpossize"
4393                         echo " "
4394                         echo "(I can't compile the test program.  Guessing...)" >&4
4395                         rp="What is the size of your file positions (in bytes)?"
4396                         . ./myread
4397                         fpossize="$ans"
4398                 fi
4399                 $rm -f try.c try
4400         fi
4401         ;;
4402 esac
4403
4404
4405 case "$usemorebits" in
4406 "$define"|true|[yY]*)
4407         use64bitint="$define"
4408         uselongdouble="$define"
4409         usemorebits="$define"
4410         ;;
4411 *)      usemorebits="$undef"
4412         ;;
4413 esac
4414
4415
4416 # Backward compatibility (uselonglong is deprecated).
4417 case "$uselonglong" in
4418 "$define"|true|[yY]*)
4419         cat <<EOM >&4
4420
4421 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4422 EOM
4423         use64bitint="$define"
4424         ;;
4425 esac                          
4426 # Backward compatibility (use64bits is deprecated).
4427 case "$use64bits" in
4428 "$define"|true|[yY]*)
4429         cat <<EOM >&4
4430
4431 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4432 EOM
4433         use64bitint="$define"
4434         ;;
4435 esac                          
4436 # Thinko compatibility
4437 case "$use64bitints" in
4438 "$define"|true|[yY]*)
4439         cat <<EOM >&4
4440
4441 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4442 EOM
4443         use64bitint="$define"
4444         ;;
4445 esac                          
4446
4447 case "$ccflags" in
4448 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4449 esac
4450 case "$use64bitall" in
4451 "$define"|true|[yY]*) use64bitint="$define" ;;
4452 esac
4453
4454 case "$longsize" in
4455 8) cat <<EOM
4456
4457 You have natively 64-bit long integers.
4458 EOM
4459    val="$define"
4460    ;;
4461 *) case "$use64bitint" in
4462    "$define"|true|[yY]*) dflt='y';;
4463    *) dflt='n';;
4464    esac
4465    cat <<EOM
4466
4467 Perl can be built to take advantage of 64-bit integer types
4468 on some systems.  To do so, Configure can be run with -Duse64bitint.
4469 Choosing this option will most probably introduce binary incompatibilities.
4470
4471 If this doesn't make any sense to you, just accept the default '$dflt'.
4472 EOM
4473    rp='Try to use 64-bit integers, if available?'
4474    . ./myread
4475    case "$ans" in
4476    [yY]*) val="$define" ;;
4477    *)     val="$undef"  ;;
4478    esac
4479    ;;
4480 esac
4481 set use64bitint
4482 eval $setvar
4483
4484 case "$use64bitint" in
4485 "$define")      case "$longsize" in
4486                 8) dflt='y' ;;
4487                 *) dflt='n' ;;
4488                 esac
4489                 ;;
4490 *)      case "$use64bitall" in
4491         "$define"|true|[yY]*) dflt='y' ;;
4492         *) dflt='n' ;;
4493         esac
4494         ;;
4495 esac 
4496 cat <<EOM
4497
4498 You may also choose to try maximal 64-bitness.  It means using as much
4499 64-bitness as possible on the platform.  This in turn means even more
4500 binary incompatibilities.  On the other hand, your platform may not
4501 have any more 64-bitness available than what you already have chosen.
4502
4503 If this doesn't make any sense to you, just accept the default '$dflt'.
4504 EOM
4505 rp='Try to use maximal 64-bit support, if available?'
4506 . ./myread
4507 case "$ans" in
4508 [yY]*) val="$define" ;;
4509 *)     val="$undef"  ;;
4510 esac
4511 set use64bitall
4512 eval $setvar
4513 case "$use64bitall" in
4514 "$define")
4515         case "$use64bitint" in
4516         "$undef")
4517                 cat <<EOM
4518
4519 Since you have chosen a maximally 64-bit build, I'm also turning on
4520 the use of 64-bit integers.
4521 EOM
4522                 use64bitint="$define" ;;
4523         esac
4524         ;;
4525 esac
4526
4527 case "$use64bitint" in
4528 "$define"|true|[yY]*)
4529 : Look for a hint-file generated 'call-back-unit'.  If the
4530 : user has specified that a 64-bit perl is to be built,
4531 : we may need to set or change some other defaults.
4532         if $test -f use64bitint.cbu; then
4533                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4534                 . ./use64bitint.cbu
4535         fi
4536         case "$longsize" in
4537         4) case "$ccflags" in
4538            *-DUSE_64_BIT_INT*) ;;
4539            *) ccflags="$ccflags -DUSE_64_BIT_INT";;
4540            esac
4541            case "$archname64" in
4542            '') archname64=64int ;;
4543            esac
4544            ;;
4545         esac
4546         ;;
4547 esac
4548
4549 case "$use64bitall" in
4550 "$define"|true|[yY]*)
4551 : Look for a hint-file generated 'call-back-unit'.  If the
4552 : user has specified that a maximally 64-bit perl is to be built,
4553 : we may need to set or change some other defaults.
4554         if $test -f use64bitall.cbu; then
4555                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4556                 . ./use64bitall.cbu
4557         fi
4558         case "$longsize" in
4559         4) case "$ccflags" in
4560            *-DUSE_64_BIT_ALL*) ;;
4561            *) ccflags="$ccflags -DUSE_64_BIT_ALL";;
4562            esac
4563            case "$archname64" in
4564            ''|64int) archname64=64all ;;
4565            esac
4566            ;;
4567         esac
4568         ;;
4569 esac
4570
4571 : determine the architecture name
4572 echo " "
4573 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4574         tarch=`arch`"-$osname"
4575 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4576         if uname -m > tmparch 2>&1 ; then
4577                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4578                         -e 's/$/'"-$osname/" tmparch`
4579         else
4580                 tarch="$osname"
4581         fi
4582         $rm -f tmparch
4583 else
4584         tarch="$osname"
4585 fi
4586 case "$myarchname" in
4587 ''|"$tarch") ;;
4588 *)
4589         echo "(Your architecture name used to be $myarchname.)"
4590         archname=''
4591         ;;
4592 esac
4593 myarchname="$tarch"
4594 case "$archname" in
4595 '') dflt="$tarch";;
4596 *) dflt="$archname";;
4597 esac
4598 rp='What is your architecture name'
4599 . ./myread
4600 archname="$ans"
4601 case "$usethreads" in
4602 $define)
4603         echo "Threads selected." >&4
4604         case "$archname" in
4605         *-thread*) echo "...and architecture name already has -thread." >&4
4606                 ;;
4607         *)      archname="$archname-thread"
4608                 echo "...setting architecture name to $archname." >&4
4609                 ;;
4610         esac
4611         ;;
4612 esac
4613 case "$usemultiplicity" in
4614 $define)
4615         echo "Multiplicity selected." >&4
4616         case "$archname" in
4617         *-multi*) echo "...and architecture name already has -multi." >&4
4618                 ;;
4619         *)      archname="$archname-multi"
4620                 echo "...setting architecture name to $archname." >&4
4621                 ;;
4622         esac
4623         ;;
4624 esac
4625 case "$use64bitint" in
4626 $define)
4627         case "$archname64" in
4628         '')
4629                 ;;
4630         *)
4631                 case "$archname" in
4632                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4633                         ;;
4634                 *)      archname="$archname-$archname64"
4635                         echo "...setting architecture name to $archname." >&4
4636                         ;;
4637                 esac
4638                 ;;
4639         esac
4640 esac
4641
4642 : determine root of directory hierarchy where package will be installed.
4643 case "$prefix" in
4644 '')
4645         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4646         ;;
4647 *)
4648         dflt="$prefix"
4649         ;;
4650 esac
4651 $cat <<EOM
4652
4653 By default, $package will be installed in $dflt/bin, manual pages
4654 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4655 installation directories. Typically this is something like /usr/local.
4656 If you wish to have binaries under /usr/bin but other parts of the
4657 installation under /usr/local, that's ok: you will be prompted
4658 separately for each of the installation directories, the prefix being
4659 only used to set the defaults.
4660
4661 EOM
4662 fn=d~
4663 rp='Installation prefix to use?'
4664 . ./getfile
4665 oldprefix=''
4666 case "$prefix" in
4667 '') ;;
4668 *)
4669         case "$ans" in
4670         "$prefix") ;;
4671         *) oldprefix="$prefix";;
4672         esac
4673         ;;
4674 esac
4675 prefix="$ans"
4676 prefixexp="$ansexp"
4677
4678 : is AFS running?
4679 echo " "
4680 case "$afs" in
4681 $define|true)   afs=true ;;
4682 $undef|false)   afs=false ;;
4683 *)      if test -d /afs; then
4684                 afs=true
4685         else
4686                 afs=false
4687         fi
4688         ;;
4689 esac
4690 if $afs; then
4691         echo "AFS may be running... I'll be extra cautious then..." >&4
4692 else
4693         echo "AFS does not seem to be running..." >&4
4694 fi
4695
4696 : determine installation prefix for where package is to be installed.
4697 if $afs; then 
4698 $cat <<EOM
4699
4700 Since you are running AFS, I need to distinguish the directory in which
4701 files will reside from the directory in which they are installed (and from
4702 which they are presumably copied to the former directory by occult means).
4703
4704 EOM
4705         case "$installprefix" in
4706         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4707         *) dflt="$installprefix";;
4708         esac
4709 else
4710 $cat <<EOM
4711
4712 In some special cases, particularly when building $package for distribution,
4713 it is convenient to distinguish between the directory in which files should 
4714 be installed from the directory ($prefix) in which they 
4715 will eventually reside.  For most users, these two directories are the same.
4716
4717 EOM
4718         case "$installprefix" in
4719         '') dflt=$prefix ;;
4720         *) dflt=$installprefix;;
4721         esac
4722 fi
4723 fn=d~
4724 rp='What installation prefix should I use for installing files?'
4725 . ./getfile
4726 installprefix="$ans"
4727 installprefixexp="$ansexp"
4728
4729 : set the prefixit variable, to compute a suitable default value
4730 prefixit='case "$3" in
4731 ""|none)
4732         case "$oldprefix" in
4733         "") eval "$1=\"\$$2\"";;
4734         *)
4735                 case "$3" in
4736                 "") eval "$1=";;
4737                 none)
4738                         eval "tp=\"\$$2\"";
4739                         case "$tp" in
4740                         ""|" ") eval "$1=\"\$$2\"";;
4741                         *) eval "$1=";;
4742                         esac;;
4743                 esac;;
4744         esac;;
4745 *)
4746         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4747         case "$tp" in
4748         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4749         /*-$oldprefix/*|\~*-$oldprefix/*)
4750                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4751         *) eval "$1=\"\$$2\"";;
4752         esac;;
4753 esac'
4754
4755
4756 : get the patchlevel
4757 echo " "
4758 echo "Getting the current patchlevel..." >&4
4759 if $test -r $rsrc/patchlevel.h;then
4760         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4761         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4762         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4763         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4764         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4765         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4766 else
4767         revision=0
4768         patchlevel=0
4769         subversion=0
4770         api_revision=0
4771         api_version=0
4772         api_subversion=0
4773 fi
4774 $echo $n "(You have $package revision $revision" $c
4775 $echo $n " patchlevel $patchlevel" $c
4776 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4777 echo ".)"
4778 case "$osname" in
4779 dos|vms)
4780         : XXX Should be a Configure test for double-dots in filenames.
4781         version=`echo $revision $patchlevel $subversion | \
4782                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4783         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4784                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4785         ;;
4786 *)
4787         version=`echo $revision $patchlevel $subversion | \
4788                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4789         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4790                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4791         ;;
4792 esac
4793 : Special case the 5.005_xx maintenance series, which used 5.005
4794 : without any subversion label as a subdirectory in $sitelib
4795 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4796         api_versionstring='5.005'
4797 fi
4798
4799 : determine installation style
4800 : For now, try to deduce it from prefix unless it is already set.
4801 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4802 case "$installstyle" in
4803 '')     case "$prefix" in
4804                 *perl*) dflt='lib';;
4805                 *) dflt='lib/perl5' ;;
4806         esac
4807         ;;
4808 *)      dflt='lib/perl5' ;;
4809 esac
4810 : Probably not worth prompting for this since we prompt for all
4811 : the directories individually, and the prompt would be too long and
4812 : confusing anyway.
4813 installstyle=$dflt
4814
4815 : determine where private library files go
4816 : Usual default is /usr/local/lib/perl5/$version.
4817 : Also allow things like /opt/perl/lib/$version, since 
4818 : /opt/perl/lib/perl5... would be redundant.
4819 : The default "style" setting is made in installstyle.U
4820 case "$installstyle" in
4821 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4822 *)       set dflt privlib lib/$version ;;
4823 esac
4824 eval $prefixit
4825 $cat <<EOM
4826
4827 There are some auxiliary files for $package that need to be put into a
4828 private library directory that is accessible by everyone.
4829
4830 EOM
4831 fn=d~+
4832 rp='Pathname where the private library files will reside?'
4833 . ./getfile
4834 privlib="$ans"
4835 privlibexp="$ansexp"
4836 : Change installation prefix, if necessary.
4837 if $test X"$prefix" != X"$installprefix"; then
4838         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4839 else
4840         installprivlib="$privlibexp"
4841 fi
4842
4843 : set the prefixup variable, to restore leading tilda escape
4844 prefixup='case "$prefixexp" in
4845 "$prefix") ;;
4846 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4847 esac'
4848
4849 : determine where public architecture dependent libraries go
4850 set archlib archlib
4851 eval $prefixit
4852 : privlib default is /usr/local/lib/$package/$version
4853 : archlib default is /usr/local/lib/$package/$version/$archname
4854 : privlib may have an optional trailing /share.
4855 tdflt=`echo $privlib | $sed 's,/share$,,'`
4856 tdflt=$tdflt/$archname
4857 case "$archlib" in
4858 '')     dflt=$tdflt
4859         ;;
4860 *)      dflt="$archlib"
4861     ;;
4862 esac
4863 $cat <<EOM
4864
4865 $spackage contains architecture-dependent library files.  If you are
4866 sharing libraries in a heterogeneous environment, you might store
4867 these files in a separate location.  Otherwise, you can just include
4868 them with the rest of the public library files.
4869
4870 EOM
4871 fn=d+~
4872 rp='Where do you want to put the public architecture-dependent libraries?'
4873 . ./getfile
4874 archlib="$ans"
4875 archlibexp="$ansexp"
4876 if $test X"$archlib" = X"$privlib"; then
4877         d_archlib="$undef"
4878 else
4879         d_archlib="$define"
4880 fi
4881 : Change installation prefix, if necessary.
4882 if $test X"$prefix" != X"$installprefix"; then
4883         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4884 else
4885         installarchlib="$archlibexp"
4886 fi
4887
4888
4889 : Binary compatibility with 5.005 is not possible for builds
4890 : with advanced features
4891 case "$usethreads$usemultiplicity" in
4892 *define*)
4893         bincompat5005="$undef"
4894         d_bincompat5005="$undef"
4895         ;;
4896 *)      $cat <<EOM
4897
4898 Perl 5.006 can be compiled for binary compatibility with 5.005.
4899 If you decide to do so, you will be able to continue using most
4900 of the extensions that were compiled for Perl 5.005.
4901
4902 EOM
4903         case "$bincompat5005$d_bincompat5005" in
4904         *"$undef"*) dflt=n ;;
4905         *) dflt=y ;;
4906         esac
4907         rp='Binary compatibility with Perl 5.005?'
4908         . ./myread
4909         case "$ans" in
4910         y*) val="$define" ;;
4911         *)  val="$undef" ;;
4912         esac
4913         set d_bincompat5005
4914         eval $setvar
4915         case "$d_bincompat5005" in
4916         "$define")
4917                 bincompat5005="$define"
4918                 ;;
4919         *)      bincompat5005="$undef"
4920                 d_bincompat5005="$undef"
4921                 ;;
4922         esac
4923         ;;
4924 esac
4925
4926
4927 : see if setuid scripts can be secure
4928 $cat <<EOM
4929
4930 Some kernels have a bug that prevents setuid #! scripts from being
4931 secure.  Some sites have disabled setuid #! scripts because of this.
4932
4933 First let's decide if your kernel supports secure setuid #! scripts.
4934 (If setuid #! scripts would be secure but have been disabled anyway,
4935 don't say that they are secure if asked.)
4936
4937 EOM
4938
4939 val="$undef"
4940 if $test -d /dev/fd; then
4941         echo "#!$ls" >reflect
4942         chmod +x,u+s reflect
4943         ./reflect >flect 2>&1
4944         if $contains "/dev/fd" flect >/dev/null; then
4945                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4946                 val="$define"
4947         else
4948                 $cat <<EOM
4949 If you are not sure if they are secure, I can check but I'll need a
4950 username and password different from the one you are using right now.
4951 If you don't have such a username or don't want me to test, simply
4952 enter 'none'.
4953
4954 EOM
4955                 rp='Other username to test security of setuid scripts with?'
4956                 dflt='none'
4957                 . ./myread
4958                 case "$ans" in
4959                 n|none)
4960                         case "$d_suidsafe" in
4961                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4962                                 dflt=n;;
4963                         "$undef")
4964                                 echo "Well, the $hint value is *not* secure." >&4
4965                                 dflt=n;;
4966                         *)      echo "Well, the $hint value *is* secure." >&4
4967                                 dflt=y;;
4968                         esac
4969                         ;;
4970                 *)
4971                         $rm -f reflect flect
4972                         echo "#!$ls" >reflect
4973                         chmod +x,u+s reflect
4974                         echo >flect
4975                         chmod a+w flect
4976                         echo '"su" will (probably) prompt you for '"$ans's password."
4977                         su $ans -c './reflect >flect'
4978                         if $contains "/dev/fd" flect >/dev/null; then
4979                                 echo "Okay, it looks like setuid scripts are secure." >&4
4980                                 dflt=y
4981                         else
4982                                 echo "I don't think setuid scripts are secure." >&4
4983                                 dflt=n
4984                         fi
4985                         ;;
4986                 esac
4987                 rp='Does your kernel have *secure* setuid scripts?'
4988                 . ./myread
4989                 case "$ans" in
4990                 [yY]*)  val="$define";;
4991                 *)      val="$undef";;
4992                 esac
4993         fi
4994 else
4995         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4996         echo "(That's for file descriptors, not floppy disks.)"
4997         val="$undef"
4998 fi
4999 set d_suidsafe
5000 eval $setvar
5001
5002 $rm -f reflect flect
5003
5004 : now see if they want to do setuid emulation
5005 echo " "
5006 val="$undef"
5007 case "$d_suidsafe" in
5008 "$define")
5009         val="$undef"
5010         echo "No need to emulate SUID scripts since they are secure here." >& 4
5011         ;;
5012 *)
5013         $cat <<EOM
5014 Some systems have disabled setuid scripts, especially systems where
5015 setuid scripts cannot be secure.  On systems where setuid scripts have
5016 been disabled, the setuid/setgid bits on scripts are currently
5017 useless.  It is possible for $package to detect those bits and emulate
5018 setuid/setgid in a secure fashion.  This emulation will only work if
5019 setuid scripts have been disabled in your kernel.
5020
5021 EOM
5022         case "$d_dosuid" in
5023         "$define") dflt=y ;;
5024         *) dflt=n ;;
5025         esac
5026         rp="Do you want to do setuid/setgid emulation?"
5027         . ./myread
5028         case "$ans" in
5029         [yY]*)  val="$define";;
5030         *)      val="$undef";;
5031         esac
5032         ;;
5033 esac
5034 set d_dosuid
5035 eval $setvar
5036
5037 : determine filename position in cpp output
5038 echo " "
5039 echo "Computing filename position in cpp output for #include directives..." >&4
5040 echo '#include <stdio.h>' > foo.c
5041 $cat >fieldn <<EOF
5042 $startsh
5043 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5044 $grep '^[       ]*#.*stdio\.h' | \
5045 while read cline; do
5046         pos=1
5047         set \$cline
5048         while $test \$# -gt 0; do
5049                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5050                         echo "\$pos"
5051                         exit 0
5052                 fi
5053                 shift
5054                 pos=\`expr \$pos + 1\`
5055         done
5056 done
5057 EOF
5058 chmod +x fieldn
5059 fieldn=`./fieldn`
5060 $rm -f foo.c fieldn
5061 case $fieldn in
5062 '') pos='???';;
5063 1) pos=first;;
5064 2) pos=second;;
5065 3) pos=third;;
5066 *) pos="${fieldn}th";;
5067 esac
5068 echo "Your cpp writes the filename in the $pos field of the line."
5069
5070 : locate header file
5071 $cat >findhdr <<EOF
5072 $startsh
5073 wanted=\$1
5074 name=''
5075 for usrincdir in $usrinc
5076 do
5077         if test -f \$usrincdir/\$wanted; then
5078                 echo "\$usrincdir/\$wanted"
5079                 exit 0
5080         fi
5081 done
5082 awkprg='{ print \$$fieldn }'
5083 echo "#include <\$wanted>" > foo\$\$.c
5084 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5085 $grep "^[       ]*#.*\$wanted" | \
5086 while read cline; do
5087         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5088         case "\$name" in
5089         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5090         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5091         *) exit 2;;
5092         esac;
5093 done;
5094 #
5095 # status = 0: grep returned 0 lines, case statement not executed
5096 # status = 1: headerfile found
5097 # status = 2: while loop executed, no headerfile found
5098 #
5099 status=\$?
5100 $rm -f foo\$\$.c;
5101 if test \$status -eq 1; then
5102         exit 0;
5103 fi
5104 exit 1
5105 EOF
5106 chmod +x findhdr
5107
5108 : define an alternate in-header-list? function
5109 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5110 cont=true; xxf="echo \"<\$1> found.\" >&4";
5111 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5112 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5113 esac;
5114 case $# in 4) instead=instead;; *) instead="at last";; esac;
5115 while $test "$cont"; do
5116         xxx=`./findhdr $1`
5117         var=$2; eval "was=\$$2";
5118         if $test "$xxx" && $test -r "$xxx";
5119         then eval $xxf;
5120         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5121                 cont="";
5122         else eval $xxnf;
5123         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5124         set $yyy; shift; shift; yyy=$@;
5125         case $# in 0) cont="";;
5126         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5127                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5128         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5129                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5130         esac;
5131 done;
5132 while $test "$yyy";
5133 do set $yyy; var=$2; eval "was=\$$2";
5134         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5135         set $yyy; shift; shift; yyy=$@;
5136 done'
5137
5138 : see if this is a malloc.h system
5139 set malloc.h i_malloc
5140 eval $inhdr
5141
5142 : see if stdlib is available
5143 set stdlib.h i_stdlib
5144 eval $inhdr
5145
5146 : determine which malloc to compile in
5147 echo " "
5148 case "$usemymalloc" in
5149 ''|[yY]*|true|$define)  dflt='y' ;;
5150 *)      dflt='n' ;;
5151 esac
5152 rp="Do you wish to attempt to use the malloc that comes with $package?"
5153 . ./myread
5154 usemymalloc="$ans"
5155 case "$ans" in
5156 y*|true)
5157         usemymalloc='y'
5158         mallocsrc='malloc.c'
5159         mallocobj="malloc$_o"
5160         d_mymalloc="$define"
5161         case "$libs" in
5162         *-lmalloc*)
5163                 : Remove malloc from list of libraries to use
5164                 echo "Removing unneeded -lmalloc from library list" >&4
5165                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5166                 shift
5167                 libs="$*"
5168                 echo "libs = $libs" >&4
5169                 ;;
5170         esac
5171         ;;
5172 *)
5173         usemymalloc='n'
5174         mallocsrc=''
5175         mallocobj=''
5176         d_mymalloc="$undef"
5177         ;;
5178 esac
5179
5180 : compute the return types of malloc and free
5181 echo " "
5182 $cat >malloc.c <<END
5183 #$i_malloc I_MALLOC
5184 #$i_stdlib I_STDLIB
5185 #include <stdio.h>
5186 #include <sys/types.h>
5187 #ifdef I_MALLOC
5188 #include <malloc.h>
5189 #endif
5190 #ifdef I_STDLIB
5191 #include <stdlib.h>
5192 #endif
5193 #ifdef TRY_MALLOC
5194 void *malloc();
5195 #endif
5196 #ifdef TRY_FREE
5197 void free();
5198 #endif
5199 END
5200 case "$malloctype" in
5201 '')
5202         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5203                 malloctype='void *'
5204         else
5205                 malloctype='char *'
5206         fi
5207         ;;
5208 esac
5209 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5210
5211 case "$freetype" in
5212 '')
5213         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5214                 freetype='void'
5215         else
5216                 freetype='int'
5217         fi
5218         ;;
5219 esac
5220 echo "Your system uses $freetype free(), it would seem." >&4
5221 $rm -f malloc.[co]
5222 $cat <<EOM
5223
5224 The installation process will also create a directory for
5225 vendor-supplied add-ons.  Vendors who supply perl with their system
5226 may find it convenient to place all vendor-supplied files in this
5227 directory rather than in the main distribution directory.  This will
5228 ease upgrades between binary-compatible maintenance versions of perl.
5229
5230 Of course you may also use these directories in whatever way you see
5231 fit.  For example, you might use them to access modules shared over a
5232 company-wide network.
5233
5234 The default answer should be fine for most people.
5235 This causes further questions about vendor add-ons to be skipped
5236 and no vendor-specific directories will be configured for perl.
5237
5238 EOM
5239 rp='Do you want to configure vendor-specific add-on directories?'
5240 case "$usevendorprefix" in
5241 define|true|[yY]*) dflt=y ;;
5242 *)      : User may have set vendorprefix directly on Configure command line.
5243         case "$vendorprefix" in
5244         ''|' ') dflt=n ;;
5245         *)      dflt=y ;;
5246         esac
5247         ;;
5248 esac
5249 . ./myread
5250 case "$ans" in
5251 [yY]*)  fn=d~+
5252         rp='Installation prefix to use for vendor-supplied add-ons?'
5253         case "$vendorprefix" in
5254         '') dflt='' ;;
5255         *)  dflt=$vendorprefix ;;
5256         esac
5257         . ./getfile
5258         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5259         oldvendorprefix=''
5260         case "$vendorprefix" in
5261         '') ;;
5262         *)      case "$ans" in
5263                 "$prefix") ;;
5264                 *) oldvendorprefix="$prefix";;
5265                 esac
5266                 ;;
5267         esac
5268         usevendorprefix="$define"
5269         vendorprefix="$ans"
5270         vendorprefixexp="$ansexp"
5271         ;;
5272 *)      usevendorprefix="$undef"
5273         vendorprefix=''
5274         vendorprefixexp=''
5275         ;;
5276 esac
5277
5278 case "$vendorprefix" in
5279 '')     d_vendorlib="$undef"
5280         vendorlib=''
5281         vendorlibexp=''
5282         ;;
5283 *)      d_vendorlib="$define"
5284         : determine where vendor-supplied modules go.
5285         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5286         case "$vendorlib" in
5287         '')
5288                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5289                 case "$installstyle" in
5290                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5291                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5292                 esac
5293                 ;;
5294         *)      dflt="$vendorlib"
5295                 ;;
5296         esac
5297         fn=d~+
5298         rp='Pathname for the vendor-supplied library files?'
5299         . ./getfile
5300         vendorlib="$ans"
5301         vendorlibexp="$ansexp"
5302         ;;
5303 esac
5304 : Change installation prefix, if necessary.
5305 if $test X"$prefix" != X"$installprefix"; then
5306         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5307 else
5308         installvendorlib="$vendorlibexp"
5309 fi
5310
5311 : Cruising for prototypes
5312 echo " "
5313 echo "Checking out function prototypes..." >&4
5314 $cat >prototype.c <<'EOCP'
5315 int main(int argc, char *argv[]) {
5316         exit(0);}
5317 EOCP
5318 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5319         echo "Your C compiler appears to support function prototypes."
5320         val="$define"
5321 else
5322         echo "Your C compiler doesn't seem to understand function prototypes."
5323         val="$undef"
5324 fi
5325 set prototype
5326 eval $setvar
5327 $rm -f prototype*
5328
5329 case "$prototype" in
5330 "$define") ;;
5331 *)      ansi2knr='ansi2knr'
5332         echo " "
5333         cat <<EOM >&4
5334
5335 $me:  FATAL ERROR:
5336 This version of $package can only be compiled by a compiler that 
5337 understands function prototypes.  Unfortunately, your C compiler 
5338         $cc $ccflags
5339 doesn't seem to understand them.  Sorry about that.
5340
5341 If GNU cc is available for your system, perhaps you could try that instead.  
5342
5343 Eventually, we hope to support building Perl with pre-ANSI compilers.
5344 If you would like to help in that effort, please contact <perlbug@perl.org>.
5345
5346 Aborting Configure now.
5347 EOM
5348         exit 2
5349         ;;
5350 esac
5351
5352 : determine where public executables go
5353 echo " "
5354 set dflt bin bin
5355 eval $prefixit
5356 fn=d~
5357 rp='Pathname where the public executables will reside?'
5358 . ./getfile
5359 if $test "X$ansexp" != "X$binexp"; then
5360         installbin=''
5361 fi
5362 bin="$ans"
5363 binexp="$ansexp"
5364 : Change installation prefix, if necessary.
5365 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5366 if $test X"$prefix" != X"$installprefix"; then
5367         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5368 else
5369         installbin="$binexp"
5370 fi
5371
5372 : Find perl5.005 or later.
5373 echo "Looking for a previously installed perl5.005 or later... "
5374 case "$perl5" in
5375 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
5376                 : Check if this perl is recent and can load a simple module
5377                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5378                         perl5=$tdir/perl
5379                         break;
5380                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
5381                         perl5=$tdir/perl
5382                         break;
5383                 fi
5384         done
5385         ;;
5386 *)      perl5="$perl5"
5387         ;;
5388 esac
5389 case "$perl5" in
5390 '')     echo "None found.  That's ok.";;
5391 *)      echo "Using $perl5." ;;
5392 esac
5393
5394 $cat <<EOM
5395
5396 After $package is installed, you may wish to install various
5397 add-on modules and utilities.  Typically, these add-ons will
5398 be installed under $prefix with the rest
5399 of this package.  However, you may wish to install such add-ons
5400 elsewhere under a different prefix.
5401
5402 If you do not wish to put everything under a single prefix, that's
5403 ok.  You will be prompted for the individual locations; this siteprefix
5404 is only used to suggest the defaults.
5405
5406 The default should be fine for most people.
5407
5408 EOM
5409 fn=d~+
5410 rp='Installation prefix to use for add-on modules and utilities?'
5411 : XXX Here might be another good place for an installstyle setting.
5412 case "$siteprefix" in
5413 '') dflt=$prefix ;;
5414 *)  dflt=$siteprefix ;;
5415 esac
5416 . ./getfile
5417 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5418 oldsiteprefix=''
5419 case "$siteprefix" in
5420 '') ;;
5421 *)      case "$ans" in
5422         "$prefix") ;;
5423         *) oldsiteprefix="$prefix";;
5424         esac
5425         ;;
5426 esac
5427 siteprefix="$ans"
5428 siteprefixexp="$ansexp"
5429
5430 : determine where site specific libraries go.
5431 : Usual default is /usr/local/lib/perl5/site_perl/$version
5432 : The default "style" setting is made in installstyle.U
5433 : XXX No longer works with Prefixit stuff.
5434 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5435 case "$sitelib" in
5436 '') case "$installstyle" in
5437         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5438         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5439         esac
5440         ;;
5441 *)      dflt="$sitelib"
5442         ;;
5443 esac
5444 $cat <<EOM
5445
5446 The installation process will create a directory for
5447 site-specific extensions and modules.  Most users find it convenient
5448 to place all site-specific files in this directory rather than in the
5449 main distribution directory.
5450
5451 EOM
5452 fn=d~+
5453 rp='Pathname for the site-specific library files?'
5454 . ./getfile
5455 sitelib="$ans"
5456 sitelibexp="$ansexp"
5457 : Change installation prefix, if necessary.
5458 if $test X"$prefix" != X"$installprefix"; then
5459         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5460 else
5461         installsitelib="$sitelibexp"
5462 fi
5463
5464 : Determine list of previous versions to include in @INC
5465 $cat > getverlist <<EOPL
5466 #!$perl5 -w
5467 use File::Basename;
5468 \$api_versionstring = "$api_versionstring";
5469 \$version = "$version";
5470 \$sitelib = "$sitelib";
5471 \$archname = "$archname";
5472 EOPL
5473         $cat >> getverlist <<'EOPL'
5474 # Can't have leading @ because metaconfig interprets it as a command!
5475 ;@inc_version_list=();
5476 $stem=dirname($sitelib);
5477 # XXX Redo to do opendir/readdir? 
5478 if (-d $stem) {
5479     chdir($stem);
5480     ;@candidates = glob("5.*");
5481 }
5482 else {
5483     ;@candidates = ();
5484 }
5485
5486 # XXX ToDo:  These comparisons must be reworked when two-digit
5487 # subversions come along, so that 5.7.10 compares as greater than
5488 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5489 # widespread that we can use the built-in version vectors rather
5490 # than reinventing them here.  For 5.6.0, however, we must
5491 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5492 foreach $d (@candidates) {
5493     if ($d lt $version) {
5494         if ($d ge $api_versionstring) {
5495             unshift(@inc_version_list, "$d/$archname", $d);
5496         }
5497         elsif ($d ge "5.005") {
5498             unshift(@inc_version_list, $d);
5499         }
5500     }
5501     else {
5502         # Skip newer version.  I.e. don't look in
5503         # 5.7.0 if we're installing 5.6.1.
5504     }
5505 }
5506
5507 if (@inc_version_list) {
5508     print join(' ', @inc_version_list);
5509 }
5510 else {
5511     # Blank space to preserve value for next Configure run.
5512     print " ";
5513 }
5514 EOPL
5515 chmod +x getverlist
5516 case "$inc_version_list" in
5517 '')     if test -x "$perl5"; then
5518                 dflt=`$perl5 getverlist`
5519         else
5520                 dflt='none'
5521         fi
5522         ;;
5523 $undef) dflt='none' ;;
5524 *)  dflt="$inc_version_list" ;;
5525 esac
5526 case "$dflt" in
5527 ''|' ') dflt=none ;;
5528 esac
5529 $cat <<'EOM'
5530
5531 In order to ease the process of upgrading, this version of perl 
5532 can be configured to use modules built and installed with earlier 
5533 versions of perl that were installed under $prefix.  Specify here
5534 the list of earlier versions that this version of perl should check.
5535 If Configure detected no earlier versions of perl installed under
5536 $prefix, then the list will be empty.  Answer 'none' to tell perl
5537 to not search earlier versions.
5538
5539 The default should almost always be sensible, so if you're not sure,
5540 just accept the default.
5541 EOM
5542
5543 rp='List of earlier versions to include in @INC?'
5544 . ./myread
5545 case "$ans" in
5546 [Nn]one|''|' ') inc_version_list=' ' ;;
5547 *) inc_version_list="$ans" ;;
5548 esac
5549 case "$inc_version_list" in
5550 ''|' ') 
5551         inc_version_list_init='0';;
5552 *)      inc_version_list_init=`echo $inc_version_list |
5553                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5554         ;;
5555 esac
5556 $rm -f getverlist
5557
5558 : determine whether to install perl also as /usr/bin/perl
5559
5560 echo " "
5561 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5562         $cat <<EOM
5563 Many scripts expect to perl to be installed as /usr/bin/perl.
5564 I can install the perl you are about to compile also as /usr/bin/perl
5565 (in addition to $installbin/perl).
5566 EOM
5567         case "$installusrbinperl" in
5568         "$undef"|[nN]*) dflt='n';;
5569         *)              dflt='y';;
5570         esac
5571         rp="Do you want to install perl as /usr/bin/perl?"
5572         . ./myread
5573         case "$ans" in
5574         [yY]*)  val="$define";;
5575         *)      val="$undef" ;;
5576         esac
5577 else
5578         val="$undef"
5579 fi
5580 set installusrbinperl
5581 eval $setvar
5582
5583 echo " "
5584 echo "Checking for GNU C Library..." >&4
5585 cat >gnulibc.c <<EOM
5586 #include <stdio.h>
5587 int main()
5588 {
5589 #ifdef __GLIBC__
5590     exit(0);
5591 #else
5592     exit(1);
5593 #endif
5594 }
5595 EOM
5596 set gnulibc
5597 if eval $compile_ok && ./gnulibc; then
5598         val="$define"
5599         echo "You are using the GNU C Library"
5600 else
5601         val="$undef"
5602         echo "You are not using the GNU C Library"
5603 fi
5604 $rm -f gnulibc*
5605 set d_gnulibc
5606 eval $setvar
5607
5608 : see if nm is to be used to determine whether a symbol is defined or not
5609 case "$usenm" in
5610 '')
5611         dflt=''
5612         case "$d_gnulibc" in
5613         "$define")
5614                 echo " "
5615                 echo "nm probably won't work on the GNU C Library." >&4
5616                 dflt=n
5617                 ;;
5618         esac
5619         case "$dflt" in
5620         '') 
5621                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5622                         echo " "
5623                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5624                         echo "'nm' won't be sufficient on this sytem." >&4
5625                         dflt=n
5626                 fi
5627                 ;;
5628         esac
5629         case "$dflt" in
5630         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5631                 if $test $dflt -gt 20; then
5632                         dflt=y
5633                 else
5634                         dflt=n
5635                 fi
5636                 ;;
5637         esac
5638         ;;
5639 *)
5640         case "$usenm" in
5641         true|$define) dflt=y;;
5642         *) dflt=n;;
5643         esac
5644         ;;
5645 esac
5646 $cat <<EOM
5647
5648 I can use $nm to extract the symbols from your C libraries. This
5649 is a time consuming task which may generate huge output on the disk (up
5650 to 3 megabytes) but that should make the symbols extraction faster. The
5651 alternative is to skip the 'nm' extraction part and to compile a small
5652 test program instead to determine whether each symbol is present. If
5653 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5654 this may be the best solution.
5655
5656 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5657
5658 EOM
5659 rp="Shall I use $nm to extract C symbols from the libraries?"
5660 . ./myread
5661 case "$ans" in
5662 [Nn]*) usenm=false;;
5663 *) usenm=true;;
5664 esac
5665
5666 runnm=$usenm
5667 case "$reuseval" in
5668 true) runnm=false;;
5669 esac
5670
5671 : nm options which may be necessary
5672 case "$nm_opt" in
5673 '') if $test -f /mach_boot; then
5674                 nm_opt=''       # Mach
5675         elif $test -d /usr/ccs/lib; then
5676                 nm_opt='-p'     # Solaris (and SunOS?)
5677         elif $test -f /dgux; then
5678                 nm_opt='-p'     # DG-UX
5679         elif $test -f /lib64/rld; then
5680                 nm_opt='-p'     # 64-bit Irix
5681         else
5682                 nm_opt=''
5683         fi;;
5684 esac
5685
5686 : nm options which may be necessary for shared libraries but illegal
5687 : for archive libraries.  Thank you, Linux.
5688 case "$nm_so_opt" in
5689 '')     case "$myuname" in
5690         *linux*)
5691                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5692                         nm_so_opt='--dynamic'
5693                 fi
5694                 ;;
5695         esac
5696         ;;
5697 esac
5698
5699 case "$runnm" in
5700 true)
5701 : get list of predefined functions in a handy place
5702 echo " "
5703 case "$libc" in
5704 '') libc=unknown
5705         case "$libs" in
5706         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5707         esac
5708         ;;
5709 esac
5710 libnames='';
5711 case "$libs" in
5712 '') ;;
5713 *)  for thislib in $libs; do
5714         case "$thislib" in
5715         -lc|-lc_s)
5716                 : Handle C library specially below.
5717                 ;;
5718         -l*)
5719                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5720                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5721                         :
5722                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5723                         :
5724                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5725                         :
5726                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5727                         :
5728                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5729                         :
5730                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5731                         :
5732                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5733                         :
5734                 else
5735                         try=''
5736                 fi
5737                 libnames="$libnames $try"
5738                 ;;
5739         *) libnames="$libnames $thislib" ;;
5740         esac
5741         done
5742         ;;
5743 esac
5744 xxx=normal
5745 case "$libc" in
5746 unknown)
5747         set /lib/libc.$so
5748         for xxx in $libpth; do
5749                 $test -r $1 || set $xxx/libc.$so
5750                 : The messy sed command sorts on library version numbers.
5751                 $test -r $1 || \
5752                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5753                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5754                                 h
5755                                 s/[0-9][0-9]*/0000&/g
5756                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5757                                 G
5758                                 s/\n/ /' | \
5759                          sort | $sed -e 's/^.* //'`
5760                 eval set \$$#
5761         done
5762         $test -r $1 || set /usr/ccs/lib/libc.$so
5763         $test -r $1 || set /lib/libsys_s$_a
5764         ;;
5765 *)
5766         set blurfl
5767         ;;
5768 esac
5769 if $test -r "$1"; then
5770         echo "Your (shared) C library seems to be in $1."
5771         libc="$1"
5772 elif $test -r /lib/libc && $test -r /lib/clib; then
5773         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5774         xxx=apollo
5775         libc='/lib/clib /lib/libc'
5776         if $test -r /lib/syslib; then
5777                 echo "(Your math library is in /lib/syslib.)"
5778                 libc="$libc /lib/syslib"
5779         fi
5780 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5781         echo "Your C library seems to be in $libc, as you said before."
5782 elif $test -r $incpath/usr/lib/libc$_a; then
5783         libc=$incpath/usr/lib/libc$_a;
5784         echo "Your C library seems to be in $libc.  That's fine."
5785 elif $test -r /lib/libc$_a; then
5786         libc=/lib/libc$_a;
5787         echo "Your C library seems to be in $libc.  You're normal."
5788 else
5789         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5790                 :
5791         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5792                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5793         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5794                 :
5795         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5796                 :
5797         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5798                 :
5799         else
5800                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5801         fi
5802         if $test -r "$tans"; then
5803                 echo "Your C library seems to be in $tans, of all places."
5804                 libc=$tans
5805         else
5806                 libc='blurfl'
5807         fi
5808 fi
5809 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5810         dflt="$libc"
5811         cat <<EOM
5812
5813 If the guess above is wrong (which it might be if you're using a strange
5814 compiler, or your machine supports multiple models), you can override it here.
5815
5816 EOM
5817 else
5818         dflt=''
5819         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5820         cat >&4 <<EOM
5821 I can't seem to find your C library.  I've looked in the following places:
5822
5823 EOM
5824         $sed 's/^/      /' libpath
5825         cat <<EOM
5826
5827 None of these seems to contain your C library. I need to get its name...
5828
5829 EOM
5830 fi
5831 fn=f
5832 rp='Where is your C library?'
5833 . ./getfile
5834 libc="$ans"
5835
5836 echo " "
5837 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5838 set X `cat libnames`
5839 shift
5840 xxx=files
5841 case $# in 1) xxx=file; esac
5842 echo "Extracting names from the following $xxx for later perusal:" >&4
5843 echo " "
5844 $sed 's/^/      /' libnames >&4
5845 echo " "
5846 $echo $n "This may take a while...$c" >&4
5847
5848 for file in $*; do
5849         case $file in
5850         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5851         *) $nm $nm_opt $file 2>/dev/null;;
5852         esac
5853 done >libc.tmp
5854
5855 $echo $n ".$c"
5856 $grep fprintf libc.tmp > libc.ptf
5857 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5858 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5859 xxx='[ADTSIW]'
5860 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5861         eval $xscan;\
5862         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5863                 eval $xrun
5864 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5865         eval $xscan;\
5866         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5867                 eval $xrun
5868 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5869         eval $xscan;\
5870         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5871                 eval $xrun
5872 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5873         eval $xscan;\
5874         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5875                 eval $xrun
5876 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5877         eval $xscan;\
5878         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5879                 eval $xrun
5880 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5881         eval $xscan;\
5882         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5883                 eval $xrun
5884 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5885                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5886         eval $xscan;\
5887         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5888                 eval $xrun
5889 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5890         eval $xscan;\
5891         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5892                 eval $xrun
5893 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5894         eval $xscan;\
5895         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5896                 eval $xrun
5897 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5898         eval $xscan;\
5899         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5900                 eval $xrun
5901 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5902         eval $xscan;\
5903         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5904                 eval $xrun
5905 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5906         eval $xscan;\
5907         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5908                 eval $xrun
5909 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5910         eval $xscan;\
5911         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5912                 eval $xrun
5913 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5914         eval $xscan;\
5915         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5916                 eval $xrun
5917 else
5918         $nm -p $* 2>/dev/null >libc.tmp
5919         $grep fprintf libc.tmp > libc.ptf
5920         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5921                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5922         then
5923                 nm_opt='-p'
5924                 eval $xrun
5925         else
5926                 echo " "
5927                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5928                 com=''
5929                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5930                         for thisname in $libnames $libc; do
5931                                 $ar t $thisname >>libc.tmp
5932                         done
5933                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5934                         echo "Ok." >&4
5935                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5936                         # Repeat libc to extract forwarders to DLL entries too
5937                         for thisname in $libnames $libc; do
5938                                 $ar tv $thisname >>libc.tmp
5939                                 # Revision 50 of EMX has bug in $ar.
5940                                 # it will not extract forwarders to DLL entries
5941                                 # Use emximp which will extract exactly them.
5942                                 emximp -o tmp.imp $thisname \
5943                                     2>/dev/null && \
5944                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5945                                     < tmp.imp >>libc.tmp
5946                                 $rm tmp.imp
5947                         done
5948                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5949                         echo "Ok." >&4
5950                 else
5951                         echo "$ar didn't seem to work right." >&4
5952                         echo "Maybe this is a Cray...trying bld instead..." >&4
5953                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5954                         then
5955                                 for thisname in $libnames; do
5956                                         bld t $libnames | \
5957                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5958                                         $ar t $thisname >>libc.tmp
5959                                 done
5960                                 echo "Ok." >&4
5961                         else
5962                                 echo "That didn't work either.  Giving up." >&4
5963                                 exit 1
5964                         fi
5965                 fi
5966         fi
5967 fi
5968 nm_extract="$com"
5969 if $test -f /lib/syscalls.exp; then
5970         echo " "
5971         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5972         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5973 fi
5974 ;;
5975 esac
5976 $rm -f libnames libpath
5977
5978 : see if dld is available
5979 set dld.h i_dld
5980 eval $inhdr
5981
5982 : is a C symbol defined?
5983 csym='tlook=$1;
5984 case "$3" in
5985 -v) tf=libc.tmp; tc=""; tdc="";;
5986 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5987 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5988 esac;
5989 tx=yes;
5990 case "$reuseval-$4" in
5991 true-) ;;
5992 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5993 esac;
5994 case "$tx" in
5995 yes)
5996         case "$runnm" in
5997         true)
5998                 if $contains $tlook $tf >/dev/null 2>&1;
5999                 then tval=true;
6000                 else tval=false;
6001                 fi;;
6002         *)
6003                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
6004                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
6005                 then tval=true;
6006                 else tval=false;
6007                 fi;
6008                 $rm -f t t.c;;
6009         esac;;
6010 *)
6011         case "$tval" in
6012         $define) tval=true;;
6013         *) tval=false;;
6014         esac;;
6015 esac;
6016 eval "$2=$tval"'
6017
6018 : define an is-in-libc? function
6019 inlibc='echo " "; td=$define; tu=$undef;
6020 sym=$1; var=$2; eval "was=\$$2";
6021 tx=yes;
6022 case "$reuseval$was" in
6023 true) ;;
6024 true*) tx=no;;
6025 esac;
6026 case "$tx" in
6027 yes)
6028         set $sym tres -f;
6029         eval $csym;
6030         case "$tres" in
6031         true)
6032                 echo "$sym() found." >&4;
6033                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6034         *)
6035                 echo "$sym() NOT found." >&4;
6036                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6037         esac;;
6038 *)
6039         case "$was" in
6040         $define) echo "$sym() found." >&4;;
6041         *) echo "$sym() NOT found." >&4;;
6042         esac;;
6043 esac'
6044
6045 : see if dlopen exists
6046 xxx_runnm="$runnm"
6047 runnm=false
6048 set dlopen d_dlopen
6049 eval $inlibc
6050 runnm="$xxx_runnm"
6051
6052 : determine which dynamic loading, if any, to compile in
6053 echo " "
6054 dldir="ext/DynaLoader"
6055 case "$usedl" in
6056 $define|y|true)
6057         dflt='y'
6058         usedl="$define"
6059         ;;
6060 $undef|n|false)
6061         dflt='n'
6062         usedl="$undef"
6063         ;;
6064 *) 
6065         dflt='n'
6066         case "$d_dlopen" in
6067             $define) dflt='y' ;;
6068         esac
6069         case "$i_dld" in
6070             $define) dflt='y' ;;
6071         esac
6072         : Does a dl_xxx.xs file exist for this operating system
6073         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6074         ;;
6075 esac
6076 rp="Do you wish to use dynamic loading?"
6077 . ./myread
6078 usedl="$ans"
6079 case "$ans" in
6080 y*) usedl="$define"
6081         case "$dlsrc" in
6082         '')
6083                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6084                         dflt="$dldir/dl_${osname}.xs"
6085                 elif $test "$d_dlopen" = "$define" ; then
6086                         dflt="$dldir/dl_dlopen.xs"
6087                 elif $test "$i_dld" = "$define" ; then
6088                         dflt="$dldir/dl_dld.xs"
6089                 else
6090                         dflt=''
6091                 fi
6092                 ;;
6093         *)      dflt="$dldir/$dlsrc"
6094                 ;;
6095         esac
6096     echo "The following dynamic loading files are available:"
6097         : Can not go over to $dldir because getfile has path hard-coded in.
6098         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6099         rp="Source file to use for dynamic loading"
6100         fn="fne"
6101         gfpth="$src"
6102         . ./getfile
6103         usedl="$define"
6104         : emulate basename
6105         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6106
6107         $cat << EOM
6108
6109 Some systems may require passing special flags to $cc -c to
6110 compile modules that will be used to create a shared library.
6111 To use no flags, say "none".
6112
6113 EOM
6114     case "$cccdlflags" in
6115     '') case "$gccversion" in
6116                 '') case "$osname" in
6117                         hpux)   dflt='+z' ;;
6118                         next)   dflt='none' ;;
6119                         irix*)  dflt='-KPIC' ;;
6120                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6121                         sunos)  dflt='-pic' ;;
6122                         *)      dflt='none' ;;
6123                     esac
6124                         ;;
6125                 *)  case "$osname" in
6126                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6127                         *)      dflt='-fpic' ;;
6128                     esac ;;
6129             esac ;;
6130         ' ') dflt='none' ;;
6131     *)  dflt="$cccdlflags" ;;
6132     esac
6133     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6134     . ./myread
6135     case "$ans" in
6136     none) cccdlflags=' ' ;;
6137     *) cccdlflags="$ans" ;;
6138     esac
6139
6140     cat << EOM
6141
6142 Some systems use ld to create libraries that can be dynamically loaded,
6143 while other systems (such as those using ELF) use $cc.
6144
6145 EOM
6146         case "$ld" in
6147         '')     $cat >try.c <<'EOM'
6148 /* Test for whether ELF binaries are produced */
6149 #include <fcntl.h>
6150 #include <stdlib.h>
6151 int main() {
6152         char b[4];
6153         int i = open("a.out",O_RDONLY);
6154         if(i == -1) 
6155                 exit(1); /* fail */
6156         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6157                 exit(0); /* succeed (yes, it's ELF) */
6158         else
6159                 exit(1); /* fail */
6160 }
6161 EOM
6162                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6163                         cat <<EOM
6164 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6165 EOM
6166                         dflt="$cc"
6167                 else
6168                         echo "I'll use ld to build dynamic libraries."
6169                         dflt='ld'
6170                 fi
6171                 rm -f try.c a.out
6172                 ;;
6173         *)      dflt="$ld"
6174                 ;;
6175         esac
6176
6177     rp="What command should be used to create dynamic libraries?"
6178     . ./myread
6179         ld="$ans"
6180
6181     cat << EOM
6182
6183 Some systems may require passing special flags to $ld to create a
6184 library that can be dynamically loaded.  If your ld flags include
6185 -L/other/path options to locate libraries outside your loader's normal
6186 search path, you may need to specify those -L options here as well.  To
6187 use no flags, say "none".
6188
6189 EOM
6190     case "$lddlflags" in
6191     '') case "$osname" in
6192                         beos) dflt='-nostart' ;;
6193                         hpux) case "$gccversion" in
6194                               '') dflt='-b +vnocompatwarnings' ;;
6195                               esac
6196                               ;;        
6197                         linux|irix*)    dflt='-shared' ;;
6198                         next)  dflt='none' ;;
6199                         solaris) dflt='-G' ;;
6200                         sunos) dflt='-assert nodefinitions' ;;
6201                         svr4*|esix*) dflt="-G $ldflags" ;;
6202                 *)     dflt='none' ;;
6203                         esac
6204                         ;;
6205     *) dflt="$lddlflags" ;;
6206     esac
6207
6208         : Try to guess additional flags to pick up local libraries.
6209         : Be careful not to append to a plain 'none'
6210         case "$dflt" in
6211         none) dflt='' ;;
6212         esac
6213         for thisflag in $ldflags; do
6214                 case "$thisflag" in
6215                 -L*)
6216                         case " $dflt " in
6217                         *" $thisflag "*) ;;
6218                         *) dflt="$dflt $thisflag" ;;
6219                         esac
6220                         ;;
6221                 esac
6222         done
6223
6224         case "$dflt" in
6225         ''|' ') dflt='none' ;;
6226         esac
6227
6228     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6229     . ./myread
6230     case "$ans" in
6231     none) lddlflags=' ' ;;
6232     *) lddlflags="$ans" ;;
6233     esac
6234
6235         cat <<EOM
6236
6237 Some systems may require passing special flags to $cc to indicate that
6238 the resulting executable will use dynamic linking.  To use no flags,
6239 say "none".
6240
6241 EOM
6242     case "$ccdlflags" in
6243     '') case "$osname" in
6244                 hpux)   dflt='-Wl,-E' ;;
6245                 linux)  dflt='-rdynamic' ;;
6246                 next)   dflt='none' ;;
6247                 sunos)  dflt='none' ;;
6248                 *)      dflt='none' ;;
6249             esac ;;
6250     ' ')  dflt='none' ;;
6251     *)  dflt="$ccdlflags" ;;
6252     esac
6253     rp="Any special flags to pass to $cc to use dynamic linking?"
6254     . ./myread
6255     case "$ans" in
6256     none) ccdlflags=' ' ;;
6257     *) ccdlflags="$ans" ;;
6258     esac
6259     ;;
6260 *)  usedl="$undef"
6261         ld='ld'
6262     dlsrc='dl_none.xs'
6263     lddlflags=''
6264     ccdlflags=''
6265     ;;
6266 esac
6267
6268 also=''
6269 case "$usedl" in
6270 $undef)
6271         # No dynamic loading being used, so don't bother even to prompt.
6272         useshrplib='false'
6273         ;;
6274 *)      case "$useshrplib" in
6275         '')     case "$osname" in
6276                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6277                         dflt=y
6278                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6279                         ;;
6280                 next*)
6281                         case "$osvers" in
6282                         4*)     dflt=y
6283                                 also='Building a shared libperl is needed for MAB support.'
6284                                 ;;
6285                         *)      dflt=n
6286                                 ;;
6287                         esac
6288                         ;;
6289                 *)      dflt=n
6290                         ;;
6291                 esac
6292                 ;;
6293         $define|true|[Yy]*)
6294                 dflt=y
6295                 ;;
6296         *)      dflt=n
6297                 ;;
6298         esac
6299         $cat << EOM
6300
6301 The perl executable is normally obtained by linking perlmain.c with
6302 libperl${_a}, any static extensions (usually just DynaLoader), and
6303 any other libraries needed on this system (such as -lm, etc.).  Since
6304 your system supports dynamic loading, it is probably possible to build
6305 a shared libperl.$so.  If you will have more than one executable linked
6306 to libperl.$so, this will significantly reduce the size of each
6307 executable, but it may have a noticeable affect on performance.  The
6308 default is probably sensible for your system.
6309 $also
6310
6311 EOM
6312         rp="Build a shared libperl.$so (y/n)"
6313         . ./myread
6314         case "$ans" in
6315         true|$define|[Yy]*)
6316                 useshrplib='true'  ;;
6317         *)      useshrplib='false' ;;
6318         esac
6319         ;;
6320 esac
6321
6322 case "$useshrplib" in
6323 true)
6324         case "$libperl" in
6325         '')
6326                 # Figure out a good name for libperl.so.  Since it gets stored in
6327                 # a version-specific architecture-dependent library, the version
6328                 # number isn't really that important, except for making cc/ld happy.
6329                 #
6330                 # A name such as libperl.so.3.1
6331                 majmin="libperl.$so.$patchlevel.$subversion"
6332                 # A name such as libperl.so.301
6333                 majonly=`echo $patchlevel $subversion |
6334                         $awk '{printf "%d%02d", $1, $2}'`
6335                 majonly=libperl.$so.$majonly
6336                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6337                 # rely on figuring it out from the naming of libc.
6338                 case "${osname}${osvers}" in
6339                 next4*)
6340                         dflt=libperl.5.$so
6341                         # XXX How handle the --version stuff for MAB?
6342                         ;;
6343                 linux*)  # ld won't link with a bare -lperl otherwise.
6344                         dflt=libperl.$so
6345                         ;;
6346                 cygwin*) # include version
6347                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6348                         ;;
6349                 *)      # Try to guess based on whether libc has major.minor.
6350                         case "$libc" in
6351                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6352                         *libc.$so.[0-9]*) dflt=$majonly ;;
6353                         *)      dflt=libperl.$so ;;
6354                         esac
6355                         ;;
6356                 esac
6357                 ;;
6358         *)      dflt=$libperl
6359                 ;;
6360         esac
6361         cat << EOM
6362
6363 I need to select a good name for the shared libperl.  If your system uses
6364 library names with major and minor numbers, then you might want something
6365 like $majmin.  Alternatively, if your system uses a single version
6366 number for shared libraries, then you might want to use $majonly.
6367 Or, your system might be quite happy with a simple libperl.$so.
6368
6369 Since the shared libperl will get installed into a version-specific
6370 architecture-dependent directory, the version number of the shared perl
6371 library probably isn't important, so the default should be o.k.
6372
6373 EOM
6374         rp='What name do you want to give to the shared libperl?'
6375         . ./myread
6376         libperl=$ans
6377         echo "Ok, I'll use $libperl"
6378         ;;
6379 *)
6380         libperl="libperl${_a}"
6381         ;;
6382 esac
6383
6384 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6385 case "$shrpdir" in
6386 '') ;;
6387 *)      $cat >&4 <<EOM
6388 WARNING:  Use of the shrpdir variable for the installation location of
6389 the shared $libperl is not supported.  It was never documented and
6390 will not work in this version.  Let me (perlbug@perl.com)
6391 know of any problems this may cause.
6392
6393 EOM
6394         case "$shrpdir" in
6395         "$archlibexp/CORE")
6396                 $cat >&4 <<EOM
6397 But your current setting of $shrpdir is
6398 the default anyway, so it's harmless.
6399 EOM
6400                 ;;
6401         *)
6402                 $cat >&4 <<EOM
6403 Further, your current attempted setting of $shrpdir
6404 conflicts with the value of $archlibexp/CORE
6405 that installperl will use.
6406 EOM
6407                 ;;
6408         esac
6409         ;;
6410 esac
6411
6412 # How will the perl executable find the installed shared $libperl?
6413 # Add $xxx to ccdlflags.
6414 # If we can't figure out a command-line option, use $shrpenv to
6415 # set env LD_RUN_PATH.  The main perl makefile uses this.
6416 shrpdir=$archlibexp/CORE
6417 xxx=''
6418 tmp_shrpenv=''
6419 if "$useshrplib"; then
6420     case "$osname" in 
6421         aix)
6422                 # We'll set it in Makefile.SH...
6423                 ;;
6424         solaris|netbsd)
6425                 xxx="-R $shrpdir"
6426                 ;;
6427         freebsd)
6428                 xxx="-Wl,-R$shrpdir"
6429                 ;;
6430         linux|irix*|dec_osf)
6431                 xxx="-Wl,-rpath,$shrpdir"
6432                 ;;
6433         next)
6434                 # next doesn't like the default...
6435                 ;;
6436         beos)
6437                 # beos doesn't like the default, either.
6438                 ;;
6439         hpux*)
6440                 # hpux doesn't like the default, either.
6441                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6442                 ;;
6443         *)
6444                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6445                 ;;
6446         esac
6447         case "$xxx" in
6448         '') ;;
6449         *)      
6450                 # Only add $xxx if it isn't already in ccdlflags.
6451                 case " $ccdlflags " in
6452                 *" $xxx "*)     ;;
6453                 *)      ccdlflags="$ccdlflags $xxx"
6454                         cat <<EOM >&4
6455
6456 Adding $xxx to the flags
6457 passed to $ld so that the perl executable will find the 
6458 installed shared $libperl.
6459
6460 EOM
6461                         ;;
6462                 esac
6463                 ;;
6464         esac
6465 fi
6466 # Fix ccdlflags in AIX for building external extensions.
6467 # (For building Perl itself bare -bE:perl.exp is needed,
6468 #  Makefile.SH takes care of this.)
6469 case "$osname" in
6470 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6471 esac
6472 # Respect a hint or command-line value.
6473 case "$shrpenv" in
6474 '') shrpenv="$tmp_shrpenv" ;;
6475 esac
6476 case "$ldlibpthname" in
6477 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6478 none)   ldlibpthname='' ;;
6479 esac
6480
6481 : determine where manual pages go
6482 set man1dir man1dir none
6483 eval $prefixit
6484 $cat <<EOM
6485
6486 $spackage has manual pages available in source form.
6487 EOM
6488 case "$nroff" in
6489 nroff)
6490         echo "However, you don't have nroff, so they're probably useless to you."
6491         case "$man1dir" in
6492         '') man1dir="none";;
6493         esac;;
6494 esac
6495 echo "If you don't want the manual sources installed, answer 'none'."
6496 case "$man1dir" in
6497 ' ') dflt=none
6498         ;;
6499 '')
6500         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6501         lookpath="$lookpath $prefixexp/man/p_man/man1"
6502         lookpath="$lookpath $prefixexp/man/u_man/man1"
6503         lookpath="$lookpath $prefixexp/man/man.1"
6504         case "$sysman" in
6505         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6506         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6507         esac
6508         set dflt
6509         eval $prefixup
6510         ;;
6511 *)  dflt="$man1dir"
6512         ;;
6513 esac
6514 echo " "
6515 fn=dn+~
6516 rp="Where do the main $spackage manual pages (source) go?"
6517 . ./getfile
6518 if $test "X$man1direxp" != "X$ansexp"; then
6519         installman1dir=''
6520 fi
6521 man1dir="$ans"
6522 man1direxp="$ansexp"
6523 case "$man1dir" in
6524 '')     man1dir=' '
6525         installman1dir='';;
6526 esac
6527
6528 : Change installation prefix, if necessary.
6529 if $test X"$prefix" != X"$installprefix"; then
6530         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6531 else
6532         installman1dir="$man1direxp"
6533 fi
6534
6535 : What suffix to use on installed man pages
6536
6537 case "$man1dir" in
6538 ' ')
6539         man1ext='0'
6540         ;;
6541 *)
6542         rp="What suffix should be used for the main $spackage man pages?"
6543         case "$man1ext" in
6544         '')     case "$man1dir" in
6545                 *1)  dflt=1 ;;
6546                 *1p) dflt=1p ;;
6547                 *1pm) dflt=1pm ;;
6548                 *l) dflt=l;;
6549                 *n) dflt=n;;
6550                 *o) dflt=o;;
6551                 *p) dflt=p;;
6552                 *C) dflt=C;;
6553                 *L) dflt=L;;
6554                 *L1) dflt=L1;;
6555                 *) dflt=1;;
6556                 esac
6557                 ;;
6558         *)      dflt="$man1ext";;
6559         esac
6560         . ./myread
6561         man1ext="$ans"
6562         ;;
6563 esac
6564
6565 : see if we can have long filenames
6566 echo " "
6567 rmlist="$rmlist /tmp/cf$$"
6568 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6569 first=123456789abcdef
6570 second=/tmp/cf$$/$first
6571 $rm -f $first $second
6572 if (echo hi >$first) 2>/dev/null; then
6573         if $test -f 123456789abcde; then
6574                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6575                 val="$undef"
6576         else
6577                 if (echo hi >$second) 2>/dev/null; then
6578                         if $test -f /tmp/cf$$/123456789abcde; then
6579                                 $cat <<'EOM'
6580 That's peculiar... You can have filenames longer than 14 characters, but only
6581 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6582 I shall consider your system cannot support long filenames at all.
6583 EOM
6584                                 val="$undef"
6585                         else
6586                                 echo 'You can have filenames longer than 14 characters.' >&4
6587                                 val="$define"
6588                         fi
6589                 else
6590                         $cat <<'EOM'
6591 How confusing! Some of your filesystems are sane enough to allow filenames
6592 longer than 14 characters but some others like /tmp can't even think about them.
6593 So, for now on, I shall assume your kernel does not allow them at all.
6594 EOM
6595                         val="$undef"
6596                 fi
6597         fi
6598 else
6599         $cat <<'EOM'
6600 You can't have filenames longer than 14 chars.  You can't even think about them!
6601 EOM
6602         val="$undef"
6603 fi 
6604 set d_flexfnam
6605 eval $setvar
6606 $rm -rf /tmp/cf$$ 123456789abcde*
6607
6608 : determine where library module manual pages go
6609 set man3dir man3dir none
6610 eval $prefixit
6611 $cat <<EOM
6612
6613 $spackage has manual pages for many of the library modules.
6614 EOM
6615
6616 case "$nroff" in
6617 nroff)
6618         $cat <<'EOM'
6619 However, you don't have nroff, so they're probably useless to you.
6620 EOM
6621         case "$man3dir" in
6622         '') man3dir="none";;
6623         esac;;
6624 esac
6625
6626 case "$d_flexfnam" in
6627 undef)
6628         $cat <<'EOM'
6629 However, your system can't handle the long file names like File::Basename.3. 
6630 EOM
6631         case "$man3dir" in
6632         '') man3dir="none";;
6633         esac;;
6634 esac
6635
6636 echo "If you don't want the manual sources installed, answer 'none'."
6637 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6638 case "$man3dir" in
6639 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6640         if $test -d "$privlib/man/man3"; then
6641                 cat <<EOM >&4
6642
6643 WARNING:  Previous versions of perl installed man3 pages into
6644 $privlib/man/man3.  This version will suggest a 
6645 new default of $dflt.  
6646 EOM
6647                 tdflt=$dflt
6648                 dflt='n'
6649                 rp='Do you wish to preserve the old behavior?(y/n)'
6650                 . ./myread
6651                 case "$ans" in
6652                 y*) dflt="$privlib/man/man3" ;;
6653                 *)  dflt=$tdflt ;;
6654                 esac
6655     fi
6656         ;;
6657 ' ') dflt=none;;
6658 *)      dflt="$man3dir" ;;
6659 esac
6660 echo " "
6661 fn=dn+~
6662 rp="Where do the $package library man pages (source) go?"
6663 . ./getfile
6664 man3dir="$ans"
6665 man3direxp="$ansexp"
6666 case "$man1dir" in
6667 '')     man3dir=' '
6668         installman3dir='';;
6669 esac
6670
6671 : Change installation prefix, if necessary.
6672 if $test X"$prefix" != X"$installprefix"; then
6673         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6674 else
6675         installman3dir="$man3direxp"
6676 fi
6677
6678 : What suffix to use on installed man pages
6679 case "$man3dir" in
6680 ' ')
6681         man3ext='0'
6682         ;;
6683 *)
6684         rp="What suffix should be used for the $package library man pages?"
6685         case "$man3ext" in
6686         '')     case "$man3dir" in
6687                 *3)  dflt=3 ;;
6688                 *3p) dflt=3p ;;
6689                 *3pm) dflt=3pm ;;
6690                 *l) dflt=l;;
6691                 *n) dflt=n;;
6692                 *o) dflt=o;;
6693                 *p) dflt=p;;
6694                 *C) dflt=C;;
6695                 *L) dflt=L;;
6696                 *L3) dflt=L3;;
6697                 *) dflt=3;;
6698                 esac
6699                 ;;
6700         *)      dflt="$man3ext";;
6701         esac
6702         . ./myread
6703         man3ext="$ans"
6704         ;;
6705 esac
6706
6707 : see if we have to deal with yellow pages, now NIS.
6708 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6709         if $test -f /usr/etc/nibindd; then
6710                 echo " "
6711                 echo "I'm fairly confident you're on a NeXT."
6712                 echo " "
6713                 rp='Do you get the hosts file via NetInfo?'
6714                 dflt=y
6715                 case "$hostcat" in
6716                 nidump*) ;;
6717                 '') ;;
6718                 *) dflt=n;;
6719                 esac
6720                 . ./myread
6721                 case "$ans" in
6722                 y*) hostcat='nidump hosts .';;
6723                 *)      case "$hostcat" in
6724                         nidump*) hostcat='';;
6725                         esac
6726                         ;;
6727                 esac
6728         fi
6729         case "$hostcat" in
6730         nidump*) ;;
6731         *)
6732                 case "$hostcat" in
6733                 *ypcat*) dflt=y;;
6734                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6735                                 dflt=y
6736                         else
6737                                 dflt=n
6738                         fi;;
6739                 *) dflt=n;;
6740                 esac
6741                 echo " "
6742                 rp='Are you getting the hosts file via yellow pages?'
6743                 . ./myread
6744                 case "$ans" in
6745                 y*) hostcat='ypcat hosts';;
6746                 *) hostcat='cat /etc/hosts';;
6747                 esac
6748                 ;;
6749         esac
6750 fi
6751 case "$hostcat" in
6752 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6753 esac
6754 case "$groupcat" in
6755 '') test -f /etc/group && groupcat='cat /etc/group';;
6756 esac
6757 case "$passcat" in
6758 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6759 esac
6760
6761 : now get the host name
6762 echo " "
6763 echo "Figuring out host name..." >&4
6764 case "$myhostname" in
6765 '') cont=true
6766         echo 'Maybe "hostname" will work...'
6767         if tans=`sh -c hostname 2>&1` ; then
6768                 myhostname=$tans
6769                 phostname=hostname
6770                 cont=''
6771         fi
6772         ;;
6773 *) cont='';;
6774 esac
6775 if $test "$cont"; then
6776         if ./xenix; then
6777                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6778                 if tans=`cat /etc/systemid 2>&1` ; then
6779                         myhostname=$tans
6780                         phostname='cat /etc/systemid'
6781                         echo "Whadyaknow.  Xenix always was a bit strange..."
6782                         cont=''
6783                 fi
6784         elif $test -r /etc/systemid; then
6785                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6786         fi
6787 fi
6788 if $test "$cont"; then
6789         echo 'No, maybe "uuname -l" will work...'
6790         if tans=`sh -c 'uuname -l' 2>&1` ; then
6791                 myhostname=$tans
6792                 phostname='uuname -l'
6793         else
6794                 echo 'Strange.  Maybe "uname -n" will work...'
6795                 if tans=`sh -c 'uname -n' 2>&1` ; then
6796                         myhostname=$tans
6797                         phostname='uname -n'
6798                 else
6799                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6800                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6801                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6802                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6803                         else
6804                                 case "$myhostname" in
6805                                 '') echo "Does this machine have an identity crisis or something?"
6806                                         phostname='';;
6807                                 *)
6808                                         echo "Well, you said $myhostname before..."
6809                                         phostname='echo $myhostname';;
6810                                 esac
6811                         fi
6812                 fi
6813         fi
6814 fi
6815 : you do not want to know about this
6816 set $myhostname
6817 myhostname=$1
6818
6819 : verify guess
6820 if $test "$myhostname" ; then
6821         dflt=y
6822         rp='Your host name appears to be "'$myhostname'".'" Right?"
6823         . ./myread
6824         case "$ans" in
6825         y*) ;;
6826         *) myhostname='';;
6827         esac
6828 fi
6829
6830 : bad guess or no guess
6831 while $test "X$myhostname" = X ; do
6832         dflt=''
6833         rp="Please type the (one word) name of your host:"
6834         . ./myread
6835         myhostname="$ans"
6836 done
6837
6838 : translate upper to lower if necessary
6839 case "$myhostname" in
6840 *[A-Z]*)
6841         echo "(Normalizing case in your host name)"
6842         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6843         ;;
6844 esac
6845
6846 case "$myhostname" in
6847 *.*)
6848         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6849         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6850         echo "(Trimming domain name from host name--host name is now $myhostname)"
6851         ;;
6852 *) case "$mydomain" in
6853         '')
6854                 {
6855                         test "X$hostcat" = "Xypcat hosts" &&
6856                         ypmatch "$myhostname" hosts 2>/dev/null |\
6857                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6858                         $test -s hosts
6859                 } || {
6860                         test "X$hostcat" != "X" &&
6861                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6862                                         /[       ]$myhostname[  . ]/p" > hosts
6863                 }
6864                 tmp_re="[       . ]"
6865                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6866                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6867                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6868                         hosts | $sort | $uniq | \
6869                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6870                 case `$echo X$dflt` in
6871                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6872                         dflt=.
6873                         ;;
6874                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6875                         ;;
6876                 esac
6877                 case "$dflt" in
6878                 .)
6879                         tans=`./loc resolv.conf X /etc /usr/etc`
6880                         if $test -f "$tans"; then
6881                                 echo "(Attempting domain name extraction from $tans)"
6882                                 dflt=.`$sed -n -e 's/   / /g' \
6883                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6884                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6885                                 case "$dflt" in
6886                                 .) dflt=.`$sed -n -e 's/        / /g' \
6887                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6888                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6889                                         ;;
6890                                 esac
6891                         fi
6892                         ;;
6893                 esac
6894                 case "$dflt" in
6895                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6896                         dflt=.`sh -c domainname 2>/dev/null`
6897                         case "$dflt" in
6898                         '') dflt='.';;
6899                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6900                         esac
6901                         ;;
6902                 esac
6903                 case "$dflt" in
6904                 .) echo "(Lost all hope -- silly guess then)"
6905                         dflt='.uucp'
6906                         ;;
6907                 esac
6908                 $rm -f hosts
6909                 ;;
6910         *) dflt="$mydomain";;
6911         esac;;
6912 esac
6913 echo " "
6914 rp="What is your domain name?"
6915 . ./myread
6916 tans="$ans"
6917 case "$ans" in
6918 '') ;;
6919 .*) ;;
6920 *) tans=".$tans";;
6921 esac
6922 mydomain="$tans"
6923
6924 : translate upper to lower if necessary
6925 case "$mydomain" in
6926 *[A-Z]*)
6927         echo "(Normalizing case in your domain name)"
6928         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6929         ;;
6930 esac
6931
6932 : a little sanity check here
6933 case "$phostname" in
6934 '') ;;
6935 *)
6936         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6937         $myhostname$mydomain|$myhostname) ;;
6938         *)
6939                 case "$phostname" in
6940                 sed*)
6941                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6942                         ;;
6943                 *)
6944                         echo "(That doesn't agree with your $phostname command, by the way.)"
6945                         ;;
6946                 esac
6947         ;;
6948         esac
6949         ;;
6950 esac
6951
6952 $cat <<EOM
6953
6954 I need to get your e-mail address in Internet format if possible, i.e.
6955 something like user@host.domain. Please answer accurately since I have
6956 no easy means to double check it. The default value provided below
6957 is most probably close to reality but may not be valid from outside
6958 your organization...
6959
6960 EOM
6961 cont=x
6962 while test "$cont"; do
6963         case "$cf_email" in
6964         '') dflt="$cf_by@$myhostname$mydomain";;
6965         *) dflt="$cf_email";;
6966         esac
6967         rp='What is your e-mail address?'
6968         . ./myread
6969         cf_email="$ans"
6970         case "$cf_email" in
6971         *@*.*) cont='' ;;
6972         *)
6973                 rp='Address does not look like an Internet one.  Use it anyway?'
6974                 case "$fastread" in
6975                 yes) dflt=y ;;
6976                 *) dflt=n ;;
6977                 esac
6978                 . ./myread
6979                 case "$ans" in
6980                 y*) cont='' ;;
6981                 *) echo " " ;;
6982                 esac
6983                 ;;
6984         esac
6985 done
6986
6987 $cat <<EOM
6988
6989 If you or somebody else will be maintaining perl at your site, please
6990 fill in the correct e-mail address here so that they may be contacted
6991 if necessary. Currently, the "perlbug" program included with perl
6992 will send mail to this address in addition to perlbug@perl.com. You may
6993 enter "none" for no administrator.
6994
6995 EOM
6996 case "$perladmin" in
6997 '') dflt="$cf_email";;
6998 *) dflt="$perladmin";;
6999 esac
7000 rp='Perl administrator e-mail address'
7001 . ./myread
7002 perladmin="$ans"
7003
7004 : figure out how to guarantee perl startup
7005 case "$startperl" in
7006 '')
7007         case "$sharpbang" in
7008         *!)
7009                 $cat <<EOH
7010
7011 I can use the #! construct to start perl on your system. This will
7012 make startup of perl scripts faster, but may cause problems if you
7013 want to share those scripts and perl is not in a standard place
7014 ($binexp/perl) on all your platforms. The alternative is to force
7015 a shell by starting the script with a single ':' character.
7016
7017 EOH
7018                 dflt="$binexp/perl"
7019                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7020                 . ./myread
7021                 case "$ans" in
7022                 none)   startperl=": # use perl";;
7023                 *)      startperl="#!$ans"
7024                         if $test 30 -lt `echo "$ans" | wc -c`; then
7025                                 $cat >&4 <<EOM
7026
7027 WARNING:  Some systems limit the #! command to 32 characters.
7028 If you experience difficulty running Perl scripts with #!, try
7029 installing Perl in a directory with a shorter pathname.
7030
7031 EOM
7032                         fi ;;
7033                 esac
7034                 ;;
7035         *) startperl=": # use perl"
7036                 ;;
7037         esac
7038         ;;
7039 esac
7040 echo "I'll use $startperl to start perl scripts."
7041
7042 : figure best path for perl in scripts
7043 case "$perlpath" in
7044 '')
7045         perlpath="$binexp/perl"
7046         case "$startperl" in
7047         *!*) ;;
7048         *)
7049                 $cat <<EOH
7050
7051 I will use the "eval 'exec'" idiom to start Perl on your system.
7052 I can use the full path of your Perl binary for this purpose, but
7053 doing so may cause problems if you want to share those scripts and
7054 Perl is not always in a standard place ($binexp/perl).
7055
7056 EOH
7057                 dflt="$binexp/perl"
7058                 rp="What path shall I use in \"eval 'exec'\"?"
7059                 . ./myread
7060                 perlpath="$ans"
7061                 ;;
7062         esac
7063         ;;
7064 esac
7065 case "$startperl" in
7066 *!*)    ;;
7067 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7068 esac
7069
7070 : determine where public executable scripts go
7071 set scriptdir scriptdir
7072 eval $prefixit
7073 case "$scriptdir" in
7074 '')
7075         dflt="$bin"
7076         : guess some guesses
7077         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7078         $test -d /usr/share/bin     && dflt=/usr/share/bin
7079         $test -d /usr/local/script  && dflt=/usr/local/script
7080         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7081         $test -d $prefixexp/script  && dflt=$prefixexp/script
7082         set dflt
7083         eval $prefixup
7084         ;;
7085 *)  dflt="$scriptdir"
7086         ;;
7087 esac
7088 $cat <<EOM
7089  
7090 Some installations have a separate directory just for executable scripts so
7091 that they can mount it across multiple architectures but keep the scripts in
7092 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7093 Or you might just lump your scripts in with all your other executables.
7094  
7095 EOM
7096 fn=d~
7097 rp='Where do you keep publicly executable scripts?'
7098 . ./getfile
7099 if $test "X$ansexp" != "X$scriptdirexp"; then
7100         installscript=''
7101 fi
7102 scriptdir="$ans"
7103 scriptdirexp="$ansexp"
7104 : Change installation prefix, if necessary.
7105 if $test X"$prefix" != X"$installprefix"; then
7106         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7107 else
7108         installscript="$scriptdirexp"
7109 fi
7110
7111 : determine where site specific architecture-dependent libraries go.
7112 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
7113 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
7114 : sitelib may have an optional trailing /share.
7115 case "$sitearch" in
7116 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
7117         dflt="$dflt/$archname"
7118         ;;
7119 *)      dflt="$sitearch"
7120         ;;
7121 esac
7122 set sitearch sitearch none
7123 eval $prefixit
7124 $cat <<EOM
7125
7126 The installation process will also create a directory for
7127 architecture-dependent site-specific extensions and modules.
7128
7129 EOM
7130 fn=d~+
7131 rp='Pathname for the site-specific architecture-dependent library files?'
7132 . ./getfile
7133 sitearch="$ans"
7134 sitearchexp="$ansexp"
7135 : Change installation prefix, if necessary.
7136 if $test X"$prefix" != X"$installprefix"; then
7137         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
7138 else
7139         installsitearch="$sitearchexp"
7140 fi
7141
7142 : determine where add-on public executables go
7143 case "$sitebin" in
7144 '')     dflt=$siteprefix/bin ;;
7145 *)      dflt=$sitebin ;;
7146 esac
7147 fn=d~
7148 rp='Pathname where the add-on public executables should be installed?'
7149 . ./getfile
7150 sitebin="$ans"
7151 sitebinexp="$ansexp"
7152 : Change installation prefix, if necessary.
7153 if $test X"$prefix" != X"$installprefix"; then
7154         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7155 else
7156         installsitebin="$sitebinexp"
7157 fi
7158
7159 : see if sqrtl exists
7160 set sqrtl d_sqrtl
7161 eval $inlibc
7162
7163 case "$ccflags" in
7164 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7165 esac
7166
7167 case "$uselongdouble" in
7168 $define|true|[yY]*)     dflt='y';;
7169 *) dflt='n';;
7170 esac
7171 cat <<EOM
7172
7173 Perl can be built to take advantage of long doubles which
7174 (if available) may give more accuracy and range for floating point numbers.
7175
7176 If this doesn't make any sense to you, just accept the default '$dflt'.
7177 EOM
7178 rp='Try to use long doubles if available?'
7179 . ./myread
7180 case "$ans" in
7181 y|Y)    val="$define"   ;;
7182 *)      val="$undef"    ;;
7183 esac
7184 set uselongdouble
7185 eval $setvar
7186
7187 case "$uselongdouble" in
7188 true|[yY]*) uselongdouble="$define" ;;
7189 esac
7190
7191 case "$uselongdouble" in
7192 $define)
7193 : Look for a hint-file generated 'call-back-unit'.  If the
7194 : user has specified that long doubles should be used,
7195 : we may need to set or change some other defaults.
7196         if $test -f uselongdouble.cbu; then
7197                 echo "Your platform has some specific hints for long doubles, using them..."
7198                 . ./uselongdouble.cbu
7199         else
7200                 $cat <<EOM
7201 (Your platform doesn't have any specific hints for long doubles.)
7202 EOM
7203         fi
7204         ;;
7205 esac
7206
7207 case "$uselongdouble:$d_sqrtl" in
7208 $define:$undef)
7209                 $cat <<EOM >&4
7210
7211 You requested the use of long doubles but you do not seem to have
7212 the mathematic functions for long doubles.  I'm disabling the use
7213 of long doubles.
7214 EOM
7215         uselongdouble=$undef
7216         ;;
7217 esac
7218
7219 case "$useperlio" in
7220 $define|true|[yY]*)     dflt='y';;
7221 *) dflt='n';;
7222 esac
7223 cat <<EOM
7224
7225 Previous version of $package used the standard IO mechanisms as defined
7226 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7227 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7228 the default.  This abstraction layer can use AT&T's sfio (if you already
7229 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7230 problems with some extension modules.  Using PerlIO with stdio is safe,
7231 but it is slower than plain stdio and therefore is not the default.
7232
7233 If this doesn't make any sense to you, just accept the default '$dflt'.
7234 EOM
7235 rp='Use the experimental PerlIO abstraction layer?'
7236 . ./myread
7237 case "$ans" in
7238 y|Y) 
7239         val="$define"
7240         ;;     
7241 *)      
7242         echo "Ok, doing things the stdio way"
7243         val="$undef"
7244         ;;
7245 esac
7246 set useperlio
7247 eval $setvar 
7248
7249 case "$vendorprefix" in
7250 '')     d_vendorbin="$undef"
7251         vendorbin=''
7252         vendorbinexp=''
7253         ;;
7254 *)      d_vendorbin="$define"
7255         : determine where vendor-supplied executables go.
7256         case "$vendorbin" in
7257         '') dflt=$vendorprefix/bin ;;
7258         *)      dflt="$vendorbin" ;;
7259         esac
7260         fn=d~+
7261         rp='Pathname for the vendor-supplied executables directory?'
7262         . ./getfile
7263         vendorbin="$ans"
7264         vendorbinexp="$ansexp"
7265         ;;
7266 esac
7267 : Change installation prefix, if necessary.
7268 if $test X"$prefix" != X"$installprefix"; then
7269         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7270 else
7271         installvendorbin="$vendorbinexp"
7272 fi
7273
7274 : check for length of double
7275 echo " "
7276 case "$doublesize" in
7277 '')
7278         echo "Checking to see how big your double precision numbers are..." >&4
7279         $cat >try.c <<'EOCP'
7280 #include <stdio.h>
7281 int main()
7282 {
7283     printf("%d\n", (int)sizeof(double));
7284     exit(0);
7285 }
7286 EOCP
7287         set try
7288         if eval $compile_ok; then
7289                 doublesize=`./try`
7290                 echo "Your double is $doublesize bytes long."
7291         else
7292                 dflt='8'
7293                 echo "(I can't seem to compile the test program.  Guessing...)"
7294                 rp="What is the size of a double precision number (in bytes)?"
7295                 . ./myread
7296                 doublesize="$ans"
7297         fi
7298         ;;
7299 esac
7300 $rm -f try.c try
7301
7302 : check for long doubles
7303 echo " "
7304 echo "Checking to see if you have long double..." >&4
7305 echo 'int main() { long double x = 7.0; }' > try.c
7306 set try
7307 if eval $compile; then
7308         val="$define"
7309         echo "You have long double."
7310 else
7311         val="$undef"
7312         echo "You do not have long double."
7313 fi
7314 $rm try.*
7315 set d_longdbl
7316 eval $setvar
7317
7318 : check for length of long double
7319 case "${d_longdbl}${longdblsize}" in
7320 $define)
7321         echo " "
7322         echo "Checking to see how big your long doubles are..." >&4
7323         $cat >try.c <<'EOCP'
7324 #include <stdio.h>
7325 int main()
7326 {
7327         printf("%d\n", sizeof(long double));
7328 }
7329 EOCP
7330         set try
7331         set try
7332         if eval $compile; then
7333                 longdblsize=`./try$exe_ext`
7334                 echo "Your long doubles are $longdblsize bytes long."
7335         else
7336                 dflt='8'
7337                 echo " "
7338                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7339                 rp="What is the size of a long double (in bytes)?"
7340                 . ./myread
7341                 longdblsize="$ans"
7342         fi
7343         if $test "X$doublesize" = "X$longdblsize"; then
7344                 echo "(That isn't any different from an ordinary double.)"
7345         fi      
7346         ;;
7347 esac
7348 $rm -f try.* try
7349
7350 : Check how to convert floats to strings.
7351 if test "X$d_Gconvert" = X; then
7352         echo " "
7353         echo "Checking for an efficient way to convert floats to strings."
7354         $cat >try.c <<EOP
7355 #ifdef TRY_gconvert
7356 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7357 char *myname = "gconvert";
7358 #endif
7359 #ifdef TRY_gcvt
7360 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7361 char *myname = "gcvt";
7362 #endif
7363 #ifdef TRY_qgcvt
7364 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7365 char *myname = "qgcvt";
7366 #define DOUBLETYPE long double
7367 #endif
7368 #ifdef TRY_sprintf
7369 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7370 char *myname = "sprintf";
7371 #endif
7372
7373 #ifndef DOUBLETYPE
7374 #define DOUBLETYPE double
7375 #endif
7376
7377 #include <stdio.h>
7378
7379 #define I_STDLIB $i_stdlib
7380 #ifdef I_STDLIB
7381 #include <stdlib.h>
7382 #endif
7383
7384 int
7385 checkit(expect, got)
7386 char *expect;
7387 char *got;
7388 {
7389     if (strcmp(expect, got)) {
7390                 printf("%s oddity:  Expected %s, got %s\n",
7391                         myname, expect, got);
7392                 exit(1);
7393         }
7394 }
7395
7396 int main()
7397
7398         char buf[64]; 
7399         buf[63] = '\0';
7400
7401         /* This must be 1st test on (which?) platform */
7402         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7403         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7404         checkit("0.1", buf);
7405
7406         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7407         checkit("1", buf);
7408
7409         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7410         checkit("0", buf);
7411
7412         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7413         checkit("-1", buf);
7414
7415         /* Some Linux gcvt's give 1.e+5 here. */
7416         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7417         checkit("100000", buf);
7418         
7419         /* Some Linux gcvt's give -1.e+5 here. */
7420         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7421         checkit("-100000", buf);
7422
7423         exit(0);
7424 }
7425 EOP
7426         case "$d_Gconvert" in
7427         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7428         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7429         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7430         *) xxx_list='gconvert gcvt sprintf' ;;
7431         esac
7432
7433         case "$d_longdbl$uselongdouble" in
7434         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7435         esac
7436
7437         for xxx_convert in $xxx_list; do
7438                 echo "Trying $xxx_convert..."
7439                 $rm -f try try$_o
7440                 set try -DTRY_$xxx_convert
7441                 if eval $compile; then
7442                         echo "$xxx_convert() found." >&4
7443                         if ./try; then
7444                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7445                                 break;
7446                         else
7447                                 echo "...But $xxx_convert didn't work as I expected."
7448                         fi
7449                 else
7450                         echo "$xxx_convert NOT found." >&4
7451                 fi
7452         done
7453                 
7454         case "$xxx_convert" in
7455         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7456         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7457         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7458         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7459         esac
7460 fi
7461
7462 echo " "
7463
7464 if $test X"$d_longdbl" = X"$define"; then
7465
7466 echo "Checking how to print long doubles..." >&4
7467
7468 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7469         $cat >try.c <<'EOCP'
7470 #include <sys/types.h>
7471 #include <stdio.h>
7472 int main() {
7473   double d = 123.456;
7474   printf("%.3f\n", d);
7475 }
7476 EOCP
7477         set try
7478         if eval $compile; then
7479                 yyy=`./try$exe_ext`
7480                 case "$yyy" in
7481                 123.456)
7482                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7483                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7484                         echo "We will use %f."
7485                         ;;
7486                 esac
7487         fi
7488 fi
7489
7490 if $test X"$sPRIfldbl" = X; then
7491         $cat >try.c <<'EOCP'
7492 #include <sys/types.h>
7493 #include <stdio.h>
7494 int main() {
7495   long double d = 123.456;
7496   printf("%.3llf\n", d);
7497 }
7498 EOCP
7499         set try
7500         if eval $compile; then
7501                 yyy=`./try$exe_ext`
7502                 case "$yyy" in
7503                 123.456)
7504                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7505                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7506                         echo "We will use %llf."
7507                         ;;
7508                 esac
7509         fi
7510 fi
7511
7512 if $test X"$sPRIfldbl" = X; then
7513         $cat >try.c <<'EOCP'
7514 #include <sys/types.h>
7515 #include <stdio.h>
7516 int main() {
7517   long double d = 123.456;
7518   printf("%.3Lf\n", d);
7519 }
7520 EOCP
7521         set try
7522         if eval $compile; then
7523                 yyy=`./try$exe_ext`
7524                 case "$yyy" in
7525                 123.456)
7526                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7527                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7528                         echo "We will use %Lf."
7529                         ;;
7530                 esac
7531         fi
7532 fi
7533
7534 if $test X"$sPRIfldbl" = X; then
7535         $cat >try.c <<'EOCP'
7536 #include <sys/types.h>
7537 #include <stdio.h>
7538 int main() {
7539   long double d = 123.456;
7540   printf("%.3lf\n", d);
7541 }
7542 EOCP
7543         set try
7544         if eval $compile; then
7545                 yyy=`./try$exe_ext`
7546                 case "$yyy" in
7547                 123.456)
7548                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7549                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7550                         echo "We will use %lf."
7551                         ;;
7552                 esac
7553         fi
7554 fi
7555
7556 if $test X"$sPRIfldbl" = X; then
7557         echo "Cannot figure out how to print long doubles." >&4
7558 fi
7559
7560 $rm -f try try.*
7561
7562 fi # d_longdbl
7563
7564 case "$sPRIfldbl" in
7565 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7566         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7567         ;;
7568 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7569         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7570         ;;
7571 esac
7572
7573 : Initialize h_fcntl
7574 h_fcntl=false
7575
7576 : Initialize h_sysfile
7577 h_sysfile=false
7578
7579 : access call always available on UNIX
7580 set access d_access
7581 eval $inlibc
7582
7583 : locate the flags for 'access()'
7584 case "$d_access" in
7585 "$define")
7586         echo " "
7587         $cat >access.c <<'EOCP'
7588 #include <sys/types.h>
7589 #ifdef I_FCNTL
7590 #include <fcntl.h>
7591 #endif
7592 #ifdef I_SYS_FILE
7593 #include <sys/file.h>
7594 #endif
7595 #ifdef I_UNISTD
7596 #include <unistd.h>
7597 #endif
7598 int main() {
7599         exit(R_OK);
7600 }
7601 EOCP
7602         : check sys/file.h first, no particular reason here
7603         if $test `./findhdr sys/file.h` && \
7604                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7605                 h_sysfile=true;
7606                 echo "<sys/file.h> defines the *_OK access constants." >&4
7607         elif $test `./findhdr fcntl.h` && \
7608                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7609                 h_fcntl=true;
7610                 echo "<fcntl.h> defines the *_OK access constants." >&4
7611         elif $test `./findhdr unistd.h` && \
7612                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7613                 echo "<unistd.h> defines the *_OK access constants." >&4
7614         else
7615                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7616         fi
7617         ;;
7618 esac
7619 $rm -f access*
7620
7621 : see if accessx exists
7622 set accessx d_accessx
7623 eval $inlibc
7624
7625 : see if alarm exists
7626 set alarm d_alarm
7627 eval $inlibc
7628
7629 : see if atolf exists
7630 set atolf d_atolf
7631 eval $inlibc
7632
7633 : see if atoll exists
7634 set atoll d_atoll
7635 eval $inlibc
7636
7637 : Look for GNU-cc style attribute checking
7638 echo " "
7639 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7640 $cat >attrib.c <<'EOCP'
7641 #include <stdio.h>
7642 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7643 EOCP
7644 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7645         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7646                 echo "Your C compiler doesn't fully support __attribute__."
7647                 val="$undef"
7648         else
7649                 echo "Your C compiler supports __attribute__."
7650                 val="$define"
7651         fi
7652 else
7653         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7654         val="$undef"
7655 fi
7656 set d_attribut
7657 eval $setvar
7658 $rm -f attrib*
7659
7660 : see if bcmp exists
7661 set bcmp d_bcmp
7662 eval $inlibc
7663
7664 : see if bcopy exists
7665 set bcopy d_bcopy
7666 eval $inlibc
7667
7668 : see if this is a unistd.h system
7669 set unistd.h i_unistd
7670 eval $inhdr
7671
7672 : see if getpgrp exists
7673 set getpgrp d_getpgrp
7674 eval $inlibc
7675
7676 case "$d_getpgrp" in
7677 "$define")
7678         echo " "
7679         echo "Checking to see which flavor of getpgrp is in use..."
7680         $cat >set.c <<EOP
7681 #$i_unistd I_UNISTD
7682 #include <sys/types.h>
7683 #ifdef I_UNISTD
7684 #  include <unistd.h>
7685 #endif
7686 int main()
7687 {
7688         if (getuid() == 0) {
7689                 printf("(I see you are running Configure as super-user...)\n");
7690                 setuid(1);
7691         }
7692 #ifdef TRY_BSD_PGRP
7693         if (getpgrp(1) == 0)
7694                 exit(0);
7695 #else
7696         if (getpgrp() > 0)
7697                 exit(0);
7698 #endif
7699         exit(1);
7700 }
7701 EOP
7702         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7703                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7704                 val="$define"
7705         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7706                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7707                 val="$undef"
7708         else
7709                 echo "I can't seem to compile and run the test program."
7710                 if ./usg; then
7711                         xxx="a USG one, i.e. you use getpgrp()."
7712                 else
7713                         # SVR4 systems can appear rather BSD-ish.
7714                         case "$i_unistd" in
7715                         $undef)
7716                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7717                                 val="$define"
7718                                 ;;
7719                         $define)
7720                                 xxx="probably a USG one, i.e. you use getpgrp()."
7721                                 val="$undef"
7722                                 ;;
7723                         esac
7724                 fi
7725                 echo "Assuming your getpgrp is $xxx" >&4
7726         fi
7727         ;;
7728 *) val="$undef";;
7729 esac
7730 set d_bsdgetpgrp
7731 eval $setvar
7732 $rm -f set set.c
7733
7734 : see if setpgrp exists
7735 set setpgrp d_setpgrp
7736 eval $inlibc
7737
7738 case "$d_setpgrp" in
7739 "$define")
7740         echo " "
7741         echo "Checking to see which flavor of setpgrp is in use..."
7742         $cat >set.c <<EOP
7743 #$i_unistd I_UNISTD
7744 #include <sys/types.h>
7745 #ifdef I_UNISTD
7746 #  include <unistd.h>
7747 #endif
7748 int main()
7749 {
7750         if (getuid() == 0) {
7751                 printf("(I see you are running Configure as super-user...)\n");
7752                 setuid(1);
7753         }
7754 #ifdef TRY_BSD_PGRP
7755         if (-1 == setpgrp(1, 1))
7756                 exit(0);
7757 #else
7758         if (setpgrp() != -1)
7759                 exit(0);
7760 #endif
7761         exit(1);
7762 }
7763 EOP
7764         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7765                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7766                 val="$define"
7767         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7768                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7769                 val="$undef"
7770         else
7771                 echo "(I can't seem to compile and run the test program.)"
7772                 if ./usg; then
7773                         xxx="a USG one, i.e. you use setpgrp()."
7774                 else
7775                         # SVR4 systems can appear rather BSD-ish.
7776                         case "$i_unistd" in
7777                         $undef)
7778                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7779                                 val="$define"
7780                                 ;;
7781                         $define)
7782                                 xxx="probably a USG one, i.e. you use setpgrp()."
7783                                 val="$undef"
7784                                 ;;
7785                         esac
7786                 fi
7787                 echo "Assuming your setpgrp is $xxx" >&4
7788         fi
7789         ;;
7790 *) val="$undef";;
7791 esac
7792 set d_bsdsetpgrp
7793 eval $setvar
7794 $rm -f set set.c
7795 : see if bzero exists
7796 set bzero d_bzero
7797 eval $inlibc
7798
7799 : see if signal is declared as pointer to function returning int or void
7800 echo " "
7801 xxx=`./findhdr signal.h`
7802 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7803 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7804         echo "You have int (*signal())() instead of void." >&4
7805         val="$undef"
7806 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7807         echo "You have void (*signal())()." >&4
7808         val="$define"
7809 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7810         echo "You have int (*signal())() instead of void." >&4
7811         val="$undef"
7812 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7813         echo "You have void (*signal())()." >&4
7814         val="$define"
7815 else
7816         case "$d_voidsig" in
7817         '')
7818         echo "I can't determine whether signal handler returns void or int..." >&4
7819                 dflt=void
7820                 rp="What type does your signal handler return?"
7821                 . ./myread
7822                 case "$ans" in
7823                 v*) val="$define";;
7824                 *) val="$undef";;
7825                 esac;;
7826         "$define")
7827                 echo "As you already told me, signal handler returns void." >&4
7828                 val="$define"
7829                 ;;
7830         *)      echo "As you already told me, signal handler returns int." >&4
7831                 val="$undef"
7832                 ;;
7833         esac
7834 fi
7835 set d_voidsig
7836 eval $setvar
7837 case "$d_voidsig" in
7838 "$define") signal_t="void";;
7839 *) signal_t="int";;
7840 esac
7841 $rm -f $$.tmp
7842
7843 : check for ability to cast large floats to 32-bit ints.
7844 echo " "
7845 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7846 if $test "$intsize" -ge 4; then
7847         xxx=int
7848 else
7849         xxx=long
7850 fi
7851 $cat >try.c <<EOCP
7852 #include <stdio.h>
7853 #include <sys/types.h>
7854 #include <signal.h>
7855 $signal_t blech(s) int s; { exit(3); }
7856 int main()
7857 {
7858         $xxx i32;
7859         double f, g;
7860         int result = 0;
7861         char str[16];
7862         signal(SIGFPE, blech);
7863
7864         /* Don't let compiler optimize the test away.  Store the number 
7865            in a writable string for gcc to pass to sscanf under HP/UX.
7866         */
7867         sprintf(str, "2147483647");
7868         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7869         g = 10 * f;
7870         i32  = ($xxx) g;
7871
7872         /* x86 processors will probably give 0x8000 0000, which is a
7873        sign change.  We don't want that.  We want to mimic SPARC
7874            behavior here, which is to preserve the sign and give
7875            back 0x7fff ffff.
7876         */
7877         if (i32 != ($xxx) f)
7878                 result |= 1;
7879         exit(result);
7880 }
7881 EOCP
7882 set try
7883 if eval $compile_ok; then
7884         ./try
7885         yyy=$?
7886 else
7887         echo "(I can't seem to compile the test program--assuming it can't)"
7888         yyy=1
7889 fi
7890 case "$yyy" in
7891 0)      val="$define"
7892         echo "Yup, it can."
7893         ;;
7894 *)      val="$undef"
7895         echo "Nope, it can't."
7896         ;;
7897 esac
7898 set d_casti32
7899 eval $setvar
7900 $rm -f try try.*
7901
7902 : check for ability to cast negative floats to unsigned
7903 echo " "
7904 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7905 $cat >try.c <<EOCP
7906 #include <stdio.h>
7907 #include <sys/types.h>
7908 #include <signal.h>
7909 $signal_t blech(s) int s; { exit(7); }
7910 $signal_t blech_in_list(s) int s; { exit(4); }
7911 unsigned long dummy_long(p) unsigned long p; { return p; }
7912 unsigned int dummy_int(p) unsigned int p; { return p; }
7913 unsigned short dummy_short(p) unsigned short p; { return p; }
7914 int main()
7915 {
7916         double f;
7917         unsigned long along;
7918         unsigned int aint;
7919         unsigned short ashort;
7920         int result = 0;
7921         char str[16];
7922         
7923         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7924            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7925            optimized the whole file away
7926         */
7927         /* Store the number in a writable string for gcc to pass to 
7928            sscanf under HP/UX.
7929         */
7930         sprintf(str, "-123");
7931         sscanf(str, "%lf", &f);  /* f = -123.; */
7932
7933         signal(SIGFPE, blech);
7934         along = (unsigned long)f;
7935         aint = (unsigned int)f;
7936         ashort = (unsigned short)f;
7937         if (along != (unsigned long)-123)
7938                 result |= 1;
7939         if (aint != (unsigned int)-123)
7940                 result |= 1;
7941         if (ashort != (unsigned short)-123)
7942                 result |= 1;
7943         sprintf(str, "1073741824.");
7944         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7945         f = f + f;
7946         along = 0;
7947         along = (unsigned long)f;
7948         if (along != 0x80000000)
7949                 result |= 2;
7950         f -= 1.;
7951         along = 0;
7952         along = (unsigned long)f;
7953         if (along != 0x7fffffff)
7954                 result |= 1;
7955         f += 2.;
7956         along = 0;
7957         along = (unsigned long)f;
7958         if (along != 0x80000001)
7959                 result |= 2;
7960         if (result)
7961                 exit(result);
7962         signal(SIGFPE, blech_in_list);
7963         sprintf(str, "123.");
7964         sscanf(str, "%lf", &f);  /* f = 123.; */
7965         along = dummy_long((unsigned long)f);
7966         aint = dummy_int((unsigned int)f);
7967         ashort = dummy_short((unsigned short)f);
7968         if (along != (unsigned long)123)
7969                 result |= 4;
7970         if (aint != (unsigned int)123)
7971                 result |= 4;
7972         if (ashort != (unsigned short)123)
7973                 result |= 4;
7974         exit(result);
7975
7976 }
7977 EOCP
7978 set try
7979 if eval $compile_ok; then
7980         ./try
7981         castflags=$?
7982 else
7983         echo "(I can't seem to compile the test program--assuming it can't)"
7984         castflags=7
7985 fi
7986 case "$castflags" in
7987 0)      val="$define"
7988         echo "Yup, it can."
7989         ;;
7990 *)      val="$undef"
7991         echo "Nope, it can't."
7992         ;;
7993 esac
7994 set d_castneg
7995 eval $setvar
7996 $rm -f try.*
7997
7998 : see if vprintf exists
7999 echo " "
8000 if set vprintf val -f d_vprintf; eval $csym; $val; then
8001         echo 'vprintf() found.' >&4
8002         val="$define"
8003         $cat >vprintf.c <<'EOF'
8004 #include <varargs.h>
8005
8006 int main() { xxx("foo"); }
8007
8008 xxx(va_alist)
8009 va_dcl
8010 {
8011         va_list args;
8012         char buf[10];
8013
8014         va_start(args);
8015         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8016 }
8017 EOF
8018         set vprintf
8019         if eval $compile && ./vprintf; then
8020                 echo "Your vsprintf() returns (int)." >&4
8021                 val2="$undef"
8022         else
8023                 echo "Your vsprintf() returns (char*)." >&4
8024                 val2="$define"
8025         fi
8026 else
8027         echo 'vprintf() NOT found.' >&4
8028                 val="$undef"
8029                 val2="$undef"
8030 fi
8031 set d_vprintf
8032 eval $setvar
8033 val=$val2
8034 set d_charvspr
8035 eval $setvar
8036
8037 : see if chown exists
8038 set chown d_chown
8039 eval $inlibc
8040
8041 : see if chroot exists
8042 set chroot d_chroot
8043 eval $inlibc
8044
8045 : see if chsize exists
8046 set chsize d_chsize
8047 eval $inlibc
8048
8049 : check for const keyword
8050 echo " "
8051 echo 'Checking to see if your C compiler knows about "const"...' >&4
8052 $cat >const.c <<'EOCP'
8053 typedef struct spug { int drokk; } spug;
8054 int main()
8055 {
8056         const char *foo;
8057         const spug y;
8058 }
8059 EOCP
8060 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8061         val="$define"
8062         echo "Yup, it does."
8063 else
8064         val="$undef"
8065         echo "Nope, it doesn't."
8066 fi
8067 set d_const
8068 eval $setvar
8069
8070 : see if crypt exists
8071 echo " "
8072 if set crypt val -f d_crypt; eval $csym; $val; then
8073         echo 'crypt() found.' >&4
8074         val="$define"
8075         cryptlib=''
8076 else
8077         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8078         if $test -z "$cryptlib"; then
8079                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8080         else
8081                 cryptlib=-lcrypt
8082         fi
8083         if $test -z "$cryptlib"; then
8084                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8085         else
8086                 cryptlib=-lcrypt
8087         fi
8088         if $test -z "$cryptlib"; then
8089                 cryptlib=`./loc libcrypt$_a "" $libpth`
8090         else
8091                 cryptlib=-lcrypt
8092         fi
8093         if $test -z "$cryptlib"; then
8094                 echo 'crypt() NOT found.' >&4
8095                 val="$undef"
8096         else
8097                 val="$define"
8098         fi
8099 fi
8100 set d_crypt
8101 eval $setvar
8102
8103 : get csh whereabouts
8104 case "$csh" in
8105 'csh') val="$undef" ;;
8106 *) val="$define" ;;
8107 esac
8108 set d_csh
8109 eval $setvar
8110 : Respect a hint or command line value for full_csh.
8111 case "$full_csh" in
8112 '') full_csh=$csh ;;
8113 esac
8114
8115 : see if cuserid exists
8116 set cuserid d_cuserid
8117 eval $inlibc
8118
8119 : see if this is a limits.h system
8120 set limits.h i_limits
8121 eval $inhdr
8122
8123 : see if this is a float.h system
8124 set float.h i_float
8125 eval $inhdr
8126
8127 : See if number of significant digits in a double precision number is known
8128 echo " "
8129 $cat >dbl_dig.c <<EOM
8130 #$i_limits I_LIMITS
8131 #$i_float I_FLOAT
8132 #ifdef I_LIMITS
8133 #include <limits.h>
8134 #endif
8135 #ifdef I_FLOAT
8136 #include <float.h>
8137 #endif
8138 #ifdef DBL_DIG
8139 printf("Contains DBL_DIG");
8140 #endif
8141 EOM
8142 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8143 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8144         echo "DBL_DIG found." >&4
8145         val="$define"
8146 else
8147         echo "DBL_DIG NOT found." >&4
8148         val="$undef"
8149 fi
8150 $rm -f dbl_dig.?
8151 set d_dbl_dig
8152 eval $setvar
8153
8154 : see if difftime exists
8155 set difftime d_difftime
8156 eval $inlibc
8157
8158 : see if this is a dirent system
8159 echo " "
8160 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8161         val="$define"
8162         echo "<dirent.h> found." >&4
8163 else
8164         val="$undef"
8165         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8166                 echo "<sys/dir.h> found." >&4
8167                 echo " "
8168         else
8169                 xinc=`./findhdr sys/ndir.h`
8170         fi
8171         echo "<dirent.h> NOT found." >&4
8172 fi
8173 set i_dirent
8174 eval $setvar
8175
8176 : Look for type of directory structure.
8177 echo " "
8178 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8179
8180 case "$direntrytype" in
8181 ''|' ')
8182         case "$i_dirent" in
8183         $define) guess1='struct dirent' ;;
8184         *) guess1='struct direct'  ;;
8185         esac
8186         ;;
8187 *)      guess1="$direntrytype"
8188         ;;
8189 esac
8190
8191 case "$guess1" in
8192 'struct dirent') guess2='struct direct' ;;
8193 *) guess2='struct dirent' ;;
8194 esac
8195                 
8196 if $contains "$guess1" try.c >/dev/null 2>&1; then
8197         direntrytype="$guess1"
8198         echo "Your directory entries are $direntrytype." >&4
8199 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8200         direntrytype="$guess2"
8201         echo "Your directory entries seem to be $direntrytype." >&4
8202 else
8203         echo "I don't recognize your system's directory entries." >&4
8204         rp="What type is used for directory entries on this system?"
8205         dflt="$guess1"
8206         . ./myread
8207         direntrytype="$ans"
8208 fi
8209 $rm -f try.c
8210
8211
8212 : see if the directory entry stores field length
8213 echo " "
8214 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8215 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8216         echo "Good, your directory entry keeps length information in d_namlen." >&4
8217         val="$define"
8218 else
8219         echo "Your directory entry does not know about the d_namlen field." >&4
8220         val="$undef"
8221 fi
8222 set d_dirnamlen
8223 eval $setvar
8224 $rm -f try.c
8225
8226 : see if dlerror exists
8227 xxx_runnm="$runnm"
8228 runnm=false
8229 set dlerror d_dlerror
8230 eval $inlibc
8231 runnm="$xxx_runnm"
8232
8233 : see if dlfcn is available
8234 set dlfcn.h i_dlfcn
8235 eval $inhdr
8236
8237 case "$usedl" in
8238 $define|y|true)
8239         $cat << EOM
8240
8241 On a few systems, the dynamically loaded modules that perl generates and uses
8242 will need a different extension than shared libs. The default will probably
8243 be appropriate.
8244
8245 EOM
8246         case "$dlext" in
8247         '')     dflt="$so" ;;
8248         *)      dflt="$dlext" ;;
8249         esac
8250         rp='What is the extension of dynamically loaded modules'
8251         . ./myread
8252         dlext="$ans"
8253         ;;
8254 *)
8255         dlext="none"
8256         ;;
8257 esac
8258
8259 : Check if dlsym need a leading underscore
8260 echo " "
8261 val="$undef"
8262
8263 case "$dlsrc" in
8264 dl_dlopen.xs)
8265         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8266         $cat >dyna.c <<'EOM'
8267 fred () { }
8268 EOM
8269
8270 $cat >fred.c<<EOM
8271
8272 #include <stdio.h>
8273 #$i_dlfcn I_DLFCN
8274 #ifdef I_DLFCN
8275 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8276 #else
8277 #include <sys/types.h>
8278 #include <nlist.h>
8279 #include <link.h>
8280 #endif
8281
8282 extern int fred() ;
8283
8284 int main()
8285 {
8286     void * handle ;
8287     void * symbol ;
8288 #ifndef RTLD_LAZY
8289     int mode = 1 ;
8290 #else
8291     int mode = RTLD_LAZY ;
8292 #endif
8293     handle = dlopen("./dyna.$dlext", mode) ;
8294     if (handle == NULL) {
8295         printf ("1\n") ;
8296         fflush (stdout) ;
8297         exit(0);
8298     }
8299     symbol = dlsym(handle, "fred") ;
8300     if (symbol == NULL) {
8301         /* try putting a leading underscore */
8302         symbol = dlsym(handle, "_fred") ;
8303         if (symbol == NULL) {
8304             printf ("2\n") ;
8305             fflush (stdout) ;
8306             exit(0);
8307         }
8308         printf ("3\n") ;
8309     }
8310     else
8311         printf ("4\n") ;
8312     fflush (stdout) ;
8313     exit(0);
8314 }
8315 EOM
8316         : Call the object file tmp-dyna.o in case dlext=o.
8317         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8318                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8319                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8320                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8321                 xxx=`./fred`
8322                 case $xxx in
8323                 1)      echo "Test program failed using dlopen." >&4
8324                         echo "Perhaps you should not use dynamic loading." >&4;;
8325                 2)      echo "Test program failed using dlsym." >&4
8326                         echo "Perhaps you should not use dynamic loading." >&4;;
8327                 3)      echo "dlsym needs a leading underscore" >&4
8328                         val="$define" ;;
8329                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8330                 esac
8331         else
8332                 echo "I can't compile and run the test program." >&4
8333                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8334         fi
8335         ;;
8336 esac
8337                 
8338 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8339
8340 set d_dlsymun
8341 eval $setvar
8342
8343 hasproto='varname=$1; func=$2; shift; shift;
8344 while $test $# -ge 2; do
8345         case "$1" in
8346         $define) echo "#include <$2>";;
8347         esac ;
8348     shift 2;
8349 done > try.c;
8350 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8351 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8352         echo "$func() prototype found.";
8353         val="$define";
8354 else
8355         echo "$func() prototype NOT found.";
8356         val="$undef";
8357 fi;
8358 set $varname;
8359 eval $setvar;
8360 $rm -f try.c tryout.c'
8361
8362 : see if prototype for drand48 is available
8363 echo " "
8364 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8365 eval $hasproto
8366
8367 : see if dup2 exists
8368 set dup2 d_dup2
8369 eval $inlibc
8370
8371 : see if eaccess exists
8372 set eaccess d_eaccess
8373 eval $inlibc
8374
8375 : see if endgrent exists
8376 set endgrent d_endgrent
8377 eval $inlibc
8378
8379 : see if endhostent exists
8380 set endhostent d_endhent
8381 eval $inlibc
8382
8383 : see if endnetent exists
8384 set endnetent d_endnent
8385 eval $inlibc
8386
8387 : see if endprotoent exists
8388 set endprotoent d_endpent
8389 eval $inlibc
8390
8391 : see if endpwent exists
8392 set endpwent d_endpwent
8393 eval $inlibc
8394
8395 : see if endservent exists
8396 set endservent d_endsent
8397 eval $inlibc
8398
8399 : see if endspent exists
8400 set endspent d_endspent
8401 eval $inlibc
8402
8403 : Locate the flags for 'open()'
8404 echo " "
8405 $cat >open3.c <<'EOCP'
8406 #include <sys/types.h>
8407 #ifdef I_FCNTL
8408 #include <fcntl.h>
8409 #endif
8410 #ifdef I_SYS_FILE
8411 #include <sys/file.h>
8412 #endif
8413 int main() {
8414         if(O_RDONLY);
8415 #ifdef O_TRUNC
8416         exit(0);
8417 #else
8418         exit(1);
8419 #endif
8420 }
8421 EOCP
8422 : check sys/file.h first to get FREAD on Sun
8423 if $test `./findhdr sys/file.h` && \
8424                 set open3 -DI_SYS_FILE && eval $compile; then
8425         h_sysfile=true;
8426         echo "<sys/file.h> defines the O_* constants..." >&4
8427         if ./open3; then
8428                 echo "and you have the 3 argument form of open()." >&4
8429                 val="$define"
8430         else
8431                 echo "but not the 3 argument form of open().  Oh, well." >&4
8432                 val="$undef"
8433         fi
8434 elif $test `./findhdr fcntl.h` && \
8435                 set open3 -DI_FCNTL && eval $compile; then
8436         h_fcntl=true;
8437         echo "<fcntl.h> defines the O_* constants..." >&4
8438         if ./open3; then
8439                 echo "and you have the 3 argument form of open()." >&4
8440                 val="$define"
8441         else
8442                 echo "but not the 3 argument form of open().  Oh, well." >&4
8443                 val="$undef"
8444         fi
8445 else
8446         val="$undef"
8447         echo "I can't find the O_* constant definitions!  You got problems." >&4
8448 fi
8449 set d_open3
8450 eval $setvar
8451 $rm -f open3*
8452
8453 : see which of string.h or strings.h is needed
8454 echo " "
8455 strings=`./findhdr string.h`
8456 if $test "$strings" && $test -r "$strings"; then
8457         echo "Using <string.h> instead of <strings.h>." >&4
8458         val="$define"
8459 else
8460         val="$undef"
8461         strings=`./findhdr strings.h`
8462         if $test "$strings" && $test -r "$strings"; then
8463                 echo "Using <strings.h> instead of <string.h>." >&4
8464         else
8465                 echo "No string header found -- You'll surely have problems." >&4
8466         fi
8467 fi
8468 set i_string
8469 eval $setvar
8470 case "$i_string" in
8471 "$undef") strings=`./findhdr strings.h`;;
8472 *)        strings=`./findhdr string.h`;;
8473 esac
8474
8475 : check for non-blocking I/O stuff
8476 case "$h_sysfile" in
8477 true) echo "#include <sys/file.h>" > head.c;;
8478 *)
8479         case "$h_fcntl" in
8480         true) echo "#include <fcntl.h>" > head.c;;
8481         *) echo "#include <sys/fcntl.h>" > head.c;;
8482         esac
8483         ;;
8484 esac
8485 echo " "
8486 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8487 case "$o_nonblock" in
8488 '')
8489         $cat head.c > try.c
8490         $cat >>try.c <<'EOCP'
8491 #include <stdio.h>
8492 int main() {
8493 #ifdef O_NONBLOCK
8494         printf("O_NONBLOCK\n");
8495         exit(0);
8496 #endif
8497 #ifdef O_NDELAY
8498         printf("O_NDELAY\n");
8499         exit(0);
8500 #endif
8501 #ifdef FNDELAY
8502         printf("FNDELAY\n");
8503         exit(0);
8504 #endif
8505         exit(0);
8506 }
8507 EOCP
8508         set try
8509         if eval $compile_ok; then
8510                 o_nonblock=`./try`
8511                 case "$o_nonblock" in
8512                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8513                 *) echo "Seems like we can use $o_nonblock.";;
8514                 esac
8515         else
8516                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8517         fi
8518         ;;
8519 *) echo "Using $hint value $o_nonblock.";;
8520 esac
8521 $rm -f try try.* .out core
8522
8523 echo " "
8524 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8525 case "$eagain" in
8526 '')
8527         $cat head.c > try.c
8528         $cat >>try.c <<EOCP
8529 #include <errno.h>
8530 #include <sys/types.h>
8531 #include <signal.h>
8532 #include <stdio.h> 
8533 #define MY_O_NONBLOCK $o_nonblock
8534 #ifndef errno  /* XXX need better Configure test */
8535 extern int errno;
8536 #endif
8537 #$i_unistd I_UNISTD
8538 #ifdef I_UNISTD
8539 #include <unistd.h>
8540 #endif
8541 #ifdef $i_string
8542 #include <string.h>
8543 #else
8544 #include <strings.h>
8545 #endif
8546 $signal_t blech(x) int x; { exit(3); }
8547 EOCP
8548         $cat >> try.c <<'EOCP'
8549 int main()
8550 {
8551         int pd[2];
8552         int pu[2];
8553         char buf[1];
8554         char string[100];
8555
8556         pipe(pd);       /* Down: child -> parent */
8557         pipe(pu);       /* Up: parent -> child */
8558         if (0 != fork()) {
8559                 int ret;
8560                 close(pd[1]);   /* Parent reads from pd[0] */
8561                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8562                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8563                         exit(1);
8564                 signal(SIGALRM, blech);
8565                 alarm(5);
8566                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8567                         exit(2);
8568                 sprintf(string, "%d\n", ret);
8569                 write(2, string, strlen(string));
8570                 alarm(0);
8571 #ifdef EAGAIN
8572                 if (errno == EAGAIN) {
8573                         printf("EAGAIN\n");
8574                         goto ok;
8575                 }
8576 #endif
8577 #ifdef EWOULDBLOCK
8578                 if (errno == EWOULDBLOCK)
8579                         printf("EWOULDBLOCK\n");
8580 #endif
8581         ok:
8582                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8583                 sleep(2);                               /* Give it time to close our pipe */
8584                 alarm(5);
8585                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8586                 alarm(0);
8587                 sprintf(string, "%d\n", ret);
8588                 write(3, string, strlen(string));
8589                 exit(0);
8590         }
8591
8592         close(pd[0]);                   /* We write to pd[1] */
8593         close(pu[1]);                   /* We read from pu[0] */
8594         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8595         close(pd[1]);                   /* Pipe pd is now fully closed! */
8596         exit(0);                                /* Bye bye, thank you for playing! */
8597 }
8598 EOCP
8599         set try
8600         if eval $compile_ok; then
8601                 echo "$startsh" >mtry
8602                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8603                 chmod +x mtry
8604                 ./mtry >/dev/null 2>&1
8605                 case $? in
8606                 0) eagain=`$cat try.out`;;
8607                 1) echo "Could not perform non-blocking setting!";;
8608                 2) echo "I did a successful read() for something that was not there!";;
8609                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8610                 *) echo "Something terribly wrong happened during testing.";;
8611                 esac
8612                 rd_nodata=`$cat try.ret`
8613                 echo "A read() system call with no data present returns $rd_nodata."
8614                 case "$rd_nodata" in
8615                 0|-1) ;;
8616                 *)
8617                         echo "(That's peculiar, fixing that to be -1.)"
8618                         rd_nodata=-1
8619                         ;;
8620                 esac
8621                 case "$eagain" in
8622                 '')
8623                         echo "Forcing errno EAGAIN on read() with no data available."
8624                         eagain=EAGAIN
8625                         ;;
8626                 *)
8627                         echo "Your read() sets errno to $eagain when no data is available."
8628                         ;;
8629                 esac
8630                 status=`$cat try.err`
8631                 case "$status" in
8632                 0) echo "And it correctly returns 0 to signal EOF.";;
8633                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8634                 *) echo "However, your read() returns '$status' on EOF??";;
8635                 esac
8636                 val="$define"
8637                 if test "$status" = "$rd_nodata"; then
8638                         echo "WARNING: you can't distinguish between EOF and no data!"
8639                         val="$undef"
8640                 fi
8641         else
8642                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8643                 eagain=EAGAIN
8644         fi
8645         set d_eofnblk
8646         eval $setvar
8647         ;;
8648 *)
8649         echo "Using $hint value $eagain."
8650         echo "Your read() returns $rd_nodata when no data is present."
8651         case "$d_eofnblk" in
8652         "$define") echo "And you can see EOF because read() returns 0.";;
8653         "$undef") echo "But you can't see EOF status from read() returned value.";;
8654         *)
8655                 echo "(Assuming you can't see EOF status from read anyway.)"
8656                 d_eofnblk=$undef
8657                 ;;
8658         esac
8659         ;;
8660 esac
8661 $rm -f try try.* .out core head.c mtry
8662
8663 : see if fchmod exists
8664 set fchmod d_fchmod
8665 eval $inlibc
8666
8667 : see if fchown exists
8668 set fchown d_fchown
8669 eval $inlibc
8670
8671 : see if this is an fcntl system
8672 set fcntl d_fcntl
8673 eval $inlibc
8674
8675 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8676 while $test $# -ge 2; do
8677         case "$1" in
8678         $define) echo "#include <$2>";;
8679         esac ;
8680     shift 2;
8681 done > try.c;
8682 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8683 set try;
8684 if eval $compile; then
8685         val="$define";
8686 else
8687         val="$undef";
8688 fi;
8689 set $varname;
8690 eval $setvar;
8691 $rm -f try.c try.o'
8692
8693 socketlib=''
8694 sockethdr=''
8695 : see whether socket exists
8696 echo " "
8697 $echo $n "Hmm... $c" >&4
8698 if set socket val -f d_socket; eval $csym; $val; then
8699         echo "Looks like you have Berkeley networking support." >&4
8700         d_socket="$define"
8701         if set setsockopt val -f; eval $csym; $val; then
8702                 d_oldsock="$undef"
8703         else
8704                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8705                 d_oldsock="$define"
8706         fi
8707 else
8708         if $contains socklib libc.list >/dev/null 2>&1; then
8709                 echo "Looks like you have Berkeley networking support." >&4
8710                 d_socket="$define"
8711                 : we will have to assume that it supports the 4.2 BSD interface
8712                 d_oldsock="$undef"
8713         else
8714                 echo "You don't have Berkeley networking in libc$_a..." >&4
8715                 if test "X$d_socket" = "X$define"; then
8716                    echo "...but you seem to believe that you have sockets." >&4
8717                 else
8718                         for net in net socket
8719                         do
8720                                 if test -f /usr/lib/lib$net$_a; then
8721                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8722                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8723                                         if $contains socket libc.list >/dev/null 2>&1; then
8724                                                 d_socket="$define"
8725                                                 socketlib="-l$net"
8726                                                 case "$net" in
8727                                                 net)
8728                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8729                                                         sockethdr="-I/usr/netinclude"
8730                                                         ;;
8731                                                 esac
8732                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8733                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8734                                                         d_oldsock="$undef"
8735                                                 else
8736                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8737                                                         d_oldsock="$define"
8738                                                 fi
8739                                                 break
8740                                         fi
8741                                 fi
8742                         done
8743                         if test "X$d_socket" != "X$define"; then
8744                            echo "or anywhere else I see." >&4
8745                            d_socket="$undef"
8746                            d_oldsock="$undef"
8747                         fi
8748                 fi
8749         fi
8750 fi
8751
8752 : see if socketpair exists
8753 set socketpair d_sockpair
8754 eval $inlibc
8755
8756
8757 echo " "
8758 echo "Checking the availability of certain socket constants..." >& 4
8759 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8760         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8761         $cat >try.c <<EOF
8762 #include <sys/types.h>
8763 #include <sys/socket.h>
8764 int main() {
8765     int i = $ENUM;
8766 }
8767 EOF
8768         val="$undef"
8769         set try; if eval $compile; then
8770                 val="$define"
8771         fi
8772         set d_${enum}; eval $setvar
8773         $rm -f try.c try
8774 done
8775
8776 : see if sys/select.h has to be included
8777 set sys/select.h i_sysselct
8778 eval $inhdr
8779
8780 : see if we should include time.h, sys/time.h, or both
8781 echo " "
8782 if test "X$timeincl" = X; then
8783         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8784         $echo $n "I'm now running the test program...$c"
8785         $cat >try.c <<'EOCP'
8786 #include <sys/types.h>
8787 #ifdef I_TIME
8788 #include <time.h>
8789 #endif
8790 #ifdef I_SYSTIME
8791 #ifdef SYSTIMEKERNEL
8792 #define KERNEL
8793 #endif
8794 #include <sys/time.h>
8795 #endif
8796 #ifdef I_SYSSELECT
8797 #include <sys/select.h>
8798 #endif
8799 int main()
8800 {
8801         struct tm foo;
8802 #ifdef S_TIMEVAL
8803         struct timeval bar;
8804 #endif
8805 #ifdef S_TIMEZONE
8806         struct timezone tzp;
8807 #endif
8808         if (foo.tm_sec == foo.tm_sec)
8809                 exit(0);
8810 #ifdef S_TIMEVAL
8811         if (bar.tv_sec == bar.tv_sec)
8812                 exit(0);
8813 #endif
8814         exit(1);
8815 }
8816 EOCP
8817         flags=''
8818         for s_timezone in '-DS_TIMEZONE' ''; do
8819         sysselect=''
8820         for s_timeval in '-DS_TIMEVAL' ''; do
8821         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8822         for i_time in '' '-DI_TIME'; do
8823         for i_systime in '-DI_SYSTIME' ''; do
8824                 case "$flags" in
8825                 '') $echo $n ".$c"
8826                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8827                         if eval $compile; then
8828                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8829                                 shift
8830                                 flags="$*"
8831                                 echo " "
8832                                 $echo $n "Succeeded with $flags$c"
8833                         fi
8834                         ;;
8835                 esac
8836         done
8837         done
8838         done
8839         done
8840         done
8841         timeincl=''
8842         echo " "
8843         case "$flags" in
8844         *SYSTIMEKERNEL*) i_systimek="$define"
8845                 timeincl=`./findhdr sys/time.h`
8846                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8847         *) i_systimek="$undef";;
8848         esac
8849         case "$flags" in
8850         *I_TIME*) i_time="$define"
8851                 timeincl=`./findhdr time.h`" $timeincl"
8852                 echo "We'll include <time.h>." >&4;;
8853         *) i_time="$undef";;
8854         esac
8855         case "$flags" in
8856         *I_SYSTIME*) i_systime="$define"
8857                 timeincl=`./findhdr sys/time.h`" $timeincl"
8858                 echo "We'll include <sys/time.h>." >&4;;
8859         *) i_systime="$undef";;
8860         esac
8861         $rm -f try.c try
8862 fi
8863
8864 : check for fd_set items
8865 $cat <<EOM
8866
8867 Checking to see how well your C compiler handles fd_set and friends ...
8868 EOM
8869 $cat >fd_set.c <<EOCP
8870 #$i_systime I_SYS_TIME
8871 #$i_sysselct I_SYS_SELECT
8872 #$d_socket HAS_SOCKET
8873 #include <sys/types.h>
8874 #ifdef HAS_SOCKET
8875 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8876 #endif
8877 #ifdef I_SYS_TIME
8878 #include <sys/time.h>
8879 #endif
8880 #ifdef I_SYS_SELECT
8881 #include <sys/select.h>
8882 #endif
8883 int main() {
8884         fd_set fds;
8885
8886 #ifdef TRYBITS
8887         if(fds.fds_bits);
8888 #endif
8889
8890 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8891         exit(0);
8892 #else
8893         exit(1);
8894 #endif
8895 }
8896 EOCP
8897 set fd_set -DTRYBITS
8898 if eval $compile; then
8899         d_fds_bits="$define"
8900         d_fd_set="$define"
8901         echo "Well, your system knows about the normal fd_set typedef..." >&4
8902         if ./fd_set; then
8903                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8904                 d_fd_macros="$define"
8905         else
8906                 $cat >&4 <<'EOM'
8907 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8908 EOM
8909                 d_fd_macros="$undef"
8910         fi
8911 else
8912         $cat <<'EOM'
8913 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8914 EOM
8915         set fd_set
8916         if eval $compile; then
8917                 d_fds_bits="$undef"
8918                 d_fd_set="$define"
8919                 echo "Well, your system has some sort of fd_set available..." >&4
8920                 if ./fd_set; then
8921                         echo "and you have the normal fd_set macros." >&4
8922                         d_fd_macros="$define"
8923                 else
8924                         $cat <<'EOM'
8925 but not the normal fd_set macros!  Gross!  More work for me...
8926 EOM
8927                         d_fd_macros="$undef"
8928                 fi
8929         else
8930         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8931                 d_fd_set="$undef"
8932                 d_fds_bits="$undef"
8933                 d_fd_macros="$undef"
8934         fi
8935 fi
8936 $rm -f fd_set*
8937
8938 : see if fgetpos exists
8939 set fgetpos d_fgetpos
8940 eval $inlibc
8941
8942 : see if flock exists
8943 set flock d_flock
8944 eval $inlibc
8945
8946 : see if fork exists
8947 set fork d_fork
8948 eval $inlibc
8949
8950 : see if pathconf exists
8951 set pathconf d_pathconf
8952 eval $inlibc
8953
8954 : see if fpathconf exists
8955 set fpathconf d_fpathconf
8956 eval $inlibc
8957
8958
8959 : check for fpos64_t
8960 echo " "
8961 echo "Checking to see if you have fpos64_t..." >&4
8962 $cat >try.c <<EOCP
8963 #include <stdio.h>
8964 int main() { fpos64_t x = 7; }
8965 EOCP
8966 set try
8967 if eval $compile; then
8968         val="$define"
8969         echo "You have fpos64_t."
8970 else
8971         val="$undef"
8972         echo "You do not have fpos64_t."
8973         case "$fpossize" in
8974         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8975         esac
8976 fi
8977 $rm -f try.* try
8978 set d_fpos64_t
8979 eval $setvar
8980
8981 hasstruct='varname=$1; struct=$2; shift; shift;
8982 while $test $# -ge 2; do
8983         case "$1" in
8984         $define) echo "#include <$2>";;
8985         esac ;
8986     shift 2;
8987 done > try.c;
8988 echo "int main () { struct $struct foo; }" >> try.c;
8989 set try;
8990 if eval $compile; then
8991         val="$define";
8992 else
8993         val="$undef";
8994 fi;
8995 set $varname;
8996 eval $setvar;
8997 $rm -f try.c try.o'
8998
8999 : see if this is a sys/param system
9000 set sys/param.h i_sysparam
9001 eval $inhdr
9002
9003 : see if this is a sys/mount.h system
9004 set sys/mount.h i_sysmount
9005 eval $inhdr
9006
9007 : see if sys/types.h has to be included
9008 set sys/types.h i_systypes
9009 eval $inhdr
9010
9011
9012 echo " "
9013 echo "Checking to see if your system supports struct fs_data..." >&4
9014 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9015 eval $hasstruct
9016 case "$d_fs_data_s" in
9017 "$define")      echo "Yes, it does."   ;;
9018 *)              echo "No, it doesn't." ;;
9019 esac
9020
9021 : see if fseeko exists
9022 set fseeko d_fseeko
9023 eval $inlibc
9024 case "$longsize" in
9025 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9026 esac
9027
9028 : see if fsetpos exists
9029 set fsetpos d_fsetpos
9030 eval $inlibc
9031
9032
9033 : see if fstatfs exists
9034 set fstatfs d_fstatfs
9035 eval $inlibc
9036
9037
9038 : see if statvfs exists
9039 set statvfs d_statvfs
9040 eval $inlibc
9041
9042 : see if fstatvfs exists
9043 set fstatvfs d_fstatvfs
9044 eval $inlibc
9045
9046
9047 : see if ftello exists
9048 set ftello d_ftello
9049 eval $inlibc
9050 case "$longsize" in
9051 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9052 esac
9053
9054 : see if getcwd exists
9055 set getcwd d_getcwd
9056 eval $inlibc
9057
9058
9059 : see if getfsstat exists
9060 set getfsstat d_getfsstat
9061 eval $inlibc
9062
9063 : see if getgrent exists
9064 set getgrent d_getgrent
9065 eval $inlibc
9066
9067 : see if gethostbyaddr exists
9068 set gethostbyaddr d_gethbyaddr
9069 eval $inlibc
9070
9071 : see if gethostbyname exists
9072 set gethostbyname d_gethbyname
9073 eval $inlibc
9074
9075 : see if gethostent exists
9076 set gethostent d_gethent
9077 eval $inlibc
9078
9079 : see how we will look up host name
9080 echo " "
9081 call=''
9082 if set gethostname val -f d_gethname; eval $csym; $val; then
9083         echo 'gethostname() found.' >&4
9084         d_gethname="$define"
9085         call=gethostname
9086 fi
9087 if set uname val -f d_uname; eval $csym; $val; then
9088         if ./xenix; then
9089                 $cat <<'EOM'
9090 uname() was found, but you're running xenix, and older versions of xenix
9091 have a broken uname(). If you don't really know whether your xenix is old
9092 enough to have a broken system call, use the default answer.
9093
9094 EOM
9095                 dflt=y
9096                 case "$d_uname" in
9097                 "$define") dflt=n;;
9098                 esac
9099                 rp='Is your uname() broken?'
9100                 . ./myread
9101                 case "$ans" in
9102                 n*) d_uname="$define"; call=uname;;
9103                 esac
9104         else
9105                 echo 'uname() found.' >&4
9106                 d_uname="$define"
9107                 case "$call" in
9108                 '') call=uname ;;
9109                 esac
9110         fi
9111 fi
9112 case "$d_gethname" in
9113 '') d_gethname="$undef";;
9114 esac
9115 case "$d_uname" in
9116 '') d_uname="$undef";;
9117 esac
9118 case "$d_uname$d_gethname" in
9119 *define*)
9120         dflt=n
9121         cat <<EOM
9122  
9123 Every now and then someone has a $call() that lies about the hostname
9124 but can't be fixed for political or economic reasons.  If you wish, I can
9125 pretend $call() isn't there and maybe compute hostname at run-time
9126 thanks to the '$phostname' command.
9127
9128 EOM
9129         rp="Shall I ignore $call() from now on?"
9130         . ./myread
9131         case "$ans" in
9132         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9133         esac;;
9134 esac
9135 case "$phostname" in
9136 '') aphostname='';;
9137 *) case "$aphostname" in
9138         /*) ;;
9139         *) set X $phostname
9140                 shift
9141                 file=$1
9142                 shift
9143                 file=`./loc $file $file $pth`
9144                 aphostname=`echo $file $*`
9145                 ;;
9146         esac
9147         ;;
9148 esac
9149 case "$d_uname$d_gethname" in
9150 *define*) ;;
9151 *)
9152         case "$phostname" in
9153         '')
9154                 echo "There will be no way for $package to get your hostname." >&4;;
9155         *)
9156         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9157                 ;;
9158         esac;;
9159 esac
9160 case "$d_phostname" in
9161 '') d_phostname="$undef";;
9162 esac
9163
9164 : see if this is a netdb.h system
9165 set netdb.h i_netdb
9166 eval $inhdr
9167
9168 : see if prototypes for various gethostxxx netdb.h functions are available
9169 echo " "
9170 set d_gethostprotos gethostent $i_netdb netdb.h
9171 eval $hasproto
9172
9173 : see if getlogin exists
9174 set getlogin d_getlogin
9175 eval $inlibc
9176
9177 : see if getmnt exists
9178 set getmnt d_getmnt
9179 eval $inlibc
9180
9181 : see if getmntent exists
9182 set getmntent d_getmntent
9183 eval $inlibc
9184
9185 : see if getnetbyaddr exists
9186 set getnetbyaddr d_getnbyaddr
9187 eval $inlibc
9188
9189 : see if getnetbyname exists
9190 set getnetbyname d_getnbyname
9191 eval $inlibc
9192
9193 : see if getnetent exists
9194 set getnetent d_getnent
9195 eval $inlibc
9196
9197 : see if prototypes for various getnetxxx netdb.h functions are available
9198 echo " "
9199 set d_getnetprotos getnetent $i_netdb netdb.h
9200 eval $hasproto
9201
9202
9203 : see if getprotobyname exists
9204 set getprotobyname d_getpbyname
9205 eval $inlibc
9206
9207 : see if getprotobynumber exists
9208 set getprotobynumber d_getpbynumber
9209 eval $inlibc
9210
9211 : see if getprotoent exists
9212 set getprotoent d_getpent
9213 eval $inlibc
9214
9215 : see if getpgid exists
9216 set getpgid d_getpgid
9217 eval $inlibc
9218
9219 : see if getpgrp2 exists
9220 set getpgrp2 d_getpgrp2
9221 eval $inlibc
9222
9223 : see if getppid exists
9224 set getppid d_getppid
9225 eval $inlibc
9226
9227 : see if getpriority exists
9228 set getpriority d_getprior
9229 eval $inlibc
9230
9231 : see if prototypes for various getprotoxxx netdb.h functions are available
9232 echo " "
9233 set d_getprotoprotos getprotoent $i_netdb netdb.h
9234 eval $hasproto
9235
9236 : see if getpwent exists
9237 set getpwent d_getpwent
9238 eval $inlibc
9239
9240
9241 : see if getservbyname exists
9242 set getservbyname d_getsbyname
9243 eval $inlibc
9244
9245 : see if getservbyport exists
9246 set getservbyport d_getsbyport
9247 eval $inlibc
9248
9249 : see if getservent exists
9250 set getservent d_getsent
9251 eval $inlibc
9252
9253 : see if prototypes for various getservxxx netdb.h functions are available
9254 echo " "
9255 set d_getservprotos getservent $i_netdb netdb.h
9256 eval $hasproto
9257
9258 : see if getspent exists
9259 set getspent d_getspent
9260 eval $inlibc
9261
9262 : see if getspnam exists
9263 set getspnam d_getspnam
9264 eval $inlibc
9265
9266 : see if gettimeofday or ftime exists
9267 set gettimeofday d_gettimeod
9268 eval $inlibc
9269 case "$d_gettimeod" in
9270 "$undef")
9271         set ftime d_ftime 
9272         eval $inlibc
9273         ;;
9274 *)
9275         val="$undef"; set d_ftime; eval $setvar
9276         ;;
9277 esac
9278 case "$d_gettimeod$d_ftime" in
9279 "$undef$undef")
9280         echo " "
9281         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9282         ;;
9283 esac
9284
9285 : see if this is an grp system
9286 set grp.h i_grp
9287 eval $inhdr
9288
9289 case "$i_grp" in
9290 $define)
9291         xxx=`./findhdr grp.h`
9292         $cppstdin $cppflags $cppminus < $xxx >$$.h
9293
9294         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9295                 val="$define"
9296         else
9297                 val="$undef"
9298         fi
9299         set d_grpasswd
9300         eval $setvar
9301
9302         $rm -f $$.h
9303         ;;
9304 *)
9305         val="$undef";
9306         set d_grpasswd; eval $setvar
9307         ;;
9308 esac
9309
9310 : see if hasmntopt exists
9311 set hasmntopt d_hasmntopt
9312 eval $inlibc
9313
9314 : see if this is a netinet/in.h or sys/in.h system
9315 set netinet/in.h i_niin sys/in.h i_sysin
9316 eval $inhdr
9317
9318 : see if arpa/inet.h has to be included
9319 set arpa/inet.h i_arpainet
9320 eval $inhdr
9321
9322 : see if htonl --and friends-- exists
9323 val=''
9324 set htonl val
9325 eval $inlibc
9326
9327 : Maybe they are macros.
9328 case "$val" in
9329 $undef)
9330         $cat >htonl.c <<EOM
9331 #include <stdio.h>
9332 #include <sys/types.h>
9333 #$i_niin I_NETINET_IN
9334 #$i_sysin I_SYS_IN
9335 #$i_arpainet I_ARPA_INET
9336 #ifdef I_NETINET_IN
9337 #include <netinet/in.h>
9338 #endif
9339 #ifdef I_SYS_IN
9340 #include <sys/in.h>
9341 #endif
9342 #ifdef I_ARPA_INET
9343 #include <arpa/inet.h>
9344 #endif
9345 #ifdef htonl
9346 printf("Defined as a macro.");
9347 #endif
9348 EOM
9349         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9350         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9351                 val="$define"
9352                 echo "But it seems to be defined as a macro." >&4
9353         fi
9354         $rm -f htonl.?
9355         ;;
9356 esac
9357 set d_htonl
9358 eval $setvar
9359
9360 : see if iconv exists
9361 set iconv d_iconv
9362 eval $inlibc
9363
9364 : index or strchr
9365 echo " "
9366 if set index val -f; eval $csym; $val; then
9367         if set strchr val -f d_strchr; eval $csym; $val; then
9368                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9369                         val="$define"
9370                         vali="$undef"
9371                         echo "strchr() found." >&4
9372                 else
9373                         val="$undef"
9374                         vali="$define"
9375                         echo "index() found." >&4
9376                 fi
9377         else
9378                 val="$undef"
9379                 vali="$define"
9380                 echo "index() found." >&4
9381         fi
9382 else
9383         if set strchr val -f d_strchr; eval $csym; $val; then
9384                 val="$define"
9385                 vali="$undef"
9386                 echo "strchr() found." >&4
9387         else
9388                 echo "No index() or strchr() found!" >&4
9389                 val="$undef"
9390                 vali="$undef"
9391         fi
9392 fi
9393 set d_strchr; eval $setvar
9394 val="$vali"
9395 set d_index; eval $setvar
9396
9397 : check whether inet_aton exists
9398 set inet_aton d_inetaton
9399 eval $inlibc
9400
9401 : see if inttypes.h is available
9402 : we want a real compile instead of Inhdr because some systems
9403 : have an inttypes.h which includes non-existent headers
9404 echo " "
9405 $cat >try.c <<EOCP
9406 #include <inttypes.h>
9407 int main() {
9408         static int32_t foo32 = 0x12345678;
9409 }
9410 EOCP
9411 set try
9412 if eval $compile; then
9413         echo "<inttypes.h> found." >&4
9414         val="$define"
9415 else
9416         echo "<inttypes.h> NOT found." >&4
9417         val="$undef"
9418 fi
9419 $rm -f try.c try
9420 set i_inttypes
9421 eval $setvar
9422
9423 : check for int64_t
9424 echo " "
9425 echo "Checking to see if you have int64_t..." >&4
9426 $cat >try.c <<EOCP
9427 #include <sys/types.h>
9428 #$i_inttypes I_INTTYPES
9429 #ifdef I_INTTYPES
9430 #include <inttypes.h>
9431 #endif
9432 int main() { int64_t x = 7; }
9433 EOCP
9434 set try
9435 if eval $compile; then
9436         val="$define"
9437         echo "You have int64_t."
9438 else
9439         val="$undef"
9440         echo "You do not have int64_t."
9441 fi
9442 $rm -f try try.*
9443 set d_int64_t
9444 eval $setvar
9445
9446 : Look for isascii
9447 echo " "
9448 $cat >isascii.c <<'EOCP'
9449 #include <stdio.h>
9450 #include <ctype.h>
9451 int main() {
9452         int c = 'A';
9453         if (isascii(c))
9454                 exit(0);
9455         else
9456                 exit(1);
9457 }
9458 EOCP
9459 set isascii
9460 if eval $compile; then
9461         echo "isascii() found." >&4
9462         val="$define"
9463 else
9464         echo "isascii() NOT found." >&4
9465         val="$undef"
9466 fi
9467 set d_isascii
9468 eval $setvar
9469 $rm -f isascii*
9470
9471 : see if killpg exists
9472 set killpg d_killpg
9473 eval $inlibc
9474
9475 : see if lchown exists
9476 echo " "
9477 $cat > try.c <<'EOCP'
9478 /* System header to define __stub macros and hopefully few prototypes,
9479     which can conflict with char lchown(); below.  */
9480 #include <assert.h>
9481 /* Override any gcc2 internal prototype to avoid an error.  */
9482 /* We use char because int might match the return type of a gcc2
9483    builtin and then its argument prototype would still apply.  */
9484 char lchown();
9485 int main() {
9486     /*  The GNU C library defines this for functions which it implements
9487         to always fail with ENOSYS.  Some functions are actually named
9488         something starting with __ and the normal name is an alias.  */
9489 #if defined (__stub_lchown) || defined (__stub___lchown)
9490 choke me
9491 #else
9492 lchown();
9493 #endif
9494 ; return 0; }
9495 EOCP
9496 set try
9497 if eval $compile; then
9498     $echo "lchown() found." >&4
9499     val="$define"
9500 else
9501     $echo "lchown() NOT found." >&4
9502     val="$undef"
9503 fi
9504 set d_lchown
9505 eval $setvar
9506
9507 : See if number of significant digits in a double precision number is known
9508 echo " "
9509 $cat >ldbl_dig.c <<EOM
9510 #$i_limits I_LIMITS
9511 #$i_float I_FLOAT
9512 #ifdef I_LIMITS
9513 #include <limits.h>
9514 #endif
9515 #ifdef I_FLOAT
9516 #include <float.h>
9517 #endif
9518 #ifdef LDBL_DIG
9519 printf("Contains LDBL_DIG");
9520 #endif
9521 EOM
9522 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9523 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9524         echo "LDBL_DIG found." >&4
9525         val="$define"
9526 else
9527         echo "LDBL_DIG NOT found." >&4
9528         val="$undef"
9529 fi
9530 $rm -f ldbl_dig.?
9531 set d_ldbl_dig
9532 eval $setvar
9533
9534 : see if link exists
9535 set link d_link
9536 eval $inlibc
9537
9538 : see if localeconv exists
9539 set localeconv d_locconv
9540 eval $inlibc
9541
9542 : see if lockf exists
9543 set lockf d_lockf
9544 eval $inlibc
9545
9546 : check for long long
9547 echo " "
9548 echo "Checking to see if you have long long..." >&4
9549 echo 'int main() { long long x = 7; return 0; }' > try.c
9550 set try
9551 if eval $compile; then
9552         val="$define"
9553         echo "You have have long long."
9554 else
9555         val="$undef"
9556         echo "You do not have long long."
9557 fi
9558 $rm try.*
9559 set d_longlong
9560 eval $setvar
9561
9562 : check for length of long long
9563 case "${d_longlong}${longlongsize}" in
9564 $define)
9565         echo " "
9566         echo "Checking to see how big your long longs are..." >&4
9567         $cat >try.c <<'EOCP'
9568 #include <stdio.h>
9569 int main()
9570 {
9571     printf("%d\n", (int)sizeof(long long));
9572     return(0);
9573 }
9574 EOCP
9575         set try
9576         if eval $compile_ok; then
9577                 longlongsize=`./try$exe_ext`
9578                 echo "Your long longs are $longlongsize bytes long."
9579         else
9580                 dflt='8'
9581                 echo " "
9582                 echo "(I can't seem to compile the test program.  Guessing...)"
9583                 rp="What is the size of a long long (in bytes)?"
9584                 . ./myread
9585                 longlongsize="$ans"
9586         fi
9587         if $test "X$longsize" = "X$longlongsize"; then
9588                 echo "(That isn't any different from an ordinary long.)"
9589         fi      
9590         ;;
9591 esac
9592 $rm -f try.* try
9593
9594 : see if prototype for lseek is available
9595 echo " "
9596 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9597 eval $hasproto
9598
9599 : see if lstat exists
9600 set lstat d_lstat
9601 eval $inlibc
9602
9603 : see if madvise exists
9604 set madvise d_madvise
9605 eval $inlibc
9606
9607 : see if mblen exists
9608 set mblen d_mblen
9609 eval $inlibc
9610
9611 : see if mbstowcs exists
9612 set mbstowcs d_mbstowcs
9613 eval $inlibc
9614
9615 : see if mbtowc exists
9616 set mbtowc d_mbtowc
9617 eval $inlibc
9618
9619 : see if memchr exists
9620 set memchr d_memchr
9621 eval $inlibc
9622
9623 : see if memcmp exists
9624 set memcmp d_memcmp
9625 eval $inlibc
9626
9627 : see if memcpy exists
9628 set memcpy d_memcpy
9629 eval $inlibc
9630
9631 : see if memmove exists
9632 set memmove d_memmove
9633 eval $inlibc
9634
9635 : see if memset exists
9636 set memset d_memset
9637 eval $inlibc
9638
9639 : see if mkdir exists
9640 set mkdir d_mkdir
9641 eval $inlibc
9642
9643 : see if mkdtemp exists
9644 set mkdtemp d_mkdtemp
9645 eval $inlibc
9646
9647 : see if mkfifo exists
9648 set mkfifo d_mkfifo
9649 eval $inlibc
9650
9651 : see if mkstemp exists
9652 set mkstemp d_mkstemp
9653 eval $inlibc
9654
9655 : see if mkstemps exists
9656 set mkstemps d_mkstemps
9657 eval $inlibc
9658
9659 : see if mktime exists
9660 set mktime d_mktime
9661 eval $inlibc
9662
9663 : see if this is a sys/mman.h system
9664 set sys/mman.h i_sysmman
9665 eval $inhdr
9666
9667 : see if mmap exists
9668 set mmap d_mmap
9669 eval $inlibc
9670 : see what shmat returns
9671 : default to something harmless
9672 mmaptype='void *'
9673 case "$i_sysmman$d_mmap" in
9674 "$define$define")
9675         $cat >mmap.c <<'END'
9676 #include <sys/mman.h>
9677 void *mmap();
9678 END
9679         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9680                 mmaptype='void *'
9681         else
9682                 mmaptype='caddr_t'
9683         fi
9684         echo "and it returns ($mmaptype)." >&4
9685         ;;
9686 esac
9687
9688
9689
9690 : see if mprotect exists
9691 set mprotect d_mprotect
9692 eval $inlibc
9693
9694 : see if msgctl exists
9695 set msgctl d_msgctl
9696 eval $inlibc
9697
9698 : see if msgget exists
9699 set msgget d_msgget
9700 eval $inlibc
9701
9702 : see if msgsnd exists
9703 set msgsnd d_msgsnd
9704 eval $inlibc
9705
9706 : see if msgrcv exists
9707 set msgrcv d_msgrcv
9708 eval $inlibc
9709
9710 : see how much of the 'msg*(2)' library is present.
9711 h_msg=true
9712 echo " "
9713 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9714 *"$undef"*) h_msg=false;;
9715 esac
9716 case "$osname" in
9717 freebsd)
9718     case "`ipcs 2>&1`" in
9719     "SVID messages"*"not configured"*)
9720         echo "Your $osname does not have the msg*(2) configured." >&4
9721         h_msg=false
9722         val="$undef"
9723         set msgctl d_msgctl
9724         eval $setvar
9725         set msgget d_msgget
9726         eval $setvar
9727         set msgsnd d_msgsnd
9728         eval $setvar
9729         set msgrcv d_msgrcv
9730         eval $setvar
9731         ;;
9732     esac
9733     ;;
9734 esac
9735 : we could also check for sys/ipc.h ...
9736 if $h_msg && $test `./findhdr sys/msg.h`; then
9737         echo "You have the full msg*(2) library." >&4
9738         val="$define"
9739 else
9740         echo "You don't have the full msg*(2) library." >&4
9741         val="$undef"
9742 fi
9743 set d_msg
9744 eval $setvar
9745
9746 : see if msync exists
9747 set msync d_msync
9748 eval $inlibc
9749
9750 : see if munmap exists
9751 set munmap d_munmap
9752 eval $inlibc
9753
9754 : see if nice exists
9755 set nice d_nice
9756 eval $inlibc
9757
9758
9759 echo " "
9760 echo "Checking which 64-bit integer type we could use..." >&4
9761
9762 case "$intsize" in
9763 8) val=int
9764    set quadtype
9765    eval $setvar
9766    val='"unsigned int"'
9767    set uquadtype
9768    eval $setvar
9769    quadkind=1
9770    ;;
9771 *) case "$longsize" in
9772    8) val=long
9773       set quadtype
9774       eval $setvar
9775       val='"unsigned long"'
9776       set uquadtype
9777       eval $setvar
9778       quadkind=2
9779       ;;
9780    *) case "$d_longlong:$longlongsize" in
9781       define:8)
9782         val='"long long"'
9783         set quadtype
9784         eval $setvar
9785         val='"unsigned long long"'
9786         set uquadtype
9787         eval $setvar
9788         quadkind=3
9789         ;;
9790       *) case "$d_int64_t" in
9791          define)
9792            val=int64_t
9793            set quadtype
9794            eval $setvar
9795            val=uint64_t
9796            set uquadtype
9797            eval $setvar
9798            quadkind=4
9799            ;;
9800          esac
9801          ;;
9802       esac
9803       ;;
9804    esac
9805    ;;
9806 esac
9807
9808 case "$quadtype" in
9809 '')     echo "Alas, no 64-bit integer types in sight." >&4
9810         d_quad="$undef"
9811         ;;
9812 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9813             verb="will"
9814         else
9815             verb="could"
9816         fi
9817         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9818         d_quad="$define"
9819         ;;
9820 esac
9821
9822 : check for length of character
9823 echo " "
9824 case "$charsize" in
9825 '')
9826         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9827         $cat >try.c <<'EOCP'
9828 #include <stdio.h>
9829 int main()
9830 {
9831     printf("%d\n", (int)sizeof(char));
9832     exit(0);
9833 }
9834 EOCP
9835         set try
9836         if eval $compile_ok; then
9837                 dflt=`./try`
9838         else
9839                 dflt='1'
9840                 echo "(I can't seem to compile the test program.  Guessing...)"
9841         fi
9842         ;;
9843 *)
9844         dflt="$charsize"
9845         ;;
9846 esac
9847 rp="What is the size of a character (in bytes)?"
9848 . ./myread
9849 charsize="$ans"
9850 $rm -f try.c try
9851
9852
9853 echo " "
9854 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9855
9856 case "$use64bitint:$d_quad:$quadtype" in
9857 define:define:?*)
9858         ivtype="$quadtype"
9859         uvtype="$uquadtype"
9860         ivsize=8
9861         uvsize=8
9862         ;;
9863 *)      ivtype="long"
9864         uvtype="unsigned long"
9865         ivsize=$longsize
9866         uvsize=$longsize
9867         ;;
9868 esac
9869
9870 case "$uselongdouble:$d_longdbl" in
9871 define:define)
9872         nvtype="long double"
9873         nvsize=$longdblsize
9874         ;;
9875 *)      nvtype=double
9876         nvsize=$doublesize
9877         ;;
9878 esac
9879
9880 $echo "(IV will be "$ivtype", $ivsize bytes)"
9881 $echo "(UV will be "$uvtype", $uvsize bytes)"
9882 $echo "(NV will be "$nvtype", $nvsize bytes)"
9883
9884 $cat >try.c <<EOCP
9885 #$i_inttypes I_INTTYPES
9886 #ifdef I_INTTYPES
9887 #include <inttypes.h>
9888 #endif
9889 #include <stdio.h>
9890 int main() {
9891 #ifdef INT8
9892    int8_t i =  INT8_MAX;
9893   uint8_t u = UINT8_MAX;
9894   printf("int8_t\n");
9895 #endif
9896 #ifdef INT16
9897    int16_t i =  INT16_MAX;
9898   uint16_t i = UINT16_MAX;
9899   printf("int16_t\n");
9900 #endif
9901 #ifdef INT32
9902    int32_t i =  INT32_MAX;
9903   uint32_t u = UINT32_MAX;
9904   printf("int32_t\n");
9905 #endif
9906 }
9907 EOCP
9908
9909 case "$i8type" in
9910 '')     case "$charsize" in
9911         1)      i8type=char
9912                 u8type="unsigned char"
9913                 i8size=$charsize
9914                 u8size=$charsize
9915                 ;;
9916         esac
9917         ;;
9918 esac
9919 case "$i8type" in
9920 '')     set try -DINT8
9921         if eval $compile; then
9922                 case "`./try$exe_ext`" in
9923                 int8_t) i8type=int8_t
9924                         u8type=uint8_t
9925                         i8size=1
9926                         u8size=1
9927                         ;;
9928                 esac
9929         fi
9930         ;;
9931 esac
9932 case "$i8type" in
9933 '')     if $test $charsize -ge 1; then
9934                 i8type=char
9935                 u8type="unsigned char"
9936                 i8size=$charsize
9937                 u8size=$charsize
9938         fi
9939         ;;
9940 esac
9941
9942 case "$i16type" in
9943 '')     case "$shortsize" in
9944         2)      i16type=short
9945                 u16type="unsigned short"
9946                 i16size=$shortsize
9947                 u16size=$shortsize
9948                 ;;
9949         esac
9950         ;;
9951 esac
9952 case "$i16type" in
9953 '')     set try -DINT16
9954         if eval $compile; then
9955                 case "`./try$exe_ext`" in
9956                 int16_t)
9957                         i16type=int16_t
9958                         u16type=uint16_t
9959                         i16size=2
9960                         u16size=2
9961                         ;;
9962                 esac
9963         fi
9964         ;;
9965 esac
9966 case "$i16type" in
9967 '')     if $test $shortsize -ge 2; then
9968                 i16type=short
9969                 u16type="unsigned short"
9970                 i16size=$shortsize
9971                 u16size=$shortsize
9972         fi
9973         ;;
9974 esac
9975
9976 case "$i32type" in
9977 '')     case "$longsize" in
9978         4)      i32type=long
9979                 u32type="unsigned long"
9980                 i32size=$longsize
9981                 u32size=$longsize
9982                 ;;
9983         *)      case "$intsize" in
9984                 4)      i32type=int
9985                         u32type="unsigned int"
9986                         i32size=$intsize
9987                         u32size=$intsize
9988                         ;;
9989                 esac
9990                 ;;
9991         esac
9992         ;;
9993 esac
9994 case "$i32type" in
9995 '')     set try -DINT32
9996         if eval $compile; then
9997                 case "`./try$exe_ext`" in
9998                 int32_t)
9999                         i32type=int32_t
10000                         u32type=uint32_t
10001                         i32size=4
10002                         u32size=4
10003                         ;;
10004                 esac
10005         fi
10006         ;;
10007 esac
10008 case "$i32type" in
10009 '')     if $test $intsize -ge 4; then
10010                 i32type=int
10011                 u32type="unsigned int"
10012                 i32size=$intsize
10013                 u32size=$intsize
10014         fi
10015         ;;
10016 esac
10017
10018 case "$i64type" in
10019 '')     case "$d_quad:$quadtype" in
10020         define:?*)
10021                 i64type="$quadtype"
10022                 u64type="$uquadtype"
10023                 i64size=8
10024                 u64size=8
10025                 ;;
10026         esac
10027         ;;
10028 esac
10029
10030 $echo "Checking whether your NVs can preserve your UVs..." >&4
10031 $cat <<EOP >try.c
10032 #include <stdio.h>
10033 int main() {
10034     $uvtype k = ($uvtype)~0, l;
10035     $nvtype d;
10036     l = k;
10037     d = ($nvtype)l;
10038     l = ($uvtype)d;
10039     if (l == k)
10040        printf("preserve\n");
10041     exit(0);
10042 }
10043 EOP
10044 set try
10045 if eval $compile; then
10046         case "`./try$exe_ext`" in
10047         preserve) d_nv_preserves_uv="$define" ;;
10048         esac
10049 fi      
10050 case "$d_nv_preserves_uv" in
10051 $define) $echo "Yes, they can."  2>&1 ;;
10052 *)       $echo "No, they can't." 2>&1
10053          d_nv_preserves_uv="$undef"
10054          ;;
10055 esac
10056
10057 $rm -f try.* try
10058
10059
10060 : check for off64_t
10061 echo " "
10062 echo "Checking to see if you have off64_t..." >&4
10063 $cat >try.c <<EOCP
10064 #include <sys/types.h>
10065 #include <unistd.h>
10066 int main() { off64_t x = 7; }
10067 EOCP
10068 set try
10069 if eval $compile; then
10070         val="$define"
10071         echo "You have off64_t."
10072 else
10073         val="$undef"
10074         echo "You do not have off64_t."
10075         case "$lseeksize" in
10076         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10077         esac
10078 fi
10079 $rm -f try.* try
10080 set d_off64_t
10081 eval $setvar
10082
10083 : see if POSIX threads are available
10084 set pthread.h i_pthread
10085 eval $inhdr
10086
10087
10088
10089
10090 : how to create joinable pthreads
10091 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10092         echo " "
10093         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10094         $cat >try.c <<'EOCP'
10095 #include <pthread.h>
10096 int main() {
10097     int detachstate = JOINABLE;
10098 }
10099 EOCP
10100         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10101         if eval $compile; then
10102                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10103                 val="$undef" # Yes, undef.
10104                 set d_old_pthread_create_joinable
10105                 eval $setvar
10106                 val=""
10107                 set old_pthread_create_joinable
10108                 eval $setvar
10109         else
10110                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10111                 if eval $compile; then
10112                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10113                         val="$define"
10114                         set d_old_pthread_create_joinable
10115                         eval $setvar
10116                         val=PTHREAD_CREATE_UNDETACHED
10117                         set old_pthread_create_joinable
10118                         eval $setvar
10119                 else            
10120                         set try -DJOINABLE=__UNDETACHED
10121                         if eval $compile; then
10122                                 echo "You seem to use __UNDETACHED." >&4
10123                                 val="$define"
10124                                 set d_old_pthread_create_joinable
10125                                 eval $setvar
10126                                 val=__UNDETACHED
10127                                 set old_pthread_create_joinable
10128                                 eval $setvar
10129                         else
10130                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10131                                 val="$define"
10132                                 set d_old_pthread_create_joinable
10133                                 eval $setvar
10134                                 val=0
10135                                 set old_pthread_create_joinable
10136                                 eval $setvar
10137                         fi
10138                 fi
10139         fi
10140         $rm -f try try.*
10141 else
10142     d_old_pthread_create_joinable="$undef"
10143     old_pthread_create_joinable=""
10144 fi
10145
10146 : see if pause exists
10147 set pause d_pause
10148 eval $inlibc
10149
10150 : see if pipe exists
10151 set pipe d_pipe
10152 eval $inlibc
10153
10154 : see if poll exists
10155 set poll d_poll
10156 eval $inlibc
10157
10158
10159 : see whether the various POSIXish _yields exist
10160 $cat >try.c <<EOP
10161 #include <pthread.h>
10162 #include <stdio.h>
10163 int main() {
10164 #ifdef SCHED_YIELD
10165         sched_yield();
10166 #else
10167 #ifdef PTHREAD_YIELD
10168         pthread_yield();
10169 #else
10170 #ifdef PTHREAD_YIELD_NULL
10171         pthread_yield(NULL);
10172 #endif
10173 #endif
10174 #endif
10175 }
10176 EOP
10177 : see if sched_yield exists
10178 set try -DSCHED_YIELD
10179 if eval $compile; then
10180     val="$define"
10181     sched_yield='sched_yield()'
10182 else
10183     val="$undef"
10184 fi
10185 case "$usethreads" in
10186 $define)
10187         case "$val" in
10188         $define) echo 'sched_yield() found.' >&4        ;;
10189         *)       echo 'sched_yield() NOT found.' >&4    ;;
10190         esac
10191 esac
10192 set d_sched_yield
10193 eval $setvar
10194
10195 : see if pthread_yield exists
10196 set try -DPTHREAD_YIELD
10197 if eval $compile; then
10198     val="$define"
10199     case "$sched_yield" in
10200     '') sched_yield='pthread_yield()' ;;
10201     esac
10202 else
10203     set try -DPTHREAD_YIELD_NULL
10204     if eval $compile; then
10205         val="$define"
10206         case "$sched_yield" in
10207         '') sched_yield='pthread_yield(NULL)' ;;
10208         esac
10209     else
10210         val="$undef"
10211     fi
10212 fi
10213 case "$usethreads" in
10214 $define)
10215         case "$val" in
10216         $define) echo 'pthread_yield() found.' >&4      ;;
10217         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10218         esac
10219         ;;
10220 esac
10221 set d_pthread_yield
10222 eval $setvar
10223
10224 case "$sched_yield" in
10225 '') sched_yield=undef ;;
10226 esac
10227
10228 $rm -f try try.*
10229
10230 : see if this is a pwd.h system
10231 set pwd.h i_pwd
10232 eval $inhdr
10233
10234 case "$i_pwd" in
10235 $define)
10236         xxx=`./findhdr pwd.h`
10237         $cppstdin $cppflags $cppminus < $xxx >$$.h
10238
10239         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10240                 val="$define"
10241         else
10242                 val="$undef"
10243         fi
10244         set d_pwquota
10245         eval $setvar
10246
10247         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10248                 val="$define"
10249         else
10250                 val="$undef"
10251         fi
10252         set d_pwage
10253         eval $setvar
10254
10255         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10256                 val="$define"
10257         else
10258                 val="$undef"
10259         fi
10260         set d_pwchange
10261         eval $setvar
10262
10263         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10264                 val="$define"
10265         else
10266                 val="$undef"
10267         fi
10268         set d_pwclass
10269         eval $setvar
10270
10271         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10272                 val="$define"
10273         else
10274                 val="$undef"
10275         fi
10276         set d_pwexpire
10277         eval $setvar
10278
10279         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10280                 val="$define"
10281         else
10282                 val="$undef"
10283         fi
10284         set d_pwcomment
10285         eval $setvar
10286
10287         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10288                 val="$define"
10289         else
10290                 val="$undef"
10291         fi
10292         set d_pwgecos
10293         eval $setvar
10294
10295         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10296                 val="$define"
10297         else
10298                 val="$undef"
10299         fi
10300         set d_pwpasswd
10301         eval $setvar
10302
10303         $rm -f $$.h
10304         ;;
10305 *)
10306         val="$undef"; 
10307         set d_pwquota; eval $setvar
10308         set d_pwage; eval $setvar
10309         set d_pwchange; eval $setvar
10310         set d_pwclass; eval $setvar
10311         set d_pwexpire; eval $setvar
10312         set d_pwcomment; eval $setvar
10313         set d_pwgecos; eval $setvar
10314         set d_pwpasswd; eval $setvar
10315         ;;
10316 esac
10317
10318 : see if readdir and friends exist
10319 set readdir d_readdir
10320 eval $inlibc
10321 set seekdir d_seekdir
10322 eval $inlibc
10323 set telldir d_telldir
10324 eval $inlibc
10325 set rewinddir d_rewinddir
10326 eval $inlibc
10327
10328 : see if readlink exists
10329 set readlink d_readlink
10330 eval $inlibc
10331
10332 : see if rename exists
10333 set rename d_rename
10334 eval $inlibc
10335
10336 : see if rmdir exists
10337 set rmdir d_rmdir
10338 eval $inlibc
10339
10340 : see if memory.h is available.
10341 val=''
10342 set memory.h val
10343 eval $inhdr
10344
10345 : See if it conflicts with string.h
10346 case "$val" in
10347 $define)
10348         case "$strings" in
10349         '') ;;
10350         *)
10351                 $cppstdin $cppflags $cppminus < $strings > mem.h
10352                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10353                         echo " "
10354                         echo "We won't be including <memory.h>."
10355                         val="$undef"
10356                 fi
10357                 $rm -f mem.h
10358                 ;;
10359         esac
10360 esac
10361 set i_memory
10362 eval $setvar
10363
10364 : can bcopy handle overlapping blocks?
10365 val="$undef"
10366 case "$d_bcopy" in
10367 "$define")
10368         echo " "
10369         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10370         $cat >try.c <<EOCP
10371 #$i_memory I_MEMORY
10372 #$i_stdlib I_STDLIB
10373 #$i_string I_STRING
10374 #$i_unistd I_UNISTD
10375 EOCP
10376         $cat >>try.c <<'EOCP'
10377 #include <stdio.h>
10378 #ifdef I_MEMORY
10379 #  include <memory.h>
10380 #endif
10381 #ifdef I_STDLIB
10382 #  include <stdlib.h>
10383 #endif
10384 #ifdef I_STRING
10385 #  include <string.h>
10386 #else
10387 #  include <strings.h>
10388 #endif
10389 #ifdef I_UNISTD
10390 #  include <unistd.h>  /* Needed for NetBSD */
10391 #endif
10392 int main()
10393 {
10394 char buf[128], abc[128];
10395 char *b;
10396 int len;
10397 int off;
10398 int align;
10399
10400 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10401
10402 for (align = 7; align >= 0; align--) {
10403         for (len = 36; len; len--) {
10404                 b = buf+align;
10405                 bcopy(abc, b, len);
10406                 for (off = 1; off <= len; off++) {
10407                         bcopy(b, b+off, len);
10408                         bcopy(b+off, b, len);
10409                         if (bcmp(b, abc, len))
10410                                 exit(1);
10411                 }
10412         }
10413 }
10414 exit(0);
10415 }
10416 EOCP
10417         set try
10418         if eval $compile_ok; then
10419                 if ./try 2>/dev/null; then
10420                         echo "Yes, it can."
10421                         val="$define"
10422                 else
10423                         echo "It can't, sorry."
10424                         case "$d_memmove" in
10425                         "$define") echo "But that's Ok since you have memmove()." ;;
10426                         esac
10427                 fi
10428         else
10429                 echo "(I can't compile the test program, so we'll assume not...)"
10430                 case "$d_memmove" in
10431                 "$define") echo "But that's Ok since you have memmove()." ;;
10432                 esac
10433         fi
10434         ;;
10435 esac
10436 $rm -f try.* try core
10437 set d_safebcpy
10438 eval $setvar
10439
10440 : can memcpy handle overlapping blocks?
10441 val="$undef"
10442 case "$d_memcpy" in
10443 "$define")
10444         echo " "
10445         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10446         $cat >try.c <<EOCP
10447 #$i_memory I_MEMORY
10448 #$i_stdlib I_STDLIB
10449 #$i_string I_STRING
10450 #$i_unistd I_UNISTD
10451 EOCP
10452         $cat >>try.c <<'EOCP'
10453 #include <stdio.h>
10454 #ifdef I_MEMORY
10455 #  include <memory.h>
10456 #endif
10457 #ifdef I_STDLIB
10458 #  include <stdlib.h>
10459 #endif
10460 #ifdef I_STRING
10461 #  include <string.h>
10462 #else
10463 #  include <strings.h>
10464 #endif
10465 #ifdef I_UNISTD
10466 #  include <unistd.h>  /* Needed for NetBSD */
10467 #endif
10468 int main()
10469 {
10470 char buf[128], abc[128];
10471 char *b;
10472 int len;
10473 int off;
10474 int align;
10475
10476 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10477    try to store the string in read-only memory. */
10478 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10479
10480 for (align = 7; align >= 0; align--) {
10481         for (len = 36; len; len--) {
10482                 b = buf+align;
10483                 memcpy(b, abc, len);
10484                 for (off = 1; off <= len; off++) {
10485                         memcpy(b+off, b, len);
10486                         memcpy(b, b+off, len);
10487                         if (memcmp(b, abc, len))
10488                                 exit(1);
10489                 }
10490         }
10491 }
10492 exit(0);
10493 }
10494 EOCP
10495         set try
10496         if eval $compile_ok; then
10497                 if ./try 2>/dev/null; then
10498                         echo "Yes, it can."
10499                         val="$define"
10500                 else
10501                         echo "It can't, sorry."
10502                         case "$d_memmove" in
10503                         "$define") echo "But that's Ok since you have memmove()." ;;
10504                         esac
10505                 fi
10506         else
10507                 echo "(I can't compile the test program, so we'll assume not...)"
10508                 case "$d_memmove" in
10509                 "$define") echo "But that's Ok since you have memmove()." ;;
10510                 esac
10511         fi
10512         ;;
10513 esac
10514 $rm -f try.* try core
10515 set d_safemcpy
10516 eval $setvar
10517
10518 : can memcmp be trusted to compare relative magnitude?
10519 val="$undef"
10520 case "$d_memcmp" in
10521 "$define")
10522         echo " "
10523         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10524         $cat >try.c <<EOCP
10525 #$i_memory I_MEMORY
10526 #$i_stdlib I_STDLIB
10527 #$i_string I_STRING
10528 #$i_unistd I_UNISTD
10529 EOCP
10530         $cat >>try.c <<'EOCP'
10531 #include <stdio.h>
10532 #ifdef I_MEMORY
10533 #  include <memory.h>
10534 #endif
10535 #ifdef I_STDLIB
10536 #  include <stdlib.h>
10537 #endif
10538 #ifdef I_STRING
10539 #  include <string.h>
10540 #else
10541 #  include <strings.h>
10542 #endif
10543 #ifdef I_UNISTD
10544 #  include <unistd.h>  /* Needed for NetBSD */
10545 #endif
10546 int main()
10547 {
10548 char a = -1;
10549 char b = 0;
10550 if ((a < b) && memcmp(&a, &b, 1) < 0)
10551         exit(1);
10552 exit(0);
10553 }
10554 EOCP
10555         set try
10556         if eval $compile_ok; then
10557                 if ./try 2>/dev/null; then
10558                         echo "Yes, it can."
10559                         val="$define"
10560                 else
10561                         echo "No, it can't (it uses signed chars)."
10562                 fi
10563         else
10564                 echo "(I can't compile the test program, so we'll assume not...)"
10565         fi
10566         ;;
10567 esac
10568 $rm -f try.* try core
10569 set d_sanemcmp
10570 eval $setvar
10571
10572 : see if select exists
10573 set select d_select
10574 eval $inlibc
10575
10576 : see if semctl exists
10577 set semctl d_semctl
10578 eval $inlibc
10579
10580 : see if semget exists
10581 set semget d_semget
10582 eval $inlibc
10583
10584 : see if semop exists
10585 set semop d_semop
10586 eval $inlibc
10587
10588 : see how much of the 'sem*(2)' library is present.
10589 h_sem=true
10590 echo " "
10591 case "$d_semctl$d_semget$d_semop" in
10592 *"$undef"*) h_sem=false;;
10593 esac
10594 case "$osname" in
10595 freebsd)
10596     case "`ipcs 2>&1`" in
10597     "SVID messages"*"not configured"*)
10598         echo "Your $osname does not have the sem*(2) configured." >&4
10599         h_sem=false
10600         val="$undef"
10601         set semctl d_semctl
10602         eval $setvar
10603         set semget d_semget
10604         eval $setvar
10605         set semop d_semop
10606         eval $setvar
10607         ;;
10608     esac
10609     ;;
10610 esac
10611 : we could also check for sys/ipc.h ...
10612 if $h_sem && $test `./findhdr sys/sem.h`; then
10613         echo "You have the full sem*(2) library." >&4
10614         val="$define"
10615 else
10616         echo "You don't have the full sem*(2) library." >&4
10617         val="$undef"
10618 fi
10619 set d_sem
10620 eval $setvar
10621
10622 : see whether sys/sem.h defines union semun
10623 echo " "
10624 $cat > try.c <<'END'
10625 #include <sys/types.h>
10626 #include <sys/ipc.h>
10627 #include <sys/sem.h>
10628 int main () { union semun semun; semun.buf = 0; }
10629 END
10630 set try
10631 if eval $compile; then
10632     echo "You have union semun in <sys/sem.h>." >&4
10633     val="$define"
10634 else
10635     echo "You do not have union semun in <sys/sem.h>." >&4
10636     val="$undef"
10637 fi
10638 $rm -f try try.c try.h
10639 set d_union_semun
10640 eval $setvar
10641
10642 : see how to do semctl IPC_STAT
10643 case "$d_sem" in
10644 $define)
10645     : see whether semctl IPC_STAT can use union semun
10646     echo " "
10647     $cat > try.h <<END
10648 #ifndef S_IRUSR
10649 #   ifdef S_IREAD
10650 #       define S_IRUSR S_IREAD
10651 #       define S_IWUSR S_IWRITE
10652 #       define S_IXUSR S_IEXEC
10653 #   else
10654 #       define S_IRUSR 0400
10655 #       define S_IWUSR 0200
10656 #       define S_IXUSR 0100
10657 #   endif
10658 #   define S_IRGRP (S_IRUSR>>3)
10659 #   define S_IWGRP (S_IWUSR>>3)
10660 #   define S_IXGRP (S_IXUSR>>3)
10661 #   define S_IROTH (S_IRUSR>>6)
10662 #   define S_IWOTH (S_IWUSR>>6)
10663 #   define S_IXOTH (S_IXUSR>>6)
10664 #endif
10665 #ifndef S_IRWXU
10666 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10667 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10668 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10669 #endif
10670 END
10671
10672     $cat > try.c <<END
10673 #include <sys/types.h>
10674 #include <sys/ipc.h>
10675 #include <sys/sem.h>
10676 #include <sys/stat.h>
10677 #include <stdio.h>
10678 #include <errno.h>
10679 #include "try.h"
10680 #ifndef errno
10681 extern int errno;
10682 #endif
10683 #$d_union_semun HAS_UNION_SEMUN
10684 int main() {
10685     union semun
10686 #ifndef HAS_UNION_SEMUN
10687     {
10688         int val;
10689         struct semid_ds *buf;
10690         unsigned short *array;
10691     }
10692 #endif
10693     arg;
10694     int sem, st;
10695
10696 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10697     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10698     if (sem > -1) {
10699         struct semid_ds argbuf;
10700         arg.buf = &argbuf;
10701 #       ifdef IPC_STAT
10702         st = semctl(sem, 0, IPC_STAT, arg);
10703         if (st == 0)
10704             printf("semun\n");
10705         else
10706 #       endif /* IPC_STAT */
10707             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10708 #       ifdef IPC_RMID
10709         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10710 #       endif /* IPC_RMID */
10711             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10712     } else
10713 #endif /* IPC_PRIVATE && ... */
10714         printf("semget failed: errno = %d\n", errno);
10715   return 0;
10716 }
10717 END
10718     val="$undef"
10719     set try
10720     if eval $compile; then
10721         xxx=`./try`
10722         case "$xxx" in
10723         semun) val="$define" ;;
10724         esac
10725     fi
10726     $rm -f try try.c
10727     set d_semctl_semun
10728     eval $setvar
10729     case "$d_semctl_semun" in
10730     $define)
10731         echo "You can use union semun for semctl IPC_STAT." >&4
10732         also='also'
10733         ;;
10734     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10735         also=''
10736         ;;
10737     esac
10738
10739     : see whether semctl IPC_STAT can use struct semid_ds pointer
10740     $cat > try.c <<'END'
10741 #include <sys/types.h>
10742 #include <sys/ipc.h>
10743 #include <sys/sem.h>
10744 #include <sys/stat.h>
10745 #include "try.h"
10746 #include <stdio.h>
10747 #include <errno.h>
10748 #ifndef errno
10749 extern int errno;
10750 #endif
10751 int main() {
10752     struct semid_ds arg;
10753     int sem, st;
10754
10755 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10756     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10757     if (sem > -1) {
10758 #       ifdef IPC_STAT
10759         st = semctl(sem, 0, IPC_STAT, &arg);
10760         if (st == 0)
10761             printf("semid_ds\n");
10762         else
10763 #       endif /* IPC_STAT */
10764             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10765 #       ifdef IPC_RMID
10766         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10767 #       endif /* IPC_RMID */
10768             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10769     } else
10770 #endif /* IPC_PRIVATE && ... */
10771         printf("semget failed: errno = %d\n", errno);
10772
10773     return 0;
10774 }
10775 END
10776     val="$undef"
10777     set try
10778     if eval $compile; then
10779         xxx=`./try`
10780         case "$xxx" in
10781         semid_ds) val="$define" ;;
10782         esac
10783     fi
10784     $rm -f try try.c
10785     set d_semctl_semid_ds
10786     eval $setvar
10787     case "$d_semctl_semid_ds" in
10788     $define)
10789         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10790         ;;
10791     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10792         ;;
10793     esac
10794     $rm -f try.h
10795     ;;
10796 *)  val="$undef"
10797
10798     # We do not have the full sem*(2) library, so assume we can not
10799     # use either.
10800
10801     set d_semctl_semun
10802     eval $setvar
10803
10804     set d_semctl_semid_ds
10805     eval $setvar
10806     ;;
10807 esac
10808
10809 : see if setegid exists
10810 set setegid d_setegid
10811 eval $inlibc
10812
10813 : see if seteuid exists
10814 set seteuid d_seteuid
10815 eval $inlibc
10816
10817 : see if setgrent exists
10818 set setgrent d_setgrent
10819 eval $inlibc
10820
10821 : see if sethostent exists
10822 set sethostent d_sethent
10823 eval $inlibc
10824
10825 : see if setlinebuf exists
10826 set setlinebuf d_setlinebuf
10827 eval $inlibc
10828
10829 : see if setlocale exists
10830 set setlocale d_setlocale
10831 eval $inlibc
10832
10833 : see if setnetent exists
10834 set setnetent d_setnent
10835 eval $inlibc
10836
10837 : see if setprotoent exists
10838 set setprotoent d_setpent
10839 eval $inlibc
10840
10841 : see if setpgid exists
10842 set setpgid d_setpgid
10843 eval $inlibc
10844
10845 : see if setpgrp2 exists
10846 set setpgrp2 d_setpgrp2
10847 eval $inlibc
10848
10849 : see if setpriority exists
10850 set setpriority d_setprior
10851 eval $inlibc
10852
10853 : see if setpwent exists
10854 set setpwent d_setpwent
10855 eval $inlibc
10856
10857 : see if setregid exists
10858 set setregid d_setregid
10859 eval $inlibc
10860 set setresgid d_setresgid
10861 eval $inlibc
10862
10863 : see if setreuid exists
10864 set setreuid d_setreuid
10865 eval $inlibc
10866 set setresuid d_setresuid
10867 eval $inlibc
10868
10869 : see if setrgid exists
10870 set setrgid d_setrgid
10871 eval $inlibc
10872
10873 : see if setruid exists
10874 set setruid d_setruid
10875 eval $inlibc
10876
10877 : see if setservent exists
10878 set setservent d_setsent
10879 eval $inlibc
10880
10881 : see if setsid exists
10882 set setsid d_setsid
10883 eval $inlibc
10884
10885 : see if setspent exists
10886 set setspent d_setspent
10887 eval $inlibc
10888
10889 : see if setvbuf exists
10890 set setvbuf d_setvbuf
10891 eval $inlibc
10892
10893 : see if sfio.h is available
10894 set sfio.h i_sfio
10895 eval $inhdr
10896
10897
10898 : see if sfio library is available
10899 case "$i_sfio" in
10900 $define)
10901         val=''
10902         set sfreserve val
10903         eval $inlibc
10904         ;;
10905 *)
10906         val="$undef"
10907         ;;
10908 esac
10909 : Ok, but do we want to use it.
10910 case "$val" in
10911 $define)
10912         case "$usesfio" in
10913         true|$define|[yY]*) dflt='y';;
10914         *) dflt='n';;
10915         esac
10916         echo "$package can use the sfio library, but it is experimental."
10917         rp="You seem to have sfio available, do you want to try using it?"
10918         . ./myread
10919         case "$ans" in
10920         y|Y) ;;
10921         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10922                 val="$undef"
10923                 : Remove sfio from list of libraries to use
10924                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10925                 shift
10926                 libs="$*"
10927                 echo "libs = $libs" >&4
10928                 ;;
10929         esac
10930         ;;
10931 *)      case "$usesfio" in
10932         true|$define|[yY]*)
10933                 echo "Sorry, cannot find sfio on this machine" >&4
10934                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10935                 ;;
10936         esac
10937         ;;
10938 esac
10939 set d_sfio
10940 eval $setvar
10941 case "$d_sfio" in
10942 $define) usesfio='true';;
10943 *) usesfio='false';;
10944 esac
10945
10946 : see if shmctl exists
10947 set shmctl d_shmctl
10948 eval $inlibc
10949
10950 : see if shmget exists
10951 set shmget d_shmget
10952 eval $inlibc
10953
10954 : see if shmat exists
10955 set shmat d_shmat
10956 eval $inlibc
10957 : see what shmat returns
10958 case "$d_shmat" in
10959 "$define")
10960         $cat >shmat.c <<'END'
10961 #include <sys/shm.h>
10962 void *shmat();
10963 END
10964         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10965                 shmattype='void *'
10966         else
10967                 shmattype='char *'
10968         fi
10969         echo "and it returns ($shmattype)." >&4
10970         : see if a prototype for shmat is available
10971         xxx=`./findhdr sys/shm.h`
10972         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10973         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10974                 val="$define"
10975         else
10976                 val="$undef"
10977         fi
10978         $rm -f shmat.[co]
10979         ;;
10980 *)
10981         val="$undef"
10982         ;;
10983 esac
10984 set d_shmatprototype
10985 eval $setvar
10986
10987 : see if shmdt exists
10988 set shmdt d_shmdt
10989 eval $inlibc
10990
10991 : see how much of the 'shm*(2)' library is present.
10992 h_shm=true
10993 echo " "
10994 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10995 *"$undef"*) h_shm=false;;
10996 esac
10997 case "$osname" in
10998 freebsd)
10999     case "`ipcs 2>&1`" in
11000     "SVID shared memory"*"not configured"*)
11001         echo "Your $osname does not have the shm*(2) configured." >&4
11002         h_shm=false
11003         val="$undef"
11004         set shmctl d_shmctl
11005         evat $setvar
11006         set shmget d_shmget
11007         evat $setvar
11008         set shmat d_shmat
11009         evat $setvar
11010         set shmdt d_shmdt
11011         evat $setvar
11012         ;;
11013     esac
11014     ;;
11015 esac
11016 : we could also check for sys/ipc.h ...
11017 if $h_shm && $test `./findhdr sys/shm.h`; then
11018         echo "You have the full shm*(2) library." >&4
11019         val="$define"
11020 else
11021         echo "You don't have the full shm*(2) library." >&4
11022         val="$undef"
11023 fi
11024 set d_shm
11025 eval $setvar
11026
11027 echo " "
11028 : see if we have sigaction
11029 if set sigaction val -f d_sigaction; eval $csym; $val; then
11030         echo 'sigaction() found.' >&4
11031         $cat > try.c <<'EOP'
11032 #include <stdio.h>
11033 #include <sys/types.h>
11034 #include <signal.h>
11035 int main()
11036 {
11037     struct sigaction act, oact;
11038     act.sa_flags = 0;
11039     oact.sa_handler = 0;
11040     /* so that act and oact are used */
11041     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11042 }
11043 EOP
11044         set try
11045         if eval $compile_ok; then
11046                 val="$define"
11047         else
11048                 echo "But you don't seem to have a useable struct sigaction." >&4
11049                 val="$undef"
11050         fi
11051 else
11052         echo 'sigaction NOT found.' >&4
11053         val="$undef"
11054 fi
11055 set d_sigaction; eval $setvar
11056 $rm -f try try$_o try.c
11057
11058 : see if sigsetjmp exists
11059 echo " "
11060 case "$d_sigsetjmp" in
11061 '')
11062         $cat >try.c <<'EOP'
11063 #include <setjmp.h>
11064 sigjmp_buf env;
11065 int set = 1;
11066 int main()
11067 {
11068         if (sigsetjmp(env,1))
11069                 exit(set);
11070         set = 0;
11071         siglongjmp(env, 1);
11072         exit(1);
11073 }
11074 EOP
11075         set try
11076         if eval $compile; then
11077                 if ./try >/dev/null 2>&1; then
11078                         echo "POSIX sigsetjmp found." >&4
11079                         val="$define"
11080                 else
11081                         $cat >&4 <<EOM
11082 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11083 I'll ignore them.
11084 EOM
11085                         val="$undef"
11086                 fi
11087         else
11088                 echo "sigsetjmp not found." >&4
11089                 val="$undef"
11090         fi
11091         ;;
11092 *) val="$d_sigsetjmp"
11093         case "$d_sigsetjmp" in
11094         $define) echo "POSIX sigsetjmp found." >&4;;
11095         $undef) echo "sigsetjmp not found." >&4;;
11096         esac
11097         ;;
11098 esac
11099 set d_sigsetjmp
11100 eval $setvar
11101 $rm -f try.c try
11102
11103 : see if sys/stat.h is available
11104 set sys/stat.h i_sysstat
11105 eval $inhdr
11106
11107
11108 : see if stat knows about block sizes
11109 echo " "
11110 echo "Checking to see if your struct stat has st_blocks field..." >&4
11111 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11112 eval $hasfield
11113
11114
11115 : see if this is a sys/vfs.h system
11116 set sys/vfs.h i_sysvfs
11117 eval $inhdr
11118
11119
11120 : see if this is a sys/statfs.h system
11121 set sys/statfs.h i_sysstatfs
11122 eval $inhdr
11123
11124
11125 echo " "
11126 echo "Checking to see if your system supports struct statfs..." >&4
11127 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
11128 eval $hasstruct
11129 case "$d_statfs_s" in
11130 "$define")      echo "Yes, it does."   ;;
11131 *)              echo "No, it doesn't." ;;
11132 esac
11133
11134
11135
11136 : see if struct statfs knows about f_flags
11137 case "$d_statfs_s" in
11138 define) 
11139         echo " "
11140         echo "Checking to see if your struct statfs has f_flags field..." >&4
11141         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
11142         eval $hasfield
11143         ;;
11144 *)      val="$undef"
11145         set d_statfs_f_flags
11146         eval $setvar
11147         ;;
11148 esac
11149 case "$d_statfs_f_flags" in
11150 "$define")      echo "Yes, it does."   ;;
11151 *)              echo "No, it doesn't." ;;
11152 esac
11153
11154 : see if _ptr and _cnt from stdio act std
11155 echo " "
11156 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11157         echo "(Looks like you have stdio.h from Linux.)"
11158         case "$stdio_ptr" in
11159         '') stdio_ptr='((fp)->_IO_read_ptr)'
11160                 ptr_lval=$define
11161                 ;;
11162         *)      ptr_lval=$d_stdio_ptr_lval;;
11163         esac
11164         case "$stdio_cnt" in
11165         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11166                 cnt_lval=$undef
11167                 ;;
11168         *)      cnt_lval=$d_stdio_cnt_lval;;
11169         esac
11170         case "$stdio_base" in
11171         '') stdio_base='((fp)->_IO_read_base)';;
11172         esac
11173         case "$stdio_bufsiz" in
11174         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11175         esac
11176 else
11177         case "$stdio_ptr" in
11178         '') stdio_ptr='((fp)->_ptr)'
11179                 ptr_lval=$define
11180                 ;;
11181         *)      ptr_lval=$d_stdio_ptr_lval;;
11182         esac
11183         case "$stdio_cnt" in
11184         '') stdio_cnt='((fp)->_cnt)'
11185                 cnt_lval=$define
11186                 ;;
11187         *)      cnt_lval=$d_stdio_cnt_lval;;
11188         esac
11189         case "$stdio_base" in
11190         '') stdio_base='((fp)->_base)';;
11191         esac
11192         case "$stdio_bufsiz" in
11193         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11194         esac
11195 fi
11196 : test whether _ptr and _cnt really work
11197 echo "Checking how std your stdio is..." >&4
11198 $cat >try.c <<EOP
11199 #include <stdio.h>
11200 #define FILE_ptr(fp)    $stdio_ptr
11201 #define FILE_cnt(fp)    $stdio_cnt
11202 int main() {
11203         FILE *fp = fopen("try.c", "r");
11204         char c = getc(fp);
11205         if (
11206                 18 <= FILE_cnt(fp) &&
11207                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11208         )
11209                 exit(0);
11210         exit(1);
11211 }
11212 EOP
11213 val="$undef"
11214 set try
11215 if eval $compile; then
11216         if ./try; then
11217                 echo "Your stdio acts pretty std."
11218                 val="$define"
11219         else
11220                 echo "Your stdio isn't very std."
11221         fi
11222 else
11223         echo "Your stdio doesn't appear very std."
11224 fi
11225 $rm -f try.c try
11226 set d_stdstdio
11227 eval $setvar
11228
11229 : Can _ptr be used as an lvalue?
11230 case "$d_stdstdio$ptr_lval" in
11231 $define$define) val=$define ;;
11232 *) val=$undef ;;
11233 esac
11234 set d_stdio_ptr_lval
11235 eval $setvar
11236
11237 : Can _cnt be used as an lvalue?
11238 case "$d_stdstdio$cnt_lval" in
11239 $define$define) val=$define ;;
11240 *) val=$undef ;;
11241 esac
11242 set d_stdio_cnt_lval
11243 eval $setvar
11244
11245 : see if _base is also standard
11246 val="$undef"
11247 case "$d_stdstdio" in
11248 $define)
11249         $cat >try.c <<EOP
11250 #include <stdio.h>
11251 #define FILE_base(fp)   $stdio_base
11252 #define FILE_bufsiz(fp) $stdio_bufsiz
11253 int main() {
11254         FILE *fp = fopen("try.c", "r");
11255         char c = getc(fp);
11256         if (
11257                 19 <= FILE_bufsiz(fp) &&
11258                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11259         )
11260                 exit(0);
11261         exit(1);
11262 }
11263 EOP
11264         set try
11265         if eval $compile; then
11266                 if ./try; then
11267                         echo "And its _base field acts std."
11268                         val="$define"
11269                 else
11270                         echo "But its _base field isn't std."
11271                 fi
11272         else
11273                 echo "However, it seems to be lacking the _base field."
11274         fi
11275         $rm -f try.c try
11276         ;;
11277 esac
11278 set d_stdiobase
11279 eval $setvar
11280
11281 $cat >&4 <<EOM
11282 Checking how to access stdio streams by file descriptor number...
11283 EOM
11284 case "$stdio_stream_array" in
11285 '')     $cat >try.c <<EOCP
11286 #include <stdio.h>
11287 int main() {
11288   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11289     printf("yes\n");
11290 }
11291 EOCP
11292         for s in _iob __iob __sF
11293         do
11294                 set try -DSTDIO_STREAM_ARRAY=$s
11295                 if eval $compile; then
11296                         case "`./try$exe_ext`" in
11297                         yes)    stdio_stream_array=$s; break ;;
11298                         esac
11299                 fi
11300         done
11301         $rm -f try.* try$exe_ext
11302 esac
11303 case "$stdio_stream_array" in
11304 '')     $cat >&4 <<EOM
11305 I can't figure out how to access stdio streams by file descriptor number.
11306 EOM
11307         d_stdio_stream_array="$undef"
11308         ;;
11309 *)      $cat >&4 <<EOM
11310 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11311 EOM
11312         d_stdio_stream_array="$define"
11313         ;;
11314 esac
11315
11316 : see if strcoll exists
11317 set strcoll d_strcoll
11318 eval $inlibc
11319
11320 : check for structure copying
11321 echo " "
11322 echo "Checking to see if your C compiler can copy structs..." >&4
11323 $cat >try.c <<'EOCP'
11324 int main()
11325 {
11326         struct blurfl {
11327                 int dyick;
11328         } foo, bar;
11329
11330         foo = bar;
11331 }
11332 EOCP
11333 if $cc -c try.c >/dev/null 2>&1 ; then
11334         val="$define"
11335         echo "Yup, it can."
11336 else
11337         val="$undef"
11338         echo "Nope, it can't."
11339 fi
11340 set d_strctcpy
11341 eval $setvar
11342 $rm -f try.*
11343
11344 : see if strerror and/or sys_errlist[] exist
11345 echo " "
11346 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11347     if set strerror val -f d_strerror; eval $csym; $val; then
11348                 echo 'strerror() found.' >&4
11349                 d_strerror="$define"
11350                 d_strerrm='strerror(e)'
11351                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11352                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11353                         d_syserrlst="$define"
11354                 else
11355                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11356                         d_syserrlst="$undef"
11357                 fi
11358     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11359                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11360                 echo 'strerror() found in string header.' >&4
11361                 d_strerror="$define"
11362                 d_strerrm='strerror(e)'
11363                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11364                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11365                                 d_syserrlst="$define"
11366                 else
11367                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11368                         d_syserrlst="$undef"
11369                 fi
11370     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11371                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11372                 d_strerror="$undef"
11373                 d_syserrlst="$define"
11374                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11375     else
11376                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11377                 d_strerror="$undef"
11378                 d_syserrlst="$undef"
11379                 d_strerrm='"unknown"'
11380     fi
11381 fi
11382
11383 : see if strtod exists
11384 set strtod d_strtod
11385 eval $inlibc
11386
11387 : see if strtol exists
11388 set strtol d_strtol
11389 eval $inlibc
11390
11391 : see if strtold exists
11392 set strtold d_strtold
11393 eval $inlibc
11394
11395 : see if strtoll exists
11396 set strtoll d_strtoll
11397 eval $inlibc
11398
11399 : see if strtoul exists
11400 set strtoul d_strtoul
11401 eval $inlibc
11402
11403 : see if strtoull exists
11404 set strtoull d_strtoull
11405 eval $inlibc
11406
11407 : see if strtouq exists
11408 set strtouq d_strtouq
11409 eval $inlibc
11410
11411 : see if strxfrm exists
11412 set strxfrm d_strxfrm
11413 eval $inlibc
11414
11415 : see if symlink exists
11416 set symlink d_symlink
11417 eval $inlibc
11418
11419 : see if syscall exists
11420 set syscall d_syscall
11421 eval $inlibc
11422
11423 : see if sysconf exists
11424 set sysconf d_sysconf
11425 eval $inlibc
11426
11427 : see if system exists
11428 set system d_system
11429 eval $inlibc
11430
11431 : see if tcgetpgrp exists
11432 set tcgetpgrp d_tcgetpgrp
11433 eval $inlibc
11434
11435 : see if tcsetpgrp exists
11436 set tcsetpgrp d_tcsetpgrp
11437 eval $inlibc
11438
11439 : see if prototype for telldir is available
11440 echo " "
11441 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11442 eval $hasproto
11443
11444 : see if this is a sys/times.h system
11445 set sys/times.h i_systimes
11446 eval $inhdr
11447
11448 : see if times exists
11449 echo " "
11450 if set times val -f d_times; eval $csym; $val; then
11451         echo 'times() found.' >&4
11452         d_times="$define"
11453         inc=''
11454         case "$i_systimes" in
11455         "$define") inc='sys/times.h';;
11456         esac
11457         rp="What is the type returned by times() on this system?"
11458         set clock_t clocktype long stdio.h sys/types.h $inc
11459         eval $typedef_ask
11460 else
11461         echo 'times() NOT found, hope that will do.' >&4
11462         d_times="$undef"
11463         clocktype='int'
11464 fi
11465
11466 : see if truncate exists
11467 set truncate d_truncate
11468 eval $inlibc
11469
11470 : see if tzname[] exists
11471 echo " "
11472 if set tzname val -a d_tzname; eval $csym; $val; then
11473         val="$define"
11474         echo 'tzname[] found.' >&4
11475 else
11476         val="$undef"
11477         echo 'tzname[] NOT found.' >&4
11478 fi
11479 set d_tzname
11480 eval $setvar
11481
11482 : see if umask exists
11483 set umask d_umask
11484 eval $inlibc
11485
11486 : see if ustat exists
11487 set ustat d_ustat
11488 eval $inlibc
11489
11490 : backward compatibility for d_hvfork
11491 if test X$d_hvfork != X; then
11492         d_vfork="$d_hvfork"
11493         d_hvfork=''
11494 fi
11495 : see if there is a vfork
11496 val=''
11497 set vfork val
11498 eval $inlibc
11499
11500 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11501 : perl on Solaris 2.x, and probably elsewhere.
11502 case "$val" in
11503 $define)
11504         echo " "
11505         case "$usevfork" in
11506         false) dflt='n';;
11507         *) dflt='y';;
11508         esac
11509         cat <<'EOM'
11510  
11511 Perl can only use a vfork() that doesn't suffer from strict
11512 restrictions on calling functions or modifying global data in
11513 the child.  For example, glibc-2.1 contains such a vfork()
11514 that is unsuitable.  If your system provides a proper fork()
11515 call, chances are that you do NOT want perl to use vfork().
11516
11517 EOM
11518         rp="Do you still want to use vfork()?"
11519         . ./myread
11520         case "$ans" in
11521         y|Y) ;;
11522         *)
11523                 echo "Ok, we won't use vfork()."
11524                 val="$undef"
11525                 ;;
11526         esac
11527         ;;
11528 esac
11529 set d_vfork
11530 eval $setvar
11531 case "$d_vfork" in
11532 $define) usevfork='true';;
11533 *) usevfork='false';;
11534 esac
11535
11536 : see if this is an sysdir system
11537 set sys/dir.h i_sysdir
11538 eval $inhdr
11539
11540 : see if this is an sysndir system
11541 set sys/ndir.h i_sysndir
11542 eval $inhdr
11543
11544 : see if closedir exists
11545 set closedir d_closedir
11546 eval $inlibc
11547
11548 case "$d_closedir" in
11549 "$define")
11550         echo " "
11551         echo "Checking whether closedir() returns a status..." >&4
11552         cat > closedir.c <<EOM
11553 #$i_dirent I_DIRENT             /**/
11554 #$i_sysdir I_SYS_DIR            /**/
11555 #$i_sysndir I_SYS_NDIR          /**/
11556 #$i_systypes I_SYS_TYPES        /**/
11557
11558 #if defined(I_SYS_TYPES)
11559 #include <sys/types.h>
11560 #endif
11561 #if defined(I_DIRENT)
11562 #include <dirent.h>
11563 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11564 #include <sys/dir.h>
11565 #endif
11566 #else
11567 #ifdef I_SYS_NDIR
11568 #include <sys/ndir.h>
11569 #else
11570 #ifdef I_SYS_DIR
11571 #ifdef hp9000s500
11572 #include <ndir.h>       /* may be wrong in the future */
11573 #else
11574 #include <sys/dir.h>
11575 #endif
11576 #endif
11577 #endif
11578 #endif 
11579 int main() { return closedir(opendir(".")); }
11580 EOM
11581         set closedir
11582         if eval $compile_ok; then
11583                 if ./closedir > /dev/null 2>&1 ; then
11584                         echo "Yes, it does."
11585                         val="$undef"
11586                 else
11587                         echo "No, it doesn't."
11588                         val="$define"
11589                 fi
11590         else
11591                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11592                 val="$define"
11593         fi
11594         ;;
11595 *)
11596         val="$undef";
11597         ;;
11598 esac
11599 set d_void_closedir
11600 eval $setvar
11601 $rm -f closedir*
11602 : check for volatile keyword
11603 echo " "
11604 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11605 $cat >try.c <<'EOCP'
11606 int main()
11607 {
11608         typedef struct _goo_struct goo_struct;
11609         goo_struct * volatile goo = ((goo_struct *)0);
11610         struct _goo_struct {
11611                 long long_int;
11612                 int reg_int;
11613                 char char_var;
11614         };
11615         typedef unsigned short foo_t;
11616         char *volatile foo;
11617         volatile int bar;
11618         volatile foo_t blech;
11619         foo = foo;
11620 }
11621 EOCP
11622 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11623         val="$define"
11624         echo "Yup, it does."
11625 else
11626         val="$undef"
11627         echo "Nope, it doesn't."
11628 fi
11629 set d_volatile
11630 eval $setvar
11631 $rm -f try.*
11632
11633 : see if there is a wait4
11634 set wait4 d_wait4
11635 eval $inlibc
11636
11637 : see if waitpid exists
11638 set waitpid d_waitpid
11639 eval $inlibc
11640
11641 : see if wcstombs exists
11642 set wcstombs d_wcstombs
11643 eval $inlibc
11644
11645 : see if wctomb exists
11646 set wctomb d_wctomb
11647 eval $inlibc
11648
11649 : preserve RCS keywords in files with variable substitution, grrr
11650 Date='$Date'
11651 Id='$Id'
11652 Log='$Log'
11653 RCSfile='$RCSfile'
11654 Revision='$Revision'
11655
11656 case "$crosscompile" in
11657 ''|[nN]*) crosscompile="$undef" ;;
11658 esac
11659
11660 case "$osname" in
11661 next|rhapsody|darwin) multiarch="$define" ;;
11662 esac
11663 case "$multiarch" in
11664 ''|[nN]*) multiarch="$undef" ;;
11665 esac
11666
11667 : check for alignment requirements
11668 echo " "
11669 case "$crosscompile$multiarch" in
11670 *$define*)
11671         $cat <<EOM
11672 You seem to be either cross-compiling or doing a multiarchitecture build,
11673 skipping the memory alignment check.
11674
11675 EOM
11676         case "$alignbytes" in
11677         '') alignbytes=8 ;;
11678         esac
11679         ;;
11680 *)
11681         case "$alignbytes" in
11682         '') echo "Checking alignment constraints..." >&4
11683                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11684                         $cat >try.c <<'EOCP'
11685 typedef long double NV;
11686 EOCP
11687                 else
11688                         $cat >try.c <<'EOCP'
11689 typedef double NV;
11690 EOCP
11691                 fi
11692                 $cat >>try.c <<'EOCP'
11693 #include <stdio.h>
11694 struct foobar {
11695         char foo;
11696         NV bar;
11697 } try_algn;
11698 int main()
11699 {
11700     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11701     return(0);
11702 }
11703 EOCP
11704                 set try
11705                 if eval $compile_ok; then
11706                         dflt=`./try`
11707                 else
11708                         dflt='8'
11709                         echo "(I can't seem to compile the test program...)"
11710                 fi
11711                 ;;
11712         *) dflt="$alignbytes"
11713                 ;;
11714         esac
11715         rp="Doubles must be aligned on a how-many-byte boundary?"
11716         . ./myread
11717         alignbytes="$ans"
11718         $rm -f try.c try
11719         ;;
11720 esac
11721
11722
11723 : set the base revision
11724 baserev=5.0
11725
11726 : check for ordering of bytes in a long
11727 echo " "
11728 case "$crosscompile$multiarch" in
11729 *$define*)
11730         $cat <<EOM
11731 You seem to be either cross-compiling or doing a multiarchitecture build,
11732 skipping the byteorder check.
11733
11734 EOM
11735         byteorder='0xffff'
11736         ;;
11737 *)
11738         case "$byteorder" in
11739         '')
11740                 $cat <<'EOM'
11741 In the following, larger digits indicate more significance.  A big-endian
11742 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11743 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11744 machines may have weird orders like 3412.  A Cray will report 87654321,
11745 an Alpha will report 12345678. If the test program works the default is
11746 probably right.
11747 I'm now running the test program...
11748 EOM
11749                 $cat >try.c <<'EOCP'
11750 #include <stdio.h>
11751 int main()
11752 {
11753         int i;
11754         union {
11755                 unsigned long l;
11756                 char c[sizeof(long)];
11757         } u;
11758
11759         if (sizeof(long) > 4)
11760                 u.l = (0x08070605L << 32) | 0x04030201L;
11761         else
11762                 u.l = 0x04030201L;
11763         for (i = 0; i < sizeof(long); i++)
11764                 printf("%c", u.c[i]+'0');
11765         printf("\n");
11766         exit(0);
11767 }
11768 EOCP
11769                 xxx_prompt=y
11770                 set try
11771                 if eval $compile && ./try > /dev/null; then
11772                         dflt=`./try`
11773                         case "$dflt" in
11774                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11775                                 echo "(The test program ran ok.)"
11776                                 echo "byteorder=$dflt"
11777                                 xxx_prompt=n
11778                         ;;
11779                         ????|????????) echo "(The test program ran ok.)" ;;
11780                         *) echo "(The test program didn't run right for some reason.)" ;;
11781                         esac
11782                 else
11783                         dflt='4321'
11784                         cat <<'EOM'
11785 (I can't seem to compile the test program.  Guessing big-endian...)
11786 EOM
11787                 fi
11788                 case "$xxx_prompt" in
11789                 y)
11790                         rp="What is the order of bytes in a long?"
11791                         . ./myread
11792                         byteorder="$ans"
11793                         ;;
11794                 *)      byteorder=$dflt
11795                         ;;
11796                 esac
11797                 ;;
11798         esac
11799         $rm -f try.c try
11800         ;;
11801 esac
11802
11803
11804 : how do we catenate cpp tokens here?
11805 echo " "
11806 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11807 $cat >cpp_stuff.c <<'EOCP'
11808 #define RCAT(a,b)a/**/b
11809 #define ACAT(a,b)a ## b
11810 RCAT(Rei,ser)
11811 ACAT(Cir,cus)
11812 EOCP
11813 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11814 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11815         echo "Oh!  Smells like ANSI's been here." >&4
11816         echo "We can catify or stringify, separately or together!"
11817         cpp_stuff=42
11818 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11819         echo "Ah, yes!  The good old days!" >&4
11820         echo "However, in the good old days we don't know how to stringify and"
11821         echo "catify at the same time."
11822         cpp_stuff=1
11823 else
11824         $cat >&4 <<EOM
11825 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11826 to have to edit the values of CAT[2-5] in config.h...
11827 EOM
11828         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11829 fi
11830 $rm -f cpp_stuff.*
11831
11832 : see if this is a db.h system
11833 set db.h i_db
11834 eval $inhdr
11835
11836 case "$i_db" in
11837 $define)
11838         : Check db version.
11839         echo " "
11840         echo "Checking Berkeley DB version ..." >&4
11841         $cat >try.c <<EOCP
11842 #$d_const HASCONST
11843 #ifndef HASCONST
11844 #define const
11845 #endif
11846 #include <sys/types.h>
11847 #include <stdio.h>
11848 #include <db.h>
11849 int main()
11850 {
11851 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11852     int Major, Minor, Patch ;
11853     unsigned long Version ;
11854     (void)db_version(&Major, &Minor, &Patch) ;
11855     printf("You have Berkeley DB Version 2 or greater\n");
11856
11857     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11858                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11859     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11860                 Major, Minor, Patch) ;
11861
11862     /* check that db.h & libdb are compatible */
11863     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11864         printf("db.h and libdb are incompatible\n") ;
11865         exit(3);        
11866     }
11867
11868     printf("db.h and libdb are compatible\n") ;
11869
11870     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11871                 + DB_VERSION_PATCH ;
11872
11873     /* needs to be >= 2.3.4 */
11874     if (Version < 2003004) {
11875     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11876         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11877         exit(2);        
11878     }
11879
11880     exit(0);
11881 #else
11882 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11883     printf("You have Berkeley DB Version 1\n");
11884     exit(0);    /* DB version < 2: the coast is clear. */
11885 #else
11886     exit(1);    /* <db.h> not Berkeley DB? */
11887 #endif
11888 #endif
11889 }
11890 EOCP
11891         set try
11892         if eval $compile_ok && ./try; then
11893                 echo 'Looks OK.' >&4
11894         else
11895                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11896                 i_db=$undef
11897                 case " $libs " in
11898                 *"-ldb "*)
11899                         : Remove db from list of libraries to use
11900                         echo "Removing unusable -ldb from library list" >&4
11901                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11902                         shift
11903                         libs="$*"
11904                         echo "libs = $libs" >&4
11905                         ;;
11906                 esac
11907         fi
11908         $rm -f try.*
11909         ;;
11910 esac
11911
11912 case "$i_db" in
11913 define)
11914         : Check the return type needed for hash 
11915         echo " "
11916         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11917         $cat >try.c <<EOCP
11918 #$d_const HASCONST
11919 #ifndef HASCONST
11920 #define const
11921 #endif
11922 #include <sys/types.h>
11923 #include <db.h>
11924
11925 #ifndef DB_VERSION_MAJOR
11926 u_int32_t hash_cb (ptr, size)
11927 const void *ptr;
11928 size_t size;
11929 {
11930 }
11931 HASHINFO info;
11932 int main()
11933 {
11934         info.hash = hash_cb;
11935 }
11936 #endif
11937 EOCP
11938         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11939                 if $contains warning try.out >>/dev/null 2>&1 ; then
11940                         db_hashtype='int'
11941                 else
11942                         db_hashtype='u_int32_t'
11943                 fi
11944         else
11945                 : XXX Maybe we should just give up here.
11946                 db_hashtype=u_int32_t
11947                 $cat try.out >&4
11948                 echo "Help:  I can't seem to compile the db test program." >&4
11949                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11950         fi
11951         $rm -f try.*
11952         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11953         ;;
11954 *)      db_hashtype=u_int32_t
11955         ;;
11956 esac
11957 case "$i_db" in
11958 define)
11959         : Check the return type needed for prefix 
11960         echo " "
11961         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11962         cat >try.c <<EOCP
11963 #$d_const HASCONST
11964 #ifndef HASCONST
11965 #define const
11966 #endif
11967 #include <sys/types.h>
11968 #include <db.h>
11969
11970 #ifndef DB_VERSION_MAJOR
11971 size_t prefix_cb (key1, key2)
11972 const DBT *key1;
11973 const DBT *key2;
11974 {
11975 }
11976 BTREEINFO info;
11977 int main()
11978 {
11979         info.prefix = prefix_cb;
11980 }
11981 #endif
11982 EOCP
11983         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11984                 if $contains warning try.out >>/dev/null 2>&1 ; then
11985                         db_prefixtype='int'
11986                 else
11987                         db_prefixtype='size_t'
11988                 fi
11989         else
11990                 db_prefixtype='size_t'
11991                 : XXX Maybe we should just give up here.
11992                 $cat try.out >&4
11993                 echo "Help:  I can't seem to compile the db test program." >&4
11994                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11995         fi
11996         $rm -f try.*
11997         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11998         ;;
11999 *)      db_prefixtype='size_t'
12000         ;;
12001 esac
12002
12003 : check for void type
12004 echo " "
12005 echo "Checking to see how well your C compiler groks the void type..." >&4
12006 case "$voidflags" in
12007 '')
12008         $cat >try.c <<'EOCP'
12009 #if TRY & 1
12010 void sub() {
12011 #else
12012 sub() {
12013 #endif
12014         extern void moo();      /* function returning void */
12015         void (*goo)();          /* ptr to func returning void */
12016 #if TRY & 8
12017         void *hue;              /* generic ptr */
12018 #endif
12019 #if TRY & 2
12020         void (*foo[10])();
12021 #endif
12022
12023 #if TRY & 4
12024         if(goo == moo) {
12025                 exit(0);
12026         }
12027 #endif
12028         exit(0);
12029 }
12030 int main() { sub(); }
12031 EOCP
12032         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12033                 voidflags=$defvoidused
12034         echo "Good.  It appears to support void to the level $package wants.">&4
12035                 if $contains warning .out >/dev/null 2>&1; then
12036                         echo "However, you might get some warnings that look like this:"
12037                         $cat .out
12038                 fi
12039         else
12040 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12041                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12042                         echo "It supports 1..."
12043                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12044                                 echo "It also supports 2..."
12045                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12046                                         voidflags=7
12047                                         echo "And it supports 4 but not 8 definitely."
12048                                 else
12049                                         echo "It doesn't support 4..."
12050                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12051                                                 voidflags=11
12052                                                 echo "But it supports 8."
12053                                         else
12054                                                 voidflags=3
12055                                                 echo "Neither does it support 8."
12056                                         fi
12057                                 fi
12058                         else
12059                                 echo "It does not support 2..."
12060                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12061                                         voidflags=13
12062                                         echo "But it supports 4 and 8."
12063                                 else
12064                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12065                                                 voidflags=5
12066                                                 echo "And it supports 4 but has not heard about 8."
12067                                         else
12068                                                 echo "However it supports 8 but not 4."
12069                                         fi
12070                                 fi
12071                         fi
12072                 else
12073                         echo "There is no support at all for void."
12074                         voidflags=0
12075                 fi
12076         fi
12077 esac
12078 case "$voidflags" in
12079 "$defvoidused") ;;
12080 *)      $cat >&4 <<'EOM'
12081   Support flag bits are:
12082     1: basic void declarations.
12083     2: arrays of pointers to functions returning void.
12084     4: operations between pointers to and addresses of void functions.
12085     8: generic void pointers.
12086 EOM
12087         dflt="$voidflags";
12088         rp="Your void support flags add up to what?"
12089         . ./myread
12090         voidflags="$ans"
12091         ;;
12092 esac
12093 $rm -f try.* .out
12094
12095
12096 : How can we generate normalized random numbers ?
12097 echo " "
12098 echo "Looking for a random number function..." >&4
12099 case "$randfunc" in
12100 '')
12101         if set drand48 val -f; eval $csym; $val; then
12102                 dflt="drand48"
12103                 echo "Good, found drand48()." >&4
12104         elif set random val -f; eval $csym; $val; then
12105                 dflt="random"
12106                 echo "OK, found random()." >&4
12107         else
12108                 dflt="rand"
12109                 echo "Yick, looks like I have to use rand()." >&4
12110         fi
12111         echo " "
12112         ;;
12113 *)
12114         dflt="$randfunc"
12115         ;;
12116 esac
12117 cont=true
12118
12119 case "$ccflags" in
12120 *-Dmy_rand=*|*-Dmy_srand=*)
12121         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12122         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12123         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12124         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12125         ;;
12126 esac
12127
12128 while $test "$cont"; do
12129         rp="Use which function to generate random numbers?"
12130         . ./myread
12131         if $test "$ans" = "$dflt"; then
12132                 : null
12133         else
12134                 randbits=''
12135         fi
12136         randfunc="$ans"
12137         if set $ans val -f; eval $csym; $val; then
12138                 cont=''
12139         else
12140                 dflt=y
12141                 rp="I cannot find function $ans. Use that name anyway?"
12142                 . ./myread
12143                 dflt=rand
12144                 case "$ans" in
12145                         [yY]*) cont='';;
12146                 esac
12147         fi
12148         case "$cont" in
12149         '')
12150                 case "$randfunc" in
12151                 drand48)
12152                         drand01="drand48()"
12153                         seedfunc="srand48"
12154                         randbits=48
12155                         randseedtype=long
12156                         ;;
12157                 rand|random)
12158                         case "$randbits" in
12159                         '')
12160 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12161                                 $cat >try.c <<EOCP
12162 #$i_unistd I_UNISTD
12163 #$i_stdlib I_STDLIB
12164 #include <stdio.h>
12165 #ifdef I_UNISTD
12166 #  include <unistd.h>
12167 #endif
12168 #ifdef I_STDLIB
12169 #  include <stdlib.h>
12170 #endif
12171 int main()
12172 {
12173         register int i;
12174         register unsigned long tmp;
12175         register unsigned long max = 0L;
12176
12177         for (i = 1000; i; i--) {
12178                 tmp = (unsigned long) $randfunc();
12179                 if (tmp > max) max = tmp;
12180         }
12181         for (i = 0; max; i++)
12182                 max /= 2;
12183         printf("%d\n",i);
12184 }
12185 EOCP
12186                                 set try
12187                                 if eval $compile_ok; then
12188                                         dflt=`try`
12189                                 else
12190                                         dflt='?'
12191                                         echo "(I can't seem to compile the test program...)"
12192                                 fi
12193                                 ;;
12194                         *)
12195                                 dflt="$randbits"
12196                                 ;;
12197                         esac
12198                         rp="How many bits does your $randfunc() function produce?"
12199                         . ./myread
12200                         randbits="$ans"
12201                         $rm -f try.c try
12202                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12203                         seedfunc="s$randfunc"
12204                         randseedtype=unsigned
12205                         ;;
12206                 *)
12207                         dflt="31"
12208                         rp="How many bits does your $randfunc() function produce?"
12209                         . ./myread
12210                         randbits="$ans"
12211                         seedfunc="s$randfunc"
12212                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12213                         if set $seedfunc val -f; eval $csym; $val; then
12214                                 echo "(Using $seedfunc() to seed random generator)"
12215                         else
12216                                 echo "(Warning: no $seedfunc() to seed random generator)"
12217                                 seedfunc=rand
12218                         fi
12219                         randseedtype=unsigned
12220                         ;;
12221                 esac
12222                 ;;
12223         esac
12224 done
12225
12226 echo " "
12227 echo "Determining whether or not we are on an EBCDIC system..." >&4
12228 $cat >tebcdic.c <<'EOM'
12229 int main()
12230 {
12231   if ('M'==0xd4) return 0;
12232   return 1;
12233 }
12234 EOM
12235
12236 val=$undef
12237 set tebcdic
12238 if eval $compile_ok; then
12239         if ./tebcdic; then
12240                 echo "You have EBCDIC." >&4
12241                 val="$define"
12242         else
12243                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12244         fi
12245 else
12246         echo "I'm unable to compile the test program." >&4
12247         echo "I'll assume ASCII or some ISO Latin." >&4
12248 fi
12249 $rm -f tebcdic.c tebcdic
12250 set ebcdic
12251 eval $setvar
12252
12253 echo " "
12254 $cat >&4 <<EOM
12255 Checking how to flush all pending stdio output...
12256 EOM
12257 # I only know how to find the first 32 possibly open files on SunOS.
12258 # See also hints/sunos_4_1.sh and util.c  --AD
12259 case "$osname" in
12260 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12261 esac
12262 $cat >>try.c <<EOCP
12263 #include <stdio.h>
12264 #$i_unistd I_UNISTD
12265 #ifdef I_UNISTD
12266 # include <unistd.h>
12267 #endif
12268 #$d_sysconf HAS_SYSCONF
12269 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12270 #ifdef HAS_STDIO_STREAM_ARRAY
12271 # define STDIO_STREAM_ARRAY $stdio_stream_array
12272 #endif
12273 int main() {
12274   FILE* p = fopen("try.out", "w");
12275 #ifdef TRY_FPUTC
12276   fputc('x', p);
12277 #else
12278 # ifdef TRY_FPRINTF
12279   fprintf(p, "x");
12280 # endif
12281 #endif
12282 #ifdef TRY_FFLUSH_NULL
12283   fflush(NULL);
12284 #endif
12285 #ifdef TRY_FFLUSH_ALL
12286   {
12287     long open_max = -1;
12288 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12289     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12290 # else
12291 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12292     open_max = sysconf(_SC_OPEN_MAX);
12293 #  else
12294 #   ifdef FOPEN_MAX
12295     open_max = FOPEN_MAX;
12296 #   else
12297 #    ifdef OPEN_MAX
12298     open_max = OPEN_MAX;
12299 #    else
12300 #     ifdef _NFILE
12301     open_max = _NFILE;
12302 #     endif
12303 #    endif
12304 #   endif
12305 #  endif
12306 # endif 
12307 # ifdef HAS_STDIO_STREAM_ARRAY
12308     if (open_max > 0) {
12309       long i;
12310       for (i = 0; i < open_max; i++)
12311             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12312                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12313                 STDIO_STREAM_ARRAY[i]._flag)
12314                 fflush(&STDIO_STREAM_ARRAY[i]);
12315     }   
12316   }
12317 # endif
12318 #endif
12319   _exit(42);
12320 }
12321 EOCP
12322 : first we have to find out how _not_ to flush
12323 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12324     output=''
12325     set try -DTRY_FPUTC
12326     if eval $compile; then
12327             $rm -f try.out
12328             ./try$exe_ext 2>/dev/null
12329             if $test ! -s try.out -a "X$?" = X42; then
12330                 output=-DTRY_FPUTC
12331             fi
12332     fi
12333     case "$output" in
12334     '')
12335             set try -DTRY_FPRINTF
12336             $rm -f try.out
12337             if eval $compile; then
12338                     $rm -f try.out
12339                     ./try$exe_ext 2>/dev/null
12340                     if $test ! -s try.out -a "X$?" = X42; then
12341                         output=-DTRY_FPRINTF
12342                     fi
12343             fi
12344         ;;
12345     esac
12346 fi
12347 : check for fflush NULL behaviour
12348 case "$fflushNULL" in
12349 '')     set try -DTRY_FFLUSH_NULL $output
12350         if eval $compile; then
12351                 $rm -f try.out
12352                 ./try$exe_ext 2>/dev/null
12353                 code="$?"
12354                 if $test -s try.out -a "X$code" = X42; then
12355                         fflushNULL="`$cat try.out`"
12356                 else
12357                         if $test "X$code" != X42; then
12358                                 $cat >&4 <<EOM
12359 (If this test failed, don't worry, we'll try another method shortly.)
12360 EOM
12361                         fi
12362                 fi
12363         fi
12364         $rm -f core try.core core.try.*
12365         case "$fflushNULL" in
12366         x)      $cat >&4 <<EOM
12367 Your fflush(NULL) works okay.
12368 EOM
12369                 fflushNULL="$define"
12370                 ;;
12371         '')     $cat >&4 <<EOM
12372 Your fflush(NULL) isn't working (contrary to ANSI C).
12373 EOM
12374                 fflushNULL="$undef"
12375                 ;;
12376         *)      $cat >&4 <<EOM
12377 Cannot figure out whether your fflush(NULL) works or not.
12378 I'm assuming it doesn't (contrary to ANSI C).
12379 EOM
12380                 fflushNULL="$undef"
12381                 ;;
12382         esac
12383         ;;
12384 $define|true|[yY]*)
12385         fflushNULL="$define"
12386         ;;
12387 *)
12388         fflushNULL="$undef"
12389         ;;
12390 esac
12391 : check explicit looping only if NULL did not work
12392 case "$fflushNULL" in
12393 "$undef")
12394         : check for fflush all behaviour
12395         case "$fflushall" in
12396         '')     set try -DTRY_FFLUSH_ALL $output
12397                 if eval $compile; then
12398                         $cat >&4 <<EOM
12399 (Now testing the other method--but note that also this may fail.)
12400 EOM
12401                         $rm -f try.out
12402                         ./try$exe_ext 2>/dev/null
12403                         if $test -s try.out -a "X$?" = X42; then
12404                                 fflushall="`$cat try.out`"
12405                         fi
12406                 fi
12407                 $rm -f core try.core core.try.*
12408                 case "$fflushall" in
12409                 x)      $cat >&4 <<EOM
12410 Whew. Flushing explicitly all the stdio streams works.
12411 EOM
12412                         fflushall="$define"
12413                         ;;
12414                 '')     $cat >&4 <<EOM
12415 Sigh. Flushing explicitly all the stdio streams doesn't work.
12416 EOM
12417                         fflushall="$undef"
12418                         ;;
12419                 *)      $cat >&4 <<EOM
12420 Cannot figure out whether flushing stdio streams explicitly works or not.
12421 I'm assuming it doesn't.
12422 EOM
12423                         fflushall="$undef"
12424                         ;;
12425                 esac
12426                 ;;
12427         "$define"|true|[yY]*)
12428                 fflushall="$define"
12429                 ;;
12430         *)
12431                 fflushall="$undef"
12432                 ;;
12433         esac
12434         ;;
12435 *)      fflushall="$undef"      
12436         ;;
12437 esac
12438 case "$fflushNULL$fflushall" in
12439 undefundef)
12440         $cat <<EOM
12441 I cannot figure out how to flush pending stdio output.
12442 EOM
12443         ;;
12444 esac
12445 $rm -f try.* try$exe_ext
12446
12447 : Store the full pathname to the ar program for use in the C program
12448 : Respect a hint or command line value for full_ar.
12449 case "$full_ar" in
12450 '') full_ar=$ar ;;
12451 esac
12452
12453 : Store the full pathname to the sed program for use in the C program
12454 full_sed=$sed
12455
12456 : see what type gids are declared as in the kernel
12457 echo " "
12458 echo "Looking for the type for group ids returned by getgid()."
12459 set gid_t gidtype xxx stdio.h sys/types.h
12460 eval $typedef
12461 case "$gidtype" in
12462 xxx)
12463         xxx=`./findhdr sys/user.h`
12464         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12465         case $1 in
12466         unsigned) dflt="$1 $2" ;;
12467         *) dflt="$1" ;;
12468         esac
12469         ;;
12470 *) dflt="$gidtype";;
12471 esac
12472 case "$gidtype" in
12473 gid_t) echo "gid_t found." ;;
12474 *)      rp="What is the type for group ids returned by getgid()?"
12475         . ./myread
12476         gidtype="$ans"
12477         ;;
12478 esac
12479
12480 echo " "
12481 case "$gidtype" in
12482 *_t) zzz="$gidtype"     ;;
12483 *)   zzz="gid"          ;;
12484 esac
12485 echo "Checking the size of $zzz..." >&4 
12486 cat > try.c <<EOCP
12487 #include <sys/types.h>
12488 #include <stdio.h>
12489 int main() {
12490     printf("%d\n", (int)sizeof($gidtype));
12491     exit(0);
12492 }
12493 EOCP
12494 set try
12495 if eval $compile_ok; then
12496         yyy=`./try`
12497         case "$yyy" in
12498         '')     gidsize=4
12499                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12500                 ;;
12501         *)      gidsize=$yyy
12502                 echo "Your $zzz is $gidsize bytes long."
12503                 ;;
12504         esac
12505 else
12506         gidsize=4
12507         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12508 fi
12509
12510
12511 echo " "
12512 case "$gidtype" in
12513 *_t) zzz="$gidtype"     ;;
12514 *)   zzz="gid"          ;;
12515 esac
12516 echo "Checking the sign of $zzz..." >&4 
12517 cat > try.c <<EOCP
12518 #include <sys/types.h>
12519 #include <stdio.h>
12520 int main() {
12521         $gidtype foo = -1;
12522         if (foo < 0)
12523                 printf("-1\n");
12524         else
12525                 printf("1\n");
12526 }
12527 EOCP
12528 set try
12529 if eval $compile; then
12530         yyy=`./try`
12531         case "$yyy" in
12532         '')     gidsign=1
12533                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12534                 ;;
12535         *)      gidsign=$yyy
12536                 case "$gidsign" in
12537                  1) echo "Your $zzz is unsigned." ;;
12538                 -1) echo "Your $zzz is signed."   ;;
12539                 esac
12540                 ;;
12541         esac
12542 else
12543         gidsign=1
12544         echo "(I can't compile the test program--guessing unsigned.)" >&4
12545 fi
12546
12547
12548 echo " "
12549
12550 if $test X"$quadtype" != X; then
12551
12552 echo "Checking how to print 64-bit integers..." >&4
12553
12554 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12555         $cat >try.c <<'EOCP'
12556 #include <sys/types.h>
12557 #include <stdio.h>
12558 int main() {
12559   int q = 12345678901;
12560   printf("%ld\n", q);
12561 }
12562 EOCP
12563         set try
12564         if eval $compile; then
12565                 yyy=`./try$exe_ext`
12566                 case "$yyy" in
12567                 12345678901)
12568                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12569                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12570                         echo "We will use %d."
12571                         ;;
12572                 esac
12573         fi
12574 fi
12575
12576 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12577         $cat >try.c <<'EOCP'
12578 #include <sys/types.h>
12579 #include <stdio.h>
12580 int main() {
12581   long q = 12345678901;
12582   printf("%ld\n", q);
12583 }
12584 EOCP
12585         set try
12586         if eval $compile; then
12587                 yyy=`./try$exe_ext`
12588                 case "$yyy" in
12589                 12345678901)
12590                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12591                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12592                         echo "We will use %ld."
12593                         ;;
12594                 esac
12595         fi
12596 fi
12597
12598 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12599         $cat >try.c <<'EOCP'
12600 #include <sys/types.h>
12601 #include <inttypes.h>
12602 #include <stdio.h>
12603 int main() {
12604   int64_t q = 12345678901;
12605   printf("%" PRId64 "\n", q);
12606 }
12607 EOCP
12608         set try
12609         if eval $compile; then
12610                 yyy=`./try$exe_ext`
12611                 case "$yyy" in
12612                 12345678901)
12613                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12614                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12615                         echo "We will use the C9X style."
12616                         ;;
12617                 esac
12618         fi
12619 fi
12620
12621 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12622         $cat >try.c <<'EOCP'
12623 #include <sys/types.h>
12624 #include <stdio.h>
12625 int main() {
12626   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12627   printf("%lld\n", q);
12628 }
12629 EOCP
12630         set try
12631         if eval $compile; then
12632                 yyy=`./try$exe_ext`
12633                 case "$yyy" in
12634                 12345678901)
12635                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12636                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12637                         echo "We will use the %lld style."
12638                         ;;
12639                 esac
12640         fi
12641 fi
12642
12643 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12644         $cat >try.c <<EOCP
12645 #include <sys/types.h>
12646 #include <stdio.h>
12647 int main() {
12648   $quadtype q = 12345678901;
12649   printf("%Ld\n", q);
12650 }
12651 EOCP
12652         set try
12653         if eval $compile; then
12654                 yyy=`./try$exe_ext`
12655                 case "$yyy" in
12656                 12345678901)
12657                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12658                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12659                         echo "We will use %Ld."
12660                         ;;
12661                 esac
12662         fi
12663 fi
12664
12665 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12666         $cat >try.c <<EOCP
12667 #include <sys/types.h>
12668 #include <stdio.h>
12669 int main() {
12670   $quadtype q = 12345678901;
12671   printf("%qd\n", q);
12672 }
12673 EOCP
12674         set try
12675         if eval $compile; then
12676                 yyy=`./try$exe_ext`
12677                 case "$yyy" in
12678                 12345678901)
12679                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12680                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12681                         echo "We will use %qd."
12682                         ;;
12683                 esac
12684         fi
12685 fi
12686
12687 if $test X"$sPRId64" = X; then
12688         echo "Cannot figure out how to print 64-bit integers." >&4
12689 fi
12690
12691 $rm -f try try.*
12692
12693 fi
12694
12695 case "$sPRId64" in
12696 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12697         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12698         ;;
12699 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12700         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12701         ;;
12702 esac
12703
12704
12705 echo " "
12706 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12707
12708 if $test X"$ivsize" = X8; then
12709         ivdformat="$sPRId64"
12710         uvuformat="$sPRIu64"
12711         uvoformat="$sPRIo64"
12712         uvxformat="$sPRIx64"
12713 else
12714         if $test X"$ivsize" = X"$longsize"; then
12715                 ivdformat='"ld"'
12716                 uvuformat='"lu"'
12717                 uvoformat='"lo"'
12718                 uvxformat='"lx"'
12719         else
12720                 if $test X"$ivsize" = X"$intsize"; then
12721                         ivdformat='"d"'
12722                         uvuformat='"u"'
12723                         uvoformat='"o"'
12724                         uvxformat='"x"'
12725                 else
12726                         : far out
12727                         if $test X"$ivsize" = X"$shortsize"; then
12728                                 ivdformat='"hd"'
12729                                 uvuformat='"hu"'
12730                                 uvoformat='"ho"'
12731                                 uvxformat='"hx"'
12732                         fi
12733                 fi
12734         fi
12735 fi
12736
12737 case "$ivdformat" in
12738 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12739     exit 1
12740     ;;
12741 esac
12742
12743
12744 echo " "
12745 $echo "Checking the format string to be used for gids..." >&4
12746
12747 case "$gidsign" in
12748 -1)     if $test X"$gidsize" = X"$ivsize"; then
12749                 gidformat="$ivdformat"
12750         else
12751                 if $test X"$gidsize" = X"$longsize"; then
12752                         gidformat='"ld"'
12753                 else
12754                         if $test X"$gidsize" = X"$intsize"; then
12755                                 gidformat='"d"'
12756                         else
12757                                 if $test X"$gidsize" = X"$shortsize"; then
12758                                         gidformat='"hd"'
12759                                 fi
12760                         fi
12761                 fi
12762         fi
12763         ;;
12764 *)      if $test X"$gidsize" = X"$uvsize"; then
12765                 gidformat="$uvuformat"
12766         else
12767                 if $test X"$gidsize" = X"$longsize"; then
12768                         gidformat='"lu"'
12769                 else
12770                         if $test X"$gidsize" = X"$intsize"; then
12771                                 gidformat='"u"'
12772                         else
12773                                 if $test X"$gidsize" = X"$shortsize"; then
12774                                         gidformat='"hu"'
12775                                 fi
12776                         fi
12777                 fi
12778         fi
12779         ;;
12780 esac
12781
12782 : see if getgroups exists
12783 set getgroups d_getgrps
12784 eval $inlibc
12785
12786 : see if setgroups exists
12787 set setgroups d_setgrps
12788 eval $inlibc
12789
12790
12791 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12792 echo " "
12793 case "$d_getgrps$d_setgrps" in
12794 *define*)
12795         case "$groupstype" in
12796         '') dflt="$gidtype" ;;
12797         *)  dflt="$groupstype" ;;
12798         esac
12799         $cat <<EOM
12800 What type of pointer is the second argument to getgroups() and setgroups()?
12801 Usually this is the same as group ids, $gidtype, but not always.
12802
12803 EOM
12804         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12805         . ./myread
12806         groupstype="$ans"
12807         ;;
12808 *)  groupstype="$gidtype";;
12809 esac
12810
12811 echo " "
12812 echo "Checking if your $make program sets \$(MAKE)..." >&4
12813 case "$make_set_make" in
12814 '')
12815         $sed 's/^X //' > testmake.mak << 'EOF'
12816 Xall:
12817 X       @echo 'maketemp="$(MAKE)"'
12818 EOF
12819         case "`$make -f testmake.mak 2>/dev/null`" in
12820         *maketemp=*) make_set_make='#' ;;
12821         *)      make_set_make="MAKE=$make" ;;
12822         esac
12823         $rm -f testmake.mak
12824         ;;
12825 esac
12826 case "$make_set_make" in
12827 '#') echo "Yup, it does.";;
12828 *) echo "Nope, it doesn't.";;
12829 esac
12830
12831 : see what type is used for mode_t
12832 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12833 set mode_t modetype int stdio.h sys/types.h
12834 eval $typedef_ask
12835
12836 : define a fucntion to check prototypes
12837 $cat > protochk <<EOSH
12838 $startsh
12839 cc="$cc"
12840 optimize="$optimize"
12841 ccflags="$ccflags"
12842 prototype="$prototype"
12843 define="$define"
12844 rm=$rm
12845 EOSH
12846
12847 $cat >> protochk <<'EOSH'
12848
12849 $rm -f try.c
12850 foo="$1"
12851 shift
12852 while test $# -ge 2; do
12853         case "$1" in
12854                 $define) echo "#include <$2>" >> try.c ;;
12855                 literal) echo "$2" >> try.c ;;
12856         esac
12857     shift 2
12858 done
12859 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12860 cat >> try.c <<'EOCP'
12861 #ifdef CAN_PROTOTYPE
12862 #define _(args) args
12863 #else
12864 #define _(args) ()
12865 #endif
12866 EOCP
12867 echo "$foo" >> try.c
12868 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12869 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12870 status=$?
12871 $rm -f try.[co]
12872 exit $status
12873 EOSH
12874 chmod +x protochk
12875 $eunicefix protochk
12876
12877 : see what type is used for size_t
12878 rp="What is the type used for the length parameter for string functions?"
12879 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12880 eval $typedef_ask
12881
12882 : check for type of arguments to gethostbyaddr. 
12883 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12884         case "$d_gethbyaddr" in
12885         $define)
12886                 $cat <<EOM
12887
12888 Checking to see what type of arguments are accepted by gethostbyaddr().
12889 EOM
12890                 hdrs="$define sys/types.h
12891                         $d_socket sys/socket.h 
12892                         $i_niin netinet/in.h 
12893                         $i_netdb netdb.h
12894                         $i_unistd unistd.h"
12895                 : The first arg can 'char *' or 'void *'
12896                 : The second arg is some of integral type
12897                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12898                         for yyy in size_t long int; do
12899                                 case "$netdb_host_type" in
12900                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12901                                         if ./protochk "$try" $hdrs; then
12902                                                 echo "Your system accepts $xxx for the first arg."
12903                                                 echo "...and $yyy for the second arg."
12904                                                 netdb_host_type="$xxx"
12905                                                 netdb_hlen_type="$yyy"
12906                                         fi
12907                                         ;;
12908                                 esac
12909                         done
12910                 done
12911                 : In case none of those worked, prompt the user.
12912                 case "$netdb_host_type" in
12913                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12914                         dflt='char *'
12915                         . ./myread
12916                         netdb_host_type=$ans
12917                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12918                         dflt="$sizetype"
12919                         . ./myread
12920                         netdb_hlen_type=$ans
12921                         ;;
12922                 esac
12923                 ;;
12924         *)      : no gethostbyaddr, so pick harmless defaults
12925                 netdb_host_type='char *'
12926                 netdb_hlen_type="$sizetype"
12927                 ;;
12928         esac
12929         # Remove the "const" if needed. -- but then we'll have a 
12930         # prototype clash!
12931         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12932 fi
12933
12934 : check for type of argument to gethostbyname. 
12935 if test "X$netdb_name_type" = X ; then
12936         case "$d_gethbyname" in
12937         $define)
12938                 $cat <<EOM
12939
12940 Checking to see what type of argument is accepted by gethostbyname().
12941 EOM
12942                 hdrs="$define sys/types.h
12943                         $d_socket sys/socket.h 
12944                         $i_niin netinet/in.h 
12945                         $i_netdb netdb.h
12946                         $i_unistd unistd.h"
12947                 for xxx in "const char *" "char *"; do
12948                         case "$netdb_name_type" in
12949                         '')     try="extern struct hostent *gethostbyname($xxx);"
12950                                 if ./protochk "$try" $hdrs; then
12951                                         echo "Your system accepts $xxx."
12952                                         netdb_name_type="$xxx"
12953                                 fi
12954                                 ;;
12955                         esac
12956                 done
12957                 : In case none of those worked, prompt the user.
12958                 case "$netdb_name_type" in
12959                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12960                         dflt='char *'
12961                         . ./myread
12962                         netdb_name_type=$ans
12963                         ;;
12964                 esac
12965                 ;;
12966         *)      : no gethostbyname, so pick harmless default
12967                 netdb_name_type='char *'
12968                 ;;
12969         esac
12970 fi
12971
12972 : check for type of 1st argument to getnetbyaddr. 
12973 if test "X$netdb_net_type" = X ; then
12974         case "$d_getnbyaddr" in
12975         $define)
12976                 $cat <<EOM
12977
12978 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12979 EOM
12980                 hdrs="$define sys/types.h
12981                         $d_socket sys/socket.h 
12982                         $i_niin netinet/in.h 
12983                         $i_netdb netdb.h
12984                         $i_unistd unistd.h"
12985                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12986                         case "$netdb_net_type" in
12987                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12988                                 if ./protochk "$try" $hdrs; then
12989                                         echo "Your system accepts $xxx."
12990                                         netdb_net_type="$xxx"
12991                                 fi
12992                                 ;;
12993                         esac
12994                 done
12995                 : In case none of those worked, prompt the user.
12996                 case "$netdb_net_type" in
12997                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12998                         dflt='long'
12999                         . ./myread
13000                         netdb_net_type=$ans
13001                         ;;
13002                 esac
13003                 ;;
13004         *)      : no getnetbyaddr, so pick harmless default
13005                 netdb_net_type='long'
13006                 ;;
13007         esac
13008 fi
13009 : locate the preferred pager for this system
13010 case "$pager" in
13011 '')
13012         dflt=''
13013         case "$pg" in
13014         /*) dflt=$pg;;
13015         esac
13016         case "$more" in
13017         /*) dflt=$more;;
13018         esac
13019         case "$less" in
13020         /*) dflt=$less;;
13021         esac
13022         case "$dflt" in
13023         '') dflt=/usr/ucb/more;;
13024         esac
13025         ;;
13026 *) dflt="$pager";;
13027 esac
13028 echo " "
13029 fn=f/
13030 rp='What pager is used on your system?'
13031 . ./getfile
13032 pager="$ans"
13033
13034 : see what type pids are declared as in the kernel
13035 rp="What is the type of process ids on this system?"
13036 set pid_t pidtype int stdio.h sys/types.h
13037 eval $typedef_ask
13038
13039 : Find earliest binary compatible site_perl subdirectory perl can use.
13040 case "$bincompat5005" in
13041 "$define") xs_apiversion='5.005' ;;
13042 *) xs_apiversion=$version ;;   # The current site_perl version.
13043 esac
13044 : Find earliest pure perl site_perl subdirectory perl can use.
13045 : The versioned directories started at 5.005.
13046 pm_apiversion='5.005'
13047
13048 : check for length of pointer
13049 echo " "
13050 case "$ptrsize" in
13051 '')
13052         echo "Checking to see how big your pointers are..." >&4
13053         if test "$voidflags" -gt 7; then
13054                 echo '#define VOID_PTR char *' > try.c
13055         else
13056                 echo '#define VOID_PTR void *' > try.c
13057         fi
13058         $cat >>try.c <<'EOCP'
13059 #include <stdio.h>
13060 int main()
13061 {
13062     printf("%d\n", (int)sizeof(VOID_PTR));
13063     exit(0);
13064 }
13065 EOCP
13066         set try
13067         if eval $compile_ok; then
13068                 ptrsize=`./try`
13069                 echo "Your pointers are $ptrsize bytes long."
13070         else
13071                 dflt='4'
13072                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13073                 rp="What is the size of a pointer (in bytes)?"
13074                 . ./myread
13075                 ptrsize="$ans"
13076         fi
13077         ;;
13078 esac
13079 $rm -f try.c try
13080
13081 : see if ar generates random libraries by itself
13082 echo " "
13083 echo "Checking how to generate random libraries on your machine..." >&4
13084 echo 'int bar1() { return bar2(); }' > bar1.c
13085 echo 'int bar2() { return 2; }' > bar2.c
13086 $cat > foo.c <<'EOP'
13087 int main() { printf("%d\n", bar1()); exit(0); }
13088 EOP
13089 $cc $ccflags -c bar1.c >/dev/null 2>&1
13090 $cc $ccflags -c bar2.c >/dev/null 2>&1
13091 $cc $ccflags -c foo.c >/dev/null 2>&1
13092 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13093 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13094         ./foobar >/dev/null 2>&1; then
13095         echo "$ar appears to generate random libraries itself."
13096         orderlib=false
13097         ranlib=":"
13098 elif $ar ts bar$_a >/dev/null 2>&1 &&
13099         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13100         ./foobar >/dev/null 2>&1; then
13101                 echo "a table of contents needs to be added with '$ar ts'."
13102                 orderlib=false
13103                 ranlib="$ar ts"
13104 else
13105         case "$ranlib" in
13106         :) ranlib='';;
13107         '')
13108                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13109                 $test -f $ranlib || ranlib=''
13110                 ;;
13111         esac
13112         if $test -n "$ranlib"; then
13113                 echo "your system has '$ranlib'; we'll use that."
13114                 orderlib=false
13115         else
13116                 echo "your system doesn't seem to support random libraries"
13117                 echo "so we'll use lorder and tsort to order the libraries."
13118                 orderlib=true
13119                 ranlib=":"
13120         fi
13121 fi
13122 $rm -f foo* bar* 
13123
13124 : check for type of arguments to select. 
13125 case "$selecttype" in
13126 '') case "$d_select" in
13127         $define)
13128                 echo " "
13129                 $cat <<EOM
13130 Checking to see what type of arguments are accepted by select().
13131 EOM
13132                 hdrs="$define sys/types.h
13133                         $i_systime sys/time.h 
13134                         $i_sysselct sys/select.h
13135                         $d_socket sys/socket.h"
13136                 : The first arg can be int, unsigned, or size_t
13137                 : The last arg may or may not be 'const'
13138                 val=''
13139                 : void pointer has been seen but using that
13140                 : breaks the selectminbits test
13141                 for xxx in 'fd_set *' 'int *'; do
13142                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13143                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13144                                         case "$val" in
13145                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13146                                                 if ./protochk "$try" $hdrs; then
13147                                                         echo "Your system accepts $xxx."
13148                                                         val="$xxx"
13149                                                 fi
13150                                                 ;;
13151                                         esac
13152                                 done
13153                         done
13154                 done
13155                 case "$val" in
13156                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13157                         case "$d_fd_set" in
13158                                 $define) dflt="fd_set *" ;;
13159                                 *)              dflt="int *" ;;
13160                         esac
13161                         . ./myread
13162                         val=$ans
13163                         ;;
13164                 esac
13165                 selecttype="$val"
13166                 ;;
13167         *)      : no select, so pick a harmless default
13168                 selecttype='int *'
13169                 ;;
13170         esac
13171         ;;
13172 esac
13173
13174 : check for the select 'width'
13175 case "$selectminbits" in
13176 '') case "$d_select" in
13177         $define)
13178                 $cat <<EOM
13179
13180 Checking to see on how many bits at a time your select() operates...
13181 EOM
13182                 $cat >try.c <<EOCP
13183 #include <sys/types.h>
13184 #$i_time I_TIME
13185 #$i_systime I_SYS_TIME
13186 #$i_systimek I_SYS_TIME_KERNEL
13187 #ifdef I_TIME
13188 #   include <time.h>
13189 #endif
13190 #ifdef I_SYS_TIME
13191 #   ifdef I_SYS_TIME_KERNEL
13192 #       define KERNEL
13193 #   endif
13194 #   include <sys/time.h>
13195 #   ifdef I_SYS_TIME_KERNEL
13196 #       undef KERNEL
13197 #   endif
13198 #endif
13199 #$i_sysselct I_SYS_SELECT
13200 #ifdef I_SYS_SELECT
13201 #include <sys/select.h>
13202 #endif
13203 #$d_socket HAS_SOCKET
13204 #ifdef HAS_SOCKET
13205 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13206 #endif
13207 #include <stdio.h>
13208 $selecttype b;
13209 #define S sizeof(*(b))
13210 #define MINBITS 64
13211 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13212 #define NBITS  (NBYTES * 8)
13213 int main() {
13214     char s[NBYTES];
13215     struct timeval t;
13216     int i;
13217     FILE* fp;
13218     int fd;
13219
13220     fclose(stdin);
13221     fp = fopen("try.c", "r");
13222     if (fp == 0)
13223       exit(1);
13224     fd = fileno(fp);
13225     if (fd < 0)
13226       exit(2);
13227     b = ($selecttype)s;
13228     for (i = 0; i < NBITS; i++)
13229         FD_SET(i, b);
13230     t.tv_sec  = 0;
13231     t.tv_usec = 0;
13232     select(fd + 1, b, 0, 0, &t);
13233     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13234     printf("%d\n", i + 1);
13235     return 0;
13236 }
13237 EOCP
13238                 set try
13239                 if eval $compile_ok; then
13240                         selectminbits=`./try`
13241                         case "$selectminbits" in
13242                         '')     cat >&4 <<EOM
13243 Cannot figure out on how many bits at a time your select() operates.
13244 I'll play safe and guess it is 32 bits.
13245 EOM
13246                                 selectminbits=32
13247                                 bits="32 bits"
13248                                 ;;
13249                         1)      bits="1 bit" ;;
13250                         *)      bits="$selectminbits bits" ;;
13251                         esac
13252                         echo "Your select() operates on $bits at a time." >&4
13253                 else
13254                         rp='What is the minimum number of bits your select() operates on?'
13255                         case "$byteorder" in
13256                         1234|12345678)  dflt=32 ;;
13257                         *)              dflt=1  ;;
13258                         esac
13259                         . ./myread
13260                         val=$ans
13261                         selectminbits="$val"
13262                 fi
13263                 $rm -f try.* try
13264                 ;;
13265         *)      : no select, so pick a harmless default
13266                 selectminbits='32'
13267                 ;;
13268         esac
13269         ;;
13270 esac
13271
13272 : Trace out the files included by signal.h, then look for SIGxxx names.
13273 : Remove SIGARRAYSIZE used by HPUX.
13274 : Remove SIGSTKSIZE used by Linux.
13275 : Remove SIGSTKSZ used by Posix.
13276 : Remove SIGTYP void lines used by OS2.
13277 : Some cpps, like os390, dont give the file name anywhere
13278 if [ "X$fieldn" = X ]; then
13279         : Just make some guesses.  We check them later.
13280         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13281 else
13282         xxx=`echo '#include <signal.h>' |
13283         $cppstdin $cppminus $cppflags 2>/dev/null |
13284         $grep '^[       ]*#.*include' | 
13285         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13286 fi
13287 : Check this list of files to be sure we have parsed the cpp output ok.
13288 : This will also avoid potentially non-existent files, such 
13289 : as ../foo/bar.h
13290 xxxfiles=''
13291 for xx in $xxx /dev/null ; do
13292         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13293 done
13294 : If we have found no files, at least try signal.h
13295 case "$xxxfiles" in
13296 '')     xxxfiles=`./findhdr signal.h` ;;
13297 esac
13298 xxx=`awk '
13299 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13300         print substr($2, 4, 20)
13301 }
13302 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13303         print substr($3, 4, 20)
13304 }' $xxxfiles`
13305 : Append some common names just in case the awk scan failed.
13306 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13307 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13308 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13309 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13310 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13311
13312 : generate a few handy files for later
13313 $cat > signal.c <<'EOCP'
13314 #include <sys/types.h>
13315 #include <signal.h>
13316 #include <stdio.h>
13317 int main() {
13318
13319 /* Strange style to avoid deeply-nested #if/#else/#endif */
13320 #ifndef NSIG
13321 #  ifdef _NSIG
13322 #    define NSIG (_NSIG)
13323 #  endif
13324 #endif
13325
13326 #ifndef NSIG
13327 #  ifdef SIGMAX
13328 #    define NSIG (SIGMAX+1)
13329 #  endif
13330 #endif
13331
13332 #ifndef NSIG
13333 #  ifdef SIG_MAX
13334 #    define NSIG (SIG_MAX+1)
13335 #  endif
13336 #endif
13337
13338 #ifndef NSIG
13339 #  ifdef MAXSIG
13340 #    define NSIG (MAXSIG+1)
13341 #  endif
13342 #endif
13343
13344 #ifndef NSIG
13345 #  ifdef MAX_SIG
13346 #    define NSIG (MAX_SIG+1)
13347 #  endif
13348 #endif
13349
13350 #ifndef NSIG
13351 #  ifdef SIGARRAYSIZE
13352 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13353 #  endif
13354 #endif
13355
13356 #ifndef NSIG
13357 #  ifdef _sys_nsig
13358 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13359 #  endif
13360 #endif
13361
13362 /* Default to some arbitrary number that's big enough to get most
13363    of the common signals.
13364 */
13365 #ifndef NSIG
13366 #    define NSIG 50
13367 #endif
13368
13369 printf("NSIG %d\n", NSIG);
13370
13371 #ifndef JUST_NSIG
13372
13373 EOCP
13374
13375 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13376 {
13377         printf "#ifdef SIG"; printf $1; printf "\n"
13378         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13379         printf $1; printf ");\n"
13380         printf "#endif\n"
13381 }
13382 END {
13383         printf "#endif /* JUST_NSIG */\n";
13384         printf "exit(0);\n}\n";
13385 }
13386 ' >>signal.c
13387 $cat >signal.awk <<'EOP'
13388 BEGIN { ndups = 0 }
13389 $1 ~ /^NSIG$/ { nsig = $2 }
13390 ($1 !~ /^NSIG$/) && (NF == 2) {
13391     if ($2 > maxsig) { maxsig = $2 }
13392     if (sig_name[$2]) {
13393         dup_name[ndups] = $1
13394         dup_num[ndups] = $2
13395         ndups++ 
13396     }
13397     else {
13398         sig_name[$2] = $1
13399         sig_num[$2] = $2
13400     }
13401 }
13402 END { 
13403     if (nsig == 0) {
13404         nsig = maxsig + 1
13405     }
13406     printf("NSIG %d\n", nsig);
13407     for (n = 1; n < nsig; n++) {
13408         if (sig_name[n]) {
13409             printf("%s %d\n", sig_name[n], sig_num[n])
13410         }
13411         else {
13412             printf("NUM%d %d\n", n, n) 
13413         }
13414     }
13415     for (n = 0; n < ndups; n++) {
13416         printf("%s %d\n", dup_name[n], dup_num[n])
13417     }
13418 }
13419 EOP
13420 $cat >signal_cmd <<EOS
13421 $startsh
13422 if $test -s signal.lst; then
13423     echo "Using your existing signal.lst file"
13424         exit 0
13425 fi
13426 xxx="$xxx"
13427 EOS
13428 $cat >>signal_cmd <<'EOS'
13429
13430 set signal
13431 if eval $compile_ok; then
13432         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13433 else
13434         echo "(I can't seem be able to compile the whole test program)" >&4
13435         echo "(I'll try it in little pieces.)" >&4
13436         set signal -DJUST_NSIG
13437         if eval $compile_ok; then
13438                 ./signal$_exe > signal.nsg
13439                 $cat signal.nsg
13440         else
13441                 echo "I can't seem to figure out how many signals you have." >&4
13442                 echo "Guessing 50." >&4
13443                 echo 'NSIG 50' > signal.nsg
13444         fi
13445         : Now look at all the signal names, one at a time.
13446         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13447                 $cat > signal.c <<EOCP
13448 #include <sys/types.h>
13449 #include <signal.h>
13450 #include <stdio.h>
13451 int main() {
13452 printf("$xx %d\n", SIG${xx});
13453 return 0;
13454 }
13455 EOCP
13456                 set signal
13457                 if eval $compile; then
13458                         echo "SIG${xx} found."
13459                         ./signal$_exe  >> signal.ls1
13460                 else
13461                         echo "SIG${xx} NOT found."
13462                 fi
13463         done
13464         if $test -s signal.ls1; then
13465                 $cat signal.nsg signal.ls1 |
13466                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13467         fi
13468
13469 fi
13470 if $test -s signal.lst; then
13471         :
13472 else
13473         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13474         echo 'kill -l' >signal
13475         set X `csh -f <signal`
13476         $rm -f signal
13477         shift
13478         case $# in
13479         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13480         esac
13481         echo $@ | $tr ' ' $trnl | \
13482             $awk '{ printf "%s %d\n", $1, ++s; }
13483                   END { printf "NSIG %d\n", ++s }' >signal.lst
13484 fi
13485 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13486 EOS
13487 chmod a+x signal_cmd
13488 $eunicefix signal_cmd
13489
13490 : generate list of signal names
13491 echo " "
13492 case "$sig_name_init" in
13493 '') doinit=yes ;;
13494 *)  case "$sig_num_init" in
13495     ''|*,*) doinit=yes ;;
13496     esac ;;
13497 esac
13498 case "$doinit" in
13499 yes)
13500         echo "Generating a list of signal names and numbers..." >&4
13501         . ./signal_cmd
13502         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13503         sig_name=`$awk 'BEGIN { printf "ZERO " }
13504                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13505         sig_num=`$awk  'BEGIN { printf "0 " }
13506                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13507         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13508                              !/^NSIG/   { printf "\"%s\", ", $1 }
13509                              END        { printf "0\n" }' signal.lst`
13510         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13511                              !/^NSIG/   { printf "%d, ", $2}
13512                              END        { printf "0\n"}' signal.lst`
13513         ;;
13514 esac
13515 echo "The following $sig_count signals are available:"
13516 echo " "
13517 echo $sig_name | $awk \
13518 'BEGIN { linelen = 0 }
13519 {
13520         for (i = 1; i <= NF; i++) {
13521                 name = "SIG" $i " "
13522                 linelen = linelen + length(name)
13523                 if (linelen > 70) {
13524                         printf "\n"
13525                         linelen = length(name)
13526                 }
13527                 printf "%s", name
13528         }
13529         printf "\n"
13530 }'
13531 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13532
13533 : check for socklen_t
13534 echo " "
13535 echo "Checking to see if you have socklen_t..." >&4
13536 $cat >try.c <<EOCP
13537 #include <sys/types.h>
13538 #$d_socket HAS_SOCKET
13539 #ifdef HAS_SOCKET
13540 #include <sys/socket.h>
13541 #endif
13542 int main() { socklen_t x = 16; }
13543 EOCP
13544 set try
13545 if eval $compile; then
13546         val="$define"
13547         echo "You have socklen_t."
13548 else
13549         val="$undef"
13550         echo "You do not have socklen_t."
13551         case "$sizetype" in
13552         size_t) echo "(You do have size_t, that might work.)" ;;
13553         esac
13554 fi
13555 $rm -f try try.*
13556 set d_socklen_t
13557 eval $setvar
13558
13559 : check for type of the size argument to socket calls
13560 case "$d_socket" in
13561 "$define")
13562         $cat <<EOM
13563
13564 Checking to see what type is the last argument of accept().
13565 EOM
13566         hdrs="$define sys/types.h $d_socket sys/socket.h" 
13567         yyy=''
13568         case "$d_socklen_t" in
13569         "$define") yyy="$yyy socklen_t"
13570         esac
13571         yyy="$yyy $sizetype int long"
13572         for xxx in $yyy; do
13573                 case "$socksizetype" in
13574                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
13575                         if ./protochk "$try" $hdrs; then
13576                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
13577                                 socksizetype="$xxx"
13578                         fi
13579                         ;;
13580                 esac
13581         done
13582 : In case none of those worked, prompt the user.
13583         case "$socksizetype" in
13584         '')     rp='What is the type for the last argument to accept()?'
13585                 dflt='int'
13586                 . ./myread
13587                 socksizetype=$ans
13588                 ;;
13589         esac
13590         ;;
13591 *)      : no sockets, so pick relatively harmless defaults
13592         socksizetype='char *'
13593         ;;
13594 esac
13595
13596 : see what type is used for signed size_t
13597 set ssize_t ssizetype int stdio.h sys/types.h
13598 eval $typedef
13599 dflt="$ssizetype"
13600 $cat > ssize.c <<EOM
13601 #include <stdio.h>
13602 #include <sys/types.h>
13603 #define Size_t $sizetype
13604 #define SSize_t $dflt
13605 int main()
13606 {
13607         if (sizeof(Size_t) == sizeof(SSize_t))
13608                 printf("$dflt\n");
13609         else if (sizeof(Size_t) == sizeof(int))
13610                 printf("int\n");
13611         else 
13612                 printf("long\n");
13613         exit(0);
13614 }
13615 EOM
13616 echo " "
13617 set ssize
13618 if eval $compile_ok && ./ssize > /dev/null; then
13619         ssizetype=`./ssize`
13620         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13621 else
13622         $cat >&4 <<EOM
13623 Help! I can't compile and run the ssize_t test program: please enlighten me!
13624 (This is probably a misconfiguration in your system or libraries, and
13625 you really ought to fix it.  Still, I'll try anyway.)
13626
13627 I need a type that is the same size as $sizetype, but is guaranteed to
13628 be signed.  Common values are ssize_t, int and long.
13629
13630 EOM
13631         rp="What signed type is the same size as $sizetype?"
13632         . ./myread
13633         ssizetype="$ans"
13634 fi
13635 $rm -f ssize ssize.*
13636
13637 : see what type of char stdio uses.
13638 echo " "
13639 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13640         echo "Your stdio uses unsigned chars." >&4
13641         stdchar="unsigned char"
13642 else
13643         echo "Your stdio uses signed chars." >&4
13644         stdchar="char"
13645 fi
13646
13647 : see if time exists
13648 echo " "
13649 if test "X$d_time" = X -o X"$timetype" = X; then
13650     if set time val -f d_time; eval $csym; $val; then
13651                 echo 'time() found.' >&4
13652                 val="$define"
13653                 rp="What is the type returned by time() on this system?"
13654                 set time_t timetype long stdio.h sys/types.h
13655                 eval $typedef_ask
13656     else
13657                 echo 'time() not found, hope that will do.' >&4
13658                 val="$undef"
13659                 timetype='int';
13660     fi
13661     set d_time
13662     eval $setvar
13663 fi
13664
13665 : see what type uids are declared as in the kernel
13666 echo " "
13667 echo "Looking for the type for user ids returned by getuid()."
13668 set uid_t uidtype xxx stdio.h sys/types.h
13669 eval $typedef
13670 case "$uidtype" in
13671 xxx)
13672         xxx=`./findhdr sys/user.h`
13673         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13674         case $1 in
13675         unsigned) dflt="$1 $2" ;;
13676         *) dflt="$1" ;;
13677         esac
13678         ;;
13679 *) dflt="$uidtype";;
13680 esac
13681 case "$uidtype" in
13682 uid_t)  echo "uid_t found." ;;
13683 *)      rp="What is the type for user ids returned by getuid()?"
13684         . ./myread
13685         uidtype="$ans"
13686         ;;
13687 esac
13688
13689 echo " "
13690 case "$uidtype" in
13691 *_t) zzz="$uidtype"     ;;
13692 *)   zzz="uid"          ;;
13693 esac
13694 echo "Checking the size of $zzz..." >&4 
13695 cat > try.c <<EOCP
13696 #include <sys/types.h>
13697 #include <stdio.h>
13698 int main() {
13699     printf("%d\n", (int)sizeof($uidtype));
13700     exit(0);
13701 }
13702 EOCP
13703 set try
13704 if eval $compile_ok; then
13705         yyy=`./try`
13706         case "$yyy" in
13707         '')     uidsize=4
13708                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13709                 ;;
13710         *)      uidsize=$yyy
13711                 echo "Your $zzz is $uidsize bytes long."
13712                 ;;
13713         esac
13714 else
13715         uidsize=4
13716         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13717 fi
13718
13719 echo " "
13720 case "$uidtype" in
13721 *_t) zzz="$uidtype"     ;;
13722 *)   zzz="uid"          ;;
13723 esac
13724 echo "Checking the sign of $zzz..." >&4
13725 cat > try.c <<EOCP
13726 #include <sys/types.h>
13727 #include <stdio.h>
13728 int main() {
13729         $uidtype foo = -1;
13730         if (foo < 0)
13731                 printf("-1\n");
13732         else
13733                 printf("1\n");
13734 }
13735 EOCP
13736 set try
13737 if eval $compile; then
13738         yyy=`./try`
13739         case "$yyy" in
13740         '')     uidsign=1
13741                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13742                 ;;
13743         *)      uidsign=$yyy
13744                 case "$uidsign" in
13745                  1) echo "Your $zzz is unsigned." ;;
13746                 -1) echo "Your $zzz is signed."   ;;
13747                 esac
13748                 ;;
13749         esac
13750 else
13751         uidsign=1
13752         echo "(I can't compile the test program--guessing unsigned.)" >&4
13753 fi
13754
13755
13756
13757 echo " "
13758 $echo "Checking the format string to be used for uids..." >&4
13759
13760 case "$uidsign" in
13761 -1)     if $test X"$uidsize" = X"$ivsize"; then
13762                 uidformat="$ivdformat"
13763         else
13764                 if $test X"$uidsize" = X"$longsize"; then
13765                         uidformat='"ld"'
13766                 else
13767                         if $test X"$uidsize" = X"$intsize"; then
13768                                 uidformat='"d"'
13769                         else
13770                                 if $test X"$uidsize" = X"$shortsize"; then
13771                                         uidformat='"hd"'
13772                                 fi
13773                         fi
13774                 fi
13775         fi
13776         ;;
13777 *)      if $test X"$uidsize" = X"$uvsize"; then
13778                 uidformat="$uvuformat"
13779         else
13780                 if $test X"$uidsize" = X"$longsize"; then
13781                         uidformat='"lu"'
13782                 else
13783                         if $test X"$uidsize" = X"$intsize"; then
13784                                 uidformat='"u"'
13785                         else
13786                                 if $test X"$uidsize" = X"$shortsize"; then
13787                                         uidformat='"hu"'
13788                                 fi
13789                         fi
13790                 fi
13791         fi
13792         ;;
13793 esac
13794
13795 : see if dbm.h is available
13796 : see if dbmclose exists
13797 set dbmclose d_dbmclose
13798 eval $inlibc
13799
13800 case "$d_dbmclose" in
13801 $define)
13802         set dbm.h i_dbm
13803         eval $inhdr
13804         case "$i_dbm" in
13805         $define)
13806                 val="$undef"
13807                 set i_rpcsvcdbm
13808                 eval $setvar
13809                 ;;
13810         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13811                 eval $inhdr
13812                 ;;
13813         esac
13814         ;;
13815 *)      echo "We won't be including <dbm.h>"
13816         val="$undef"
13817         set i_dbm
13818         eval $setvar
13819         val="$undef"
13820         set i_rpcsvcdbm
13821         eval $setvar
13822         ;;
13823 esac
13824
13825 : see if this is a sys/file.h system
13826 val=''
13827 set sys/file.h val
13828 eval $inhdr
13829
13830 : do we need to include sys/file.h ?
13831 case "$val" in
13832 "$define")
13833         echo " "
13834         if $h_sysfile; then
13835                 val="$define"
13836                 echo "We'll be including <sys/file.h>." >&4
13837         else
13838                 val="$undef"
13839                 echo "We won't be including <sys/file.h>." >&4
13840         fi
13841         ;;
13842 *)
13843         h_sysfile=false
13844         ;;
13845 esac
13846 set i_sysfile
13847 eval $setvar
13848
13849 : see if fcntl.h is there
13850 val=''
13851 set fcntl.h val
13852 eval $inhdr
13853
13854 : see if we can include fcntl.h
13855 case "$val" in
13856 "$define")
13857         echo " "
13858         if $h_fcntl; then
13859                 val="$define"
13860                 echo "We'll be including <fcntl.h>." >&4
13861         else
13862                 val="$undef"
13863                 if $h_sysfile; then
13864         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13865                 else
13866                         echo "We won't be including <fcntl.h>." >&4
13867                 fi
13868         fi
13869         ;;
13870 *)
13871         h_fcntl=false
13872         val="$undef"
13873         ;;
13874 esac
13875 set i_fcntl
13876 eval $setvar
13877
13878 : see if this is a iconv.h system
13879 set iconv.h i_iconv
13880 eval $inhdr
13881
13882 : see if locale.h is available
13883 set locale.h i_locale
13884 eval $inhdr
13885
13886 : see if mach cthreads are available
13887 if test "X$usethreads" = "X$define"; then
13888         set mach/cthreads.h i_machcthr
13889         eval $inhdr
13890 else
13891         i_machcthr="$undef"
13892 fi
13893
13894
13895
13896 : see if this is a math.h system
13897 set math.h i_math
13898 eval $inhdr
13899
13900 : see if this is a mntent.h system
13901 set mntent.h i_mntent
13902 eval $inhdr
13903
13904 : see if ndbm.h is available
13905 set ndbm.h t_ndbm
13906 eval $inhdr
13907 case "$t_ndbm" in
13908 $define)
13909         : see if dbm_open exists
13910         set dbm_open d_dbm_open
13911         eval $inlibc
13912         case "$d_dbm_open" in
13913         $undef)
13914                 t_ndbm="$undef"
13915                 echo "We won't be including <ndbm.h>"
13916                 ;;
13917         esac
13918         ;;
13919 esac
13920 val="$t_ndbm"
13921 set i_ndbm
13922 eval $setvar
13923
13924 : see if net/errno.h is available
13925 val=''
13926 set net/errno.h val
13927 eval $inhdr
13928
13929 : Unfortunately, it causes problems on some systems.  Arrgh.
13930 case "$val" in
13931 $define)
13932         cat > try.c <<'EOM'
13933 #include <stdio.h>
13934 #include <errno.h>
13935 #include <net/errno.h>
13936 int func()
13937 {
13938         return ENOTSOCK;
13939 }
13940 EOM
13941         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13942                 echo "We'll be including <net/errno.h>." >&4
13943         else
13944                 echo "We won't be including <net/errno.h>." >&4
13945                 val="$undef"
13946         fi
13947         $rm -f try.* try
13948         ;;
13949 esac
13950 set i_neterrno
13951 eval $setvar
13952
13953 : see if netinet/tcp.h is available
13954 set netinet/tcp.h i_netinettcp
13955 eval $inhdr
13956
13957 : see if this is a poll.h system
13958 set poll.h i_poll
13959 eval $inhdr
13960
13961 echo " "
13962 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13963 $cat <<'EOSH' > Cppsym.know
13964 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13965 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13966 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13967 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13968 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13969 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13970 bull c cadmus clipper CMU COFF COMPILER_VERSION
13971 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13972 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13973 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13974 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13975 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13976 H3050R H3050RX hbullx20 hcx host_mips
13977 hp200 hp300 hp700 HP700 hp800 hp9000
13978 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13979 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13980 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13981 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13982 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13983 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13984 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13985 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13986 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13987 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13988 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13989 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13990 MATH_HAS_NO_SIDE_EFFECTS
13991 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13992 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13993 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13994 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13995 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13996 NetBSD news1500 news1700 news1800 news1900 news3700
13997 news700 news800 news900 NeXT NLS ns16000 ns32000
13998 ns32016 ns32332 ns32k nsc32000
13999 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14000 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14001 pc532 pdp11 PGC PIC plexus PORTAR posix
14002 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14003 POSIX_C_SOURCE POSIX_SOURCE POWER
14004 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14005 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14006 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14007 sony sony_news sonyrisc sparc sparclite spectrum
14008 stardent stdc STDC_EXT stratos sun sun3 sun386
14009 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14010 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14011 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14012 sysV68 sysV88 Tek4132 Tek4300 titan
14013 tower tower32 tower32_200 tower32_600 tower32_700
14014 tower32_800 tower32_850 tss
14015 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14016 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14017 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14018 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14019 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14020 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14021 z8000
14022 EOSH
14023 # Maybe put other stuff here too.
14024 cat <<EOSH >>Cppsym.know
14025 $osname
14026 EOSH
14027 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14028 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14029 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
14030 $rm -f Cppsym.a Cppsym.b
14031 cat <<EOSH > Cppsym
14032 $startsh
14033 if $test \$# -gt 0; then
14034     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14035     if $test -s Cppsym.got; then
14036         $rm -f Cppsym.got
14037         exit 0
14038     fi
14039     $rm -f Cppsym.got
14040     exit 1
14041 else
14042     $tr " " "$trnl" | ./Cppsym.try
14043     exit 0
14044 fi
14045 EOSH
14046 chmod +x Cppsym
14047 $eunicefix Cppsym
14048 cat <<EOSH > Cppsym.try
14049 $startsh
14050 cat <<'EOCP' > try.c
14051 #include <stdio.h>
14052 int main() {
14053 EOCP
14054 $awk \\
14055 EOSH
14056 cat <<'EOSH' >> Cppsym.try
14057 'length($1) > 0 {
14058     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
14059     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
14060     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
14061     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
14062 }'       >> try.c
14063 echo '}' >> try.c
14064 EOSH
14065 cat <<EOSH >> Cppsym.try
14066 cc="$cc"
14067 optimize="$optimize"
14068 ccflags="$ccflags"
14069 ldflags="$ldflags"
14070 libs="$libs"
14071 exe_ext="$exe_ext"
14072 $cc $optimize $ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14073 EOSH
14074 chmod +x Cppsym.try
14075 $eunicefix Cppsym.try
14076 ./Cppsym < Cppsym.know > Cppsym.true
14077 : now check the C compiler for additional symbols
14078 postprocess_cc_v=''
14079 case "$osname" in
14080 aix) postprocess_cc_v="|$tr , ' '" ;;
14081 esac
14082 $cat >ccsym <<EOS
14083 $startsh
14084 $cat >tmp.c <<EOF
14085 extern int foo;
14086 EOF
14087 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14088 do
14089         case "\$i" in
14090         -D*) echo "\$i" | $sed 's/^-D//';;
14091         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14092         esac
14093 done
14094 $rm -f try.c
14095 EOS
14096 postprocess_cc_v=''
14097 chmod +x ccsym
14098 $eunicefix ccsym
14099 ./ccsym > ccsym1.raw
14100 if $test -s ccsym1.raw; then
14101        $sort ccsym1.raw | $uniq >ccsym.raw
14102 else
14103        mv ccsym1.raw ccsym.raw
14104 fi
14105
14106 $awk '/\=/ { print $0; next }
14107         { print $0"=1" }' ccsym.raw >ccsym.list
14108 $awk '/\=/ { print $0; next }
14109         { print $0"=1" }' Cppsym.true >ccsym.true
14110 $comm -13 ccsym.true ccsym.list >ccsym.own
14111 $comm -12 ccsym.true ccsym.list >ccsym.com
14112 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14113 also=''
14114 if $test -z ccsym.raw; then
14115         echo "Your C compiler doesn't seem to define any symbols!" >&4
14116         echo " "
14117         echo "However, your C preprocessor defines the following symbols:"
14118         $cat Cppsym.true
14119         ccsymbols=''
14120         cppsymbols=`$cat Cppsym.true`
14121         cppsymbols=`echo $cppsymbols`
14122         cppccsymbols="$cppsymbols"
14123 else
14124         if $test -s ccsym.com; then
14125                 echo "Your C compiler and pre-processor define these symbols:"
14126                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
14127                 also='also '
14128                 symbols='ones'
14129                 cppccsymbols=`$cat ccsym.com`
14130                 cppccsymbols=`echo $cppccsymbols`
14131                 $test "$silent" || sleep 1
14132         fi
14133         if $test -s ccsym.cpp; then
14134                 $test "$also" && echo " "
14135                 echo "Your C pre-processor ${also}defines the following symbols:"
14136                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
14137                 also='further '
14138                 cppsymbols=`$cat ccsym.cpp`
14139                 cppsymbols=`echo $cppsymbols`
14140                 $test "$silent" || sleep 1
14141         fi
14142         if $test -s ccsym.own; then
14143                 $test "$also" && echo " "
14144                 echo "Your C compiler ${also}defines the following cpp symbols:"
14145                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
14146                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14147                 ccsymbols=`$cat ccsym.own`
14148                 ccsymbols=`echo $ccsymbols`
14149                 $test "$silent" || sleep 1
14150         fi
14151 fi
14152 $rm -f ccsym*
14153
14154 : see if this is a termio system
14155 val="$undef"
14156 val2="$undef"
14157 val3="$undef"
14158 if $test `./findhdr termios.h`; then
14159         set tcsetattr i_termios
14160         eval $inlibc
14161         val3="$i_termios"
14162 fi
14163 echo " "
14164 case "$val3" in
14165 "$define") echo "You have POSIX termios.h... good!" >&4;;
14166 *) if ./Cppsym pyr; then
14167                 case "`/bin/universe`" in
14168                 ucb) if $test `./findhdr sgtty.h`; then
14169                                 val2="$define"
14170                                 echo "<sgtty.h> found." >&4
14171                         else
14172                                 echo "System is pyramid with BSD universe."
14173                                 echo "<sgtty.h> not found--you could have problems." >&4
14174                         fi;;
14175                 *) if $test `./findhdr termio.h`; then
14176                                 val="$define"
14177                                 echo "<termio.h> found." >&4
14178                         else
14179                                 echo "System is pyramid with USG universe."
14180                                 echo "<termio.h> not found--you could have problems." >&4
14181                         fi;;
14182                 esac
14183         elif ./usg; then
14184                 if $test `./findhdr termio.h`; then
14185                         echo "<termio.h> found." >&4
14186                         val="$define"
14187                 elif $test `./findhdr sgtty.h`; then
14188                         echo "<sgtty.h> found." >&4
14189                         val2="$define"
14190                 else
14191 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14192                 fi
14193         else
14194                 if $test `./findhdr sgtty.h`; then
14195                         echo "<sgtty.h> found." >&4
14196                         val2="$define"
14197                 elif $test `./findhdr termio.h`; then
14198                         echo "<termio.h> found." >&4
14199                         val="$define"
14200                 else
14201 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14202                 fi
14203         fi;;
14204 esac
14205 set i_termio; eval $setvar
14206 val=$val2; set i_sgtty; eval $setvar
14207 val=$val3; set i_termios; eval $setvar
14208
14209 : see if this is a shadow.h system
14210 set shadow.h i_shadow
14211 eval $inhdr
14212
14213 : see if this is a socks.h system
14214 set socks.h i_socks
14215 eval $inhdr
14216
14217 : see if stdarg is available
14218 echo " "
14219 if $test `./findhdr stdarg.h`; then
14220         echo "<stdarg.h> found." >&4
14221         valstd="$define"
14222 else
14223         echo "<stdarg.h> NOT found." >&4
14224         valstd="$undef"
14225 fi
14226
14227 : see if varags is available
14228 echo " "
14229 if $test `./findhdr varargs.h`; then
14230         echo "<varargs.h> found." >&4
14231 else
14232         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14233 fi
14234
14235 : set up the varargs testing programs
14236 $cat > varargs.c <<EOP
14237 #ifdef I_STDARG
14238 #include <stdarg.h>
14239 #endif
14240 #ifdef I_VARARGS
14241 #include <varargs.h>
14242 #endif
14243
14244 #ifdef I_STDARG
14245 int f(char *p, ...)
14246 #else
14247 int f(va_alist)
14248 va_dcl
14249 #endif
14250 {
14251         va_list ap;
14252 #ifndef I_STDARG
14253         char *p;
14254 #endif
14255 #ifdef I_STDARG
14256         va_start(ap,p);
14257 #else
14258         va_start(ap);
14259         p = va_arg(ap, char *);
14260 #endif
14261         va_end(ap);
14262 }
14263 EOP
14264 $cat > varargs <<EOP
14265 $startsh
14266 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14267         echo "true"
14268 else
14269         echo "false"
14270 fi
14271 $rm -f varargs$_o
14272 EOP
14273 chmod +x varargs
14274
14275 : now check which varargs header should be included
14276 echo " "
14277 i_varhdr=''
14278 case "$valstd" in
14279 "$define")
14280         if `./varargs I_STDARG`; then
14281                 val='stdarg.h'
14282         elif `./varargs I_VARARGS`; then
14283                 val='varargs.h'
14284         fi
14285         ;;
14286 *)
14287         if `./varargs I_VARARGS`; then
14288                 val='varargs.h'
14289         fi
14290         ;;
14291 esac
14292 case "$val" in
14293 '')
14294 echo "I could not find the definition for va_dcl... You have problems..." >&4
14295         val="$undef"; set i_stdarg; eval $setvar
14296         val="$undef"; set i_varargs; eval $setvar
14297         ;;
14298 *) 
14299         set i_varhdr
14300         eval $setvar
14301         case "$i_varhdr" in
14302         stdarg.h)
14303                 val="$define"; set i_stdarg; eval $setvar
14304                 val="$undef"; set i_varargs; eval $setvar
14305                 ;;
14306         varargs.h)
14307                 val="$undef"; set i_stdarg; eval $setvar
14308                 val="$define"; set i_varargs; eval $setvar
14309                 ;;
14310         esac
14311         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14312 esac
14313 $rm -f varargs*
14314
14315 : see if stddef is available
14316 set stddef.h i_stddef
14317 eval $inhdr
14318
14319 : see if sys/access.h is available
14320 set sys/access.h i_sysaccess
14321 eval $inhdr
14322
14323 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14324 set sys/filio.h i_sysfilio
14325 eval $inhdr
14326 echo " "
14327 if $test `./findhdr sys/ioctl.h`; then
14328         val="$define"
14329         echo '<sys/ioctl.h> found.' >&4
14330 else
14331         val="$undef"
14332         if $test $i_sysfilio = "$define"; then
14333             echo '<sys/ioctl.h> NOT found.' >&4
14334         else
14335                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14336                 $test $i_termio = "$define" && xxx="termio.h"
14337                 $test $i_termios = "$define" && xxx="termios.h"
14338 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14339         fi
14340 fi
14341 set i_sysioctl
14342 eval $setvar
14343
14344
14345 : see if this is a syslog.h system
14346 set syslog.h i_syslog
14347 eval $inhdr
14348
14349
14350 : see if this is a sys/mode.h system
14351 set sys/mode.h i_sysmode
14352 eval $inhdr
14353
14354 : see if sys/resource.h has to be included
14355 set sys/resource.h i_sysresrc
14356 eval $inhdr
14357
14358 : see if sys/security.h is available
14359 set sys/security.h i_syssecrt
14360 eval $inhdr
14361
14362 : see if this is a sys/statvfs.h system
14363 set sys/statvfs.h i_sysstatvfs
14364 eval $inhdr
14365
14366 : see if this is a sys/uio.h system
14367 set sys/uio.h i_sysuio
14368 eval $inhdr
14369
14370 : see if this is a sys/un.h system
14371 set sys/un.h i_sysun
14372 eval $inhdr
14373
14374
14375 : see if this is a sys/utsname.h system
14376 set sys/utsname.h i_sysutsname
14377 eval $inhdr
14378
14379 : see if this is a syswait system
14380 set sys/wait.h i_syswait
14381 eval $inhdr
14382
14383 : see if this is a ustat.h system
14384 set ustat.h i_ustat
14385 eval $inhdr
14386
14387 : see if this is an utime system
14388 set utime.h i_utime
14389 eval $inhdr
14390
14391 : see if this is a values.h system
14392 set values.h i_values
14393 eval $inhdr
14394
14395 : see if this is a vfork system
14396 case "$d_vfork" in
14397 "$define")
14398         set vfork.h i_vfork
14399         eval $inhdr
14400         ;;
14401 *)
14402         i_vfork="$undef"
14403         ;;
14404 esac
14405
14406 : see if gdbm.h is available
14407 set gdbm.h t_gdbm
14408 eval $inhdr
14409 case "$t_gdbm" in
14410 $define)
14411         : see if gdbm_open exists
14412         set gdbm_open d_gdbm_open
14413         eval $inlibc
14414         case "$d_gdbm_open" in
14415         $undef)
14416                 t_gdbm="$undef"
14417                 echo "We won't be including <gdbm.h>"
14418                 ;;
14419         esac
14420         ;;
14421 esac
14422 val="$t_gdbm"
14423 set i_gdbm
14424 eval $setvar
14425
14426 echo " "
14427 echo "Looking for extensions..." >&4
14428 : If we are using the old config.sh, known_extensions may contain
14429 : old or inaccurate or duplicate values.
14430 known_extensions=''
14431 nonxs_extensions=''
14432 : We do not use find because it might not be available.
14433 : We do not just use MANIFEST because the user may have dropped
14434 : some additional extensions into the source tree and expect them
14435 : to be built.
14436
14437 : Function to recursively find available extensions, ignoring DynaLoader
14438 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14439 find_extensions='
14440     for xxx in *; do
14441        case "$xxx" in
14442            DynaLoader|dynaload) ;;
14443            *)
14444            if $test -f $xxx/$xxx.xs; then
14445                known_extensions="$known_extensions $1$xxx";
14446            elif $test -f $xxx/Makefile.PL; then
14447                nonxs_extensions="$nonxs_extensions $1$xxx";
14448            else
14449                if $test -d $xxx -a $# -lt 10; then
14450                    set $1$xxx/ $*;
14451                    cd $xxx;
14452                    eval $find_extensions;
14453                    cd ..;
14454                    shift;
14455                fi;
14456            fi
14457            ;;
14458        esac;
14459     done'
14460 tdir=`pwd`
14461 cd $rsrc/ext
14462 set X
14463 shift
14464 eval $find_extensions
14465 set X $nonxs_extensions
14466 shift
14467 nonxs_extensions="$*"
14468 set X $known_extensions
14469 shift
14470 known_extensions="$*"
14471 cd $tdir
14472
14473 : Now see which are supported on this system.
14474 avail_ext=''
14475 for xxx in $known_extensions ; do
14476         case "$xxx" in
14477         DB_File|db_file)
14478                 case "$i_db" in
14479                 $define) avail_ext="$avail_ext $xxx" ;;
14480                 esac
14481                 ;;
14482         GDBM_File|gdbm_fil)
14483                 case "$i_gdbm" in 
14484                 $define) avail_ext="$avail_ext $xxx" ;;
14485                 esac
14486                 ;;
14487         NDBM_File|ndbm_fil)
14488                 case "$i_ndbm" in
14489                 $define)
14490                     case "$osname-$use64bitint" in
14491                     hpux-define)
14492                         case "$libs" in
14493                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14494                         esac
14495                         ;;
14496                     *) avail_ext="$avail_ext $xxx" ;;
14497                     esac
14498                     ;;
14499                 esac
14500                 ;;
14501         ODBM_File|odbm_fil) 
14502                 case "${i_dbm}${i_rpcsvcdbm}" in
14503                 *"${define}"*)
14504                     case "$osname-$use64bitint" in
14505                     hpux-define)
14506                         case "$libs" in
14507                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14508                         esac
14509                         ;;
14510                     *) avail_ext="$avail_ext $xxx" ;;
14511                     esac
14512                     ;;
14513                 esac
14514                 ;;
14515         POSIX|posix)
14516                 case "$useposix" in
14517                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14518                 esac
14519                 ;;
14520         Opcode|opcode)
14521                 case "$useopcode" in
14522                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14523                 esac
14524                 ;;
14525         Socket|socket)
14526                 case "$d_socket" in 
14527                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14528                 esac
14529                 ;;
14530         Thread|thread)
14531                 case "$usethreads" in 
14532                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14533                 esac
14534                 ;;
14535         IPC/SysV|ipc/sysv)
14536                 : XXX Do we need a useipcsysv variable here
14537                 case "${d_msg}${d_sem}${d_shm}" in 
14538                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14539                 esac
14540                 ;;
14541         *)      avail_ext="$avail_ext $xxx"
14542                 ;;
14543         esac
14544 done
14545
14546 set X $avail_ext
14547 shift
14548 avail_ext="$*"
14549
14550 : Now see which nonxs extensions are supported on this system.
14551 : For now assume all are.
14552 nonxs_ext=''
14553 for xxx in $nonxs_extensions ; do
14554         case "$xxx" in
14555         *)      nonxs_ext="$nonxs_ext $xxx"
14556                 ;;
14557         esac
14558 done
14559
14560 set X $nonxs_ext
14561 shift
14562 nonxs_ext="$*"
14563
14564 case $usedl in
14565 $define)
14566         $cat <<EOM
14567 A number of extensions are supplied with $package.  You may choose to
14568 compile these extensions for dynamic loading (the default), compile
14569 them into the $package executable (static loading), or not include
14570 them at all.  Answer "none" to include no extensions.
14571 Note that DynaLoader is always built and need not be mentioned here.
14572
14573 EOM
14574         case "$dynamic_ext" in
14575         '') dflt="$avail_ext" ;;
14576         *)      dflt="$dynamic_ext"
14577                 # Perhaps we are reusing an old out-of-date config.sh.
14578                 case "$hint" in
14579                 previous)
14580                         if test X"$dynamic_ext" != X"$avail_ext"; then
14581                                 $cat <<EOM
14582 NOTICE:  Your previous config.sh list may be incorrect. 
14583 The extensions now available to you are 
14584         ${avail_ext}
14585 but the default list from your previous config.sh is
14586         ${dynamic_ext} 
14587
14588 EOM
14589                         fi
14590                         ;;
14591                 esac
14592                 ;;
14593         esac
14594         case "$dflt" in
14595         '')     dflt=none;;
14596         esac
14597         rp="What extensions do you wish to load dynamically?"
14598         . ./myread
14599         case "$ans" in
14600         none) dynamic_ext=' ' ;;
14601         *) dynamic_ext="$ans" ;;
14602         esac
14603
14604         case "$static_ext" in
14605         '')
14606                 : Exclude those already listed in dynamic linking
14607                 dflt=''
14608                 for xxx in $avail_ext; do
14609                         case " $dynamic_ext " in
14610                         *" $xxx "*) ;;
14611                         *) dflt="$dflt $xxx" ;;
14612                         esac
14613                 done
14614                 set X $dflt
14615                 shift
14616                 dflt="$*"
14617                 ;;
14618         *)  dflt="$static_ext" 
14619                 ;;
14620         esac
14621
14622         case "$dflt" in
14623         '')     dflt=none;;
14624         esac
14625         rp="What extensions do you wish to load statically?"
14626         . ./myread
14627         case "$ans" in
14628         none) static_ext=' ' ;;
14629         *) static_ext="$ans" ;;
14630         esac
14631         ;;
14632 *)
14633         $cat <<EOM
14634 A number of extensions are supplied with $package.  Answer "none" 
14635 to include no extensions. 
14636 Note that DynaLoader is always built and need not be mentioned here.
14637
14638 EOM
14639         case "$static_ext" in
14640         '') dflt="$avail_ext" ;;
14641         *)      dflt="$static_ext"
14642                 # Perhaps we are reusing an old out-of-date config.sh.
14643                 case "$hint" in
14644                 previous)
14645                         if test X"$static_ext" != X"$avail_ext"; then
14646                                 $cat <<EOM
14647 NOTICE:  Your previous config.sh list may be incorrect. 
14648 The extensions now available to you are 
14649         ${avail_ext}
14650 but the default list from your previous config.sh is
14651         ${static_ext} 
14652
14653 EOM
14654                         fi
14655                         ;;
14656                 esac
14657                 ;;
14658         esac
14659         : Exclude those that are not xs extensions
14660         case "$dflt" in
14661         '')     dflt=none;;
14662         esac
14663         rp="What extensions do you wish to include?"
14664         . ./myread
14665         case "$ans" in
14666         none) static_ext=' ' ;;
14667         *) static_ext="$ans" ;;
14668         esac
14669         ;;
14670 esac
14671
14672 set X $dynamic_ext $static_ext $nonxs_ext
14673 shift
14674 extensions="$*"
14675
14676 : Remove build directory name from cppstdin so it can be used from
14677 : either the present location or the final installed location.
14678 echo " "
14679 : Get out of the UU directory to get correct path name.
14680 cd ..
14681 case "$cppstdin" in
14682 `pwd`/cppstdin)
14683         echo "Stripping down cppstdin path name"
14684         cppstdin=cppstdin
14685         ;;
14686 esac
14687 cd UU
14688
14689 : end of configuration questions
14690 echo " "
14691 echo "End of configuration questions."
14692 echo " "
14693
14694 : back to where it started
14695 if test -d ../UU; then
14696         cd ..
14697 fi
14698
14699 : configuration may be patched via a 'config.over' file
14700 if $test -f config.over; then
14701         echo " "
14702         dflt=y
14703         rp='I see a config.over file.  Do you wish to load it?'
14704         . UU/myread
14705         case "$ans" in
14706         n*) echo "OK, I'll ignore it.";;
14707         *)      . ./config.over
14708                 echo "Configuration override changes have been loaded."
14709                 ;;
14710         esac
14711 fi
14712
14713 : in case they want portability, strip down executable paths
14714 case "$d_portable" in
14715 "$define")
14716         echo " "
14717         echo "Stripping down executable paths..." >&4
14718         for file in $loclist $trylist; do
14719                 eval temp=\$$file
14720                 eval $file=`basename $temp`
14721         done
14722         ;;
14723 esac
14724
14725 : create config.sh file
14726 echo " "
14727 echo "Creating config.sh..." >&4
14728 $spitshell <<EOT >config.sh
14729 $startsh
14730 #
14731 # This file was produced by running the Configure script. It holds all the
14732 # definitions figured out by Configure. Should you modify one of these values,
14733 # do not forget to propagate your changes by running "Configure -der". You may
14734 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14735 #
14736
14737 # Package name      : $package
14738 # Source directory  : $src
14739 # Configuration time: $cf_time
14740 # Configured by     : $cf_by
14741 # Target system     : $myuname
14742
14743 Author='$Author'
14744 Date='$Date'
14745 Header='$Header'
14746 Id='$Id'
14747 Locker='$Locker'
14748 Log='$Log'
14749 Mcc='$Mcc'
14750 RCSfile='$RCSfile'
14751 Revision='$Revision'
14752 Source='$Source'
14753 State='$State'
14754 _a='$_a'
14755 _exe='$_exe'
14756 _o='$_o'
14757 afs='$afs'
14758 alignbytes='$alignbytes'
14759 ansi2knr='$ansi2knr'
14760 aphostname='$aphostname'
14761 api_revision='$api_revision'
14762 api_subversion='$api_subversion'
14763 api_version='$api_version'
14764 api_versionstring='$api_versionstring'
14765 ar='$ar'
14766 archlib='$archlib'
14767 archlibexp='$archlibexp'
14768 archname64='$archname64'
14769 archname='$archname'
14770 archobjs='$archobjs'
14771 awk='$awk'
14772 baserev='$baserev'
14773 bash='$bash'
14774 bin='$bin'
14775 bincompat5005='$bincompat5005'
14776 binexp='$binexp'
14777 bison='$bison'
14778 byacc='$byacc'
14779 byteorder='$byteorder'
14780 c='$c'
14781 castflags='$castflags'
14782 cat='$cat'
14783 cc='$cc'
14784 cccdlflags='$cccdlflags'
14785 ccdlflags='$ccdlflags'
14786 ccflags='$ccflags'
14787 ccsymbols='$ccsymbols'
14788 cf_by='$cf_by'
14789 cf_email='$cf_email'
14790 cf_time='$cf_time'
14791 charsize='$charsize'
14792 chgrp='$chgrp'
14793 chmod='$chmod'
14794 chown='$chown'
14795 clocktype='$clocktype'
14796 comm='$comm'
14797 compress='$compress'
14798 contains='$contains'
14799 cp='$cp'
14800 cpio='$cpio'
14801 cpp='$cpp'
14802 cpp_stuff='$cpp_stuff'
14803 cppccsymbols='$cppccsymbols'
14804 cppflags='$cppflags'
14805 cpplast='$cpplast'
14806 cppminus='$cppminus'
14807 cpprun='$cpprun'
14808 cppstdin='$cppstdin'
14809 cppsymbols='$cppsymbols'
14810 crosscompile='$crosscompile'
14811 cryptlib='$cryptlib'
14812 csh='$csh'
14813 d_Gconvert='$d_Gconvert'
14814 d_PRIEldbl='$d_PRIEldbl'
14815 d_PRIFldbl='$d_PRIFldbl'
14816 d_PRIGldbl='$d_PRIGldbl'
14817 d_PRIX64='$d_PRIX64'
14818 d_PRId64='$d_PRId64'
14819 d_PRIeldbl='$d_PRIeldbl'
14820 d_PRIfldbl='$d_PRIfldbl'
14821 d_PRIgldbl='$d_PRIgldbl'
14822 d_PRIi64='$d_PRIi64'
14823 d_PRIo64='$d_PRIo64'
14824 d_PRIu64='$d_PRIu64'
14825 d_PRIx64='$d_PRIx64'
14826 d_access='$d_access'
14827 d_accessx='$d_accessx'
14828 d_alarm='$d_alarm'
14829 d_archlib='$d_archlib'
14830 d_atolf='$d_atolf'
14831 d_atoll='$d_atoll'
14832 d_attribut='$d_attribut'
14833 d_bcmp='$d_bcmp'
14834 d_bcopy='$d_bcopy'
14835 d_bincompat5005='$d_bincompat5005'
14836 d_bsd='$d_bsd'
14837 d_bsdgetpgrp='$d_bsdgetpgrp'
14838 d_bsdsetpgrp='$d_bsdsetpgrp'
14839 d_bzero='$d_bzero'
14840 d_casti32='$d_casti32'
14841 d_castneg='$d_castneg'
14842 d_charvspr='$d_charvspr'
14843 d_chown='$d_chown'
14844 d_chroot='$d_chroot'
14845 d_chsize='$d_chsize'
14846 d_closedir='$d_closedir'
14847 d_const='$d_const'
14848 d_crypt='$d_crypt'
14849 d_csh='$d_csh'
14850 d_cuserid='$d_cuserid'
14851 d_dbl_dig='$d_dbl_dig'
14852 d_difftime='$d_difftime'
14853 d_dirnamlen='$d_dirnamlen'
14854 d_dlerror='$d_dlerror'
14855 d_dlopen='$d_dlopen'
14856 d_dlsymun='$d_dlsymun'
14857 d_dosuid='$d_dosuid'
14858 d_drand48proto='$d_drand48proto'
14859 d_dup2='$d_dup2'
14860 d_eaccess='$d_eaccess'
14861 d_endgrent='$d_endgrent'
14862 d_endhent='$d_endhent'
14863 d_endnent='$d_endnent'
14864 d_endpent='$d_endpent'
14865 d_endpwent='$d_endpwent'
14866 d_endsent='$d_endsent'
14867 d_endspent='$d_endspent'
14868 d_eofnblk='$d_eofnblk'
14869 d_eunice='$d_eunice'
14870 d_fchmod='$d_fchmod'
14871 d_fchown='$d_fchown'
14872 d_fcntl='$d_fcntl'
14873 d_fd_macros='$d_fd_macros'
14874 d_fd_set='$d_fd_set'
14875 d_fds_bits='$d_fds_bits'
14876 d_fgetpos='$d_fgetpos'
14877 d_flexfnam='$d_flexfnam'
14878 d_flock='$d_flock'
14879 d_fork='$d_fork'
14880 d_fpathconf='$d_fpathconf'
14881 d_fpos64_t='$d_fpos64_t'
14882 d_fs_data_s='$d_fs_data_s'
14883 d_fseeko='$d_fseeko'
14884 d_fsetpos='$d_fsetpos'
14885 d_fstatfs='$d_fstatfs'
14886 d_fstatvfs='$d_fstatvfs'
14887 d_ftello='$d_ftello'
14888 d_ftime='$d_ftime'
14889 d_getcwd='$d_getcwd'
14890 d_getfsstat='$d_getfsstat'
14891 d_getgrent='$d_getgrent'
14892 d_getgrps='$d_getgrps'
14893 d_gethbyaddr='$d_gethbyaddr'
14894 d_gethbyname='$d_gethbyname'
14895 d_gethent='$d_gethent'
14896 d_gethname='$d_gethname'
14897 d_gethostprotos='$d_gethostprotos'
14898 d_getlogin='$d_getlogin'
14899 d_getmnt='$d_getmnt'
14900 d_getmntent='$d_getmntent'
14901 d_getnbyaddr='$d_getnbyaddr'
14902 d_getnbyname='$d_getnbyname'
14903 d_getnent='$d_getnent'
14904 d_getnetprotos='$d_getnetprotos'
14905 d_getpbyname='$d_getpbyname'
14906 d_getpbynumber='$d_getpbynumber'
14907 d_getpent='$d_getpent'
14908 d_getpgid='$d_getpgid'
14909 d_getpgrp2='$d_getpgrp2'
14910 d_getpgrp='$d_getpgrp'
14911 d_getppid='$d_getppid'
14912 d_getprior='$d_getprior'
14913 d_getprotoprotos='$d_getprotoprotos'
14914 d_getpwent='$d_getpwent'
14915 d_getsbyname='$d_getsbyname'
14916 d_getsbyport='$d_getsbyport'
14917 d_getsent='$d_getsent'
14918 d_getservprotos='$d_getservprotos'
14919 d_getspent='$d_getspent'
14920 d_getspnam='$d_getspnam'
14921 d_gettimeod='$d_gettimeod'
14922 d_gnulibc='$d_gnulibc'
14923 d_grpasswd='$d_grpasswd'
14924 d_hasmntopt='$d_hasmntopt'
14925 d_htonl='$d_htonl'
14926 d_iconv='$d_iconv'
14927 d_index='$d_index'
14928 d_inetaton='$d_inetaton'
14929 d_int64_t='$d_int64_t'
14930 d_isascii='$d_isascii'
14931 d_killpg='$d_killpg'
14932 d_lchown='$d_lchown'
14933 d_ldbl_dig='$d_ldbl_dig'
14934 d_link='$d_link'
14935 d_locconv='$d_locconv'
14936 d_lockf='$d_lockf'
14937 d_longdbl='$d_longdbl'
14938 d_longlong='$d_longlong'
14939 d_lseekproto='$d_lseekproto'
14940 d_lstat='$d_lstat'
14941 d_madvise='$d_madvise'
14942 d_mblen='$d_mblen'
14943 d_mbstowcs='$d_mbstowcs'
14944 d_mbtowc='$d_mbtowc'
14945 d_memchr='$d_memchr'
14946 d_memcmp='$d_memcmp'
14947 d_memcpy='$d_memcpy'
14948 d_memmove='$d_memmove'
14949 d_memset='$d_memset'
14950 d_mkdir='$d_mkdir'
14951 d_mkdtemp='$d_mkdtemp'
14952 d_mkfifo='$d_mkfifo'
14953 d_mkstemp='$d_mkstemp'
14954 d_mkstemps='$d_mkstemps'
14955 d_mktime='$d_mktime'
14956 d_mmap='$d_mmap'
14957 d_mprotect='$d_mprotect'
14958 d_msg='$d_msg'
14959 d_msg_ctrunc='$d_msg_ctrunc'
14960 d_msg_dontroute='$d_msg_dontroute'
14961 d_msg_oob='$d_msg_oob'
14962 d_msg_peek='$d_msg_peek'
14963 d_msg_proxy='$d_msg_proxy'
14964 d_msgctl='$d_msgctl'
14965 d_msgget='$d_msgget'
14966 d_msgrcv='$d_msgrcv'
14967 d_msgsnd='$d_msgsnd'
14968 d_msync='$d_msync'
14969 d_munmap='$d_munmap'
14970 d_mymalloc='$d_mymalloc'
14971 d_nice='$d_nice'
14972 d_nv_preserves_uv='$d_nv_preserves_uv'
14973 d_off64_t='$d_off64_t'
14974 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14975 d_oldpthreads='$d_oldpthreads'
14976 d_oldsock='$d_oldsock'
14977 d_open3='$d_open3'
14978 d_pathconf='$d_pathconf'
14979 d_pause='$d_pause'
14980 d_phostname='$d_phostname'
14981 d_pipe='$d_pipe'
14982 d_poll='$d_poll'
14983 d_portable='$d_portable'
14984 d_pthread_yield='$d_pthread_yield'
14985 d_pwage='$d_pwage'
14986 d_pwchange='$d_pwchange'
14987 d_pwclass='$d_pwclass'
14988 d_pwcomment='$d_pwcomment'
14989 d_pwexpire='$d_pwexpire'
14990 d_pwgecos='$d_pwgecos'
14991 d_pwpasswd='$d_pwpasswd'
14992 d_pwquota='$d_pwquota'
14993 d_quad='$d_quad'
14994 d_readdir='$d_readdir'
14995 d_readlink='$d_readlink'
14996 d_rename='$d_rename'
14997 d_rewinddir='$d_rewinddir'
14998 d_rmdir='$d_rmdir'
14999 d_safebcpy='$d_safebcpy'
15000 d_safemcpy='$d_safemcpy'
15001 d_sanemcmp='$d_sanemcmp'
15002 d_sched_yield='$d_sched_yield'
15003 d_scm_rights='$d_scm_rights'
15004 d_seekdir='$d_seekdir'
15005 d_select='$d_select'
15006 d_sem='$d_sem'
15007 d_semctl='$d_semctl'
15008 d_semctl_semid_ds='$d_semctl_semid_ds'
15009 d_semctl_semun='$d_semctl_semun'
15010 d_semget='$d_semget'
15011 d_semop='$d_semop'
15012 d_setegid='$d_setegid'
15013 d_seteuid='$d_seteuid'
15014 d_setgrent='$d_setgrent'
15015 d_setgrps='$d_setgrps'
15016 d_sethent='$d_sethent'
15017 d_setlinebuf='$d_setlinebuf'
15018 d_setlocale='$d_setlocale'
15019 d_setnent='$d_setnent'
15020 d_setpent='$d_setpent'
15021 d_setpgid='$d_setpgid'
15022 d_setpgrp2='$d_setpgrp2'
15023 d_setpgrp='$d_setpgrp'
15024 d_setprior='$d_setprior'
15025 d_setpwent='$d_setpwent'
15026 d_setregid='$d_setregid'
15027 d_setresgid='$d_setresgid'
15028 d_setresuid='$d_setresuid'
15029 d_setreuid='$d_setreuid'
15030 d_setrgid='$d_setrgid'
15031 d_setruid='$d_setruid'
15032 d_setsent='$d_setsent'
15033 d_setsid='$d_setsid'
15034 d_setspent='$d_setspent'
15035 d_setvbuf='$d_setvbuf'
15036 d_sfio='$d_sfio'
15037 d_shm='$d_shm'
15038 d_shmat='$d_shmat'
15039 d_shmatprototype='$d_shmatprototype'
15040 d_shmctl='$d_shmctl'
15041 d_shmdt='$d_shmdt'
15042 d_shmget='$d_shmget'
15043 d_sigaction='$d_sigaction'
15044 d_sigsetjmp='$d_sigsetjmp'
15045 d_socket='$d_socket'
15046 d_socklen_t='$d_socklen_t'
15047 d_sockpair='$d_sockpair'
15048 d_sqrtl='$d_sqrtl'
15049 d_statblks='$d_statblks'
15050 d_statfs_f_flags='$d_statfs_f_flags'
15051 d_statfs_s='$d_statfs_s'
15052 d_statvfs='$d_statvfs'
15053 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15054 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15055 d_stdio_stream_array='$d_stdio_stream_array'
15056 d_stdiobase='$d_stdiobase'
15057 d_stdstdio='$d_stdstdio'
15058 d_strchr='$d_strchr'
15059 d_strcoll='$d_strcoll'
15060 d_strctcpy='$d_strctcpy'
15061 d_strerrm='$d_strerrm'
15062 d_strerror='$d_strerror'
15063 d_strtod='$d_strtod'
15064 d_strtol='$d_strtol'
15065 d_strtold='$d_strtold'
15066 d_strtoll='$d_strtoll'
15067 d_strtoul='$d_strtoul'
15068 d_strtoull='$d_strtoull'
15069 d_strtouq='$d_strtouq'
15070 d_strxfrm='$d_strxfrm'
15071 d_suidsafe='$d_suidsafe'
15072 d_symlink='$d_symlink'
15073 d_syscall='$d_syscall'
15074 d_sysconf='$d_sysconf'
15075 d_sysernlst='$d_sysernlst'
15076 d_syserrlst='$d_syserrlst'
15077 d_system='$d_system'
15078 d_tcgetpgrp='$d_tcgetpgrp'
15079 d_tcsetpgrp='$d_tcsetpgrp'
15080 d_telldir='$d_telldir'
15081 d_telldirproto='$d_telldirproto'
15082 d_time='$d_time'
15083 d_times='$d_times'
15084 d_truncate='$d_truncate'
15085 d_tzname='$d_tzname'
15086 d_umask='$d_umask'
15087 d_uname='$d_uname'
15088 d_union_semun='$d_union_semun'
15089 d_ustat='$d_ustat'
15090 d_vendorbin='$d_vendorbin'
15091 d_vendorlib='$d_vendorlib'
15092 d_vfork='$d_vfork'
15093 d_void_closedir='$d_void_closedir'
15094 d_voidsig='$d_voidsig'
15095 d_voidtty='$d_voidtty'
15096 d_volatile='$d_volatile'
15097 d_vprintf='$d_vprintf'
15098 d_wait4='$d_wait4'
15099 d_waitpid='$d_waitpid'
15100 d_wcstombs='$d_wcstombs'
15101 d_wctomb='$d_wctomb'
15102 d_xenix='$d_xenix'
15103 date='$date'
15104 db_hashtype='$db_hashtype'
15105 db_prefixtype='$db_prefixtype'
15106 defvoidused='$defvoidused'
15107 direntrytype='$direntrytype'
15108 dlext='$dlext'
15109 dlsrc='$dlsrc'
15110 doublesize='$doublesize'
15111 drand01='$drand01'
15112 dynamic_ext='$dynamic_ext'
15113 eagain='$eagain'
15114 ebcdic='$ebcdic'
15115 echo='$echo'
15116 egrep='$egrep'
15117 emacs='$emacs'
15118 eunicefix='$eunicefix'
15119 exe_ext='$exe_ext'
15120 expr='$expr'
15121 extensions='$extensions'
15122 fflushNULL='$fflushNULL'
15123 fflushall='$fflushall'
15124 find='$find'
15125 firstmakefile='$firstmakefile'
15126 flex='$flex'
15127 fpossize='$fpossize'
15128 fpostype='$fpostype'
15129 freetype='$freetype'
15130 full_ar='$full_ar'
15131 full_csh='$full_csh'
15132 full_sed='$full_sed'
15133 gccversion='$gccversion'
15134 gidformat='$gidformat'
15135 gidsign='$gidsign'
15136 gidsize='$gidsize'
15137 gidtype='$gidtype'
15138 glibpth='$glibpth'
15139 grep='$grep'
15140 groupcat='$groupcat'
15141 groupstype='$groupstype'
15142 gzip='$gzip'
15143 h_fcntl='$h_fcntl'
15144 h_sysfile='$h_sysfile'
15145 hint='$hint'
15146 hostcat='$hostcat'
15147 huge='$huge'
15148 i16size='$i16size'
15149 i16type='$i16type'
15150 i32size='$i32size'
15151 i32type='$i32type'
15152 i64size='$i64size'
15153 i64type='$i64type'
15154 i8size='$i8size'
15155 i8type='$i8type'
15156 i_arpainet='$i_arpainet'
15157 i_bsdioctl='$i_bsdioctl'
15158 i_db='$i_db'
15159 i_dbm='$i_dbm'
15160 i_dirent='$i_dirent'
15161 i_dld='$i_dld'
15162 i_dlfcn='$i_dlfcn'
15163 i_fcntl='$i_fcntl'
15164 i_float='$i_float'
15165 i_gdbm='$i_gdbm'
15166 i_grp='$i_grp'
15167 i_iconv='$i_iconv'
15168 i_inttypes='$i_inttypes'
15169 i_limits='$i_limits'
15170 i_locale='$i_locale'
15171 i_machcthr='$i_machcthr'
15172 i_malloc='$i_malloc'
15173 i_math='$i_math'
15174 i_memory='$i_memory'
15175 i_mntent='$i_mntent'
15176 i_ndbm='$i_ndbm'
15177 i_netdb='$i_netdb'
15178 i_neterrno='$i_neterrno'
15179 i_netinettcp='$i_netinettcp'
15180 i_niin='$i_niin'
15181 i_poll='$i_poll'
15182 i_pthread='$i_pthread'
15183 i_pwd='$i_pwd'
15184 i_rpcsvcdbm='$i_rpcsvcdbm'
15185 i_sfio='$i_sfio'
15186 i_sgtty='$i_sgtty'
15187 i_shadow='$i_shadow'
15188 i_socks='$i_socks'
15189 i_stdarg='$i_stdarg'
15190 i_stddef='$i_stddef'
15191 i_stdlib='$i_stdlib'
15192 i_string='$i_string'
15193 i_sysaccess='$i_sysaccess'
15194 i_sysdir='$i_sysdir'
15195 i_sysfile='$i_sysfile'
15196 i_sysfilio='$i_sysfilio'
15197 i_sysin='$i_sysin'
15198 i_sysioctl='$i_sysioctl'
15199 i_syslog='$i_syslog'
15200 i_sysmman='$i_sysmman'
15201 i_sysmode='$i_sysmode'
15202 i_sysmount='$i_sysmount'
15203 i_sysndir='$i_sysndir'
15204 i_sysparam='$i_sysparam'
15205 i_sysresrc='$i_sysresrc'
15206 i_syssecrt='$i_syssecrt'
15207 i_sysselct='$i_sysselct'
15208 i_syssockio='$i_syssockio'
15209 i_sysstat='$i_sysstat'
15210 i_sysstatfs='$i_sysstatfs'
15211 i_sysstatvfs='$i_sysstatvfs'
15212 i_systime='$i_systime'
15213 i_systimek='$i_systimek'
15214 i_systimes='$i_systimes'
15215 i_systypes='$i_systypes'
15216 i_sysuio='$i_sysuio'
15217 i_sysun='$i_sysun'
15218 i_sysutsname='$i_sysutsname'
15219 i_sysvfs='$i_sysvfs'
15220 i_syswait='$i_syswait'
15221 i_termio='$i_termio'
15222 i_termios='$i_termios'
15223 i_time='$i_time'
15224 i_unistd='$i_unistd'
15225 i_ustat='$i_ustat'
15226 i_utime='$i_utime'
15227 i_values='$i_values'
15228 i_varargs='$i_varargs'
15229 i_varhdr='$i_varhdr'
15230 i_vfork='$i_vfork'
15231 ignore_versioned_solibs='$ignore_versioned_solibs'
15232 inc_version_list='$inc_version_list'
15233 inc_version_list_init='$inc_version_list_init'
15234 incpath='$incpath'
15235 inews='$inews'
15236 installarchlib='$installarchlib'
15237 installbin='$installbin'
15238 installman1dir='$installman1dir'
15239 installman3dir='$installman3dir'
15240 installprefix='$installprefix'
15241 installprefixexp='$installprefixexp'
15242 installprivlib='$installprivlib'
15243 installscript='$installscript'
15244 installsitearch='$installsitearch'
15245 installsitebin='$installsitebin'
15246 installsitelib='$installsitelib'
15247 installstyle='$installstyle'
15248 installusrbinperl='$installusrbinperl'
15249 installvendorbin='$installvendorbin'
15250 installvendorlib='$installvendorlib'
15251 intsize='$intsize'
15252 ivdformat='$ivdformat'
15253 ivsize='$ivsize'
15254 ivtype='$ivtype'
15255 known_extensions='$known_extensions'
15256 ksh='$ksh'
15257 large='$large'
15258 ld='$ld'
15259 lddlflags='$lddlflags'
15260 ldflags='$ldflags'
15261 ldlibpthname='$ldlibpthname'
15262 less='$less'
15263 lib_ext='$lib_ext'
15264 libc='$libc'
15265 libperl='$libperl'
15266 libpth='$libpth'
15267 libs='$libs'
15268 libsdirs='$libsdirs'
15269 libsfiles='$libsfiles'
15270 libsfound='$libsfound'
15271 libspath='$libspath'
15272 libswanted='$libswanted'
15273 line='$line'
15274 lint='$lint'
15275 lkflags='$lkflags'
15276 ln='$ln'
15277 lns='$lns'
15278 locincpth='$locincpth'
15279 loclibpth='$loclibpth'
15280 longdblsize='$longdblsize'
15281 longlongsize='$longlongsize'
15282 longsize='$longsize'
15283 lp='$lp'
15284 lpr='$lpr'
15285 ls='$ls'
15286 lseeksize='$lseeksize'
15287 lseektype='$lseektype'
15288 mail='$mail'
15289 mailx='$mailx'
15290 make='$make'
15291 make_set_make='$make_set_make'
15292 mallocobj='$mallocobj'
15293 mallocsrc='$mallocsrc'
15294 malloctype='$malloctype'
15295 man1dir='$man1dir'
15296 man1direxp='$man1direxp'
15297 man1ext='$man1ext'
15298 man3dir='$man3dir'
15299 man3direxp='$man3direxp'
15300 man3ext='$man3ext'
15301 medium='$medium'
15302 mips_type='$mips_type'
15303 mkdir='$mkdir'
15304 mmaptype='$mmaptype'
15305 models='$models'
15306 modetype='$modetype'
15307 more='$more'
15308 multiarch='$multiarch'
15309 mv='$mv'
15310 myarchname='$myarchname'
15311 mydomain='$mydomain'
15312 myhostname='$myhostname'
15313 myuname='$myuname'
15314 n='$n'
15315 netdb_hlen_type='$netdb_hlen_type'
15316 netdb_host_type='$netdb_host_type'
15317 netdb_name_type='$netdb_name_type'
15318 netdb_net_type='$netdb_net_type'
15319 nm='$nm'
15320 nm_opt='$nm_opt'
15321 nm_so_opt='$nm_so_opt'
15322 nonxs_ext='$nonxs_ext'
15323 nroff='$nroff'
15324 nvsize='$nvsize'
15325 nvtype='$nvtype'
15326 o_nonblock='$o_nonblock'
15327 obj_ext='$obj_ext'
15328 old_pthread_create_joinable='$old_pthread_create_joinable'
15329 optimize='$optimize'
15330 orderlib='$orderlib'
15331 osname='$osname'
15332 osvers='$osvers'
15333 package='$package'
15334 pager='$pager'
15335 passcat='$passcat'
15336 patchlevel='$patchlevel'
15337 path_sep='$path_sep'
15338 perl5='$perl5'
15339 perl='$perl'
15340 perladmin='$perladmin'
15341 perlpath='$perlpath'
15342 pg='$pg'
15343 phostname='$phostname'
15344 pidtype='$pidtype'
15345 plibpth='$plibpth'
15346 pm_apiversion='$pm_apiversion'
15347 pmake='$pmake'
15348 pr='$pr'
15349 prefix='$prefix'
15350 prefixexp='$prefixexp'
15351 privlib='$privlib'
15352 privlibexp='$privlibexp'
15353 prototype='$prototype'
15354 ptrsize='$ptrsize'
15355 quadkind='$quadkind'
15356 quadtype='$quadtype'
15357 randbits='$randbits'
15358 randfunc='$randfunc'
15359 randseedtype='$randseedtype'
15360 ranlib='$ranlib'
15361 rd_nodata='$rd_nodata'
15362 revision='$revision'
15363 rm='$rm'
15364 rmail='$rmail'
15365 runnm='$runnm'
15366 sPRIEldbl='$sPRIEldbl'
15367 sPRIFldbl='$sPRIFldbl'
15368 sPRIGldbl='$sPRIGldbl'
15369 sPRIX64='$sPRIX64'
15370 sPRId64='$sPRId64'
15371 sPRIeldbl='$sPRIeldbl'
15372 sPRIfldbl='$sPRIfldbl'
15373 sPRIgldbl='$sPRIgldbl'
15374 sPRIi64='$sPRIi64'
15375 sPRIo64='$sPRIo64'
15376 sPRIu64='$sPRIu64'
15377 sPRIx64='$sPRIx64'
15378 sched_yield='$sched_yield'
15379 scriptdir='$scriptdir'
15380 scriptdirexp='$scriptdirexp'
15381 sed='$sed'
15382 seedfunc='$seedfunc'
15383 selectminbits='$selectminbits'
15384 selecttype='$selecttype'
15385 sendmail='$sendmail'
15386 sh='$sh'
15387 shar='$shar'
15388 sharpbang='$sharpbang'
15389 shmattype='$shmattype'
15390 shortsize='$shortsize'
15391 shrpenv='$shrpenv'
15392 shsharp='$shsharp'
15393 sig_count='$sig_count'
15394 sig_name='$sig_name'
15395 sig_name_init='$sig_name_init'
15396 sig_num='$sig_num'
15397 sig_num_init='$sig_num_init'
15398 signal_t='$signal_t'
15399 sitearch='$sitearch'
15400 sitearchexp='$sitearchexp'
15401 sitebin='$sitebin'
15402 sitebinexp='$sitebinexp'
15403 sitelib='$sitelib'
15404 sitelibexp='$sitelibexp'
15405 siteprefix='$siteprefix'
15406 siteprefixexp='$siteprefixexp'
15407 sizetype='$sizetype'
15408 sleep='$sleep'
15409 smail='$smail'
15410 small='$small'
15411 so='$so'
15412 sockethdr='$sockethdr'
15413 socketlib='$socketlib'
15414 socksizetype='$socksizetype'
15415 sort='$sort'
15416 spackage='$spackage'
15417 spitshell='$spitshell'
15418 split='$split'
15419 src='$src'
15420 ssizetype='$ssizetype'
15421 startperl='$startperl'
15422 startsh='$startsh'
15423 static_ext='$static_ext'
15424 stdchar='$stdchar'
15425 stdio_base='$stdio_base'
15426 stdio_bufsiz='$stdio_bufsiz'
15427 stdio_cnt='$stdio_cnt'
15428 stdio_filbuf='$stdio_filbuf'
15429 stdio_ptr='$stdio_ptr'
15430 stdio_stream_array='$stdio_stream_array'
15431 strings='$strings'
15432 submit='$submit'
15433 subversion='$subversion'
15434 sysman='$sysman'
15435 tail='$tail'
15436 tar='$tar'
15437 tbl='$tbl'
15438 tee='$tee'
15439 test='$test'
15440 timeincl='$timeincl'
15441 timetype='$timetype'
15442 touch='$touch'
15443 tr='$tr'
15444 trnl='$trnl'
15445 troff='$troff'
15446 u16size='$u16size'
15447 u16type='$u16type'
15448 u32size='$u32size'
15449 u32type='$u32type'
15450 u64size='$u64size'
15451 u64type='$u64type'
15452 u8size='$u8size'
15453 u8type='$u8type'
15454 uidformat='$uidformat'
15455 uidsign='$uidsign'
15456 uidsize='$uidsize'
15457 uidtype='$uidtype'
15458 uname='$uname'
15459 uniq='$uniq'
15460 uquadtype='$uquadtype'
15461 use5005threads='$use5005threads'
15462 use64bitall='$use64bitall'
15463 use64bitint='$use64bitint'
15464 usedl='$usedl'
15465 useithreads='$useithreads'
15466 uselargefiles='$uselargefiles'
15467 uselongdouble='$uselongdouble'
15468 usemorebits='$usemorebits'
15469 usemultiplicity='$usemultiplicity'
15470 usemymalloc='$usemymalloc'
15471 usenm='$usenm'
15472 useopcode='$useopcode'
15473 useperlio='$useperlio'
15474 useposix='$useposix'
15475 usesfio='$usesfio'
15476 useshrplib='$useshrplib'
15477 usesocks='$usesocks'
15478 usethreads='$usethreads'
15479 usevendorprefix='$usevendorprefix'
15480 usevfork='$usevfork'
15481 usrinc='$usrinc'
15482 uuname='$uuname'
15483 uvoformat='$uvoformat'
15484 uvsize='$uvsize'
15485 uvtype='$uvtype'
15486 uvuformat='$uvuformat'
15487 uvxformat='$uvxformat'
15488 vendorbin='$vendorbin'
15489 vendorbinexp='$vendorbinexp'
15490 vendorlib='$vendorlib'
15491 vendorlibexp='$vendorlibexp'
15492 vendorprefix='$vendorprefix'
15493 vendorprefixexp='$vendorprefixexp'
15494 version='$version'
15495 vi='$vi'
15496 voidflags='$voidflags'
15497 xlibpth='$xlibpth'
15498 xs_apiversion='$xs_apiversion'
15499 zcat='$zcat'
15500 zip='$zip'
15501 EOT
15502
15503 : Add in command line options if available
15504 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15505
15506 : add special variables
15507 $test -f $src/patchlevel.h && \
15508 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15509 echo "CONFIGDOTSH=true" >>config.sh
15510
15511 : propagate old symbols
15512 if $test -f UU/config.sh; then
15513         <UU/config.sh sort | uniq >UU/oldconfig.sh
15514         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15515         sort | uniq -u >UU/oldsyms
15516         set X `cat UU/oldsyms`
15517         shift
15518         case $# in
15519         0) ;;
15520         *)
15521                 cat <<EOM
15522 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15523 EOM
15524                 echo "# Variables propagated from previous config.sh file." >>config.sh
15525                 for sym in `cat UU/oldsyms`; do
15526                         echo "    Propagating $hint variable "'$'"$sym..."
15527                         eval 'tmp="$'"${sym}"'"'
15528                         echo "$tmp" | \
15529                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15530                 done
15531                 ;;
15532         esac
15533 fi
15534
15535 : Finish up by extracting the .SH files
15536 case "$alldone" in
15537 exit)
15538         $rm -rf UU
15539         echo "Done."
15540         exit 0
15541         ;;
15542 cont)
15543         ;;
15544 '')
15545         dflt=''
15546         nostick=true
15547         $cat <<EOM
15548
15549 If you'd like to make any changes to the config.sh file before I begin
15550 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15551
15552 EOM
15553         rp="Press return or use a shell escape to edit config.sh:"
15554         . UU/myread
15555         nostick=''
15556         case "$ans" in
15557         '') ;;
15558         *) : in case they cannot read
15559                 sh 1>&4 -c "$ans";;
15560         esac
15561         ;;
15562 esac
15563
15564 : if this fails, just run all the .SH files by hand
15565 . ./config.sh
15566
15567 echo " "
15568 exec 1>&4
15569 . ./UU/extract
15570
15571 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15572         dflt=y
15573         case "$silent" in
15574         true) ;;
15575         *)
15576                 $cat <<EOM
15577
15578 Now you need to generate make dependencies by running "$make depend".
15579 You might prefer to run it in background: "$make depend > makedepend.out &"
15580 It can take a while, so you might not want to run it right now.
15581
15582 EOM
15583                 ;;
15584         esac
15585         rp="Run $make depend now?"
15586         . UU/myread
15587         case "$ans" in
15588         y*)
15589                 $make depend && echo "Now you must run a $make."
15590                 ;;
15591         *)
15592                 echo "You must run '$make depend' then '$make'."
15593                 ;;
15594         esac
15595 elif test -f [Mm]akefile; then
15596         echo " "
15597         echo "Now you must run a $make."
15598 else
15599         echo "Done."
15600 fi
15601
15602 if $test -f Policy.sh; then
15603     $cat <<EOM
15604
15605 If you compile $package on a different machine or from a different object
15606 directory, copy the Policy.sh file from this object directory to the
15607 new one before you run Configure -- this will help you with most of
15608 the policy defaults.
15609
15610 EOM
15611 fi
15612 if $test -f config.msg; then
15613     echo "Hmm.  I also noted the following information while running:"
15614     echo " "
15615     $cat config.msg >&4
15616     $rm -f config.msg
15617 fi
15618 $rm -f kit*isdone ark*isdone
15619 $rm -rf UU
15620
15621 : End of Configure
15622