43b806181ef798b46267b3a8ba93d7d86a0a515b
[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 Thu Aug 31 07:18:29 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
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 ccflags=''
292 cppflags=''
293 ldflags=''
294 lkflags=''
295 locincpth=''
296 optimize=''
297 cf_email=''
298 cf_by=''
299 cf_time=''
300 charsize=''
301 contains=''
302 cpp_stuff=''
303 cpplast=''
304 cppminus=''
305 cpprun=''
306 cppstdin=''
307 crosscompile=''
308 d_access=''
309 d_accessx=''
310 d_alarm=''
311 d_attribut=''
312 d_bcmp=''
313 d_bcopy=''
314 d_bzero=''
315 d_casti32=''
316 castflags=''
317 d_castneg=''
318 d_chown=''
319 d_chroot=''
320 d_chsize=''
321 d_closedir=''
322 d_void_closedir=''
323 d_const=''
324 cryptlib=''
325 d_crypt=''
326 d_csh=''
327 full_csh=''
328 d_cuserid=''
329 d_dbl_dig=''
330 d_difftime=''
331 d_dlerror=''
332 d_dlopen=''
333 d_dlsymun=''
334 d_dosuid=''
335 d_suidsafe=''
336 d_drand48proto=''
337 d_dup2=''
338 d_eaccess=''
339 d_endgrent=''
340 d_endhent=''
341 d_endnent=''
342 d_endpent=''
343 d_endpwent=''
344 d_endsent=''
345 d_fchmod=''
346 d_fchown=''
347 d_fcntl=''
348 d_fd_macros=''
349 d_fd_set=''
350 d_fds_bits=''
351 d_fgetpos=''
352 d_flexfnam=''
353 d_flock=''
354 d_fork=''
355 d_fpos64_t=''
356 d_frexpl=''
357 d_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getcwd=''
366 d_getespwnam=''
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_getprpwnam=''
396 d_getpwent=''
397 d_getsent=''
398 d_getservprotos=''
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_isnan=''
410 d_isnanl=''
411 d_killpg=''
412 d_lchown=''
413 d_ldbl_dig=''
414 d_link=''
415 d_locconv=''
416 d_lockf=''
417 d_longdbl=''
418 longdblsize=''
419 d_longlong=''
420 longlongsize=''
421 d_lseekproto=''
422 d_lstat=''
423 d_madvise=''
424 d_mblen=''
425 d_mbstowcs=''
426 d_mbtowc=''
427 d_memchr=''
428 d_memcmp=''
429 d_memcpy=''
430 d_memmove=''
431 d_memset=''
432 d_mkdir=''
433 d_mkdtemp=''
434 d_mkfifo=''
435 d_mkstemp=''
436 d_mkstemps=''
437 d_mktime=''
438 d_mmap=''
439 mmaptype=''
440 d_modfl=''
441 d_mprotect=''
442 d_msg=''
443 d_msgctl=''
444 d_msgget=''
445 d_msgrcv=''
446 d_msgsnd=''
447 d_msync=''
448 d_munmap=''
449 d_nice=''
450 d_off64_t=''
451 d_open3=''
452 d_fpathconf=''
453 d_pathconf=''
454 d_pause=''
455 d_pipe=''
456 d_poll=''
457 d_portable=''
458 d_old_pthread_create_joinable=''
459 old_pthread_create_joinable=''
460 d_pthread_yield=''
461 d_sched_yield=''
462 sched_yield=''
463 d_qgcvt=''
464 d_readdir=''
465 d_rewinddir=''
466 d_seekdir=''
467 d_telldir=''
468 d_readlink=''
469 d_rename=''
470 d_rmdir=''
471 d_safebcpy=''
472 d_safemcpy=''
473 d_sanemcmp=''
474 d_select=''
475 d_sem=''
476 d_semctl=''
477 d_semget=''
478 d_semop=''
479 d_setegid=''
480 d_seteuid=''
481 d_setgrent=''
482 d_setgrps=''
483 d_sethent=''
484 d_setlinebuf=''
485 d_setlocale=''
486 d_setnent=''
487 d_setpent=''
488 d_setpgid=''
489 d_setpgrp2=''
490 d_bsdsetpgrp=''
491 d_setpgrp=''
492 d_setprior=''
493 d_setproctitle=''
494 d_setpwent=''
495 d_setregid=''
496 d_setresgid=''
497 d_setresuid=''
498 d_setreuid=''
499 d_setrgid=''
500 d_setruid=''
501 d_setsent=''
502 d_setsid=''
503 d_setvbuf=''
504 d_sfio=''
505 usesfio=''
506 d_shm=''
507 d_shmat=''
508 d_shmatprototype=''
509 shmattype=''
510 d_shmctl=''
511 d_shmdt=''
512 d_shmget=''
513 d_sigaction=''
514 d_sigsetjmp=''
515 d_msg_ctrunc=''
516 d_msg_dontroute=''
517 d_msg_oob=''
518 d_msg_peek=''
519 d_msg_proxy=''
520 d_oldsock=''
521 d_scm_rights=''
522 d_socket=''
523 d_sockpair=''
524 sockethdr=''
525 socketlib=''
526 d_socklen_t=''
527 d_socks5_init=''
528 d_sqrtl=''
529 d_statblks=''
530 d_statfs_f_flags=''
531 d_statfs_s=''
532 d_fstatvfs=''
533 d_statvfs=''
534 d_stdio_cnt_lval=''
535 d_stdio_ptr_lval=''
536 d_stdiobase=''
537 d_stdstdio=''
538 stdio_base=''
539 stdio_bufsiz=''
540 stdio_cnt=''
541 stdio_filbuf=''
542 stdio_ptr=''
543 d_index=''
544 d_strchr=''
545 d_strcoll=''
546 d_strctcpy=''
547 d_strerrm=''
548 d_strerror=''
549 d_sysernlst=''
550 d_syserrlst=''
551 d_strtod=''
552 d_strtol=''
553 d_strtold=''
554 d_strtoll=''
555 d_strtoul=''
556 d_strtoull=''
557 d_strtouq=''
558 d_strxfrm=''
559 d_symlink=''
560 d_syscall=''
561 d_sysconf=''
562 d_system=''
563 d_tcgetpgrp=''
564 d_tcsetpgrp=''
565 d_telldirproto=''
566 d_time=''
567 timetype=''
568 clocktype=''
569 d_times=''
570 d_truncate=''
571 d_tzname=''
572 d_umask=''
573 d_semctl_semid_ds=''
574 d_semctl_semun=''
575 d_union_semun=''
576 d_ustat=''
577 d_vfork=''
578 usevfork=''
579 d_voidsig=''
580 signal_t=''
581 d_volatile=''
582 d_charvspr=''
583 d_vprintf=''
584 d_wait4=''
585 d_waitpid=''
586 d_wcstombs=''
587 d_wctomb=''
588 dlext=''
589 cccdlflags=''
590 ccdlflags=''
591 dlsrc=''
592 ld=''
593 lddlflags=''
594 usedl=''
595 doublesize=''
596 ebcdic=''
597 fflushNULL=''
598 fflushall=''
599 fpossize=''
600 fpostype=''
601 ccname=''
602 gccosandvers=''
603 gccversion=''
604 gidformat=''
605 gidsign=''
606 gidsize=''
607 gidtype=''
608 groupstype=''
609 h_fcntl=''
610 h_sysfile=''
611 i_arpainet=''
612 db_hashtype=''
613 db_prefixtype=''
614 i_db=''
615 i_dbm=''
616 i_rpcsvcdbm=''
617 d_dirnamlen=''
618 direntrytype=''
619 i_dirent=''
620 i_dld=''
621 i_dlfcn=''
622 i_fcntl=''
623 i_float=''
624 i_gdbm=''
625 d_grpasswd=''
626 i_grp=''
627 i_iconv=''
628 i_ieeefp=''
629 i_inttypes=''
630 i_libutil=''
631 i_limits=''
632 i_locale=''
633 i_machcthr=''
634 i_malloc=''
635 i_math=''
636 i_memory=''
637 i_mntent=''
638 i_ndbm=''
639 i_netdb=''
640 i_neterrno=''
641 i_netinettcp=''
642 i_niin=''
643 i_sysin=''
644 i_poll=''
645 i_prot=''
646 i_pthread=''
647 d_pwage=''
648 d_pwchange=''
649 d_pwclass=''
650 d_pwcomment=''
651 d_pwexpire=''
652 d_pwgecos=''
653 d_pwpasswd=''
654 d_pwquota=''
655 i_pwd=''
656 i_sfio=''
657 i_shadow=''
658 i_socks=''
659 i_stddef=''
660 i_stdlib=''
661 i_string=''
662 strings=''
663 i_sunmath=''
664 i_sysaccess=''
665 i_sysdir=''
666 i_sysfile=''
667 d_voidtty=''
668 i_bsdioctl=''
669 i_sysfilio=''
670 i_sysioctl=''
671 i_syssockio=''
672 i_syslog=''
673 i_sysmman=''
674 i_sysmode=''
675 i_sysmount=''
676 i_sysndir=''
677 i_sysparam=''
678 i_sysresrc=''
679 i_syssecrt=''
680 i_sysselct=''
681 i_sysstat=''
682 i_sysstatfs=''
683 i_sysstatvfs=''
684 i_systimes=''
685 i_systypes=''
686 i_sysuio=''
687 i_sysun=''
688 i_sysutsname=''
689 i_sysvfs=''
690 i_syswait=''
691 i_sgtty=''
692 i_termio=''
693 i_termios=''
694 i_systime=''
695 i_systimek=''
696 i_time=''
697 timeincl=''
698 i_unistd=''
699 i_ustat=''
700 i_utime=''
701 i_values=''
702 i_stdarg=''
703 i_varargs=''
704 i_varhdr=''
705 i_vfork=''
706 inc_version_list=''
707 inc_version_list_init=''
708 installprefix=''
709 installprefixexp=''
710 installstyle=''
711 installusrbinperl=''
712 intsize=''
713 longsize=''
714 shortsize=''
715 libc=''
716 ldlibpthname=''
717 libperl=''
718 shrpenv=''
719 useshrplib=''
720 glibpth=''
721 libpth=''
722 loclibpth=''
723 plibpth=''
724 xlibpth=''
725 ignore_versioned_solibs=''
726 libs=''
727 libsdirs=''
728 libsfiles=''
729 libsfound=''
730 libspath=''
731 lns=''
732 d_PRIEldbl=''
733 d_PRIFldbl=''
734 d_PRIGldbl=''
735 d_PRIeldbl=''
736 d_PRIfldbl=''
737 d_PRIgldbl=''
738 d_SCNfldbl=''
739 sPRIEldbl=''
740 sPRIFldbl=''
741 sPRIGldbl=''
742 sPRIeldbl=''
743 sPRIfldbl=''
744 sPRIgldbl=''
745 sSCNfldbl=''
746 lseeksize=''
747 lseektype=''
748 make_set_make=''
749 d_mymalloc=''
750 freetype=''
751 mallocobj=''
752 mallocsrc=''
753 malloctype=''
754 usemymalloc=''
755 installman1dir=''
756 man1dir=''
757 man1direxp=''
758 man1ext=''
759 installman3dir=''
760 man3dir=''
761 man3direxp=''
762 man3ext=''
763 huge=''
764 large=''
765 medium=''
766 models=''
767 small=''
768 split=''
769 modetype=''
770 multiarch=''
771 mydomain=''
772 myhostname=''
773 phostname=''
774 c=''
775 n=''
776 d_eofnblk=''
777 eagain=''
778 o_nonblock=''
779 rd_nodata=''
780 netdb_hlen_type=''
781 netdb_host_type=''
782 netdb_name_type=''
783 netdb_net_type=''
784 groupcat=''
785 hostcat=''
786 passcat=''
787 orderlib=''
788 ranlib=''
789 d_perl_otherlibdirs=''
790 otherlibdirs=''
791 package=''
792 spackage=''
793 pager=''
794 api_revision=''
795 api_subversion=''
796 api_version=''
797 api_versionstring=''
798 patchlevel=''
799 revision=''
800 subversion=''
801 version=''
802 perl5=''
803 perladmin=''
804 perlpath=''
805 d_nv_preserves_uv=''
806 d_nv_preserves_uv_bits=''
807 i16size=''
808 i16type=''
809 i32size=''
810 i32type=''
811 i64size=''
812 i64type=''
813 i8size=''
814 i8type=''
815 ivsize=''
816 ivtype=''
817 nvsize=''
818 nvtype=''
819 u16size=''
820 u16type=''
821 u32size=''
822 u32type=''
823 u64size=''
824 u64type=''
825 u8size=''
826 u8type=''
827 uvsize=''
828 uvtype=''
829 ivdformat=''
830 nvEformat=''
831 nvFformat=''
832 nvGformat=''
833 nveformat=''
834 nvfformat=''
835 nvgformat=''
836 uvXformat=''
837 uvoformat=''
838 uvuformat=''
839 uvxformat=''
840 pidtype=''
841 prefix=''
842 prefixexp=''
843 installprivlib=''
844 privlib=''
845 privlibexp=''
846 prototype=''
847 ptrsize=''
848 d_PRIX64=''
849 d_PRId64=''
850 d_PRIi64=''
851 d_PRIo64=''
852 d_PRIu64=''
853 d_PRIx64=''
854 sPRIX64=''
855 sPRId64=''
856 sPRIi64=''
857 sPRIo64=''
858 sPRIu64=''
859 sPRIx64=''
860 d_quad=''
861 quadkind=''
862 quadtype=''
863 uquadtype=''
864 drand01=''
865 randbits=''
866 randfunc=''
867 randseedtype=''
868 seedfunc=''
869 installscript=''
870 scriptdir=''
871 scriptdirexp=''
872 selectminbits=''
873 selecttype=''
874 sh=''
875 sig_count=''
876 sig_name=''
877 sig_name_init=''
878 sig_num=''
879 sig_num_init=''
880 installsitearch=''
881 sitearch=''
882 sitearchexp=''
883 installsitebin=''
884 sitebin=''
885 sitebinexp=''
886 installsitelib=''
887 sitelib=''
888 sitelib_stem=''
889 sitelibexp=''
890 siteprefix=''
891 siteprefixexp=''
892 sizesize=''
893 sizetype=''
894 so=''
895 socksizetype=''
896 sharpbang=''
897 shsharp=''
898 spitshell=''
899 src=''
900 ssizetype=''
901 startperl=''
902 startsh=''
903 stdchar=''
904 d_stdio_stream_array=''
905 stdio_stream_array=''
906 sysman=''
907 trnl=''
908 uidformat=''
909 uidsign=''
910 uidsize=''
911 uidtype=''
912 archname64=''
913 use64bitall=''
914 use64bitint=''
915 ccflags_uselargefiles=''
916 ldflags_uselargefiles=''
917 libswanted_uselargefiles=''
918 uselargefiles=''
919 uselongdouble=''
920 usemorebits=''
921 usemultiplicity=''
922 nm_opt=''
923 nm_so_opt=''
924 runnm=''
925 usenm=''
926 useperlio=''
927 usesocks=''
928 d_oldpthreads=''
929 use5005threads=''
930 useithreads=''
931 usethreads=''
932 incpath=''
933 mips_type=''
934 usrinc=''
935 d_vendorarch=''
936 installvendorarch=''
937 vendorarch=''
938 vendorarchexp=''
939 d_vendorbin=''
940 installvendorbin=''
941 vendorbin=''
942 vendorbinexp=''
943 d_vendorlib=''
944 installvendorlib=''
945 vendorlib=''
946 vendorlib_stem=''
947 vendorlibexp=''
948 usevendorprefix=''
949 vendorprefix=''
950 vendorprefixexp=''
951 defvoidused=''
952 voidflags=''
953 pm_apiversion=''
954 xs_apiversion=''
955 CONFIG=''
956
957 define='define'
958 undef='undef'
959 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
960 rmlist=''
961
962 : We must find out about Eunice early
963 eunicefix=':'
964 if test -f /etc/unixtovms; then
965         eunicefix=/etc/unixtovms
966 fi
967 if test -f /etc/unixtovms.exe; then
968         eunicefix=/etc/unixtovms.exe
969 fi
970
971 i_whoami=''
972 : set useposix=false in your hint file to disable the POSIX extension.
973 useposix=true
974 : set useopcode=false in your hint file to disable the Opcode extension.
975 useopcode=true
976 : Trailing extension.  Override this in a hint file, if needed.
977 _exe=''
978 : Extra object files, if any, needed on this platform.
979 archobjs=''
980 archname=''
981 : Possible local include directories to search.
982 : Set locincpth to "" in a hint file to defeat local include searches.
983 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
984 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
985 :
986 : no include file wanted by default
987 inclwanted=''
988
989 groupstype=''
990 : change the next line if compiling for Xenix/286 on Xenix/386
991 xlibpth='/usr/lib/386 /lib/386'
992 : Possible local library directories to search.
993 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
994 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
995
996 : general looking path for locating libraries
997 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
998 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
999 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1000 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1001 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1002
1003 : Private path used by Configure to find libraries.  Its value
1004 : is prepended to libpth. This variable takes care of special
1005 : machines, like the mips.  Usually, it should be empty.
1006 plibpth=''
1007
1008 : default library list
1009 libswanted=''
1010 : some systems want to use only the non-versioned libso:s
1011 ignore_versioned_solibs=''
1012 archname64=''
1013 ccflags_uselargefiles=''
1014 ldflags_uselargefiles=''
1015 libswanted_uselargefiles=''
1016 : set usemultiplicity on the Configure command line to enable multiplicity.
1017 : set usesocks on the Configure command line to enable socks.
1018 : set usethreads on the Configure command line to enable threads.
1019 : full support for void wanted by default
1020 defvoidused=15
1021
1022 : List of libraries we want.
1023 : If anyone needs -lnet, put it in a hint file.
1024 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1025 libswanted="$libswanted dld ld sun m c cposix posix"
1026 libswanted="$libswanted ndir dir crypt sec"
1027 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1028 : We probably want to search /usr/shlib before most other libraries.
1029 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1030 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1031 glibpth="/usr/shlib $glibpth"
1032 : Do not use vfork unless overridden by a hint file.
1033 usevfork=false
1034
1035 : Find the basic shell for Bourne shell scripts
1036 case "$sh" in
1037 '')
1038         case "$SYSTYPE" in
1039         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1040         *) xxx='/bin/sh';;
1041         esac
1042         if test -f "$xxx"; then
1043                 sh="$xxx"
1044         else
1045                 : Build up a list and do a single loop so we can 'break' out.
1046                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1047                 for xxx in sh bash ksh pdksh ash; do
1048                         for p in $pth; do
1049                                 try="$try ${p}/${xxx}"
1050                         done
1051                 done
1052                 for xxx in $try; do
1053                         if test -f "$xxx"; then
1054                                 sh="$xxx";
1055                                 break
1056                         elif test -f "$xxx.exe"; then
1057                                 sh="$xxx";
1058                                 break
1059                         fi
1060                 done
1061         fi
1062         ;;
1063 esac
1064
1065 case "$sh" in
1066 '')     cat <<EOM >&2
1067 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1068
1069 Usually it's in /bin/sh.  How did you even get this far?
1070 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1071 we'll try to straighten this all out.
1072 EOM
1073         exit 1
1074         ;;
1075 esac
1076
1077 : see if sh knows # comments
1078 if `$sh -c '#' >/dev/null 2>&1`; then
1079         shsharp=true
1080         spitshell=cat
1081         xcat=/bin/cat
1082         test -f $xcat || xcat=/usr/bin/cat
1083         echo "#!$xcat" >try
1084         $eunicefix try
1085         chmod +x try
1086         ./try > today
1087         if test -s today; then
1088                 sharpbang='#!'
1089         else
1090                 echo "#! $xcat" > try
1091                 $eunicefix try
1092                 chmod +x try
1093                 ./try > today
1094                 if test -s today; then
1095                         sharpbang='#! '
1096                 else
1097                         sharpbang=': use '
1098                 fi
1099         fi
1100 else
1101         echo " "
1102         echo "Your $sh doesn't grok # comments--I will strip them later on."
1103         shsharp=false
1104         cd ..
1105         echo "exec grep -v '^[  ]*#'" >spitshell
1106         chmod +x spitshell
1107         $eunicefix spitshell
1108         spitshell=`pwd`/spitshell
1109         cd UU
1110         echo "I presume that if # doesn't work, #! won't work either!"
1111         sharpbang=': use '
1112 fi
1113 rm -f try today
1114
1115 : figure out how to guarantee sh startup
1116 case "$startsh" in
1117 '') startsh=${sharpbang}${sh} ;;
1118 *)
1119 esac
1120 cat >try <<EOSS
1121 $startsh
1122 set abc
1123 test "$?abc" != 1
1124 EOSS
1125
1126 chmod +x try
1127 $eunicefix try
1128 if ./try; then
1129         : echo "Yup, it does."
1130 else
1131         echo "Hmm... '$startsh' does not guarantee sh startup..."
1132         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1133 fi
1134 rm -f try
1135
1136
1137 : Save command line options in file UU/cmdline.opt for later use in
1138 : generating config.sh.
1139 cat > cmdline.opt <<EOSH
1140 # Configure command line arguments.
1141 config_arg0='$0'
1142 config_args='$*'
1143 config_argc=$#
1144 EOSH
1145 argn=1
1146 for arg in "$@"; do
1147         cat >>cmdline.opt <<EOSH
1148 config_arg$argn='$arg'
1149 EOSH
1150         argn=`expr $argn + 1`
1151 done
1152
1153 : produce awk script to parse command line options
1154 cat >options.awk <<'EOF'
1155 BEGIN {
1156         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1157
1158         len = length(optstr);
1159         for (i = 1; i <= len; i++) {
1160                 c = substr(optstr, i, 1);
1161                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1162                 if (a == ":") {
1163                         arg[c] = 1;
1164                         i++;
1165                 }
1166                 opt[c] = 1;
1167         }
1168 }
1169 {
1170         expect = 0;
1171         str = $0;
1172         if (substr(str, 1, 1) != "-") {
1173                 printf("'%s'\n", str);
1174                 next;
1175         }
1176         len = length($0);
1177         for (i = 2; i <= len; i++) {
1178                 c = substr(str, i, 1);
1179                 if (!opt[c]) {
1180                         printf("-%s\n", substr(str, i));
1181                         next;
1182                 }
1183                 printf("-%s\n", c);
1184                 if (arg[c]) {
1185                         if (i < len)
1186                                 printf("'%s'\n", substr(str, i + 1));
1187                         else
1188                                 expect = 1;
1189                         next;
1190                 }
1191         }
1192 }
1193 END {
1194         if (expect)
1195                 print "?";
1196 }
1197 EOF
1198
1199 : process the command line options
1200 set X `for arg in "$@"; do echo "X$arg"; done |
1201         sed -e s/X// | awk -f options.awk`
1202 eval "set $*"
1203 shift
1204 rm -f options.awk
1205
1206 : set up default values
1207 fastread=''
1208 reuseval=false
1209 config_sh=''
1210 alldone=''
1211 error=''
1212 silent=''
1213 extractsh=''
1214 override=''
1215 knowitall=''
1216 rm -f optdef.sh posthint.sh
1217 cat >optdef.sh <<EOS
1218 $startsh
1219 EOS
1220
1221
1222 : option parsing
1223 while test $# -gt 0; do
1224         case "$1" in
1225         -d) shift; fastread=yes;;
1226         -e) shift; alldone=cont;;
1227         -f)
1228                 shift
1229                 cd ..
1230                 if test -r "$1"; then
1231                         config_sh="$1"
1232                 else
1233                         echo "$me: cannot read config file $1." >&2
1234                         error=true
1235                 fi
1236                 cd UU
1237                 shift;;
1238         -h) shift; error=true;;
1239         -r) shift; reuseval=true;;
1240         -s) shift; silent=true; realsilent=true;;
1241         -E) shift; alldone=exit;;
1242         -K) shift; knowitall=true;;
1243         -O) shift; override=true;;
1244         -S) shift; silent=true; extractsh=true;;
1245         -D)
1246                 shift
1247                 case "$1" in
1248                 *=)
1249                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1250                         echo "$me: ignoring -D $1" >&2
1251                         ;;
1252                 *=*) echo "$1" | \
1253                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1254                 *) echo "$1='define'" >> optdef.sh;;
1255                 esac
1256                 shift
1257                 ;;
1258         -U)
1259                 shift
1260                 case "$1" in
1261                 *=) echo "$1" >> optdef.sh;;
1262                 *=*)
1263                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1264                         echo "$me: ignoring -U $1" >&2
1265                         ;;
1266                 *) echo "$1='undef'" >> optdef.sh;;
1267                 esac
1268                 shift
1269                 ;;
1270         -A)
1271             shift
1272             xxx=''
1273             yyy="$1"
1274             zzz=''
1275             uuu=undef
1276             case "$yyy" in
1277             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1278                  case "$zzz" in
1279                  *:*) zzz='' ;;
1280                  *)   xxx=append
1281                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1282                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1283                  esac
1284                  ;;
1285             esac
1286             case "$xxx" in
1287             '')  case "$yyy" in
1288                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1289                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1290                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1291                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1292                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1293                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1294                  esac
1295                  ;;       
1296             esac
1297             case "$xxx" in
1298             append)
1299                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1300             clear)
1301                 echo "$yyy=''"                  >> posthint.sh ;;
1302             define)
1303                 case "$zzz" in
1304                 '') zzz=define ;;
1305                 esac
1306                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1307             eval)
1308                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1309             prepend)
1310                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1311             undef)
1312                 case "$zzz" in
1313                 '') zzz="$uuu" ;;
1314                 esac
1315                 echo "$yyy=$zzz"                >> posthint.sh ;;
1316             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1317             esac
1318             shift
1319             ;;
1320         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1321             exit 0;;
1322         --) break;;
1323         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1324         *) break;;
1325         esac
1326 done
1327
1328 case "$error" in
1329 true)
1330         cat >&2 <<EOM
1331 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1332                  [-U symbol] [-U symbol=] [-A command:symbol...]
1333   -d : use defaults for all answers.
1334   -e : go on without questioning past the production of config.sh.
1335   -f : specify an alternate default configuration file.
1336   -h : print this help message and exit (with an error status).
1337   -r : reuse C symbols value if possible (skips costly nm extraction).
1338   -s : silent mode, only echoes questions and essential information.
1339   -D : define symbol to have some value:
1340          -D symbol         symbol gets the value 'define'
1341          -D symbol=value   symbol gets the value 'value'
1342   -E : stop at the end of questions, after having produced config.sh.
1343   -K : do not use unless you know what you are doing.
1344   -O : let -D and -U override definitions from loaded configuration file.
1345   -S : perform variable substitutions on all .SH files (can mix with -f)
1346   -U : undefine symbol:
1347          -U symbol    symbol gets the value 'undef'
1348          -U symbol=   symbol gets completely empty
1349   -A : manipulate symbol after the platform specific hints have been applied:
1350          -A symbol=value                append " "value to symbol
1351          -A append:symbol=value         append value to symbol
1352          -A define:symbol=value         define symbol to have value
1353          -A clear:symbol                define symbol to be ''
1354          -A define:symbol               define symbol to be 'define'
1355          -A eval:symbol=value           define symbol to be eval of value
1356          -A prepend:symbol=value        prepend value to symbol
1357          -A undef:symbol                define symbol to be 'undef'
1358          -A undef:symbol=               define symbol to be ''
1359   -V : print version number and exit (with a zero status).
1360 EOM
1361         exit 1
1362         ;;
1363 esac
1364
1365 : Sanity checks
1366 case "$fastread$alldone" in
1367 yescont|yesexit) ;;
1368 *)
1369         case "$extractsh" in
1370         true) ;;
1371         *)
1372                 if test ! -t 0; then
1373                         echo "Say 'sh Configure', not 'sh <Configure'"
1374                         exit 1
1375                 fi
1376                 ;;
1377         esac
1378         ;;
1379 esac
1380
1381 exec 4>&1
1382 case "$silent" in
1383 true) exec 1>/dev/null;;
1384 esac
1385
1386 : run the defines and the undefines, if any, but leave the file out there...
1387 touch optdef.sh
1388 . ./optdef.sh
1389 : create the posthint manipulation script and leave the file out there...
1390 touch posthint.sh
1391
1392 : set package name
1393 package=perl5
1394 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1395 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1396 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1397 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1398 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1399 esac
1400
1401 : Some greps do not return status, grrr.
1402 echo "grimblepritz" >grimble
1403 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1404         contains=contains
1405 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1406         contains=grep
1407 else
1408         contains=contains
1409 fi
1410 rm -f grimble
1411 : the following should work in any shell
1412 case "$contains" in
1413 contains*)
1414         echo " "
1415         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1416         cat >contains <<'EOSS'
1417 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1418 EOSS
1419 chmod +x contains
1420 esac
1421
1422 : Find the path to the source tree
1423 case "$src" in
1424 '') case "$0" in
1425     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1426          case "$src" in
1427          /*)    ;;
1428          *)     src=`cd ../$src && pwd` ;;
1429          esac
1430          ;;
1431     *)   src='.';;
1432     esac;;
1433 esac
1434 case "$src" in
1435 '')     src=/
1436         rsrc=/
1437         ;;
1438 /*) rsrc="$src";;
1439 *) rsrc="../$src";;
1440 esac
1441 if test -f $rsrc/Configure && \
1442         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1443 then
1444    : found it, so we are ok.
1445 else
1446         rsrc=''
1447         for src in . .. ../.. ../../.. ../../../..; do
1448                 if test -f ../$src/Configure && \
1449                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1450                 then
1451                         rsrc=../$src
1452                         break
1453                 fi
1454         done
1455 fi
1456 case "$rsrc" in
1457 '')
1458         cat <<EOM >&4
1459
1460 Sorry, I can't seem to locate the source dir for $package.  Please start
1461 Configure with an explicit path -- i.e. /some/path/Configure.
1462
1463 EOM
1464         exit 1
1465         ;;
1466 ../.)   rsrc='..';;
1467 *)
1468         echo " "
1469         echo "Sources for $package found in \"$src\"." >&4
1470         ;;
1471 esac
1472
1473 : script used to extract .SH files with variable substitutions
1474 cat >extract <<'EOS'
1475 CONFIGDOTSH=true
1476 echo "Doing variable substitutions on .SH files..."
1477 if test -f $src/MANIFEST; then
1478         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1479 else
1480         echo "(Looking for .SH files under the source directory.)"
1481         set x `(cd $src; find . -name "*.SH" -print)`
1482 fi
1483 shift
1484 case $# in
1485 0) set x `(cd $src; echo *.SH)`; shift;;
1486 esac
1487 if test ! -f $src/$1; then
1488         shift
1489 fi
1490 mkdir_p='
1491 name=$1;
1492 create="";
1493 while test $name; do
1494         if test ! -d "$name"; then
1495                 create="$name $create";
1496                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1497                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1498         else
1499                 name="";
1500         fi;
1501 done;
1502 for file in $create; do
1503         mkdir $file;
1504 done
1505 '
1506 for file in $*; do
1507         case "$src" in
1508         ".")
1509                 case "$file" in
1510                 */*)
1511                         dir=`expr X$file : 'X\(.*\)/'`
1512                         file=`expr X$file : 'X.*/\(.*\)'`
1513                         (cd $dir && . ./$file)
1514                         ;;
1515                 *)
1516                         . ./$file
1517                         ;;
1518                 esac
1519                 ;;
1520         *)
1521                 case "$file" in
1522                 */*)
1523                         dir=`expr X$file : 'X\(.*\)/'`
1524                         file=`expr X$file : 'X.*/\(.*\)'`
1525                         (set x $dir; shift; eval $mkdir_p)
1526                         sh <$src/$dir/$file
1527                         ;;
1528                 *)
1529                         sh <$src/$file
1530                         ;;
1531                 esac
1532                 ;;
1533         esac
1534 done
1535 if test -f $src/config_h.SH; then
1536         if test ! -f config.h; then
1537         : oops, they left it out of MANIFEST, probably, so do it anyway.
1538         . $src/config_h.SH
1539         fi
1540 fi
1541 EOS
1542
1543 : extract files and exit if asked to do so
1544 case "$extractsh" in
1545 true)
1546         case "$realsilent" in
1547         true) ;;
1548         *) exec 1>&4;;
1549         esac
1550         case "$config_sh" in
1551         '') config_sh='config.sh';;
1552         esac
1553         echo " "
1554         echo "Fetching answers from $config_sh..."
1555         cd ..
1556         . $config_sh
1557         test "$override" && . ./optdef.sh
1558         echo " "
1559         . UU/extract
1560         rm -rf UU
1561         echo "Done."
1562         exit 0
1563         ;;
1564 esac
1565
1566 : Eunice requires " " instead of "", can you believe it
1567 echo " "
1568 : Here we go...
1569 echo "Beginning of configuration questions for $package."
1570
1571 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1572
1573 : first determine how to suppress newline on echo command
1574 echo " "
1575 echo "Checking echo to see how to suppress newlines..."
1576 (echo "hi there\c" ; echo " ") >.echotmp
1577 if $contains c .echotmp >/dev/null 2>&1 ; then
1578         echo "...using -n."
1579         n='-n'
1580         c=''
1581 else
1582         cat <<'EOM'
1583 ...using \c
1584 EOM
1585         n=''
1586         c='\c'
1587 fi
1588 echo $n "The star should be here-->$c"
1589 echo '*'
1590 rm -f .echotmp
1591
1592 : Now test for existence of everything in MANIFEST
1593 echo " "
1594 if test -f $rsrc/MANIFEST; then
1595         echo "First let's make sure your kit is complete.  Checking..." >&4
1596         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1597         rm -f missing
1598         tmppwd=`pwd`
1599         for filelist in x??; do
1600                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1601         done
1602         if test -s missing; then
1603                 cat missing >&4
1604                 cat >&4 <<'EOM'
1605
1606 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1607
1608 You have the option of continuing the configuration process, despite the
1609 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1610 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1611 and contact the author (perlbug@perl.org).
1612
1613 EOM
1614                 echo $n "Continue? [n] $c" >&4
1615                 read ans
1616                 case "$ans" in
1617                 y*)
1618                         echo "Continuing..." >&4
1619                         rm -f missing
1620                         ;;
1621                 *)
1622                         echo "ABORTING..." >&4
1623                         kill $$
1624                         ;;
1625                 esac
1626         else
1627                 echo "Looks good..."
1628         fi
1629 else
1630         echo "There is no MANIFEST file.  I hope your kit is complete !"
1631 fi
1632 rm -f missing x??
1633
1634 echo " "
1635 : Find the appropriate value for a newline for tr
1636 if test -n "$DJGPP"; then
1637        trnl='\012'
1638 fi
1639 if test X"$trnl" = X; then
1640         case "`echo foo|tr '\n' x 2>/dev/null`" in
1641         foox) trnl='\n' ;;
1642         esac
1643 fi
1644 if test X"$trnl" = X; then
1645         case "`echo foo|tr '\012' x 2>/dev/null`" in
1646         foox) trnl='\012' ;;
1647         esac
1648 fi
1649 if test X"$trnl" = X; then
1650         cat <<EOM >&2
1651
1652 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1653
1654 EOM
1655         exit 1
1656 fi
1657
1658 : compute the number of columns on the terminal for proper question formatting
1659 case "$COLUMNS" in
1660 '') COLUMNS='80';;
1661 esac
1662
1663 : set up the echo used in my read
1664 myecho="case \"\$xxxm\" in
1665 '') echo $n \"\$rp $c\" >&4;;
1666 *) case \"\$rp\" in
1667         '') echo $n \"[\$xxxm] $c\";;
1668         *)
1669                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1670                         echo \"\$rp\" >&4
1671                         echo $n \"[\$xxxm] $c\" >&4
1672                 else
1673                         echo $n \"\$rp [\$xxxm] $c\" >&4
1674                 fi
1675                 ;;
1676         esac;;
1677 esac"
1678
1679 : now set up to do reads with possible shell escape and default assignment
1680 cat <<EOSC >myread
1681 $startsh
1682 xxxm=\$dflt
1683 $myecho
1684 ans='!'
1685 case "\$fastread" in
1686 yes) case "\$dflt" in
1687         '') ;;
1688         *) ans='';
1689                 case "\$silent-\$rp" in
1690                 true-) ;;
1691                 *) echo " " >&4;;
1692                 esac;;
1693         esac;;
1694 *) case "\$silent" in
1695         true) case "\$rp" in
1696                 '') ans='';;
1697                 esac;;
1698         esac;;
1699 esac
1700 while expr "X\$ans" : "X!" >/dev/null; do
1701         read answ
1702         set x \$xxxm
1703         shift
1704         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1705         case  "\$answ" in
1706         "!")
1707                 sh 1>&4
1708                 echo " "
1709                 $myecho
1710                 ;;
1711         !*)
1712                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1713                 shift
1714                 sh 1>&4 -c "\$*"
1715                 echo " "
1716                 $myecho
1717                 ;;
1718         "\$ans")
1719                 case "\$ans" in
1720                 \\&*)
1721                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1722                         shift
1723                         case "\$1" in
1724                         -d)
1725                                 fastread=yes
1726                                 echo "(OK, I'll run with -d after this question.)" >&4
1727                                 ;;
1728                         -*)
1729                                 echo "*** Sorry, \$1 not supported yet." >&4
1730                                 ;;
1731                         esac
1732                         $myecho
1733                         ans=!
1734                         ;;
1735                 esac;;
1736         *)
1737                 case "\$aok" in
1738                 y)
1739                         echo "*** Substitution done -- please confirm."
1740                         xxxm="\$ans"
1741                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1742                         xxxm="\$ans"
1743                         ans=!
1744                         ;;
1745                 *)
1746                         echo "*** Error -- try again."
1747                         ans=!
1748                         ;;
1749                 esac
1750                 $myecho
1751                 ;;
1752         esac
1753         case "\$ans\$xxxm\$nostick" in
1754         '')
1755                 ans=!
1756                 $myecho
1757                 ;;
1758         esac
1759 done
1760 case "\$ans" in
1761 '') ans="\$xxxm";;
1762 esac
1763 EOSC
1764
1765 : create .config dir to save info across Configure sessions
1766 test -d ../.config || mkdir ../.config
1767 cat >../.config/README <<EOF
1768 This directory created by Configure to save information that should
1769 persist across sessions for $package.
1770
1771 You may safely delete it if you wish.
1772 EOF
1773
1774 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1775 case "$usedevel" in
1776 $define|true|[yY]*) ;;
1777 *) case "$xversion" in
1778    *[13579])
1779         cat >&4 <<EOH
1780 *** WHOA THERE!!! ***
1781
1782     This is an UNSTABLE DEVELOPMENT release.
1783     The version of this $package distribution is $xversion, that is, odd,
1784     (as opposed to even) and that signifies a development release.
1785     If you want a maintenance release, you want an even-numbered version.)
1786
1787     Do ***NOT*** install this into production use.
1788     Data corruption and crashes are possible.
1789
1790     It is most seriously suggested that you do not continue any further
1791     unless you want to help in developing and debugging Perl.
1792
1793 EOH
1794         rp='Do you really want to continue?'
1795         dflt='n'
1796         . ./myread
1797         case "$ans" in
1798         [yY]) echo >&4 "Okay, continuing." ;;
1799         *) echo >&4 "Okay, bye."
1800            exit 1
1801            ;;
1802         esac
1803         ;;
1804     esac
1805     ;;
1806 esac
1807
1808 : general instructions
1809 needman=true
1810 firsttime=true
1811 user=`(logname) 2>/dev/null`
1812 case "$user" in
1813 '') user=`whoami 2>&1`;;
1814 esac
1815 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1816         firsttime=false
1817         echo " "
1818         rp='Would you like to see the instructions?'
1819         dflt=n
1820         . ./myread
1821         case "$ans" in
1822         [yY]*) ;;
1823         *) needman=false;;
1824         esac
1825 fi
1826 if $needman; then
1827         cat <<EOH
1828
1829 This installation shell script will examine your system and ask you questions
1830 to determine how the perl5 package should be installed. If you get
1831 stuck on a question, you may use a ! shell escape to start a subshell or
1832 execute a command.  Many of the questions will have default answers in square
1833 brackets; typing carriage return will give you the default.
1834
1835 On some of the questions which ask for file or directory names you are allowed
1836 to use the ~name construct to specify the login directory belonging to "name",
1837 even if you don't have a shell which knows about that.  Questions where this is
1838 allowed will be marked "(~name ok)".
1839
1840 EOH
1841         rp=''
1842         dflt='Type carriage return to continue'
1843         . ./myread
1844         cat <<'EOH'
1845
1846 The prompter used in this script allows you to use shell variables and
1847 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1848 in the default answer, as if the default line was a set of arguments given to a
1849 script shell.  This means you may also use $* to repeat the whole default line,
1850 so you do not have to re-type everything to add something to the default.
1851
1852 Everytime there is a substitution, you will have to confirm.  If there is an
1853 error (e.g. an unmatched backtick), the default answer will remain unchanged
1854 and you will be prompted again.
1855
1856 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1857 the questions and use the computed defaults (or the previous answers if there
1858 was already a config.sh file). Type 'Configure -h' for a list of options.
1859 You may also start interactively and then answer '& -d' at any prompt to turn
1860 on the non-interactive behaviour for the remainder of the execution.
1861
1862 EOH
1863         . ./myread
1864         cat <<EOH
1865
1866 Much effort has been expended to ensure that this shell script will run on any
1867 Unix system.  If despite that it blows up on yours, your best bet is to edit
1868 Configure and run it again.  If you can't run Configure for some reason,
1869 you'll have to generate a config.sh file by hand.  Whatever problems you
1870 have, let me (perlbug@perl.org) know how I blew it.
1871
1872 This installation script affects things in two ways:
1873
1874 1) it may do direct variable substitutions on some of the files included
1875    in this kit.
1876 2) it builds a config.h file for inclusion in C programs.  You may edit
1877    any of these files as the need arises after running this script.
1878
1879 If you make a mistake on a question, there is no easy way to back up to it
1880 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1881 files.  Configure will offer to let you do this before it runs the SH files.
1882
1883 EOH
1884         dflt='Type carriage return to continue'
1885         . ./myread
1886         case "$firsttime" in
1887         true) echo $user >>../.config/instruct;;
1888         esac
1889 fi
1890
1891 : find out where common programs are
1892 echo " "
1893 echo "Locating common programs..." >&4
1894 cat <<EOSC >loc
1895 $startsh
1896 case \$# in
1897 0) exit 1;;
1898 esac
1899 thing=\$1
1900 shift
1901 dflt=\$1
1902 shift
1903 for dir in \$*; do
1904         case "\$thing" in
1905         .)
1906         if test -d \$dir/\$thing; then
1907                 echo \$dir
1908                 exit 0
1909         fi
1910         ;;
1911         *)
1912         for thisthing in \$dir/\$thing; do
1913                 : just loop through to pick last item
1914         done
1915         if test -f \$thisthing; then
1916                 echo \$thisthing
1917                 exit 0
1918         elif test -f \$dir/\$thing.exe; then
1919                 if test -n "$DJGPP"; then
1920                         echo \$dir/\$thing.exe
1921                 else
1922                         : on Eunice apparently
1923                         echo \$dir/\$thing
1924                 fi
1925                 exit 0
1926         fi
1927         ;;
1928         esac
1929 done
1930 echo \$dflt
1931 exit 1
1932 EOSC
1933 chmod +x loc
1934 $eunicefix loc
1935 loclist="
1936 awk
1937 cat
1938 comm
1939 cp
1940 echo
1941 expr
1942 grep
1943 ls
1944 make
1945 mkdir
1946 rm
1947 sed
1948 sort
1949 touch
1950 tr
1951 uniq
1952 "
1953 trylist="
1954 Mcc
1955 ar
1956 byacc
1957 cpp
1958 csh
1959 date
1960 egrep
1961 gzip
1962 less
1963 ln
1964 more
1965 nm
1966 nroff
1967 pg
1968 test
1969 uname
1970 zip
1971 "
1972 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1973 pth="$pth /lib /usr/lib"
1974 for file in $loclist; do
1975         eval xxx=\$$file
1976         case "$xxx" in
1977         /*|?:[\\/]*)
1978                 if test -f "$xxx"; then
1979                         : ok
1980                 else
1981                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1982                         xxx=`./loc $file $file $pth`
1983                 fi
1984                 ;;
1985         '') xxx=`./loc $file $file $pth`;;
1986         *) xxx=`./loc $xxx $xxx $pth`;;
1987         esac
1988         eval $file=$xxx
1989         eval _$file=$xxx
1990         case "$xxx" in
1991         /*)
1992                 echo $file is in $xxx.
1993                 ;;
1994         ?:[\\/]*)
1995                 echo $file is in $xxx.
1996                 ;;
1997         *)
1998                 echo "I don't know where '$file' is, and my life depends on it." >&4
1999                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2000                 exit 1
2001                 ;;
2002         esac
2003 done
2004 echo " "
2005 echo "Don't worry if any of the following aren't found..."
2006 say=offhand
2007 for file in $trylist; do
2008         eval xxx=\$$file
2009         case "$xxx" in
2010         /*|?:[\\/]*)
2011                 if test -f "$xxx"; then
2012                         : ok
2013                 else
2014                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2015                         xxx=`./loc $file $file $pth`
2016                 fi
2017                 ;;
2018         '') xxx=`./loc $file $file $pth`;;
2019         *) xxx=`./loc $xxx $xxx $pth`;;
2020         esac
2021         eval $file=$xxx
2022         eval _$file=$xxx
2023         case "$xxx" in
2024         /*)
2025                 echo $file is in $xxx.
2026                 ;;
2027         ?:[\\/]*)
2028                 echo $file is in $xxx.
2029                 ;;
2030         *)
2031                 echo "I don't see $file out there, $say."
2032                 say=either
2033                 ;;
2034         esac
2035 done
2036 case "$egrep" in
2037 egrep)
2038         echo "Substituting grep for egrep."
2039         egrep=$grep
2040         ;;
2041 esac
2042 case "$ln" in
2043 ln)
2044         echo "Substituting cp for ln."
2045         ln=$cp
2046         ;;
2047 esac
2048 case "$test" in
2049 test)
2050         echo "Hopefully test is built into your sh."
2051         ;;
2052 *)
2053         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2054                 echo "Using the test built into your sh."
2055                 test=test
2056                 _test=test
2057         fi
2058         ;;
2059 esac
2060 case "$echo" in
2061 echo)
2062         echo "Hopefully echo is built into your sh."
2063         ;;
2064 '') ;;
2065 *)
2066         echo " "
2067 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2068         $echo $n "hi there$c" >foo1
2069         echo $n "hi there$c" >foo2
2070         if cmp foo1 foo2 >/dev/null 2>&1; then
2071                 echo "They are compatible.  In fact, they may be identical."
2072         else
2073                 case "$n" in
2074                 '-n') n='' c='\c';;
2075                 *) n='-n' c='';;
2076                 esac
2077                 cat <<FOO
2078 They are not compatible!  You are probably running ksh on a non-USG system.
2079 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2080 have echo built in and we may have to run some Bourne shell scripts.  That
2081 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2082
2083 FOO
2084                 $echo $n "The star should be here-->$c"
2085                 $echo "*"
2086         fi
2087         $rm -f foo1 foo2
2088         ;;
2089 esac
2090
2091 cat <<EOS >checkcc
2092 $startsh
2093 EOS
2094 cat <<'EOSC' >>checkcc
2095 case "$cc" in
2096 '') ;;
2097 *)  $rm -f try try.*
2098     $cat >try.c <<EOM
2099 int main(int argc, char *argv[]) {
2100   return 0;
2101 }
2102 EOM
2103     if $cc -o try try.c; then
2104        :
2105     else
2106         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2107         despair=yes
2108         trygcc=yes
2109         case "$cc" in
2110         *gcc*) trygcc=no ;;
2111         esac
2112         case "`$cc -v -c try.c 2>&1`" in
2113         *gcc*) trygcc=no ;;
2114         esac
2115         if $test X"$trygcc" = Xyes; then
2116             if gcc -o try -c try.c; then
2117                 echo " "
2118                 echo "You seem to have a working gcc, though." >&4
2119                 rp="Would you like to use it?"
2120                 dflt=y
2121                 if $test -f myread; then
2122                     . ./myread
2123                 else
2124                     if $test -f UU/myread; then
2125                         . ./UU/myread
2126                     else
2127                         echo "Cannot find myread, sorry.  Aborting." >&2
2128                         exit 1
2129                     fi
2130                 fi  
2131                 case "$ans" in
2132                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2133                 esac
2134             fi
2135         fi
2136         if $test X"$despair" = Xyes; then
2137             echo "You need to find a working C compiler." >&4
2138             echo "I cannot continue any further, aborting." >&4
2139             exit 1
2140         fi
2141     fi
2142     $rm -f try try.*
2143     ;;
2144 esac
2145 EOSC
2146
2147 : determine whether symbolic links are supported
2148 echo " "
2149 $touch blurfl
2150 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2151         echo "Symbolic links are supported." >&4
2152         lns="$ln -s"
2153 else
2154         echo "Symbolic links are NOT supported." >&4
2155         lns="$ln"
2156 fi
2157 $rm -f blurfl sym
2158
2159 : see whether [:lower:] and [:upper:] are supported character classes
2160 echo " "
2161 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2162 ABYZ)
2163         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2164         up='[:upper:]'
2165         low='[:lower:]'
2166         ;;
2167 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2168         # (0xc9 and 0xd1), therefore that is a nice testing point.
2169         if test "X$up" = X -o "X$low" = X; then
2170             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2171             ij) up='[A-Z]'
2172                 low='[a-z]'
2173                 ;;
2174             esac
2175         fi
2176         if test "X$up" = X -o "X$low" = X; then
2177             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2178             ij) up='A-Z'
2179                 low='a-z'
2180                 ;;
2181             esac
2182         fi
2183         if test "X$up" = X -o "X$low" = X; then
2184             case "`echo IJ | od -x 2>/dev/null`" in
2185             *C9D1*|*c9d1*)
2186                 echo "Hey, this might be EBCDIC." >&4
2187                 if test "X$up" = X -o "X$low" = X; then
2188                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2189                     ij) up='[A-IJ-RS-Z]'
2190                         low='[a-ij-rs-z]'
2191                         ;;
2192                     esac
2193                 fi
2194                 if test "X$up" = X -o "X$low" = X; then
2195                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2196                     ij) up='A-IJ-RS-Z'
2197                         low='a-ij-rs-z'
2198                         ;;
2199                     esac
2200                 fi
2201                 ;;
2202             esac
2203         fi
2204 esac
2205 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2206 ij)
2207     echo "Using $up and $low to convert case." >&4
2208     ;;
2209 *)
2210     echo "I don't know how to translate letters from upper to lower case." >&4
2211     echo "Your tr is not acting any way I know of." >&4
2212     exit 1
2213     ;;
2214 esac
2215 : set up the translation script tr, must be called with ./tr of course
2216 cat >tr <<EOSC
2217 $startsh
2218 case "\$1\$2" in
2219 '[A-Z][a-z]') exec $tr '$up' '$low';;
2220 '[a-z][A-Z]') exec $tr '$low' '$up';;
2221 esac
2222 exec $tr "\$@"
2223 EOSC
2224 chmod +x tr
2225 $eunicefix tr
2226
2227 : Try to determine whether config.sh was made on this system
2228 case "$config_sh" in
2229 '')
2230 myuname=`$uname -a 2>/dev/null`
2231 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2232 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2233 # because the A-Z/a-z are not consecutive.
2234 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2235         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2236 newmyuname="$myuname"
2237 dflt=n
2238 case "$knowitall" in
2239 '')
2240         if test -f ../config.sh; then
2241                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2242                         eval "`grep myuname= ../config.sh`"
2243                 fi
2244                 if test "X$myuname" = "X$newmyuname"; then
2245                         dflt=y
2246                 fi
2247         fi
2248         ;;
2249 *) dflt=y;;
2250 esac
2251
2252 : Get old answers from old config file if Configure was run on the
2253 : same system, otherwise use the hints.
2254 hint=default
2255 cd ..
2256 if test -f config.sh; then
2257         echo " "
2258         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2259         . UU/myread
2260         case "$ans" in
2261         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2262         *)  echo "Fetching default answers from your old config.sh file..." >&4
2263                 tmp_n="$n"
2264                 tmp_c="$c"
2265                 tmp_sh="$sh"
2266                 . ./config.sh
2267                 cp config.sh UU
2268                 n="$tmp_n"
2269                 c="$tmp_c"
2270                 : Older versions did not always set $sh.  Catch re-use of such
2271                 : an old config.sh.
2272                 case "$sh" in
2273                 '') sh="$tmp_sh" ;;
2274                 esac
2275                 hint=previous
2276                 ;;
2277         esac
2278 fi
2279 . ./UU/checkcc
2280 if test ! -f config.sh; then
2281         $cat <<EOM
2282
2283 First time through, eh?  I have some defaults handy for some systems
2284 that need some extra help getting the Configure answers right:
2285
2286 EOM
2287         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2288         dflt=''
2289         : Half the following guesses are probably wrong... If you have better
2290         : tests or hints, please send them to perlbug@perl.org
2291         : The metaconfig authors would also appreciate a copy...
2292         $test -f /irix && osname=irix
2293         $test -f /xenix && osname=sco_xenix
2294         $test -f /dynix && osname=dynix
2295         $test -f /dnix && osname=dnix
2296         $test -f /lynx.os && osname=lynxos
2297         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2298         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2299         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2300         $test -f /bin/mips && /bin/mips && osname=mips
2301         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2302                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2303         $test -d /usr/apollo/bin && osname=apollo
2304         $test -f /etc/saf/_sactab && osname=svr4
2305         $test -d /usr/include/minix && osname=minix
2306         if $test -d /MachTen -o -d /MachTen_Folder; then
2307                 osname=machten
2308                 if $test -x /sbin/version; then
2309                         osvers=`/sbin/version | $awk '{print $2}' |
2310                         $sed -e 's/[A-Za-z]$//'`
2311                 elif $test -x /usr/etc/version; then
2312                         osvers=`/usr/etc/version | $awk '{print $2}' |
2313                         $sed -e 's/[A-Za-z]$//'`
2314                 else
2315                         osvers="$2.$3"
2316                 fi
2317         fi
2318
2319         $test -f /sys/posix.dll &&
2320                 $test -f /usr/bin/what &&
2321                 set X `/usr/bin/what /sys/posix.dll` &&
2322                 $test "$3" = UWIN &&
2323                 osname=uwin &&
2324                 osvers="$5"
2325
2326         if $test -f $uname; then
2327                 set X $myuname
2328                 shift
2329
2330                 case "$5" in
2331                 fps*) osname=fps ;;
2332                 mips*)
2333                         case "$4" in
2334                         umips) osname=umips ;;
2335                         *) osname=mips ;;
2336                         esac;;
2337                 [23]100) osname=mips ;;
2338                 next*) osname=next ;;
2339                 i386*)
2340                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2341                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2342                                 osname='sco'
2343                                 osvers=$tmp
2344                         elif $test -f /etc/kconfig; then
2345                                 osname=isc
2346                                 if test "$lns" = "$ln -s"; then
2347                                         osvers=4
2348                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2349                                         osvers=3
2350                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2351                                         osvers=2
2352                                 fi
2353                         fi
2354                         tmp=''
2355                         ;;
2356                 pc*)
2357                         if test -n "$DJGPP"; then
2358                                 osname=dos
2359                                 osvers=djgpp
2360                         fi
2361                         ;;
2362                 esac
2363
2364                 case "$1" in
2365                 aix) osname=aix
2366                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2367                         case "$tmp" in
2368                         'not found') osvers="$4"."$3" ;;
2369                         '<3240'|'<>3240') osvers=3.2.0 ;;
2370                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2371                         '=3250'|'>3250') osvers=3.2.5 ;;
2372                         *) osvers=$tmp;;
2373                         esac
2374                         ;;
2375                 bsd386) osname=bsd386
2376                         osvers=`$uname -r`
2377                         ;;
2378                 cygwin*) osname=cygwin
2379                         osvers="$3"
2380                         ;;
2381                 *dc.osx) osname=dcosx
2382                         osvers="$3"
2383                         ;;
2384                 dnix) osname=dnix
2385                         osvers="$3"
2386                         ;;
2387                 domainos) osname=apollo
2388                         osvers="$3"
2389                         ;;
2390                 dgux) osname=dgux 
2391                         osvers="$3"
2392                         ;;
2393                 dynixptx*) osname=dynixptx
2394                         osvers=`echo "$4"|sed 's/^v//'`
2395                         ;;
2396                 freebsd) osname=freebsd 
2397                         osvers="$3" ;;
2398                 genix) osname=genix ;;
2399                 hp*) osname=hpux 
2400                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2401                         ;;
2402                 irix*) osname=irix
2403                         case "$3" in
2404                         4*) osvers=4 ;;
2405                         5*) osvers=5 ;;
2406                         *)      osvers="$3" ;;
2407                         esac
2408                         ;;
2409                 linux) osname=linux
2410                         case "$3" in
2411                         *)      osvers="$3" ;;
2412                         esac
2413                         ;;
2414                 MiNT) osname=mint
2415                         ;;
2416                 netbsd*) osname=netbsd
2417                         osvers="$3"
2418                         ;;
2419                 news-os) osvers="$3"
2420                         case "$3" in
2421                         4*) osname=newsos4 ;;
2422                         *) osname=newsos ;;
2423                         esac
2424                         ;;
2425                 next*) osname=next ;;
2426                 POSIX-BC | posix-bc ) osname=posix-bc
2427                         osvers="$3"
2428                         ;;
2429                 powerux | power_ux | powermax_os | powermaxos | \
2430                 powerunix | power_unix) osname=powerux
2431                         osvers="$3"
2432                         ;;
2433                 qnx) osname=qnx
2434                         osvers="$4"
2435                         ;;
2436                 solaris) osname=solaris
2437                         case "$3" in
2438                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2439                         *)      osvers="$3" ;;
2440                         esac
2441                         ;;
2442                 sunos) osname=sunos
2443                         case "$3" in
2444                         5*) osname=solaris
2445                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2446                         *)      osvers="$3" ;;
2447                         esac
2448                         ;;
2449                 titanos) osname=titanos
2450                         case "$3" in
2451                         1*) osvers=1 ;;
2452                         2*) osvers=2 ;;
2453                         3*) osvers=3 ;;
2454                         4*) osvers=4 ;;
2455                         *)      osvers="$3" ;;
2456                         esac
2457                         ;;
2458                 ultrix) osname=ultrix
2459                         osvers="$3"
2460                         ;;
2461                 osf1|mls+)      case "$5" in
2462                                 alpha)
2463                                         osname=dec_osf
2464                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2465                                         case "$osvers" in
2466                                         [1-9].[0-9]*) ;;
2467                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2468                                         esac
2469                                         ;;
2470                         hp*)    osname=hp_osf1  ;;
2471                         mips)   osname=mips_osf1 ;;
2472                         esac
2473                         ;;
2474                 unixware) osname=svr5
2475                         osvers="$4"
2476                         ;;
2477                 uts) osname=uts
2478                         osvers="$3"
2479                         ;;
2480                 $2) case "$osname" in
2481                         *isc*) ;;
2482                         *freebsd*) ;;
2483                         svr*)
2484                                 : svr4.x or possibly later
2485                                 case "svr$3" in 
2486                                 ${osname}*)
2487                                         osname=svr$3
2488                                         osvers=$4
2489                                         ;;
2490                                 esac
2491                                 case "$osname" in
2492                                 svr4.0)
2493                                         : Check for ESIX
2494                                         if test -f /stand/boot ; then
2495                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2496                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2497                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2498                                                         if test -n "$isesix"; then
2499                                                                 osname=esix4
2500                                                         fi
2501                                                 fi
2502                                         fi
2503                                         ;;
2504                                 esac
2505                                 ;;
2506                         *)      if test -f /etc/systemid; then
2507                                         osname=sco
2508                                         set `echo $3 | $sed 's/\./ /g'` $4
2509                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2510                                                 osvers=$1.$2.$3
2511                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2512                                                 osvers=$1.$2
2513                                         elif $test -f $src/hints/sco_$1.sh; then
2514                                                 osvers=$1
2515                                         fi
2516                                 else
2517                                         case "$osname" in
2518                                         '') : Still unknown.  Probably a generic Sys V.
2519                                                 osname="sysv"
2520                                                 osvers="$3"
2521                                                 ;;
2522                                         esac
2523                                 fi
2524                                 ;;
2525                         esac
2526                         ;;
2527                 *)      case "$osname" in
2528                         '') : Still unknown.  Probably a generic BSD.
2529                                 osname="$1"
2530                                 osvers="$3"
2531                                 ;;
2532                         esac
2533                         ;;
2534                 esac
2535         else
2536                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2537                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2538                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2539                                 osname=news_os
2540                         fi
2541                         $rm -f UU/kernel.what
2542                 elif test -d c:/.; then
2543                         set X $myuname
2544                         osname=os2
2545                         osvers="$5"
2546                 fi
2547         fi
2548         
2549         : Now look for a hint file osname_osvers, unless one has been
2550         : specified already.
2551         case "$hintfile" in
2552         ''|' ')
2553                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2554                 : Also try without trailing minor version numbers.
2555                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2556                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2557                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2558                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2559                 case "$file" in
2560                 '') dflt=none ;;
2561                 *)  case "$osvers" in
2562                         '') dflt=$file
2563                                 ;;
2564                         *)  if $test -f $src/hints/$file.sh ; then
2565                                         dflt=$file
2566                                 elif $test -f $src/hints/$xfile.sh ; then
2567                                         dflt=$xfile
2568                                 elif $test -f $src/hints/$xxfile.sh ; then
2569                                         dflt=$xxfile
2570                                 elif $test -f $src/hints/$xxxfile.sh ; then
2571                                         dflt=$xxxfile
2572                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2573                                         dflt=$xxxxfile
2574                                 elif $test -f "$src/hints/${osname}.sh" ; then
2575                                         dflt="${osname}"
2576                                 else
2577                                         dflt=none
2578                                 fi
2579                                 ;;
2580                         esac
2581                         ;;
2582                 esac
2583                 if $test -f Policy.sh ; then
2584                         case "$dflt" in
2585                         *Policy*) ;;
2586                         none) dflt="Policy" ;;
2587                         *) dflt="Policy $dflt" ;;
2588                         esac
2589                 fi
2590                 ;;
2591         *)
2592                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2593                 ;;
2594         esac
2595
2596         if $test -f Policy.sh ; then
2597                 $cat <<EOM
2598
2599 There's also a Policy hint file available, which should make the
2600 site-specific (policy) questions easier to answer.
2601 EOM
2602
2603         fi
2604
2605         $cat <<EOM
2606
2607 You may give one or more space-separated answers, or "none" if appropriate.
2608 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2609 is a good thing.  DO NOT give a wrong version or a wrong OS.
2610
2611 EOM
2612
2613         rp="Which of these apply, if any?"
2614         . UU/myread
2615         tans=$ans
2616         for file in $tans; do
2617                 if $test X$file = XPolicy -a -f Policy.sh; then
2618                         . Policy.sh
2619                         $cat Policy.sh >> UU/config.sh
2620                 elif $test -f $src/hints/$file.sh; then
2621                         . $src/hints/$file.sh
2622                         $cat $src/hints/$file.sh >> UU/config.sh
2623                 elif $test X$tans = X -o X$tans = Xnone ; then
2624                         : nothing
2625                 else
2626                         : Give one chance to correct a possible typo.
2627                         echo "$file.sh does not exist"
2628                         dflt=$file
2629                         rp="hint to use instead?"
2630                         . UU/myread
2631                         for file in $ans; do
2632                                 if $test -f "$src/hints/$file.sh"; then
2633                                         . $src/hints/$file.sh
2634                                         $cat $src/hints/$file.sh >> UU/config.sh
2635                                 elif $test X$ans = X -o X$ans = Xnone ; then
2636                                         : nothing
2637                                 else
2638                                         echo "$file.sh does not exist -- ignored."
2639                                 fi
2640                         done
2641                 fi
2642         done
2643
2644         hint=recommended
2645         : Remember our hint file for later.
2646         if $test -f "$src/hints/$file.sh" ; then
2647                 hintfile="$file"
2648         else
2649                 hintfile=''
2650         fi
2651 fi
2652 cd UU
2653 ;;
2654 *)
2655         echo " "
2656         echo "Fetching default answers from $config_sh..." >&4
2657         tmp_n="$n"
2658         tmp_c="$c"
2659         cd ..
2660         cp $config_sh config.sh 2>/dev/null
2661         chmod +w config.sh
2662         . ./config.sh
2663         cd UU
2664         cp ../config.sh .
2665         n="$tmp_n"
2666         c="$tmp_c"
2667         hint=previous
2668         ;;
2669 esac
2670 test "$override" && . ./optdef.sh
2671 myuname="$newmyuname"
2672
2673 : Restore computed paths
2674 for file in $loclist $trylist; do
2675         eval $file="\$_$file"
2676 done
2677
2678 cat << EOM
2679
2680 Configure uses the operating system name and version to set some defaults.
2681 The default value is probably right if the name rings a bell. Otherwise,
2682 since spelling matters for me, either accept the default or answer "none"
2683 to leave it blank.
2684
2685 EOM
2686 case "$osname" in
2687         ''|' ')
2688                 case "$hintfile" in
2689                 ''|' '|none) dflt=none ;;
2690                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2691                 esac
2692                 ;;
2693         *) dflt="$osname" ;;
2694 esac
2695 rp="Operating system name?"
2696 . ./myread
2697 case "$ans" in
2698 none)  osname='' ;;
2699 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2700 esac
2701 echo " "
2702 case "$osvers" in
2703         ''|' ')
2704                 case "$hintfile" in
2705                 ''|' '|none) dflt=none ;;
2706                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2707                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2708                         case "$dflt" in
2709                         ''|' ') dflt=none ;;
2710                         esac
2711                         ;;
2712                 esac
2713                 ;;
2714         *) dflt="$osvers" ;;
2715 esac
2716 rp="Operating system version?"
2717 . ./myread
2718 case "$ans" in
2719 none)  osvers='' ;;
2720 *) osvers="$ans" ;;
2721 esac
2722
2723
2724 . ./posthint.sh
2725
2726 : who configured the system
2727 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2728 cf_by=`(logname) 2>/dev/null`
2729 case "$cf_by" in
2730 "")
2731         cf_by=`(whoami) 2>/dev/null`
2732         case "$cf_by" in
2733         "") cf_by=unknown ;;
2734         esac ;;
2735 esac
2736
2737 : set up the script used to warn in case of inconsistency
2738 cat <<EOS >whoa
2739 $startsh
2740 EOS
2741 cat <<'EOSC' >>whoa
2742 dflt=y
2743 echo " "
2744 echo "*** WHOA THERE!!! ***" >&4
2745 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2746 rp="    Keep the $hint value?"
2747 . ./myread
2748 case "$ans" in
2749 y) td=$was; tu=$was;;
2750 esac
2751 EOSC
2752
2753 : function used to set $1 to $val
2754 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2755 case "$val$was" in
2756 $define$undef) . ./whoa; eval "$var=\$td";;
2757 $undef$define) . ./whoa; eval "$var=\$tu";;
2758 *) eval "$var=$val";;
2759 esac'
2760
2761 case "$usethreads" in
2762 $define|true|[yY]*)     dflt='y';;
2763 *) dflt='n';;
2764 esac
2765 cat <<EOM
2766
2767 Perl can be built to take advantage of threads on some systems.
2768 To do so, Configure can be run with -Dusethreads.
2769
2770 Note that threading is a highly experimental feature, and
2771 some known race conditions still remain.  If you choose to try
2772 it, be very sure to not actually deploy it for production
2773 purposes.  README.threads has more details, and is required
2774 reading if you enable threads.
2775
2776 If this doesn't make any sense to you, just accept the default '$dflt'.
2777 EOM
2778 rp='Build a threading Perl?'
2779 . ./myread
2780 case "$ans" in
2781 y|Y)    val="$define" ;;
2782 *)      val="$undef" ;;
2783 esac
2784 set usethreads
2785 eval $setvar
2786
2787 case "$usethreads" in
2788 $define)
2789         $cat <<EOM
2790
2791 As of 5.5.640, Perl has two different internal threading implementations,
2792 the 5.005 version (5005threads) and an interpreter-based version
2793 (ithreads) that has one interpreter per thread.  Both are very 
2794 experimental.  This arrangement exists to help developers work out
2795 which one is better.
2796
2797 If you're a casual user, you probably don't want interpreter-threads
2798 at this time.  There doesn't yet exist a way to create threads from
2799 within Perl in this model, i.e., "use Thread;" will NOT work.
2800 EOM
2801         : Default to ithreads unless overridden on command line or with
2802         : old config.sh
2803         dflt='y'
2804         case "$use5005threads" in
2805                 $define|true|[yY]*) dflt='n';;
2806         esac
2807         case "$useithreads" in
2808                 $undef|false|[nN]*) dflt='n';;
2809         esac
2810         rp='Use interpreter-based ithreads?'
2811         . ./myread
2812         case "$ans" in
2813         y|Y)    val="$define" ;;
2814         *)      val="$undef" ;;
2815         esac
2816         set useithreads
2817         eval $setvar
2818         : Now set use5005threads to the opposite value.
2819         case "$useithreads" in
2820         $define) val="$undef" ;;
2821         *) val="$define" ;;
2822         esac
2823         set use5005threads
2824         eval $setvar
2825         ;;
2826 *)
2827         useithreads="$undef"
2828         use5005threads="$undef"
2829         ;;
2830 esac
2831
2832 case "$d_oldpthreads" in
2833 '')     : Configure tests would be welcome here.  For now, assume undef.
2834         val="$undef" ;;
2835 *)      val="$d_oldpthreads" ;;
2836 esac
2837 set d_oldpthreads
2838 eval $setvar
2839
2840
2841 case "$usethreads" in
2842 "$define"|true|[yY]*)
2843 : Look for a hint-file generated 'call-back-unit'.  If the
2844 : user has specified that a threading perl is to be built,
2845 : we may need to set or change some other defaults.
2846         if $test -f usethreads.cbu; then
2847                 echo "Your platform has some specific hints for threaded builds, using them..."
2848                 . ./usethreads.cbu
2849         else
2850                 $cat <<EOM
2851 (Your platform doesn't have any specific hints for threaded builds.
2852  Assuming POSIX threads, then.)
2853 EOM
2854         fi
2855         ;;
2856 esac
2857
2858 cat <<EOM
2859
2860 Perl can be built so that multiple Perl interpreters can coexist
2861 within the same Perl executable.
2862 EOM
2863
2864 case "$useithreads" in
2865 $define)
2866         cat <<EOM
2867 This multiple interpreter support is required for interpreter-based threads.
2868 EOM
2869         val="$define"
2870         ;;
2871 *)      case "$usemultiplicity" in
2872         $define|true|[yY]*)     dflt='y';;
2873         *) dflt='n';;
2874         esac
2875         echo " "
2876         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2877         rp='Build Perl for multiplicity?'
2878         . ./myread
2879         case "$ans" in
2880         y|Y)    val="$define" ;;
2881         *)      val="$undef" ;;
2882         esac
2883         ;;
2884 esac
2885 set usemultiplicity
2886 eval $setvar
2887
2888 : determine where manual pages are on this system
2889 echo " "
2890 case "$sysman" in
2891 '') 
2892         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2893         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2894         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2895         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2896         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2897         sysman=`./loc . /usr/man/man1 $syspath`
2898         ;;
2899 esac
2900 if $test -d "$sysman"; then
2901         echo "System manual is in $sysman." >&4
2902 else
2903         echo "Could not find manual pages in source form." >&4
2904 fi
2905
2906 : see what memory models we can support
2907 case "$models" in
2908 '')
2909         $cat >pdp11.c <<'EOP'
2910 int main() {
2911 #ifdef pdp11
2912         exit(0);
2913 #else
2914         exit(1);
2915 #endif
2916 }
2917 EOP
2918         case "$cc" in
2919         '') modelcc="$cc" ;;
2920         *) modelcc="cc" ;;
2921         esac
2922         ( $modelcc -o pdp11 pdp11.c ) >/dev/null 2>&1
2923         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2924                 dflt='unsplit split'
2925         else
2926                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2927                 case "$tans" in
2928                 X) dflt='none';;
2929                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2930                                 dflt='small'
2931                         else
2932                                 dflt=''
2933                         fi
2934                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2935                                 dflt="$dflt medium"
2936                         fi
2937                         if $test -d /lib/large || $test -d /usr/lib/large; then
2938                                 dflt="$dflt large"
2939                         fi
2940                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2941                                 dflt="$dflt huge"
2942                         fi
2943                 esac
2944         fi;;
2945 *) dflt="$models";;
2946 esac
2947 $cat <<EOM
2948  
2949 Some systems have different model sizes.  On most systems they are called
2950 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2951 split.  If your system doesn't support different memory models, say "none".
2952 If you wish to force everything to one memory model, say "none" here and
2953 put the appropriate flags later when it asks you for other cc and ld flags.
2954 Venix systems may wish to put "none" and let the compiler figure things out.
2955 (In the following question multiple model names should be space separated.)
2956
2957 The default for most systems is "none".
2958
2959 EOM
2960 rp="Which memory models are supported?"
2961 . ./myread
2962 models="$ans"
2963
2964 case "$models" in
2965 none)
2966         small=''
2967         medium=''
2968         large=''
2969         huge=''
2970         unsplit=''
2971         split=''
2972         ;;
2973 *split)
2974         case "$split" in
2975         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2976                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2977                         dflt='-i'
2978                 else
2979                         dflt='none'
2980                 fi;;
2981         *) dflt="$split";;
2982         esac
2983         rp="What flag indicates separate I and D space?"
2984         . ./myread
2985         tans="$ans"
2986         case "$tans" in
2987         none) tans='';;
2988         esac
2989         split="$tans"
2990         unsplit='';;
2991 *large*|*small*|*medium*|*huge*)
2992         case "$models" in
2993         *large*)
2994                 case "$large" in
2995                 '') dflt='-Ml';;
2996                 *) dflt="$large";;
2997                 esac
2998         rp="What flag indicates large model?"
2999         . ./myread
3000         tans="$ans"
3001         case "$tans" in
3002         none) tans='';
3003         esac
3004         large="$tans";;
3005         *) large='';;
3006         esac
3007         case "$models" in
3008         *huge*) case "$huge" in
3009                 '') dflt='-Mh';;
3010                 *) dflt="$huge";;
3011                 esac
3012                 rp="What flag indicates huge model?"
3013                 . ./myread
3014                 tans="$ans"
3015                 case "$tans" in
3016                 none) tans='';
3017                 esac
3018                 huge="$tans";;
3019         *) huge="$large";;
3020         esac
3021         case "$models" in
3022         *medium*) case "$medium" in
3023                 '') dflt='-Mm';;
3024                 *) dflt="$medium";;
3025                 esac
3026                 rp="What flag indicates medium model?"
3027                 . ./myread
3028                 tans="$ans"
3029                 case "$tans" in
3030                 none) tans='';
3031                 esac
3032                 medium="$tans";;
3033         *) medium="$large";;
3034         esac
3035         case "$models" in
3036         *small*) case "$small" in
3037                 '') dflt='none';;
3038                 *) dflt="$small";;
3039                 esac
3040                 rp="What flag indicates small model?"
3041                 . ./myread
3042                 tans="$ans"
3043                 case "$tans" in
3044                 none) tans='';
3045                 esac
3046                 small="$tans";;
3047         *) small='';;
3048         esac
3049         ;;
3050 *)
3051         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3052         ;;
3053 esac
3054 $rm -f pdp11.* pdp11
3055
3056 : make some quick guesses about what we are up against
3057 echo " "
3058 $echo $n "Hmm...  $c"
3059 echo exit 1 >bsd
3060 echo exit 1 >usg
3061 echo exit 1 >v7
3062 echo exit 1 >osf1
3063 echo exit 1 >eunice
3064 echo exit 1 >xenix
3065 echo exit 1 >venix
3066 echo exit 1 >os2
3067 d_bsd="$undef"
3068 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3069 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3070 then
3071         echo "Looks kind of like an OSF/1 system, but we'll see..."
3072         echo exit 0 >osf1
3073 elif test `echo abc | tr a-z A-Z` = Abc ; then
3074         xxx=`./loc addbib blurfl $pth`
3075         if $test -f $xxx; then
3076         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3077                 echo exit 0 >bsd
3078                 echo exit 0 >usg
3079         else
3080                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3081                         echo "Looks kind of like an extended USG system, but we'll see..."
3082                 else
3083                         echo "Looks kind of like a USG system, but we'll see..."
3084                 fi
3085                 echo exit 0 >usg
3086         fi
3087 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3088         echo "Looks kind of like a BSD system, but we'll see..."
3089         d_bsd="$define"
3090         echo exit 0 >bsd
3091 else
3092         echo "Looks kind of like a Version 7 system, but we'll see..."
3093         echo exit 0 >v7
3094 fi
3095 case "$eunicefix" in
3096 *unixtovms*)
3097         $cat <<'EOI'
3098 There is, however, a strange, musty smell in the air that reminds me of
3099 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3100 EOI
3101         echo exit 0 >eunice
3102         d_eunice="$define"
3103 : it so happens the Eunice I know will not run shell scripts in Unix format
3104         ;;
3105 *)
3106         echo " "
3107         echo "Congratulations.  You aren't running Eunice."
3108         d_eunice="$undef"
3109         ;;
3110 esac
3111 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3112 case "$p_" in
3113 :) ;;
3114 *)
3115         $cat <<'EOI'
3116 I have the feeling something is not exactly right, however...don't tell me...
3117 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3118 EOI
3119         echo exit 0 >os2
3120         ;;
3121 esac
3122 if test -f /xenix; then
3123         echo "Actually, this looks more like a XENIX system..."
3124         echo exit 0 >xenix
3125         d_xenix="$define"
3126 else
3127         echo " "
3128         echo "It's not Xenix..."
3129         d_xenix="$undef"
3130 fi
3131 chmod +x xenix
3132 $eunicefix xenix
3133 if test -f /venix; then
3134         echo "Actually, this looks more like a VENIX system..."
3135         echo exit 0 >venix
3136 else
3137         echo " "
3138         if ./xenix; then
3139                 : null
3140         else
3141                 echo "Nor is it Venix..."
3142         fi
3143 fi
3144 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3145 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3146 $rm -f foo
3147
3148 : see if we need a special compiler
3149 echo " "
3150 if ./usg; then
3151         case "$cc" in
3152         '') case "$Mcc" in
3153                 /*) dflt='Mcc';;
3154                 *) case "$large" in
3155                         -M*) dflt='cc';;
3156                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3157                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3158                                                 dflt='cc'
3159                                         else
3160                                                 dflt='cc -M'
3161                                         fi
3162                                 else
3163                                         dflt='cc'
3164                                 fi;;
3165                         esac;;
3166                 esac;;
3167         *)  dflt="$cc";;
3168         esac
3169         case "$dflt" in
3170         *M*)    $cat <<'EOM'
3171 On some older systems the default C compiler will not resolve multiple global
3172 references that happen to have the same name.  On some such systems the "Mcc"
3173 command may be used to force these to be resolved.  On other systems a "cc -M"
3174 command is required.  (Note that the -M flag on other systems indicates a
3175 memory model to use!) If you have the Gnu C compiler, you might wish to use
3176 that instead.
3177
3178 EOM
3179         ;;
3180         esac
3181         rp="Use which C compiler?"
3182         . ./myread
3183         cc="$ans"
3184 else
3185         case "$cc" in
3186         '') dflt=cc;;
3187         *) dflt="$cc";;
3188         esac
3189         rp="Use which C compiler?"
3190         . ./myread
3191         cc="$ans"
3192 fi
3193 : Look for a hint-file generated 'call-back-unit'.  Now that the
3194 : user has specified the compiler, we may need to set or change some
3195 : other defaults.
3196 if $test -f cc.cbu; then
3197     . ./cc.cbu
3198 fi
3199 . ./checkcc
3200
3201 echo " "
3202 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3203 $cat >gccvers.c <<EOM
3204 #include <stdio.h>
3205 int main() {
3206 #ifdef __GNUC__
3207 #ifdef __VERSION__
3208         printf("%s\n", __VERSION__);
3209 #else
3210         printf("%s\n", "1");
3211 #endif
3212 #endif
3213         exit(0);
3214 }
3215 EOM
3216 if $cc $ldflags -o gccvers gccvers.c; then
3217         gccversion=`./gccvers`
3218         case "$gccversion" in
3219         '') echo "You are not using GNU cc." ;;
3220         *)  echo "You are using GNU cc $gccversion."
3221             ccname=gcc  
3222             ;;
3223         esac
3224 else
3225         echo " "
3226         echo "*** WHOA THERE!!! ***" >&4
3227         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3228         case "$knowitall" in
3229         '')
3230         echo "    You'd better start hunting for one and let me know about it." >&4
3231                 exit 1
3232                 ;;
3233         esac
3234 fi
3235 $rm -f gccvers*
3236 case "$gccversion" in
3237 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3238 esac
3239 case "$gccversion" in
3240 '') gccosandvers='' ;;
3241 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3242    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3243    gccshortvers=''
3244    case "$gccosandvers" in
3245    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3246    $osname$osvers) ;; # looking good
3247    $osname*) cat <<EOM >&4
3248
3249 *** WHOA THERE!!! ***
3250
3251     Your gcc has not been compiled for the exact release of
3252     your operating system ($gccosandvers versus $osname$osvers).
3253
3254     In general it is a good idea to keep gcc synchronized with
3255     the operating system because otherwise serious problems
3256     may ensue when trying to compile software, like Perl.
3257
3258     I'm trying to be optimistic here, though, and will continue.
3259     If later during the configuration and build icky compilation
3260     problems appear (headerfile conflicts being the most common
3261     manifestation), I suggest reinstalling the gcc to match
3262     your operating system release.
3263
3264 EOM
3265       ;;
3266    *) gccosandvers='' ;; # failed to parse, better be silent
3267    esac
3268    ;;
3269 esac
3270 case "$ccname" in
3271 '') ccname="$cc" ;;
3272 esac
3273
3274 : see how we invoke the C preprocessor
3275 echo " "
3276 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3277 cat <<'EOT' >testcpp.c
3278 #define ABC abc
3279 #define XYZ xyz
3280 ABC.XYZ
3281 EOT
3282 cd ..
3283 if test ! -f cppstdin; then
3284         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3285                 # AIX cc -E doesn't show the absolute headerfile
3286                 # locations but we'll cheat by using the -M flag.
3287                 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
3288         else
3289                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3290         fi
3291 else
3292         echo "Keeping your $hint cppstdin wrapper."
3293 fi
3294 chmod 755 cppstdin
3295 wrapper=`pwd`/cppstdin
3296 ok='false'
3297 cd UU
3298
3299 if $test "X$cppstdin" != "X" && \
3300         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3301         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3302 then
3303         echo "You used to use $cppstdin $cppminus so we'll use that again."
3304         case "$cpprun" in
3305         '') echo "But let's see if we can live without a wrapper..." ;;
3306         *)
3307                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3308                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3309                 then
3310                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3311                         ok='true'
3312                 else
3313                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3314                 fi
3315                 ;;
3316         esac
3317 else
3318         case "$cppstdin" in
3319         '') ;;
3320         *)
3321                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3322                 ;;
3323         esac
3324 fi
3325
3326 if $ok; then
3327         : nothing
3328 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3329         $cc -E <testcpp.c >testcpp.out 2>&1; \
3330         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3331         echo "Yup, it does."
3332         x_cpp="$cc -E"
3333         x_minus='';
3334 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3335         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3336         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3337         echo "Yup, it does."
3338         x_cpp="$cc -E"
3339         x_minus='-';
3340 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3341         $cc -P <testcpp.c >testcpp.out 2>&1; \
3342         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3343         echo "Yipee, that works!"
3344         x_cpp="$cc -P"
3345         x_minus='';
3346 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3347         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3348         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3349         echo "At long last!"
3350         x_cpp="$cc -P"
3351         x_minus='-';
3352 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3353         $cpp <testcpp.c >testcpp.out 2>&1; \
3354         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3355         echo "It works!"
3356         x_cpp="$cpp"
3357         x_minus='';
3358 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3359         $cpp - <testcpp.c >testcpp.out 2>&1; \
3360         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3361         echo "Hooray, it works!  I was beginning to wonder."
3362         x_cpp="$cpp"
3363         x_minus='-';
3364 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3365         $wrapper <testcpp.c >testcpp.out 2>&1; \
3366         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3367         x_cpp="$wrapper"
3368         x_minus=''
3369         echo "Eureka!"
3370 else
3371         dflt=''
3372         rp="No dice.  I can't find a C preprocessor.  Name one:"
3373         . ./myread
3374         x_cpp="$ans"
3375         x_minus=''
3376         $x_cpp <testcpp.c >testcpp.out 2>&1
3377         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3378                 echo "OK, that will do." >&4
3379         else
3380 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3381                 exit 1
3382         fi
3383 fi
3384
3385 case "$ok" in
3386 false)
3387         cppstdin="$x_cpp"
3388         cppminus="$x_minus"
3389         cpprun="$x_cpp"
3390         cpplast="$x_minus"
3391         set X $x_cpp
3392         shift
3393         case "$1" in
3394         "$cpp")
3395                 echo "Perhaps can we force $cc -E using a wrapper..."
3396                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3397                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3398                 then
3399                         echo "Yup, we can."
3400                         cppstdin="$wrapper"
3401                         cppminus='';
3402                 else
3403                         echo "Nope, we'll have to live without it..."
3404                 fi
3405                 ;;
3406         esac
3407         case "$cpprun" in
3408         "$wrapper")
3409                 cpprun=''
3410                 cpplast=''
3411                 ;;
3412         esac
3413         ;;
3414 esac
3415
3416 case "$cppstdin" in
3417 "$wrapper"|'cppstdin') ;;
3418 *) $rm -f $wrapper;;
3419 esac
3420 $rm -f testcpp.c testcpp.out
3421
3422 : decide how portable to be.  Allow command line overrides.
3423 case "$d_portable" in
3424 "$undef") ;;
3425 *)      d_portable="$define" ;;
3426 esac
3427
3428 : set up shell script to do ~ expansion
3429 cat >filexp <<EOSS
3430 $startsh
3431 : expand filename
3432 case "\$1" in
3433  ~/*|~)
3434         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3435         ;;
3436  ~*)
3437         if $test -f /bin/csh; then
3438                 /bin/csh -f -c "glob \$1"
3439                 failed=\$?
3440                 echo ""
3441                 exit \$failed
3442         else
3443                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3444                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3445                 if $test ! -d "\$dir"; then
3446                         me=\`basename \$0\`
3447                         echo "\$me: can't locate home directory for: \$name" >&2
3448                         exit 1
3449                 fi
3450                 case "\$1" in
3451                 */*)
3452                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3453                         ;;
3454                 *)
3455                         echo \$dir
3456                         ;;
3457                 esac
3458         fi
3459         ;;
3460 *)
3461         echo \$1
3462         ;;
3463 esac
3464 EOSS
3465 chmod +x filexp
3466 $eunicefix filexp
3467
3468 : now set up to get a file name
3469 cat <<EOS >getfile
3470 $startsh
3471 EOS
3472 cat <<'EOSC' >>getfile
3473 tilde=''
3474 fullpath=''
3475 already=''
3476 skip=''
3477 none_ok=''
3478 exp_file=''
3479 nopath_ok=''
3480 orig_rp="$rp"
3481 orig_dflt="$dflt"
3482 case "$gfpth" in
3483 '') gfpth='.' ;;
3484 esac
3485
3486 case "$fn" in
3487 *\(*)
3488         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3489         fn=`echo $fn | sed 's/(.*)//'`
3490         ;;
3491 esac
3492
3493 case "$fn" in
3494 *:*)
3495         loc_file=`expr $fn : '.*:\(.*\)'`
3496         fn=`expr $fn : '\(.*\):.*'`
3497         ;;
3498 esac
3499
3500 case "$fn" in
3501 *~*) tilde=true;;
3502 esac
3503 case "$fn" in
3504 */*) fullpath=true;;
3505 esac
3506 case "$fn" in
3507 *+*) skip=true;;
3508 esac
3509 case "$fn" in
3510 *n*) none_ok=true;;
3511 esac
3512 case "$fn" in
3513 *e*) exp_file=true;;
3514 esac
3515 case "$fn" in
3516 *p*) nopath_ok=true;;
3517 esac
3518
3519 case "$fn" in
3520 *f*) type='File';;
3521 *d*) type='Directory';;
3522 *l*) type='Locate';;
3523 esac
3524
3525 what="$type"
3526 case "$what" in
3527 Locate) what='File';;
3528 esac
3529
3530 case "$exp_file" in
3531 '')
3532         case "$d_portable" in
3533         "$define") ;;
3534         *) exp_file=true;;
3535         esac
3536         ;;
3537 esac
3538
3539 cd ..
3540 while test "$type"; do
3541         redo=''
3542         rp="$orig_rp"
3543         dflt="$orig_dflt"
3544         case "$tilde" in
3545         true) rp="$rp (~name ok)";;
3546         esac
3547         . UU/myread
3548         if test -f UU/getfile.ok && \
3549                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3550         then
3551                 value="$ans"
3552                 ansexp="$ans"
3553                 break
3554         fi
3555         case "$ans" in
3556         none)
3557                 value=''
3558                 ansexp=''
3559                 case "$none_ok" in
3560                 true) type='';;
3561                 esac
3562                 ;;
3563         *)
3564                 case "$tilde" in
3565                 '') value="$ans"
3566                         ansexp="$ans";;
3567                 *)
3568                         value=`UU/filexp $ans`
3569                         case $? in
3570                         0)
3571                                 if test "$ans" != "$value"; then
3572                                         echo "(That expands to $value on this system.)"
3573                                 fi
3574                                 ;;
3575                         *) value="$ans";;
3576                         esac
3577                         ansexp="$value"
3578                         case "$exp_file" in
3579                         '') value="$ans";;
3580                         esac
3581                         ;;
3582                 esac
3583                 case "$fullpath" in
3584                 true)
3585                         case "$ansexp" in
3586                         /*) value="$ansexp" ;;
3587                         [a-zA-Z]:/*) value="$ansexp" ;;
3588                         *)
3589                                 redo=true
3590                                 case "$already" in
3591                                 true)
3592                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3593                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3594                                         ;;
3595                                 *)
3596                                 echo "Please give a full path name, starting with slash." >&4
3597                                         case "$tilde" in
3598                                         true)
3599                                 echo "Note that using ~name is ok provided it expands well." >&4
3600                                                 already=true
3601                                                 ;;
3602                                         esac
3603                                 esac
3604                                 ;;
3605                         esac
3606                         ;;
3607                 esac
3608                 case "$redo" in
3609                 '')
3610                         case "$type" in
3611                         File)
3612                                 for fp in $gfpth; do
3613                                         if test "X$fp" = X.; then
3614                                             pf="$ansexp"
3615                                         else    
3616                                             pf="$fp/$ansexp"
3617                                         fi
3618                                         if test -f "$pf"; then
3619                                                 type=''
3620                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3621                                         then
3622                                                 echo "($value is not a plain file, but that's ok.)"
3623                                                 type=''
3624                                         fi
3625                                         if test X"$type" = X; then
3626                                             value="$pf"
3627                                             break
3628                                         fi
3629                                 done
3630                                 ;;
3631                         Directory)
3632                                 for fp in $gfpth; do
3633                                         if test "X$fp" = X.; then
3634                                             dir="$ans"
3635                                             direxp="$ansexp"
3636                                         else    
3637                                             dir="$fp/$ansexp"
3638                                             direxp="$fp/$ansexp"
3639                                         fi
3640                                         if test -d "$direxp"; then
3641                                                 type=''
3642                                                 value="$dir"
3643                                                 break
3644                                         fi
3645                                 done
3646                                 ;;
3647                         Locate)
3648                                 if test -d "$ansexp"; then
3649                                         echo "(Looking for $loc_file in directory $value.)"
3650                                         value="$value/$loc_file"
3651                                         ansexp="$ansexp/$loc_file"
3652                                 fi
3653                                 if test -f "$ansexp"; then
3654                                         type=''
3655                                 fi
3656                                 case "$nopath_ok" in
3657                                 true)   case "$value" in
3658                                         */*) ;;
3659                                         *)      echo "Assuming $value will be in people's path."
3660                                                 type=''
3661                                                 ;;
3662                                         esac
3663                                         ;;
3664                                 esac
3665                                 ;;
3666                         esac
3667
3668                         case "$skip" in
3669                         true) type='';
3670                         esac
3671
3672                         case "$type" in
3673                         '') ;;
3674                         *)
3675                                 if test "$fastread" = yes; then
3676                                         dflt=y
3677                                 else
3678                                         dflt=n
3679                                 fi
3680                                 rp="$what $value doesn't exist.  Use that name anyway?"
3681                                 . UU/myread
3682                                 dflt=''
3683                                 case "$ans" in
3684                                 y*) type='';;
3685                                 *) echo " ";;
3686                                 esac
3687                                 ;;
3688                         esac
3689                         ;;
3690                 esac
3691                 ;;
3692         esac
3693 done
3694 cd UU
3695 ans="$value"
3696 rp="$orig_rp"
3697 dflt="$orig_dflt"
3698 rm -f getfile.ok
3699 test "X$gfpthkeep" != Xy && gfpth=""
3700 EOSC
3701
3702 : What should the include directory be ?
3703 echo " "
3704 $echo $n "Hmm...  $c"
3705 dflt='/usr/include'
3706 incpath=''
3707 mips_type=''
3708 if $test -f /bin/mips && /bin/mips; then
3709         echo "Looks like a MIPS system..."
3710         $cat >usr.c <<'EOCP'
3711 #ifdef SYSTYPE_BSD43
3712 /bsd43
3713 #endif
3714 EOCP
3715         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3716                 dflt='/bsd43/usr/include'
3717                 incpath='/bsd43'
3718                 mips_type='BSD 4.3'
3719         else
3720                 mips_type='System V'
3721         fi
3722         $rm -f usr.c usr.out
3723         echo "and you're compiling with the $mips_type compiler and libraries."
3724         xxx_prompt=y
3725         echo "exit 0" >mips
3726 else
3727         echo "Doesn't look like a MIPS system."
3728         xxx_prompt=n
3729         echo "exit 1" >mips
3730 fi
3731 chmod +x mips
3732 $eunicefix mips
3733 case "$usrinc" in
3734 '') ;;
3735 *) dflt="$usrinc";;
3736 esac
3737 case "$xxx_prompt" in
3738 y)      fn=d/
3739         echo " "
3740         rp='Where are the include files you want to use?'
3741         . ./getfile
3742         usrinc="$ans"
3743         ;;
3744 *)      usrinc="$dflt"
3745         ;;
3746 esac
3747
3748 : Set private lib path
3749 case "$plibpth" in
3750 '') if ./mips; then
3751                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3752         fi;;
3753 esac
3754 case "$libpth" in
3755 ' ') dlist='';;
3756 '') dlist="$loclibpth $plibpth $glibpth";;
3757 *) dlist="$libpth";;
3758 esac
3759
3760 : Now check and see which directories actually exist, avoiding duplicates
3761 libpth=''
3762 for xxx in $dlist
3763 do
3764     if $test -d $xxx; then
3765                 case " $libpth " in
3766                 *" $xxx "*) ;;
3767                 *) libpth="$libpth $xxx";;
3768                 esac
3769     fi
3770 done
3771 $cat <<'EOM'
3772
3773 Some systems have incompatible or broken versions of libraries.  Among
3774 the directories listed in the question below, please remove any you
3775 know not to be holding relevant libraries, and add any that are needed.
3776 Say "none" for none.
3777
3778 EOM
3779 case "$libpth" in
3780 '') dflt='none';;
3781 *)
3782         set X $libpth
3783         shift
3784         dflt=${1+"$@"}
3785         ;;
3786 esac
3787 rp="Directories to use for library searches?"
3788 . ./myread
3789 case "$ans" in
3790 none) libpth=' ';;
3791 *) libpth="$ans";;
3792 esac
3793
3794 : compute shared library extension
3795 case "$so" in
3796 '')
3797         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3798                 dflt='sl'
3799         else
3800                 dflt='so'
3801         fi
3802         ;;
3803 *) dflt="$so";;
3804 esac
3805 $cat <<EOM
3806
3807 On some systems, shared libraries may be available.  Answer 'none' if
3808 you want to suppress searching of shared libraries for the remainder
3809 of this configuration.
3810
3811 EOM
3812 rp='What is the file extension used for shared libraries?'
3813 . ./myread
3814 so="$ans"
3815
3816 : Define several unixisms.
3817 : Hints files or command line option can be used to override them.
3818 : The convoluted testing is in case hints files set either the old
3819 : or the new name.
3820 case "$_exe" in
3821 '')     case "$exe_ext" in
3822     '') ;;
3823         *)      _exe="$exe_ext" ;;
3824         esac
3825         ;;
3826 esac
3827 case "$_a" in
3828 '')     case "$lib_ext" in
3829     '') _a='.a';;
3830         *)      _a="$lib_ext" ;;
3831         esac
3832         ;;
3833 esac
3834 case "$_o" in
3835 '') case "$obj_ext" in
3836         '')     _o='.o';;
3837         *)      _o="$obj_ext";;
3838         esac
3839         ;;
3840 esac
3841 case "$p_" in
3842 '') case "$path_sep" in
3843         '')     p_=':';;
3844         *)      p_="$path_sep";;
3845         esac
3846         ;;
3847 esac
3848 exe_ext=$_exe
3849 lib_ext=$_a
3850 obj_ext=$_o
3851 path_sep=$p_
3852
3853 : Which makefile gets called first.  This is used by make depend.
3854 case "$firstmakefile" in
3855 '') firstmakefile='makefile';;
3856 esac
3857
3858 case "$usesocks" in
3859 $define|true|[yY]*)     dflt='y';;
3860 *) dflt='n';;
3861 esac
3862 cat <<EOM
3863
3864 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3865 Configure must be run with -Dusesocks.
3866
3867 If this doesn't make any sense to you, just accept the default '$dflt'.
3868 EOM
3869 rp='Build Perl for SOCKS?'
3870 . ./myread
3871 case "$ans" in
3872 y|Y)    val="$define" ;;     
3873 *)      val="$undef" ;;
3874 esac
3875 set usesocks
3876 eval $setvar
3877
3878 : Looking for optional libraries
3879 echo " "
3880 echo "Checking for optional libraries..." >&4
3881 case "$libs" in
3882 ' '|'') dflt='';;
3883 *) dflt="$libs";;
3884 esac
3885 case "$libswanted" in
3886 '') libswanted='c_s';;
3887 esac
3888 case "$usesocks" in
3889 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3890 esac
3891 libsfound=''
3892 libsfiles=''
3893 libsdirs=''
3894 libspath=''
3895 for thisdir in $libpth $xlibpth; do
3896   test -d $thisdir && libspath="$libspath $thisdir"
3897 done
3898 for thislib in $libswanted; do
3899         for thisdir in $libspath; do
3900             xxx=''
3901             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3902                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3903                 $test -f "$xxx" && eval $libscheck
3904                 $test -f "$xxx" && libstyle=shared
3905             fi
3906             if test ! -f "$xxx"; then
3907                 xxx=$thisdir/lib$thislib.$so
3908                 $test -f "$xxx" && eval $libscheck
3909                 $test -f "$xxx" && libstyle=shared
3910             fi  
3911             if test ! -f "$xxx"; then
3912                 xxx=$thisdir/lib$thislib$_a
3913                 $test -f "$xxx" && eval $libscheck
3914                 $test -f "$xxx" && libstyle=static
3915             fi
3916             if test ! -f "$xxx"; then
3917                 xxx=$thisdir/$thislib$_a
3918                 $test -f "$xxx" && eval $libscheck
3919                 $test -f "$xxx" && libstyle=static
3920             fi
3921             if test ! -f "$xxx"; then
3922                 xxx=$thisdir/lib${thislib}_s$_a
3923                 $test -f "$xxx" && eval $libscheck
3924                 $test -f "$xxx" && libstyle=static
3925                 $test -f "$xxx" && thislib=${thislib}_s
3926             fi
3927             if test ! -f "$xxx"; then
3928                 xxx=$thisdir/Slib$thislib$_a
3929                 $test -f "$xxx" && eval $libscheck
3930                 $test -f "$xxx" && libstyle=static
3931             fi
3932             if $test -f "$xxx"; then
3933                 case "$libstyle" in
3934                 shared) echo "Found -l$thislib (shared)." ;;
3935                 static) echo "Found -l$thislib." ;;
3936                 *)      echo "Found -l$thislib ($libstyle)." ;;
3937                 esac
3938                 case " $dflt " in
3939                 *"-l$thislib "*);;
3940                 *) dflt="$dflt -l$thislib"
3941                    libsfound="$libsfound $xxx"
3942                    yyy=`basename $xxx`
3943                    libsfiles="$libsfiles $yyy"
3944                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3945                    case " $libsdirs " in
3946                    *" $yyy "*) ;;
3947                    *) libsdirs="$libsdirs $yyy" ;;
3948                    esac
3949                    ;;
3950                 esac
3951                 break
3952             fi  
3953         done
3954         if $test ! -f "$xxx"; then
3955             echo "No -l$thislib."
3956         fi
3957 done
3958 set X $dflt
3959 shift
3960 dflt="$*"
3961 case "$libs" in
3962 '') dflt="$dflt";;
3963 *) dflt="$libs";;
3964 esac
3965 case "$dflt" in
3966 ' '|'') dflt='none';;
3967 esac
3968
3969 $cat <<EOM
3970
3971 In order to compile $package on your machine, a number of libraries
3972 are usually needed.  Include any other special libraries here as well.
3973 Say "none" for none.  The default list is almost always right.
3974 EOM
3975
3976 echo " "
3977 rp="What libraries to use?"
3978 . ./myread
3979 case "$ans" in
3980 none) libs=' ';;
3981 *) libs="$ans";;
3982 esac
3983
3984 : determine optimization, if desired, or use for debug flag also
3985 case "$optimize" in
3986 ' '|$undef) dflt='none';;
3987 '') dflt='-O';;
3988 *) dflt="$optimize";;
3989 esac
3990 $cat <<EOH
3991
3992 By default, $package compiles with the -O flag to use the optimizer.
3993 Alternately, you might want to use the symbolic debugger, which uses
3994 the -g flag (on traditional Unix systems).  Either flag can be
3995 specified here.  To use neither flag, specify the word "none".
3996
3997 EOH
3998 rp="What optimizer/debugger flag should be used?"
3999 . ./myread
4000 optimize="$ans"
4001 case "$optimize" in
4002 'none') optimize=" ";;
4003 esac
4004
4005 dflt=''
4006 : We will not override a previous value, but we might want to
4007 : augment a hint file
4008 case "$hint" in
4009 default|recommended)
4010         case "$gccversion" in
4011         1*) dflt='-fpcc-struct-return' ;;
4012         esac
4013         case "$optimize" in
4014         *-g*) dflt="$dflt -DDEBUGGING";;
4015         esac
4016         case "$gccversion" in
4017         2*) if test -d /etc/conf/kconfig.d &&
4018                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
4019                 then
4020                         dflt="$dflt -posix"
4021                 fi
4022                 ;;
4023         esac
4024         case "$gccversion" in
4025         1*) ;;
4026         2.[0-8]*) ;;
4027         ?*)     echo " "
4028                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
4029                 echo 'int main(void) { return 0; }' > gcctest.c
4030                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
4031                         echo "Yes, it does." 2>&1
4032                         case "$ccflags" in
4033                         *strict-aliasing*) 
4034                                 echo "Leaving current flags $ccflags alone." 2>&1
4035                                 ;;
4036                         *) dflt="$dflt -fno-strict-aliasing" ;;
4037                         esac
4038                 else
4039                         echo "Nope, it doesn't, but that's ok." 2>&1
4040                 fi
4041                 ;;
4042         esac
4043         ;;
4044 esac
4045
4046 case "$mips_type" in
4047 *BSD*|'') inclwanted="$locincpth $usrinc";;
4048 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
4049 esac
4050 for thisincl in $inclwanted; do
4051         if $test -d $thisincl; then
4052                 if $test x$thisincl != x$usrinc; then
4053                         case "$dflt" in
4054                         *$thisincl*);;
4055                         *) dflt="$dflt -I$thisincl";;
4056                         esac
4057                 fi
4058         fi
4059 done
4060
4061 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
4062         xxx=true;
4063 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
4064         xxx=true;
4065 else
4066         xxx=false;
4067 fi;
4068 if $xxx; then
4069         case "$dflt" in
4070         *$2*);;
4071         *) dflt="$dflt -D$2";;
4072         esac;
4073 fi'
4074
4075 set signal.h LANGUAGE_C; eval $inctest
4076
4077 case "$usesocks" in
4078 $define)
4079         ccflags="$ccflags -DSOCKS"
4080         ;;
4081 esac
4082
4083 case "$hint" in
4084 default|recommended) dflt="$ccflags $dflt" ;;
4085 *) dflt="$ccflags";;
4086 esac
4087
4088 case "$dflt" in
4089 ''|' ') dflt=none;;
4090 esac
4091 $cat <<EOH
4092
4093 Your C compiler may want other flags.  For this question you should include
4094 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4095 but you should NOT include libraries or ld flags like -lwhatever.  If you
4096 want $package to honor its debug switch, you should include -DDEBUGGING here.
4097 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4098
4099 To use no flags, specify the word "none".
4100
4101 EOH
4102 set X $dflt
4103 shift
4104 dflt=${1+"$@"}
4105 rp="Any additional cc flags?"
4106 . ./myread
4107 case "$ans" in
4108 none) ccflags='';;
4109 *) ccflags="$ans";;
4110 esac
4111
4112 : the following weeds options from ccflags that are of no interest to cpp
4113 cppflags="$ccflags"
4114 case "$gccversion" in
4115 1*) cppflags="$cppflags -D__GNUC__"
4116 esac
4117 case "$mips_type" in
4118 '');;
4119 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4120 esac
4121 case "$cppflags" in
4122 '');;
4123 *)
4124         echo " "
4125         echo "Let me guess what the preprocessor flags are..." >&4
4126         set X $cppflags
4127         shift
4128         cppflags=''
4129         $cat >cpp.c <<'EOM'
4130 #define BLURFL foo
4131
4132 BLURFL xx LFRULB
4133 EOM
4134         previous=''
4135         for flag in $*
4136         do
4137                 case "$flag" in
4138                 -*) ftry="$flag";;
4139                 *) ftry="$previous $flag";;
4140                 esac
4141                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4142                         >cpp1.out 2>/dev/null && \
4143                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4144                         >cpp2.out 2>/dev/null && \
4145                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4146                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4147                 then
4148                         cppflags="$cppflags $ftry"
4149                         previous=''
4150                 else
4151                         previous="$flag"
4152                 fi
4153         done
4154         set X $cppflags
4155         shift
4156         cppflags=${1+"$@"}
4157         case "$cppflags" in
4158         *-*)  echo "They appear to be: $cppflags";;
4159         esac
4160         $rm -f cpp.c cpp?.out
4161         ;;
4162 esac
4163
4164 : flags used in final linking phase
4165 case "$ldflags" in
4166 '') if ./venix; then
4167                 dflt='-i -z'
4168         else
4169                 dflt=''
4170         fi
4171         case "$ccflags" in
4172         *-posix*) dflt="$dflt -posix" ;;
4173         esac
4174         ;;
4175 *) dflt="$ldflags";;
4176 esac
4177
4178 : Try to guess additional flags to pick up local libraries.
4179 for thislibdir in $libpth; do
4180         case " $loclibpth " in
4181         *" $thislibdir "*)
4182                 case "$dflt " in 
4183                 *"-L$thislibdir "*) ;;
4184                 *)  dflt="$dflt -L$thislibdir" ;;
4185                 esac
4186                 ;;
4187         esac
4188 done
4189
4190 case "$dflt" in
4191 '') dflt='none' ;;
4192 esac
4193
4194 $cat <<EOH
4195
4196 Your C linker may need flags.  For this question you should
4197 include -L/whatever and any other flags used by the C linker, but you
4198 should NOT include libraries like -lwhatever.
4199
4200 Make sure you include the appropriate -L/path flags if your C linker
4201 does not normally search all of the directories you specified above,
4202 namely
4203         $libpth
4204 To use no flags, specify the word "none".
4205
4206 EOH
4207
4208 rp="Any additional ld flags (NOT including libraries)?"
4209 . ./myread
4210 case "$ans" in
4211 none) ldflags='';;
4212 *) ldflags="$ans";;
4213 esac
4214 rmlist="$rmlist pdp11"
4215
4216 : coherency check
4217 echo " "
4218 echo "Checking your choice of C compiler and flags for coherency..." >&4
4219 $cat > try.c <<'EOF'
4220 #include <stdio.h>
4221 int main() { printf("Ok\n"); exit(0); }
4222 EOF
4223 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4224 shift
4225 $cat >try.msg <<'EOM'
4226 I've tried to compile and run the following simple program:
4227
4228 EOM
4229 $cat try.c >> try.msg
4230
4231 $cat >> try.msg <<EOM
4232
4233 I used the command:
4234
4235         $*
4236         ./try
4237
4238 and I got the following output:
4239
4240 EOM
4241 dflt=y
4242 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4243         if sh -c './try' >>try.msg 2>&1; then
4244                 xxx=`./try`
4245                 case "$xxx" in
4246                 "Ok") dflt=n ;;
4247                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4248                         case " $libs " in
4249                         *" -lsfio "*)
4250                                 cat >> try.msg <<'EOQS'
4251 If $libs contains -lsfio, and sfio is mis-configured, then it
4252 sometimes (apparently) runs and exits with a 0 status, but with no
4253 output!  It may have to do with sfio's use of _exit vs. exit.
4254
4255 EOQS
4256                                 rp="You have a big problem.  Shall I abort Configure"
4257                                 dflt=y
4258                                 ;;
4259                         esac
4260                         ;;
4261                 esac
4262         else
4263                 echo "The program compiled OK, but exited with status $?." >>try.msg
4264                 rp="You have a problem.  Shall I abort Configure"
4265                 dflt=y
4266         fi
4267 else
4268         echo "I can't compile the test program." >>try.msg
4269         rp="You have a BIG problem.  Shall I abort Configure"
4270         dflt=y
4271 fi
4272 case "$dflt" in
4273 y)
4274         $cat try.msg >&4
4275         case "$knowitall" in
4276         '')
4277                 echo "(The supplied flags or libraries might be incorrect.)"
4278                 ;;
4279         *) dflt=n;;
4280         esac
4281         echo " "
4282         . ./myread
4283         case "$ans" in
4284         n*|N*) ;;
4285         *)      echo "Ok.  Stopping Configure." >&4
4286                 exit 1
4287                 ;;
4288         esac
4289         ;;
4290 n) echo "OK, that should do.";;
4291 esac
4292 $rm -f try try.* core
4293
4294 : define an is-a-typedef? function
4295 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4296 case "$inclist" in
4297 "") inclist="sys/types.h";;
4298 esac;
4299 eval "varval=\$$var";
4300 case "$varval" in
4301 "")
4302         $rm -f temp.c;
4303         for inc in $inclist; do
4304                 echo "#include <$inc>" >>temp.c;
4305         done;
4306         echo "#ifdef $type" >> temp.c;
4307         echo "printf(\"We have $type\");" >> temp.c;
4308         echo "#endif" >> temp.c;
4309         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4310         if $contains $type temp.E >/dev/null 2>&1; then
4311                 eval "$var=\$type";
4312         else
4313                 eval "$var=\$def";
4314         fi;
4315         $rm -f temp.?;;
4316 *) eval "$var=\$varval";;
4317 esac'
4318
4319 : define an is-a-typedef? function that prompts if the type is not available.
4320 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4321 case "$inclist" in
4322 "") inclist="sys/types.h";;
4323 esac;
4324 eval "varval=\$$var";
4325 case "$varval" in
4326 "")
4327         $rm -f temp.c;
4328         for inc in $inclist; do
4329                 echo "#include <$inc>" >>temp.c;
4330         done;
4331         echo "#ifdef $type" >> temp.c;
4332         echo "printf(\"We have $type\");" >> temp.c;
4333         echo "#endif" >> temp.c;
4334         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4335         echo " " ;
4336         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4337         if $contains $type temp.E >/dev/null 2>&1; then
4338                 echo "$type found." >&4;
4339                 eval "$var=\$type";
4340         else
4341                 echo "$type NOT found." >&4;
4342                 dflt="$def";
4343                 . ./myread ;
4344                 eval "$var=\$ans";
4345         fi;
4346         $rm -f temp.?;;
4347 *) eval "$var=\$varval";;
4348 esac'
4349
4350 : define a shorthand compile call
4351 compile='
4352 mc_file=$1;
4353 shift;
4354 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4355 : define a shorthand compile call for compilations that should be ok.
4356 compile_ok='
4357 mc_file=$1;
4358 shift;
4359 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4360
4361 : check for lengths of integral types
4362 echo " "
4363 case "$intsize" in
4364 '')
4365         echo "Checking to see how big your integers are..." >&4
4366         $cat >intsize.c <<'EOCP'
4367 #include <stdio.h>
4368 int main()
4369 {
4370         printf("intsize=%d;\n", (int)sizeof(int));
4371         printf("longsize=%d;\n", (int)sizeof(long));
4372         printf("shortsize=%d;\n", (int)sizeof(short));
4373         exit(0);
4374 }
4375 EOCP
4376         set intsize
4377         if eval $compile_ok && ./intsize > /dev/null; then
4378                 eval `./intsize`
4379                 echo "Your integers are $intsize bytes long."
4380                 echo "Your long integers are $longsize bytes long."
4381                 echo "Your short integers are $shortsize bytes long."
4382         else
4383                 $cat >&4 <<EOM
4384 !
4385 Help! I can't compile and run the intsize test program: please enlighten me!
4386 (This is probably a misconfiguration in your system or libraries, and
4387 you really ought to fix it.  Still, I'll try anyway.)
4388 !
4389 EOM
4390                 dflt=4
4391                 rp="What is the size of an integer (in bytes)?"
4392                 . ./myread
4393                 intsize="$ans"
4394                 dflt=$intsize
4395                 rp="What is the size of a long integer (in bytes)?"
4396                 . ./myread
4397                 longsize="$ans"
4398                 dflt=2
4399                 rp="What is the size of a short integer (in bytes)?"
4400                 . ./myread
4401                 shortsize="$ans"
4402         fi
4403         ;;
4404 esac
4405 $rm -f intsize intsize.*
4406
4407 : see what type lseek is declared as in the kernel
4408 rp="What is the type used for lseek's offset on this system?"
4409 set off_t lseektype long stdio.h sys/types.h
4410 eval $typedef_ask
4411
4412 echo " "
4413 echo "Checking to see how big your file offsets are..." >&4
4414 $cat >try.c <<EOCP
4415 #include <sys/types.h>
4416 #include <stdio.h>
4417 int main()
4418 {
4419     printf("%d\n", (int)sizeof($lseektype));
4420     return(0); 
4421 }
4422 EOCP
4423 set try
4424 if eval $compile_ok; then
4425         lseeksize=`./try`
4426         echo "Your file offsets are $lseeksize bytes long."
4427 else
4428         dflt=$longsize
4429         echo " "
4430         echo "(I can't seem to compile the test program.  Guessing...)"
4431         rp="What is the size of your file offsets (in bytes)?"
4432         . ./myread
4433         lseeksize="$ans"
4434 fi
4435 $rm -f try.c try
4436
4437 : see what type file positions are declared as in the library
4438 rp="What is the type for file position used by fsetpos()?"
4439 set fpos_t fpostype long stdio.h sys/types.h
4440 eval $typedef_ask
4441
4442 echo " "
4443 case "$fpostype" in
4444 *_t) zzz="$fpostype"    ;;
4445 *)   zzz="fpos_t"       ;;
4446 esac
4447 echo "Checking the size of $zzz..." >&4 
4448 cat > try.c <<EOCP
4449 #include <sys/types.h>
4450 #include <stdio.h>
4451 int main() {
4452     printf("%d\n", (int)sizeof($fpostype));
4453     exit(0);
4454 }
4455 EOCP
4456 set try
4457 if eval $compile_ok; then
4458         yyy=`./try`
4459         case "$yyy" in
4460         '')     fpossize=4
4461                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4462                 ;;
4463         *)      fpossize=$yyy
4464                 echo "Your $zzz is $fpossize bytes long."
4465                 ;;
4466         esac
4467 else
4468         dflt="$longsize"
4469         echo " " >&4
4470         echo "(I can't compile the test program.  Guessing...)" >&4
4471         rp="What is the size of your file positions (in bytes)?"
4472         . ./myread
4473         fpossize="$ans"
4474 fi
4475
4476
4477
4478 # Backward compatibility (uselfs is deprecated).
4479 case "$uselfs" in
4480 "$define"|true|[yY]*)
4481         cat <<EOM >&4
4482
4483 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4484 EOM
4485         uselargefiles="$define"
4486         ;;
4487 esac                          
4488
4489 case "$lseeksize:$fpossize" in
4490 8:8) cat <<EOM
4491
4492 You can have files larger than 2 gigabytes.
4493 EOM
4494    val="$define" ;;
4495 *)    case "$uselargefiles" in
4496    "$undef"|false|[nN]*) dflt='n' ;;
4497    *)   dflt='y' ;;
4498    esac
4499    cat <<EOM
4500
4501 Perl can be built to understand large files (files larger than 2 gigabytes)
4502 on some systems.  To do so, Configure can be run with -Duselargefiles.
4503
4504 If this doesn't make any sense to you, just accept the default '$dflt'.
4505 EOM
4506    rp='Try to understand large files, if available?'
4507    . ./myread
4508    case "$ans" in
4509    y|Y)         val="$define" ;;
4510    *)           val="$undef"  ;;
4511    esac
4512    ;;
4513 esac
4514 set uselargefiles
4515 eval $setvar
4516 case "$uselargefiles" in
4517 "$define")
4518 : Look for a hint-file generated 'call-back-unit'.  If the
4519 : user has specified that a large files perl is to be built,
4520 : we may need to set or change some other defaults.
4521         if $test -f uselargefiles.cbu; then
4522                 echo "Your platform has some specific hints for large file builds, using them..."
4523                 . ./uselargefiles.cbu
4524                 echo " "
4525                 echo "Rechecking to see how big your file offsets are..." >&4
4526                 $cat >try.c <<EOCP
4527 #include <sys/types.h>
4528 #include <stdio.h>
4529 int main()
4530 {
4531     printf("%d\n", (int)sizeof($lseektype));
4532     return(0); 
4533 }
4534 EOCP
4535                 set try
4536                 if eval $compile_ok; then
4537                         lseeksize=`./try`
4538                         $echo "Your file offsets are now $lseeksize bytes long."
4539                 else
4540                         dflt="$lseeksize"
4541                         echo " "
4542                         echo "(I can't seem to compile the test program.  Guessing...)"
4543                         rp="What is the size of your file offsets (in bytes)?"
4544                         . ./myread
4545                         lseeksize="$ans"
4546                 fi
4547                 case "$fpostype" in
4548                 *_t) zzz="$fpostype"    ;;
4549                 *)   zzz="fpos_t"       ;;
4550                 esac
4551                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4552                 $cat > try.c <<EOCP
4553 #include <sys/types.h>
4554 #include <stdio.h>
4555 int main() {
4556     printf("%d\n", (int)sizeof($fpostype));
4557     exit(0);
4558 }
4559 EOCP
4560                 set try
4561                 if eval $compile_ok; then
4562                         yyy=`./try`
4563                         dflt="$lseeksize"
4564                         case "$yyy" in
4565                         '')     echo " "
4566                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4567                                 ;;
4568                         *)      fpossize=$yyy
4569                                 echo " $fpossize bytes." >&4
4570                                 ;;
4571                         esac
4572                 else
4573                         dflt="$fpossize"
4574                         echo " "
4575                         echo "(I can't compile the test program.  Guessing...)" >&4
4576                         rp="What is the size of your file positions (in bytes)?"
4577                         . ./myread
4578                         fpossize="$ans"
4579                 fi
4580                 $rm -f try.c try
4581         fi
4582         ;;
4583 esac
4584
4585
4586 case "$usemorebits" in
4587 "$define"|true|[yY]*)
4588         use64bitint="$define"
4589         uselongdouble="$define"
4590         usemorebits="$define"
4591         ;;
4592 *)      usemorebits="$undef"
4593         ;;
4594 esac
4595
4596
4597 case "$uselonglong" in
4598 "$define"|true|[yY]*)
4599         cat <<EOM >&4
4600
4601 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4602 EOM
4603         use64bitint="$define"
4604         ;;
4605 esac                          
4606 case "$use64bits" in
4607 "$define"|true|[yY]*)
4608         cat <<EOM >&4
4609
4610 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4611 EOM
4612         use64bitint="$define"
4613         ;;
4614 esac                          
4615 case "$use64bitints" in
4616 "$define"|true|[yY]*)
4617         cat <<EOM >&4
4618
4619 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4620 EOM
4621         use64bitint="$define"
4622         ;;
4623 esac                          
4624 case "$use64bitsint" in
4625 "$define"|true|[yY]*)
4626         cat <<EOM >&4
4627
4628 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4629 EOM
4630         use64bitint="$define"
4631         ;;
4632 esac                          
4633 case "$uselonglongs" in
4634 "$define"|true|[yY]*)
4635         cat <<EOM >&4
4636
4637 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4638 EOM
4639         use64bitint="$define"
4640         ;;
4641 esac                          
4642 case "$use64bitsall" in
4643 "$define"|true|[yY]*)
4644         cat <<EOM >&4
4645
4646 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4647 EOM
4648         use64bitall="$define"
4649         ;;
4650 esac                          
4651
4652 case "$ccflags" in
4653 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4654 esac
4655 case "$use64bitall" in
4656 "$define"|true|[yY]*) use64bitint="$define" ;;
4657 esac
4658
4659 case "$longsize" in
4660 8) cat <<EOM
4661
4662 You have natively 64-bit long integers.
4663 EOM
4664    val="$define"
4665    ;;
4666 *) case "$use64bitint" in
4667    "$define"|true|[yY]*) dflt='y';;
4668    *) dflt='n';;
4669    esac
4670    cat <<EOM
4671
4672 Perl can be built to take advantage of 64-bit integer types
4673 on some systems.  To do so, Configure can be run with -Duse64bitint.
4674 Choosing this option will most probably introduce binary incompatibilities.
4675
4676 If this doesn't make any sense to you, just accept the default '$dflt'.
4677 EOM
4678    rp='Try to use 64-bit integers, if available?'
4679    . ./myread
4680    case "$ans" in
4681    [yY]*) val="$define" ;;
4682    *)     val="$undef"  ;;
4683    esac
4684    ;;
4685 esac
4686 set use64bitint
4687 eval $setvar
4688
4689 case "$use64bitall" in
4690 "$define"|true|[yY]*) dflt='y' ;;
4691 *) case "$longsize" in
4692    8) dflt='y' ;;
4693    *) dflt='n' ;;
4694    esac
4695    ;;
4696 esac    
4697 cat <<EOM
4698
4699 You may also choose to try maximal 64-bitness.  It means using as much
4700 64-bitness as possible on the platform.  This in turn means even more
4701 binary incompatibilities.  On the other hand, your platform may not
4702 have any more 64-bitness available than what you already have chosen.
4703
4704 If this doesn't make any sense to you, just accept the default '$dflt'.
4705 EOM
4706 rp='Try to use maximal 64-bit support, if available?'
4707 . ./myread
4708 case "$ans" in
4709 [yY]*) val="$define" ;;
4710 *)     val="$undef"  ;;
4711 esac
4712 set use64bitall
4713 eval $setvar
4714 case "$use64bitall" in
4715 "$define")
4716         case "$use64bitint" in
4717         "$undef")
4718                 cat <<EOM
4719
4720 Since you have chosen a maximally 64-bit build, I'm also turning on
4721 the use of 64-bit integers.
4722 EOM
4723                 use64bitint="$define" ;;
4724         esac
4725         ;;
4726 esac
4727
4728 case "$use64bitint" in
4729 "$define"|true|[yY]*)
4730 : Look for a hint-file generated 'call-back-unit'.  If the
4731 : user has specified that a 64-bit perl is to be built,
4732 : we may need to set or change some other defaults.
4733         if $test -f use64bitint.cbu; then
4734                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4735                 . ./use64bitint.cbu
4736         fi
4737         case "$longsize" in
4738         4) case "$archname64" in
4739            '') archname64=64int ;;
4740            esac
4741            ;;
4742         esac
4743         ;;
4744 esac
4745
4746 case "$use64bitall" in
4747 "$define"|true|[yY]*)
4748 : Look for a hint-file generated 'call-back-unit'.  If the
4749 : user has specified that a maximally 64-bit perl is to be built,
4750 : we may need to set or change some other defaults.
4751         if $test -f use64bitall.cbu; then
4752                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4753                 . ./use64bitall.cbu
4754         fi
4755         case "$longsize" in
4756         4) case "$archname64" in
4757            ''|64int) archname64=64all ;;
4758            esac
4759            ;;
4760         esac
4761         ;;
4762 esac
4763
4764 echo " "
4765 echo "Checking for GNU C Library..." >&4
4766 cat >gnulibc.c <<EOM
4767 #include <stdio.h>
4768 int main()
4769 {
4770 #ifdef __GLIBC__
4771     exit(0);
4772 #else
4773     exit(1);
4774 #endif
4775 }
4776 EOM
4777 set gnulibc
4778 if eval $compile_ok && ./gnulibc; then
4779         val="$define"
4780         echo "You are using the GNU C Library"
4781 else
4782         val="$undef"
4783         echo "You are not using the GNU C Library"
4784 fi
4785 $rm -f gnulibc*
4786 set d_gnulibc
4787 eval $setvar
4788
4789 : see if nm is to be used to determine whether a symbol is defined or not
4790 case "$usenm" in
4791 '')
4792         dflt=''
4793         case "$d_gnulibc" in
4794         "$define")
4795                 echo " "
4796                 echo "nm probably won't work on the GNU C Library." >&4
4797                 dflt=n
4798                 ;;
4799         esac
4800         case "$dflt" in
4801         '') 
4802                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4803                         echo " "
4804                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4805                         echo "'nm' won't be sufficient on this sytem." >&4
4806                         dflt=n
4807                 fi
4808                 ;;
4809         esac
4810         case "$dflt" in
4811         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4812                 if $test $dflt -gt 20; then
4813                         dflt=y
4814                 else
4815                         dflt=n
4816                 fi
4817                 ;;
4818         esac
4819         ;;
4820 *)
4821         case "$usenm" in
4822         true|$define) dflt=y;;
4823         *) dflt=n;;
4824         esac
4825         ;;
4826 esac
4827 $cat <<EOM
4828
4829 I can use $nm to extract the symbols from your C libraries. This
4830 is a time consuming task which may generate huge output on the disk (up
4831 to 3 megabytes) but that should make the symbols extraction faster. The
4832 alternative is to skip the 'nm' extraction part and to compile a small
4833 test program instead to determine whether each symbol is present. If
4834 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4835 this may be the best solution.
4836
4837 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4838
4839 EOM
4840 rp="Shall I use $nm to extract C symbols from the libraries?"
4841 . ./myread
4842 case "$ans" in
4843 [Nn]*) usenm=false;;
4844 *) usenm=true;;
4845 esac
4846
4847 runnm=$usenm
4848 case "$reuseval" in
4849 true) runnm=false;;
4850 esac
4851
4852 : nm options which may be necessary
4853 case "$nm_opt" in
4854 '') if $test -f /mach_boot; then
4855                 nm_opt=''       # Mach
4856         elif $test -d /usr/ccs/lib; then
4857                 nm_opt='-p'     # Solaris (and SunOS?)
4858         elif $test -f /dgux; then
4859                 nm_opt='-p'     # DG-UX
4860         elif $test -f /lib64/rld; then
4861                 nm_opt='-p'     # 64-bit Irix
4862         else
4863                 nm_opt=''
4864         fi;;
4865 esac
4866
4867 : nm options which may be necessary for shared libraries but illegal
4868 : for archive libraries.  Thank you, Linux.
4869 case "$nm_so_opt" in
4870 '')     case "$myuname" in
4871         *linux*)
4872                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4873                         nm_so_opt='--dynamic'
4874                 fi
4875                 ;;
4876         esac
4877         ;;
4878 esac
4879
4880 case "$runnm" in
4881 true)
4882 : get list of predefined functions in a handy place
4883 echo " "
4884 case "$libc" in
4885 '') libc=unknown
4886         case "$libs" in
4887         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4888         esac
4889         ;;
4890 esac
4891 libnames='';
4892 case "$libs" in
4893 '') ;;
4894 *)  for thislib in $libs; do
4895         case "$thislib" in
4896         -lc|-lc_s)
4897                 : Handle C library specially below.
4898                 ;;
4899         -l*)
4900                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4901                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4902                         :
4903                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4904                         :
4905                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4906                         :
4907                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4908                         :
4909                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4910                         :
4911                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4912                         :
4913                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4914                         :
4915                 else
4916                         try=''
4917                 fi
4918                 libnames="$libnames $try"
4919                 ;;
4920         *) libnames="$libnames $thislib" ;;
4921         esac
4922         done
4923         ;;
4924 esac
4925 xxx=normal
4926 case "$libc" in
4927 unknown)
4928         set /lib/libc.$so
4929         for xxx in $libpth; do
4930                 $test -r $1 || set $xxx/libc.$so
4931                 : The messy sed command sorts on library version numbers.
4932                 $test -r $1 || \
4933                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4934                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4935                                 h
4936                                 s/[0-9][0-9]*/0000&/g
4937                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4938                                 G
4939                                 s/\n/ /' | \
4940                          sort | $sed -e 's/^.* //'`
4941                 eval set \$$#
4942         done
4943         $test -r $1 || set /usr/ccs/lib/libc.$so
4944         $test -r $1 || set /lib/libsys_s$_a
4945         ;;
4946 *)
4947         set blurfl
4948         ;;
4949 esac
4950 if $test -r "$1"; then
4951         echo "Your (shared) C library seems to be in $1."
4952         libc="$1"
4953 elif $test -r /lib/libc && $test -r /lib/clib; then
4954         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4955         xxx=apollo
4956         libc='/lib/clib /lib/libc'
4957         if $test -r /lib/syslib; then
4958                 echo "(Your math library is in /lib/syslib.)"
4959                 libc="$libc /lib/syslib"
4960         fi
4961 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4962         echo "Your C library seems to be in $libc, as you said before."
4963 elif $test -r $incpath/usr/lib/libc$_a; then
4964         libc=$incpath/usr/lib/libc$_a;
4965         echo "Your C library seems to be in $libc.  That's fine."
4966 elif $test -r /lib/libc$_a; then
4967         libc=/lib/libc$_a;
4968         echo "Your C library seems to be in $libc.  You're normal."
4969 else
4970         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4971                 :
4972         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4973                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4974         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4975                 :
4976         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4977                 :
4978         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4979                 :
4980         else
4981                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4982         fi
4983         if $test -r "$tans"; then
4984                 echo "Your C library seems to be in $tans, of all places."
4985                 libc=$tans
4986         else
4987                 libc='blurfl'
4988         fi
4989 fi
4990 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4991         dflt="$libc"
4992         cat <<EOM
4993
4994 If the guess above is wrong (which it might be if you're using a strange
4995 compiler, or your machine supports multiple models), you can override it here.
4996
4997 EOM
4998 else
4999         dflt=''
5000         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5001         cat >&4 <<EOM
5002 I can't seem to find your C library.  I've looked in the following places:
5003
5004 EOM
5005         $sed 's/^/      /' libpath
5006         cat <<EOM
5007
5008 None of these seems to contain your C library. I need to get its name...
5009
5010 EOM
5011 fi
5012 fn=f
5013 rp='Where is your C library?'
5014 . ./getfile
5015 libc="$ans"
5016
5017 echo " "
5018 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5019 set X `cat libnames`
5020 shift
5021 xxx=files
5022 case $# in 1) xxx=file; esac
5023 echo "Extracting names from the following $xxx for later perusal:" >&4
5024 echo " "
5025 $sed 's/^/      /' libnames >&4
5026 echo " "
5027 $echo $n "This may take a while...$c" >&4
5028
5029 for file in $*; do
5030         case $file in
5031         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5032         *) $nm $nm_opt $file 2>/dev/null;;
5033         esac
5034 done >libc.tmp
5035
5036 $echo $n ".$c"
5037 $grep fprintf libc.tmp > libc.ptf
5038 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5039 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5040 xxx='[ADTSIW]'
5041 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5042         eval $xscan;\
5043         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5044                 eval $xrun
5045 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5046         eval $xscan;\
5047         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5048                 eval $xrun
5049 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5050         eval $xscan;\
5051         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5052                 eval $xrun
5053 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5054         eval $xscan;\
5055         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5056                 eval $xrun
5057 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5058         eval $xscan;\
5059         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5060                 eval $xrun
5061 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5062         eval $xscan;\
5063         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5064                 eval $xrun
5065 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5066                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5067         eval $xscan;\
5068         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5069                 eval $xrun
5070 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5071         eval $xscan;\
5072         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5073                 eval $xrun
5074 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5075         eval $xscan;\
5076         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5077                 eval $xrun
5078 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5079         eval $xscan;\
5080         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5081                 eval $xrun
5082 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5083         eval $xscan;\
5084         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5085                 eval $xrun
5086 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5087         eval $xscan;\
5088         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5089                 eval $xrun
5090 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5091         eval $xscan;\
5092         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5093                 eval $xrun
5094 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5095         eval $xscan;\
5096         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5097                 eval $xrun
5098 else
5099         $nm -p $* 2>/dev/null >libc.tmp
5100         $grep fprintf libc.tmp > libc.ptf
5101         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5102                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5103         then
5104                 nm_opt='-p'
5105                 eval $xrun
5106         else
5107                 echo " "
5108                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5109                 com=''
5110                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5111                         for thisname in $libnames $libc; do
5112                                 $ar t $thisname >>libc.tmp
5113                         done
5114                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5115                         echo "Ok." >&4
5116                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5117                         # Repeat libc to extract forwarders to DLL entries too
5118                         for thisname in $libnames $libc; do
5119                                 $ar tv $thisname >>libc.tmp
5120                                 # Revision 50 of EMX has bug in $ar.
5121                                 # it will not extract forwarders to DLL entries
5122                                 # Use emximp which will extract exactly them.
5123                                 emximp -o tmp.imp $thisname \
5124                                     2>/dev/null && \
5125                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5126                                     < tmp.imp >>libc.tmp
5127                                 $rm tmp.imp
5128                         done
5129                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5130                         echo "Ok." >&4
5131                 else
5132                         echo "$ar didn't seem to work right." >&4
5133                         echo "Maybe this is a Cray...trying bld instead..." >&4
5134                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5135                         then
5136                                 for thisname in $libnames; do
5137                                         bld t $libnames | \
5138                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5139                                         $ar t $thisname >>libc.tmp
5140                                 done
5141                                 echo "Ok." >&4
5142                         else
5143                                 echo "That didn't work either.  Giving up." >&4
5144                                 exit 1
5145                         fi
5146                 fi
5147         fi
5148 fi
5149 nm_extract="$com"
5150 if $test -f /lib/syscalls.exp; then
5151         echo " "
5152         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5153         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5154 fi
5155 ;;
5156 esac
5157 $rm -f libnames libpath
5158
5159 : is a C symbol defined?
5160 csym='tlook=$1;
5161 case "$3" in
5162 -v) tf=libc.tmp; tc=""; tdc="";;
5163 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5164 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5165 esac;
5166 tx=yes;
5167 case "$reuseval-$4" in
5168 true-) ;;
5169 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5170 esac;
5171 case "$tx" in
5172 yes)
5173         case "$runnm" in
5174         true)
5175                 if $contains $tlook $tf >/dev/null 2>&1;
5176                 then tval=true;
5177                 else tval=false;
5178                 fi;;
5179         *)
5180                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5181                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5182                 then tval=true;
5183                 else tval=false;
5184                 fi;
5185                 $rm -f t t.c;;
5186         esac;;
5187 *)
5188         case "$tval" in
5189         $define) tval=true;;
5190         *) tval=false;;
5191         esac;;
5192 esac;
5193 eval "$2=$tval"'
5194
5195 : define an is-in-libc? function
5196 inlibc='echo " "; td=$define; tu=$undef;
5197 sym=$1; var=$2; eval "was=\$$2";
5198 tx=yes;
5199 case "$reuseval$was" in
5200 true) ;;
5201 true*) tx=no;;
5202 esac;
5203 case "$tx" in
5204 yes)
5205         set $sym tres -f;
5206         eval $csym;
5207         case "$tres" in
5208         true)
5209                 echo "$sym() found." >&4;
5210                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5211         *)
5212                 echo "$sym() NOT found." >&4;
5213                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5214         esac;;
5215 *)
5216         case "$was" in
5217         $define) echo "$sym() found." >&4;;
5218         *) echo "$sym() NOT found." >&4;;
5219         esac;;
5220 esac'
5221
5222 : see if sqrtl exists
5223 set sqrtl d_sqrtl
5224 eval $inlibc
5225
5226 case "$ccflags" in
5227 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5228 esac
5229
5230 case "$uselongdouble" in
5231 $define|true|[yY]*)     dflt='y';;
5232 *) dflt='n';;
5233 esac
5234 cat <<EOM
5235
5236 Perl can be built to take advantage of long doubles which
5237 (if available) may give more accuracy and range for floating point numbers.
5238
5239 If this doesn't make any sense to you, just accept the default '$dflt'.
5240 EOM
5241 rp='Try to use long doubles if available?'
5242 . ./myread
5243 case "$ans" in
5244 y|Y)    val="$define"   ;;
5245 *)      val="$undef"    ;;
5246 esac
5247 set uselongdouble
5248 eval $setvar
5249
5250 case "$uselongdouble" in
5251 true|[yY]*) uselongdouble="$define" ;;
5252 esac
5253
5254 case "$uselongdouble" in
5255 $define)
5256 : Look for a hint-file generated 'call-back-unit'.  If the
5257 : user has specified that long doubles should be used,
5258 : we may need to set or change some other defaults.
5259         if $test -f uselongdouble.cbu; then
5260                 echo "Your platform has some specific hints for long doubles, using them..."
5261                 . ./uselongdouble.cbu
5262         else
5263                 $cat <<EOM
5264 (Your platform doesn't have any specific hints for long doubles.)
5265 EOM
5266         fi
5267         ;;
5268 esac
5269
5270 case "$uselongdouble:$d_sqrtl" in
5271 $define:$undef)
5272                 $cat <<EOM >&4
5273
5274 *** You requested the use of long doubles but you do not seem to have
5275 *** the mathematic functions for long doubles.  I'm disabling the use
5276 *** of long doubles.
5277
5278 EOM
5279         uselongdouble=$undef
5280         ;;
5281 esac
5282
5283 : determine the architecture name
5284 echo " "
5285 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5286         tarch=`arch`"-$osname"
5287 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5288         if uname -m > tmparch 2>&1 ; then
5289                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5290                         -e 's/$/'"-$osname/" tmparch`
5291         else
5292                 tarch="$osname"
5293         fi
5294         $rm -f tmparch
5295 else
5296         tarch="$osname"
5297 fi
5298 case "$myarchname" in
5299 ''|"$tarch") ;;
5300 *)
5301         echo "(Your architecture name used to be $myarchname.)"
5302         archname=''
5303         ;;
5304 esac
5305 myarchname="$tarch"
5306 case "$archname" in
5307 '') dflt="$tarch";;
5308 *) dflt="$archname";;
5309 esac
5310 rp='What is your architecture name'
5311 . ./myread
5312 archname="$ans"
5313 case "$usethreads" in
5314 $define)
5315         echo "Threads selected." >&4
5316         case "$archname" in
5317         *-thread*) echo "...and architecture name already has -thread." >&4
5318                 ;;
5319         *)      archname="$archname-thread"
5320                 echo "...setting architecture name to $archname." >&4
5321                 ;;
5322         esac
5323         ;;
5324 esac
5325 case "$usemultiplicity" in
5326 $define)
5327         echo "Multiplicity selected." >&4
5328         case "$archname" in
5329         *-multi*) echo "...and architecture name already has -multi." >&4
5330                 ;;
5331         *)      archname="$archname-multi"
5332                 echo "...setting architecture name to $archname." >&4
5333                 ;;
5334         esac
5335         ;;
5336 esac
5337 case "$use64bitint$use64bitall" in
5338 *"$define"*)
5339         case "$archname64" in
5340         '')
5341                 ;;
5342         *)
5343                 case "$use64bitint" in
5344                 "$define") echo "64 bit integers selected." >&4 ;;
5345                 esac
5346                 case "$use64bitall" in
5347                 "$define") echo "64 bit memory model selected." >&4 ;;
5348                 esac
5349                 case "$archname" in
5350                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5351                         ;;
5352                 *)      archname="$archname-$archname64"
5353                         echo "...setting architecture name to $archname." >&4
5354                         ;;
5355                 esac
5356                 ;;
5357         esac
5358 esac
5359 case "$uselongdouble" in
5360 $define)
5361         echo "Long doubles selected." >&4
5362         case "$archname" in
5363         *-ld*) echo "...and architecture name already has -ld." >&4
5364                 ;;
5365         *)      archname="$archname-ld"
5366                 echo "...setting architecture name to $archname." >&4
5367                 ;;
5368         esac
5369         ;;
5370 esac
5371
5372 : determine root of directory hierarchy where package will be installed.
5373 case "$prefix" in
5374 '')
5375         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5376         ;;
5377 *)
5378         dflt="$prefix"
5379         ;;
5380 esac
5381 $cat <<EOM
5382
5383 By default, $package will be installed in $dflt/bin, manual pages
5384 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5385 installation directories. Typically this is something like /usr/local.
5386 If you wish to have binaries under /usr/bin but other parts of the
5387 installation under /usr/local, that's ok: you will be prompted
5388 separately for each of the installation directories, the prefix being
5389 only used to set the defaults.
5390
5391 EOM
5392 fn=d~
5393 rp='Installation prefix to use?'
5394 . ./getfile
5395 oldprefix=''
5396 case "$prefix" in
5397 '') ;;
5398 *)
5399         case "$ans" in
5400         "$prefix") ;;
5401         *) oldprefix="$prefix";;
5402         esac
5403         ;;
5404 esac
5405 prefix="$ans"
5406 prefixexp="$ansexp"
5407
5408 : is AFS running?
5409 echo " "
5410 case "$afs" in
5411 $define|true)   afs=true ;;
5412 $undef|false)   afs=false ;;
5413 *)      if test -d /afs; then
5414                 afs=true
5415         else
5416                 afs=false
5417         fi
5418         ;;
5419 esac
5420 if $afs; then
5421         echo "AFS may be running... I'll be extra cautious then..." >&4
5422 else
5423         echo "AFS does not seem to be running..." >&4
5424 fi
5425
5426 : determine installation prefix for where package is to be installed.
5427 if $afs; then 
5428 $cat <<EOM
5429
5430 Since you are running AFS, I need to distinguish the directory in which
5431 files will reside from the directory in which they are installed (and from
5432 which they are presumably copied to the former directory by occult means).
5433
5434 EOM
5435         case "$installprefix" in
5436         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5437         *) dflt="$installprefix";;
5438         esac
5439 else
5440 $cat <<EOM
5441
5442 In some special cases, particularly when building $package for distribution,
5443 it is convenient to distinguish between the directory in which files should 
5444 be installed from the directory ($prefix) in which they 
5445 will eventually reside.  For most users, these two directories are the same.
5446
5447 EOM
5448         case "$installprefix" in
5449         '') dflt=$prefix ;;
5450         *) dflt=$installprefix;;
5451         esac
5452 fi
5453 fn=d~
5454 rp='What installation prefix should I use for installing files?'
5455 . ./getfile
5456 installprefix="$ans"
5457 installprefixexp="$ansexp"
5458
5459 : set the prefixit variable, to compute a suitable default value
5460 prefixit='case "$3" in
5461 ""|none)
5462         case "$oldprefix" in
5463         "") eval "$1=\"\$$2\"";;
5464         *)
5465                 case "$3" in
5466                 "") eval "$1=";;
5467                 none)
5468                         eval "tp=\"\$$2\"";
5469                         case "$tp" in
5470                         ""|" ") eval "$1=\"\$$2\"";;
5471                         *) eval "$1=";;
5472                         esac;;
5473                 esac;;
5474         esac;;
5475 *)
5476         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5477         case "$tp" in
5478         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5479         /*-$oldprefix/*|\~*-$oldprefix/*)
5480                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5481         *) eval "$1=\"\$$2\"";;
5482         esac;;
5483 esac'
5484
5485
5486 : get the patchlevel
5487 echo " "
5488 echo "Getting the current patchlevel..." >&4
5489 if $test -r $rsrc/patchlevel.h;then
5490         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5491         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5492         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5493         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5494         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5495         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5496 else
5497         revision=0
5498         patchlevel=0
5499         subversion=0
5500         api_revision=0
5501         api_version=0
5502         api_subversion=0
5503 fi
5504 $echo "(You have $package version $patchlevel subversion $subversion.)"
5505 case "$osname" in
5506 dos|vms)
5507         : XXX Should be a Configure test for double-dots in filenames.
5508         version=`echo $revision $patchlevel $subversion | \
5509                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5510         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5511                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5512         ;;
5513 *)
5514         version=`echo $revision $patchlevel $subversion | \
5515                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5516         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5517                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5518         ;;
5519 esac
5520 : Special case the 5.005_xx maintenance series, which used 5.005
5521 : without any subversion label as a subdirectory in $sitelib
5522 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5523         api_versionstring='5.005'
5524 fi
5525
5526 : determine installation style
5527 : For now, try to deduce it from prefix unless it is already set.
5528 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5529 case "$installstyle" in
5530 '')     case "$prefix" in
5531                 *perl*) dflt='lib';;
5532                 *) dflt='lib/perl5' ;;
5533         esac
5534         ;;
5535 *)      dflt="$installstyle" ;;
5536 esac
5537 : Probably not worth prompting for this since we prompt for all
5538 : the directories individually, and the prompt would be too long and
5539 : confusing anyway.
5540 installstyle=$dflt
5541
5542 : determine where private library files go
5543 : Usual default is /usr/local/lib/perl5/$version.
5544 : Also allow things like /opt/perl/lib/$version, since 
5545 : /opt/perl/lib/perl5... would be redundant.
5546 : The default "style" setting is made in installstyle.U
5547 case "$installstyle" in
5548 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5549 *)       set dflt privlib lib/$version ;;
5550 esac
5551 eval $prefixit
5552 $cat <<EOM
5553
5554 There are some auxiliary files for $package that need to be put into a
5555 private library directory that is accessible by everyone.
5556
5557 EOM
5558 fn=d~+
5559 rp='Pathname where the private library files will reside?'
5560 . ./getfile
5561 privlib="$ans"
5562 privlibexp="$ansexp"
5563 : Change installation prefix, if necessary.
5564 if $test X"$prefix" != X"$installprefix"; then
5565         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5566 else
5567         installprivlib="$privlibexp"
5568 fi
5569
5570 : set the prefixup variable, to restore leading tilda escape
5571 prefixup='case "$prefixexp" in
5572 "$prefix") ;;
5573 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5574 esac'
5575
5576 : determine where public architecture dependent libraries go
5577 set archlib archlib
5578 eval $prefixit
5579 : privlib default is /usr/local/lib/$package/$version
5580 : archlib default is /usr/local/lib/$package/$version/$archname
5581 : privlib may have an optional trailing /share.
5582 tdflt=`echo $privlib | $sed 's,/share$,,'`
5583 tdflt=$tdflt/$archname
5584 case "$archlib" in
5585 '')     dflt=$tdflt
5586         ;;
5587 *)      dflt="$archlib"
5588     ;;
5589 esac
5590 $cat <<EOM
5591
5592 $spackage contains architecture-dependent library files.  If you are
5593 sharing libraries in a heterogeneous environment, you might store
5594 these files in a separate location.  Otherwise, you can just include
5595 them with the rest of the public library files.
5596
5597 EOM
5598 fn=d+~
5599 rp='Where do you want to put the public architecture-dependent libraries?'
5600 . ./getfile
5601 archlib="$ans"
5602 archlibexp="$ansexp"
5603 if $test X"$archlib" = X"$privlib"; then
5604         d_archlib="$undef"
5605 else
5606         d_archlib="$define"
5607 fi
5608 : Change installation prefix, if necessary.
5609 if $test X"$prefix" != X"$installprefix"; then
5610         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5611 else
5612         installarchlib="$archlibexp"
5613 fi
5614
5615
5616 : Binary compatibility with 5.005 is not possible for builds
5617 : with advanced features
5618 case "$usethreads$usemultiplicity" in
5619 *define*)
5620         bincompat5005="$undef"
5621         d_bincompat5005="$undef"
5622         ;;
5623 *)      $cat <<EOM
5624
5625 This version of Perl can be compiled for binary compatibility with 5.005.
5626 If you decide to do so, you will be able to continue using most of the
5627 extensions that were compiled for Perl 5.005.
5628
5629 EOM
5630         case "$bincompat5005$d_bincompat5005" in
5631         *"$undef"*) dflt=n ;;
5632         *) dflt=y ;;
5633         esac
5634         rp='Binary compatibility with Perl 5.005?'
5635         . ./myread
5636         case "$ans" in
5637         y*) val="$define" ;;
5638         *)  val="$undef" ;;
5639         esac
5640         set d_bincompat5005
5641         eval $setvar
5642         case "$d_bincompat5005" in
5643         "$define")
5644                 bincompat5005="$define"
5645                 ;;
5646         *)      bincompat5005="$undef"
5647                 d_bincompat5005="$undef"
5648                 ;;
5649         esac
5650         ;;
5651 esac
5652
5653
5654 : see if setuid scripts can be secure
5655 $cat <<EOM
5656
5657 Some kernels have a bug that prevents setuid #! scripts from being
5658 secure.  Some sites have disabled setuid #! scripts because of this.
5659
5660 First let's decide if your kernel supports secure setuid #! scripts.
5661 (If setuid #! scripts would be secure but have been disabled anyway,
5662 don't say that they are secure if asked.)
5663
5664 EOM
5665
5666 val="$undef"
5667 if $test -d /dev/fd; then
5668         echo "#!$ls" >reflect
5669         chmod +x,u+s reflect
5670         ./reflect >flect 2>&1
5671         if $contains "/dev/fd" flect >/dev/null; then
5672                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5673                 val="$define"
5674         else
5675                 $cat <<EOM
5676 If you are not sure if they are secure, I can check but I'll need a
5677 username and password different from the one you are using right now.
5678 If you don't have such a username or don't want me to test, simply
5679 enter 'none'.
5680
5681 EOM
5682                 rp='Other username to test security of setuid scripts with?'
5683                 dflt='none'
5684                 . ./myread
5685                 case "$ans" in
5686                 n|none)
5687                         case "$d_suidsafe" in
5688                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5689                                 dflt=n;;
5690                         "$undef")
5691                                 echo "Well, the $hint value is *not* secure." >&4
5692                                 dflt=n;;
5693                         *)      echo "Well, the $hint value *is* secure." >&4
5694                                 dflt=y;;
5695                         esac
5696                         ;;
5697                 *)
5698                         $rm -f reflect flect
5699                         echo "#!$ls" >reflect
5700                         chmod +x,u+s reflect
5701                         echo >flect
5702                         chmod a+w flect
5703                         echo '"su" will (probably) prompt you for '"$ans's password."
5704                         su $ans -c './reflect >flect'
5705                         if $contains "/dev/fd" flect >/dev/null; then
5706                                 echo "Okay, it looks like setuid scripts are secure." >&4
5707                                 dflt=y
5708                         else
5709                                 echo "I don't think setuid scripts are secure." >&4
5710                                 dflt=n
5711                         fi
5712                         ;;
5713                 esac
5714                 rp='Does your kernel have *secure* setuid scripts?'
5715                 . ./myread
5716                 case "$ans" in
5717                 [yY]*)  val="$define";;
5718                 *)      val="$undef";;
5719                 esac
5720         fi
5721 else
5722         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5723         echo "(That's for file descriptors, not floppy disks.)"
5724         val="$undef"
5725 fi
5726 set d_suidsafe
5727 eval $setvar
5728
5729 $rm -f reflect flect
5730
5731 : now see if they want to do setuid emulation
5732 echo " "
5733 val="$undef"
5734 case "$d_suidsafe" in
5735 "$define")
5736         val="$undef"
5737         echo "No need to emulate SUID scripts since they are secure here." >& 4
5738         ;;
5739 *)
5740         $cat <<EOM
5741 Some systems have disabled setuid scripts, especially systems where
5742 setuid scripts cannot be secure.  On systems where setuid scripts have
5743 been disabled, the setuid/setgid bits on scripts are currently
5744 useless.  It is possible for $package to detect those bits and emulate
5745 setuid/setgid in a secure fashion.  This emulation will only work if
5746 setuid scripts have been disabled in your kernel.
5747
5748 EOM
5749         case "$d_dosuid" in
5750         "$define") dflt=y ;;
5751         *) dflt=n ;;
5752         esac
5753         rp="Do you want to do setuid/setgid emulation?"
5754         . ./myread
5755         case "$ans" in
5756         [yY]*)  val="$define";;
5757         *)      val="$undef";;
5758         esac
5759         ;;
5760 esac
5761 set d_dosuid
5762 eval $setvar
5763
5764 : determine filename position in cpp output
5765 echo " "
5766 echo "Computing filename position in cpp output for #include directives..." >&4
5767 echo '#include <stdio.h>' > foo.c
5768 $cat >fieldn <<EOF
5769 $startsh
5770 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5771 $grep '^[       ]*#.*stdio\.h' | \
5772 while read cline; do
5773         pos=1
5774         set \$cline
5775         while $test \$# -gt 0; do
5776                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5777                         echo "\$pos"
5778                         exit 0
5779                 fi
5780                 shift
5781                 pos=\`expr \$pos + 1\`
5782         done
5783 done
5784 EOF
5785 chmod +x fieldn
5786 fieldn=`./fieldn`
5787 $rm -f foo.c fieldn
5788 case $fieldn in
5789 '') pos='???';;
5790 1) pos=first;;
5791 2) pos=second;;
5792 3) pos=third;;
5793 *) pos="${fieldn}th";;
5794 esac
5795 echo "Your cpp writes the filename in the $pos field of the line."
5796
5797 : locate header file
5798 $cat >findhdr <<EOF
5799 $startsh
5800 wanted=\$1
5801 name=''
5802 for usrincdir in $usrinc
5803 do
5804         if test -f \$usrincdir/\$wanted; then
5805                 echo "\$usrincdir/\$wanted"
5806                 exit 0
5807         fi
5808 done
5809 awkprg='{ print \$$fieldn }'
5810 echo "#include <\$wanted>" > foo\$\$.c
5811 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5812 $grep "^[       ]*#.*\$wanted" | \
5813 while read cline; do
5814         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5815         case "\$name" in
5816         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5817         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5818         *) exit 2;;
5819         esac;
5820 done;
5821 #
5822 # status = 0: grep returned 0 lines, case statement not executed
5823 # status = 1: headerfile found
5824 # status = 2: while loop executed, no headerfile found
5825 #
5826 status=\$?
5827 $rm -f foo\$\$.c;
5828 if test \$status -eq 1; then
5829         exit 0;
5830 fi
5831 exit 1
5832 EOF
5833 chmod +x findhdr
5834
5835 : define an alternate in-header-list? function
5836 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5837 cont=true; xxf="echo \"<\$1> found.\" >&4";
5838 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5839 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5840 esac;
5841 case $# in 4) instead=instead;; *) instead="at last";; esac;
5842 while $test "$cont"; do
5843         xxx=`./findhdr $1`
5844         var=$2; eval "was=\$$2";
5845         if $test "$xxx" && $test -r "$xxx";
5846         then eval $xxf;
5847         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5848                 cont="";
5849         else eval $xxnf;
5850         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5851         set $yyy; shift; shift; yyy=$@;
5852         case $# in 0) cont="";;
5853         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5854                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5855         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5856                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5857         esac;
5858 done;
5859 while $test "$yyy";
5860 do set $yyy; var=$2; eval "was=\$$2";
5861         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5862         set $yyy; shift; shift; yyy=$@;
5863 done'
5864
5865 : see if this is a malloc.h system
5866 set malloc.h i_malloc
5867 eval $inhdr
5868
5869 : see if stdlib is available
5870 set stdlib.h i_stdlib
5871 eval $inhdr
5872
5873 : determine which malloc to compile in
5874 echo " "
5875 case "$usemymalloc" in
5876 ''|[yY]*|true|$define)  dflt='y' ;;
5877 *)      dflt='n' ;;
5878 esac
5879 rp="Do you wish to attempt to use the malloc that comes with $package?"
5880 . ./myread
5881 usemymalloc="$ans"
5882 case "$ans" in
5883 y*|true)
5884         usemymalloc='y'
5885         mallocsrc='malloc.c'
5886         mallocobj="malloc$_o"
5887         d_mymalloc="$define"
5888         case "$libs" in
5889         *-lmalloc*)
5890                 : Remove malloc from list of libraries to use
5891                 echo "Removing unneeded -lmalloc from library list" >&4
5892                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5893                 shift
5894                 libs="$*"
5895                 echo "libs = $libs" >&4
5896                 ;;
5897         esac
5898         ;;
5899 *)
5900         usemymalloc='n'
5901         mallocsrc=''
5902         mallocobj=''
5903         d_mymalloc="$undef"
5904         ;;
5905 esac
5906
5907 : compute the return types of malloc and free
5908 echo " "
5909 $cat >malloc.c <<END
5910 #$i_malloc I_MALLOC
5911 #$i_stdlib I_STDLIB
5912 #include <stdio.h>
5913 #include <sys/types.h>
5914 #ifdef I_MALLOC
5915 #include <malloc.h>
5916 #endif
5917 #ifdef I_STDLIB
5918 #include <stdlib.h>
5919 #endif
5920 #ifdef TRY_MALLOC
5921 void *malloc();
5922 #endif
5923 #ifdef TRY_FREE
5924 void free();
5925 #endif
5926 END
5927 case "$malloctype" in
5928 '')
5929         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5930                 malloctype='void *'
5931         else
5932                 malloctype='char *'
5933         fi
5934         ;;
5935 esac
5936 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5937
5938 case "$freetype" in
5939 '')
5940         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5941                 freetype='void'
5942         else
5943                 freetype='int'
5944         fi
5945         ;;
5946 esac
5947 echo "Your system uses $freetype free(), it would seem." >&4
5948 $rm -f malloc.[co]
5949 $cat <<EOM
5950
5951 After $package is installed, you may wish to install various
5952 add-on modules and utilities.  Typically, these add-ons will
5953 be installed under $prefix with the rest
5954 of this package.  However, you may wish to install such add-ons
5955 elsewhere under a different prefix.
5956
5957 If you do not wish to put everything under a single prefix, that's
5958 ok.  You will be prompted for the individual locations; this siteprefix
5959 is only used to suggest the defaults.
5960
5961 The default should be fine for most people.
5962
5963 EOM
5964 fn=d~+
5965 rp='Installation prefix to use for add-on modules and utilities?'
5966 : XXX Here might be another good place for an installstyle setting.
5967 case "$siteprefix" in
5968 '') dflt=$prefix ;;
5969 *)  dflt=$siteprefix ;;
5970 esac
5971 . ./getfile
5972 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5973 oldsiteprefix=''
5974 case "$siteprefix" in
5975 '') ;;
5976 *)      case "$ans" in
5977         "$prefix") ;;
5978         *) oldsiteprefix="$prefix";;
5979         esac
5980         ;;
5981 esac
5982 siteprefix="$ans"
5983 siteprefixexp="$ansexp"
5984
5985 : determine where site specific libraries go.
5986 : Usual default is /usr/local/lib/perl5/site_perl/$version
5987 : The default "style" setting is made in installstyle.U
5988 : XXX No longer works with Prefixit stuff.
5989 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5990 case "$sitelib" in
5991 '') case "$installstyle" in
5992         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5993         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5994         esac
5995         ;;
5996 *)      dflt="$sitelib"
5997         ;;
5998 esac
5999 $cat <<EOM
6000
6001 The installation process will create a directory for
6002 site-specific extensions and modules.  Most users find it convenient
6003 to place all site-specific files in this directory rather than in the
6004 main distribution directory.
6005
6006 EOM
6007 fn=d~+
6008 rp='Pathname for the site-specific library files?'
6009 . ./getfile
6010 sitelib="$ans"
6011 sitelibexp="$ansexp"
6012 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
6013 : Change installation prefix, if necessary.
6014 if $test X"$prefix" != X"$installprefix"; then
6015         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
6016 else
6017         installsitelib="$sitelibexp"
6018 fi
6019
6020 : determine where site specific architecture-dependent libraries go.
6021 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6022 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6023 : sitelib may have an optional trailing /share.
6024 case "$sitearch" in
6025 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
6026         dflt="$dflt/$archname"
6027         ;;
6028 *)      dflt="$sitearch"
6029         ;;
6030 esac
6031 set sitearch sitearch none
6032 eval $prefixit
6033 $cat <<EOM
6034
6035 The installation process will also create a directory for
6036 architecture-dependent site-specific extensions and modules.
6037
6038 EOM
6039 fn=d~+
6040 rp='Pathname for the site-specific architecture-dependent library files?'
6041 . ./getfile
6042 sitearch="$ans"
6043 sitearchexp="$ansexp"
6044 : Change installation prefix, if necessary.
6045 if $test X"$prefix" != X"$installprefix"; then
6046         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6047 else
6048         installsitearch="$sitearchexp"
6049 fi
6050
6051 $cat <<EOM
6052
6053 The installation process will also create a directory for
6054 vendor-supplied add-ons.  Vendors who supply perl with their system
6055 may find it convenient to place all vendor-supplied files in this
6056 directory rather than in the main distribution directory.  This will
6057 ease upgrades between binary-compatible maintenance versions of perl.
6058
6059 Of course you may also use these directories in whatever way you see
6060 fit.  For example, you might use them to access modules shared over a
6061 company-wide network.
6062
6063 The default answer should be fine for most people.
6064 This causes further questions about vendor add-ons to be skipped
6065 and no vendor-specific directories will be configured for perl.
6066
6067 EOM
6068 rp='Do you want to configure vendor-specific add-on directories?'
6069 case "$usevendorprefix" in
6070 define|true|[yY]*) dflt=y ;;
6071 *)      : User may have set vendorprefix directly on Configure command line.
6072         case "$vendorprefix" in
6073         ''|' ') dflt=n ;;
6074         *)      dflt=y ;;
6075         esac
6076         ;;
6077 esac
6078 . ./myread
6079 case "$ans" in
6080 [yY]*)  fn=d~+
6081         rp='Installation prefix to use for vendor-supplied add-ons?'
6082         case "$vendorprefix" in
6083         '') dflt='' ;;
6084         *)  dflt=$vendorprefix ;;
6085         esac
6086         . ./getfile
6087         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
6088         oldvendorprefix=''
6089         case "$vendorprefix" in
6090         '') ;;
6091         *)      case "$ans" in
6092                 "$prefix") ;;
6093                 *) oldvendorprefix="$prefix";;
6094                 esac
6095                 ;;
6096         esac
6097         usevendorprefix="$define"
6098         vendorprefix="$ans"
6099         vendorprefixexp="$ansexp"
6100         ;;
6101 *)      usevendorprefix="$undef"
6102         vendorprefix=''
6103         vendorprefixexp=''
6104         ;;
6105 esac
6106
6107 case "$vendorprefix" in
6108 '')     d_vendorlib="$undef"
6109         vendorlib=''
6110         vendorlibexp=''
6111         ;;
6112 *)      d_vendorlib="$define"
6113         : determine where vendor-supplied modules go.
6114         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6115         case "$vendorlib" in
6116         '')
6117                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6118                 case "$installstyle" in
6119                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6120                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6121                 esac
6122                 ;;
6123         *)      dflt="$vendorlib"
6124                 ;;
6125         esac
6126         fn=d~+
6127         rp='Pathname for the vendor-supplied library files?'
6128         . ./getfile
6129         vendorlib="$ans"
6130         vendorlibexp="$ansexp"
6131         ;;
6132 esac
6133 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6134 : Change installation prefix, if necessary.
6135 if $test X"$prefix" != X"$installprefix"; then
6136         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6137 else
6138         installvendorlib="$vendorlibexp"
6139 fi
6140
6141 case "$vendorprefix" in
6142 '')     d_vendorarch="$undef"
6143         vendorarch=''
6144         vendorarchexp=''
6145         ;;
6146 *)      d_vendorarch="$define"
6147         : determine where vendor-supplied architecture-dependent libraries go.
6148         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6149         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6150         : vendorlib may have an optional trailing /share.
6151         case "$vendorarch" in
6152         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6153                 dflt="$dflt/$archname"
6154                 ;;
6155         *)      dflt="$vendorarch" ;;
6156         esac
6157         fn=d~+
6158         rp='Pathname for vendor-supplied architecture-dependent files?'
6159         . ./getfile
6160         vendorarch="$ans"
6161         vendorarchexp="$ansexp"
6162         ;;
6163 esac
6164 : Change installation prefix, if necessary.
6165 if $test X"$prefix" != X"$installprefix"; then
6166         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6167 else
6168         installvendorarch="$vendorarchexp"
6169 fi
6170
6171 : Final catch-all directories to search
6172 $cat <<EOM
6173
6174 Lastly, you can have perl look in other directories for extensions and
6175 modules in addition to those already specified.
6176 These directories will be searched after 
6177         $sitearch 
6178         $sitelib 
6179 EOM
6180 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6181 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6182 echo ' '
6183 case "$otherlibdirs" in
6184 ''|' ') dflt='none' ;;
6185 *)      dflt="$otherlibdirs" ;;
6186 esac
6187 $cat <<EOM
6188 Enter a colon-separated set of extra paths to include in perl's @INC
6189 search path, or enter 'none' for no extra paths.
6190
6191 EOM
6192
6193 rp='Colon-separated list of additional directories for perl to search?'
6194 . ./myread
6195 case "$ans" in
6196 ' '|''|none)    otherlibdirs=' ' ;;     
6197 *)      otherlibdirs="$ans" ;;
6198 esac
6199 case "$otherlibdirs" in
6200 ' ') val=$undef ;;
6201 *)      val=$define ;;
6202 esac
6203 set d_perl_otherlibdirs
6204 eval $setvar
6205
6206 : Cruising for prototypes
6207 echo " "
6208 echo "Checking out function prototypes..." >&4
6209 $cat >prototype.c <<'EOCP'
6210 int main(int argc, char *argv[]) {
6211         exit(0);}
6212 EOCP
6213 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6214         echo "Your C compiler appears to support function prototypes."
6215         val="$define"
6216 else
6217         echo "Your C compiler doesn't seem to understand function prototypes."
6218         val="$undef"
6219 fi
6220 set prototype
6221 eval $setvar
6222 $rm -f prototype*
6223
6224 case "$prototype" in
6225 "$define") ;;
6226 *)      ansi2knr='ansi2knr'
6227         echo " "
6228         cat <<EOM >&4
6229
6230 $me:  FATAL ERROR:
6231 This version of $package can only be compiled by a compiler that 
6232 understands function prototypes.  Unfortunately, your C compiler 
6233         $cc $ccflags
6234 doesn't seem to understand them.  Sorry about that.
6235
6236 If GNU cc is available for your system, perhaps you could try that instead.  
6237
6238 Eventually, we hope to support building Perl with pre-ANSI compilers.
6239 If you would like to help in that effort, please contact <perlbug@perl.org>.
6240
6241 Aborting Configure now.
6242 EOM
6243         exit 2
6244         ;;
6245 esac
6246
6247 : determine where public executables go
6248 echo " "
6249 set dflt bin bin
6250 eval $prefixit
6251 fn=d~
6252 rp='Pathname where the public executables will reside?'
6253 . ./getfile
6254 if $test "X$ansexp" != "X$binexp"; then
6255         installbin=''
6256 fi
6257 bin="$ans"
6258 binexp="$ansexp"
6259 : Change installation prefix, if necessary.
6260 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6261 if $test X"$prefix" != X"$installprefix"; then
6262         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6263 else
6264         installbin="$binexp"
6265 fi
6266
6267 : Find perl5.005 or later.
6268 echo "Looking for a previously installed perl5.005 or later... "
6269 case "$perl5" in
6270 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6271                 : Check if this perl is recent and can load a simple module
6272                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6273                         perl5=$tdir/perl
6274                         break;
6275                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6276                         perl5=$tdir/perl
6277                         break;
6278                 fi
6279         done
6280         ;;
6281 *)      perl5="$perl5"
6282         ;;
6283 esac
6284 case "$perl5" in
6285 '')     echo "None found.  That's ok.";;
6286 *)      echo "Using $perl5." ;;
6287 esac
6288
6289 : Determine list of previous versions to include in @INC
6290 $cat > getverlist <<EOPL
6291 #!$perl5 -w
6292 use File::Basename;
6293 \$api_versionstring = "$api_versionstring";
6294 \$version = "$version";
6295 \$stem = "$sitelib_stem";
6296 \$archname = "$archname";
6297 EOPL
6298         $cat >> getverlist <<'EOPL'
6299 # Can't have leading @ because metaconfig interprets it as a command!
6300 ;@inc_version_list=();
6301 # XXX Redo to do opendir/readdir? 
6302 if (-d $stem) {
6303     chdir($stem);
6304     ;@candidates = glob("5.*");
6305 }
6306 else {
6307     ;@candidates = ();
6308 }
6309
6310 # XXX ToDo:  These comparisons must be reworked when two-digit
6311 # subversions come along, so that 5.7.10 compares as greater than
6312 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6313 # widespread that we can use the built-in version vectors rather
6314 # than reinventing them here.  For 5.6.0, however, we must
6315 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6316 foreach $d (@candidates) {
6317     if ($d lt $version) {
6318         if ($d ge $api_versionstring) {
6319             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6320         }
6321         elsif ($d ge "5.005") {
6322             unshift(@inc_version_list, grep { -d } $d);
6323         }
6324     }
6325     else {
6326         # Skip newer version.  I.e. don't look in
6327         # 5.7.0 if we're installing 5.6.1.
6328     }
6329 }
6330
6331 if (@inc_version_list) {
6332     print join(' ', @inc_version_list);
6333 }
6334 else {
6335     # Blank space to preserve value for next Configure run.
6336     print " ";
6337 }
6338 EOPL
6339 chmod +x getverlist
6340 case "$inc_version_list" in
6341 '')     if test -x "$perl5"; then
6342                 dflt=`$perl5 getverlist`
6343         else
6344                 dflt='none'
6345         fi
6346         ;;
6347 $undef) dflt='none' ;;
6348 *)  dflt="$inc_version_list" ;;
6349 esac
6350 case "$dflt" in
6351 ''|' ') dflt=none ;;
6352 esac
6353 case "$dflt" in
6354 5.005) case "$bincompat5005" in
6355        $define|true|[yY]*) ;;
6356        *) dflt=none ;;
6357        esac
6358        ;;
6359 esac
6360 $cat <<'EOM'
6361
6362 In order to ease the process of upgrading, this version of perl 
6363 can be configured to use modules built and installed with earlier 
6364 versions of perl that were installed under $prefix.  Specify here
6365 the list of earlier versions that this version of perl should check.
6366 If Configure detected no earlier versions of perl installed under
6367 $prefix, then the list will be empty.  Answer 'none' to tell perl
6368 to not search earlier versions.
6369
6370 The default should almost always be sensible, so if you're not sure,
6371 just accept the default.
6372 EOM
6373
6374 rp='List of earlier versions to include in @INC?'
6375 . ./myread
6376 case "$ans" in
6377 [Nn]one|''|' ') inc_version_list=' ' ;;
6378 *) inc_version_list="$ans" ;;
6379 esac
6380 case "$inc_version_list" in
6381 ''|' ') 
6382         inc_version_list_init='0';;
6383 *)      inc_version_list_init=`echo $inc_version_list |
6384                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6385         ;;
6386 esac
6387 $rm -f getverlist
6388
6389 : determine whether to install perl also as /usr/bin/perl
6390
6391 echo " "
6392 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6393         $cat <<EOM
6394 Many scripts expect perl to be installed as /usr/bin/perl.
6395 I can install the perl you are about to compile also as /usr/bin/perl
6396 (in addition to $installbin/perl).
6397 EOM
6398         case "$installusrbinperl" in
6399         "$undef"|[nN]*) dflt='n';;
6400         *)              dflt='y';;
6401         esac
6402         rp="Do you want to install perl as /usr/bin/perl?"
6403         . ./myread
6404         case "$ans" in
6405         [yY]*)  val="$define";;
6406         *)      val="$undef" ;;
6407         esac
6408 else
6409         val="$undef"
6410 fi
6411 set installusrbinperl
6412 eval $setvar
6413
6414 : see if dld is available
6415 set dld.h i_dld
6416 eval $inhdr
6417
6418 : see if dlopen exists
6419 xxx_runnm="$runnm"
6420 runnm=false
6421 set dlopen d_dlopen
6422 eval $inlibc
6423 runnm="$xxx_runnm"
6424
6425 : determine which dynamic loading, if any, to compile in
6426 echo " "
6427 dldir="ext/DynaLoader"
6428 case "$usedl" in
6429 $define|y|true)
6430         dflt='y'
6431         usedl="$define"
6432         ;;
6433 $undef|n|false)
6434         dflt='n'
6435         usedl="$undef"
6436         ;;
6437 *) 
6438         dflt='n'
6439         case "$d_dlopen" in
6440             $define) dflt='y' ;;
6441         esac
6442         case "$i_dld" in
6443             $define) dflt='y' ;;
6444         esac
6445         : Does a dl_xxx.xs file exist for this operating system
6446         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6447         ;;
6448 esac
6449 rp="Do you wish to use dynamic loading?"
6450 . ./myread
6451 usedl="$ans"
6452 case "$ans" in
6453 y*) usedl="$define"
6454         case "$dlsrc" in
6455         '')
6456                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6457                         dflt="$dldir/dl_${osname}.xs"
6458                 elif $test "$d_dlopen" = "$define" ; then
6459                         dflt="$dldir/dl_dlopen.xs"
6460                 elif $test "$i_dld" = "$define" ; then
6461                         dflt="$dldir/dl_dld.xs"
6462                 else
6463                         dflt=''
6464                 fi
6465                 ;;
6466         *)      dflt="$dldir/$dlsrc"
6467                 ;;
6468         esac
6469     echo "The following dynamic loading files are available:"
6470         : Can not go over to $dldir because getfile has path hard-coded in.
6471         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6472         rp="Source file to use for dynamic loading"
6473         fn="fne"
6474         gfpth="$src"
6475         . ./getfile
6476         usedl="$define"
6477         : emulate basename
6478         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6479
6480         $cat << EOM
6481
6482 Some systems may require passing special flags to $cc -c to
6483 compile modules that will be used to create a shared library.
6484 To use no flags, say "none".
6485
6486 EOM
6487     case "$cccdlflags" in
6488     '') case "$gccversion" in
6489                 '') case "$osname" in
6490                         hpux)   dflt='+z' ;;
6491                         next)   dflt='none' ;;
6492                         irix*)  dflt='-KPIC' ;;
6493                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6494                         sunos)  dflt='-pic' ;;
6495                         *)      dflt='none' ;;
6496                     esac
6497                         ;;
6498                 *)  case "$osname" in
6499                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6500                         *)      dflt='-fpic' ;;
6501                     esac ;;
6502             esac ;;
6503         ' ') dflt='none' ;;
6504     *)  dflt="$cccdlflags" ;;
6505     esac
6506     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6507     . ./myread
6508     case "$ans" in
6509     none) cccdlflags=' ' ;;
6510     *) cccdlflags="$ans" ;;
6511     esac
6512
6513     cat << EOM
6514
6515 Some systems use ld to create libraries that can be dynamically loaded,
6516 while other systems (such as those using ELF) use $cc.
6517
6518 EOM
6519         case "$ld" in
6520         '')     $cat >try.c <<'EOM'
6521 /* Test for whether ELF binaries are produced */
6522 #include <fcntl.h>
6523 #include <stdlib.h>
6524 int main() {
6525         char b[4];
6526         int i = open("a.out",O_RDONLY);
6527         if(i == -1) 
6528                 exit(1); /* fail */
6529         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6530                 exit(0); /* succeed (yes, it's ELF) */
6531         else
6532                 exit(1); /* fail */
6533 }
6534 EOM
6535                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6536                         cat <<EOM
6537 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6538 EOM
6539                         dflt="$cc"
6540                 else
6541                         echo "I'll use ld to build dynamic libraries."
6542                         dflt='ld'
6543                 fi
6544                 rm -f try.c a.out
6545                 ;;
6546         *)      dflt="$ld"
6547                 ;;
6548         esac
6549
6550     rp="What command should be used to create dynamic libraries?"
6551     . ./myread
6552         ld="$ans"
6553
6554     cat << EOM
6555
6556 Some systems may require passing special flags to $ld to create a
6557 library that can be dynamically loaded.  If your ld flags include
6558 -L/other/path options to locate libraries outside your loader's normal
6559 search path, you may need to specify those -L options here as well.  To
6560 use no flags, say "none".
6561
6562 EOM
6563     case "$lddlflags" in
6564     '') case "$osname" in
6565                         beos) dflt='-nostart' ;;
6566                         hpux) dflt='-b';
6567                               case "$gccversion" in
6568                               '') dflt="$dflt +vnocompatwarnings" ;;
6569                               esac
6570                               ;;        
6571                         linux|irix*)    dflt='-shared' ;;
6572                         next)  dflt='none' ;;
6573                         solaris) dflt='-G' ;;
6574                         sunos) dflt='-assert nodefinitions' ;;
6575                         svr4*|esix*) dflt="-G $ldflags" ;;
6576                 *)     dflt='none' ;;
6577                         esac
6578                         ;;
6579     *) dflt="$lddlflags" ;;
6580     esac
6581
6582         : Try to guess additional flags to pick up local libraries.
6583         : Be careful not to append to a plain 'none'
6584         case "$dflt" in
6585         none) dflt='' ;;
6586         esac
6587         for thisflag in $ldflags; do
6588                 case "$thisflag" in
6589                 -L*|-R*)
6590                         case " $dflt " in
6591                         *" $thisflag "*) ;;
6592                         *) dflt="$dflt $thisflag" ;;
6593                         esac
6594                         ;;
6595                 esac
6596         done
6597
6598         case "$dflt" in
6599         ''|' ') dflt='none' ;;
6600         esac
6601
6602     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6603     . ./myread
6604     case "$ans" in
6605     none) lddlflags=' ' ;;
6606     *) lddlflags="$ans" ;;
6607     esac
6608
6609         cat <<EOM
6610
6611 Some systems may require passing special flags to $cc to indicate that
6612 the resulting executable will use dynamic linking.  To use no flags,
6613 say "none".
6614
6615 EOM
6616     case "$ccdlflags" in
6617     '') case "$osname" in
6618                 hpux)   dflt='-Wl,-E' ;;
6619                 linux)  dflt='-rdynamic' ;;
6620                 next)   dflt='none' ;;
6621                 sunos)  dflt='none' ;;
6622                 *)      dflt='none' ;;
6623             esac ;;
6624     ' ')  dflt='none' ;;
6625     *)  dflt="$ccdlflags" ;;
6626     esac
6627     rp="Any special flags to pass to $cc to use dynamic linking?"
6628     . ./myread
6629     case "$ans" in
6630     none) ccdlflags=' ' ;;
6631     *) ccdlflags="$ans" ;;
6632     esac
6633     ;;
6634 *)  usedl="$undef"
6635         ld='ld'
6636     dlsrc='dl_none.xs'
6637     lddlflags=''
6638     ccdlflags=''
6639     ;;
6640 esac
6641
6642 also=''
6643 case "$usedl" in
6644 $undef)
6645         # No dynamic loading being used, so don't bother even to prompt.
6646         useshrplib='false'
6647         ;;
6648 *)      case "$useshrplib" in
6649         '')     case "$osname" in
6650                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6651                         dflt=y
6652                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6653                         ;;
6654                 next*)
6655                         case "$osvers" in
6656                         4*)     dflt=y
6657                                 also='Building a shared libperl is needed for MAB support.'
6658                                 ;;
6659                         *)      dflt=n
6660                                 ;;
6661                         esac
6662                         ;;
6663                 *)      dflt=n
6664                         ;;
6665                 esac
6666                 ;;
6667         $define|true|[Yy]*)
6668                 dflt=y
6669                 ;;
6670         *)      dflt=n
6671                 ;;
6672         esac
6673         $cat << EOM
6674
6675 The perl executable is normally obtained by linking perlmain.c with
6676 libperl${_a}, any static extensions (usually just DynaLoader), and
6677 any other libraries needed on this system (such as -lm, etc.).  Since
6678 your system supports dynamic loading, it is probably possible to build
6679 a shared libperl.$so.  If you will have more than one executable linked
6680 to libperl.$so, this will significantly reduce the size of each
6681 executable, but it may have a noticeable affect on performance.  The
6682 default is probably sensible for your system.
6683 $also
6684
6685 EOM
6686         rp="Build a shared libperl.$so (y/n)"
6687         . ./myread
6688         case "$ans" in
6689         true|$define|[Yy]*)
6690                 useshrplib='true'  ;;
6691         *)      useshrplib='false' ;;
6692         esac
6693         ;;
6694 esac
6695
6696 case "$useshrplib" in
6697 true)
6698         case "$libperl" in
6699         '')
6700                 # Figure out a good name for libperl.so.  Since it gets stored in
6701                 # a version-specific architecture-dependent library, the version
6702                 # number isn't really that important, except for making cc/ld happy.
6703                 #
6704                 # A name such as libperl.so.3.1
6705                 majmin="libperl.$so.$patchlevel.$subversion"
6706                 # A name such as libperl.so.301
6707                 majonly=`echo $patchlevel $subversion |
6708                         $awk '{printf "%d%02d", $1, $2}'`
6709                 majonly=libperl.$so.$majonly
6710                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6711                 # rely on figuring it out from the naming of libc.
6712                 case "${osname}${osvers}" in
6713                 next4*)
6714                         dflt=libperl.5.$so
6715                         # XXX How handle the --version stuff for MAB?
6716                         ;;
6717                 linux*)  # ld won't link with a bare -lperl otherwise.
6718                         dflt=libperl.$so
6719                         ;;
6720                 cygwin*) # include version
6721                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6722                         ;;
6723                 *)      # Try to guess based on whether libc has major.minor.
6724                         case "$libc" in
6725                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6726                         *libc.$so.[0-9]*) dflt=$majonly ;;
6727                         *)      dflt=libperl.$so ;;
6728                         esac
6729                         ;;
6730                 esac
6731                 ;;
6732         *)      dflt=$libperl
6733                 ;;
6734         esac
6735         cat << EOM
6736
6737 I need to select a good name for the shared libperl.  If your system uses
6738 library names with major and minor numbers, then you might want something
6739 like $majmin.  Alternatively, if your system uses a single version
6740 number for shared libraries, then you might want to use $majonly.
6741 Or, your system might be quite happy with a simple libperl.$so.
6742
6743 Since the shared libperl will get installed into a version-specific
6744 architecture-dependent directory, the version number of the shared perl
6745 library probably isn't important, so the default should be o.k.
6746
6747 EOM
6748         rp='What name do you want to give to the shared libperl?'
6749         . ./myread
6750         libperl=$ans
6751         echo "Ok, I'll use $libperl"
6752         ;;
6753 *)
6754         libperl="libperl${_a}"
6755         ;;
6756 esac
6757
6758 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6759 case "$shrpdir" in
6760 '') ;;
6761 *)      $cat >&4 <<EOM
6762 WARNING:  Use of the shrpdir variable for the installation location of
6763 the shared $libperl is not supported.  It was never documented and
6764 will not work in this version.  Let me (perlbug@perl.org)
6765 know of any problems this may cause.
6766
6767 EOM
6768         case "$shrpdir" in
6769         "$archlibexp/CORE")
6770                 $cat >&4 <<EOM
6771 But your current setting of $shrpdir is
6772 the default anyway, so it's harmless.
6773 EOM
6774                 ;;
6775         *)
6776                 $cat >&4 <<EOM
6777 Further, your current attempted setting of $shrpdir
6778 conflicts with the value of $archlibexp/CORE
6779 that installperl will use.
6780 EOM
6781                 ;;
6782         esac
6783         ;;
6784 esac
6785
6786 # How will the perl executable find the installed shared $libperl?
6787 # Add $xxx to ccdlflags.
6788 # If we can't figure out a command-line option, use $shrpenv to
6789 # set env LD_RUN_PATH.  The main perl makefile uses this.
6790 shrpdir=$archlibexp/CORE
6791 xxx=''
6792 tmp_shrpenv=''
6793 if "$useshrplib"; then
6794     case "$osname" in 
6795         aix)
6796                 # We'll set it in Makefile.SH...
6797                 ;;
6798         solaris|netbsd)
6799                 xxx="-R $shrpdir"
6800                 ;;
6801         freebsd)
6802                 xxx="-Wl,-R$shrpdir"
6803                 ;;
6804         linux|irix*|dec_osf)
6805                 xxx="-Wl,-rpath,$shrpdir"
6806                 ;;
6807         next)
6808                 # next doesn't like the default...
6809                 ;;
6810         beos)
6811                 # beos doesn't like the default, either.
6812                 ;;
6813         hpux*)
6814                 # hpux doesn't like the default, either.
6815                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6816                 ;;
6817         *)
6818                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6819                 ;;
6820         esac
6821         case "$xxx" in
6822         '') ;;
6823         *)      
6824                 # Only add $xxx if it isn't already in ccdlflags.
6825                 case " $ccdlflags " in
6826                 *" $xxx "*)     ;;
6827                 *)      ccdlflags="$ccdlflags $xxx"
6828                         cat <<EOM >&4
6829
6830 Adding $xxx to the flags
6831 passed to $ld so that the perl executable will find the 
6832 installed shared $libperl.
6833
6834 EOM
6835                         ;;
6836                 esac
6837                 ;;
6838         esac
6839 fi
6840 # Fix ccdlflags in AIX for building external extensions.
6841 # (For building Perl itself bare -bE:perl.exp is needed,
6842 #  Makefile.SH takes care of this.)
6843 case "$osname" in
6844 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6845 esac
6846 # Respect a hint or command-line value.
6847 case "$shrpenv" in
6848 '') shrpenv="$tmp_shrpenv" ;;
6849 esac
6850 case "$ldlibpthname" in
6851 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6852 none)   ldlibpthname='' ;;
6853 esac
6854
6855 : determine where manual pages go
6856 set man1dir man1dir none
6857 eval $prefixit
6858 $cat <<EOM
6859
6860 $spackage has manual pages available in source form.
6861 EOM
6862 case "$nroff" in
6863 nroff)
6864         echo "However, you don't have nroff, so they're probably useless to you."
6865         case "$man1dir" in
6866         '') man1dir="none";;
6867         esac;;
6868 esac
6869 echo "If you don't want the manual sources installed, answer 'none'."
6870 case "$man1dir" in
6871 ' ') dflt=none
6872         ;;
6873 '')
6874         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6875         lookpath="$lookpath $prefixexp/man/p_man/man1"
6876         lookpath="$lookpath $prefixexp/man/u_man/man1"
6877         lookpath="$lookpath $prefixexp/man/man.1"
6878         case "$sysman" in
6879         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6880         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6881         esac
6882         set dflt
6883         eval $prefixup
6884         ;;
6885 *)  dflt="$man1dir"
6886         ;;
6887 esac
6888 echo " "
6889 fn=dn+~
6890 rp="Where do the main $spackage manual pages (source) go?"
6891 . ./getfile
6892 if $test "X$man1direxp" != "X$ansexp"; then
6893         installman1dir=''
6894 fi
6895 man1dir="$ans"
6896 man1direxp="$ansexp"
6897 case "$man1dir" in
6898 '')     man1dir=' '
6899         installman1dir='';;
6900 esac
6901
6902 : Change installation prefix, if necessary.
6903 if $test X"$prefix" != X"$installprefix"; then
6904         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6905 else
6906         installman1dir="$man1direxp"
6907 fi
6908
6909 : What suffix to use on installed man pages
6910
6911 case "$man1dir" in
6912 ' ')
6913         man1ext='0'
6914         ;;
6915 *)
6916         rp="What suffix should be used for the main $spackage man pages?"
6917         case "$man1ext" in
6918         '')     case "$man1dir" in
6919                 *1)  dflt=1 ;;
6920                 *1p) dflt=1p ;;
6921                 *1pm) dflt=1pm ;;
6922                 *l) dflt=l;;
6923                 *n) dflt=n;;
6924                 *o) dflt=o;;
6925                 *p) dflt=p;;
6926                 *C) dflt=C;;
6927                 *L) dflt=L;;
6928                 *L1) dflt=L1;;
6929                 *) dflt=1;;
6930                 esac
6931                 ;;
6932         *)      dflt="$man1ext";;
6933         esac
6934         . ./myread
6935         man1ext="$ans"
6936         ;;
6937 esac
6938
6939 : see if we can have long filenames
6940 echo " "
6941 first=123456789abcdef
6942 $rm -f $first
6943 if (echo hi >$first) 2>/dev/null; then
6944         if $test -f 123456789abcde; then
6945                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6946                 val="$undef"
6947         else
6948                 echo 'You can have filenames longer than 14 characters.'>&4
6949                 val="$define"
6950         fi
6951 else
6952         $cat <<'EOM'
6953 You can't have filenames longer than 14 chars.
6954 You can't even think about them!
6955 EOM
6956         val="$undef"
6957 fi 
6958 set d_flexfnam
6959 eval $setvar
6960 $rm -rf 123456789abcde*
6961
6962 : determine where library module manual pages go
6963 set man3dir man3dir none
6964 eval $prefixit
6965 $cat <<EOM
6966
6967 $spackage has manual pages for many of the library modules.
6968 EOM
6969
6970 case "$nroff" in
6971 nroff)
6972         $cat <<'EOM'
6973 However, you don't have nroff, so they're probably useless to you.
6974 EOM
6975         case "$man3dir" in
6976         '') man3dir="none";;
6977         esac;;
6978 esac
6979
6980 case "$d_flexfnam" in
6981 undef)
6982         $cat <<'EOM'
6983 However, your system can't handle the long file names like File::Basename.3. 
6984 EOM
6985         case "$man3dir" in
6986         '') man3dir="none";;
6987         esac;;
6988 esac
6989
6990 echo "If you don't want the manual sources installed, answer 'none'."
6991 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6992 case "$man3dir" in
6993 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6994         if $test -d "$privlib/man/man3"; then
6995                 cat <<EOM >&4
6996
6997 WARNING:  Previous versions of perl installed man3 pages into
6998 $privlib/man/man3.  This version will suggest a 
6999 new default of $dflt.  
7000 EOM
7001                 tdflt=$dflt
7002                 dflt='n'
7003                 rp='Do you wish to preserve the old behavior?(y/n)'
7004                 . ./myread
7005                 case "$ans" in
7006                 y*) dflt="$privlib/man/man3" ;;
7007                 *)  dflt=$tdflt ;;
7008                 esac
7009     fi
7010         ;;
7011 *)      dflt="$man3dir" ;;
7012 esac
7013 case "$dflt" in
7014 ' ') dflt=none ;;
7015 esac
7016 echo " "
7017 fn=dn+~
7018 rp="Where do the $package library man pages (source) go?"
7019 . ./getfile
7020 man3dir="$ans"
7021 man3direxp="$ansexp"
7022 case "$man3dir" in
7023 '')     man3dir=' '
7024         installman3dir='';;
7025 esac
7026
7027 : Change installation prefix, if necessary.
7028 if $test X"$prefix" != X"$installprefix"; then
7029         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
7030 else
7031         installman3dir="$man3direxp"
7032 fi
7033
7034 : What suffix to use on installed man pages
7035 case "$man3dir" in
7036 ' ')
7037         man3ext='0'
7038         ;;
7039 *)
7040         rp="What suffix should be used for the $package library man pages?"
7041         case "$man3ext" in
7042         '')     case "$man3dir" in
7043                 *3)  dflt=3 ;;
7044                 *3p) dflt=3p ;;
7045                 *3pm) dflt=3pm ;;
7046                 *l) dflt=l;;
7047                 *n) dflt=n;;
7048                 *o) dflt=o;;
7049                 *p) dflt=p;;
7050                 *C) dflt=C;;
7051                 *L) dflt=L;;
7052                 *L3) dflt=L3;;
7053                 *) dflt=3;;
7054                 esac
7055                 ;;
7056         *)      dflt="$man3ext";;
7057         esac
7058         . ./myread
7059         man3ext="$ans"
7060         ;;
7061 esac
7062
7063 : see if we have to deal with yellow pages, now NIS.
7064 if $test -d /usr/etc/yp || $test -d /etc/yp; then
7065         if $test -f /usr/etc/nibindd; then
7066                 echo " "
7067                 echo "I'm fairly confident you're on a NeXT."
7068                 echo " "
7069                 rp='Do you get the hosts file via NetInfo?'
7070                 dflt=y
7071                 case "$hostcat" in
7072                 nidump*) ;;
7073                 '') ;;
7074                 *) dflt=n;;
7075                 esac
7076                 . ./myread
7077                 case "$ans" in
7078                 y*) hostcat='nidump hosts .';;
7079                 *)      case "$hostcat" in
7080                         nidump*) hostcat='';;
7081                         esac
7082                         ;;
7083                 esac
7084         fi
7085         case "$hostcat" in
7086         nidump*) ;;
7087         *)
7088                 case "$hostcat" in
7089                 *ypcat*) dflt=y;;
7090                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7091                                 dflt=y
7092                         else
7093                                 dflt=n
7094                         fi;;
7095                 *) dflt=n;;
7096                 esac
7097                 echo " "
7098                 rp='Are you getting the hosts file via yellow pages?'
7099                 . ./myread
7100                 case "$ans" in
7101                 y*) hostcat='ypcat hosts';;
7102                 *) hostcat='cat /etc/hosts';;
7103                 esac
7104                 ;;
7105         esac
7106 fi
7107 case "$hostcat" in
7108 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7109 esac
7110 case "$groupcat" in
7111 '') test -f /etc/group && groupcat='cat /etc/group';;
7112 esac
7113 case "$passcat" in
7114 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7115 esac
7116
7117 : now get the host name
7118 echo " "
7119 echo "Figuring out host name..." >&4
7120 case "$myhostname" in
7121 '') cont=true
7122         echo 'Maybe "hostname" will work...'
7123         if tans=`sh -c hostname 2>&1` ; then
7124                 myhostname=$tans
7125                 phostname=hostname
7126                 cont=''
7127         fi
7128         ;;
7129 *) cont='';;
7130 esac
7131 if $test "$cont"; then
7132         if ./xenix; then
7133                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7134                 if tans=`cat /etc/systemid 2>&1` ; then
7135                         myhostname=$tans
7136                         phostname='cat /etc/systemid'
7137                         echo "Whadyaknow.  Xenix always was a bit strange..."
7138                         cont=''
7139                 fi
7140         elif $test -r /etc/systemid; then
7141                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7142         fi
7143 fi
7144 if $test "$cont"; then
7145         echo 'No, maybe "uuname -l" will work...'
7146         if tans=`sh -c 'uuname -l' 2>&1` ; then
7147                 myhostname=$tans
7148                 phostname='uuname -l'
7149         else
7150                 echo 'Strange.  Maybe "uname -n" will work...'
7151                 if tans=`sh -c 'uname -n' 2>&1` ; then
7152                         myhostname=$tans
7153                         phostname='uname -n'
7154                 else
7155                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7156                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7157                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7158                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7159                         else
7160                                 case "$myhostname" in
7161                                 '') echo "Does this machine have an identity crisis or something?"
7162                                         phostname='';;
7163                                 *)
7164                                         echo "Well, you said $myhostname before..."
7165                                         phostname='echo $myhostname';;
7166                                 esac
7167                         fi
7168                 fi
7169         fi
7170 fi
7171 : you do not want to know about this
7172 set $myhostname
7173 myhostname=$1
7174
7175 : verify guess
7176 if $test "$myhostname" ; then
7177         dflt=y
7178         rp='Your host name appears to be "'$myhostname'".'" Right?"
7179         . ./myread
7180         case "$ans" in
7181         y*) ;;
7182         *) myhostname='';;
7183         esac
7184 fi
7185
7186 : bad guess or no guess
7187 while $test "X$myhostname" = X ; do
7188         dflt=''
7189         rp="Please type the (one word) name of your host:"
7190         . ./myread
7191         myhostname="$ans"
7192 done
7193
7194 : translate upper to lower if necessary
7195 case "$myhostname" in
7196 *[A-Z]*)
7197         echo "(Normalizing case in your host name)"
7198         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7199         ;;
7200 esac
7201
7202 case "$myhostname" in
7203 *.*)
7204         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7205         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7206         echo "(Trimming domain name from host name--host name is now $myhostname)"
7207         ;;
7208 *) case "$mydomain" in
7209         '')
7210                 {
7211                         test "X$hostcat" = "Xypcat hosts" &&
7212                         ypmatch "$myhostname" hosts 2>/dev/null |\
7213                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7214                         $test -s hosts
7215                 } || {
7216                         test "X$hostcat" != "X" &&
7217                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7218                                         /[       ]$myhostname[  . ]/p" > hosts
7219                 }
7220                 tmp_re="[       . ]"
7221                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7222                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7223                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7224                         hosts | $sort | $uniq | \
7225                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7226                 case `$echo X$dflt` in
7227                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7228                         dflt=.
7229                         ;;
7230                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7231                         ;;
7232                 esac
7233                 case "$dflt" in
7234                 .)
7235                         tans=`./loc resolv.conf X /etc /usr/etc`
7236                         if $test -f "$tans"; then
7237                                 echo "(Attempting domain name extraction from $tans)"
7238                                 dflt=.`$sed -n -e 's/   / /g' \
7239                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7240                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7241                                 case "$dflt" in
7242                                 .) dflt=.`$sed -n -e 's/        / /g' \
7243                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7244                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7245                                         ;;
7246                                 esac
7247                         fi
7248                         ;;
7249                 esac
7250                 case "$dflt" in
7251                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7252                         dflt=.`sh -c domainname 2>/dev/null`
7253                         case "$dflt" in
7254                         '') dflt='.';;
7255                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7256                         esac
7257                         ;;
7258                 esac
7259                 case "$dflt" in
7260                 .) echo "(Lost all hope -- silly guess then)"
7261                         dflt='.uucp'
7262                         ;;
7263                 esac
7264                 $rm -f hosts
7265                 ;;
7266         *) dflt="$mydomain";;
7267         esac;;
7268 esac
7269 echo " "
7270 rp="What is your domain name?"
7271 . ./myread
7272 tans="$ans"
7273 case "$ans" in
7274 '') ;;
7275 .*) ;;
7276 *) tans=".$tans";;
7277 esac
7278 mydomain="$tans"
7279
7280 : translate upper to lower if necessary
7281 case "$mydomain" in
7282 *[A-Z]*)
7283         echo "(Normalizing case in your domain name)"
7284         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7285         ;;
7286 esac
7287
7288 : a little sanity check here
7289 case "$phostname" in
7290 '') ;;
7291 *)
7292         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7293         $myhostname$mydomain|$myhostname) ;;
7294         *)
7295                 case "$phostname" in
7296                 sed*)
7297                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7298                         ;;
7299                 *)
7300                         echo "(That doesn't agree with your $phostname command, by the way.)"
7301                         ;;
7302                 esac
7303         ;;
7304         esac
7305         ;;
7306 esac
7307
7308 $cat <<EOM
7309
7310 I need to get your e-mail address in Internet format if possible, i.e.
7311 something like user@host.domain. Please answer accurately since I have
7312 no easy means to double check it. The default value provided below
7313 is most probably close to reality but may not be valid from outside
7314 your organization...
7315
7316 EOM
7317 cont=x
7318 while test "$cont"; do
7319         case "$cf_email" in
7320         '') dflt="$cf_by@$myhostname$mydomain";;
7321         *) dflt="$cf_email";;
7322         esac
7323         rp='What is your e-mail address?'
7324         . ./myread
7325         cf_email="$ans"
7326         case "$cf_email" in
7327         *@*.*) cont='' ;;
7328         *)
7329                 rp='Address does not look like an Internet one.  Use it anyway?'
7330                 case "$fastread" in
7331                 yes) dflt=y ;;
7332                 *) dflt=n ;;
7333                 esac
7334                 . ./myread
7335                 case "$ans" in
7336                 y*) cont='' ;;
7337                 *) echo " " ;;
7338                 esac
7339                 ;;
7340         esac
7341 done
7342
7343 $cat <<EOM
7344
7345 If you or somebody else will be maintaining perl at your site, please
7346 fill in the correct e-mail address here so that they may be contacted
7347 if necessary. Currently, the "perlbug" program included with perl
7348 will send mail to this address in addition to perlbug@perl.org. You may
7349 enter "none" for no administrator.
7350
7351 EOM
7352 case "$perladmin" in
7353 '') dflt="$cf_email";;
7354 *) dflt="$perladmin";;
7355 esac
7356 rp='Perl administrator e-mail address'
7357 . ./myread
7358 perladmin="$ans"
7359
7360 : figure out how to guarantee perl startup
7361 case "$startperl" in
7362 '')
7363         case "$sharpbang" in
7364         *!)
7365                 $cat <<EOH
7366
7367 I can use the #! construct to start perl on your system. This will
7368 make startup of perl scripts faster, but may cause problems if you
7369 want to share those scripts and perl is not in a standard place
7370 ($binexp/perl) on all your platforms. The alternative is to force
7371 a shell by starting the script with a single ':' character.
7372
7373 EOH
7374                 dflt="$binexp/perl"
7375                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7376                 . ./myread
7377                 case "$ans" in
7378                 none)   startperl=": # use perl";;
7379                 *)      startperl="#!$ans"
7380                         if $test 30 -lt `echo "$ans" | wc -c`; then
7381                                 $cat >&4 <<EOM
7382
7383 WARNING:  Some systems limit the #! command to 32 characters.
7384 If you experience difficulty running Perl scripts with #!, try
7385 installing Perl in a directory with a shorter pathname.
7386
7387 EOM
7388                         fi ;;
7389                 esac
7390                 ;;
7391         *) startperl=": # use perl"
7392                 ;;
7393         esac
7394         ;;
7395 esac
7396 echo "I'll use $startperl to start perl scripts."
7397
7398 : figure best path for perl in scripts
7399 case "$perlpath" in
7400 '')
7401         perlpath="$binexp/perl"
7402         case "$startperl" in
7403         *!*) ;;
7404         *)
7405                 $cat <<EOH
7406
7407 I will use the "eval 'exec'" idiom to start Perl on your system.
7408 I can use the full path of your Perl binary for this purpose, but
7409 doing so may cause problems if you want to share those scripts and
7410 Perl is not always in a standard place ($binexp/perl).
7411
7412 EOH
7413                 dflt="$binexp/perl"
7414                 rp="What path shall I use in \"eval 'exec'\"?"
7415                 . ./myread
7416                 perlpath="$ans"
7417                 ;;
7418         esac
7419         ;;
7420 esac
7421 case "$startperl" in
7422 *!*)    ;;
7423 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7424 esac
7425
7426 : determine where public executable scripts go
7427 set scriptdir scriptdir
7428 eval $prefixit
7429 case "$scriptdir" in
7430 '')
7431         dflt="$bin"
7432         : guess some guesses
7433         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7434         $test -d /usr/share/bin     && dflt=/usr/share/bin
7435         $test -d /usr/local/script  && dflt=/usr/local/script
7436         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7437         $test -d $prefixexp/script  && dflt=$prefixexp/script
7438         set dflt
7439         eval $prefixup
7440         ;;
7441 *)  dflt="$scriptdir"
7442         ;;
7443 esac
7444 $cat <<EOM
7445  
7446 Some installations have a separate directory just for executable scripts so
7447 that they can mount it across multiple architectures but keep the scripts in
7448 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7449 Or you might just lump your scripts in with all your other executables.
7450  
7451 EOM
7452 fn=d~
7453 rp='Where do you keep publicly executable scripts?'
7454 . ./getfile
7455 if $test "X$ansexp" != "X$scriptdirexp"; then
7456         installscript=''
7457 fi
7458 scriptdir="$ans"
7459 scriptdirexp="$ansexp"
7460 : Change installation prefix, if necessary.
7461 if $test X"$prefix" != X"$installprefix"; then
7462         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7463 else
7464         installscript="$scriptdirexp"
7465 fi
7466
7467 : determine where add-on public executables go
7468 case "$sitebin" in
7469 '')     dflt=$siteprefix/bin ;;
7470 *)      dflt=$sitebin ;;
7471 esac
7472 fn=d~
7473 rp='Pathname where the add-on public executables should be installed?'
7474 . ./getfile
7475 sitebin="$ans"
7476 sitebinexp="$ansexp"
7477 : Change installation prefix, if necessary.
7478 if $test X"$prefix" != X"$installprefix"; then
7479         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7480 else
7481         installsitebin="$sitebinexp"
7482 fi
7483
7484 case "$useperlio" in
7485 $define|true|[yY]*)     dflt='y';;
7486 *) dflt='n';;
7487 esac
7488 cat <<EOM
7489
7490 Previous version of $package used the standard IO mechanisms as defined
7491 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7492 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7493 the default.  This abstraction layer can use AT&T's sfio (if you already
7494 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7495 problems with some extension modules.  Using PerlIO with stdio is safe,
7496 but it is slower than plain stdio and therefore is not the default.
7497
7498 If this doesn't make any sense to you, just accept the default '$dflt'.
7499 EOM
7500 rp='Use the experimental PerlIO abstraction layer?'
7501 . ./myread
7502 case "$ans" in
7503 y|Y) 
7504         val="$define"
7505         ;;     
7506 *)      
7507         echo "Ok, doing things the stdio way"
7508         val="$undef"
7509         ;;
7510 esac
7511 set useperlio
7512 eval $setvar 
7513
7514 case "$vendorprefix" in
7515 '')     d_vendorbin="$undef"
7516         vendorbin=''
7517         vendorbinexp=''
7518         ;;
7519 *)      d_vendorbin="$define"
7520         : determine where vendor-supplied executables go.
7521         case "$vendorbin" in
7522         '') dflt=$vendorprefix/bin ;;
7523         *)      dflt="$vendorbin" ;;
7524         esac
7525         fn=d~+
7526         rp='Pathname for the vendor-supplied executables directory?'
7527         . ./getfile
7528         vendorbin="$ans"
7529         vendorbinexp="$ansexp"
7530         ;;
7531 esac
7532 : Change installation prefix, if necessary.
7533 if $test X"$prefix" != X"$installprefix"; then
7534         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7535 else
7536         installvendorbin="$vendorbinexp"
7537 fi
7538
7539 : see if qgcvt exists
7540 set qgcvt d_qgcvt
7541 eval $inlibc
7542
7543 : check for length of double
7544 echo " "
7545 case "$doublesize" in
7546 '')
7547         echo "Checking to see how big your double precision numbers are..." >&4
7548         $cat >try.c <<'EOCP'
7549 #include <stdio.h>
7550 int main()
7551 {
7552     printf("%d\n", (int)sizeof(double));
7553     exit(0);
7554 }
7555 EOCP
7556         set try
7557         if eval $compile_ok; then
7558                 doublesize=`./try`
7559                 echo "Your double is $doublesize bytes long."
7560         else
7561                 dflt='8'
7562                 echo "(I can't seem to compile the test program.  Guessing...)"
7563                 rp="What is the size of a double precision number (in bytes)?"
7564                 . ./myread
7565                 doublesize="$ans"
7566         fi
7567         ;;
7568 esac
7569 $rm -f try.c try
7570
7571 : check for long doubles
7572 echo " "
7573 echo "Checking to see if you have long double..." >&4
7574 echo 'int main() { long double x = 7.0; }' > try.c
7575 set try
7576 if eval $compile; then
7577         val="$define"
7578         echo "You have long double."
7579 else
7580         val="$undef"
7581         echo "You do not have long double."
7582 fi
7583 $rm try.*
7584 set d_longdbl
7585 eval $setvar
7586
7587 : check for length of long double
7588 case "${d_longdbl}${longdblsize}" in
7589 $define)
7590         echo " "
7591         echo "Checking to see how big your long doubles are..." >&4
7592         $cat >try.c <<'EOCP'
7593 #include <stdio.h>
7594 int main()
7595 {
7596         printf("%d\n", sizeof(long double));
7597 }
7598 EOCP
7599         set try
7600         set try
7601         if eval $compile; then
7602                 longdblsize=`./try$exe_ext`
7603                 echo "Your long doubles are $longdblsize bytes long."
7604         else
7605                 dflt='8'
7606                 echo " "
7607                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7608                 rp="What is the size of a long double (in bytes)?"
7609                 . ./myread
7610                 longdblsize="$ans"
7611         fi
7612         if $test "X$doublesize" = "X$longdblsize"; then
7613                 echo "(That isn't any different from an ordinary double.)"
7614         fi      
7615         ;;
7616 esac
7617 $rm -f try.* try
7618
7619 echo " "
7620
7621 if $test X"$d_longdbl" = X"$define"; then
7622
7623 echo "Checking how to print long doubles..." >&4
7624
7625 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7626         $cat >try.c <<'EOCP'
7627 #include <sys/types.h>
7628 #include <stdio.h>
7629 int main() {
7630   double d = 123.456;
7631   printf("%.3f\n", d);
7632 }
7633 EOCP
7634         set try
7635         if eval $compile; then
7636                 yyy=`./try$exe_ext`
7637                 case "$yyy" in
7638                 123.456)
7639                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7640                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7641                         echo "We will use %f."
7642                         ;;
7643                 esac
7644         fi
7645 fi
7646
7647 if $test X"$sPRIfldbl" = X; then
7648         $cat >try.c <<'EOCP'
7649 #include <sys/types.h>
7650 #include <stdio.h>
7651 int main() {
7652   long double d = 123.456;
7653   printf("%.3llf\n", d);
7654 }
7655 EOCP
7656         set try
7657         if eval $compile; then
7658                 yyy=`./try$exe_ext`
7659                 case "$yyy" in
7660                 123.456)
7661                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7662                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7663                         echo "We will use %llf."
7664                         ;;
7665                 esac
7666         fi
7667 fi
7668
7669 if $test X"$sPRIfldbl" = X; then
7670         $cat >try.c <<'EOCP'
7671 #include <sys/types.h>
7672 #include <stdio.h>
7673 int main() {
7674   long double d = 123.456;
7675   printf("%.3Lf\n", d);
7676 }
7677 EOCP
7678         set try
7679         if eval $compile; then
7680                 yyy=`./try$exe_ext`
7681                 case "$yyy" in
7682                 123.456)
7683                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7684                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7685                         echo "We will use %Lf."
7686                         ;;
7687                 esac
7688         fi
7689 fi
7690
7691 if $test X"$sPRIfldbl" = X; then
7692         $cat >try.c <<'EOCP'
7693 #include <sys/types.h>
7694 #include <stdio.h>
7695 int main() {
7696   long double d = 123.456;
7697   printf("%.3lf\n", d);
7698 }
7699 EOCP
7700         set try
7701         if eval $compile; then
7702                 yyy=`./try$exe_ext`
7703                 case "$yyy" in
7704                 123.456)
7705                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7706                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7707                         echo "We will use %lf."
7708                         ;;
7709                 esac
7710         fi
7711 fi
7712
7713 if $test X"$sPRIfldbl" = X; then
7714         echo "Cannot figure out how to print long doubles." >&4
7715 else
7716         sSCNfldbl=$sPRIfldbl    # expect consistency
7717 fi
7718
7719 $rm -f try try.*
7720
7721 fi # d_longdbl
7722
7723 case "$sPRIfldbl" in
7724 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7725         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7726         d_SCNfldbl="$undef";
7727         ;;
7728 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7729         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7730         d_SCNfldbl="$define";
7731         ;;
7732 esac
7733
7734 : Check how to convert floats to strings.
7735 echo " "
7736 echo "Checking for an efficient way to convert floats to strings."
7737 echo " " > try.c
7738 case "$uselongdouble" in
7739 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7740 esac
7741 case "$d_longdbl" in
7742 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7743 esac
7744 case "$d_PRIgldbl" in
7745 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7746 esac
7747 $cat >>try.c <<EOP
7748 #ifdef TRY_gconvert
7749 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7750 char *myname = "gconvert";
7751 #endif
7752 #ifdef TRY_gcvt
7753 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7754 char *myname = "gcvt";
7755 #endif
7756 #ifdef TRY_qgcvt
7757 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7758 char *myname = "qgcvt";
7759 #define DOUBLETYPE long double
7760 #endif
7761 #ifdef TRY_sprintf
7762 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7763 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7764 #else
7765 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7766 #endif
7767 char *myname = "sprintf";
7768 #endif
7769
7770 #ifndef DOUBLETYPE
7771 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7772 #define DOUBLETYPE long double
7773 #else
7774 #define DOUBLETYPE double
7775 #endif
7776 #endif
7777
7778 #include <stdio.h>
7779
7780 #define I_STDLIB $i_stdlib
7781 #ifdef I_STDLIB
7782 #include <stdlib.h>
7783 #endif
7784
7785 int
7786 checkit(expect, got)
7787 char *expect;
7788 char *got;
7789 {
7790     if (strcmp(expect, got)) {
7791                 printf("%s oddity:  Expected %s, got %s\n",
7792                         myname, expect, got);
7793                 exit(1);
7794         }
7795 }
7796
7797 int main()
7798
7799         char buf[64]; 
7800         buf[63] = '\0';
7801
7802         /* This must be 1st test on (which?) platform */
7803         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7804         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7805         checkit("0.1", buf);
7806
7807         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7808         checkit("1", buf);
7809
7810         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7811         checkit("1.1", buf);
7812
7813         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7814         checkit("1.01", buf);
7815
7816         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7817         checkit("1.001", buf);
7818
7819         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7820         checkit("1.0001", buf);
7821
7822         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7823         checkit("1.00001", buf);
7824
7825         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7826         checkit("1.000001", buf);
7827
7828         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7829         checkit("0", buf);
7830
7831         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7832         checkit("-1", buf);
7833
7834         /* Some Linux gcvt's give 1.e+5 here. */
7835         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7836         checkit("100000", buf);
7837         
7838         /* Some Linux gcvt's give -1.e+5 here. */
7839         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7840         checkit("-100000", buf);
7841
7842         exit(0);
7843 }
7844 EOP
7845 case "$d_Gconvert" in
7846 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7847 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7848 *) xxx_list='sprintf gconvert gcvt' ;;
7849 esac
7850
7851 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7852 "$define$define$define")
7853     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7854     xxx_list="sprintf $xxx_list"
7855     case "$d_qgcvt" in
7856     "$define") xxx_list="qgcvt $xxx_list" ;;
7857     esac
7858     ;;
7859 esac
7860
7861 for xxx_convert in $xxx_list; do
7862         echo "Trying $xxx_convert..."
7863         $rm -f try try$_o
7864         set try -DTRY_$xxx_convert
7865         if eval $compile; then
7866                 echo "$xxx_convert() found." >&4
7867                 if ./try; then
7868                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7869                         break;
7870                 else
7871                         echo "...But $xxx_convert didn't work as I expected."
7872                 fi
7873         else
7874                 echo "$xxx_convert NOT found." >&4
7875         fi
7876 done
7877         
7878 case "$xxx_convert" in
7879 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7880 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7881 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7882 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7883    "$define$define$define")
7884       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7885    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7886    esac
7887    ;;  
7888 esac
7889
7890 : Initialize h_fcntl
7891 h_fcntl=false
7892
7893 : Initialize h_sysfile
7894 h_sysfile=false
7895
7896 : access call always available on UNIX
7897 set access d_access
7898 eval $inlibc
7899
7900 : locate the flags for 'access()'
7901 case "$d_access" in
7902 "$define")
7903         echo " "
7904         $cat >access.c <<'EOCP'
7905 #include <sys/types.h>
7906 #ifdef I_FCNTL
7907 #include <fcntl.h>
7908 #endif
7909 #ifdef I_SYS_FILE
7910 #include <sys/file.h>
7911 #endif
7912 #ifdef I_UNISTD
7913 #include <unistd.h>
7914 #endif
7915 int main() {
7916         exit(R_OK);
7917 }
7918 EOCP
7919         : check sys/file.h first, no particular reason here
7920         if $test `./findhdr sys/file.h` && \
7921                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7922                 h_sysfile=true;
7923                 echo "<sys/file.h> defines the *_OK access constants." >&4
7924         elif $test `./findhdr fcntl.h` && \
7925                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7926                 h_fcntl=true;
7927                 echo "<fcntl.h> defines the *_OK access constants." >&4
7928         elif $test `./findhdr unistd.h` && \
7929                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7930                 echo "<unistd.h> defines the *_OK access constants." >&4
7931         else
7932                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7933         fi
7934         ;;
7935 esac
7936 $rm -f access*
7937
7938 : see if accessx exists
7939 set accessx d_accessx
7940 eval $inlibc
7941
7942 : see if alarm exists
7943 set alarm d_alarm
7944 eval $inlibc
7945
7946 : see if atolf exists
7947 set atolf d_atolf
7948 eval $inlibc
7949
7950 : see if atoll exists
7951 set atoll d_atoll
7952 eval $inlibc
7953
7954 : Look for GNU-cc style attribute checking
7955 echo " "
7956 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7957 $cat >attrib.c <<'EOCP'
7958 #include <stdio.h>
7959 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7960 EOCP
7961 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7962         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7963                 echo "Your C compiler doesn't fully support __attribute__."
7964                 val="$undef"
7965         else
7966                 echo "Your C compiler supports __attribute__."
7967                 val="$define"
7968         fi
7969 else
7970         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7971         val="$undef"
7972 fi
7973 set d_attribut
7974 eval $setvar
7975 $rm -f attrib*
7976
7977 : see if bcmp exists
7978 set bcmp d_bcmp
7979 eval $inlibc
7980
7981 : see if bcopy exists
7982 set bcopy d_bcopy
7983 eval $inlibc
7984
7985 : see if this is a unistd.h system
7986 set unistd.h i_unistd
7987 eval $inhdr
7988
7989 : see if getpgrp exists
7990 set getpgrp d_getpgrp
7991 eval $inlibc
7992
7993 case "$d_getpgrp" in
7994 "$define")
7995         echo " "
7996         echo "Checking to see which flavor of getpgrp is in use..."
7997         $cat >set.c <<EOP
7998 #$i_unistd I_UNISTD
7999 #include <sys/types.h>
8000 #ifdef I_UNISTD
8001 #  include <unistd.h>
8002 #endif
8003 int main()
8004 {
8005         if (getuid() == 0) {
8006                 printf("(I see you are running Configure as super-user...)\n");
8007                 setuid(1);
8008         }
8009 #ifdef TRY_BSD_PGRP
8010         if (getpgrp(1) == 0)
8011                 exit(0);
8012 #else
8013         if (getpgrp() > 0)
8014                 exit(0);
8015 #endif
8016         exit(1);
8017 }
8018 EOP
8019         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8020                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
8021                 val="$define"
8022         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8023                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
8024                 val="$undef"
8025         else
8026                 echo "I can't seem to compile and run the test program."
8027                 if ./usg; then
8028                         xxx="a USG one, i.e. you use getpgrp()."
8029                 else
8030                         # SVR4 systems can appear rather BSD-ish.
8031                         case "$i_unistd" in
8032                         $undef)
8033                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
8034                                 val="$define"
8035                                 ;;
8036                         $define)
8037                                 xxx="probably a USG one, i.e. you use getpgrp()."
8038                                 val="$undef"
8039                                 ;;
8040                         esac
8041                 fi
8042                 echo "Assuming your getpgrp is $xxx" >&4
8043         fi
8044         ;;
8045 *) val="$undef";;
8046 esac
8047 set d_bsdgetpgrp
8048 eval $setvar
8049 $rm -f set set.c
8050
8051 : see if setpgrp exists
8052 set setpgrp d_setpgrp
8053 eval $inlibc
8054
8055 case "$d_setpgrp" in
8056 "$define")
8057         echo " "
8058         echo "Checking to see which flavor of setpgrp is in use..."
8059         $cat >set.c <<EOP
8060 #$i_unistd I_UNISTD
8061 #include <sys/types.h>
8062 #ifdef I_UNISTD
8063 #  include <unistd.h>
8064 #endif
8065 int main()
8066 {
8067         if (getuid() == 0) {
8068                 printf("(I see you are running Configure as super-user...)\n");
8069                 setuid(1);
8070         }
8071 #ifdef TRY_BSD_PGRP
8072         if (-1 == setpgrp(1, 1))
8073                 exit(0);
8074 #else
8075         if (setpgrp() != -1)
8076                 exit(0);
8077 #endif
8078         exit(1);
8079 }
8080 EOP
8081         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8082                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
8083                 val="$define"
8084         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
8085                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
8086                 val="$undef"
8087         else
8088                 echo "(I can't seem to compile and run the test program.)"
8089                 if ./usg; then
8090                         xxx="a USG one, i.e. you use setpgrp()."
8091                 else
8092                         # SVR4 systems can appear rather BSD-ish.
8093                         case "$i_unistd" in
8094                         $undef)
8095                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
8096                                 val="$define"
8097                                 ;;
8098                         $define)
8099                                 xxx="probably a USG one, i.e. you use setpgrp()."
8100                                 val="$undef"
8101                                 ;;
8102                         esac
8103                 fi
8104                 echo "Assuming your setpgrp is $xxx" >&4
8105         fi
8106         ;;
8107 *) val="$undef";;
8108 esac
8109 set d_bsdsetpgrp
8110 eval $setvar
8111 $rm -f set set.c
8112 : see if bzero exists
8113 set bzero d_bzero
8114 eval $inlibc
8115
8116 : see if signal is declared as pointer to function returning int or void
8117 echo " "
8118 xxx=`./findhdr signal.h`
8119 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
8120 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
8121         echo "You have int (*signal())() instead of void." >&4
8122         val="$undef"
8123 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
8124         echo "You have void (*signal())()." >&4
8125         val="$define"
8126 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
8127         echo "You have int (*signal())() instead of void." >&4
8128         val="$undef"
8129 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
8130         echo "You have void (*signal())()." >&4
8131         val="$define"
8132 else
8133         case "$d_voidsig" in
8134         '')
8135         echo "I can't determine whether signal handler returns void or int..." >&4
8136                 dflt=void
8137                 rp="What type does your signal handler return?"
8138                 . ./myread
8139                 case "$ans" in
8140                 v*) val="$define";;
8141                 *) val="$undef";;
8142                 esac;;
8143         "$define")
8144                 echo "As you already told me, signal handler returns void." >&4
8145                 val="$define"
8146                 ;;
8147         *)      echo "As you already told me, signal handler returns int." >&4
8148                 val="$undef"
8149                 ;;
8150         esac
8151 fi
8152 set d_voidsig
8153 eval $setvar
8154 case "$d_voidsig" in
8155 "$define") signal_t="void";;
8156 *) signal_t="int";;
8157 esac
8158 $rm -f $$.tmp
8159
8160 : check for ability to cast large floats to 32-bit ints.
8161 echo " "
8162 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8163 if $test "$intsize" -ge 4; then
8164         xxx=int
8165 else
8166         xxx=long
8167 fi
8168 $cat >try.c <<EOCP
8169 #include <stdio.h>
8170 #include <sys/types.h>
8171 #include <signal.h>
8172 $signal_t blech(s) int s; { exit(3); }
8173 int main()
8174 {
8175         $xxx i32;
8176         double f, g;
8177         int result = 0;
8178         char str[16];
8179         signal(SIGFPE, blech);
8180
8181         /* Don't let compiler optimize the test away.  Store the number 
8182            in a writable string for gcc to pass to sscanf under HP/UX.
8183         */
8184         sprintf(str, "2147483647");
8185         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8186         g = 10 * f;
8187         i32  = ($xxx) g;
8188
8189         /* x86 processors will probably give 0x8000 0000, which is a
8190        sign change.  We don't want that.  We want to mimic SPARC
8191            behavior here, which is to preserve the sign and give
8192            back 0x7fff ffff.
8193         */
8194         if (i32 != ($xxx) f)
8195                 result |= 1;
8196         exit(result);
8197 }
8198 EOCP
8199 set try
8200 if eval $compile_ok; then
8201         ./try
8202         yyy=$?
8203 else
8204         echo "(I can't seem to compile the test program--assuming it can't)"
8205         yyy=1
8206 fi
8207 case "$yyy" in
8208 0)      val="$define"
8209         echo "Yup, it can."
8210         ;;
8211 *)      val="$undef"
8212         echo "Nope, it can't."
8213         ;;
8214 esac
8215 set d_casti32
8216 eval $setvar
8217 $rm -f try try.*
8218
8219 : check for ability to cast negative floats to unsigned
8220 echo " "
8221 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8222 $cat >try.c <<EOCP
8223 #include <stdio.h>
8224 #include <sys/types.h>
8225 #include <signal.h>
8226 $signal_t blech(s) int s; { exit(7); }
8227 $signal_t blech_in_list(s) int s; { exit(4); }
8228 unsigned long dummy_long(p) unsigned long p; { return p; }
8229 unsigned int dummy_int(p) unsigned int p; { return p; }
8230 unsigned short dummy_short(p) unsigned short p; { return p; }
8231 int main()
8232 {
8233         double f;
8234         unsigned long along;
8235         unsigned int aint;
8236         unsigned short ashort;
8237         int result = 0;
8238         char str[16];
8239         
8240         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8241            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8242            optimized the whole file away
8243         */
8244         /* Store the number in a writable string for gcc to pass to 
8245            sscanf under HP/UX.
8246         */
8247         sprintf(str, "-123");
8248         sscanf(str, "%lf", &f);  /* f = -123.; */
8249
8250         signal(SIGFPE, blech);
8251         along = (unsigned long)f;
8252         aint = (unsigned int)f;
8253         ashort = (unsigned short)f;
8254         if (along != (unsigned long)-123)
8255                 result |= 1;
8256         if (aint != (unsigned int)-123)
8257                 result |= 1;
8258         if (ashort != (unsigned short)-123)
8259                 result |= 1;
8260         sprintf(str, "1073741824.");
8261         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8262         f = f + f;
8263         along = 0;
8264         along = (unsigned long)f;
8265         if (along != 0x80000000)
8266                 result |= 2;
8267         f -= 1.;
8268         along = 0;
8269         along = (unsigned long)f;
8270         if (along != 0x7fffffff)
8271                 result |= 1;
8272         f += 2.;
8273         along = 0;
8274         along = (unsigned long)f;
8275         if (along != 0x80000001)
8276                 result |= 2;
8277         if (result)
8278                 exit(result);
8279         signal(SIGFPE, blech_in_list);
8280         sprintf(str, "123.");
8281         sscanf(str, "%lf", &f);  /* f = 123.; */
8282         along = dummy_long((unsigned long)f);
8283         aint = dummy_int((unsigned int)f);
8284         ashort = dummy_short((unsigned short)f);
8285         if (along != (unsigned long)123)
8286                 result |= 4;
8287         if (aint != (unsigned int)123)
8288                 result |= 4;
8289         if (ashort != (unsigned short)123)
8290                 result |= 4;
8291         exit(result);
8292
8293 }
8294 EOCP
8295 set try
8296 if eval $compile_ok; then
8297         ./try
8298         castflags=$?
8299 else
8300         echo "(I can't seem to compile the test program--assuming it can't)"
8301         castflags=7
8302 fi
8303 case "$castflags" in
8304 0)      val="$define"
8305         echo "Yup, it can."
8306         ;;
8307 *)      val="$undef"
8308         echo "Nope, it can't."
8309         ;;
8310 esac
8311 set d_castneg
8312 eval $setvar
8313 $rm -f try.*
8314
8315 : see if vprintf exists
8316 echo " "
8317 if set vprintf val -f d_vprintf; eval $csym; $val; then
8318         echo 'vprintf() found.' >&4
8319         val="$define"
8320         $cat >vprintf.c <<'EOF'
8321 #include <varargs.h>
8322
8323 int main() { xxx("foo"); }
8324
8325 xxx(va_alist)
8326 va_dcl
8327 {
8328         va_list args;
8329         char buf[10];
8330
8331         va_start(args);
8332         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8333 }
8334 EOF
8335         set vprintf
8336         if eval $compile && ./vprintf; then
8337                 echo "Your vsprintf() returns (int)." >&4
8338                 val2="$undef"
8339         else
8340                 echo "Your vsprintf() returns (char*)." >&4
8341                 val2="$define"
8342         fi
8343 else
8344         echo 'vprintf() NOT found.' >&4
8345                 val="$undef"
8346                 val2="$undef"
8347 fi
8348 set d_vprintf
8349 eval $setvar
8350 val=$val2
8351 set d_charvspr
8352 eval $setvar
8353
8354 : see if chown exists
8355 set chown d_chown
8356 eval $inlibc
8357
8358 : see if chroot exists
8359 set chroot d_chroot
8360 eval $inlibc
8361
8362 : see if chsize exists
8363 set chsize d_chsize
8364 eval $inlibc
8365
8366 : check for const keyword
8367 echo " "
8368 echo 'Checking to see if your C compiler knows about "const"...' >&4
8369 $cat >const.c <<'EOCP'
8370 typedef struct spug { int drokk; } spug;
8371 int main()
8372 {
8373         const char *foo;
8374         const spug y;
8375 }
8376 EOCP
8377 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8378         val="$define"
8379         echo "Yup, it does."
8380 else
8381         val="$undef"
8382         echo "Nope, it doesn't."
8383 fi
8384 set d_const
8385 eval $setvar
8386
8387 : see if crypt exists
8388 echo " "
8389 if set crypt val -f d_crypt; eval $csym; $val; then
8390         echo 'crypt() found.' >&4
8391         val="$define"
8392         cryptlib=''
8393 else
8394         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8395         if $test -z "$cryptlib"; then
8396                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8397         else
8398                 cryptlib=-lcrypt
8399         fi
8400         if $test -z "$cryptlib"; then
8401                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8402         else
8403                 cryptlib=-lcrypt
8404         fi
8405         if $test -z "$cryptlib"; then
8406                 cryptlib=`./loc libcrypt$_a "" $libpth`
8407         else
8408                 cryptlib=-lcrypt
8409         fi
8410         if $test -z "$cryptlib"; then
8411                 echo 'crypt() NOT found.' >&4
8412                 val="$undef"
8413         else
8414                 val="$define"
8415         fi
8416 fi
8417 set d_crypt
8418 eval $setvar
8419
8420 : get csh whereabouts
8421 case "$csh" in
8422 'csh') val="$undef" ;;
8423 *) val="$define" ;;
8424 esac
8425 set d_csh
8426 eval $setvar
8427 : Respect a hint or command line value for full_csh.
8428 case "$full_csh" in
8429 '') full_csh=$csh ;;
8430 esac
8431
8432 : see if cuserid exists
8433 set cuserid d_cuserid
8434 eval $inlibc
8435
8436 : see if this is a limits.h system
8437 set limits.h i_limits
8438 eval $inhdr
8439
8440 : see if this is a float.h system
8441 set float.h i_float
8442 eval $inhdr
8443
8444 : See if number of significant digits in a double precision number is known
8445 echo " "
8446 $cat >dbl_dig.c <<EOM
8447 #$i_limits I_LIMITS
8448 #$i_float I_FLOAT
8449 #ifdef I_LIMITS
8450 #include <limits.h>
8451 #endif
8452 #ifdef I_FLOAT
8453 #include <float.h>
8454 #endif
8455 #ifdef DBL_DIG
8456 printf("Contains DBL_DIG");
8457 #endif
8458 EOM
8459 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8460 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8461         echo "DBL_DIG found." >&4
8462         val="$define"
8463 else
8464         echo "DBL_DIG NOT found." >&4
8465         val="$undef"
8466 fi
8467 $rm -f dbl_dig.?
8468 set d_dbl_dig
8469 eval $setvar
8470
8471 : see if difftime exists
8472 set difftime d_difftime
8473 eval $inlibc
8474
8475 : see if this is a dirent system
8476 echo " "
8477 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8478         val="$define"
8479         echo "<dirent.h> found." >&4
8480 else
8481         val="$undef"
8482         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8483                 echo "<sys/dir.h> found." >&4
8484                 echo " "
8485         else
8486                 xinc=`./findhdr sys/ndir.h`
8487         fi
8488         echo "<dirent.h> NOT found." >&4
8489 fi
8490 set i_dirent
8491 eval $setvar
8492
8493 : Look for type of directory structure.
8494 echo " "
8495 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8496
8497 case "$direntrytype" in
8498 ''|' ')
8499         case "$i_dirent" in
8500         $define) guess1='struct dirent' ;;
8501         *) guess1='struct direct'  ;;
8502         esac
8503         ;;
8504 *)      guess1="$direntrytype"
8505         ;;
8506 esac
8507
8508 case "$guess1" in
8509 'struct dirent') guess2='struct direct' ;;
8510 *) guess2='struct dirent' ;;
8511 esac
8512                 
8513 if $contains "$guess1" try.c >/dev/null 2>&1; then
8514         direntrytype="$guess1"
8515         echo "Your directory entries are $direntrytype." >&4
8516 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8517         direntrytype="$guess2"
8518         echo "Your directory entries seem to be $direntrytype." >&4
8519 else
8520         echo "I don't recognize your system's directory entries." >&4
8521         rp="What type is used for directory entries on this system?"
8522         dflt="$guess1"
8523         . ./myread
8524         direntrytype="$ans"
8525 fi
8526 $rm -f try.c
8527
8528
8529 : see if the directory entry stores field length
8530 echo " "
8531 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8532 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8533         echo "Good, your directory entry keeps length information in d_namlen." >&4
8534         val="$define"
8535 else
8536         echo "Your directory entry does not know about the d_namlen field." >&4
8537         val="$undef"
8538 fi
8539 set d_dirnamlen
8540 eval $setvar
8541 $rm -f try.c
8542
8543 : see if dlerror exists
8544 xxx_runnm="$runnm"
8545 runnm=false
8546 set dlerror d_dlerror
8547 eval $inlibc
8548 runnm="$xxx_runnm"
8549
8550 : see if dlfcn is available
8551 set dlfcn.h i_dlfcn
8552 eval $inhdr
8553
8554 case "$usedl" in
8555 $define|y|true)
8556         $cat << EOM
8557
8558 On a few systems, the dynamically loaded modules that perl generates and uses
8559 will need a different extension than shared libs. The default will probably
8560 be appropriate.
8561
8562 EOM
8563         case "$dlext" in
8564         '')     dflt="$so" ;;
8565         *)      dflt="$dlext" ;;
8566         esac
8567         rp='What is the extension of dynamically loaded modules'
8568         . ./myread
8569         dlext="$ans"
8570         ;;
8571 *)
8572         dlext="none"
8573         ;;
8574 esac
8575
8576 : Check if dlsym need a leading underscore
8577 echo " "
8578 val="$undef"
8579
8580 case "$dlsrc" in
8581 dl_dlopen.xs)
8582         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8583         $cat >dyna.c <<'EOM'
8584 fred () { }
8585 EOM
8586
8587 $cat >fred.c<<EOM
8588
8589 #include <stdio.h>
8590 #$i_dlfcn I_DLFCN
8591 #ifdef I_DLFCN
8592 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8593 #else
8594 #include <sys/types.h>
8595 #include <nlist.h>
8596 #include <link.h>
8597 #endif
8598
8599 extern int fred() ;
8600
8601 int main()
8602 {
8603     void * handle ;
8604     void * symbol ;
8605 #ifndef RTLD_LAZY
8606     int mode = 1 ;
8607 #else
8608     int mode = RTLD_LAZY ;
8609 #endif
8610     handle = dlopen("./dyna.$dlext", mode) ;
8611     if (handle == NULL) {
8612         printf ("1\n") ;
8613         fflush (stdout) ;
8614         exit(0);
8615     }
8616     symbol = dlsym(handle, "fred") ;
8617     if (symbol == NULL) {
8618         /* try putting a leading underscore */
8619         symbol = dlsym(handle, "_fred") ;
8620         if (symbol == NULL) {
8621             printf ("2\n") ;
8622             fflush (stdout) ;
8623             exit(0);
8624         }
8625         printf ("3\n") ;
8626     }
8627     else
8628         printf ("4\n") ;
8629     fflush (stdout) ;
8630     exit(0);
8631 }
8632 EOM
8633         : Call the object file tmp-dyna.o in case dlext=o.
8634         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8635                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8636                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8637                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8638                 xxx=`./fred`
8639                 case $xxx in
8640                 1)      echo "Test program failed using dlopen." >&4
8641                         echo "Perhaps you should not use dynamic loading." >&4;;
8642                 2)      echo "Test program failed using dlsym." >&4
8643                         echo "Perhaps you should not use dynamic loading." >&4;;
8644                 3)      echo "dlsym needs a leading underscore" >&4
8645                         val="$define" ;;
8646                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8647                 esac
8648         else
8649                 echo "I can't compile and run the test program." >&4
8650                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8651         fi
8652         ;;
8653 esac
8654                 
8655 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8656
8657 set d_dlsymun
8658 eval $setvar
8659
8660 hasproto='varname=$1; func=$2; shift; shift;
8661 while $test $# -ge 2; do
8662         case "$1" in
8663         $define) echo "#include <$2>";;
8664         esac ;
8665     shift 2;
8666 done > try.c;
8667 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8668 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8669         echo "$func() prototype found.";
8670         val="$define";
8671 else
8672         echo "$func() prototype NOT found.";
8673         val="$undef";
8674 fi;
8675 set $varname;
8676 eval $setvar;
8677 $rm -f try.c tryout.c'
8678
8679 : see if prototype for drand48 is available
8680 echo " "
8681 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8682 eval $hasproto
8683
8684 : see if dup2 exists
8685 set dup2 d_dup2
8686 eval $inlibc
8687
8688 : see if eaccess exists
8689 set eaccess d_eaccess
8690 eval $inlibc
8691
8692 : see if endgrent exists
8693 set endgrent d_endgrent
8694 eval $inlibc
8695
8696 : see if endhostent exists
8697 set endhostent d_endhent
8698 eval $inlibc
8699
8700 : see if endnetent exists
8701 set endnetent d_endnent
8702 eval $inlibc
8703
8704 : see if endprotoent exists
8705 set endprotoent d_endpent
8706 eval $inlibc
8707
8708 : see if endpwent exists
8709 set endpwent d_endpwent
8710 eval $inlibc
8711
8712 : see if endservent exists
8713 set endservent d_endsent
8714 eval $inlibc
8715
8716 : Locate the flags for 'open()'
8717 echo " "
8718 $cat >open3.c <<'EOCP'
8719 #include <sys/types.h>
8720 #ifdef I_FCNTL
8721 #include <fcntl.h>
8722 #endif
8723 #ifdef I_SYS_FILE
8724 #include <sys/file.h>
8725 #endif
8726 int main() {
8727         if(O_RDONLY);
8728 #ifdef O_TRUNC
8729         exit(0);
8730 #else
8731         exit(1);
8732 #endif
8733 }
8734 EOCP
8735 : check sys/file.h first to get FREAD on Sun
8736 if $test `./findhdr sys/file.h` && \
8737                 set open3 -DI_SYS_FILE && eval $compile; then
8738         h_sysfile=true;
8739         echo "<sys/file.h> defines the O_* constants..." >&4
8740         if ./open3; then
8741                 echo "and you have the 3 argument form of open()." >&4
8742                 val="$define"
8743         else
8744                 echo "but not the 3 argument form of open().  Oh, well." >&4
8745                 val="$undef"
8746         fi
8747 elif $test `./findhdr fcntl.h` && \
8748                 set open3 -DI_FCNTL && eval $compile; then
8749         h_fcntl=true;
8750         echo "<fcntl.h> defines the O_* constants..." >&4
8751         if ./open3; then
8752                 echo "and you have the 3 argument form of open()." >&4
8753                 val="$define"
8754         else
8755                 echo "but not the 3 argument form of open().  Oh, well." >&4
8756                 val="$undef"
8757         fi
8758 else
8759         val="$undef"
8760         echo "I can't find the O_* constant definitions!  You got problems." >&4
8761 fi
8762 set d_open3
8763 eval $setvar
8764 $rm -f open3*
8765
8766 : see which of string.h or strings.h is needed
8767 echo " "
8768 strings=`./findhdr string.h`
8769 if $test "$strings" && $test -r "$strings"; then
8770         echo "Using <string.h> instead of <strings.h>." >&4
8771         val="$define"
8772 else
8773         val="$undef"
8774         strings=`./findhdr strings.h`
8775         if $test "$strings" && $test -r "$strings"; then
8776                 echo "Using <strings.h> instead of <string.h>." >&4
8777         else
8778                 echo "No string header found -- You'll surely have problems." >&4
8779         fi
8780 fi
8781 set i_string
8782 eval $setvar
8783 case "$i_string" in
8784 "$undef") strings=`./findhdr strings.h`;;
8785 *)        strings=`./findhdr string.h`;;
8786 esac
8787
8788 : check for non-blocking I/O stuff
8789 case "$h_sysfile" in
8790 true) echo "#include <sys/file.h>" > head.c;;
8791 *)
8792         case "$h_fcntl" in
8793         true) echo "#include <fcntl.h>" > head.c;;
8794         *) echo "#include <sys/fcntl.h>" > head.c;;
8795         esac
8796         ;;
8797 esac
8798 echo " "
8799 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8800 case "$o_nonblock" in
8801 '')
8802         $cat head.c > try.c
8803         $cat >>try.c <<'EOCP'
8804 #include <stdio.h>
8805 int main() {
8806 #ifdef O_NONBLOCK
8807         printf("O_NONBLOCK\n");
8808         exit(0);
8809 #endif
8810 #ifdef O_NDELAY
8811         printf("O_NDELAY\n");
8812         exit(0);
8813 #endif
8814 #ifdef FNDELAY
8815         printf("FNDELAY\n");
8816         exit(0);
8817 #endif
8818         exit(0);
8819 }
8820 EOCP
8821         set try
8822         if eval $compile_ok; then
8823                 o_nonblock=`./try`
8824                 case "$o_nonblock" in
8825                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8826                 *) echo "Seems like we can use $o_nonblock.";;
8827                 esac
8828         else
8829                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8830         fi
8831         ;;
8832 *) echo "Using $hint value $o_nonblock.";;
8833 esac
8834 $rm -f try try.* .out core
8835
8836 echo " "
8837 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8838 case "$eagain" in
8839 '')
8840         $cat head.c > try.c
8841         $cat >>try.c <<EOCP
8842 #include <errno.h>
8843 #include <sys/types.h>
8844 #include <signal.h>
8845 #include <stdio.h> 
8846 #define MY_O_NONBLOCK $o_nonblock
8847 #ifndef errno  /* XXX need better Configure test */
8848 extern int errno;
8849 #endif
8850 #$i_unistd I_UNISTD
8851 #ifdef I_UNISTD
8852 #include <unistd.h>
8853 #endif
8854 #$i_string I_STRING
8855 #ifdef I_STRING
8856 #include <string.h>
8857 #else
8858 #include <strings.h>
8859 #endif
8860 $signal_t blech(x) int x; { exit(3); }
8861 EOCP
8862         $cat >> try.c <<'EOCP'
8863 int main()
8864 {
8865         int pd[2];
8866         int pu[2];
8867         char buf[1];
8868         char string[100];
8869
8870         pipe(pd);       /* Down: child -> parent */
8871         pipe(pu);       /* Up: parent -> child */
8872         if (0 != fork()) {
8873                 int ret;
8874                 close(pd[1]);   /* Parent reads from pd[0] */
8875                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8876                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8877                         exit(1);
8878                 signal(SIGALRM, blech);
8879                 alarm(5);
8880                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8881                         exit(2);
8882                 sprintf(string, "%d\n", ret);
8883                 write(2, string, strlen(string));
8884                 alarm(0);
8885 #ifdef EAGAIN
8886                 if (errno == EAGAIN) {
8887                         printf("EAGAIN\n");
8888                         goto ok;
8889                 }
8890 #endif
8891 #ifdef EWOULDBLOCK
8892                 if (errno == EWOULDBLOCK)
8893                         printf("EWOULDBLOCK\n");
8894 #endif
8895         ok:
8896                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8897                 sleep(2);                               /* Give it time to close our pipe */
8898                 alarm(5);
8899                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8900                 alarm(0);
8901                 sprintf(string, "%d\n", ret);
8902                 write(3, string, strlen(string));
8903                 exit(0);
8904         }
8905
8906         close(pd[0]);                   /* We write to pd[1] */
8907         close(pu[1]);                   /* We read from pu[0] */
8908         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8909         close(pd[1]);                   /* Pipe pd is now fully closed! */
8910         exit(0);                                /* Bye bye, thank you for playing! */
8911 }
8912 EOCP
8913         set try
8914         if eval $compile_ok; then
8915                 echo "$startsh" >mtry
8916                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8917                 chmod +x mtry
8918                 ./mtry >/dev/null 2>&1
8919                 case $? in
8920                 0) eagain=`$cat try.out`;;
8921                 1) echo "Could not perform non-blocking setting!";;
8922                 2) echo "I did a successful read() for something that was not there!";;
8923                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8924                 *) echo "Something terribly wrong happened during testing.";;
8925                 esac
8926                 rd_nodata=`$cat try.ret`
8927                 echo "A read() system call with no data present returns $rd_nodata."
8928                 case "$rd_nodata" in
8929                 0|-1) ;;
8930                 *)
8931                         echo "(That's peculiar, fixing that to be -1.)"
8932                         rd_nodata=-1
8933                         ;;
8934                 esac
8935                 case "$eagain" in
8936                 '')
8937                         echo "Forcing errno EAGAIN on read() with no data available."
8938                         eagain=EAGAIN
8939                         ;;
8940                 *)
8941                         echo "Your read() sets errno to $eagain when no data is available."
8942                         ;;
8943                 esac
8944                 status=`$cat try.err`
8945                 case "$status" in
8946                 0) echo "And it correctly returns 0 to signal EOF.";;
8947                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8948                 *) echo "However, your read() returns '$status' on EOF??";;
8949                 esac
8950                 val="$define"
8951                 if test "$status" = "$rd_nodata"; then
8952                         echo "WARNING: you can't distinguish between EOF and no data!"
8953                         val="$undef"
8954                 fi
8955         else
8956                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8957                 eagain=EAGAIN
8958         fi
8959         set d_eofnblk
8960         eval $setvar
8961         ;;
8962 *)
8963         echo "Using $hint value $eagain."
8964         echo "Your read() returns $rd_nodata when no data is present."
8965         case "$d_eofnblk" in
8966         "$define") echo "And you can see EOF because read() returns 0.";;
8967         "$undef") echo "But you can't see EOF status from read() returned value.";;
8968         *)
8969                 echo "(Assuming you can't see EOF status from read anyway.)"
8970                 d_eofnblk=$undef
8971                 ;;
8972         esac
8973         ;;
8974 esac
8975 $rm -f try try.* .out core head.c mtry
8976
8977 : see if fchmod exists
8978 set fchmod d_fchmod
8979 eval $inlibc
8980
8981 : see if fchown exists
8982 set fchown d_fchown
8983 eval $inlibc
8984
8985 : see if this is an fcntl system
8986 set fcntl d_fcntl
8987 eval $inlibc
8988
8989 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8990 while $test $# -ge 2; do
8991         case "$1" in
8992         $define) echo "#include <$2>";;
8993         esac ;
8994     shift 2;
8995 done > try.c;
8996 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8997 set try;
8998 if eval $compile; then
8999         val="$define";
9000 else
9001         val="$undef";
9002 fi;
9003 set $varname;
9004 eval $setvar;
9005 $rm -f try.c try.o'
9006
9007 socketlib=''
9008 sockethdr=''
9009 : see whether socket exists
9010 echo " "
9011 $echo $n "Hmm... $c" >&4
9012 if set socket val -f d_socket; eval $csym; $val; then
9013         echo "Looks like you have Berkeley networking support." >&4
9014         d_socket="$define"
9015         if set setsockopt val -f; eval $csym; $val; then
9016                 d_oldsock="$undef"
9017         else
9018                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
9019                 d_oldsock="$define"
9020         fi
9021 else
9022         if $contains socklib libc.list >/dev/null 2>&1; then
9023                 echo "Looks like you have Berkeley networking support." >&4
9024                 d_socket="$define"
9025                 : we will have to assume that it supports the 4.2 BSD interface
9026                 d_oldsock="$undef"
9027         else
9028                 echo "You don't have Berkeley networking in libc$_a..." >&4
9029                 if test "X$d_socket" = "X$define"; then
9030                    echo "...but you seem to believe that you have sockets." >&4
9031                 else
9032                         for net in net socket
9033                         do
9034                                 if test -f /usr/lib/lib$net$_a; then
9035                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
9036                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
9037                                         if $contains socket libc.list >/dev/null 2>&1; then
9038                                                 d_socket="$define"
9039                                                 socketlib="-l$net"
9040                                                 case "$net" in
9041                                                 net)
9042                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
9043                                                         sockethdr="-I/usr/netinclude"
9044                                                         ;;
9045                                                 esac
9046                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
9047                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
9048                                                         d_oldsock="$undef"
9049                                                 else
9050                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
9051                                                         d_oldsock="$define"
9052                                                 fi
9053                                                 break
9054                                         fi
9055                                 fi
9056                         done
9057                         if test "X$d_socket" != "X$define"; then
9058                            echo "or anywhere else I see." >&4
9059                            d_socket="$undef"
9060                            d_oldsock="$undef"
9061                         fi
9062                 fi
9063         fi
9064 fi
9065
9066 : see if socketpair exists
9067 set socketpair d_sockpair
9068 eval $inlibc
9069
9070
9071 echo " "
9072 echo "Checking the availability of certain socket constants..." >& 4
9073 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
9074         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
9075         $cat >try.c <<EOF
9076 #include <sys/types.h>
9077 #include <sys/socket.h>
9078 int main() {
9079     int i = $ENUM;
9080 }
9081 EOF
9082         val="$undef"
9083         set try; if eval $compile; then
9084                 val="$define"
9085         fi
9086         set d_${enum}; eval $setvar
9087         $rm -f try.c try
9088 done
9089
9090 : see if sys/select.h has to be included
9091 set sys/select.h i_sysselct
9092 eval $inhdr
9093
9094 : see if we should include time.h, sys/time.h, or both
9095 echo " "
9096 if test "X$timeincl" = X; then
9097         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
9098         $echo $n "I'm now running the test program...$c"
9099         $cat >try.c <<'EOCP'
9100 #include <sys/types.h>
9101 #ifdef I_TIME
9102 #include <time.h>
9103 #endif
9104 #ifdef I_SYSTIME
9105 #ifdef SYSTIMEKERNEL
9106 #define KERNEL
9107 #endif
9108 #include <sys/time.h>
9109 #endif
9110 #ifdef I_SYSSELECT
9111 #include <sys/select.h>
9112 #endif
9113 int main()
9114 {
9115         struct tm foo;
9116 #ifdef S_TIMEVAL
9117         struct timeval bar;
9118 #endif
9119 #ifdef S_TIMEZONE
9120         struct timezone tzp;
9121 #endif
9122         if (foo.tm_sec == foo.tm_sec)
9123                 exit(0);
9124 #ifdef S_TIMEVAL
9125         if (bar.tv_sec == bar.tv_sec)
9126                 exit(0);
9127 #endif
9128         exit(1);
9129 }
9130 EOCP
9131         flags=''
9132         for s_timezone in '-DS_TIMEZONE' ''; do
9133         sysselect=''
9134         for s_timeval in '-DS_TIMEVAL' ''; do
9135         for i_systimek in '' '-DSYSTIMEKERNEL'; do
9136         for i_time in '' '-DI_TIME'; do
9137         for i_systime in '-DI_SYSTIME' ''; do
9138                 case "$flags" in
9139                 '') $echo $n ".$c"
9140                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9141                         if eval $compile; then
9142                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9143                                 shift
9144                                 flags="$*"
9145                                 echo " "
9146                                 $echo $n "Succeeded with $flags$c"
9147                         fi
9148                         ;;
9149                 esac
9150         done
9151         done
9152         done
9153         done
9154         done
9155         timeincl=''
9156         echo " "
9157         case "$flags" in
9158         *SYSTIMEKERNEL*) i_systimek="$define"
9159                 timeincl=`./findhdr sys/time.h`
9160                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9161         *) i_systimek="$undef";;
9162         esac
9163         case "$flags" in
9164         *I_TIME*) i_time="$define"
9165                 timeincl=`./findhdr time.h`" $timeincl"
9166                 echo "We'll include <time.h>." >&4;;
9167         *) i_time="$undef";;
9168         esac
9169         case "$flags" in
9170         *I_SYSTIME*) i_systime="$define"
9171                 timeincl=`./findhdr sys/time.h`" $timeincl"
9172                 echo "We'll include <sys/time.h>." >&4;;
9173         *) i_systime="$undef";;
9174         esac
9175         $rm -f try.c try
9176 fi
9177
9178 : check for fd_set items
9179 $cat <<EOM
9180
9181 Checking to see how well your C compiler handles fd_set and friends ...
9182 EOM
9183 $cat >fd_set.c <<EOCP
9184 #$i_systime I_SYS_TIME
9185 #$i_sysselct I_SYS_SELECT
9186 #$d_socket HAS_SOCKET
9187 #include <sys/types.h>
9188 #ifdef HAS_SOCKET
9189 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9190 #endif
9191 #ifdef I_SYS_TIME
9192 #include <sys/time.h>
9193 #endif
9194 #ifdef I_SYS_SELECT
9195 #include <sys/select.h>
9196 #endif
9197 int main() {
9198         fd_set fds;
9199
9200 #ifdef TRYBITS
9201         if(fds.fds_bits);
9202 #endif
9203
9204 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9205         exit(0);
9206 #else
9207         exit(1);
9208 #endif
9209 }
9210 EOCP
9211 set fd_set -DTRYBITS
9212 if eval $compile; then
9213         d_fds_bits="$define"
9214         d_fd_set="$define"
9215         echo "Well, your system knows about the normal fd_set typedef..." >&4
9216         if ./fd_set; then
9217                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9218                 d_fd_macros="$define"
9219         else
9220                 $cat >&4 <<'EOM'
9221 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9222 EOM
9223                 d_fd_macros="$undef"
9224         fi
9225 else
9226         $cat <<'EOM'
9227 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9228 EOM
9229         set fd_set
9230         if eval $compile; then
9231                 d_fds_bits="$undef"
9232                 d_fd_set="$define"
9233                 echo "Well, your system has some sort of fd_set available..." >&4
9234                 if ./fd_set; then
9235                         echo "and you have the normal fd_set macros." >&4
9236                         d_fd_macros="$define"
9237                 else
9238                         $cat <<'EOM'
9239 but not the normal fd_set macros!  Gross!  More work for me...
9240 EOM
9241                         d_fd_macros="$undef"
9242                 fi
9243         else
9244         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9245                 d_fd_set="$undef"
9246                 d_fds_bits="$undef"
9247                 d_fd_macros="$undef"
9248         fi
9249 fi
9250 $rm -f fd_set*
9251
9252 : see if fgetpos exists
9253 set fgetpos d_fgetpos
9254 eval $inlibc
9255
9256 : see if flock exists
9257 set flock d_flock
9258 eval $inlibc
9259
9260 : see if fork exists
9261 set fork d_fork
9262 eval $inlibc
9263
9264 : see if pathconf exists
9265 set pathconf d_pathconf
9266 eval $inlibc
9267
9268 : see if fpathconf exists
9269 set fpathconf d_fpathconf
9270 eval $inlibc
9271
9272
9273 : check for fpos64_t
9274 echo " "
9275 echo "Checking to see if you have fpos64_t..." >&4
9276 $cat >try.c <<EOCP
9277 #include <stdio.h>
9278 int main() { fpos64_t x = 7; }
9279 EOCP
9280 set try
9281 if eval $compile; then
9282         val="$define"
9283         echo "You have fpos64_t."
9284 else
9285         val="$undef"
9286         echo "You do not have fpos64_t."
9287         case "$fpossize" in
9288         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9289         esac
9290 fi
9291 $rm -f try.* try
9292 set d_fpos64_t
9293 eval $setvar
9294
9295 : see if frexpl exists
9296 set frexpl d_frexpl
9297 eval $inlibc
9298
9299 hasstruct='varname=$1; struct=$2; shift; shift;
9300 while $test $# -ge 2; do
9301         case "$1" in
9302         $define) echo "#include <$2>";;
9303         esac ;
9304     shift 2;
9305 done > try.c;
9306 echo "int main () { struct $struct foo; }" >> try.c;
9307 set try;
9308 if eval $compile; then
9309         val="$define";
9310 else
9311         val="$undef";
9312 fi;
9313 set $varname;
9314 eval $setvar;
9315 $rm -f try.c try.o'
9316
9317 : see if this is a sys/param system
9318 set sys/param.h i_sysparam
9319 eval $inhdr
9320
9321 : see if this is a sys/mount.h system
9322 set sys/mount.h i_sysmount
9323 eval $inhdr
9324
9325 : see if sys/types.h has to be included
9326 set sys/types.h i_systypes
9327 eval $inhdr
9328
9329
9330 echo " "
9331 echo "Checking to see if your system supports struct fs_data..." >&4
9332 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9333 eval $hasstruct
9334 case "$d_fs_data_s" in
9335 "$define")      echo "Yes, it does."   ;;
9336 *)              echo "No, it doesn't." ;;
9337 esac
9338
9339 : see if fseeko exists
9340 set fseeko d_fseeko
9341 eval $inlibc
9342 case "$longsize" in
9343 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9344 esac
9345
9346 : see if fsetpos exists
9347 set fsetpos d_fsetpos
9348 eval $inlibc
9349
9350
9351 : see if fstatfs exists
9352 set fstatfs d_fstatfs
9353 eval $inlibc
9354
9355
9356 : see if statvfs exists
9357 set statvfs d_statvfs
9358 eval $inlibc
9359
9360 : see if fstatvfs exists
9361 set fstatvfs d_fstatvfs
9362 eval $inlibc
9363
9364
9365 : see if ftello exists
9366 set ftello d_ftello
9367 eval $inlibc
9368 case "$longsize" in
9369 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9370 esac
9371
9372 : see if getcwd exists
9373 set getcwd d_getcwd
9374 eval $inlibc
9375
9376 : see if getespwnam exists
9377 set getespwnam d_getespwnam
9378 eval $inlibc
9379
9380
9381 : see if getfsstat exists
9382 set getfsstat d_getfsstat
9383 eval $inlibc
9384
9385 : see if getgrent exists
9386 set getgrent d_getgrent
9387 eval $inlibc
9388
9389 : see if gethostbyaddr exists
9390 set gethostbyaddr d_gethbyaddr
9391 eval $inlibc
9392
9393 : see if gethostbyname exists
9394 set gethostbyname d_gethbyname
9395 eval $inlibc
9396
9397 : see if gethostent exists
9398 set gethostent d_gethent
9399 eval $inlibc
9400
9401 : see how we will look up host name
9402 echo " "
9403 call=''
9404 if set gethostname val -f d_gethname; eval $csym; $val; then
9405         echo 'gethostname() found.' >&4
9406         d_gethname="$define"
9407         call=gethostname
9408 fi
9409 if set uname val -f d_uname; eval $csym; $val; then
9410         if ./xenix; then
9411                 $cat <<'EOM'
9412 uname() was found, but you're running xenix, and older versions of xenix
9413 have a broken uname(). If you don't really know whether your xenix is old
9414 enough to have a broken system call, use the default answer.
9415
9416 EOM
9417                 dflt=y
9418                 case "$d_uname" in
9419                 "$define") dflt=n;;
9420                 esac
9421                 rp='Is your uname() broken?'
9422                 . ./myread
9423                 case "$ans" in
9424                 n*) d_uname="$define"; call=uname;;
9425                 esac
9426         else
9427                 echo 'uname() found.' >&4
9428                 d_uname="$define"
9429                 case "$call" in
9430                 '') call=uname ;;
9431                 esac
9432         fi
9433 fi
9434 case "$d_gethname" in
9435 '') d_gethname="$undef";;
9436 esac
9437 case "$d_uname" in
9438 '') d_uname="$undef";;
9439 esac
9440 case "$d_uname$d_gethname" in
9441 *define*)
9442         dflt=n
9443         cat <<EOM
9444  
9445 Every now and then someone has a $call() that lies about the hostname
9446 but can't be fixed for political or economic reasons.  If you wish, I can
9447 pretend $call() isn't there and maybe compute hostname at run-time
9448 thanks to the '$phostname' command.
9449
9450 EOM
9451         rp="Shall I ignore $call() from now on?"
9452         . ./myread
9453         case "$ans" in
9454         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9455         esac;;
9456 esac
9457 case "$phostname" in
9458 '') aphostname='';;
9459 *) case "$aphostname" in
9460         /*) ;;
9461         *) set X $phostname
9462                 shift
9463                 file=$1
9464                 shift
9465                 file=`./loc $file $file $pth`
9466                 aphostname=`echo $file $*`
9467                 ;;
9468         esac
9469         ;;
9470 esac
9471 case "$d_uname$d_gethname" in
9472 *define*) ;;
9473 *)
9474         case "$phostname" in
9475         '')
9476                 echo "There will be no way for $package to get your hostname." >&4;;
9477         *)
9478         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9479                 ;;
9480         esac;;
9481 esac
9482 case "$d_phostname" in
9483 '') d_phostname="$undef";;
9484 esac
9485
9486 : see if this is a netdb.h system
9487 set netdb.h i_netdb
9488 eval $inhdr
9489
9490 : see if prototypes for various gethostxxx netdb.h functions are available
9491 echo " "
9492 set d_gethostprotos gethostent $i_netdb netdb.h
9493 eval $hasproto
9494
9495 : see if getlogin exists
9496 set getlogin d_getlogin
9497 eval $inlibc
9498
9499 : see if getmnt exists
9500 set getmnt d_getmnt
9501 eval $inlibc
9502
9503 : see if getmntent exists
9504 set getmntent d_getmntent
9505 eval $inlibc
9506
9507 : see if getnetbyaddr exists
9508 set getnetbyaddr d_getnbyaddr
9509 eval $inlibc
9510
9511 : see if getnetbyname exists
9512 set getnetbyname d_getnbyname
9513 eval $inlibc
9514
9515 : see if getnetent exists
9516 set getnetent d_getnent
9517 eval $inlibc
9518
9519 : see if prototypes for various getnetxxx netdb.h functions are available
9520 echo " "
9521 set d_getnetprotos getnetent $i_netdb netdb.h
9522 eval $hasproto
9523
9524
9525 : see if getprotobyname exists
9526 set getprotobyname d_getpbyname
9527 eval $inlibc
9528
9529 : see if getprotobynumber exists
9530 set getprotobynumber d_getpbynumber
9531 eval $inlibc
9532
9533 : see if getprotoent exists
9534 set getprotoent d_getpent
9535 eval $inlibc
9536
9537 : see if getpgid exists
9538 set getpgid d_getpgid
9539 eval $inlibc
9540
9541 : see if getpgrp2 exists
9542 set getpgrp2 d_getpgrp2
9543 eval $inlibc
9544
9545 : see if getppid exists
9546 set getppid d_getppid
9547 eval $inlibc
9548
9549 : see if getpriority exists
9550 set getpriority d_getprior
9551 eval $inlibc
9552
9553 : see if prototypes for various getprotoxxx netdb.h functions are available
9554 echo " "
9555 set d_getprotoprotos getprotoent $i_netdb netdb.h
9556 eval $hasproto
9557
9558 : see if getprpwnam exists
9559 set getprpwnam d_getprpwnam
9560 eval $inlibc
9561
9562 : see if getpwent exists
9563 set getpwent d_getpwent
9564 eval $inlibc
9565
9566
9567 : see if getservbyname exists
9568 set getservbyname d_getsbyname
9569 eval $inlibc
9570
9571 : see if getservbyport exists
9572 set getservbyport d_getsbyport
9573 eval $inlibc
9574
9575 : see if getservent exists
9576 set getservent d_getsent
9577 eval $inlibc
9578
9579 : see if prototypes for various getservxxx netdb.h functions are available
9580 echo " "
9581 set d_getservprotos getservent $i_netdb netdb.h
9582 eval $hasproto
9583
9584 : see if getspnam exists
9585 set getspnam d_getspnam
9586 eval $inlibc
9587
9588 : see if gettimeofday or ftime exists
9589 set gettimeofday d_gettimeod
9590 eval $inlibc
9591 case "$d_gettimeod" in
9592 "$undef")
9593         set ftime d_ftime 
9594         eval $inlibc
9595         ;;
9596 *)
9597         val="$undef"; set d_ftime; eval $setvar
9598         ;;
9599 esac
9600 case "$d_gettimeod$d_ftime" in
9601 "$undef$undef")
9602         echo " "
9603         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9604         ;;
9605 esac
9606
9607 : see if this is an grp system
9608 set grp.h i_grp
9609 eval $inhdr
9610
9611 case "$i_grp" in
9612 $define)
9613         xxx=`./findhdr grp.h`
9614         $cppstdin $cppflags $cppminus < $xxx >$$.h
9615
9616         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9617                 val="$define"
9618         else
9619                 val="$undef"
9620         fi
9621         set d_grpasswd
9622         eval $setvar
9623
9624         $rm -f $$.h
9625         ;;
9626 *)
9627         val="$undef";
9628         set d_grpasswd; eval $setvar
9629         ;;
9630 esac
9631
9632 : see if hasmntopt exists
9633 set hasmntopt d_hasmntopt
9634 eval $inlibc
9635
9636 : see if this is a netinet/in.h or sys/in.h system
9637 set netinet/in.h i_niin sys/in.h i_sysin
9638 eval $inhdr
9639
9640 : see if arpa/inet.h has to be included
9641 set arpa/inet.h i_arpainet
9642 eval $inhdr
9643
9644 : see if htonl --and friends-- exists
9645 val=''
9646 set htonl val
9647 eval $inlibc
9648
9649 : Maybe they are macros.
9650 case "$val" in
9651 $undef)
9652         $cat >htonl.c <<EOM
9653 #include <stdio.h>
9654 #include <sys/types.h>
9655 #$i_niin I_NETINET_IN
9656 #$i_sysin I_SYS_IN
9657 #$i_arpainet I_ARPA_INET
9658 #ifdef I_NETINET_IN
9659 #include <netinet/in.h>
9660 #endif
9661 #ifdef I_SYS_IN
9662 #include <sys/in.h>
9663 #endif
9664 #ifdef I_ARPA_INET
9665 #include <arpa/inet.h>
9666 #endif
9667 #ifdef htonl
9668 printf("Defined as a macro.");
9669 #endif
9670 EOM
9671         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9672         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9673                 val="$define"
9674                 echo "But it seems to be defined as a macro." >&4
9675         fi
9676         $rm -f htonl.?
9677         ;;
9678 esac
9679 set d_htonl
9680 eval $setvar
9681
9682 : see if iconv exists
9683 set iconv d_iconv
9684 eval $inlibc
9685
9686 : index or strchr
9687 echo " "
9688 if set index val -f; eval $csym; $val; then
9689         if set strchr val -f d_strchr; eval $csym; $val; then
9690                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9691                         val="$define"
9692                         vali="$undef"
9693                         echo "strchr() found." >&4
9694                 else
9695                         val="$undef"
9696                         vali="$define"
9697                         echo "index() found." >&4
9698                 fi
9699         else
9700                 val="$undef"
9701                 vali="$define"
9702                 echo "index() found." >&4
9703         fi
9704 else
9705         if set strchr val -f d_strchr; eval $csym; $val; then
9706                 val="$define"
9707                 vali="$undef"
9708                 echo "strchr() found." >&4
9709         else
9710                 echo "No index() or strchr() found!" >&4
9711                 val="$undef"
9712                 vali="$undef"
9713         fi
9714 fi
9715 set d_strchr; eval $setvar
9716 val="$vali"
9717 set d_index; eval $setvar
9718
9719 : check whether inet_aton exists
9720 set inet_aton d_inetaton
9721 eval $inlibc
9722
9723 : see if inttypes.h is available
9724 : we want a real compile instead of Inhdr because some systems
9725 : have an inttypes.h which includes non-existent headers
9726 echo " "
9727 $cat >try.c <<EOCP
9728 #include <inttypes.h>
9729 int main() {
9730         static int32_t foo32 = 0x12345678;
9731 }
9732 EOCP
9733 set try
9734 if eval $compile; then
9735         echo "<inttypes.h> found." >&4
9736         val="$define"
9737 else
9738         echo "<inttypes.h> NOT found." >&4
9739         val="$undef"
9740 fi
9741 $rm -f try.c try
9742 set i_inttypes
9743 eval $setvar
9744
9745 : check for int64_t
9746 echo " "
9747 echo "Checking to see if you have int64_t..." >&4
9748 $cat >try.c <<EOCP
9749 #include <sys/types.h>
9750 #$i_inttypes I_INTTYPES
9751 #ifdef I_INTTYPES
9752 #include <inttypes.h>
9753 #endif
9754 int main() { int64_t x = 7; }
9755 EOCP
9756 set try
9757 if eval $compile; then
9758         val="$define"
9759         echo "You have int64_t."
9760 else
9761         val="$undef"
9762         echo "You do not have int64_t."
9763 fi
9764 $rm -f try try.*
9765 set d_int64_t
9766 eval $setvar
9767
9768 : Look for isascii
9769 echo " "
9770 $cat >isascii.c <<'EOCP'
9771 #include <stdio.h>
9772 #include <ctype.h>
9773 int main() {
9774         int c = 'A';
9775         if (isascii(c))
9776                 exit(0);
9777         else
9778                 exit(1);
9779 }
9780 EOCP
9781 set isascii
9782 if eval $compile; then
9783         echo "isascii() found." >&4
9784         val="$define"
9785 else
9786         echo "isascii() NOT found." >&4
9787         val="$undef"
9788 fi
9789 set d_isascii
9790 eval $setvar
9791 $rm -f isascii*
9792
9793 : see if isnan exists
9794 set isnan d_isnan
9795 eval $inlibc
9796
9797 : see if isnanl exists
9798 set isnanl d_isnanl
9799 eval $inlibc
9800
9801 : see if killpg exists
9802 set killpg d_killpg
9803 eval $inlibc
9804
9805 : see if lchown exists
9806 echo " "
9807 $cat > try.c <<'EOCP'
9808 /* System header to define __stub macros and hopefully few prototypes,
9809     which can conflict with char lchown(); below.  */
9810 #include <assert.h>
9811 /* Override any gcc2 internal prototype to avoid an error.  */
9812 /* We use char because int might match the return type of a gcc2
9813    builtin and then its argument prototype would still apply.  */
9814 char lchown();
9815 int main() {
9816     /*  The GNU C library defines this for functions which it implements
9817         to always fail with ENOSYS.  Some functions are actually named
9818         something starting with __ and the normal name is an alias.  */
9819 #if defined (__stub_lchown) || defined (__stub___lchown)
9820 choke me
9821 #else
9822 lchown();
9823 #endif
9824 ; return 0; }
9825 EOCP
9826 set try
9827 if eval $compile; then
9828     $echo "lchown() found." >&4
9829     val="$define"
9830 else
9831     $echo "lchown() NOT found." >&4
9832     val="$undef"
9833 fi
9834 set d_lchown
9835 eval $setvar
9836
9837 : See if number of significant digits in a double precision number is known
9838 echo " "
9839 $cat >ldbl_dig.c <<EOM
9840 #$i_limits I_LIMITS
9841 #$i_float I_FLOAT
9842 #ifdef I_LIMITS
9843 #include <limits.h>
9844 #endif
9845 #ifdef I_FLOAT
9846 #include <float.h>
9847 #endif
9848 #ifdef LDBL_DIG
9849 printf("Contains LDBL_DIG");
9850 #endif
9851 EOM
9852 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9853 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9854         echo "LDBL_DIG found." >&4
9855         val="$define"
9856 else
9857         echo "LDBL_DIG NOT found." >&4
9858         val="$undef"
9859 fi
9860 $rm -f ldbl_dig.?
9861 set d_ldbl_dig
9862 eval $setvar
9863
9864 : see if link exists
9865 set link d_link
9866 eval $inlibc
9867
9868 : see if localeconv exists
9869 set localeconv d_locconv
9870 eval $inlibc
9871
9872 : see if lockf exists
9873 set lockf d_lockf
9874 eval $inlibc
9875
9876 : check for long long
9877 echo " "
9878 echo "Checking to see if you have long long..." >&4
9879 echo 'int main() { long long x = 7; return 0; }' > try.c
9880 set try
9881 if eval $compile; then
9882         val="$define"
9883         echo "You have long long."
9884 else
9885         val="$undef"
9886         echo "You do not have long long."
9887 fi
9888 $rm try.*
9889 set d_longlong
9890 eval $setvar
9891
9892 : check for length of long long
9893 case "${d_longlong}${longlongsize}" in
9894 $define)
9895         echo " "
9896         echo "Checking to see how big your long longs are..." >&4
9897         $cat >try.c <<'EOCP'
9898 #include <stdio.h>
9899 int main()
9900 {
9901     printf("%d\n", (int)sizeof(long long));
9902     return(0);
9903 }
9904 EOCP
9905         set try
9906         if eval $compile_ok; then
9907                 longlongsize=`./try$exe_ext`
9908                 echo "Your long longs are $longlongsize bytes long."
9909         else
9910                 dflt='8'
9911                 echo " "
9912                 echo "(I can't seem to compile the test program.  Guessing...)"
9913                 rp="What is the size of a long long (in bytes)?"
9914                 . ./myread
9915                 longlongsize="$ans"
9916         fi
9917         if $test "X$longsize" = "X$longlongsize"; then
9918                 echo "(That isn't any different from an ordinary long.)"
9919         fi      
9920         ;;
9921 esac
9922 $rm -f try.* try
9923
9924 : see if prototype for lseek is available
9925 echo " "
9926 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9927 eval $hasproto
9928
9929 : see if lstat exists
9930 set lstat d_lstat
9931 eval $inlibc
9932
9933 : see if madvise exists
9934 set madvise d_madvise
9935 eval $inlibc
9936
9937 : see if mblen exists
9938 set mblen d_mblen
9939 eval $inlibc
9940
9941 : see if mbstowcs exists
9942 set mbstowcs d_mbstowcs
9943 eval $inlibc
9944
9945 : see if mbtowc exists
9946 set mbtowc d_mbtowc
9947 eval $inlibc
9948
9949 : see if memchr exists
9950 set memchr d_memchr
9951 eval $inlibc
9952
9953 : see if memcmp exists
9954 set memcmp d_memcmp
9955 eval $inlibc
9956
9957 : see if memcpy exists
9958 set memcpy d_memcpy
9959 eval $inlibc
9960
9961 : see if memmove exists
9962 set memmove d_memmove
9963 eval $inlibc
9964
9965 : see if memset exists
9966 set memset d_memset
9967 eval $inlibc
9968
9969 : see if mkdir exists
9970 set mkdir d_mkdir
9971 eval $inlibc
9972
9973 : see if mkdtemp exists
9974 set mkdtemp d_mkdtemp
9975 eval $inlibc
9976
9977 : see if mkfifo exists
9978 set mkfifo d_mkfifo
9979 eval $inlibc
9980
9981 : see if mkstemp exists
9982 set mkstemp d_mkstemp
9983 eval $inlibc
9984
9985 : see if mkstemps exists
9986 set mkstemps d_mkstemps
9987 eval $inlibc
9988
9989 : see if mktime exists
9990 set mktime d_mktime
9991 eval $inlibc
9992
9993 : see if this is a sys/mman.h system
9994 set sys/mman.h i_sysmman
9995 eval $inhdr
9996
9997 : see if mmap exists
9998 set mmap d_mmap
9999 eval $inlibc
10000 : see what shmat returns
10001 : default to something harmless
10002 mmaptype='void *'
10003 case "$i_sysmman$d_mmap" in
10004 "$define$define")
10005         $cat >mmap.c <<'END'
10006 #include <sys/mman.h>
10007 void *mmap();
10008 END
10009         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
10010                 mmaptype='void *'
10011         else
10012                 mmaptype='caddr_t'
10013         fi
10014         echo "and it returns ($mmaptype)." >&4
10015         ;;
10016 esac
10017
10018
10019
10020 : see if modfl exists
10021 set modfl d_modfl
10022 eval $inlibc
10023
10024 : see if mprotect exists
10025 set mprotect d_mprotect
10026 eval $inlibc
10027
10028 : see if msgctl exists
10029 set msgctl d_msgctl
10030 eval $inlibc
10031
10032 : see if msgget exists
10033 set msgget d_msgget
10034 eval $inlibc
10035
10036 : see if msgsnd exists
10037 set msgsnd d_msgsnd
10038 eval $inlibc
10039
10040 : see if msgrcv exists
10041 set msgrcv d_msgrcv
10042 eval $inlibc
10043
10044 : see how much of the 'msg*(2)' library is present.
10045 h_msg=true
10046 echo " "
10047 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
10048 *"$undef"*) h_msg=false;;
10049 esac
10050 case "$osname" in
10051 freebsd)
10052     case "`ipcs 2>&1`" in
10053     "SVID messages"*"not configured"*)
10054         echo "Your $osname does not have the msg*(2) configured." >&4
10055         h_msg=false
10056         val="$undef"
10057         set msgctl d_msgctl
10058         eval $setvar
10059         set msgget d_msgget
10060         eval $setvar
10061         set msgsnd d_msgsnd
10062         eval $setvar
10063         set msgrcv d_msgrcv
10064         eval $setvar
10065         ;;
10066     esac
10067     ;;
10068 esac
10069 : we could also check for sys/ipc.h ...
10070 if $h_msg && $test `./findhdr sys/msg.h`; then
10071         echo "You have the full msg*(2) library." >&4
10072         val="$define"
10073 else
10074         echo "You don't have the full msg*(2) library." >&4
10075         val="$undef"
10076 fi
10077 set d_msg
10078 eval $setvar
10079
10080 : see if msync exists
10081 set msync d_msync
10082 eval $inlibc
10083
10084 : see if munmap exists
10085 set munmap d_munmap
10086 eval $inlibc
10087
10088 : see if nice exists
10089 set nice d_nice
10090 eval $inlibc
10091
10092
10093 echo " "
10094 echo "Checking which 64-bit integer type we could use..." >&4
10095
10096 case "$intsize" in
10097 8) val=int
10098    set quadtype
10099    eval $setvar
10100    val='"unsigned int"'
10101    set uquadtype
10102    eval $setvar
10103    quadkind=1
10104    ;;
10105 *) case "$longsize" in
10106    8) val=long
10107       set quadtype
10108       eval $setvar
10109       val='"unsigned long"'
10110       set uquadtype
10111       eval $setvar
10112       quadkind=2
10113       ;;
10114    *) case "$d_longlong:$longlongsize" in
10115       define:8)
10116         val='"long long"'
10117         set quadtype
10118         eval $setvar
10119         val='"unsigned long long"'
10120         set uquadtype
10121         eval $setvar
10122         quadkind=3
10123         ;;
10124       *) case "$d_int64_t" in
10125          define)
10126            val=int64_t
10127            set quadtype
10128            eval $setvar
10129            val=uint64_t
10130            set uquadtype
10131            eval $setvar
10132            quadkind=4
10133            ;;
10134          esac
10135          ;;
10136       esac
10137       ;;
10138    esac
10139    ;;
10140 esac
10141
10142 case "$quadtype" in
10143 '')     echo "Alas, no 64-bit integer types in sight." >&4
10144         d_quad="$undef"
10145         ;;
10146 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10147             verb="will"
10148         else
10149             verb="could"
10150         fi
10151         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10152         d_quad="$define"
10153         ;;
10154 esac
10155
10156 : check for length of character
10157 echo " "
10158 case "$charsize" in
10159 '')
10160         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10161         $cat >try.c <<'EOCP'
10162 #include <stdio.h>
10163 int main()
10164 {
10165     printf("%d\n", (int)sizeof(char));
10166     exit(0);
10167 }
10168 EOCP
10169         set try
10170         if eval $compile_ok; then
10171                 dflt=`./try`
10172         else
10173                 dflt='1'
10174                 echo "(I can't seem to compile the test program.  Guessing...)"
10175         fi
10176         ;;
10177 *)
10178         dflt="$charsize"
10179         ;;
10180 esac
10181 rp="What is the size of a character (in bytes)?"
10182 . ./myread
10183 charsize="$ans"
10184 $rm -f try.c try
10185
10186
10187 echo " "
10188 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10189
10190 case "$use64bitint:$d_quad:$quadtype" in
10191 define:define:?*)
10192         ivtype="$quadtype"
10193         uvtype="$uquadtype"
10194         ivsize=8
10195         uvsize=8
10196         ;;
10197 *)      ivtype="long"
10198         uvtype="unsigned long"
10199         ivsize=$longsize
10200         uvsize=$longsize
10201         ;;
10202 esac
10203
10204 case "$uselongdouble:$d_longdbl" in
10205 define:define)
10206         nvtype="long double"
10207         nvsize=$longdblsize
10208         ;;
10209 *)      nvtype=double
10210         nvsize=$doublesize
10211         ;;
10212 esac
10213
10214 $echo "(IV will be "$ivtype", $ivsize bytes)"
10215 $echo "(UV will be "$uvtype", $uvsize bytes)"
10216 $echo "(NV will be "$nvtype", $nvsize bytes)"
10217
10218 $cat >try.c <<EOCP
10219 #$i_inttypes I_INTTYPES
10220 #ifdef I_INTTYPES
10221 #include <inttypes.h>
10222 #endif
10223 #include <stdio.h>
10224 int main() {
10225 #ifdef INT8
10226    int8_t i =  INT8_MAX;
10227   uint8_t u = UINT8_MAX;
10228   printf("int8_t\n");
10229 #endif
10230 #ifdef INT16
10231    int16_t i =  INT16_MAX;
10232   uint16_t i = UINT16_MAX;
10233   printf("int16_t\n");
10234 #endif
10235 #ifdef INT32
10236    int32_t i =  INT32_MAX;
10237   uint32_t u = UINT32_MAX;
10238   printf("int32_t\n");
10239 #endif
10240 }
10241 EOCP
10242
10243 case "$i8type" in
10244 '')     case "$charsize" in
10245         1)      i8type=char
10246                 u8type="unsigned char"
10247                 i8size=$charsize
10248                 u8size=$charsize
10249                 ;;
10250         esac
10251         ;;
10252 esac
10253 case "$i8type" in
10254 '')     set try -DINT8
10255         if eval $compile; then
10256                 case "`./try$exe_ext`" in
10257                 int8_t) i8type=int8_t
10258                         u8type=uint8_t
10259                         i8size=1
10260                         u8size=1
10261                         ;;
10262                 esac
10263         fi
10264         ;;
10265 esac
10266 case "$i8type" in
10267 '')     if $test $charsize -ge 1; then
10268                 i8type=char
10269                 u8type="unsigned char"
10270                 i8size=$charsize
10271                 u8size=$charsize
10272         fi
10273         ;;
10274 esac
10275
10276 case "$i16type" in
10277 '')     case "$shortsize" in
10278         2)      i16type=short
10279                 u16type="unsigned short"
10280                 i16size=$shortsize
10281                 u16size=$shortsize
10282                 ;;
10283         esac
10284         ;;
10285 esac
10286 case "$i16type" in
10287 '')     set try -DINT16
10288         if eval $compile; then
10289                 case "`./try$exe_ext`" in
10290                 int16_t)
10291                         i16type=int16_t
10292                         u16type=uint16_t
10293                         i16size=2
10294                         u16size=2
10295                         ;;
10296                 esac
10297         fi
10298         ;;
10299 esac
10300 case "$i16type" in
10301 '')     if $test $shortsize -ge 2; then
10302                 i16type=short
10303                 u16type="unsigned short"
10304                 i16size=$shortsize
10305                 u16size=$shortsize
10306         fi
10307         ;;
10308 esac
10309
10310 case "$i32type" in
10311 '')     case "$longsize" in
10312         4)      i32type=long
10313                 u32type="unsigned long"
10314                 i32size=$longsize
10315                 u32size=$longsize
10316                 ;;
10317         *)      case "$intsize" in
10318                 4)      i32type=int
10319                         u32type="unsigned int"
10320                         i32size=$intsize
10321                         u32size=$intsize
10322                         ;;
10323                 esac
10324                 ;;
10325         esac
10326         ;;
10327 esac
10328 case "$i32type" in
10329 '')     set try -DINT32
10330         if eval $compile; then
10331                 case "`./try$exe_ext`" in
10332                 int32_t)
10333                         i32type=int32_t
10334                         u32type=uint32_t
10335                         i32size=4
10336                         u32size=4
10337                         ;;
10338                 esac
10339         fi
10340         ;;
10341 esac
10342 case "$i32type" in
10343 '')     if $test $intsize -ge 4; then
10344                 i32type=int
10345                 u32type="unsigned int"
10346                 i32size=$intsize
10347                 u32size=$intsize
10348         fi
10349         ;;
10350 esac
10351
10352 case "$i64type" in
10353 '')     case "$d_quad:$quadtype" in
10354         define:?*)
10355                 i64type="$quadtype"
10356                 u64type="$uquadtype"
10357                 i64size=8
10358                 u64size=8
10359                 ;;
10360         esac
10361         ;;
10362 esac
10363
10364 $echo "Checking whether your NVs can preserve your UVs..." >&4
10365 $cat <<EOP >try.c
10366 #include <stdio.h>
10367 int main() {
10368     $uvtype k = ($uvtype)~0, l;
10369     $nvtype d;
10370     l = k;
10371     d = ($nvtype)l;
10372     l = ($uvtype)d;
10373     if (l == k)
10374        printf("preserve\n");
10375     exit(0);
10376 }
10377 EOP
10378 set try
10379 if eval $compile; then
10380         case "`./try$exe_ext`" in
10381         preserve) d_nv_preserves_uv="$define" ;;
10382         esac
10383 fi      
10384 case "$d_nv_preserves_uv" in
10385 $define) $echo "Yes, they can."  2>&1 ;;
10386 *)       $echo "No, they can't." 2>&1
10387          d_nv_preserves_uv="$undef"
10388          ;;
10389 esac
10390
10391 $rm -f try.* try
10392
10393 case "$d_nv_preserves_uv" in
10394 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10395 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10396         $cat <<EOP >try.c
10397 #include <stdio.h>
10398 int main() {
10399     $uvtype u = 0;
10400     int     n = 8 * $uvsize;
10401     int     i;
10402     for (i = 0; i < n; i++) {
10403       u = u << 1 | ($uvtype)1;
10404       if (($uvtype)($nvtype)u != u)
10405         break;
10406     }
10407     printf("%d\n", i);
10408     exit(0);
10409 }
10410 EOP
10411         set try
10412         if eval $compile; then
10413                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10414         fi
10415         case "$d_nv_preserves_uv_bits" in
10416         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10417         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10418                 d_nv_preserves_uv_bits="$undef"
10419                 ;;
10420         esac
10421         $rm -f try.* try
10422         ;;
10423 esac
10424
10425
10426
10427 : check for off64_t
10428 echo " "
10429 echo "Checking to see if you have off64_t..." >&4
10430 $cat >try.c <<EOCP
10431 #include <sys/types.h>
10432 #include <unistd.h>
10433 int main() { off64_t x = 7; }
10434 EOCP
10435 set try
10436 if eval $compile; then
10437         val="$define"
10438         echo "You have off64_t."
10439 else
10440         val="$undef"
10441         echo "You do not have off64_t."
10442         case "$lseeksize" in
10443         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10444         esac
10445 fi
10446 $rm -f try.* try
10447 set d_off64_t
10448 eval $setvar
10449
10450 : see if POSIX threads are available
10451 set pthread.h i_pthread
10452 eval $inhdr
10453
10454
10455
10456
10457 : how to create joinable pthreads
10458 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10459         echo " "
10460         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10461         $cat >try.c <<'EOCP'
10462 #include <pthread.h>
10463 int main() {
10464     int detachstate = JOINABLE;
10465 }
10466 EOCP
10467         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10468         if eval $compile; then
10469                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10470                 val="$undef" # Yes, undef.
10471                 set d_old_pthread_create_joinable
10472                 eval $setvar
10473                 val=""
10474                 set old_pthread_create_joinable
10475                 eval $setvar
10476         else
10477                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10478                 if eval $compile; then
10479                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10480                         val="$define"
10481                         set d_old_pthread_create_joinable
10482                         eval $setvar
10483                         val=PTHREAD_CREATE_UNDETACHED
10484                         set old_pthread_create_joinable
10485                         eval $setvar
10486                 else            
10487                         set try -DJOINABLE=__UNDETACHED
10488                         if eval $compile; then
10489                                 echo "You seem to use __UNDETACHED." >&4
10490                                 val="$define"
10491                                 set d_old_pthread_create_joinable
10492                                 eval $setvar
10493                                 val=__UNDETACHED
10494                                 set old_pthread_create_joinable
10495                                 eval $setvar
10496                         else
10497                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10498                                 val="$define"
10499                                 set d_old_pthread_create_joinable
10500                                 eval $setvar
10501                                 val=0
10502                                 set old_pthread_create_joinable
10503                                 eval $setvar
10504                         fi
10505                 fi
10506         fi
10507         $rm -f try try.*
10508 else
10509     d_old_pthread_create_joinable="$undef"
10510     old_pthread_create_joinable=""
10511 fi
10512
10513 : see if pause exists
10514 set pause d_pause
10515 eval $inlibc
10516
10517 : see if pipe exists
10518 set pipe d_pipe
10519 eval $inlibc
10520
10521 : see if poll exists
10522 set poll d_poll
10523 eval $inlibc
10524
10525
10526 : see whether the various POSIXish _yields exist
10527 $cat >try.c <<EOP
10528 #include <pthread.h>
10529 #include <stdio.h>
10530 int main() {
10531 #ifdef SCHED_YIELD
10532         sched_yield();
10533 #else
10534 #ifdef PTHREAD_YIELD
10535         pthread_yield();
10536 #else
10537 #ifdef PTHREAD_YIELD_NULL
10538         pthread_yield(NULL);
10539 #endif
10540 #endif
10541 #endif
10542 }
10543 EOP
10544 : see if sched_yield exists
10545 set try -DSCHED_YIELD
10546 if eval $compile; then
10547     val="$define"
10548     sched_yield='sched_yield()'
10549 else
10550     val="$undef"
10551 fi
10552 case "$usethreads" in
10553 $define)
10554         case "$val" in
10555         $define) echo 'sched_yield() found.' >&4        ;;
10556         *)       echo 'sched_yield() NOT found.' >&4    ;;
10557         esac
10558 esac
10559 set d_sched_yield
10560 eval $setvar
10561
10562 : see if pthread_yield exists
10563 set try -DPTHREAD_YIELD
10564 if eval $compile; then
10565     val="$define"
10566     case "$sched_yield" in
10567     '') sched_yield='pthread_yield()' ;;
10568     esac
10569 else
10570     set try -DPTHREAD_YIELD_NULL
10571     if eval $compile; then
10572         val="$define"
10573         case "$sched_yield" in
10574         '') sched_yield='pthread_yield(NULL)' ;;
10575         esac
10576     else
10577         val="$undef"
10578     fi
10579 fi
10580 case "$usethreads" in
10581 $define)
10582         case "$val" in
10583         $define) echo 'pthread_yield() found.' >&4      ;;
10584         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10585         esac
10586         ;;
10587 esac
10588 set d_pthread_yield
10589 eval $setvar
10590
10591 case "$sched_yield" in
10592 '') sched_yield=undef ;;
10593 esac
10594
10595 $rm -f try try.*
10596
10597 : see if this is a pwd.h system
10598 set pwd.h i_pwd
10599 eval $inhdr
10600
10601 case "$i_pwd" in
10602 $define)
10603         xxx=`./findhdr pwd.h`
10604         $cppstdin $cppflags $cppminus < $xxx >$$.h
10605
10606         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10607                 val="$define"
10608         else
10609                 val="$undef"
10610         fi
10611         set d_pwquota
10612         eval $setvar
10613
10614         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10615                 val="$define"
10616         else
10617                 val="$undef"
10618         fi
10619         set d_pwage
10620         eval $setvar
10621
10622         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10623                 val="$define"
10624         else
10625                 val="$undef"
10626         fi
10627         set d_pwchange
10628         eval $setvar
10629
10630         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10631                 val="$define"
10632         else
10633                 val="$undef"
10634         fi
10635         set d_pwclass
10636         eval $setvar
10637
10638         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10639                 val="$define"
10640         else
10641                 val="$undef"
10642         fi
10643         set d_pwexpire
10644         eval $setvar
10645
10646         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10647                 val="$define"
10648         else
10649                 val="$undef"
10650         fi
10651         set d_pwcomment
10652         eval $setvar
10653
10654         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10655                 val="$define"
10656         else
10657                 val="$undef"
10658         fi
10659         set d_pwgecos
10660         eval $setvar
10661
10662         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10663                 val="$define"
10664         else
10665                 val="$undef"
10666         fi
10667         set d_pwpasswd
10668         eval $setvar
10669
10670         $rm -f $$.h
10671         ;;
10672 *)
10673         val="$undef"; 
10674         set d_pwquota; eval $setvar
10675         set d_pwage; eval $setvar
10676         set d_pwchange; eval $setvar
10677         set d_pwclass; eval $setvar
10678         set d_pwexpire; eval $setvar
10679         set d_pwcomment; eval $setvar
10680         set d_pwgecos; eval $setvar
10681         set d_pwpasswd; eval $setvar
10682         ;;
10683 esac
10684
10685 : see if readdir and friends exist
10686 set readdir d_readdir
10687 eval $inlibc
10688 set seekdir d_seekdir
10689 eval $inlibc
10690 set telldir d_telldir
10691 eval $inlibc
10692 set rewinddir d_rewinddir
10693 eval $inlibc
10694
10695 : see if readlink exists
10696 set readlink d_readlink
10697 eval $inlibc
10698
10699 : see if rename exists
10700 set rename d_rename
10701 eval $inlibc
10702
10703 : see if rmdir exists
10704 set rmdir d_rmdir
10705 eval $inlibc
10706
10707 : see if memory.h is available.
10708 val=''
10709 set memory.h val
10710 eval $inhdr
10711
10712 : See if it conflicts with string.h
10713 case "$val" in
10714 $define)
10715         case "$strings" in
10716         '') ;;
10717         *)
10718                 $cppstdin $cppflags $cppminus < $strings > mem.h
10719                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10720                         echo " "
10721                         echo "We won't be including <memory.h>."
10722                         val="$undef"
10723                 fi
10724                 $rm -f mem.h
10725                 ;;
10726         esac
10727 esac
10728 set i_memory
10729 eval $setvar
10730
10731 : can bcopy handle overlapping blocks?
10732 val="$undef"
10733 case "$d_bcopy" in
10734 "$define")
10735         echo " "
10736         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10737         $cat >try.c <<EOCP
10738 #$i_memory I_MEMORY
10739 #$i_stdlib I_STDLIB
10740 #$i_string I_STRING
10741 #$i_unistd I_UNISTD
10742 EOCP
10743         $cat >>try.c <<'EOCP'
10744 #include <stdio.h>
10745 #ifdef I_MEMORY
10746 #  include <memory.h>
10747 #endif
10748 #ifdef I_STDLIB
10749 #  include <stdlib.h>
10750 #endif
10751 #ifdef I_STRING
10752 #  include <string.h>
10753 #else
10754 #  include <strings.h>
10755 #endif
10756 #ifdef I_UNISTD
10757 #  include <unistd.h>  /* Needed for NetBSD */
10758 #endif
10759 int main()
10760 {
10761 char buf[128], abc[128];
10762 char *b;
10763 int len;
10764 int off;
10765 int align;
10766
10767 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10768
10769 for (align = 7; align >= 0; align--) {
10770         for (len = 36; len; len--) {
10771                 b = buf+align;
10772                 bcopy(abc, b, len);
10773                 for (off = 1; off <= len; off++) {
10774                         bcopy(b, b+off, len);
10775                         bcopy(b+off, b, len);
10776                         if (bcmp(b, abc, len))
10777                                 exit(1);
10778                 }
10779         }
10780 }
10781 exit(0);
10782 }
10783 EOCP
10784         set try
10785         if eval $compile_ok; then
10786                 if ./try 2>/dev/null; then
10787                         echo "Yes, it can."
10788                         val="$define"
10789                 else
10790                         echo "It can't, sorry."
10791                         case "$d_memmove" in
10792                         "$define") echo "But that's Ok since you have memmove()." ;;
10793                         esac
10794                 fi
10795         else
10796                 echo "(I can't compile the test program, so we'll assume not...)"
10797                 case "$d_memmove" in
10798                 "$define") echo "But that's Ok since you have memmove()." ;;
10799                 esac
10800         fi
10801         ;;
10802 esac
10803 $rm -f try.* try core
10804 set d_safebcpy
10805 eval $setvar
10806
10807 : can memcpy handle overlapping blocks?
10808 val="$undef"
10809 case "$d_memcpy" in
10810 "$define")
10811         echo " "
10812         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10813         $cat >try.c <<EOCP
10814 #$i_memory I_MEMORY
10815 #$i_stdlib I_STDLIB
10816 #$i_string I_STRING
10817 #$i_unistd I_UNISTD
10818 EOCP
10819         $cat >>try.c <<'EOCP'
10820 #include <stdio.h>
10821 #ifdef I_MEMORY
10822 #  include <memory.h>
10823 #endif
10824 #ifdef I_STDLIB
10825 #  include <stdlib.h>
10826 #endif
10827 #ifdef I_STRING
10828 #  include <string.h>
10829 #else
10830 #  include <strings.h>
10831 #endif
10832 #ifdef I_UNISTD
10833 #  include <unistd.h>  /* Needed for NetBSD */
10834 #endif
10835 int main()
10836 {
10837 char buf[128], abc[128];
10838 char *b;
10839 int len;
10840 int off;
10841 int align;
10842
10843 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10844    try to store the string in read-only memory. */
10845 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10846
10847 for (align = 7; align >= 0; align--) {
10848         for (len = 36; len; len--) {
10849                 b = buf+align;
10850                 memcpy(b, abc, len);
10851                 for (off = 1; off <= len; off++) {
10852                         memcpy(b+off, b, len);
10853                         memcpy(b, b+off, len);
10854                         if (memcmp(b, abc, len))
10855                                 exit(1);
10856                 }
10857         }
10858 }
10859 exit(0);
10860 }
10861 EOCP
10862         set try
10863         if eval $compile_ok; then
10864                 if ./try 2>/dev/null; then
10865                         echo "Yes, it can."
10866                         val="$define"
10867                 else
10868                         echo "It can't, sorry."
10869                         case "$d_memmove" in
10870                         "$define") echo "But that's Ok since you have memmove()." ;;
10871                         esac
10872                 fi
10873         else
10874                 echo "(I can't compile the test program, so we'll assume not...)"
10875                 case "$d_memmove" in
10876                 "$define") echo "But that's Ok since you have memmove()." ;;
10877                 esac
10878         fi
10879         ;;
10880 esac
10881 $rm -f try.* try core
10882 set d_safemcpy
10883 eval $setvar
10884
10885 : can memcmp be trusted to compare relative magnitude?
10886 val="$undef"
10887 case "$d_memcmp" in
10888 "$define")
10889         echo " "
10890         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10891         $cat >try.c <<EOCP
10892 #$i_memory I_MEMORY
10893 #$i_stdlib I_STDLIB
10894 #$i_string I_STRING
10895 #$i_unistd I_UNISTD
10896 EOCP
10897         $cat >>try.c <<'EOCP'
10898 #include <stdio.h>
10899 #ifdef I_MEMORY
10900 #  include <memory.h>
10901 #endif
10902 #ifdef I_STDLIB
10903 #  include <stdlib.h>
10904 #endif
10905 #ifdef I_STRING
10906 #  include <string.h>
10907 #else
10908 #  include <strings.h>
10909 #endif
10910 #ifdef I_UNISTD
10911 #  include <unistd.h>  /* Needed for NetBSD */
10912 #endif
10913 int main()
10914 {
10915 char a = -1;
10916 char b = 0;
10917 if ((a < b) && memcmp(&a, &b, 1) < 0)
10918         exit(1);
10919 exit(0);
10920 }
10921 EOCP
10922         set try
10923         if eval $compile_ok; then
10924                 if ./try 2>/dev/null; then
10925                         echo "Yes, it can."
10926                         val="$define"
10927                 else
10928                         echo "No, it can't (it uses signed chars)."
10929                 fi
10930         else
10931                 echo "(I can't compile the test program, so we'll assume not...)"
10932         fi
10933         ;;
10934 esac
10935 $rm -f try.* try core
10936 set d_sanemcmp
10937 eval $setvar
10938
10939 : see if select exists
10940 set select d_select
10941 eval $inlibc
10942
10943 : see if semctl exists
10944 set semctl d_semctl
10945 eval $inlibc
10946
10947 : see if semget exists
10948 set semget d_semget
10949 eval $inlibc
10950
10951 : see if semop exists
10952 set semop d_semop
10953 eval $inlibc
10954
10955 : see how much of the 'sem*(2)' library is present.
10956 h_sem=true
10957 echo " "
10958 case "$d_semctl$d_semget$d_semop" in
10959 *"$undef"*) h_sem=false;;
10960 esac
10961 case "$osname" in
10962 freebsd)
10963     case "`ipcs 2>&1`" in
10964     "SVID messages"*"not configured"*)
10965         echo "Your $osname does not have the sem*(2) configured." >&4
10966         h_sem=false
10967         val="$undef"
10968         set semctl d_semctl
10969         eval $setvar
10970         set semget d_semget
10971         eval $setvar
10972         set semop d_semop
10973         eval $setvar
10974         ;;
10975     esac
10976     ;;
10977 esac
10978 : we could also check for sys/ipc.h ...
10979 if $h_sem && $test `./findhdr sys/sem.h`; then
10980         echo "You have the full sem*(2) library." >&4
10981         val="$define"
10982 else
10983         echo "You don't have the full sem*(2) library." >&4
10984         val="$undef"
10985 fi
10986 set d_sem
10987 eval $setvar
10988
10989 : see whether sys/sem.h defines union semun
10990 echo " "
10991 $cat > try.c <<'END'
10992 #include <sys/types.h>
10993 #include <sys/ipc.h>
10994 #include <sys/sem.h>
10995 int main () { union semun semun; semun.buf = 0; }
10996 END
10997 set try
10998 if eval $compile; then
10999     echo "You have union semun in <sys/sem.h>." >&4
11000     val="$define"
11001 else
11002     echo "You do not have union semun in <sys/sem.h>." >&4
11003     val="$undef"
11004 fi
11005 $rm -f try try.c try.h
11006 set d_union_semun
11007 eval $setvar
11008
11009 : see how to do semctl IPC_STAT
11010 case "$d_sem" in
11011 $define)
11012     : see whether semctl IPC_STAT can use union semun
11013     echo " "
11014     $cat > try.h <<END
11015 #ifndef S_IRUSR
11016 #   ifdef S_IREAD
11017 #       define S_IRUSR S_IREAD
11018 #       define S_IWUSR S_IWRITE
11019 #       define S_IXUSR S_IEXEC
11020 #   else
11021 #       define S_IRUSR 0400
11022 #       define S_IWUSR 0200
11023 #       define S_IXUSR 0100
11024 #   endif
11025 #   define S_IRGRP (S_IRUSR>>3)
11026 #   define S_IWGRP (S_IWUSR>>3)
11027 #   define S_IXGRP (S_IXUSR>>3)
11028 #   define S_IROTH (S_IRUSR>>6)
11029 #   define S_IWOTH (S_IWUSR>>6)
11030 #   define S_IXOTH (S_IXUSR>>6)
11031 #endif
11032 #ifndef S_IRWXU
11033 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
11034 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
11035 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
11036 #endif
11037 END
11038
11039     $cat > try.c <<END
11040 #include <sys/types.h>
11041 #include <sys/ipc.h>
11042 #include <sys/sem.h>
11043 #include <sys/stat.h>
11044 #include <stdio.h>
11045 #include <errno.h>
11046 #include "try.h"
11047 #ifndef errno
11048 extern int errno;
11049 #endif
11050 #$d_union_semun HAS_UNION_SEMUN
11051 int main() {
11052     union semun
11053 #ifndef HAS_UNION_SEMUN
11054     {
11055         int val;
11056         struct semid_ds *buf;
11057         unsigned short *array;
11058     }
11059 #endif
11060     arg;
11061     int sem, st;
11062
11063 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
11064     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11065     if (sem > -1) {
11066         struct semid_ds argbuf;
11067         arg.buf = &argbuf;
11068 #       ifdef IPC_STAT
11069         st = semctl(sem, 0, IPC_STAT, arg);
11070         if (st == 0)
11071             printf("semun\n");
11072         else
11073 #       endif /* IPC_STAT */
11074             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11075 #       ifdef IPC_RMID
11076         if (semctl(sem, 0, IPC_RMID, arg) != 0)
11077 #       endif /* IPC_RMID */
11078             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11079     } else
11080 #endif /* IPC_PRIVATE && ... */
11081         printf("semget failed: errno = %d\n", errno);
11082   return 0;
11083 }
11084 END
11085     val="$undef"
11086     set try
11087     if eval $compile; then
11088         xxx=`./try`
11089         case "$xxx" in
11090         semun) val="$define" ;;
11091         esac
11092     fi
11093     $rm -f try try.c
11094     set d_semctl_semun
11095     eval $setvar
11096     case "$d_semctl_semun" in
11097     $define)
11098         echo "You can use union semun for semctl IPC_STAT." >&4
11099         also='also'
11100         ;;
11101     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
11102         also=''
11103         ;;
11104     esac
11105
11106     : see whether semctl IPC_STAT can use struct semid_ds pointer
11107     $cat > try.c <<'END'
11108 #include <sys/types.h>
11109 #include <sys/ipc.h>
11110 #include <sys/sem.h>
11111 #include <sys/stat.h>
11112 #include "try.h"
11113 #include <stdio.h>
11114 #include <errno.h>
11115 #ifndef errno
11116 extern int errno;
11117 #endif
11118 int main() {
11119     struct semid_ds arg;
11120     int sem, st;
11121
11122 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
11123     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
11124     if (sem > -1) {
11125 #       ifdef IPC_STAT
11126         st = semctl(sem, 0, IPC_STAT, &arg);
11127         if (st == 0)
11128             printf("semid_ds\n");
11129         else
11130 #       endif /* IPC_STAT */
11131             printf("semctl IPC_STAT failed: errno = %d\n", errno);
11132 #       ifdef IPC_RMID
11133         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
11134 #       endif /* IPC_RMID */
11135             printf("semctl IPC_RMID failed: errno = %d\n", errno);
11136     } else
11137 #endif /* IPC_PRIVATE && ... */
11138         printf("semget failed: errno = %d\n", errno);
11139
11140     return 0;
11141 }
11142 END
11143     val="$undef"
11144     set try
11145     if eval $compile; then
11146         xxx=`./try`
11147         case "$xxx" in
11148         semid_ds) val="$define" ;;
11149         esac
11150     fi
11151     $rm -f try try.c
11152     set d_semctl_semid_ds
11153     eval $setvar
11154     case "$d_semctl_semid_ds" in
11155     $define)
11156         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11157         ;;
11158     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11159         ;;
11160     esac
11161     $rm -f try.h
11162     ;;
11163 *)  val="$undef"
11164
11165     # We do not have the full sem*(2) library, so assume we can not
11166     # use either.
11167
11168     set d_semctl_semun
11169     eval $setvar
11170
11171     set d_semctl_semid_ds
11172     eval $setvar
11173     ;;
11174 esac
11175
11176 : see if setegid exists
11177 set setegid d_setegid
11178 eval $inlibc
11179
11180 : see if seteuid exists
11181 set seteuid d_seteuid
11182 eval $inlibc
11183
11184 : see if setgrent exists
11185 set setgrent d_setgrent
11186 eval $inlibc
11187
11188 : see if sethostent exists
11189 set sethostent d_sethent
11190 eval $inlibc
11191
11192 : see if setlinebuf exists
11193 set setlinebuf d_setlinebuf
11194 eval $inlibc
11195
11196 : see if setlocale exists
11197 set setlocale d_setlocale
11198 eval $inlibc
11199
11200 : see if setnetent exists
11201 set setnetent d_setnent
11202 eval $inlibc
11203
11204 : see if setprotoent exists
11205 set setprotoent d_setpent
11206 eval $inlibc
11207
11208 : see if setpgid exists
11209 set setpgid d_setpgid
11210 eval $inlibc
11211
11212 : see if setpgrp2 exists
11213 set setpgrp2 d_setpgrp2
11214 eval $inlibc
11215
11216 : see if setpriority exists
11217 set setpriority d_setprior
11218 eval $inlibc
11219
11220 : see if setproctitle exists
11221 set setproctitle d_setproctitle
11222 eval $inlibc
11223
11224 : see if setpwent exists
11225 set setpwent d_setpwent
11226 eval $inlibc
11227
11228 : see if setregid exists
11229 set setregid d_setregid
11230 eval $inlibc
11231 set setresgid d_setresgid
11232 eval $inlibc
11233
11234 : see if setreuid exists
11235 set setreuid d_setreuid
11236 eval $inlibc
11237 set setresuid d_setresuid
11238 eval $inlibc
11239
11240 : see if setrgid exists
11241 set setrgid d_setrgid
11242 eval $inlibc
11243
11244 : see if setruid exists
11245 set setruid d_setruid
11246 eval $inlibc
11247
11248 : see if setservent exists
11249 set setservent d_setsent
11250 eval $inlibc
11251
11252 : see if setsid exists
11253 set setsid d_setsid
11254 eval $inlibc
11255
11256 : see if setvbuf exists
11257 set setvbuf d_setvbuf
11258 eval $inlibc
11259
11260 : see if sfio.h is available
11261 set sfio.h i_sfio
11262 eval $inhdr
11263
11264
11265 : see if sfio library is available
11266 case "$i_sfio" in
11267 $define)
11268         val=''
11269         set sfreserve val
11270         eval $inlibc
11271         ;;
11272 *)
11273         val="$undef"
11274         ;;
11275 esac
11276 : Ok, but do we want to use it.
11277 case "$val" in
11278 $define)
11279         case "$usesfio" in
11280         true|$define|[yY]*) dflt='y';;
11281         *) dflt='n';;
11282         esac
11283         echo "$package can use the sfio library, but it is experimental."
11284         case "$useperlio" in
11285         "$undef")
11286             echo "For sfio also the PerlIO abstraction layer is needed."
11287             echo "Earlier you said you wouldn't want that."
11288             ;;
11289         esac
11290         rp="You seem to have sfio available, do you want to try using it?"
11291         . ./myread
11292         case "$ans" in
11293         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11294                 useperlio="$define"
11295                 val="$define"
11296                 ;;
11297         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11298                 val="$undef"
11299                 : Remove sfio from list of libraries to use
11300                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11301                 shift
11302                 libs="$*"
11303                 echo "libs = $libs" >&4
11304                 ;;
11305         esac
11306         ;;
11307 *)      case "$usesfio" in
11308         true|$define|[yY]*)
11309                 echo "Sorry, cannot find sfio on this machine." >&4
11310                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11311                 val="$undef"
11312                 ;;
11313         esac
11314         ;;
11315 esac
11316 set d_sfio
11317 eval $setvar
11318 case "$d_sfio" in
11319 $define) usesfio='true';;
11320 *) usesfio='false';;
11321 esac
11322
11323 : see if shmctl exists
11324 set shmctl d_shmctl
11325 eval $inlibc
11326
11327 : see if shmget exists
11328 set shmget d_shmget
11329 eval $inlibc
11330
11331 : see if shmat exists
11332 set shmat d_shmat
11333 eval $inlibc
11334 : see what shmat returns
11335 case "$d_shmat" in
11336 "$define")
11337         $cat >shmat.c <<'END'
11338 #include <sys/shm.h>
11339 void *shmat();
11340 END
11341         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11342                 shmattype='void *'
11343         else
11344                 shmattype='char *'
11345         fi
11346         echo "and it returns ($shmattype)." >&4
11347         : see if a prototype for shmat is available
11348         xxx=`./findhdr sys/shm.h`
11349         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11350         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11351                 val="$define"
11352         else
11353                 val="$undef"
11354         fi
11355         $rm -f shmat.[co]
11356         ;;
11357 *)
11358         val="$undef"
11359         ;;
11360 esac
11361 set d_shmatprototype
11362 eval $setvar
11363
11364 : see if shmdt exists
11365 set shmdt d_shmdt
11366 eval $inlibc
11367
11368 : see how much of the 'shm*(2)' library is present.
11369 h_shm=true
11370 echo " "
11371 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11372 *"$undef"*) h_shm=false;;
11373 esac
11374 case "$osname" in
11375 freebsd)
11376     case "`ipcs 2>&1`" in
11377     "SVID shared memory"*"not configured"*)
11378         echo "Your $osname does not have the shm*(2) configured." >&4
11379         h_shm=false
11380         val="$undef"
11381         set shmctl d_shmctl
11382         evat $setvar
11383         set shmget d_shmget
11384         evat $setvar
11385         set shmat d_shmat
11386         evat $setvar
11387         set shmdt d_shmdt
11388         evat $setvar
11389         ;;
11390     esac
11391     ;;
11392 esac
11393 : we could also check for sys/ipc.h ...
11394 if $h_shm && $test `./findhdr sys/shm.h`; then
11395         echo "You have the full shm*(2) library." >&4
11396         val="$define"
11397 else
11398         echo "You don't have the full shm*(2) library." >&4
11399         val="$undef"
11400 fi
11401 set d_shm
11402 eval $setvar
11403
11404 echo " "
11405 : see if we have sigaction
11406 if set sigaction val -f d_sigaction; eval $csym; $val; then
11407         echo 'sigaction() found.' >&4
11408         $cat > try.c <<'EOP'
11409 #include <stdio.h>
11410 #include <sys/types.h>
11411 #include <signal.h>
11412 int main()
11413 {
11414     struct sigaction act, oact;
11415     act.sa_flags = 0;
11416     oact.sa_handler = 0;
11417     /* so that act and oact are used */
11418     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11419 }
11420 EOP
11421         set try
11422         if eval $compile_ok; then
11423                 val="$define"
11424         else
11425                 echo "But you don't seem to have a useable struct sigaction." >&4
11426                 val="$undef"
11427         fi
11428 else
11429         echo 'sigaction NOT found.' >&4
11430         val="$undef"
11431 fi
11432 set d_sigaction; eval $setvar
11433 $rm -f try try$_o try.c
11434
11435 : see if sigsetjmp exists
11436 echo " "
11437 case "$d_sigsetjmp" in
11438 '')
11439         $cat >try.c <<'EOP'
11440 #include <setjmp.h>
11441 sigjmp_buf env;
11442 int set = 1;
11443 int main()
11444 {
11445         if (sigsetjmp(env,1))
11446                 exit(set);
11447         set = 0;
11448         siglongjmp(env, 1);
11449         exit(1);
11450 }
11451 EOP
11452         set try
11453         if eval $compile; then
11454                 if ./try >/dev/null 2>&1; then
11455                         echo "POSIX sigsetjmp found." >&4
11456                         val="$define"
11457                 else
11458                         $cat >&4 <<EOM
11459 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11460 I'll ignore them.
11461 EOM
11462                         val="$undef"
11463                 fi
11464         else
11465                 echo "sigsetjmp not found." >&4
11466                 val="$undef"
11467         fi
11468         ;;
11469 *) val="$d_sigsetjmp"
11470         case "$d_sigsetjmp" in
11471         $define) echo "POSIX sigsetjmp found." >&4;;
11472         $undef) echo "sigsetjmp not found." >&4;;
11473         esac
11474         ;;
11475 esac
11476 set d_sigsetjmp
11477 eval $setvar
11478 $rm -f try.c try
11479
11480 : see if socks5_init exists
11481 set socks5_init d_socks5_init
11482 eval $inlibc
11483
11484 : see if sys/stat.h is available
11485 set sys/stat.h i_sysstat
11486 eval $inhdr
11487
11488
11489 : see if stat knows about block sizes
11490 echo " "
11491 echo "Checking to see if your struct stat has st_blocks field..." >&4
11492 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11493 eval $hasfield
11494
11495
11496 : see if this is a sys/vfs.h system
11497 set sys/vfs.h i_sysvfs
11498 eval $inhdr
11499
11500
11501 : see if this is a sys/statfs.h system
11502 set sys/statfs.h i_sysstatfs
11503 eval $inhdr
11504
11505
11506 echo " "
11507 echo "Checking to see if your system supports struct statfs..." >&4
11508 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
11509 eval $hasstruct
11510 case "$d_statfs_s" in
11511 "$define")      echo "Yes, it does."   ;;
11512 *)              echo "No, it doesn't." ;;
11513 esac
11514
11515
11516
11517 : see if struct statfs knows about f_flags
11518 case "$d_statfs_s" in
11519 define) 
11520         echo " "
11521         echo "Checking to see if your struct statfs has f_flags field..." >&4
11522         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
11523         eval $hasfield
11524         ;;
11525 *)      val="$undef"
11526         set d_statfs_f_flags
11527         eval $setvar
11528         ;;
11529 esac
11530 case "$d_statfs_f_flags" in
11531 "$define")      echo "Yes, it does."   ;;
11532 *)              echo "No, it doesn't." ;;
11533 esac
11534
11535 : see if _ptr and _cnt from stdio act std
11536 echo " "
11537 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11538         echo "(Looks like you have stdio.h from Linux.)"
11539         case "$stdio_ptr" in
11540         '') stdio_ptr='((fp)->_IO_read_ptr)'
11541                 ptr_lval=$define
11542                 ;;
11543         *)      ptr_lval=$d_stdio_ptr_lval;;
11544         esac
11545         case "$stdio_cnt" in
11546         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11547                 cnt_lval=$undef
11548                 ;;
11549         *)      cnt_lval=$d_stdio_cnt_lval;;
11550         esac
11551         case "$stdio_base" in
11552         '') stdio_base='((fp)->_IO_read_base)';;
11553         esac
11554         case "$stdio_bufsiz" in
11555         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11556         esac
11557 else
11558         case "$stdio_ptr" in
11559         '') stdio_ptr='((fp)->_ptr)'
11560                 ptr_lval=$define
11561                 ;;
11562         *)      ptr_lval=$d_stdio_ptr_lval;;
11563         esac
11564         case "$stdio_cnt" in
11565         '') stdio_cnt='((fp)->_cnt)'
11566                 cnt_lval=$define
11567                 ;;
11568         *)      cnt_lval=$d_stdio_cnt_lval;;
11569         esac
11570         case "$stdio_base" in
11571         '') stdio_base='((fp)->_base)';;
11572         esac
11573         case "$stdio_bufsiz" in
11574         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11575         esac
11576 fi
11577 : test whether _ptr and _cnt really work
11578 echo "Checking how std your stdio is..." >&4
11579 $cat >try.c <<EOP
11580 #include <stdio.h>
11581 #define FILE_ptr(fp)    $stdio_ptr
11582 #define FILE_cnt(fp)    $stdio_cnt
11583 int main() {
11584         FILE *fp = fopen("try.c", "r");
11585         char c = getc(fp);
11586         if (
11587                 18 <= FILE_cnt(fp) &&
11588                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11589         )
11590                 exit(0);
11591         exit(1);
11592 }
11593 EOP
11594 val="$undef"
11595 set try
11596 if eval $compile; then
11597         if ./try; then
11598                 echo "Your stdio acts pretty std."
11599                 val="$define"
11600         else
11601                 echo "Your stdio isn't very std."
11602         fi
11603 else
11604         echo "Your stdio doesn't appear very std."
11605 fi
11606 $rm -f try.c try
11607 set d_stdstdio
11608 eval $setvar
11609
11610 : Can _ptr be used as an lvalue?
11611 case "$d_stdstdio$ptr_lval" in
11612 $define$define) val=$define ;;
11613 *) val=$undef ;;
11614 esac
11615 set d_stdio_ptr_lval
11616 eval $setvar
11617
11618 : Can _cnt be used as an lvalue?
11619 case "$d_stdstdio$cnt_lval" in
11620 $define$define) val=$define ;;
11621 *) val=$undef ;;
11622 esac
11623 set d_stdio_cnt_lval
11624 eval $setvar
11625
11626 : see if _base is also standard
11627 val="$undef"
11628 case "$d_stdstdio" in
11629 $define)
11630         $cat >try.c <<EOP
11631 #include <stdio.h>
11632 #define FILE_base(fp)   $stdio_base
11633 #define FILE_bufsiz(fp) $stdio_bufsiz
11634 int main() {
11635         FILE *fp = fopen("try.c", "r");
11636         char c = getc(fp);
11637         if (
11638                 19 <= FILE_bufsiz(fp) &&
11639                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11640         )
11641                 exit(0);
11642         exit(1);
11643 }
11644 EOP
11645         set try
11646         if eval $compile; then
11647                 if ./try; then
11648                         echo "And its _base field acts std."
11649                         val="$define"
11650                 else
11651                         echo "But its _base field isn't std."
11652                 fi
11653         else
11654                 echo "However, it seems to be lacking the _base field."
11655         fi
11656         $rm -f try.c try
11657         ;;
11658 esac
11659 set d_stdiobase
11660 eval $setvar
11661
11662 $cat >&4 <<EOM
11663 Checking how to access stdio streams by file descriptor number...
11664 EOM
11665 case "$stdio_stream_array" in
11666 '')     $cat >try.c <<EOCP
11667 #include <stdio.h>
11668 int main() {
11669   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11670     printf("yes\n");
11671 }
11672 EOCP
11673         for s in _iob __iob __sF
11674         do
11675                 set try -DSTDIO_STREAM_ARRAY=$s
11676                 if eval $compile; then
11677                         case "`./try$exe_ext`" in
11678                         yes)    stdio_stream_array=$s; break ;;
11679                         esac
11680                 fi
11681         done
11682         $rm -f try.* try$exe_ext
11683 esac
11684 case "$stdio_stream_array" in
11685 '')     $cat >&4 <<EOM
11686 I can't figure out how to access stdio streams by file descriptor number.
11687 EOM
11688         d_stdio_stream_array="$undef"
11689         ;;
11690 *)      $cat >&4 <<EOM
11691 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11692 EOM
11693         d_stdio_stream_array="$define"
11694         ;;
11695 esac
11696
11697 : see if strcoll exists
11698 set strcoll d_strcoll
11699 eval $inlibc
11700
11701 : check for structure copying
11702 echo " "
11703 echo "Checking to see if your C compiler can copy structs..." >&4
11704 $cat >try.c <<'EOCP'
11705 int main()
11706 {
11707         struct blurfl {
11708                 int dyick;
11709         } foo, bar;
11710
11711         foo = bar;
11712 }
11713 EOCP
11714 if $cc -c try.c >/dev/null 2>&1 ; then
11715         val="$define"
11716         echo "Yup, it can."
11717 else
11718         val="$undef"
11719         echo "Nope, it can't."
11720 fi
11721 set d_strctcpy
11722 eval $setvar
11723 $rm -f try.*
11724
11725 : see if strerror and/or sys_errlist[] exist
11726 echo " "
11727 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11728     if set strerror val -f d_strerror; eval $csym; $val; then
11729                 echo 'strerror() found.' >&4
11730                 d_strerror="$define"
11731                 d_strerrm='strerror(e)'
11732                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11733                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11734                         d_syserrlst="$define"
11735                 else
11736                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11737                         d_syserrlst="$undef"
11738                 fi
11739     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11740                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11741                 echo 'strerror() found in string header.' >&4
11742                 d_strerror="$define"
11743                 d_strerrm='strerror(e)'
11744                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11745                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11746                                 d_syserrlst="$define"
11747                 else
11748                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11749                         d_syserrlst="$undef"
11750                 fi
11751     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11752                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11753                 d_strerror="$undef"
11754                 d_syserrlst="$define"
11755                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11756     else
11757                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11758                 d_strerror="$undef"
11759                 d_syserrlst="$undef"
11760                 d_strerrm='"unknown"'
11761     fi
11762 fi
11763
11764 : see if strtod exists
11765 set strtod d_strtod
11766 eval $inlibc
11767
11768 : see if strtol exists
11769 set strtol d_strtol
11770 eval $inlibc
11771
11772 : see if strtold exists
11773 set strtold d_strtold
11774 eval $inlibc
11775
11776 : see if strtoll exists
11777 set strtoll d_strtoll
11778 eval $inlibc
11779
11780 case "$d_longlong-$d_strtoll" in
11781 "$define-$define")
11782         $cat <<EOM
11783 Checking whether your strtoll() works okay...
11784 EOM
11785         $cat >try.c <<'EOCP'
11786 #include <errno.h>
11787 #ifdef __hpux
11788 #define strtoll __strtoll
11789 #endif
11790 #include <stdio.h>
11791 extern long long int strtoll(char *s, char **, int); 
11792 static int bad = 0;
11793 int check(char *s, long long ell, int een) {
11794         long long gll;
11795         errno = 0;
11796         gll = strtoll(s, 0, 10);
11797         if (!((gll == ell) && (errno == een)))
11798                 bad++;
11799 }
11800 int main() {
11801         check(" 1",                                      1LL, 0);
11802         check(" 0",                                      0LL, 0);
11803         check("-1",                                     -1LL, 0);
11804         check("-9223372036854775808", -9223372036854775808LL, 0);
11805         check("-9223372036854775808", -9223372036854775808LL, 0);
11806         check(" 9223372036854775807",  9223372036854775807LL, 0);
11807         check("-9223372036854775808", -9223372036854775808LL, 0);
11808         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11809         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11810         if (!bad)
11811                 printf("ok\n");
11812 }
11813 EOCP
11814         set try
11815         if eval $compile; then
11816                 case "`./try`" in
11817                 ok) echo "Your strtoll() seems to be working okay." ;;
11818                 *) cat <<EOM >&4
11819 Your strtoll() doesn't seem to be working okay.
11820 EOM
11821                    d_strtoll="$undef"
11822                    ;;
11823                 esac
11824         fi
11825         ;;
11826 esac
11827
11828 : see if strtoul exists
11829 set strtoul d_strtoul
11830 eval $inlibc
11831
11832 : see if strtoull exists
11833 set strtoull d_strtoull
11834 eval $inlibc
11835
11836 case "$d_longlong-$d_strtoull" in
11837 "$define-$define")
11838         $cat <<EOM
11839 Checking whether your strtoull() works okay...
11840 EOM
11841         $cat >try.c <<'EOCP'
11842 #include <errno.h>
11843 #ifdef __hpux
11844 #define strtoull __strtoull
11845 #endif
11846 #include <stdio.h>
11847 extern unsigned long long int strtoull(char *s, char **, int); 
11848 static int bad = 0;
11849 int check(char *s, long long eull, int een) {
11850         long long gull;
11851         errno = 0;
11852         gull = strtoull(s, 0, 10);
11853         if (!((gull == eull) && (errno == een)))
11854                 bad++;
11855 }
11856 int main() {
11857         check(" 1",                                       1LL, 0);
11858         check(" 0",                                       0LL, 0);
11859         check("18446744073709551615", 18446744073709551615ULL, 0);
11860         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11861         if (!bad)
11862                 printf("ok\n");
11863 }
11864 EOCP
11865         set try
11866         if eval $compile; then
11867                 case "`./try`" in
11868                 ok) echo "Your strtoull() seems to be working okay." ;;
11869                 *) cat <<EOM >&4
11870 Your strtoull() doesn't seem to be working okay.
11871 EOM
11872                    d_strtoull="$undef"
11873                    ;;
11874                 esac
11875         fi
11876         ;;
11877 esac
11878
11879 : see if strtouq exists
11880 set strtouq d_strtouq
11881 eval $inlibc
11882
11883 : see if strxfrm exists
11884 set strxfrm d_strxfrm
11885 eval $inlibc
11886
11887 : see if symlink exists
11888 set symlink d_symlink
11889 eval $inlibc
11890
11891 : see if syscall exists
11892 set syscall d_syscall
11893 eval $inlibc
11894
11895 : see if sysconf exists
11896 set sysconf d_sysconf
11897 eval $inlibc
11898
11899 : see if system exists
11900 set system d_system
11901 eval $inlibc
11902
11903 : see if tcgetpgrp exists
11904 set tcgetpgrp d_tcgetpgrp
11905 eval $inlibc
11906
11907 : see if tcsetpgrp exists
11908 set tcsetpgrp d_tcsetpgrp
11909 eval $inlibc
11910
11911 : see if prototype for telldir is available
11912 echo " "
11913 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11914 eval $hasproto
11915
11916 : see if this is a sys/times.h system
11917 set sys/times.h i_systimes
11918 eval $inhdr
11919
11920 : see if times exists
11921 echo " "
11922 if set times val -f d_times; eval $csym; $val; then
11923         echo 'times() found.' >&4
11924         d_times="$define"
11925         inc=''
11926         case "$i_systimes" in
11927         "$define") inc='sys/times.h';;
11928         esac
11929         rp="What is the type returned by times() on this system?"
11930         set clock_t clocktype long stdio.h sys/types.h $inc
11931         eval $typedef_ask
11932 else
11933         echo 'times() NOT found, hope that will do.' >&4
11934         d_times="$undef"
11935         clocktype='int'
11936 fi
11937
11938 : see if truncate exists
11939 set truncate d_truncate
11940 eval $inlibc
11941
11942 : see if tzname[] exists
11943 echo " "
11944 if set tzname val -a d_tzname; eval $csym; $val; then
11945         val="$define"
11946         echo 'tzname[] found.' >&4
11947 else
11948         val="$undef"
11949         echo 'tzname[] NOT found.' >&4
11950 fi
11951 set d_tzname
11952 eval $setvar
11953
11954 : see if umask exists
11955 set umask d_umask
11956 eval $inlibc
11957
11958 : see if ustat exists
11959 set ustat d_ustat
11960 eval $inlibc
11961
11962 : backward compatibility for d_hvfork
11963 if test X$d_hvfork != X; then
11964         d_vfork="$d_hvfork"
11965         d_hvfork=''
11966 fi
11967 : see if there is a vfork
11968 val=''
11969 set vfork val
11970 eval $inlibc
11971
11972 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11973 : perl on Solaris 2.x, and probably elsewhere.
11974 case "$val" in
11975 $define)
11976         echo " "
11977         case "$usevfork" in
11978         false) dflt='n';;
11979         *) dflt='y';;
11980         esac
11981         cat <<'EOM'
11982  
11983 Perl can only use a vfork() that doesn't suffer from strict
11984 restrictions on calling functions or modifying global data in
11985 the child.  For example, glibc-2.1 contains such a vfork()
11986 that is unsuitable.  If your system provides a proper fork()
11987 call, chances are that you do NOT want perl to use vfork().
11988
11989 EOM
11990         rp="Do you still want to use vfork()?"
11991         . ./myread
11992         case "$ans" in
11993         y|Y) ;;
11994         *)
11995                 echo "Ok, we won't use vfork()."
11996                 val="$undef"
11997                 ;;
11998         esac
11999         ;;
12000 esac
12001 set d_vfork
12002 eval $setvar
12003 case "$d_vfork" in
12004 $define) usevfork='true';;
12005 *) usevfork='false';;
12006 esac
12007
12008 : see if this is an sysdir system
12009 set sys/dir.h i_sysdir
12010 eval $inhdr
12011
12012 : see if this is an sysndir system
12013 set sys/ndir.h i_sysndir
12014 eval $inhdr
12015
12016 : see if closedir exists
12017 set closedir d_closedir
12018 eval $inlibc
12019
12020 case "$d_closedir" in
12021 "$define")
12022         echo " "
12023         echo "Checking whether closedir() returns a status..." >&4
12024         cat > closedir.c <<EOM
12025 #$i_dirent I_DIRENT             /**/
12026 #$i_sysdir I_SYS_DIR            /**/
12027 #$i_sysndir I_SYS_NDIR          /**/
12028 #$i_systypes I_SYS_TYPES        /**/
12029
12030 #if defined(I_SYS_TYPES)
12031 #include <sys/types.h>
12032 #endif
12033 #if defined(I_DIRENT)
12034 #include <dirent.h>
12035 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
12036 #include <sys/dir.h>
12037 #endif
12038 #else
12039 #ifdef I_SYS_NDIR
12040 #include <sys/ndir.h>
12041 #else
12042 #ifdef I_SYS_DIR
12043 #ifdef hp9000s500
12044 #include <ndir.h>       /* may be wrong in the future */
12045 #else
12046 #include <sys/dir.h>
12047 #endif
12048 #endif
12049 #endif
12050 #endif 
12051 int main() { return closedir(opendir(".")); }
12052 EOM
12053         set closedir
12054         if eval $compile_ok; then
12055                 if ./closedir > /dev/null 2>&1 ; then
12056                         echo "Yes, it does."
12057                         val="$undef"
12058                 else
12059                         echo "No, it doesn't."
12060                         val="$define"
12061                 fi
12062         else
12063                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12064                 val="$define"
12065         fi
12066         ;;
12067 *)
12068         val="$undef";
12069         ;;
12070 esac
12071 set d_void_closedir
12072 eval $setvar
12073 $rm -f closedir*
12074 : check for volatile keyword
12075 echo " "
12076 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12077 $cat >try.c <<'EOCP'
12078 int main()
12079 {
12080         typedef struct _goo_struct goo_struct;
12081         goo_struct * volatile goo = ((goo_struct *)0);
12082         struct _goo_struct {
12083                 long long_int;
12084                 int reg_int;
12085                 char char_var;
12086         };
12087         typedef unsigned short foo_t;
12088         char *volatile foo;
12089         volatile int bar;
12090         volatile foo_t blech;
12091         foo = foo;
12092 }
12093 EOCP
12094 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12095         val="$define"
12096         echo "Yup, it does."
12097 else
12098         val="$undef"
12099         echo "Nope, it doesn't."
12100 fi
12101 set d_volatile
12102 eval $setvar
12103 $rm -f try.*
12104
12105 : see if there is a wait4
12106 set wait4 d_wait4
12107 eval $inlibc
12108
12109 : see if waitpid exists
12110 set waitpid d_waitpid
12111 eval $inlibc
12112
12113 : see if wcstombs exists
12114 set wcstombs d_wcstombs
12115 eval $inlibc
12116
12117 : see if wctomb exists
12118 set wctomb d_wctomb
12119 eval $inlibc
12120
12121 : preserve RCS keywords in files with variable substitution, grrr
12122 Date='$Date'
12123 Id='$Id'
12124 Log='$Log'
12125 RCSfile='$RCSfile'
12126 Revision='$Revision'
12127
12128 case "$crosscompile" in
12129 ''|[nN]*) crosscompile="$undef" ;;
12130 esac
12131
12132 case "$osname" in
12133 next|rhapsody|darwin) multiarch="$define" ;;
12134 esac
12135 case "$multiarch" in
12136 ''|[nN]*) multiarch="$undef" ;;
12137 esac
12138
12139 : check for alignment requirements
12140 echo " "
12141 case "$crosscompile$multiarch" in
12142 *$define*)
12143         $cat <<EOM
12144 You seem to be either cross-compiling or doing a multiarchitecture build,
12145 skipping the memory alignment check.
12146
12147 EOM
12148         case "$alignbytes" in
12149         '') alignbytes=8 ;;
12150         esac
12151         ;;
12152 *)
12153         case "$alignbytes" in
12154         '') echo "Checking alignment constraints..." >&4
12155                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12156                         $cat >try.c <<'EOCP'
12157 typedef long double NV;
12158 EOCP
12159                 else
12160                         $cat >try.c <<'EOCP'
12161 typedef double NV;
12162 EOCP
12163                 fi
12164                 $cat >>try.c <<'EOCP'
12165 #include <stdio.h>
12166 struct foobar {
12167         char foo;
12168         NV bar;
12169 } try_algn;
12170 int main()
12171 {
12172     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12173     return(0);
12174 }
12175 EOCP
12176                 set try
12177                 if eval $compile_ok; then
12178                         dflt=`./try`
12179                 else
12180                         dflt='8'
12181                         echo "(I can't seem to compile the test program...)"
12182                 fi
12183                 ;;
12184         *) dflt="$alignbytes"
12185                 ;;
12186         esac
12187         rp="Doubles must be aligned on a how-many-byte boundary?"
12188         . ./myread
12189         alignbytes="$ans"
12190         $rm -f try.c try
12191         ;;
12192 esac
12193
12194
12195 : set the base revision
12196 baserev=5.0
12197
12198 : check for ordering of bytes in a long
12199 echo " "
12200 case "$crosscompile$multiarch" in
12201 *$define*)
12202         $cat <<EOM
12203 You seem to be either cross-compiling or doing a multiarchitecture build,
12204 skipping the byteorder check.
12205
12206 EOM
12207         byteorder='0xffff'
12208         ;;
12209 *)
12210         case "$byteorder" in
12211         '')
12212                 $cat <<'EOM'
12213 In the following, larger digits indicate more significance.  A big-endian
12214 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12215 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12216 machines may have weird orders like 3412.  A Cray will report 87654321,
12217 an Alpha will report 12345678. If the test program works the default is
12218 probably right.
12219 I'm now running the test program...
12220 EOM
12221                 $cat >try.c <<'EOCP'
12222 #include <stdio.h>
12223 int main()
12224 {
12225         int i;
12226         union {
12227                 unsigned long l;
12228                 char c[sizeof(long)];
12229         } u;
12230
12231         if (sizeof(long) > 4)
12232                 u.l = (0x08070605L << 32) | 0x04030201L;
12233         else
12234                 u.l = 0x04030201L;
12235         for (i = 0; i < sizeof(long); i++)
12236                 printf("%c", u.c[i]+'0');
12237         printf("\n");
12238         exit(0);
12239 }
12240 EOCP
12241                 xxx_prompt=y
12242                 set try
12243                 if eval $compile && ./try > /dev/null; then
12244                         dflt=`./try`
12245                         case "$dflt" in
12246                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12247                                 echo "(The test program ran ok.)"
12248                                 echo "byteorder=$dflt"
12249                                 xxx_prompt=n
12250                         ;;
12251                         ????|????????) echo "(The test program ran ok.)" ;;
12252                         *) echo "(The test program didn't run right for some reason.)" ;;
12253                         esac
12254                 else
12255                         dflt='4321'
12256                         cat <<'EOM'
12257 (I can't seem to compile the test program.  Guessing big-endian...)
12258 EOM
12259                 fi
12260                 case "$xxx_prompt" in
12261                 y)
12262                         rp="What is the order of bytes in a long?"
12263                         . ./myread
12264                         byteorder="$ans"
12265                         ;;
12266                 *)      byteorder=$dflt
12267                         ;;
12268                 esac
12269                 ;;
12270         esac
12271         $rm -f try.c try
12272         ;;
12273 esac
12274
12275
12276 : how do we catenate cpp tokens here?
12277 echo " "
12278 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12279 $cat >cpp_stuff.c <<'EOCP'
12280 #define RCAT(a,b)a/**/b
12281 #define ACAT(a,b)a ## b
12282 RCAT(Rei,ser)
12283 ACAT(Cir,cus)
12284 EOCP
12285 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12286 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12287         echo "Oh!  Smells like ANSI's been here." >&4
12288         echo "We can catify or stringify, separately or together!"
12289         cpp_stuff=42
12290 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12291         echo "Ah, yes!  The good old days!" >&4
12292         echo "However, in the good old days we don't know how to stringify and"
12293         echo "catify at the same time."
12294         cpp_stuff=1
12295 else
12296         $cat >&4 <<EOM
12297 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12298 to have to edit the values of CAT[2-5] in config.h...
12299 EOM
12300         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12301 fi
12302 $rm -f cpp_stuff.*
12303
12304 : see if this is a db.h system
12305 set db.h i_db
12306 eval $inhdr
12307
12308 case "$i_db" in
12309 $define)
12310         : Check db version.
12311         echo " "
12312         echo "Checking Berkeley DB version ..." >&4
12313         $cat >try.c <<EOCP
12314 #$d_const HASCONST
12315 #ifndef HASCONST
12316 #define const
12317 #endif
12318 #include <sys/types.h>
12319 #include <stdio.h>
12320 #include <db.h>
12321 int main()
12322 {
12323 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12324     int Major, Minor, Patch ;
12325     unsigned long Version ;
12326     (void)db_version(&Major, &Minor, &Patch) ;
12327     printf("You have Berkeley DB Version 2 or greater\n");
12328
12329     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12330                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12331     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12332                 Major, Minor, Patch) ;
12333
12334     /* check that db.h & libdb are compatible */
12335     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12336         printf("db.h and libdb are incompatible\n") ;
12337         exit(3);        
12338     }
12339
12340     printf("db.h and libdb are compatible\n") ;
12341
12342     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12343                 + DB_VERSION_PATCH ;
12344
12345     /* needs to be >= 2.3.4 */
12346     if (Version < 2003004) {
12347     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12348         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12349         exit(2);        
12350     }
12351
12352     exit(0);
12353 #else
12354 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12355     printf("You have Berkeley DB Version 1\n");
12356     exit(0);    /* DB version < 2: the coast is clear. */
12357 #else
12358     exit(1);    /* <db.h> not Berkeley DB? */
12359 #endif
12360 #endif
12361 }
12362 EOCP
12363         set try
12364         if eval $compile_ok && ./try; then
12365                 echo 'Looks OK.' >&4
12366         else
12367                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12368                 i_db=$undef
12369                 case " $libs " in
12370                 *"-ldb "*)
12371                         : Remove db from list of libraries to use
12372                         echo "Removing unusable -ldb from library list" >&4
12373                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12374                         shift
12375                         libs="$*"
12376                         echo "libs = $libs" >&4
12377                         ;;
12378                 esac
12379         fi
12380         $rm -f try.*
12381         ;;
12382 esac
12383
12384 case "$i_db" in
12385 define)
12386         : Check the return type needed for hash 
12387         echo " "
12388         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12389         $cat >try.c <<EOCP
12390 #$d_const HASCONST
12391 #ifndef HASCONST
12392 #define const
12393 #endif
12394 #include <sys/types.h>
12395 #include <db.h>
12396
12397 #ifndef DB_VERSION_MAJOR
12398 u_int32_t hash_cb (ptr, size)
12399 const void *ptr;
12400 size_t size;
12401 {
12402 }
12403 HASHINFO info;
12404 int main()
12405 {
12406         info.hash = hash_cb;
12407 }
12408 #endif
12409 EOCP
12410         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12411                 if $contains warning try.out >>/dev/null 2>&1 ; then
12412                         db_hashtype='int'
12413                 else
12414                         db_hashtype='u_int32_t'
12415                 fi
12416         else
12417                 : XXX Maybe we should just give up here.
12418                 db_hashtype=u_int32_t
12419                 $cat try.out >&4
12420                 echo "Help:  I can't seem to compile the db test program." >&4
12421                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12422         fi
12423         $rm -f try.*
12424         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12425         ;;
12426 *)      db_hashtype=u_int32_t
12427         ;;
12428 esac
12429 case "$i_db" in
12430 define)
12431         : Check the return type needed for prefix 
12432         echo " "
12433         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12434         cat >try.c <<EOCP
12435 #$d_const HASCONST
12436 #ifndef HASCONST
12437 #define const
12438 #endif
12439 #include <sys/types.h>
12440 #include <db.h>
12441
12442 #ifndef DB_VERSION_MAJOR
12443 size_t prefix_cb (key1, key2)
12444 const DBT *key1;
12445 const DBT *key2;
12446 {
12447 }
12448 BTREEINFO info;
12449 int main()
12450 {
12451         info.prefix = prefix_cb;
12452 }
12453 #endif
12454 EOCP
12455         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12456                 if $contains warning try.out >>/dev/null 2>&1 ; then
12457                         db_prefixtype='int'
12458                 else
12459                         db_prefixtype='size_t'
12460                 fi
12461         else
12462                 db_prefixtype='size_t'
12463                 : XXX Maybe we should just give up here.
12464                 $cat try.out >&4
12465                 echo "Help:  I can't seem to compile the db test program." >&4
12466                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12467         fi
12468         $rm -f try.*
12469         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12470         ;;
12471 *)      db_prefixtype='size_t'
12472         ;;
12473 esac
12474
12475 : check for void type
12476 echo " "
12477 echo "Checking to see how well your C compiler groks the void type..." >&4
12478 case "$voidflags" in
12479 '')
12480         $cat >try.c <<'EOCP'
12481 #if TRY & 1
12482 void sub() {
12483 #else
12484 sub() {
12485 #endif
12486         extern void moo();      /* function returning void */
12487         void (*goo)();          /* ptr to func returning void */
12488 #if TRY & 8
12489         void *hue;              /* generic ptr */
12490 #endif
12491 #if TRY & 2
12492         void (*foo[10])();
12493 #endif
12494
12495 #if TRY & 4
12496         if(goo == moo) {
12497                 exit(0);
12498         }
12499 #endif
12500         exit(0);
12501 }
12502 int main() { sub(); }
12503 EOCP
12504         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12505                 voidflags=$defvoidused
12506         echo "Good.  It appears to support void to the level $package wants.">&4
12507                 if $contains warning .out >/dev/null 2>&1; then
12508                         echo "However, you might get some warnings that look like this:"
12509                         $cat .out
12510                 fi
12511         else
12512 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12513                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12514                         echo "It supports 1..."
12515                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12516                                 echo "It also supports 2..."
12517                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12518                                         voidflags=7
12519                                         echo "And it supports 4 but not 8 definitely."
12520                                 else
12521                                         echo "It doesn't support 4..."
12522                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12523                                                 voidflags=11
12524                                                 echo "But it supports 8."
12525                                         else
12526                                                 voidflags=3
12527                                                 echo "Neither does it support 8."
12528                                         fi
12529                                 fi
12530                         else
12531                                 echo "It does not support 2..."
12532                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12533                                         voidflags=13
12534                                         echo "But it supports 4 and 8."
12535                                 else
12536                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12537                                                 voidflags=5
12538                                                 echo "And it supports 4 but has not heard about 8."
12539                                         else
12540                                                 echo "However it supports 8 but not 4."
12541                                         fi
12542                                 fi
12543                         fi
12544                 else
12545                         echo "There is no support at all for void."
12546                         voidflags=0
12547                 fi
12548         fi
12549 esac
12550 case "$voidflags" in
12551 "$defvoidused") ;;
12552 *)      $cat >&4 <<'EOM'
12553   Support flag bits are:
12554     1: basic void declarations.
12555     2: arrays of pointers to functions returning void.
12556     4: operations between pointers to and addresses of void functions.
12557     8: generic void pointers.
12558 EOM
12559         dflt="$voidflags";
12560         rp="Your void support flags add up to what?"
12561         . ./myread
12562         voidflags="$ans"
12563         ;;
12564 esac
12565 $rm -f try.* .out
12566
12567
12568 : How can we generate normalized random numbers ?
12569 echo " "
12570 echo "Looking for a random number function..." >&4
12571 case "$randfunc" in
12572 '')
12573         if set drand48 val -f; eval $csym; $val; then
12574                 dflt="drand48"
12575                 echo "Good, found drand48()." >&4
12576         elif set random val -f; eval $csym; $val; then
12577                 dflt="random"
12578                 echo "OK, found random()." >&4
12579         else
12580                 dflt="rand"
12581                 echo "Yick, looks like I have to use rand()." >&4
12582         fi
12583         echo " "
12584         ;;
12585 *)
12586         dflt="$randfunc"
12587         ;;
12588 esac
12589 cont=true
12590
12591 case "$ccflags" in
12592 *-Dmy_rand=*|*-Dmy_srand=*)
12593         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12594         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12595         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12596         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12597         ;;
12598 esac
12599
12600 while $test "$cont"; do
12601         rp="Use which function to generate random numbers?"
12602         . ./myread
12603         if $test "$ans" = "$dflt"; then
12604                 : null
12605         else
12606                 randbits=''
12607         fi
12608         randfunc="$ans"
12609         if set $ans val -f; eval $csym; $val; then
12610                 cont=''
12611         else
12612                 dflt=y
12613                 rp="I cannot find function $ans. Use that name anyway?"
12614                 . ./myread
12615                 dflt=rand
12616                 case "$ans" in
12617                         [yY]*) cont='';;
12618                 esac
12619         fi
12620         case "$cont" in
12621         '')
12622                 case "$randfunc" in
12623                 drand48)
12624                         drand01="drand48()"
12625                         seedfunc="srand48"
12626                         randbits=48
12627                         randseedtype=long
12628                         ;;
12629                 rand|random)
12630                         case "$randbits" in
12631                         '')
12632 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12633                                 $cat >try.c <<EOCP
12634 #$i_unistd I_UNISTD
12635 #$i_stdlib I_STDLIB
12636 #include <stdio.h>
12637 #ifdef I_UNISTD
12638 #  include <unistd.h>
12639 #endif
12640 #ifdef I_STDLIB
12641 #  include <stdlib.h>
12642 #endif
12643 int main()
12644 {
12645         register int i;
12646         register unsigned long tmp;
12647         register unsigned long max = 0L;
12648
12649         for (i = 1000; i; i--) {
12650                 tmp = (unsigned long) $randfunc();
12651                 if (tmp > max) max = tmp;
12652         }
12653         for (i = 0; max; i++)
12654                 max /= 2;
12655         printf("%d\n",i);
12656 }
12657 EOCP
12658                                 set try
12659                                 if eval $compile_ok; then
12660                                         dflt=`try`
12661                                 else
12662                                         dflt='?'
12663                                         echo "(I can't seem to compile the test program...)"
12664                                 fi
12665                                 ;;
12666                         *)
12667                                 dflt="$randbits"
12668                                 ;;
12669                         esac
12670                         rp="How many bits does your $randfunc() function produce?"
12671                         . ./myread
12672                         randbits="$ans"
12673                         $rm -f try.c try
12674                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12675                         seedfunc="s$randfunc"
12676                         randseedtype=unsigned
12677                         ;;
12678                 *)
12679                         dflt="31"
12680                         rp="How many bits does your $randfunc() function produce?"
12681                         . ./myread
12682                         randbits="$ans"
12683                         seedfunc="s$randfunc"
12684                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12685                         if set $seedfunc val -f; eval $csym; $val; then
12686                                 echo "(Using $seedfunc() to seed random generator)"
12687                         else
12688                                 echo "(Warning: no $seedfunc() to seed random generator)"
12689                                 seedfunc=rand
12690                         fi
12691                         randseedtype=unsigned
12692                         ;;
12693                 esac
12694                 ;;
12695         esac
12696 done
12697
12698 echo " "
12699 echo "Determining whether or not we are on an EBCDIC system..." >&4
12700 $cat >tebcdic.c <<'EOM'
12701 int main()
12702 {
12703   if ('M'==0xd4) return 0;
12704   return 1;
12705 }
12706 EOM
12707
12708 val=$undef
12709 set tebcdic
12710 if eval $compile_ok; then
12711         if ./tebcdic; then
12712                 echo "You have EBCDIC." >&4
12713                 val="$define"
12714         else
12715                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12716         fi
12717 else
12718         echo "I'm unable to compile the test program." >&4
12719         echo "I'll assume ASCII or some ISO Latin." >&4
12720 fi
12721 $rm -f tebcdic.c tebcdic
12722 set ebcdic
12723 eval $setvar
12724
12725 echo " "
12726 $cat >&4 <<EOM
12727 Checking how to flush all pending stdio output...
12728 EOM
12729 # I only know how to find the first 32 possibly open files on SunOS.
12730 # See also hints/sunos_4_1.sh and util.c  --AD
12731 case "$osname" in
12732 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12733 esac
12734 $cat >>try.c <<EOCP
12735 #include <stdio.h>
12736 #$i_unistd I_UNISTD
12737 #ifdef I_UNISTD
12738 # include <unistd.h>
12739 #endif
12740 #$d_sysconf HAS_SYSCONF
12741 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12742 #ifdef HAS_STDIO_STREAM_ARRAY
12743 # define STDIO_STREAM_ARRAY $stdio_stream_array
12744 #endif
12745 int main() {
12746   FILE* p = fopen("try.out", "w");
12747 #ifdef TRY_FPUTC
12748   fputc('x', p);
12749 #else
12750 # ifdef TRY_FPRINTF
12751   fprintf(p, "x");
12752 # endif
12753 #endif
12754 #ifdef TRY_FFLUSH_NULL
12755   fflush(NULL);
12756 #endif
12757 #ifdef TRY_FFLUSH_ALL
12758   {
12759     long open_max = -1;
12760 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12761     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12762 # else
12763 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12764     open_max = sysconf(_SC_OPEN_MAX);
12765 #  else
12766 #   ifdef FOPEN_MAX
12767     open_max = FOPEN_MAX;
12768 #   else
12769 #    ifdef OPEN_MAX
12770     open_max = OPEN_MAX;
12771 #    else
12772 #     ifdef _NFILE
12773     open_max = _NFILE;
12774 #     endif
12775 #    endif
12776 #   endif
12777 #  endif
12778 # endif 
12779 # ifdef HAS_STDIO_STREAM_ARRAY
12780     if (open_max > 0) {
12781       long i;
12782       for (i = 0; i < open_max; i++)
12783             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12784                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12785                 STDIO_STREAM_ARRAY[i]._flag)
12786                 fflush(&STDIO_STREAM_ARRAY[i]);
12787     }   
12788   }
12789 # endif
12790 #endif
12791   _exit(42);
12792 }
12793 EOCP
12794 : first we have to find out how _not_ to flush
12795 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12796     output=''
12797     set try -DTRY_FPUTC
12798     if eval $compile; then
12799             $rm -f try.out
12800             ./try$exe_ext 2>/dev/null
12801             if $test ! -s try.out -a "X$?" = X42; then
12802                 output=-DTRY_FPUTC
12803             fi
12804     fi
12805     case "$output" in
12806     '')
12807             set try -DTRY_FPRINTF
12808             $rm -f try.out
12809             if eval $compile; then
12810                     $rm -f try.out
12811                     ./try$exe_ext 2>/dev/null
12812                     if $test ! -s try.out -a "X$?" = X42; then
12813                         output=-DTRY_FPRINTF
12814                     fi
12815             fi
12816         ;;
12817     esac
12818 fi
12819 : check for fflush NULL behaviour
12820 case "$fflushNULL" in
12821 '')     set try -DTRY_FFLUSH_NULL $output
12822         if eval $compile; then
12823                 $rm -f try.out
12824                 ./try$exe_ext 2>/dev/null
12825                 code="$?"
12826                 if $test -s try.out -a "X$code" = X42; then
12827                         fflushNULL="`$cat try.out`"
12828                 else
12829                         if $test "X$code" != X42; then
12830                                 $cat >&4 <<EOM
12831 (If this test failed, don't worry, we'll try another method shortly.)
12832 EOM
12833                         fi
12834                 fi
12835         fi
12836         $rm -f core try.core core.try.*
12837         case "$fflushNULL" in
12838         x)      $cat >&4 <<EOM
12839 Your fflush(NULL) works okay for output streams.
12840 Let's see if it clobbers input pipes...
12841 EOM
12842 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12843 # bug that improperly flushes the input end of pipes.  So we avoid the
12844 # autoflush on fork/system/exec support for now. :-(
12845 $cat >tryp.c <<EOCP
12846 #include <stdio.h>
12847 int
12848 main(int argc, char **argv)
12849 {
12850     char buf[1024];
12851     int i;
12852     char *bp = buf;
12853     while (1) {
12854         while ((i = getc(stdin)) != -1
12855                && (*bp++ = i) != '\n'
12856                && bp < &buf[1024])
12857         /* DO NOTHING */ ;
12858         *bp = '\0';
12859         fprintf(stdout, "%s", buf);
12860         fflush(NULL);
12861         if (i == -1)
12862             return 0;
12863         bp = buf;
12864     }
12865 }
12866 EOCP
12867                 fflushNULL="$define"
12868                 set tryp
12869                 if eval $compile; then
12870                     $rm -f tryp.out
12871                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12872                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12873                        $cat >&4 <<EOM
12874 fflush(NULL) seems to behave okay with input streams.
12875 EOM
12876                         fflushNULL="$define"
12877                     else
12878                         $cat >&4 <<EOM
12879 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12880 EOM
12881                         fflushNULL="$undef"
12882                     fi
12883                 fi
12884                 $rm -f core tryp.c tryp.core core.tryp.*
12885                 ;;
12886         '')     $cat >&4 <<EOM
12887 Your fflush(NULL) isn't working (contrary to ANSI C).
12888 EOM
12889                 fflushNULL="$undef"
12890                 ;;
12891         *)      $cat >&4 <<EOM
12892 Cannot figure out whether your fflush(NULL) works or not.
12893 I'm assuming it doesn't (contrary to ANSI C).
12894 EOM
12895                 fflushNULL="$undef"
12896                 ;;
12897         esac
12898         ;;
12899 $define|true|[yY]*)
12900         fflushNULL="$define"
12901         ;;
12902 *)
12903         fflushNULL="$undef"
12904         ;;
12905 esac
12906 : check explicit looping only if NULL did not work, and if the pipe
12907 : bug does not show up on an explicit flush too
12908 case "$fflushNULL" in
12909 "$undef")
12910         $cat >tryp.c <<EOCP
12911 #include <stdio.h>
12912 int
12913 main(int argc, char **argv)
12914 {
12915     char buf[1024];
12916     int i;
12917     char *bp = buf;
12918     while (1) {
12919         while ((i = getc(stdin)) != -1
12920                && (*bp++ = i) != '\n'
12921                && bp < &buf[1024])
12922         /* DO NOTHING */ ;
12923         *bp = '\0';
12924         fprintf(stdout, "%s", buf);
12925         fflush(stdin);
12926         if (i == -1)
12927             return 0;
12928         bp = buf;
12929     }
12930 }
12931 EOCP
12932         set tryp
12933         if eval $compile; then
12934             $rm -f tryp.out
12935             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12936             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12937                $cat >&4 <<EOM
12938 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12939 EOM
12940                 : now check for fflushall behaviour
12941                 case "$fflushall" in
12942                 '')     set try -DTRY_FFLUSH_ALL $output
12943                         if eval $compile; then
12944                                 $cat >&4 <<EOM
12945 (Now testing the other method--but note that this also may fail.)
12946 EOM
12947                                 $rm -f try.out
12948                                 ./try$exe_ext 2>/dev/null
12949                                 if $test -s try.out -a "X$?" = X42; then
12950                                         fflushall="`$cat try.out`"
12951                                 fi
12952                         fi
12953                         $rm -f core try.core core.try.*
12954                         case "$fflushall" in
12955                         x)      $cat >&4 <<EOM
12956 Whew. Flushing explicitly all the stdio streams works.
12957 EOM
12958                                 fflushall="$define"
12959                                 ;;
12960                         '')     $cat >&4 <<EOM
12961 Sigh. Flushing explicitly all the stdio streams doesn't work.
12962 EOM
12963                                 fflushall="$undef"
12964                                 ;;
12965                         *)      $cat >&4 <<EOM
12966 Cannot figure out whether flushing stdio streams explicitly works or not.
12967 I'm assuming it doesn't.
12968 EOM
12969                                 fflushall="$undef"
12970                                 ;;
12971                         esac
12972                         ;;
12973                 "$define"|true|[yY]*)
12974                         fflushall="$define"
12975                         ;;
12976                 *)
12977                         fflushall="$undef"
12978                         ;;
12979                 esac
12980             else
12981                 $cat >&4 <<EOM
12982 All is futile.  Even fflush(stdin) clobbers input pipes!
12983 EOM
12984                 fflushall="$undef"
12985             fi
12986         else
12987             fflushall="$undef"
12988         fi
12989         $rm -f core tryp.c tryp.core core.tryp.*
12990         ;;
12991 *)      fflushall="$undef"
12992         ;;
12993 esac
12994
12995 case "$fflushNULL$fflushall" in
12996 undefundef)
12997         $cat <<EOM
12998 OK, I give up.  I cannot figure out how to flush pending stdio output.
12999 We won't be flushing handles at all before fork/exec/popen.
13000 EOM
13001         ;;
13002 esac
13003 $rm -f try.* try$exe_ext
13004
13005 : Store the full pathname to the ar program for use in the C program
13006 : Respect a hint or command line value for full_ar.
13007 case "$full_ar" in
13008 '') full_ar=$ar ;;
13009 esac
13010
13011 : Store the full pathname to the sed program for use in the C program
13012 full_sed=$sed
13013
13014 : see what type gids are declared as in the kernel
13015 echo " "
13016 echo "Looking for the type for group ids returned by getgid()."
13017 set gid_t gidtype xxx stdio.h sys/types.h
13018 eval $typedef
13019 case "$gidtype" in
13020 xxx)
13021         xxx=`./findhdr sys/user.h`
13022         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
13023         case $1 in
13024         unsigned) dflt="$1 $2" ;;
13025         *) dflt="$1" ;;
13026         esac
13027         ;;
13028 *) dflt="$gidtype";;
13029 esac
13030 case "$gidtype" in
13031 gid_t) echo "gid_t found." ;;
13032 *)      rp="What is the type for group ids returned by getgid()?"
13033         . ./myread
13034         gidtype="$ans"
13035         ;;
13036 esac
13037
13038 echo " "
13039 case "$gidtype" in
13040 *_t) zzz="$gidtype"     ;;
13041 *)   zzz="gid"          ;;
13042 esac
13043 echo "Checking the size of $zzz..." >&4 
13044 cat > try.c <<EOCP
13045 #include <sys/types.h>
13046 #include <stdio.h>
13047 int main() {
13048     printf("%d\n", (int)sizeof($gidtype));
13049     exit(0);
13050 }
13051 EOCP
13052 set try
13053 if eval $compile_ok; then
13054         yyy=`./try`
13055         case "$yyy" in
13056         '')     gidsize=4
13057                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13058                 ;;
13059         *)      gidsize=$yyy
13060                 echo "Your $zzz is $gidsize bytes long."
13061                 ;;
13062         esac
13063 else
13064         gidsize=4
13065         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13066 fi
13067
13068
13069 echo " "
13070 case "$gidtype" in
13071 *_t) zzz="$gidtype"     ;;
13072 *)   zzz="gid"          ;;
13073 esac
13074 echo "Checking the sign of $zzz..." >&4 
13075 cat > try.c <<EOCP
13076 #include <sys/types.h>
13077 #include <stdio.h>
13078 int main() {
13079         $gidtype foo = -1;
13080         if (foo < 0)
13081                 printf("-1\n");
13082         else
13083                 printf("1\n");
13084 }
13085 EOCP
13086 set try
13087 if eval $compile; then
13088         yyy=`./try`
13089         case "$yyy" in
13090         '')     gidsign=1
13091                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13092                 ;;
13093         *)      gidsign=$yyy
13094                 case "$gidsign" in
13095                  1) echo "Your $zzz is unsigned." ;;
13096                 -1) echo "Your $zzz is signed."   ;;
13097                 esac
13098                 ;;
13099         esac
13100 else
13101         gidsign=1
13102         echo "(I can't compile the test program--guessing unsigned.)" >&4
13103 fi
13104
13105
13106 echo " "
13107
13108 if $test X"$quadtype" != X; then
13109
13110 echo "Checking how to print 64-bit integers..." >&4
13111
13112 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13113         $cat >try.c <<'EOCP'
13114 #include <sys/types.h>
13115 #include <stdio.h>
13116 int main() {
13117   int q = 12345678901;
13118   printf("%ld\n", q);
13119 }
13120 EOCP
13121         set try
13122         if eval $compile; then
13123                 yyy=`./try$exe_ext`
13124                 case "$yyy" in
13125                 12345678901)
13126                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13127                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
13128                         echo "We will use %d."
13129                         ;;
13130                 esac
13131         fi
13132 fi
13133
13134 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13135         $cat >try.c <<'EOCP'
13136 #include <sys/types.h>
13137 #include <stdio.h>
13138 int main() {
13139   long q = 12345678901;
13140   printf("%ld\n", q);
13141 }
13142 EOCP
13143         set try
13144         if eval $compile; then
13145                 yyy=`./try$exe_ext`
13146                 case "$yyy" in
13147                 12345678901)
13148                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13149                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
13150                         echo "We will use %ld."
13151                         ;;
13152                 esac
13153         fi
13154 fi
13155
13156 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13157         $cat >try.c <<'EOCP'
13158 #include <sys/types.h>
13159 #include <inttypes.h>
13160 #include <stdio.h>
13161 int main() {
13162   int64_t q = 12345678901;
13163   printf("%" PRId64 "\n", q);
13164 }
13165 EOCP
13166         set try
13167         if eval $compile; then
13168                 yyy=`./try$exe_ext`
13169                 case "$yyy" in
13170                 12345678901)
13171                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13172                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
13173                         echo "We will use the C9X style."
13174                         ;;
13175                 esac
13176         fi
13177 fi
13178
13179 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13180         $cat >try.c <<'EOCP'
13181 #include <sys/types.h>
13182 #include <stdio.h>
13183 int main() {
13184   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
13185   printf("%lld\n", q);
13186 }
13187 EOCP
13188         set try
13189         if eval $compile; then
13190                 yyy=`./try$exe_ext`
13191                 case "$yyy" in
13192                 12345678901)
13193                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13194                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
13195                         echo "We will use the %lld style."
13196                         ;;
13197                 esac
13198         fi
13199 fi
13200
13201 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13202         $cat >try.c <<EOCP
13203 #include <sys/types.h>
13204 #include <stdio.h>
13205 int main() {
13206   $quadtype q = 12345678901;
13207   printf("%Ld\n", q);
13208 }
13209 EOCP
13210         set try
13211         if eval $compile; then
13212                 yyy=`./try$exe_ext`
13213                 case "$yyy" in
13214                 12345678901)
13215                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13216                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
13217                         echo "We will use %Ld."
13218                         ;;
13219                 esac
13220         fi
13221 fi
13222
13223 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13224         $cat >try.c <<EOCP
13225 #include <sys/types.h>
13226 #include <stdio.h>
13227 int main() {
13228   $quadtype q = 12345678901;
13229   printf("%qd\n", q);
13230 }
13231 EOCP
13232         set try
13233         if eval $compile; then
13234                 yyy=`./try$exe_ext`
13235                 case "$yyy" in
13236                 12345678901)
13237                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13238                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
13239                         echo "We will use %qd."
13240                         ;;
13241                 esac
13242         fi
13243 fi
13244
13245 if $test X"$sPRId64" = X; then
13246         echo "Cannot figure out how to print 64-bit integers." >&4
13247 fi
13248
13249 $rm -f try try.*
13250
13251 fi
13252
13253 case "$sPRId64" in
13254 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13255         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
13256         ;;
13257 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13258         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
13259         ;;
13260 esac
13261
13262
13263 echo " "
13264 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13265
13266 if $test X"$ivsize" = X8; then
13267         ivdformat="$sPRId64"
13268         uvuformat="$sPRIu64"
13269         uvoformat="$sPRIo64"
13270         uvxformat="$sPRIx64"
13271         uvXformat="$sPRIX64"
13272 else
13273         if $test X"$ivsize" = X"$longsize"; then
13274                 ivdformat='"ld"'
13275                 uvuformat='"lu"'
13276                 uvoformat='"lo"'
13277                 uvxformat='"lx"'
13278                 uvXformat='"lX"'
13279         else
13280                 if $test X"$ivsize" = X"$intsize"; then
13281                         ivdformat='"d"'
13282                         uvuformat='"u"'
13283                         uvoformat='"o"'
13284                         uvxformat='"x"'
13285                         uvXformat='"X"'
13286                 else
13287                         : far out
13288                         if $test X"$ivsize" = X"$shortsize"; then
13289                                 ivdformat='"hd"'
13290                                 uvuformat='"hu"'
13291                                 uvoformat='"ho"'
13292                                 uvxformat='"hx"'
13293                                 uvXformat='"hX"'
13294                         fi
13295                 fi
13296         fi
13297 fi
13298
13299 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13300         nveformat="$sPRIeldbl"
13301         nvfformat="$sPRIfldbl"
13302         nvgformat="$sPRIgldbl"
13303         nvEformat="$sPRIEldbl"
13304         nvFformat="$sPRIFldbl"
13305         nvGformat="$sPRIGldbl"
13306 else
13307         nveformat='"e"'
13308         nvfformat='"f"'
13309         nvgformat='"g"'
13310         nvEformat='"E"'
13311         nvFformat='"F"'
13312         nvGformat='"G"'
13313 fi
13314
13315 case "$ivdformat" in
13316 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13317     exit 1
13318     ;;
13319 esac
13320
13321
13322 echo " "
13323 $echo "Checking the format string to be used for gids..." >&4
13324
13325 case "$gidsign" in
13326 -1)     if $test X"$gidsize" = X"$ivsize"; then
13327                 gidformat="$ivdformat"
13328         else
13329                 if $test X"$gidsize" = X"$longsize"; then
13330                         gidformat='"ld"'
13331                 else
13332                         if $test X"$gidsize" = X"$intsize"; then
13333                                 gidformat='"d"'
13334                         else
13335                                 if $test X"$gidsize" = X"$shortsize"; then
13336                                         gidformat='"hd"'
13337                                 fi
13338                         fi
13339                 fi
13340         fi
13341         ;;
13342 *)      if $test X"$gidsize" = X"$uvsize"; then
13343                 gidformat="$uvuformat"
13344         else
13345                 if $test X"$gidsize" = X"$longsize"; then
13346                         gidformat='"lu"'
13347                 else
13348                         if $test X"$gidsize" = X"$intsize"; then
13349                                 gidformat='"u"'
13350                         else
13351                                 if $test X"$gidsize" = X"$shortsize"; then
13352                                         gidformat='"hu"'
13353                                 fi
13354                         fi
13355                 fi
13356         fi
13357         ;;
13358 esac
13359
13360 : see if getgroups exists
13361 set getgroups d_getgrps
13362 eval $inlibc
13363
13364 : see if setgroups exists
13365 set setgroups d_setgrps
13366 eval $inlibc
13367
13368
13369 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13370 echo " "
13371 case "$d_getgrps$d_setgrps" in
13372 *define*)
13373         case "$groupstype" in
13374         '') dflt="$gidtype" ;;
13375         *)  dflt="$groupstype" ;;
13376         esac
13377         $cat <<EOM
13378 What type of pointer is the second argument to getgroups() and setgroups()?
13379 Usually this is the same as group ids, $gidtype, but not always.
13380
13381 EOM
13382         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13383         . ./myread
13384         groupstype="$ans"
13385         ;;
13386 *)  groupstype="$gidtype";;
13387 esac
13388
13389 echo " "
13390 echo "Checking if your $make program sets \$(MAKE)..." >&4
13391 case "$make_set_make" in
13392 '')
13393         $sed 's/^X //' > testmake.mak << 'EOF'
13394 Xall:
13395 X       @echo 'maketemp="$(MAKE)"'
13396 EOF
13397         case "`$make -f testmake.mak 2>/dev/null`" in
13398         *maketemp=*) make_set_make='#' ;;
13399         *)      make_set_make="MAKE=$make" ;;
13400         esac
13401         $rm -f testmake.mak
13402         ;;
13403 esac
13404 case "$make_set_make" in
13405 '#') echo "Yup, it does.";;
13406 *) echo "Nope, it doesn't.";;
13407 esac
13408
13409 : see what type is used for mode_t
13410 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13411 set mode_t modetype int stdio.h sys/types.h
13412 eval $typedef_ask
13413
13414 : define a fucntion to check prototypes
13415 $cat > protochk <<EOSH
13416 $startsh
13417 cc="$cc"
13418 optimize="$optimize"
13419 ccflags="$ccflags"
13420 prototype="$prototype"
13421 define="$define"
13422 rm=$rm
13423 EOSH
13424
13425 $cat >> protochk <<'EOSH'
13426
13427 $rm -f try.c
13428 foo="$1"
13429 shift
13430 while test $# -ge 2; do
13431         case "$1" in
13432                 $define) echo "#include <$2>" >> try.c ;;
13433                 literal) echo "$2" >> try.c ;;
13434         esac
13435     shift 2
13436 done
13437 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13438 cat >> try.c <<'EOCP'
13439 #ifdef CAN_PROTOTYPE
13440 #define _(args) args
13441 #else
13442 #define _(args) ()
13443 #endif
13444 EOCP
13445 echo "$foo" >> try.c
13446 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13447 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13448 status=$?
13449 $rm -f try.[co]
13450 exit $status
13451 EOSH
13452 chmod +x protochk
13453 $eunicefix protochk
13454
13455 : see what type is used for size_t
13456 rp="What is the type used for the length parameter for string functions?"
13457 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13458 eval $typedef_ask
13459
13460 : check for type of arguments to gethostbyaddr. 
13461 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13462         case "$d_gethbyaddr" in
13463         $define)
13464                 $cat <<EOM
13465
13466 Checking to see what type of arguments are accepted by gethostbyaddr().
13467 EOM
13468                 hdrs="$define sys/types.h
13469                         $d_socket sys/socket.h 
13470                         $i_niin netinet/in.h 
13471                         $i_netdb netdb.h
13472                         $i_unistd unistd.h"
13473                 : The first arg can 'char *' or 'void *'
13474                 : The second arg is some of integral type
13475                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13476                         for yyy in size_t long int; do
13477                                 case "$netdb_host_type" in
13478                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13479                                         if ./protochk "$try" $hdrs; then
13480                                                 echo "Your system accepts $xxx for the first arg."
13481                                                 echo "...and $yyy for the second arg."
13482                                                 netdb_host_type="$xxx"
13483                                                 netdb_hlen_type="$yyy"
13484                                         fi
13485                                         ;;
13486                                 esac
13487                         done
13488                 done
13489                 : In case none of those worked, prompt the user.
13490                 case "$netdb_host_type" in
13491                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13492                         dflt='char *'
13493                         . ./myread
13494                         netdb_host_type=$ans
13495                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13496                         dflt="$sizetype"
13497                         . ./myread
13498                         netdb_hlen_type=$ans
13499                         ;;
13500                 esac
13501                 ;;
13502         *)      : no gethostbyaddr, so pick harmless defaults
13503                 netdb_host_type='char *'
13504                 netdb_hlen_type="$sizetype"
13505                 ;;
13506         esac
13507         # Remove the "const" if needed. -- but then we'll have a 
13508         # prototype clash!
13509         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13510 fi
13511
13512 : check for type of argument to gethostbyname. 
13513 if test "X$netdb_name_type" = X ; then
13514         case "$d_gethbyname" in
13515         $define)
13516                 $cat <<EOM
13517
13518 Checking to see what type of argument is accepted by gethostbyname().
13519 EOM
13520                 hdrs="$define sys/types.h
13521                         $d_socket sys/socket.h 
13522                         $i_niin netinet/in.h 
13523                         $i_netdb netdb.h
13524                         $i_unistd unistd.h"
13525                 for xxx in "const char *" "char *"; do
13526                         case "$netdb_name_type" in
13527                         '')     try="extern struct hostent *gethostbyname($xxx);"
13528                                 if ./protochk "$try" $hdrs; then
13529                                         echo "Your system accepts $xxx."
13530                                         netdb_name_type="$xxx"
13531                                 fi
13532                                 ;;
13533                         esac
13534                 done
13535                 : In case none of those worked, prompt the user.
13536                 case "$netdb_name_type" in
13537                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13538                         dflt='char *'
13539                         . ./myread
13540                         netdb_name_type=$ans
13541                         ;;
13542                 esac
13543                 ;;
13544         *)      : no gethostbyname, so pick harmless default
13545                 netdb_name_type='char *'
13546                 ;;
13547         esac
13548 fi
13549
13550 : check for type of 1st argument to getnetbyaddr. 
13551 if test "X$netdb_net_type" = X ; then
13552         case "$d_getnbyaddr" in
13553         $define)
13554                 $cat <<EOM
13555
13556 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13557 EOM
13558                 hdrs="$define sys/types.h
13559                         $d_socket sys/socket.h 
13560                         $i_niin netinet/in.h 
13561                         $i_netdb netdb.h
13562                         $i_unistd unistd.h"
13563                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13564                         case "$netdb_net_type" in
13565                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13566                                 if ./protochk "$try" $hdrs; then
13567                                         echo "Your system accepts $xxx."
13568                                         netdb_net_type="$xxx"
13569                                 fi
13570                                 ;;
13571                         esac
13572                 done
13573                 : In case none of those worked, prompt the user.
13574                 case "$netdb_net_type" in
13575                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13576                         dflt='long'
13577                         . ./myread
13578                         netdb_net_type=$ans
13579                         ;;
13580                 esac
13581                 ;;
13582         *)      : no getnetbyaddr, so pick harmless default
13583                 netdb_net_type='long'
13584                 ;;
13585         esac
13586 fi
13587 : locate the preferred pager for this system
13588 case "$pager" in
13589 '')
13590         dflt=''
13591         case "$pg" in
13592         /*) dflt=$pg;;
13593         esac
13594         case "$more" in
13595         /*) dflt=$more;;
13596         esac
13597         case "$less" in
13598         /*) dflt=$less;;
13599         esac
13600         case "$dflt" in
13601         '') dflt=/usr/ucb/more;;
13602         esac
13603         ;;
13604 *) dflt="$pager";;
13605 esac
13606 echo " "
13607 fn=f/
13608 rp='What pager is used on your system?'
13609 . ./getfile
13610 pager="$ans"
13611
13612 : see what type pids are declared as in the kernel
13613 rp="What is the type of process ids on this system?"
13614 set pid_t pidtype int stdio.h sys/types.h
13615 eval $typedef_ask
13616
13617 : Find earliest binary compatible site_perl subdirectory perl can use.
13618 case "$bincompat5005" in
13619 "$define") xs_apiversion='5.005' ;;
13620 *) xs_apiversion=$version ;;   # The current site_perl version.
13621 esac
13622 : Find earliest pure perl site_perl subdirectory perl can use.
13623 : The versioned directories started at 5.005.
13624 pm_apiversion='5.005'
13625
13626 : check for length of pointer
13627 echo " "
13628 case "$ptrsize" in
13629 '')
13630         echo "Checking to see how big your pointers are..." >&4
13631         if test "$voidflags" -gt 7; then
13632                 echo '#define VOID_PTR char *' > try.c
13633         else
13634                 echo '#define VOID_PTR void *' > try.c
13635         fi
13636         $cat >>try.c <<'EOCP'
13637 #include <stdio.h>
13638 int main()
13639 {
13640     printf("%d\n", (int)sizeof(VOID_PTR));
13641     exit(0);
13642 }
13643 EOCP
13644         set try
13645         if eval $compile_ok; then
13646                 ptrsize=`./try`
13647                 echo "Your pointers are $ptrsize bytes long."
13648         else
13649                 dflt='4'
13650                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13651                 rp="What is the size of a pointer (in bytes)?"
13652                 . ./myread
13653                 ptrsize="$ans"
13654         fi
13655         ;;
13656 esac
13657 $rm -f try.c try
13658
13659 : see if ar generates random libraries by itself
13660 echo " "
13661 echo "Checking how to generate random libraries on your machine..." >&4
13662 echo 'int bar1() { return bar2(); }' > bar1.c
13663 echo 'int bar2() { return 2; }' > bar2.c
13664 $cat > foo.c <<'EOP'
13665 int main() { printf("%d\n", bar1()); exit(0); }
13666 EOP
13667 $cc $ccflags -c bar1.c >/dev/null 2>&1
13668 $cc $ccflags -c bar2.c >/dev/null 2>&1
13669 $cc $ccflags -c foo.c >/dev/null 2>&1
13670 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13671 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13672         ./foobar >/dev/null 2>&1; then
13673         echo "$ar appears to generate random libraries itself."
13674         orderlib=false
13675         ranlib=":"
13676 elif $ar ts bar$_a >/dev/null 2>&1 &&
13677         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13678         ./foobar >/dev/null 2>&1; then
13679                 echo "a table of contents needs to be added with '$ar ts'."
13680                 orderlib=false
13681                 ranlib="$ar ts"
13682 else
13683         case "$ranlib" in
13684         :) ranlib='';;
13685         '')
13686                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13687                 $test -f $ranlib || ranlib=''
13688                 ;;
13689         esac
13690         if $test -n "$ranlib"; then
13691                 echo "your system has '$ranlib'; we'll use that."
13692                 orderlib=false
13693         else
13694                 echo "your system doesn't seem to support random libraries"
13695                 echo "so we'll use lorder and tsort to order the libraries."
13696                 orderlib=true
13697                 ranlib=":"
13698         fi
13699 fi
13700 $rm -f foo* bar* 
13701
13702 : check for type of arguments to select. 
13703 case "$selecttype" in
13704 '') case "$d_select" in
13705         $define)
13706                 echo " "
13707                 $cat <<EOM
13708 Checking to see what type of arguments are accepted by select().
13709 EOM
13710                 hdrs="$define sys/types.h
13711                         $i_systime sys/time.h 
13712                         $i_sysselct sys/select.h
13713                         $d_socket sys/socket.h"
13714                 : The first arg can be int, unsigned, or size_t
13715                 : The last arg may or may not be 'const'
13716                 val=''
13717                 : void pointer has been seen but using that
13718                 : breaks the selectminbits test
13719                 for xxx in 'fd_set *' 'int *'; do
13720                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13721                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13722                                         case "$val" in
13723                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13724                                                 if ./protochk "$try" $hdrs; then
13725                                                         echo "Your system accepts $xxx."
13726                                                         val="$xxx"
13727                                                 fi
13728                                                 ;;
13729                                         esac
13730                                 done
13731                         done
13732                 done
13733                 case "$val" in
13734                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13735                         case "$d_fd_set" in
13736                                 $define) dflt="fd_set *" ;;
13737                                 *)              dflt="int *" ;;
13738                         esac
13739                         . ./myread
13740                         val=$ans
13741                         ;;
13742                 esac
13743                 selecttype="$val"
13744                 ;;
13745         *)      : no select, so pick a harmless default
13746                 selecttype='int *'
13747                 ;;
13748         esac
13749         ;;
13750 esac
13751
13752 : check for the select 'width'
13753 case "$selectminbits" in
13754 '') case "$d_select" in
13755         $define)
13756                 $cat <<EOM
13757
13758 Checking to see on how many bits at a time your select() operates...
13759 EOM
13760                 $cat >try.c <<EOCP
13761 #include <sys/types.h>
13762 #$i_time I_TIME
13763 #$i_systime I_SYS_TIME
13764 #$i_systimek I_SYS_TIME_KERNEL
13765 #ifdef I_TIME
13766 #   include <time.h>
13767 #endif
13768 #ifdef I_SYS_TIME
13769 #   ifdef I_SYS_TIME_KERNEL
13770 #       define KERNEL
13771 #   endif
13772 #   include <sys/time.h>
13773 #   ifdef I_SYS_TIME_KERNEL
13774 #       undef KERNEL
13775 #   endif
13776 #endif
13777 #$i_sysselct I_SYS_SELECT
13778 #ifdef I_SYS_SELECT
13779 #include <sys/select.h>
13780 #endif
13781 #$d_socket HAS_SOCKET
13782 #ifdef HAS_SOCKET
13783 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13784 #endif
13785 #include <stdio.h>
13786 $selecttype b;
13787 #define S sizeof(*(b))
13788 #define MINBITS 64
13789 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13790 #define NBITS  (NBYTES * 8)
13791 int main() {
13792     char s[NBYTES];
13793     struct timeval t;
13794     int i;
13795     FILE* fp;
13796     int fd;
13797
13798     fclose(stdin);
13799     fp = fopen("try.c", "r");
13800     if (fp == 0)
13801       exit(1);
13802     fd = fileno(fp);
13803     if (fd < 0)
13804       exit(2);
13805     b = ($selecttype)s;
13806     for (i = 0; i < NBITS; i++)
13807         FD_SET(i, b);
13808     t.tv_sec  = 0;
13809     t.tv_usec = 0;
13810     select(fd + 1, b, 0, 0, &t);
13811     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13812     printf("%d\n", i + 1);
13813     return 0;
13814 }
13815 EOCP
13816                 set try
13817                 if eval $compile_ok; then
13818                         selectminbits=`./try`
13819                         case "$selectminbits" in
13820                         '')     cat >&4 <<EOM
13821 Cannot figure out on how many bits at a time your select() operates.
13822 I'll play safe and guess it is 32 bits.
13823 EOM
13824                                 selectminbits=32
13825                                 bits="32 bits"
13826                                 ;;
13827                         1)      bits="1 bit" ;;
13828                         *)      bits="$selectminbits bits" ;;
13829                         esac
13830                         echo "Your select() operates on $bits at a time." >&4
13831                 else
13832                         rp='What is the minimum number of bits your select() operates on?'
13833                         case "$byteorder" in
13834                         1234|12345678)  dflt=32 ;;
13835                         *)              dflt=1  ;;
13836                         esac
13837                         . ./myread
13838                         val=$ans
13839                         selectminbits="$val"
13840                 fi
13841                 $rm -f try.* try
13842                 ;;
13843         *)      : no select, so pick a harmless default
13844                 selectminbits='32'
13845                 ;;
13846         esac
13847         ;;
13848 esac
13849
13850 : Trace out the files included by signal.h, then look for SIGxxx names.
13851 : Remove SIGARRAYSIZE used by HPUX.
13852 : Remove SIGSTKSIZE used by Linux.
13853 : Remove SIGSTKSZ used by Posix.
13854 : Remove SIGTYP void lines used by OS2.
13855 : Some cpps, like os390, dont give the file name anywhere
13856 if [ "X$fieldn" = X ]; then
13857         : Just make some guesses.  We check them later.
13858         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13859 else
13860         xxx=`echo '#include <signal.h>' |
13861         $cppstdin $cppminus $cppflags 2>/dev/null |
13862         $grep '^[       ]*#.*include' | 
13863         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13864 fi
13865 : Check this list of files to be sure we have parsed the cpp output ok.
13866 : This will also avoid potentially non-existent files, such 
13867 : as ../foo/bar.h
13868 xxxfiles=''
13869 for xx in $xxx /dev/null ; do
13870         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13871 done
13872 : If we have found no files, at least try signal.h
13873 case "$xxxfiles" in
13874 '')     xxxfiles=`./findhdr signal.h` ;;
13875 esac
13876 xxx=`awk '
13877 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13878         print substr($2, 4, 20)
13879 }
13880 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13881         print substr($3, 4, 20)
13882 }' $xxxfiles`
13883 : Append some common names just in case the awk scan failed.
13884 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13885 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13886 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13887 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13888 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13889
13890 : generate a few handy files for later
13891 $cat > signal.c <<'EOCP'
13892 #include <sys/types.h>
13893 #include <signal.h>
13894 #include <stdio.h>
13895 int main() {
13896
13897 /* Strange style to avoid deeply-nested #if/#else/#endif */
13898 #ifndef NSIG
13899 #  ifdef _NSIG
13900 #    define NSIG (_NSIG)
13901 #  endif
13902 #endif
13903
13904 #ifndef NSIG
13905 #  ifdef SIGMAX
13906 #    define NSIG (SIGMAX+1)
13907 #  endif
13908 #endif
13909
13910 #ifndef NSIG
13911 #  ifdef SIG_MAX
13912 #    define NSIG (SIG_MAX+1)
13913 #  endif
13914 #endif
13915
13916 #ifndef NSIG
13917 #  ifdef MAXSIG
13918 #    define NSIG (MAXSIG+1)
13919 #  endif
13920 #endif
13921
13922 #ifndef NSIG
13923 #  ifdef MAX_SIG
13924 #    define NSIG (MAX_SIG+1)
13925 #  endif
13926 #endif
13927
13928 #ifndef NSIG
13929 #  ifdef SIGARRAYSIZE
13930 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13931 #  endif
13932 #endif
13933
13934 #ifndef NSIG
13935 #  ifdef _sys_nsig
13936 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13937 #  endif
13938 #endif
13939
13940 /* Default to some arbitrary number that's big enough to get most
13941    of the common signals.
13942 */
13943 #ifndef NSIG
13944 #    define NSIG 50
13945 #endif
13946
13947 printf("NSIG %d\n", NSIG);
13948
13949 #ifndef JUST_NSIG
13950
13951 EOCP
13952
13953 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13954 {
13955         printf "#ifdef SIG"; printf $1; printf "\n"
13956         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13957         printf $1; printf ");\n"
13958         printf "#endif\n"
13959 }
13960 END {
13961         printf "#endif /* JUST_NSIG */\n";
13962         printf "exit(0);\n}\n";
13963 }
13964 ' >>signal.c
13965 $cat >signal.awk <<'EOP'
13966 BEGIN { ndups = 0 }
13967 $1 ~ /^NSIG$/ { nsig = $2 }
13968 ($1 !~ /^NSIG$/) && (NF == 2) {
13969     if ($2 > maxsig) { maxsig = $2 }
13970     if (sig_name[$2]) {
13971         dup_name[ndups] = $1
13972         dup_num[ndups] = $2
13973         ndups++ 
13974     }
13975     else {
13976         sig_name[$2] = $1
13977         sig_num[$2] = $2
13978     }
13979 }
13980 END { 
13981     if (nsig == 0) {
13982         nsig = maxsig + 1
13983     }
13984     printf("NSIG %d\n", nsig);
13985     for (n = 1; n < nsig; n++) {
13986         if (sig_name[n]) {
13987             printf("%s %d\n", sig_name[n], sig_num[n])
13988         }
13989         else {
13990             printf("NUM%d %d\n", n, n) 
13991         }
13992     }
13993     for (n = 0; n < ndups; n++) {
13994         printf("%s %d\n", dup_name[n], dup_num[n])
13995     }
13996 }
13997 EOP
13998 $cat >signal_cmd <<EOS
13999 $startsh
14000 if $test -s signal.lst; then
14001     echo "Using your existing signal.lst file"
14002         exit 0
14003 fi
14004 xxx="$xxx"
14005 EOS
14006 $cat >>signal_cmd <<'EOS'
14007
14008 set signal
14009 if eval $compile_ok; then
14010         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14011 else
14012         echo "(I can't seem be able to compile the whole test program)" >&4
14013         echo "(I'll try it in little pieces.)" >&4
14014         set signal -DJUST_NSIG
14015         if eval $compile_ok; then
14016                 ./signal$_exe > signal.nsg
14017                 $cat signal.nsg
14018         else
14019                 echo "I can't seem to figure out how many signals you have." >&4
14020                 echo "Guessing 50." >&4
14021                 echo 'NSIG 50' > signal.nsg
14022         fi
14023         : Now look at all the signal names, one at a time.
14024         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
14025                 $cat > signal.c <<EOCP
14026 #include <sys/types.h>
14027 #include <signal.h>
14028 #include <stdio.h>
14029 int main() {
14030 printf("$xx %d\n", SIG${xx});
14031 return 0;
14032 }
14033 EOCP
14034                 set signal
14035                 if eval $compile; then
14036                         echo "SIG${xx} found."
14037                         ./signal$_exe  >> signal.ls1
14038                 else
14039                         echo "SIG${xx} NOT found."
14040                 fi
14041         done
14042         if $test -s signal.ls1; then
14043                 $cat signal.nsg signal.ls1 |
14044                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
14045         fi
14046
14047 fi
14048 if $test -s signal.lst; then
14049         :
14050 else
14051         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
14052         echo 'kill -l' >signal
14053         set X `csh -f <signal`
14054         $rm -f signal
14055         shift
14056         case $# in
14057         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14058         esac
14059         echo $@ | $tr ' ' $trnl | \
14060             $awk '{ printf "%s %d\n", $1, ++s; }
14061                   END { printf "NSIG %d\n", ++s }' >signal.lst
14062 fi
14063 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14064 EOS
14065 chmod a+x signal_cmd
14066 $eunicefix signal_cmd
14067
14068 : generate list of signal names
14069 echo " "
14070 case "$sig_name_init" in
14071 '') doinit=yes ;;
14072 *)  case "$sig_num_init" in
14073     ''|*,*) doinit=yes ;;
14074     esac ;;
14075 esac
14076 case "$doinit" in
14077 yes)
14078         echo "Generating a list of signal names and numbers..." >&4
14079         . ./signal_cmd
14080         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14081         sig_name=`$awk 'BEGIN { printf "ZERO " }
14082                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14083         sig_num=`$awk  'BEGIN { printf "0 " }
14084                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14085         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14086                              !/^NSIG/   { printf "\"%s\", ", $1 }
14087                              END        { printf "0\n" }' signal.lst`
14088         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14089                              !/^NSIG/   { printf "%d, ", $2}
14090                              END        { printf "0\n"}' signal.lst`
14091         ;;
14092 esac
14093 echo "The following $sig_count signals are available:"
14094 echo " "
14095 echo $sig_name | $awk \
14096 'BEGIN { linelen = 0 }
14097 {
14098         for (i = 1; i <= NF; i++) {
14099                 name = "SIG" $i " "
14100                 linelen = linelen + length(name)
14101                 if (linelen > 70) {
14102                         printf "\n"
14103                         linelen = length(name)
14104                 }
14105                 printf "%s", name
14106         }
14107         printf "\n"
14108 }'
14109 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14110
14111 echo " "
14112 case "$sizetype" in
14113 *_t) zzz="$sizetype"    ;;
14114 *)   zzz="filesize"     ;;
14115 esac
14116 echo "Checking the size of $zzz..." >&4 
14117 cat > try.c <<EOCP
14118 #include <sys/types.h>
14119 #include <stdio.h>
14120 int main() {
14121     printf("%d\n", (int)sizeof($sizetype));
14122     exit(0);
14123 }
14124 EOCP
14125 set try
14126 if eval $compile_ok; then
14127         yyy=`./try`
14128         case "$yyy" in
14129         '')     sizesize=4
14130                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14131                 ;;
14132         *)      sizesize=$yyy
14133                 echo "Your $zzz size is $sizesize bytes."
14134                 ;;
14135         esac
14136 else
14137         sizesize=4
14138         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14139 fi
14140
14141
14142 : check for socklen_t
14143 echo " "
14144 echo "Checking to see if you have socklen_t..." >&4
14145 $cat >try.c <<EOCP
14146 #include <sys/types.h>
14147 #$d_socket HAS_SOCKET
14148 #ifdef HAS_SOCKET
14149 #include <sys/socket.h>
14150 #endif
14151 int main() { socklen_t x = 16; }
14152 EOCP
14153 set try
14154 if eval $compile; then
14155         val="$define"
14156         echo "You have socklen_t."
14157 else
14158         val="$undef"
14159         echo "You do not have socklen_t."
14160         case "$sizetype" in
14161         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14162         esac
14163 fi
14164 $rm -f try try.*
14165 set d_socklen_t
14166 eval $setvar
14167
14168 : check for type of the size argument to socket calls
14169 case "$d_socket" in
14170 "$define")
14171         $cat <<EOM
14172
14173 Checking to see what type is the last argument of accept().
14174 EOM
14175         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14176         yyy=''
14177         case "$d_socklen_t" in
14178         "$define") yyy="$yyy socklen_t"
14179         esac
14180         yyy="$yyy $sizetype int long unsigned"
14181         for xxx in $yyy; do
14182                 case "$socksizetype" in
14183                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14184                         if ./protochk "$try" $hdrs; then
14185                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14186                                 socksizetype="$xxx"
14187                         fi
14188                         ;;
14189                 esac
14190         done
14191 : In case none of those worked, prompt the user.
14192         case "$socksizetype" in
14193         '')     rp='What is the type for socket address structure sizes?'
14194                 dflt='int'
14195                 . ./myread
14196                 socksizetype=$ans
14197                 ;;
14198         esac
14199         ;;
14200 *)      : no sockets, so pick relatively harmless default
14201         socksizetype='int'
14202         ;;
14203 esac
14204
14205 : see what type is used for signed size_t
14206 set ssize_t ssizetype int stdio.h sys/types.h
14207 eval $typedef
14208 dflt="$ssizetype"
14209 $cat > ssize.c <<EOM
14210 #include <stdio.h>
14211 #include <sys/types.h>
14212 #define Size_t $sizetype
14213 #define SSize_t $dflt
14214 int main()
14215 {
14216         if (sizeof(Size_t) == sizeof(SSize_t))
14217                 printf("$dflt\n");
14218         else if (sizeof(Size_t) == sizeof(int))
14219                 printf("int\n");
14220         else 
14221                 printf("long\n");
14222         exit(0);
14223 }
14224 EOM
14225 echo " "
14226 set ssize
14227 if eval $compile_ok && ./ssize > /dev/null; then
14228         ssizetype=`./ssize`
14229         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14230 else
14231         $cat >&4 <<EOM
14232 Help! I can't compile and run the ssize_t test program: please enlighten me!
14233 (This is probably a misconfiguration in your system or libraries, and
14234 you really ought to fix it.  Still, I'll try anyway.)
14235
14236 I need a type that is the same size as $sizetype, but is guaranteed to
14237 be signed.  Common values are ssize_t, int and long.
14238
14239 EOM
14240         rp="What signed type is the same size as $sizetype?"
14241         . ./myread
14242         ssizetype="$ans"
14243 fi
14244 $rm -f ssize ssize.*
14245
14246 : see what type of char stdio uses.
14247 echo " "
14248 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14249         echo "Your stdio uses unsigned chars." >&4
14250         stdchar="unsigned char"
14251 else
14252         echo "Your stdio uses signed chars." >&4
14253         stdchar="char"
14254 fi
14255
14256 : see if time exists
14257 echo " "
14258 if test "X$d_time" = X -o X"$timetype" = X; then
14259     if set time val -f d_time; eval $csym; $val; then
14260                 echo 'time() found.' >&4
14261                 val="$define"
14262                 rp="What is the type returned by time() on this system?"
14263                 set time_t timetype long stdio.h sys/types.h
14264                 eval $typedef_ask
14265     else
14266                 echo 'time() not found, hope that will do.' >&4
14267                 val="$undef"
14268                 timetype='int';
14269     fi
14270     set d_time
14271     eval $setvar
14272 fi
14273
14274 : see what type uids are declared as in the kernel
14275 echo " "
14276 echo "Looking for the type for user ids returned by getuid()."
14277 set uid_t uidtype xxx stdio.h sys/types.h
14278 eval $typedef
14279 case "$uidtype" in
14280 xxx)
14281         xxx=`./findhdr sys/user.h`
14282         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14283         case $1 in
14284         unsigned) dflt="$1 $2" ;;
14285         *) dflt="$1" ;;
14286         esac
14287         ;;
14288 *) dflt="$uidtype";;
14289 esac
14290 case "$uidtype" in
14291 uid_t)  echo "uid_t found." ;;
14292 *)      rp="What is the type for user ids returned by getuid()?"
14293         . ./myread
14294         uidtype="$ans"
14295         ;;
14296 esac
14297
14298 echo " "
14299 case "$uidtype" in
14300 *_t) zzz="$uidtype"     ;;
14301 *)   zzz="uid"          ;;
14302 esac
14303 echo "Checking the size of $zzz..." >&4 
14304 cat > try.c <<EOCP
14305 #include <sys/types.h>
14306 #include <stdio.h>
14307 int main() {
14308     printf("%d\n", (int)sizeof($uidtype));
14309     exit(0);
14310 }
14311 EOCP
14312 set try
14313 if eval $compile_ok; then
14314         yyy=`./try`
14315         case "$yyy" in
14316         '')     uidsize=4
14317                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14318                 ;;
14319         *)      uidsize=$yyy
14320                 echo "Your $zzz is $uidsize bytes long."
14321                 ;;
14322         esac
14323 else
14324         uidsize=4
14325         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14326 fi
14327
14328 echo " "
14329 case "$uidtype" in
14330 *_t) zzz="$uidtype"     ;;
14331 *)   zzz="uid"          ;;
14332 esac
14333 echo "Checking the sign of $zzz..." >&4
14334 cat > try.c <<EOCP
14335 #include <sys/types.h>
14336 #include <stdio.h>
14337 int main() {
14338         $uidtype foo = -1;
14339         if (foo < 0)
14340                 printf("-1\n");
14341         else
14342                 printf("1\n");
14343 }
14344 EOCP
14345 set try
14346 if eval $compile; then
14347         yyy=`./try`
14348         case "$yyy" in
14349         '')     uidsign=1
14350                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14351                 ;;
14352         *)      uidsign=$yyy
14353                 case "$uidsign" in
14354                  1) echo "Your $zzz is unsigned." ;;
14355                 -1) echo "Your $zzz is signed."   ;;
14356                 esac
14357                 ;;
14358         esac
14359 else
14360         uidsign=1
14361         echo "(I can't compile the test program--guessing unsigned.)" >&4
14362 fi
14363
14364
14365
14366 echo " "
14367 $echo "Checking the format string to be used for uids..." >&4
14368
14369 case "$uidsign" in
14370 -1)     if $test X"$uidsize" = X"$ivsize"; then
14371                 uidformat="$ivdformat"
14372         else
14373                 if $test X"$uidsize" = X"$longsize"; then
14374                         uidformat='"ld"'
14375                 else
14376                         if $test X"$uidsize" = X"$intsize"; then
14377                                 uidformat='"d"'
14378                         else
14379                                 if $test X"$uidsize" = X"$shortsize"; then
14380                                         uidformat='"hd"'
14381                                 fi
14382                         fi
14383                 fi
14384         fi
14385         ;;
14386 *)      if $test X"$uidsize" = X"$uvsize"; then
14387                 uidformat="$uvuformat"
14388         else
14389                 if $test X"$uidsize" = X"$longsize"; then
14390                         uidformat='"lu"'
14391                 else
14392                         if $test X"$uidsize" = X"$intsize"; then
14393                                 uidformat='"u"'
14394                         else
14395                                 if $test X"$uidsize" = X"$shortsize"; then
14396                                         uidformat='"hu"'
14397                                 fi
14398                         fi
14399                 fi
14400         fi
14401         ;;
14402 esac
14403
14404 : see if dbm.h is available
14405 : see if dbmclose exists
14406 set dbmclose d_dbmclose
14407 eval $inlibc
14408
14409 case "$d_dbmclose" in
14410 $define)
14411         set dbm.h i_dbm
14412         eval $inhdr
14413         case "$i_dbm" in
14414         $define)
14415                 val="$undef"
14416                 set i_rpcsvcdbm
14417                 eval $setvar
14418                 ;;
14419         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14420                 eval $inhdr
14421                 ;;
14422         esac
14423         ;;
14424 *)      echo "We won't be including <dbm.h>"
14425         val="$undef"
14426         set i_dbm
14427         eval $setvar
14428         val="$undef"
14429         set i_rpcsvcdbm
14430         eval $setvar
14431         ;;
14432 esac
14433
14434 : see if this is a sys/file.h system
14435 val=''
14436 set sys/file.h val
14437 eval $inhdr
14438
14439 : do we need to include sys/file.h ?
14440 case "$val" in
14441 "$define")
14442         echo " "
14443         if $h_sysfile; then
14444                 val="$define"
14445                 echo "We'll be including <sys/file.h>." >&4
14446         else
14447                 val="$undef"
14448                 echo "We won't be including <sys/file.h>." >&4
14449         fi
14450         ;;
14451 *)
14452         h_sysfile=false
14453         ;;
14454 esac
14455 set i_sysfile
14456 eval $setvar
14457
14458 : see if fcntl.h is there
14459 val=''
14460 set fcntl.h val
14461 eval $inhdr
14462
14463 : see if we can include fcntl.h
14464 case "$val" in
14465 "$define")
14466         echo " "
14467         if $h_fcntl; then
14468                 val="$define"
14469                 echo "We'll be including <fcntl.h>." >&4
14470         else
14471                 val="$undef"
14472                 if $h_sysfile; then
14473         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14474                 else
14475                         echo "We won't be including <fcntl.h>." >&4
14476                 fi
14477         fi
14478         ;;
14479 *)
14480         h_fcntl=false
14481         val="$undef"
14482         ;;
14483 esac
14484 set i_fcntl
14485 eval $setvar
14486
14487 : see if this is a iconv.h system
14488 set iconv.h i_iconv
14489 eval $inhdr
14490
14491 : see if this is a ieeefp.h system
14492 set ieeefp.h i_ieeefp
14493 eval $inhdr
14494
14495 : see if this is a libutil.h system
14496 set libutil.h i_libutil
14497 eval $inhdr
14498
14499 : see if locale.h is available
14500 set locale.h i_locale
14501 eval $inhdr
14502
14503 : see if mach cthreads are available
14504 if test "X$usethreads" = "X$define"; then
14505         set mach/cthreads.h i_machcthr
14506         eval $inhdr
14507 else
14508         i_machcthr="$undef"
14509 fi
14510
14511
14512
14513 : see if this is a math.h system
14514 set math.h i_math
14515 eval $inhdr
14516
14517 : see if this is a mntent.h system
14518 set mntent.h i_mntent
14519 eval $inhdr
14520
14521 : see if ndbm.h is available
14522 set ndbm.h t_ndbm
14523 eval $inhdr
14524 case "$t_ndbm" in
14525 $define)
14526         : see if dbm_open exists
14527         set dbm_open d_dbm_open
14528         eval $inlibc
14529         case "$d_dbm_open" in
14530         $undef)
14531                 t_ndbm="$undef"
14532                 echo "We won't be including <ndbm.h>"
14533                 ;;
14534         esac
14535         ;;
14536 esac
14537 val="$t_ndbm"
14538 set i_ndbm
14539 eval $setvar
14540
14541 : see if net/errno.h is available
14542 val=''
14543 set net/errno.h val
14544 eval $inhdr
14545
14546 : Unfortunately, it causes problems on some systems.  Arrgh.
14547 case "$val" in
14548 $define)
14549         cat > try.c <<'EOM'
14550 #include <stdio.h>
14551 #include <errno.h>
14552 #include <net/errno.h>
14553 int func()
14554 {
14555         return ENOTSOCK;
14556 }
14557 EOM
14558         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14559                 echo "We'll be including <net/errno.h>." >&4
14560         else
14561                 echo "We won't be including <net/errno.h>." >&4
14562                 val="$undef"
14563         fi
14564         $rm -f try.* try
14565         ;;
14566 esac
14567 set i_neterrno
14568 eval $setvar
14569
14570 : see if netinet/tcp.h is available
14571 set netinet/tcp.h i_netinettcp
14572 eval $inhdr
14573
14574 : see if this is a poll.h system
14575 set poll.h i_poll
14576 eval $inhdr
14577
14578 : see if this is a prot.h system
14579 set prot.h i_prot
14580 eval $inhdr
14581
14582 echo " "
14583 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14584 $cat <<'EOSH' > Cppsym.know
14585 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14586 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14587 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14588 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14589 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14590 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14591 bull c cadmus clipper CMU COFF COMPILER_VERSION
14592 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14593 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14594 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14595 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14596 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14597 H3050R H3050RX hbullx20 hcx host_mips
14598 hp200 hp300 hp700 HP700 hp800 hp9000
14599 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14600 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14601 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14602 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14603 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14604 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14605 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14606 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14607 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14608 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14609 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14610 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14611 MATH_HAS_NO_SIDE_EFFECTS
14612 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14613 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14614 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14615 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14616 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14617 NetBSD news1500 news1700 news1800 news1900 news3700
14618 news700 news800 news900 NeXT NLS ns16000 ns32000
14619 ns32016 ns32332 ns32k nsc32000
14620 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14621 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14622 pc532 pdp11 PGC PIC plexus PORTAR posix
14623 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14624 POSIX_C_SOURCE POSIX_SOURCE POWER
14625 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14626 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14627 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14628 sony sony_news sonyrisc sparc sparclite spectrum
14629 stardent stdc STDC_EXT stratos sun sun3 sun386
14630 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14631 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14632 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14633 sysV68 sysV88 Tek4132 Tek4300 titan
14634 tower tower32 tower32_200 tower32_600 tower32_700
14635 tower32_800 tower32_850 tss
14636 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14637 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14638 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14639 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14640 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14641 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14642 z8000
14643 EOSH
14644 # Maybe put other stuff here too.
14645 cat <<EOSH >>Cppsym.know
14646 $osname
14647 EOSH
14648 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14649 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14650 $cat Cppsym.know > Cppsym.c
14651 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14652 $rm -f Cppsym.a Cppsym.b Cppsym.c
14653 cat <<EOSH > Cppsym
14654 $startsh
14655 if $test \$# -gt 0; then
14656     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14657     if $test -s Cppsym.got; then
14658         $rm -f Cppsym.got
14659         exit 0
14660     fi
14661     $rm -f Cppsym.got
14662     exit 1
14663 else
14664     $tr " " "$trnl" | ./Cppsym.try
14665     exit 0
14666 fi
14667 EOSH
14668 chmod +x Cppsym
14669 $eunicefix Cppsym
14670 cat <<EOSH > Cppsym.try
14671 $startsh
14672 cat <<'EOCP' > try.c
14673 #include <stdio.h>
14674 int main() {
14675 EOCP
14676 $awk \\
14677 EOSH
14678 cat <<'EOSH' >> Cppsym.try
14679 'length($1) > 0 {
14680     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
14681     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
14682     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
14683     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
14684 }'       >> try.c
14685 echo '}' >> try.c
14686 EOSH
14687 cat <<EOSH >> Cppsym.try
14688 ccflags="$ccflags"
14689 case "$osname-$gccversion" in
14690 irix-) ccflags="\$ccflags -woff 1178" ;;
14691 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14692 esac
14693 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14694 EOSH
14695 chmod +x Cppsym.try
14696 $eunicefix Cppsym.try
14697 ./Cppsym < Cppsym.know > Cppsym.true
14698 : now check the C compiler for additional symbols
14699 postprocess_cc_v=''
14700 case "$osname" in
14701 aix) postprocess_cc_v="|$tr , ' '" ;;
14702 esac
14703 $cat >ccsym <<EOS
14704 $startsh
14705 $cat >tmp.c <<EOF
14706 extern int foo;
14707 EOF
14708 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14709 do
14710         case "\$i" in
14711         -D*) echo "\$i" | $sed 's/^-D//';;
14712         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14713         esac
14714 done
14715 $rm -f try.c
14716 EOS
14717 postprocess_cc_v=''
14718 chmod +x ccsym
14719 $eunicefix ccsym
14720 ./ccsym > ccsym1.raw
14721 if $test -s ccsym1.raw; then
14722        $sort ccsym1.raw | $uniq >ccsym.raw
14723 else
14724        mv ccsym1.raw ccsym.raw
14725 fi
14726
14727 $awk '/\=/ { print $0; next }
14728         { print $0"=1" }' ccsym.raw >ccsym.list
14729 $awk '/\=/ { print $0; next }
14730         { print $0"=1" }' Cppsym.true >ccsym.true
14731 $comm -13 ccsym.true ccsym.list >ccsym.own
14732 $comm -12 ccsym.true ccsym.list >ccsym.com
14733 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14734 also=''
14735 if $test -z ccsym.raw; then
14736         echo "Your C compiler doesn't seem to define any symbols!" >&4
14737         echo " "
14738         echo "However, your C preprocessor defines the following symbols:"
14739         $cat Cppsym.true
14740         ccsymbols=''
14741         cppsymbols=`$cat Cppsym.true`
14742         cppsymbols=`echo $cppsymbols`
14743         cppccsymbols="$cppsymbols"
14744 else
14745         if $test -s ccsym.com; then
14746                 echo "Your C compiler and pre-processor define these symbols:"
14747                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14748                 also='also '
14749                 symbols='ones'
14750                 cppccsymbols=`$cat ccsym.com`
14751                 cppccsymbols=`echo $cppccsymbols`
14752                 $test "$silent" || sleep 1
14753         fi
14754         if $test -s ccsym.cpp; then
14755                 $test "$also" && echo " "
14756                 echo "Your C pre-processor ${also}defines the following symbols:"
14757                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14758                 also='further '
14759                 cppsymbols=`$cat ccsym.cpp`
14760                 cppsymbols=`echo $cppsymbols`
14761                 $test "$silent" || sleep 1
14762         fi
14763         if $test -s ccsym.own; then
14764                 $test "$also" && echo " "
14765                 echo "Your C compiler ${also}defines the following cpp symbols:"
14766                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14767                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14768                 ccsymbols=`$cat ccsym.own`
14769                 ccsymbols=`echo $ccsymbols`
14770                 $test "$silent" || sleep 1
14771         fi
14772 fi
14773 $rm -f ccsym* Cppsym.*
14774
14775 : see if this is a termio system
14776 val="$undef"
14777 val2="$undef"
14778 val3="$undef"
14779 if $test `./findhdr termios.h`; then
14780         set tcsetattr i_termios
14781         eval $inlibc
14782         val3="$i_termios"
14783 fi
14784 echo " "
14785 case "$val3" in
14786 "$define") echo "You have POSIX termios.h... good!" >&4;;
14787 *) if ./Cppsym pyr; then
14788                 case "`/bin/universe`" in
14789                 ucb) if $test `./findhdr sgtty.h`; then
14790                                 val2="$define"
14791                                 echo "<sgtty.h> found." >&4
14792                         else
14793                                 echo "System is pyramid with BSD universe."
14794                                 echo "<sgtty.h> not found--you could have problems." >&4
14795                         fi;;
14796                 *) if $test `./findhdr termio.h`; then
14797                                 val="$define"
14798                                 echo "<termio.h> found." >&4
14799                         else
14800                                 echo "System is pyramid with USG universe."
14801                                 echo "<termio.h> not found--you could have problems." >&4
14802                         fi;;
14803                 esac
14804         elif ./usg; then
14805                 if $test `./findhdr termio.h`; then
14806                         echo "<termio.h> found." >&4
14807                         val="$define"
14808                 elif $test `./findhdr sgtty.h`; then
14809                         echo "<sgtty.h> found." >&4
14810                         val2="$define"
14811                 else
14812 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14813                 fi
14814         else
14815                 if $test `./findhdr sgtty.h`; then
14816                         echo "<sgtty.h> found." >&4
14817                         val2="$define"
14818                 elif $test `./findhdr termio.h`; then
14819                         echo "<termio.h> found." >&4
14820                         val="$define"
14821                 else
14822 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14823                 fi
14824         fi;;
14825 esac
14826 set i_termio; eval $setvar
14827 val=$val2; set i_sgtty; eval $setvar
14828 val=$val3; set i_termios; eval $setvar
14829
14830 : see if this is a shadow.h system
14831 set shadow.h i_shadow
14832 eval $inhdr
14833
14834 : see if this is a socks.h system
14835 set socks.h i_socks
14836 eval $inhdr
14837
14838 : see if stdarg is available
14839 echo " "
14840 if $test `./findhdr stdarg.h`; then
14841         echo "<stdarg.h> found." >&4
14842         valstd="$define"
14843 else
14844         echo "<stdarg.h> NOT found." >&4
14845         valstd="$undef"
14846 fi
14847
14848 : see if varags is available
14849 echo " "
14850 if $test `./findhdr varargs.h`; then
14851         echo "<varargs.h> found." >&4
14852 else
14853         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14854 fi
14855
14856 : set up the varargs testing programs
14857 $cat > varargs.c <<EOP
14858 #ifdef I_STDARG
14859 #include <stdarg.h>
14860 #endif
14861 #ifdef I_VARARGS
14862 #include <varargs.h>
14863 #endif
14864
14865 #ifdef I_STDARG
14866 int f(char *p, ...)
14867 #else
14868 int f(va_alist)
14869 va_dcl
14870 #endif
14871 {
14872         va_list ap;
14873 #ifndef I_STDARG
14874         char *p;
14875 #endif
14876 #ifdef I_STDARG
14877         va_start(ap,p);
14878 #else
14879         va_start(ap);
14880         p = va_arg(ap, char *);
14881 #endif
14882         va_end(ap);
14883 }
14884 EOP
14885 $cat > varargs <<EOP
14886 $startsh
14887 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14888         echo "true"
14889 else
14890         echo "false"
14891 fi
14892 $rm -f varargs$_o
14893 EOP
14894 chmod +x varargs
14895
14896 : now check which varargs header should be included
14897 echo " "
14898 i_varhdr=''
14899 case "$valstd" in
14900 "$define")
14901         if `./varargs I_STDARG`; then
14902                 val='stdarg.h'
14903         elif `./varargs I_VARARGS`; then
14904                 val='varargs.h'
14905         fi
14906         ;;
14907 *)
14908         if `./varargs I_VARARGS`; then
14909                 val='varargs.h'
14910         fi
14911         ;;
14912 esac
14913 case "$val" in
14914 '')
14915 echo "I could not find the definition for va_dcl... You have problems..." >&4
14916         val="$undef"; set i_stdarg; eval $setvar
14917         val="$undef"; set i_varargs; eval $setvar
14918         ;;
14919 *) 
14920         set i_varhdr
14921         eval $setvar
14922         case "$i_varhdr" in
14923         stdarg.h)
14924                 val="$define"; set i_stdarg; eval $setvar
14925                 val="$undef"; set i_varargs; eval $setvar
14926                 ;;
14927         varargs.h)
14928                 val="$undef"; set i_stdarg; eval $setvar
14929                 val="$define"; set i_varargs; eval $setvar
14930                 ;;
14931         esac
14932         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14933 esac
14934 $rm -f varargs*
14935
14936 : see if stddef is available
14937 set stddef.h i_stddef
14938 eval $inhdr
14939
14940 : see if this is a sunmath.h system
14941 set sunmath.h i_sunmath
14942 eval $inhdr
14943
14944 : see if sys/access.h is available
14945 set sys/access.h i_sysaccess
14946 eval $inhdr
14947
14948 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14949 set sys/filio.h i_sysfilio
14950 eval $inhdr
14951 echo " "
14952 if $test `./findhdr sys/ioctl.h`; then
14953         val="$define"
14954         echo '<sys/ioctl.h> found.' >&4
14955 else
14956         val="$undef"
14957         if $test $i_sysfilio = "$define"; then
14958             echo '<sys/ioctl.h> NOT found.' >&4
14959         else
14960                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14961                 $test $i_termio = "$define" && xxx="termio.h"
14962                 $test $i_termios = "$define" && xxx="termios.h"
14963 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14964         fi
14965 fi
14966 set i_sysioctl
14967 eval $setvar
14968
14969
14970 : see if this is a syslog.h system
14971 set syslog.h i_syslog
14972 eval $inhdr
14973
14974
14975 : see if this is a sys/mode.h system
14976 set sys/mode.h i_sysmode
14977 eval $inhdr
14978
14979 : see if sys/resource.h has to be included
14980 set sys/resource.h i_sysresrc
14981 eval $inhdr
14982
14983 : see if sys/security.h is available
14984 set sys/security.h i_syssecrt
14985 eval $inhdr
14986
14987 : see if this is a sys/statvfs.h system
14988 set sys/statvfs.h i_sysstatvfs
14989 eval $inhdr
14990
14991 : see if this is a sys/uio.h system
14992 set sys/uio.h i_sysuio
14993 eval $inhdr
14994
14995 : see if this is a sys/un.h system
14996 set sys/un.h i_sysun
14997 eval $inhdr
14998
14999
15000 : see if this is a sys/utsname.h system
15001 set sys/utsname.h i_sysutsname
15002 eval $inhdr
15003
15004 : see if this is a syswait system
15005 set sys/wait.h i_syswait
15006 eval $inhdr
15007
15008 : see if this is a ustat.h system
15009 set ustat.h i_ustat
15010 eval $inhdr
15011
15012 : see if this is an utime system
15013 set utime.h i_utime
15014 eval $inhdr
15015
15016 : see if this is a values.h system
15017 set values.h i_values
15018 eval $inhdr
15019
15020 : see if this is a vfork system
15021 case "$d_vfork" in
15022 "$define")
15023         set vfork.h i_vfork
15024         eval $inhdr
15025         ;;
15026 *)
15027         i_vfork="$undef"
15028         ;;
15029 esac
15030
15031 : see if gdbm.h is available
15032 set gdbm.h t_gdbm
15033 eval $inhdr
15034 case "$t_gdbm" in
15035 $define)
15036         : see if gdbm_open exists
15037         set gdbm_open d_gdbm_open
15038         eval $inlibc
15039         case "$d_gdbm_open" in
15040         $undef)
15041                 t_gdbm="$undef"
15042                 echo "We won't be including <gdbm.h>"
15043                 ;;
15044         esac
15045         ;;
15046 esac
15047 val="$t_gdbm"
15048 set i_gdbm
15049 eval $setvar
15050
15051 echo " "
15052 echo "Looking for extensions..." >&4
15053 : If we are using the old config.sh, known_extensions may contain
15054 : old or inaccurate or duplicate values.
15055 known_extensions=''
15056 nonxs_extensions=''
15057 : We do not use find because it might not be available.
15058 : We do not just use MANIFEST because the user may have dropped
15059 : some additional extensions into the source tree and expect them
15060 : to be built.
15061
15062 : Function to recursively find available extensions, ignoring DynaLoader
15063 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15064 find_extensions='
15065     for xxx in *; do
15066        case "$xxx" in
15067            DynaLoader|dynaload) ;;
15068            *)
15069            if $test -f $xxx/$xxx.xs; then
15070                known_extensions="$known_extensions $1$xxx";
15071            elif $test -f $xxx/Makefile.PL; then
15072                nonxs_extensions="$nonxs_extensions $1$xxx";
15073            else
15074                if $test -d $xxx -a $# -lt 10; then
15075                    set $1$xxx/ $*;
15076                    cd $xxx;
15077                    eval $find_extensions;
15078                    cd ..;
15079                    shift;
15080                fi;
15081            fi
15082            ;;
15083        esac;
15084     done'
15085 tdir=`pwd`
15086 cd $rsrc/ext
15087 set X
15088 shift
15089 eval $find_extensions
15090 set X $nonxs_extensions
15091 shift
15092 nonxs_extensions="$*"
15093 set X $known_extensions
15094 shift
15095 known_extensions="$*"
15096 cd $tdir
15097
15098 : Now see which are supported on this system.
15099 avail_ext=''
15100 for xxx in $known_extensions ; do
15101         case "$xxx" in
15102         DB_File|db_file)
15103                 case "$i_db" in
15104                 $define) avail_ext="$avail_ext $xxx" ;;
15105                 esac
15106                 ;;
15107         GDBM_File|gdbm_fil)
15108                 case "$i_gdbm" in 
15109                 $define) avail_ext="$avail_ext $xxx" ;;
15110                 esac
15111                 ;;
15112         NDBM_File|ndbm_fil)
15113                 case "$i_ndbm" in
15114                 $define)
15115                     case "$osname-$use64bitint" in
15116                     hpux-define)
15117                         case "$libs" in
15118                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15119                         esac
15120                         ;;
15121                     *) avail_ext="$avail_ext $xxx" ;;
15122                     esac
15123                     ;;
15124                 esac
15125                 ;;
15126         ODBM_File|odbm_fil) 
15127                 case "${i_dbm}${i_rpcsvcdbm}" in
15128                 *"${define}"*)
15129                     case "$osname-$use64bitint" in
15130                     hpux-define)
15131                         case "$libs" in
15132                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15133                         esac
15134                         ;;
15135                     *) avail_ext="$avail_ext $xxx" ;;
15136                     esac
15137                     ;;
15138                 esac
15139                 ;;
15140         POSIX|posix)
15141                 case "$useposix" in
15142                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15143                 esac
15144                 ;;
15145         Opcode|opcode)
15146                 case "$useopcode" in
15147                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15148                 esac
15149                 ;;
15150         Socket|socket)
15151                 case "$d_socket" in 
15152                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15153                 esac
15154                 ;;
15155         Sys/Syslog|sys/syslog)
15156                 : XXX syslog requires socket
15157                 case "$d_socket" in 
15158                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15159                 esac
15160                 ;;
15161         Thread|thread)
15162                 case "$usethreads" in 
15163                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15164                 esac
15165                 ;;
15166         IPC/SysV|ipc/sysv)
15167                 : XXX Do we need a useipcsysv variable here
15168                 case "${d_msg}${d_sem}${d_shm}" in 
15169                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15170                 esac
15171                 ;;
15172         *)      avail_ext="$avail_ext $xxx"
15173                 ;;
15174         esac
15175 done
15176
15177 set X $avail_ext
15178 shift
15179 avail_ext="$*"
15180
15181 : Now see which nonxs extensions are supported on this system.
15182 : For now assume all are.
15183 nonxs_ext=''
15184 for xxx in $nonxs_extensions ; do
15185         case "$xxx" in
15186         *)      nonxs_ext="$nonxs_ext $xxx"
15187                 ;;
15188         esac
15189 done
15190
15191 set X $nonxs_ext
15192 shift
15193 nonxs_ext="$*"
15194
15195 case $usedl in
15196 $define)
15197         $cat <<EOM
15198 A number of extensions are supplied with $package.  You may choose to
15199 compile these extensions for dynamic loading (the default), compile
15200 them into the $package executable (static loading), or not include
15201 them at all.  Answer "none" to include no extensions.
15202 Note that DynaLoader is always built and need not be mentioned here.
15203
15204 EOM
15205         case "$dynamic_ext" in
15206         '') dflt="$avail_ext" ;;
15207         *)      dflt="$dynamic_ext"
15208                 # Perhaps we are reusing an old out-of-date config.sh.
15209                 case "$hint" in
15210                 previous)
15211                         if test X"$dynamic_ext" != X"$avail_ext"; then
15212                                 $cat <<EOM
15213 NOTICE:  Your previous config.sh list may be incorrect. 
15214 The extensions now available to you are 
15215         ${avail_ext}
15216 but the default list from your previous config.sh is
15217         ${dynamic_ext} 
15218
15219 EOM
15220                         fi
15221                         ;;
15222                 esac
15223                 ;;
15224         esac
15225         case "$dflt" in
15226         '')     dflt=none;;
15227         esac
15228         rp="What extensions do you wish to load dynamically?"
15229         . ./myread
15230         case "$ans" in
15231         none) dynamic_ext=' ' ;;
15232         *) dynamic_ext="$ans" ;;
15233         esac
15234
15235         case "$static_ext" in
15236         '')
15237                 : Exclude those already listed in dynamic linking
15238                 dflt=''
15239                 for xxx in $avail_ext; do
15240                         case " $dynamic_ext " in
15241                         *" $xxx "*) ;;
15242                         *) dflt="$dflt $xxx" ;;
15243                         esac
15244                 done
15245                 set X $dflt
15246                 shift
15247                 dflt="$*"
15248                 ;;
15249         *)  dflt="$static_ext" 
15250                 ;;
15251         esac
15252
15253         case "$dflt" in
15254         '')     dflt=none;;
15255         esac
15256         rp="What extensions do you wish to load statically?"
15257         . ./myread
15258         case "$ans" in
15259         none) static_ext=' ' ;;
15260         *) static_ext="$ans" ;;
15261         esac
15262         ;;
15263 *)
15264         $cat <<EOM
15265 A number of extensions are supplied with $package.  Answer "none" 
15266 to include no extensions. 
15267 Note that DynaLoader is always built and need not be mentioned here.
15268
15269 EOM
15270         case "$static_ext" in
15271         '') dflt="$avail_ext" ;;
15272         *)      dflt="$static_ext"
15273                 # Perhaps we are reusing an old out-of-date config.sh.
15274                 case "$hint" in
15275                 previous)
15276                         if test X"$static_ext" != X"$avail_ext"; then
15277                                 $cat <<EOM
15278 NOTICE:  Your previous config.sh list may be incorrect. 
15279 The extensions now available to you are 
15280         ${avail_ext}
15281 but the default list from your previous config.sh is
15282         ${static_ext} 
15283
15284 EOM
15285                         fi
15286                         ;;
15287                 esac
15288                 ;;
15289         esac
15290         : Exclude those that are not xs extensions
15291         case "$dflt" in
15292         '')     dflt=none;;
15293         esac
15294         rp="What extensions do you wish to include?"
15295         . ./myread
15296         case "$ans" in
15297         none) static_ext=' ' ;;
15298         *) static_ext="$ans" ;;
15299         esac
15300         ;;
15301 esac
15302
15303 set X $dynamic_ext $static_ext $nonxs_ext
15304 shift
15305 extensions="$*"
15306
15307 : Remove build directory name from cppstdin so it can be used from
15308 : either the present location or the final installed location.
15309 echo " "
15310 : Get out of the UU directory to get correct path name.
15311 cd ..
15312 case "$cppstdin" in
15313 `pwd`/cppstdin)
15314         echo "Stripping down cppstdin path name"
15315         cppstdin=cppstdin
15316         ;;
15317 esac
15318 cd UU
15319
15320 : end of configuration questions
15321 echo " "
15322 echo "End of configuration questions."
15323 echo " "
15324
15325 : back to where it started
15326 if test -d ../UU; then
15327         cd ..
15328 fi
15329
15330 : configuration may be patched via a 'config.over' file
15331 if $test -f config.over; then
15332         echo " "
15333         dflt=y
15334         rp='I see a config.over file.  Do you wish to load it?'
15335         . UU/myread
15336         case "$ans" in
15337         n*) echo "OK, I'll ignore it.";;
15338         *)      . ./config.over
15339                 echo "Configuration override changes have been loaded."
15340                 ;;
15341         esac
15342 fi
15343
15344 : in case they want portability, strip down executable paths
15345 case "$d_portable" in
15346 "$define")
15347         echo " "
15348         echo "Stripping down executable paths..." >&4
15349         for file in $loclist $trylist; do
15350                 eval temp=\$$file
15351                 eval $file=`basename $temp`
15352         done
15353         ;;
15354 esac
15355
15356 : create config.sh file
15357 echo " "
15358 echo "Creating config.sh..." >&4
15359 $spitshell <<EOT >config.sh
15360 $startsh
15361 #
15362 # This file was produced by running the Configure script. It holds all the
15363 # definitions figured out by Configure. Should you modify one of these values,
15364 # do not forget to propagate your changes by running "Configure -der". You may
15365 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15366 #
15367
15368 # Package name      : $package
15369 # Source directory  : $src
15370 # Configuration time: $cf_time
15371 # Configured by     : $cf_by
15372 # Target system     : $myuname
15373
15374 Author='$Author'
15375 Date='$Date'
15376 Header='$Header'
15377 Id='$Id'
15378 Locker='$Locker'
15379 Log='$Log'
15380 Mcc='$Mcc'
15381 RCSfile='$RCSfile'
15382 Revision='$Revision'
15383 Source='$Source'
15384 State='$State'
15385 _a='$_a'
15386 _exe='$_exe'
15387 _o='$_o'
15388 afs='$afs'
15389 alignbytes='$alignbytes'
15390 ansi2knr='$ansi2knr'
15391 aphostname='$aphostname'
15392 api_revision='$api_revision'
15393 api_subversion='$api_subversion'
15394 api_version='$api_version'
15395 api_versionstring='$api_versionstring'
15396 ar='$ar'
15397 archlib='$archlib'
15398 archlibexp='$archlibexp'
15399 archname64='$archname64'
15400 archname='$archname'
15401 archobjs='$archobjs'
15402 awk='$awk'
15403 baserev='$baserev'
15404 bash='$bash'
15405 bin='$bin'
15406 bincompat5005='$bincompat5005'
15407 binexp='$binexp'
15408 bison='$bison'
15409 byacc='$byacc'
15410 byteorder='$byteorder'
15411 c='$c'
15412 castflags='$castflags'
15413 cat='$cat'
15414 cc='$cc'
15415 cccdlflags='$cccdlflags'
15416 ccdlflags='$ccdlflags'
15417 ccflags='$ccflags'
15418 ccflags_uselargefiles='$ccflags_uselargefiles'
15419 ccname='$ccname'
15420 ccsymbols='$ccsymbols'
15421 cf_by='$cf_by'
15422 cf_email='$cf_email'
15423 cf_time='$cf_time'
15424 charsize='$charsize'
15425 chgrp='$chgrp'
15426 chmod='$chmod'
15427 chown='$chown'
15428 clocktype='$clocktype'
15429 comm='$comm'
15430 compress='$compress'
15431 contains='$contains'
15432 cp='$cp'
15433 cpio='$cpio'
15434 cpp='$cpp'
15435 cpp_stuff='$cpp_stuff'
15436 cppccsymbols='$cppccsymbols'
15437 cppflags='$cppflags'
15438 cpplast='$cpplast'
15439 cppminus='$cppminus'
15440 cpprun='$cpprun'
15441 cppstdin='$cppstdin'
15442 cppsymbols='$cppsymbols'
15443 crosscompile='$crosscompile'
15444 cryptlib='$cryptlib'
15445 csh='$csh'
15446 d_Gconvert='$d_Gconvert'
15447 d_PRIEldbl='$d_PRIEldbl'
15448 d_PRIFldbl='$d_PRIFldbl'
15449 d_PRIGldbl='$d_PRIGldbl'
15450 d_PRIX64='$d_PRIX64'
15451 d_PRId64='$d_PRId64'
15452 d_PRIeldbl='$d_PRIeldbl'
15453 d_PRIfldbl='$d_PRIfldbl'
15454 d_PRIgldbl='$d_PRIgldbl'
15455 d_PRIi64='$d_PRIi64'
15456 d_PRIo64='$d_PRIo64'
15457 d_PRIu64='$d_PRIu64'
15458 d_PRIx64='$d_PRIx64'
15459 d_SCNfldbl='$d_SCNfldbl'
15460 d_access='$d_access'
15461 d_accessx='$d_accessx'
15462 d_alarm='$d_alarm'
15463 d_archlib='$d_archlib'
15464 d_atolf='$d_atolf'
15465 d_atoll='$d_atoll'
15466 d_attribut='$d_attribut'
15467 d_bcmp='$d_bcmp'
15468 d_bcopy='$d_bcopy'
15469 d_bincompat5005='$d_bincompat5005'
15470 d_bsd='$d_bsd'
15471 d_bsdgetpgrp='$d_bsdgetpgrp'
15472 d_bsdsetpgrp='$d_bsdsetpgrp'
15473 d_bzero='$d_bzero'
15474 d_casti32='$d_casti32'
15475 d_castneg='$d_castneg'
15476 d_charvspr='$d_charvspr'
15477 d_chown='$d_chown'
15478 d_chroot='$d_chroot'
15479 d_chsize='$d_chsize'
15480 d_closedir='$d_closedir'
15481 d_const='$d_const'
15482 d_crypt='$d_crypt'
15483 d_csh='$d_csh'
15484 d_cuserid='$d_cuserid'
15485 d_dbl_dig='$d_dbl_dig'
15486 d_difftime='$d_difftime'
15487 d_dirnamlen='$d_dirnamlen'
15488 d_dlerror='$d_dlerror'
15489 d_dlopen='$d_dlopen'
15490 d_dlsymun='$d_dlsymun'
15491 d_dosuid='$d_dosuid'
15492 d_drand48proto='$d_drand48proto'
15493 d_dup2='$d_dup2'
15494 d_eaccess='$d_eaccess'
15495 d_endgrent='$d_endgrent'
15496 d_endhent='$d_endhent'
15497 d_endnent='$d_endnent'
15498 d_endpent='$d_endpent'
15499 d_endpwent='$d_endpwent'
15500 d_endsent='$d_endsent'
15501 d_eofnblk='$d_eofnblk'
15502 d_eunice='$d_eunice'
15503 d_fchmod='$d_fchmod'
15504 d_fchown='$d_fchown'
15505 d_fcntl='$d_fcntl'
15506 d_fd_macros='$d_fd_macros'
15507 d_fd_set='$d_fd_set'
15508 d_fds_bits='$d_fds_bits'
15509 d_fgetpos='$d_fgetpos'
15510 d_flexfnam='$d_flexfnam'
15511 d_flock='$d_flock'
15512 d_fork='$d_fork'
15513 d_fpathconf='$d_fpathconf'
15514 d_fpos64_t='$d_fpos64_t'
15515 d_frexpl='$d_frexpl'
15516 d_fs_data_s='$d_fs_data_s'
15517 d_fseeko='$d_fseeko'
15518 d_fsetpos='$d_fsetpos'
15519 d_fstatfs='$d_fstatfs'
15520 d_fstatvfs='$d_fstatvfs'
15521 d_ftello='$d_ftello'
15522 d_ftime='$d_ftime'
15523 d_getcwd='$d_getcwd'
15524 d_getespwnam='$d_getespwnam'
15525 d_getfsstat='$d_getfsstat'
15526 d_getgrent='$d_getgrent'
15527 d_getgrps='$d_getgrps'
15528 d_gethbyaddr='$d_gethbyaddr'
15529 d_gethbyname='$d_gethbyname'
15530 d_gethent='$d_gethent'
15531 d_gethname='$d_gethname'
15532 d_gethostprotos='$d_gethostprotos'
15533 d_getlogin='$d_getlogin'
15534 d_getmnt='$d_getmnt'
15535 d_getmntent='$d_getmntent'
15536 d_getnbyaddr='$d_getnbyaddr'
15537 d_getnbyname='$d_getnbyname'
15538 d_getnent='$d_getnent'
15539 d_getnetprotos='$d_getnetprotos'
15540 d_getpbyname='$d_getpbyname'
15541 d_getpbynumber='$d_getpbynumber'
15542 d_getpent='$d_getpent'
15543 d_getpgid='$d_getpgid'
15544 d_getpgrp2='$d_getpgrp2'
15545 d_getpgrp='$d_getpgrp'
15546 d_getppid='$d_getppid'
15547 d_getprior='$d_getprior'
15548 d_getprotoprotos='$d_getprotoprotos'
15549 d_getprpwnam='$d_getprpwnam'
15550 d_getpwent='$d_getpwent'
15551 d_getsbyname='$d_getsbyname'
15552 d_getsbyport='$d_getsbyport'
15553 d_getsent='$d_getsent'
15554 d_getservprotos='$d_getservprotos'
15555 d_getspnam='$d_getspnam'
15556 d_gettimeod='$d_gettimeod'
15557 d_gnulibc='$d_gnulibc'
15558 d_grpasswd='$d_grpasswd'
15559 d_hasmntopt='$d_hasmntopt'
15560 d_htonl='$d_htonl'
15561 d_iconv='$d_iconv'
15562 d_index='$d_index'
15563 d_inetaton='$d_inetaton'
15564 d_int64_t='$d_int64_t'
15565 d_isascii='$d_isascii'
15566 d_isnan='$d_isnan'
15567 d_isnanl='$d_isnanl'
15568 d_killpg='$d_killpg'
15569 d_lchown='$d_lchown'
15570 d_ldbl_dig='$d_ldbl_dig'
15571 d_link='$d_link'
15572 d_locconv='$d_locconv'
15573 d_lockf='$d_lockf'
15574 d_longdbl='$d_longdbl'
15575 d_longlong='$d_longlong'
15576 d_lseekproto='$d_lseekproto'
15577 d_lstat='$d_lstat'
15578 d_madvise='$d_madvise'
15579 d_mblen='$d_mblen'
15580 d_mbstowcs='$d_mbstowcs'
15581 d_mbtowc='$d_mbtowc'
15582 d_memchr='$d_memchr'
15583 d_memcmp='$d_memcmp'
15584 d_memcpy='$d_memcpy'
15585 d_memmove='$d_memmove'
15586 d_memset='$d_memset'
15587 d_mkdir='$d_mkdir'
15588 d_mkdtemp='$d_mkdtemp'
15589 d_mkfifo='$d_mkfifo'
15590 d_mkstemp='$d_mkstemp'
15591 d_mkstemps='$d_mkstemps'
15592 d_mktime='$d_mktime'
15593 d_mmap='$d_mmap'
15594 d_modfl='$d_modfl'
15595 d_mprotect='$d_mprotect'
15596 d_msg='$d_msg'
15597 d_msg_ctrunc='$d_msg_ctrunc'
15598 d_msg_dontroute='$d_msg_dontroute'
15599 d_msg_oob='$d_msg_oob'
15600 d_msg_peek='$d_msg_peek'
15601 d_msg_proxy='$d_msg_proxy'
15602 d_msgctl='$d_msgctl'
15603 d_msgget='$d_msgget'
15604 d_msgrcv='$d_msgrcv'
15605 d_msgsnd='$d_msgsnd'
15606 d_msync='$d_msync'
15607 d_munmap='$d_munmap'
15608 d_mymalloc='$d_mymalloc'
15609 d_nice='$d_nice'
15610 d_nv_preserves_uv='$d_nv_preserves_uv'
15611 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15612 d_off64_t='$d_off64_t'
15613 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15614 d_oldpthreads='$d_oldpthreads'
15615 d_oldsock='$d_oldsock'
15616 d_open3='$d_open3'
15617 d_pathconf='$d_pathconf'
15618 d_pause='$d_pause'
15619 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15620 d_phostname='$d_phostname'
15621 d_pipe='$d_pipe'
15622 d_poll='$d_poll'
15623 d_portable='$d_portable'
15624 d_pthread_yield='$d_pthread_yield'
15625 d_pwage='$d_pwage'
15626 d_pwchange='$d_pwchange'
15627 d_pwclass='$d_pwclass'
15628 d_pwcomment='$d_pwcomment'
15629 d_pwexpire='$d_pwexpire'
15630 d_pwgecos='$d_pwgecos'
15631 d_pwpasswd='$d_pwpasswd'
15632 d_pwquota='$d_pwquota'
15633 d_qgcvt='$d_qgcvt'
15634 d_quad='$d_quad'
15635 d_readdir='$d_readdir'
15636 d_readlink='$d_readlink'
15637 d_rename='$d_rename'
15638 d_rewinddir='$d_rewinddir'
15639 d_rmdir='$d_rmdir'
15640 d_safebcpy='$d_safebcpy'
15641 d_safemcpy='$d_safemcpy'
15642 d_sanemcmp='$d_sanemcmp'
15643 d_sched_yield='$d_sched_yield'
15644 d_scm_rights='$d_scm_rights'
15645 d_seekdir='$d_seekdir'
15646 d_select='$d_select'
15647 d_sem='$d_sem'
15648 d_semctl='$d_semctl'
15649 d_semctl_semid_ds='$d_semctl_semid_ds'
15650 d_semctl_semun='$d_semctl_semun'
15651 d_semget='$d_semget'
15652 d_semop='$d_semop'
15653 d_setegid='$d_setegid'
15654 d_seteuid='$d_seteuid'
15655 d_setgrent='$d_setgrent'
15656 d_setgrps='$d_setgrps'
15657 d_sethent='$d_sethent'
15658 d_setlinebuf='$d_setlinebuf'
15659 d_setlocale='$d_setlocale'
15660 d_setnent='$d_setnent'
15661 d_setpent='$d_setpent'
15662 d_setpgid='$d_setpgid'
15663 d_setpgrp2='$d_setpgrp2'
15664 d_setpgrp='$d_setpgrp'
15665 d_setprior='$d_setprior'
15666 d_setproctitle='$d_setproctitle'
15667 d_setpwent='$d_setpwent'
15668 d_setregid='$d_setregid'
15669 d_setresgid='$d_setresgid'
15670 d_setresuid='$d_setresuid'
15671 d_setreuid='$d_setreuid'
15672 d_setrgid='$d_setrgid'
15673 d_setruid='$d_setruid'
15674 d_setsent='$d_setsent'
15675 d_setsid='$d_setsid'
15676 d_setvbuf='$d_setvbuf'
15677 d_sfio='$d_sfio'
15678 d_shm='$d_shm'
15679 d_shmat='$d_shmat'
15680 d_shmatprototype='$d_shmatprototype'
15681 d_shmctl='$d_shmctl'
15682 d_shmdt='$d_shmdt'
15683 d_shmget='$d_shmget'
15684 d_sigaction='$d_sigaction'
15685 d_sigsetjmp='$d_sigsetjmp'
15686 d_socket='$d_socket'
15687 d_socklen_t='$d_socklen_t'
15688 d_sockpair='$d_sockpair'
15689 d_socks5_init='$d_socks5_init'
15690 d_sqrtl='$d_sqrtl'
15691 d_statblks='$d_statblks'
15692 d_statfs_f_flags='$d_statfs_f_flags'
15693 d_statfs_s='$d_statfs_s'
15694 d_statvfs='$d_statvfs'
15695 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15696 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15697 d_stdio_stream_array='$d_stdio_stream_array'
15698 d_stdiobase='$d_stdiobase'
15699 d_stdstdio='$d_stdstdio'
15700 d_strchr='$d_strchr'
15701 d_strcoll='$d_strcoll'
15702 d_strctcpy='$d_strctcpy'
15703 d_strerrm='$d_strerrm'
15704 d_strerror='$d_strerror'
15705 d_strtod='$d_strtod'
15706 d_strtol='$d_strtol'
15707 d_strtold='$d_strtold'
15708 d_strtoll='$d_strtoll'
15709 d_strtoul='$d_strtoul'
15710 d_strtoull='$d_strtoull'
15711 d_strtouq='$d_strtouq'
15712 d_strxfrm='$d_strxfrm'
15713 d_suidsafe='$d_suidsafe'
15714 d_symlink='$d_symlink'
15715 d_syscall='$d_syscall'
15716 d_sysconf='$d_sysconf'
15717 d_sysernlst='$d_sysernlst'
15718 d_syserrlst='$d_syserrlst'
15719 d_system='$d_system'
15720 d_tcgetpgrp='$d_tcgetpgrp'
15721 d_tcsetpgrp='$d_tcsetpgrp'
15722 d_telldir='$d_telldir'
15723 d_telldirproto='$d_telldirproto'
15724 d_time='$d_time'
15725 d_times='$d_times'
15726 d_truncate='$d_truncate'
15727 d_tzname='$d_tzname'
15728 d_umask='$d_umask'
15729 d_uname='$d_uname'
15730 d_union_semun='$d_union_semun'
15731 d_ustat='$d_ustat'
15732 d_vendorarch='$d_vendorarch'
15733 d_vendorbin='$d_vendorbin'
15734 d_vendorlib='$d_vendorlib'
15735 d_vfork='$d_vfork'
15736 d_void_closedir='$d_void_closedir'
15737 d_voidsig='$d_voidsig'
15738 d_voidtty='$d_voidtty'
15739 d_volatile='$d_volatile'
15740 d_vprintf='$d_vprintf'
15741 d_wait4='$d_wait4'
15742 d_waitpid='$d_waitpid'
15743 d_wcstombs='$d_wcstombs'
15744 d_wctomb='$d_wctomb'
15745 d_xenix='$d_xenix'
15746 date='$date'
15747 db_hashtype='$db_hashtype'
15748 db_prefixtype='$db_prefixtype'
15749 defvoidused='$defvoidused'
15750 direntrytype='$direntrytype'
15751 dlext='$dlext'
15752 dlsrc='$dlsrc'
15753 doublesize='$doublesize'
15754 drand01='$drand01'
15755 dynamic_ext='$dynamic_ext'
15756 eagain='$eagain'
15757 ebcdic='$ebcdic'
15758 echo='$echo'
15759 egrep='$egrep'
15760 emacs='$emacs'
15761 eunicefix='$eunicefix'
15762 exe_ext='$exe_ext'
15763 expr='$expr'
15764 extensions='$extensions'
15765 fflushNULL='$fflushNULL'
15766 fflushall='$fflushall'
15767 find='$find'
15768 firstmakefile='$firstmakefile'
15769 flex='$flex'
15770 fpossize='$fpossize'
15771 fpostype='$fpostype'
15772 freetype='$freetype'
15773 full_ar='$full_ar'
15774 full_csh='$full_csh'
15775 full_sed='$full_sed'
15776 gccosandvers='$gccosandvers'
15777 gccversion='$gccversion'
15778 gidformat='$gidformat'
15779 gidsign='$gidsign'
15780 gidsize='$gidsize'
15781 gidtype='$gidtype'
15782 glibpth='$glibpth'
15783 grep='$grep'
15784 groupcat='$groupcat'
15785 groupstype='$groupstype'
15786 gzip='$gzip'
15787 h_fcntl='$h_fcntl'
15788 h_sysfile='$h_sysfile'
15789 hint='$hint'
15790 hostcat='$hostcat'
15791 huge='$huge'
15792 i16size='$i16size'
15793 i16type='$i16type'
15794 i32size='$i32size'
15795 i32type='$i32type'
15796 i64size='$i64size'
15797 i64type='$i64type'
15798 i8size='$i8size'
15799 i8type='$i8type'
15800 i_arpainet='$i_arpainet'
15801 i_bsdioctl='$i_bsdioctl'
15802 i_db='$i_db'
15803 i_dbm='$i_dbm'
15804 i_dirent='$i_dirent'
15805 i_dld='$i_dld'
15806 i_dlfcn='$i_dlfcn'
15807 i_fcntl='$i_fcntl'
15808 i_float='$i_float'
15809 i_gdbm='$i_gdbm'
15810 i_grp='$i_grp'
15811 i_iconv='$i_iconv'
15812 i_ieeefp='$i_ieeefp'
15813 i_inttypes='$i_inttypes'
15814 i_libutil='$i_libutil'
15815 i_limits='$i_limits'
15816 i_locale='$i_locale'
15817 i_machcthr='$i_machcthr'
15818 i_malloc='$i_malloc'
15819 i_math='$i_math'
15820 i_memory='$i_memory'
15821 i_mntent='$i_mntent'
15822 i_ndbm='$i_ndbm'
15823 i_netdb='$i_netdb'
15824 i_neterrno='$i_neterrno'
15825 i_netinettcp='$i_netinettcp'
15826 i_niin='$i_niin'
15827 i_poll='$i_poll'
15828 i_prot='$i_prot'
15829 i_pthread='$i_pthread'
15830 i_pwd='$i_pwd'
15831 i_rpcsvcdbm='$i_rpcsvcdbm'
15832 i_sfio='$i_sfio'
15833 i_sgtty='$i_sgtty'
15834 i_shadow='$i_shadow'
15835 i_socks='$i_socks'
15836 i_stdarg='$i_stdarg'
15837 i_stddef='$i_stddef'
15838 i_stdlib='$i_stdlib'
15839 i_string='$i_string'
15840 i_sunmath='$i_sunmath'
15841 i_sysaccess='$i_sysaccess'
15842 i_sysdir='$i_sysdir'
15843 i_sysfile='$i_sysfile'
15844 i_sysfilio='$i_sysfilio'
15845 i_sysin='$i_sysin'
15846 i_sysioctl='$i_sysioctl'
15847 i_syslog='$i_syslog'
15848 i_sysmman='$i_sysmman'
15849 i_sysmode='$i_sysmode'
15850 i_sysmount='$i_sysmount'
15851 i_sysndir='$i_sysndir'
15852 i_sysparam='$i_sysparam'
15853 i_sysresrc='$i_sysresrc'
15854 i_syssecrt='$i_syssecrt'
15855 i_sysselct='$i_sysselct'
15856 i_syssockio='$i_syssockio'
15857 i_sysstat='$i_sysstat'
15858 i_sysstatfs='$i_sysstatfs'
15859 i_sysstatvfs='$i_sysstatvfs'
15860 i_systime='$i_systime'
15861 i_systimek='$i_systimek'
15862 i_systimes='$i_systimes'
15863 i_systypes='$i_systypes'
15864 i_sysuio='$i_sysuio'
15865 i_sysun='$i_sysun'
15866 i_sysutsname='$i_sysutsname'
15867 i_sysvfs='$i_sysvfs'
15868 i_syswait='$i_syswait'
15869 i_termio='$i_termio'
15870 i_termios='$i_termios'
15871 i_time='$i_time'
15872 i_unistd='$i_unistd'
15873 i_ustat='$i_ustat'
15874 i_utime='$i_utime'
15875 i_values='$i_values'
15876 i_varargs='$i_varargs'
15877 i_varhdr='$i_varhdr'
15878 i_vfork='$i_vfork'
15879 ignore_versioned_solibs='$ignore_versioned_solibs'
15880 inc_version_list='$inc_version_list'
15881 inc_version_list_init='$inc_version_list_init'
15882 incpath='$incpath'
15883 inews='$inews'
15884 installarchlib='$installarchlib'
15885 installbin='$installbin'
15886 installman1dir='$installman1dir'
15887 installman3dir='$installman3dir'
15888 installprefix='$installprefix'
15889 installprefixexp='$installprefixexp'
15890 installprivlib='$installprivlib'
15891 installscript='$installscript'
15892 installsitearch='$installsitearch'
15893 installsitebin='$installsitebin'
15894 installsitelib='$installsitelib'
15895 installstyle='$installstyle'
15896 installusrbinperl='$installusrbinperl'
15897 installvendorarch='$installvendorarch'
15898 installvendorbin='$installvendorbin'
15899 installvendorlib='$installvendorlib'
15900 intsize='$intsize'
15901 ivdformat='$ivdformat'
15902 ivsize='$ivsize'
15903 ivtype='$ivtype'
15904 known_extensions='$known_extensions'
15905 ksh='$ksh'
15906 large='$large'
15907 ld='$ld'
15908 lddlflags='$lddlflags'
15909 ldflags='$ldflags'
15910 ldflags_uselargefiles='$ldflags_uselargefiles'
15911 ldlibpthname='$ldlibpthname'
15912 less='$less'
15913 lib_ext='$lib_ext'
15914 libc='$libc'
15915 libperl='$libperl'
15916 libpth='$libpth'
15917 libs='$libs'
15918 libsdirs='$libsdirs'
15919 libsfiles='$libsfiles'
15920 libsfound='$libsfound'
15921 libspath='$libspath'
15922 libswanted='$libswanted'
15923 libswanted_uselargefiles='$libswanted_uselargefiles'
15924 line='$line'
15925 lint='$lint'
15926 lkflags='$lkflags'
15927 ln='$ln'
15928 lns='$lns'
15929 locincpth='$locincpth'
15930 loclibpth='$loclibpth'
15931 longdblsize='$longdblsize'
15932 longlongsize='$longlongsize'
15933 longsize='$longsize'
15934 lp='$lp'
15935 lpr='$lpr'
15936 ls='$ls'
15937 lseeksize='$lseeksize'
15938 lseektype='$lseektype'
15939 mail='$mail'
15940 mailx='$mailx'
15941 make='$make'
15942 make_set_make='$make_set_make'
15943 mallocobj='$mallocobj'
15944 mallocsrc='$mallocsrc'
15945 malloctype='$malloctype'
15946 man1dir='$man1dir'
15947 man1direxp='$man1direxp'
15948 man1ext='$man1ext'
15949 man3dir='$man3dir'
15950 man3direxp='$man3direxp'
15951 man3ext='$man3ext'
15952 medium='$medium'
15953 mips_type='$mips_type'
15954 mkdir='$mkdir'
15955 mmaptype='$mmaptype'
15956 models='$models'
15957 modetype='$modetype'
15958 more='$more'
15959 multiarch='$multiarch'
15960 mv='$mv'
15961 myarchname='$myarchname'
15962 mydomain='$mydomain'
15963 myhostname='$myhostname'
15964 myuname='$myuname'
15965 n='$n'
15966 netdb_hlen_type='$netdb_hlen_type'
15967 netdb_host_type='$netdb_host_type'
15968 netdb_name_type='$netdb_name_type'
15969 netdb_net_type='$netdb_net_type'
15970 nm='$nm'
15971 nm_opt='$nm_opt'
15972 nm_so_opt='$nm_so_opt'
15973 nonxs_ext='$nonxs_ext'
15974 nroff='$nroff'
15975 nvEformat='$nvEformat'
15976 nvFformat='$nvFformat'
15977 nvGformat='$nvGformat'
15978 nveformat='$nveformat'
15979 nvfformat='$nvfformat'
15980 nvgformat='$nvgformat'
15981 nvsize='$nvsize'
15982 nvtype='$nvtype'
15983 o_nonblock='$o_nonblock'
15984 obj_ext='$obj_ext'
15985 old_pthread_create_joinable='$old_pthread_create_joinable'
15986 optimize='$optimize'
15987 orderlib='$orderlib'
15988 osname='$osname'
15989 osvers='$osvers'
15990 otherlibdirs='$otherlibdirs'
15991 package='$package'
15992 pager='$pager'
15993 passcat='$passcat'
15994 patchlevel='$patchlevel'
15995 path_sep='$path_sep'
15996 perl5='$perl5'
15997 perl='$perl'
15998 perladmin='$perladmin'
15999 perlpath='$perlpath'
16000 pg='$pg'
16001 phostname='$phostname'
16002 pidtype='$pidtype'
16003 plibpth='$plibpth'
16004 pm_apiversion='$pm_apiversion'
16005 pmake='$pmake'
16006 pr='$pr'
16007 prefix='$prefix'
16008 prefixexp='$prefixexp'
16009 privlib='$privlib'
16010 privlibexp='$privlibexp'
16011 prototype='$prototype'
16012 ptrsize='$ptrsize'
16013 quadkind='$quadkind'
16014 quadtype='$quadtype'
16015 randbits='$randbits'
16016 randfunc='$randfunc'
16017 randseedtype='$randseedtype'
16018 ranlib='$ranlib'
16019 rd_nodata='$rd_nodata'
16020 revision='$revision'
16021 rm='$rm'
16022 rmail='$rmail'
16023 runnm='$runnm'
16024 sPRIEldbl='$sPRIEldbl'
16025 sPRIFldbl='$sPRIFldbl'
16026 sPRIGldbl='$sPRIGldbl'
16027 sPRIX64='$sPRIX64'
16028 sPRId64='$sPRId64'
16029 sPRIeldbl='$sPRIeldbl'
16030 sPRIfldbl='$sPRIfldbl'
16031 sPRIgldbl='$sPRIgldbl'
16032 sPRIi64='$sPRIi64'
16033 sPRIo64='$sPRIo64'
16034 sPRIu64='$sPRIu64'
16035 sPRIx64='$sPRIx64'
16036 sSCNfldbl='$sSCNfldbl'
16037 sched_yield='$sched_yield'
16038 scriptdir='$scriptdir'
16039 scriptdirexp='$scriptdirexp'
16040 sed='$sed'
16041 seedfunc='$seedfunc'
16042 selectminbits='$selectminbits'
16043 selecttype='$selecttype'
16044 sendmail='$sendmail'
16045 sh='$sh'
16046 shar='$shar'
16047 sharpbang='$sharpbang'
16048 shmattype='$shmattype'
16049 shortsize='$shortsize'
16050 shrpenv='$shrpenv'
16051 shsharp='$shsharp'
16052 sig_count='$sig_count'
16053 sig_name='$sig_name'
16054 sig_name_init='$sig_name_init'
16055 sig_num='$sig_num'
16056 sig_num_init='$sig_num_init'
16057 signal_t='$signal_t'
16058 sitearch='$sitearch'
16059 sitearchexp='$sitearchexp'
16060 sitebin='$sitebin'
16061 sitebinexp='$sitebinexp'
16062 sitelib='$sitelib'
16063 sitelib_stem='$sitelib_stem'
16064 sitelibexp='$sitelibexp'
16065 siteprefix='$siteprefix'
16066 siteprefixexp='$siteprefixexp'
16067 sizesize='$sizesize'
16068 sizetype='$sizetype'
16069 sleep='$sleep'
16070 smail='$smail'
16071 small='$small'
16072 so='$so'
16073 sockethdr='$sockethdr'
16074 socketlib='$socketlib'
16075 socksizetype='$socksizetype'
16076 sort='$sort'
16077 spackage='$spackage'
16078 spitshell='$spitshell'
16079 split='$split'
16080 src='$src'
16081 ssizetype='$ssizetype'
16082 startperl='$startperl'
16083 startsh='$startsh'
16084 static_ext='$static_ext'
16085 stdchar='$stdchar'
16086 stdio_base='$stdio_base'
16087 stdio_bufsiz='$stdio_bufsiz'
16088 stdio_cnt='$stdio_cnt'
16089 stdio_filbuf='$stdio_filbuf'
16090 stdio_ptr='$stdio_ptr'
16091 stdio_stream_array='$stdio_stream_array'
16092 strings='$strings'
16093 submit='$submit'
16094 subversion='$subversion'
16095 sysman='$sysman'
16096 tail='$tail'
16097 tar='$tar'
16098 tbl='$tbl'
16099 tee='$tee'
16100 test='$test'
16101 timeincl='$timeincl'
16102 timetype='$timetype'
16103 touch='$touch'
16104 tr='$tr'
16105 trnl='$trnl'
16106 troff='$troff'
16107 u16size='$u16size'
16108 u16type='$u16type'
16109 u32size='$u32size'
16110 u32type='$u32type'
16111 u64size='$u64size'
16112 u64type='$u64type'
16113 u8size='$u8size'
16114 u8type='$u8type'
16115 uidformat='$uidformat'
16116 uidsign='$uidsign'
16117 uidsize='$uidsize'
16118 uidtype='$uidtype'
16119 uname='$uname'
16120 uniq='$uniq'
16121 uquadtype='$uquadtype'
16122 use5005threads='$use5005threads'
16123 use64bitall='$use64bitall'
16124 use64bitint='$use64bitint'
16125 usedl='$usedl'
16126 useithreads='$useithreads'
16127 uselargefiles='$uselargefiles'
16128 uselongdouble='$uselongdouble'
16129 usemorebits='$usemorebits'
16130 usemultiplicity='$usemultiplicity'
16131 usemymalloc='$usemymalloc'
16132 usenm='$usenm'
16133 useopcode='$useopcode'
16134 useperlio='$useperlio'
16135 useposix='$useposix'
16136 usesfio='$usesfio'
16137 useshrplib='$useshrplib'
16138 usesocks='$usesocks'
16139 usethreads='$usethreads'
16140 usevendorprefix='$usevendorprefix'
16141 usevfork='$usevfork'
16142 usrinc='$usrinc'
16143 uuname='$uuname'
16144 uvXformat='$uvXformat'
16145 uvoformat='$uvoformat'
16146 uvsize='$uvsize'
16147 uvtype='$uvtype'
16148 uvuformat='$uvuformat'
16149 uvxformat='$uvxformat'
16150 vendorarch='$vendorarch'
16151 vendorarchexp='$vendorarchexp'
16152 vendorbin='$vendorbin'
16153 vendorbinexp='$vendorbinexp'
16154 vendorlib='$vendorlib'
16155 vendorlib_stem='$vendorlib_stem'
16156 vendorlibexp='$vendorlibexp'
16157 vendorprefix='$vendorprefix'
16158 vendorprefixexp='$vendorprefixexp'
16159 version='$version'
16160 vi='$vi'
16161 voidflags='$voidflags'
16162 xlibpth='$xlibpth'
16163 xs_apiversion='$xs_apiversion'
16164 zcat='$zcat'
16165 zip='$zip'
16166 EOT
16167
16168 : Add in command line options if available
16169 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16170
16171 : add special variables
16172 $test -f $src/patchlevel.h && \
16173 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16174 echo "CONFIGDOTSH=true" >>config.sh
16175
16176 : propagate old symbols
16177 if $test -f UU/config.sh; then
16178         <UU/config.sh sort | uniq >UU/oldconfig.sh
16179         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16180         sort | uniq -u >UU/oldsyms
16181         set X `cat UU/oldsyms`
16182         shift
16183         case $# in
16184         0) ;;
16185         *)
16186                 cat <<EOM
16187 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16188 EOM
16189                 echo "# Variables propagated from previous config.sh file." >>config.sh
16190                 for sym in `cat UU/oldsyms`; do
16191                         echo "    Propagating $hint variable "'$'"$sym..."
16192                         eval 'tmp="$'"${sym}"'"'
16193                         echo "$tmp" | \
16194                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16195                 done
16196                 ;;
16197         esac
16198 fi
16199
16200 : Finish up by extracting the .SH files
16201 case "$alldone" in
16202 exit)
16203         $rm -rf UU
16204         echo "Done."
16205         exit 0
16206         ;;
16207 cont)
16208         ;;
16209 '')
16210         dflt=''
16211         nostick=true
16212         $cat <<EOM
16213
16214 If you'd like to make any changes to the config.sh file before I begin
16215 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16216
16217 EOM
16218         rp="Press return or use a shell escape to edit config.sh:"
16219         . UU/myread
16220         nostick=''
16221         case "$ans" in
16222         '') ;;
16223         *) : in case they cannot read
16224                 sh 1>&4 -c "$ans";;
16225         esac
16226         ;;
16227 esac
16228
16229 : if this fails, just run all the .SH files by hand
16230 . ./config.sh
16231
16232 echo " "
16233 exec 1>&4
16234 . ./UU/extract
16235
16236 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16237         dflt=y
16238         case "$silent" in
16239         true) ;;
16240         *)
16241                 $cat <<EOM
16242
16243 Now you need to generate make dependencies by running "$make depend".
16244 You might prefer to run it in background: "$make depend > makedepend.out &"
16245 It can take a while, so you might not want to run it right now.
16246
16247 EOM
16248                 ;;
16249         esac
16250         rp="Run $make depend now?"
16251         . UU/myread
16252         case "$ans" in
16253         y*)
16254                 $make depend && echo "Now you must run a $make."
16255                 ;;
16256         *)
16257                 echo "You must run '$make depend' then '$make'."
16258                 ;;
16259         esac
16260 elif test -f [Mm]akefile; then
16261         echo " "
16262         echo "Now you must run a $make."
16263 else
16264         echo "Done."
16265 fi
16266
16267 if $test -f Policy.sh; then
16268     $cat <<EOM
16269
16270 If you compile $package on a different machine or from a different object
16271 directory, copy the Policy.sh file from this object directory to the
16272 new one before you run Configure -- this will help you with most of
16273 the policy defaults.
16274
16275 EOM
16276 fi
16277 if $test -f config.msg; then
16278     echo "Hmm.  I also noted the following information while running:"
16279     echo " "
16280     $cat config.msg >&4
16281     $rm -f config.msg
16282 fi
16283 $rm -f kit*isdone ark*isdone
16284 $rm -rf UU
16285
16286 : End of Configure
16287