25a149c1387de1d8809051805c267352244023f0
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Fri Feb  4 21:15:39 EET 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 charsize=''
302 contains=''
303 cpp_stuff=''
304 cpplast=''
305 cppminus=''
306 cpprun=''
307 cppstdin=''
308 crosscompile=''
309 d_access=''
310 d_accessx=''
311 d_alarm=''
312 d_attribut=''
313 d_bcmp=''
314 d_bcopy=''
315 d_bzero=''
316 d_casti32=''
317 castflags=''
318 d_castneg=''
319 d_chown=''
320 d_chroot=''
321 d_chsize=''
322 d_closedir=''
323 d_void_closedir=''
324 d_const=''
325 cryptlib=''
326 d_crypt=''
327 d_csh=''
328 full_csh=''
329 d_cuserid=''
330 d_dbl_dig=''
331 d_difftime=''
332 d_dlerror=''
333 d_dlopen=''
334 d_dlsymun=''
335 d_dosuid=''
336 d_suidsafe=''
337 d_drand48proto=''
338 d_dup2=''
339 d_eaccess=''
340 d_endgrent=''
341 d_endhent=''
342 d_endnent=''
343 d_endpent=''
344 d_endpwent=''
345 d_endsent=''
346 d_endspent=''
347 d_fchmod=''
348 d_fchown=''
349 d_fcntl=''
350 d_fd_macros=''
351 d_fd_set=''
352 d_fds_bits=''
353 d_fgetpos=''
354 d_flexfnam=''
355 d_flock=''
356 d_fork=''
357 d_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_getgrent=''
366 d_getgrps=''
367 d_gethbyaddr=''
368 d_gethbyname=''
369 d_gethent=''
370 aphostname=''
371 d_gethname=''
372 d_phostname=''
373 d_uname=''
374 d_gethostprotos=''
375 d_getlogin=''
376 d_getmnt=''
377 d_getmntent=''
378 d_getnbyaddr=''
379 d_getnbyname=''
380 d_getnent=''
381 d_getnetprotos=''
382 d_getpent=''
383 d_getpgid=''
384 d_getpgrp2=''
385 d_bsdgetpgrp=''
386 d_getpgrp=''
387 d_getppid=''
388 d_getprior=''
389 d_getpbyname=''
390 d_getpbynumber=''
391 d_getprotoprotos=''
392 d_getpwent=''
393 d_getsent=''
394 d_getservprotos=''
395 d_getspent=''
396 d_getspnam=''
397 d_getsbyname=''
398 d_getsbyport=''
399 d_gnulibc=''
400 d_hasmntopt=''
401 d_htonl=''
402 d_iconv=''
403 d_inetaton=''
404 d_int64t=''
405 d_isascii=''
406 d_killpg=''
407 d_lchown=''
408 d_ldbl_dig=''
409 d_link=''
410 d_locconv=''
411 d_lockf=''
412 d_longdbl=''
413 longdblsize=''
414 d_longlong=''
415 longlongsize=''
416 d_lstat=''
417 d_mblen=''
418 d_mbstowcs=''
419 d_mbtowc=''
420 d_memchr=''
421 d_memcmp=''
422 d_memcpy=''
423 d_memmove=''
424 d_memset=''
425 d_mkdir=''
426 d_mkfifo=''
427 d_mktime=''
428 d_msg=''
429 d_msgctl=''
430 d_msgget=''
431 d_msgrcv=''
432 d_msgsnd=''
433 d_nice=''
434 d_open3=''
435 d_fpathconf=''
436 d_pathconf=''
437 d_pause=''
438 d_pipe=''
439 d_poll=''
440 d_portable=''
441 d_old_pthread_create_joinable=''
442 old_pthread_create_joinable=''
443 d_pthread_yield=''
444 d_sched_yield=''
445 sched_yield=''
446 d_readdir=''
447 d_rewinddir=''
448 d_seekdir=''
449 d_telldir=''
450 d_readlink=''
451 d_rename=''
452 d_rmdir=''
453 d_safebcpy=''
454 d_safemcpy=''
455 d_sanemcmp=''
456 d_select=''
457 d_sem=''
458 d_semctl=''
459 d_semget=''
460 d_semop=''
461 d_setegid=''
462 d_seteuid=''
463 d_setgrent=''
464 d_setgrps=''
465 d_sethent=''
466 d_setlinebuf=''
467 d_setlocale=''
468 d_setnent=''
469 d_setpent=''
470 d_setpgid=''
471 d_setpgrp2=''
472 d_bsdsetpgrp=''
473 d_setpgrp=''
474 d_setprior=''
475 d_setpwent=''
476 d_setregid=''
477 d_setresgid=''
478 d_setresuid=''
479 d_setreuid=''
480 d_setrgid=''
481 d_setruid=''
482 d_setsent=''
483 d_setsid=''
484 d_setspent=''
485 d_setvbuf=''
486 d_sfio=''
487 usesfio=''
488 d_shm=''
489 d_shmat=''
490 d_shmatprototype=''
491 shmattype=''
492 d_shmctl=''
493 d_shmdt=''
494 d_shmget=''
495 d_sigaction=''
496 d_sigsetjmp=''
497 d_msg_ctrunc=''
498 d_msg_dontroute=''
499 d_msg_oob=''
500 d_msg_peek=''
501 d_msg_proxy=''
502 d_oldsock=''
503 d_scm_rights=''
504 d_socket=''
505 d_sockpair=''
506 sockethdr=''
507 socketlib=''
508 d_sqrtl=''
509 d_statblks=''
510 d_statfs_f_flags=''
511 d_statfs_s=''
512 d_fstatvfs=''
513 d_statvfs=''
514 d_stdio_cnt_lval=''
515 d_stdio_ptr_lval=''
516 d_stdiobase=''
517 d_stdstdio=''
518 stdio_base=''
519 stdio_bufsiz=''
520 stdio_cnt=''
521 stdio_filbuf=''
522 stdio_ptr=''
523 d_index=''
524 d_strchr=''
525 d_strcoll=''
526 d_strctcpy=''
527 d_strerrm=''
528 d_strerror=''
529 d_sysernlst=''
530 d_syserrlst=''
531 d_strtod=''
532 d_strtol=''
533 d_strtold=''
534 d_strtoll=''
535 d_strtoul=''
536 d_strtoull=''
537 d_strtouq=''
538 d_strxfrm=''
539 d_symlink=''
540 d_syscall=''
541 d_sysconf=''
542 d_system=''
543 d_tcgetpgrp=''
544 d_tcsetpgrp=''
545 d_telldirproto=''
546 d_time=''
547 timetype=''
548 clocktype=''
549 d_times=''
550 d_truncate=''
551 d_tzname=''
552 d_umask=''
553 d_semctl_semid_ds=''
554 d_semctl_semun=''
555 d_union_semun=''
556 d_ustat=''
557 d_vfork=''
558 usevfork=''
559 d_voidsig=''
560 signal_t=''
561 d_volatile=''
562 d_charvspr=''
563 d_vprintf=''
564 d_wait4=''
565 d_waitpid=''
566 d_wcstombs=''
567 d_wctomb=''
568 dlext=''
569 cccdlflags=''
570 ccdlflags=''
571 dlsrc=''
572 ld=''
573 lddlflags=''
574 usedl=''
575 doublesize=''
576 ebcdic=''
577 fflushNULL=''
578 fflushall=''
579 fpossize=''
580 fpostype=''
581 gidformat=''
582 gidsign=''
583 gidsize=''
584 gidtype=''
585 groupstype=''
586 h_fcntl=''
587 h_sysfile=''
588 i_arpainet=''
589 db_hashtype=''
590 db_prefixtype=''
591 i_db=''
592 i_dbm=''
593 i_rpcsvcdbm=''
594 d_dirnamlen=''
595 direntrytype=''
596 i_dirent=''
597 i_dld=''
598 i_dlfcn=''
599 i_fcntl=''
600 i_float=''
601 i_gdbm=''
602 d_grpasswd=''
603 i_grp=''
604 i_iconv=''
605 i_inttypes=''
606 i_limits=''
607 i_locale=''
608 i_machcthr=''
609 i_malloc=''
610 i_math=''
611 i_memory=''
612 i_mntent=''
613 i_ndbm=''
614 i_netdb=''
615 i_neterrno=''
616 i_netinettcp=''
617 i_niin=''
618 i_sysin=''
619 i_poll=''
620 i_pthread=''
621 d_pwage=''
622 d_pwchange=''
623 d_pwclass=''
624 d_pwcomment=''
625 d_pwexpire=''
626 d_pwgecos=''
627 d_pwpasswd=''
628 d_pwquota=''
629 i_pwd=''
630 i_sfio=''
631 i_shadow=''
632 i_socks=''
633 i_stddef=''
634 i_stdlib=''
635 i_string=''
636 strings=''
637 i_sysaccess=''
638 i_sysdir=''
639 i_sysfile=''
640 d_voidtty=''
641 i_bsdioctl=''
642 i_sysfilio=''
643 i_sysioctl=''
644 i_syssockio=''
645 i_sysmount=''
646 i_sysndir=''
647 i_sysparam=''
648 i_sysresrc=''
649 i_syssecrt=''
650 i_sysselct=''
651 i_sysstat=''
652 i_sysstatfs=''
653 i_sysstatvfs=''
654 i_systimes=''
655 i_systypes=''
656 i_sysuio=''
657 i_sysun=''
658 i_sysvfs=''
659 i_syswait=''
660 i_sgtty=''
661 i_termio=''
662 i_termios=''
663 i_systime=''
664 i_systimek=''
665 i_time=''
666 timeincl=''
667 i_unistd=''
668 i_ustat=''
669 i_utime=''
670 i_values=''
671 i_stdarg=''
672 i_varargs=''
673 i_varhdr=''
674 i_vfork=''
675 inc_version_list=''
676 inc_version_list_init=''
677 installprefix=''
678 installprefixexp=''
679 installstyle=''
680 installusrbinperl=''
681 intsize=''
682 longsize=''
683 shortsize=''
684 d_fpos64_t=''
685 d_off64_t=''
686 libc=''
687 ldlibpthname=''
688 libperl=''
689 shrpenv=''
690 useshrplib=''
691 glibpth=''
692 libpth=''
693 loclibpth=''
694 plibpth=''
695 xlibpth=''
696 ignore_versioned_solibs=''
697 libs=''
698 libsdirs=''
699 libsfiles=''
700 libsfound=''
701 lns=''
702 d_PRIEldbl=''
703 d_PRIFldbl=''
704 d_PRIGldbl=''
705 d_PRIeldbl=''
706 d_PRIfldbl=''
707 d_PRIgldbl=''
708 sPRIEldbl=''
709 sPRIFldbl=''
710 sPRIGldbl=''
711 sPRIeldbl=''
712 sPRIfldbl=''
713 sPRIgldbl=''
714 lseeksize=''
715 lseektype=''
716 make_set_make=''
717 d_mymalloc=''
718 freetype=''
719 mallocobj=''
720 mallocsrc=''
721 malloctype=''
722 usemymalloc=''
723 installman1dir=''
724 man1dir=''
725 man1direxp=''
726 man1ext=''
727 installman3dir=''
728 man3dir=''
729 man3direxp=''
730 man3ext=''
731 huge=''
732 large=''
733 medium=''
734 models=''
735 small=''
736 split=''
737 modetype=''
738 multiarch=''
739 mydomain=''
740 myhostname=''
741 phostname=''
742 c=''
743 n=''
744 d_eofnblk=''
745 eagain=''
746 o_nonblock=''
747 rd_nodata=''
748 netdb_hlen_type=''
749 netdb_host_type=''
750 netdb_name_type=''
751 netdb_net_type=''
752 groupcat=''
753 hostcat=''
754 passcat=''
755 orderlib=''
756 ranlib=''
757 package=''
758 spackage=''
759 pager=''
760 api_revision=''
761 api_subversion=''
762 api_version=''
763 api_versionstring=''
764 patchlevel=''
765 subversion=''
766 version=''
767 perladmin=''
768 perlpath=''
769 d_nv_preserves_uv=''
770 i16size=''
771 i16type=''
772 i32size=''
773 i32type=''
774 i64size=''
775 i64type=''
776 i8size=''
777 i8type=''
778 ivsize=''
779 ivtype=''
780 nvsize=''
781 nvtype=''
782 u16size=''
783 u16type=''
784 u32size=''
785 u32type=''
786 u64size=''
787 u64type=''
788 u8size=''
789 u8type=''
790 uvsize=''
791 uvtype=''
792 ivdformat=''
793 uvoformat=''
794 uvuformat=''
795 uvxformat=''
796 pidtype=''
797 prefix=''
798 prefixexp=''
799 installprivlib=''
800 privlib=''
801 privlibexp=''
802 prototype=''
803 ptrsize=''
804 d_PRIX64=''
805 d_PRId64=''
806 d_PRIi64=''
807 d_PRIo64=''
808 d_PRIu64=''
809 d_PRIx64=''
810 sPRIX64=''
811 sPRId64=''
812 sPRIi64=''
813 sPRIo64=''
814 sPRIu64=''
815 sPRIx64=''
816 d_quad=''
817 quadkind=''
818 quadtype=''
819 uquadtype=''
820 drand01=''
821 randbits=''
822 randfunc=''
823 randseedtype=''
824 seedfunc=''
825 installscript=''
826 scriptdir=''
827 scriptdirexp=''
828 selectminbits=''
829 selecttype=''
830 sh=''
831 sig_count=''
832 sig_name=''
833 sig_name_init=''
834 sig_num=''
835 sig_num_init=''
836 installsitearch=''
837 sitearch=''
838 sitearchexp=''
839 installsitebin=''
840 sitebin=''
841 sitebinexp=''
842 installsitelib=''
843 sitelib=''
844 sitelibexp=''
845 siteprefix=''
846 siteprefixexp=''
847 sizetype=''
848 so=''
849 sharpbang=''
850 shsharp=''
851 spitshell=''
852 src=''
853 ssizetype=''
854 startperl=''
855 startsh=''
856 stdchar=''
857 d_stdio_stream_array=''
858 stdio_stream_array=''
859 sysman=''
860 trnl=''
861 uidformat=''
862 uidsign=''
863 uidsize=''
864 uidtype=''
865 archname64=''
866 use64bits=''
867 uselargefiles=''
868 uselongdouble=''
869 uselonglong=''
870 usemorebits=''
871 usemultiplicity=''
872 nm_opt=''
873 nm_so_opt=''
874 runnm=''
875 usenm=''
876 useperlio=''
877 usesocks=''
878 d_oldpthreads=''
879 use5005threads=''
880 useithreads=''
881 usethreads=''
882 incpath=''
883 mips_type=''
884 usrinc=''
885 d_vendorbin=''
886 installvendorbin=''
887 vendorbin=''
888 vendorbinexp=''
889 d_vendorlib=''
890 installvendorlib=''
891 vendorlib=''
892 vendorlibexp=''
893 usevendorprefix=''
894 vendorprefix=''
895 vendorprefixexp=''
896 defvoidused=''
897 voidflags=''
898 CONFIG=''
899
900 define='define'
901 undef='undef'
902 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
903 rmlist=''
904
905 : We must find out about Eunice early
906 eunicefix=':'
907 if test -f /etc/unixtovms; then
908         eunicefix=/etc/unixtovms
909 fi
910 if test -f /etc/unixtovms.exe; then
911         eunicefix=/etc/unixtovms.exe
912 fi
913
914 i_whoami=''
915 : set useposix=false in your hint file to disable the POSIX extension.
916 useposix=true
917 : set useopcode=false in your hint file to disable the Opcode extension.
918 useopcode=true
919 : Trailing extension.  Override this in a hint file, if needed.
920 _exe=''
921 : Extra object files, if any, needed on this platform.
922 archobjs=''
923 : Possible local include directories to search.
924 : Set locincpth to "" in a hint file to defeat local include searches.
925 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
926 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
927 :
928 : no include file wanted by default
929 inclwanted=''
930
931 groupstype=''
932 : change the next line if compiling for Xenix/286 on Xenix/386
933 xlibpth='/usr/lib/386 /lib/386'
934
935 : Possible local library directories to search.
936 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
937 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
938
939 : general looking path for locating libraries
940 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
941 glibpth="$glibpth /lib /usr/lib $xlibpth"
942 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
943 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
944
945 : Private path used by Configure to find libraries.  Its value
946 : is prepended to libpth. This variable takes care of special
947 : machines, like the mips.  Usually, it should be empty.
948 plibpth=''
949
950 : default library list
951 libswanted=''
952 : some systems want to use only the non-versioned libso:s
953 ignore_versioned_solibs=''
954 : set usemultiplicity on the Configure command line to enable multiplicity.
955 : set usesocks on the Configure command line to enable socks.
956 : set usethreads on the Configure command line to enable threads.
957 : full support for void wanted by default
958 defvoidused=15
959
960 : List of libraries we want.
961 : If anyone needs -lnet, put it in a hint file.
962 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
963 libswanted="$libswanted dld ld sun m c cposix posix"
964 libswanted="$libswanted ndir dir crypt sec"
965 libswanted="$libswanted ucb bsd BSD PW x"
966 : We probably want to search /usr/shlib before most other libraries.
967 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
968 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
969 glibpth="/usr/shlib $glibpth"
970 : Do not use vfork unless overridden by a hint file.
971 usevfork=false
972
973 : Find the basic shell for Bourne shell scripts
974 case "$sh" in
975 '')
976         case "$SYSTYPE" in
977         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
978         *) xxx='/bin/sh';;
979         esac
980         if test -f "$xxx"; then
981                 sh="$xxx"
982         else
983                 : Build up a list and do a single loop so we can 'break' out.
984                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
985                 for xxx in sh bash ksh pdksh ash; do
986                         for p in $pth; do
987                                 try="$try ${p}/${xxx}"
988                         done
989                 done
990                 for xxx in $try; do
991                         if test -f "$xxx"; then
992                                 sh="$xxx";
993                                 break
994                         elif test -f "$xxx.exe"; then
995                                 sh="$xxx";
996                                 break
997                         fi
998                 done
999         fi
1000         ;;
1001 esac
1002
1003 case "$sh" in
1004 '')     cat <<EOM >&2
1005 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1006
1007 Usually it's in /bin/sh.  How did you even get this far?
1008 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1009 we'll try to straighten this all out.
1010 EOM
1011         exit 1
1012         ;;
1013 esac
1014
1015 : see if sh knows # comments
1016 if `$sh -c '#' >/dev/null 2>&1`; then
1017         shsharp=true
1018         spitshell=cat
1019         xcat=/bin/cat
1020         test -f $xcat || xcat=/usr/bin/cat
1021         echo "#!$xcat" >try
1022         $eunicefix try
1023         chmod +x try
1024         ./try > today
1025         if test -s today; then
1026                 sharpbang='#!'
1027         else
1028                 echo "#! $xcat" > try
1029                 $eunicefix try
1030                 chmod +x try
1031                 ./try > today
1032                 if test -s today; then
1033                         sharpbang='#! '
1034                 else
1035                         sharpbang=': use '
1036                 fi
1037         fi
1038 else
1039         echo " "
1040         echo "Your $sh doesn't grok # comments--I will strip them later on."
1041         shsharp=false
1042         cd ..
1043         echo "exec grep -v '^[  ]*#'" >spitshell
1044         chmod +x spitshell
1045         $eunicefix spitshell
1046         spitshell=`pwd`/spitshell
1047         cd UU
1048         echo "I presume that if # doesn't work, #! won't work either!"
1049         sharpbang=': use '
1050 fi
1051 rm -f try today
1052
1053 : figure out how to guarantee sh startup
1054 case "$startsh" in
1055 '') startsh=${sharpbang}${sh} ;;
1056 *)
1057 esac
1058 cat >try <<EOSS
1059 $startsh
1060 set abc
1061 test "$?abc" != 1
1062 EOSS
1063
1064 chmod +x try
1065 $eunicefix try
1066 if ./try; then
1067         : echo "Yup, it does."
1068 else
1069         echo "Hmm... '$startsh' does not guarantee sh startup..."
1070         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1071 fi
1072 rm -f try
1073
1074
1075 : Save command line options in file UU/cmdline.opt for later use in
1076 : generating config.sh.
1077 cat > cmdline.opt <<EOSH
1078 # Configure command line arguments.
1079 config_arg0='$0'
1080 config_args='$*'
1081 config_argc=$#
1082 EOSH
1083 argn=1
1084 for arg in "$@"; do
1085         cat >>cmdline.opt <<EOSH
1086 config_arg$argn='$arg'
1087 EOSH
1088         argn=`expr $argn + 1`
1089 done
1090
1091 : produce awk script to parse command line options
1092 cat >options.awk <<'EOF'
1093 BEGIN {
1094         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1095
1096         len = length(optstr);
1097         for (i = 1; i <= len; i++) {
1098                 c = substr(optstr, i, 1);
1099                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1100                 if (a == ":") {
1101                         arg[c] = 1;
1102                         i++;
1103                 }
1104                 opt[c] = 1;
1105         }
1106 }
1107 {
1108         expect = 0;
1109         str = $0;
1110         if (substr(str, 1, 1) != "-") {
1111                 printf("'%s'\n", str);
1112                 next;
1113         }
1114         len = length($0);
1115         for (i = 2; i <= len; i++) {
1116                 c = substr(str, i, 1);
1117                 if (!opt[c]) {
1118                         printf("-%s\n", substr(str, i));
1119                         next;
1120                 }
1121                 printf("-%s\n", c);
1122                 if (arg[c]) {
1123                         if (i < len)
1124                                 printf("'%s'\n", substr(str, i + 1));
1125                         else
1126                                 expect = 1;
1127                         next;
1128                 }
1129         }
1130 }
1131 END {
1132         if (expect)
1133                 print "?";
1134 }
1135 EOF
1136
1137 : process the command line options
1138 set X `for arg in "$@"; do echo "X$arg"; done |
1139         sed -e s/X// | awk -f options.awk`
1140 eval "set $*"
1141 shift
1142 rm -f options.awk
1143
1144 : set up default values
1145 fastread=''
1146 reuseval=false
1147 config_sh=''
1148 alldone=''
1149 error=''
1150 silent=''
1151 extractsh=''
1152 override=''
1153 knowitall=''
1154 rm -f optdef.sh posthint.sh
1155 cat >optdef.sh <<EOS
1156 $startsh
1157 EOS
1158
1159
1160 : option parsing
1161 while test $# -gt 0; do
1162         case "$1" in
1163         -d) shift; fastread=yes;;
1164         -e) shift; alldone=cont;;
1165         -f)
1166                 shift
1167                 cd ..
1168                 if test -r "$1"; then
1169                         config_sh="$1"
1170                 else
1171                         echo "$me: cannot read config file $1." >&2
1172                         error=true
1173                 fi
1174                 cd UU
1175                 shift;;
1176         -h) shift; error=true;;
1177         -r) shift; reuseval=true;;
1178         -s) shift; silent=true; realsilent=true;;
1179         -E) shift; alldone=exit;;
1180         -K) shift; knowitall=true;;
1181         -O) shift; override=true;;
1182         -S) shift; silent=true; extractsh=true;;
1183         -D)
1184                 shift
1185                 case "$1" in
1186                 *=)
1187                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1188                         echo "$me: ignoring -D $1" >&2
1189                         ;;
1190                 *=*) echo "$1" | \
1191                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1192                 *) echo "$1='define'" >> optdef.sh;;
1193                 esac
1194                 shift
1195                 ;;
1196         -U)
1197                 shift
1198                 case "$1" in
1199                 *=) echo "$1" >> optdef.sh;;
1200                 *=*)
1201                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1202                         echo "$me: ignoring -U $1" >&2
1203                         ;;
1204                 *) echo "$1='undef'" >> optdef.sh;;
1205                 esac
1206                 shift
1207                 ;;
1208         -A)
1209             shift
1210             xxx=''
1211             yyy="$1"
1212             zzz=''
1213             uuu=undef
1214             case "$yyy" in
1215             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1216                  case "$zzz" in
1217                  *:*) zzz='' ;;
1218                  *)   xxx=append
1219                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1220                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1221                  esac
1222                  ;;
1223             esac
1224             case "$xxx" in
1225             '')  case "$yyy" in
1226                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1227                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1228                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1229                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1230                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1231                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1232                  esac
1233                  ;;       
1234             esac
1235             case "$xxx" in
1236             append)
1237                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1238             clear)
1239                 echo "$yyy=''"                  >> posthint.sh ;;
1240             define)
1241                 case "$zzz" in
1242                 '') zzz=define ;;
1243                 esac
1244                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1245             eval)
1246                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1247             prepend)
1248                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1249             undef)
1250                 case "$zzz" in
1251                 '') zzz="$uuu" ;;
1252                 esac
1253                 echo "$yyy=$zzz"                >> posthint.sh ;;
1254             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1255             esac
1256             ;;
1257         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1258             exit 0;;
1259         --) break;;
1260         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1261         *) break;;
1262         esac
1263 done
1264
1265 case "$error" in
1266 true)
1267         cat >&2 <<EOM
1268 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1269                  [-U symbol] [-U symbol=] [-A command:symbol...]
1270   -d : use defaults for all answers.
1271   -e : go on without questioning past the production of config.sh.
1272   -f : specify an alternate default configuration file.
1273   -h : print this help message and exit (with an error status).
1274   -r : reuse C symbols value if possible (skips costly nm extraction).
1275   -s : silent mode, only echoes questions and essential information.
1276   -D : define symbol to have some value:
1277          -D symbol         symbol gets the value 'define'
1278          -D symbol=value   symbol gets the value 'value'
1279   -E : stop at the end of questions, after having produced config.sh.
1280   -K : do not use unless you know what you are doing.
1281   -O : let -D and -U override definitions from loaded configuration file.
1282   -S : perform variable substitutions on all .SH files (can mix with -f)
1283   -U : undefine symbol:
1284          -U symbol    symbol gets the value 'undef'
1285          -U symbol=   symbol gets completely empty
1286   -A : manipulate symbol after the platform specific hints have been applied:
1287          -A symbol=value                append " "value to symbol
1288          -A append:symbol=value         append value to symbol
1289          -A define:symbol=value         define symbol to have value
1290          -A clear:symbol                define symbol to be ''
1291          -A define:symbol               define symbol to be 'define'
1292          -A eval:symbol=value           define symbol to be eval of value
1293          -A prepend:symbol=value        prepend value to symbol
1294          -A undef:symbol                define symbol to be 'undef'
1295          -A undef:symbol=               define symbol to be ''
1296   -V : print version number and exit (with a zero status).
1297 EOM
1298         exit 1
1299         ;;
1300 esac
1301
1302 : Sanity checks
1303 case "$fastread$alldone" in
1304 yescont|yesexit) ;;
1305 *)
1306         if test ! -t 0; then
1307                 echo "Say 'sh Configure', not 'sh <Configure'"
1308                 exit 1
1309         fi
1310         ;;
1311 esac
1312
1313 exec 4>&1
1314 case "$silent" in
1315 true) exec 1>/dev/null;;
1316 esac
1317
1318 : run the defines and the undefines, if any, but leave the file out there...
1319 touch optdef.sh
1320 . ./optdef.sh
1321 : create the posthint manipulation script and leave the file out there...
1322 touch posthint.sh
1323
1324 : set package name
1325 package=perl5
1326 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1327 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1328 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1329 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1330 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1331 esac
1332
1333 : Some greps do not return status, grrr.
1334 echo "grimblepritz" >grimble
1335 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1336         contains=contains
1337 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1338         contains=grep
1339 else
1340         contains=contains
1341 fi
1342 rm -f grimble
1343 : the following should work in any shell
1344 case "$contains" in
1345 contains*)
1346         echo " "
1347         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1348         cat >contains <<'EOSS'
1349 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1350 EOSS
1351 chmod +x contains
1352 esac
1353
1354 : Find the path to the source tree
1355 case "$src" in
1356 '') case "$0" in
1357     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1358          case "$src" in
1359          /*)    ;;
1360          *)     src=`cd ../$src && pwd` ;;
1361          esac
1362          ;;
1363     *)   src='.';;
1364     esac;;
1365 esac
1366 case "$src" in
1367 '')     src=/
1368         rsrc=/
1369         ;;
1370 /*) rsrc="$src";;
1371 *) rsrc="../$src";;
1372 esac
1373 if test -f $rsrc/Configure && \
1374         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1375 then
1376    : found it, so we are ok.
1377 else
1378         rsrc=''
1379         for src in . .. ../.. ../../.. ../../../..; do
1380                 if test -f ../$src/Configure && \
1381                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1382                 then
1383                         rsrc=../$src
1384                         break
1385                 fi
1386         done
1387 fi
1388 case "$rsrc" in
1389 '')
1390         cat <<EOM >&4
1391
1392 Sorry, I can't seem to locate the source dir for $package.  Please start
1393 Configure with an explicit path -- i.e. /some/path/Configure.
1394
1395 EOM
1396         exit 1
1397         ;;
1398 ../.)   rsrc='..';;
1399 *)
1400         echo " "
1401         echo "Sources for $package found in \"$src\"." >&4
1402         ;;
1403 esac
1404
1405 : script used to extract .SH files with variable substitutions
1406 cat >extract <<'EOS'
1407 CONFIGDOTSH=true
1408 echo "Doing variable substitutions on .SH files..."
1409 if test -f $src/MANIFEST; then
1410         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1411 else
1412         echo "(Looking for .SH files under the source directory.)"
1413         set x `(cd $src; find . -name "*.SH" -print)`
1414 fi
1415 shift
1416 case $# in
1417 0) set x `(cd $src; echo *.SH)`; shift;;
1418 esac
1419 if test ! -f $src/$1; then
1420         shift
1421 fi
1422 mkdir_p='
1423 name=$1;
1424 create="";
1425 while test $name; do
1426         if test ! -d "$name"; then
1427                 create="$name $create";
1428                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1429                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1430         else
1431                 name="";
1432         fi;
1433 done;
1434 for file in $create; do
1435         mkdir $file;
1436 done
1437 '
1438 for file in $*; do
1439         case "$src" in
1440         ".")
1441                 case "$file" in
1442                 */*)
1443                         dir=`expr X$file : 'X\(.*\)/'`
1444                         file=`expr X$file : 'X.*/\(.*\)'`
1445                         (cd $dir && . ./$file)
1446                         ;;
1447                 *)
1448                         . ./$file
1449                         ;;
1450                 esac
1451                 ;;
1452         *)
1453                 case "$file" in
1454                 */*)
1455                         dir=`expr X$file : 'X\(.*\)/'`
1456                         file=`expr X$file : 'X.*/\(.*\)'`
1457                         (set x $dir; shift; eval $mkdir_p)
1458                         sh <$src/$dir/$file
1459                         ;;
1460                 *)
1461                         sh <$src/$file
1462                         ;;
1463                 esac
1464                 ;;
1465         esac
1466 done
1467 if test -f $src/config_h.SH; then
1468         if test ! -f config.h; then
1469         : oops, they left it out of MANIFEST, probably, so do it anyway.
1470         . $src/config_h.SH
1471         fi
1472 fi
1473 EOS
1474
1475 : extract files and exit if asked to do so
1476 case "$extractsh" in
1477 true)
1478         case "$realsilent" in
1479         true) ;;
1480         *) exec 1>&4;;
1481         esac
1482         case "$config_sh" in
1483         '') config_sh='config.sh';;
1484         esac
1485         echo " "
1486         echo "Fetching answers from $config_sh..."
1487         cd ..
1488         . $config_sh
1489         test "$override" && . ./optdef.sh
1490         echo " "
1491         . UU/extract
1492         rm -rf UU
1493         echo "Done."
1494         exit 0
1495         ;;
1496 esac
1497
1498 : Eunice requires " " instead of "", can you believe it
1499 echo " "
1500 : Here we go...
1501 echo "Beginning of configuration questions for $package."
1502
1503 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1504
1505 : first determine how to suppress newline on echo command
1506 echo " "
1507 echo "Checking echo to see how to suppress newlines..."
1508 (echo "hi there\c" ; echo " ") >.echotmp
1509 if $contains c .echotmp >/dev/null 2>&1 ; then
1510         echo "...using -n."
1511         n='-n'
1512         c=''
1513 else
1514         cat <<'EOM'
1515 ...using \c
1516 EOM
1517         n=''
1518         c='\c'
1519 fi
1520 echo $n "The star should be here-->$c"
1521 echo '*'
1522 rm -f .echotmp
1523
1524 : Now test for existence of everything in MANIFEST
1525 echo " "
1526 if test -f $rsrc/MANIFEST; then
1527         echo "First let's make sure your kit is complete.  Checking..." >&4
1528         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1529         rm -f missing
1530         tmppwd=`pwd`
1531         for filelist in x??; do
1532                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1533         done
1534         if test -s missing; then
1535                 cat missing >&4
1536                 cat >&4 <<'EOM'
1537
1538 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1539
1540 You have the option of continuing the configuration process, despite the
1541 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1542 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1543 and contact the author (perlbug@perl.com).
1544
1545 EOM
1546                 echo $n "Continue? [n] $c" >&4
1547                 read ans
1548                 case "$ans" in
1549                 y*)
1550                         echo "Continuing..." >&4
1551                         rm -f missing
1552                         ;;
1553                 *)
1554                         echo "ABORTING..." >&4
1555                         kill $$
1556                         ;;
1557                 esac
1558         else
1559                 echo "Looks good..."
1560         fi
1561 else
1562         echo "There is no MANIFEST file.  I hope your kit is complete !"
1563 fi
1564 rm -f missing x??
1565
1566 echo " "
1567 : Find the appropriate value for a newline for tr
1568 if test -n "$DJGPP"; then
1569        trnl='\012'
1570 fi
1571 if test X"$trnl" = X; then
1572         case "`echo foo|tr '\n' x 2>/dev/null`" in
1573         foox) trnl='\n' ;;
1574         esac
1575 fi
1576 if test X"$trnl" = X; then
1577         case "`echo foo|tr '\012' x 2>/dev/null`" in
1578         foox) trnl='\012' ;;
1579         esac
1580 fi
1581 if test X"$trnl" = X; then
1582         cat <<EOM >&2
1583
1584 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1585
1586 EOM
1587         exit 1
1588 fi
1589
1590 : compute the number of columns on the terminal for proper question formatting
1591 case "$COLUMNS" in
1592 '') COLUMNS='80';;
1593 esac
1594
1595 : set up the echo used in my read
1596 myecho="case \"\$xxxm\" in
1597 '') echo $n \"\$rp $c\" >&4;;
1598 *) case \"\$rp\" in
1599         '') echo $n \"[\$xxxm] $c\";;
1600         *)
1601                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1602                         echo \"\$rp\" >&4
1603                         echo $n \"[\$xxxm] $c\" >&4
1604                 else
1605                         echo $n \"\$rp [\$xxxm] $c\" >&4
1606                 fi
1607                 ;;
1608         esac;;
1609 esac"
1610
1611 : now set up to do reads with possible shell escape and default assignment
1612 cat <<EOSC >myread
1613 $startsh
1614 xxxm=\$dflt
1615 $myecho
1616 ans='!'
1617 case "\$fastread" in
1618 yes) case "\$dflt" in
1619         '') ;;
1620         *) ans='';
1621                 case "\$silent-\$rp" in
1622                 true-) ;;
1623                 *) echo " " >&4;;
1624                 esac;;
1625         esac;;
1626 *) case "\$silent" in
1627         true) case "\$rp" in
1628                 '') ans='';;
1629                 esac;;
1630         esac;;
1631 esac
1632 while expr "X\$ans" : "X!" >/dev/null; do
1633         read answ
1634         set x \$xxxm
1635         shift
1636         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1637         case  "\$answ" in
1638         "!")
1639                 sh 1>&4
1640                 echo " "
1641                 $myecho
1642                 ;;
1643         !*)
1644                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1645                 shift
1646                 sh 1>&4 -c "\$*"
1647                 echo " "
1648                 $myecho
1649                 ;;
1650         "\$ans")
1651                 case "\$ans" in
1652                 \\&*)
1653                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1654                         shift
1655                         case "\$1" in
1656                         -d)
1657                                 fastread=yes
1658                                 echo "(OK, I'll run with -d after this question.)" >&4
1659                                 ;;
1660                         -*)
1661                                 echo "*** Sorry, \$1 not supported yet." >&4
1662                                 ;;
1663                         esac
1664                         $myecho
1665                         ans=!
1666                         ;;
1667                 esac;;
1668         *)
1669                 case "\$aok" in
1670                 y)
1671                         echo "*** Substitution done -- please confirm."
1672                         xxxm="\$ans"
1673                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1674                         xxxm="\$ans"
1675                         ans=!
1676                         ;;
1677                 *)
1678                         echo "*** Error -- try again."
1679                         ans=!
1680                         ;;
1681                 esac
1682                 $myecho
1683                 ;;
1684         esac
1685         case "\$ans\$xxxm\$nostick" in
1686         '')
1687                 ans=!
1688                 $myecho
1689                 ;;
1690         esac
1691 done
1692 case "\$ans" in
1693 '') ans="\$xxxm";;
1694 esac
1695 EOSC
1696
1697 : create .config dir to save info across Configure sessions
1698 test -d ../.config || mkdir ../.config
1699 cat >../.config/README <<EOF
1700 This directory created by Configure to save information that should
1701 persist across sessions for $package.
1702
1703 You may safely delete it if you wish.
1704 EOF
1705
1706 : general instructions
1707 needman=true
1708 firsttime=true
1709 user=`(logname) 2>/dev/null`
1710 case "$user" in
1711 '') user=`whoami 2>&1`;;
1712 esac
1713 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1714         firsttime=false
1715         echo " "
1716         rp='Would you like to see the instructions?'
1717         dflt=n
1718         . ./myread
1719         case "$ans" in
1720         [yY]*) ;;
1721         *) needman=false;;
1722         esac
1723 fi
1724 if $needman; then
1725         cat <<EOH
1726
1727 This installation shell script will examine your system and ask you questions
1728 to determine how the perl5 package should be installed. If you get
1729 stuck on a question, you may use a ! shell escape to start a subshell or
1730 execute a command.  Many of the questions will have default answers in square
1731 brackets; typing carriage return will give you the default.
1732
1733 On some of the questions which ask for file or directory names you are allowed
1734 to use the ~name construct to specify the login directory belonging to "name",
1735 even if you don't have a shell which knows about that.  Questions where this is
1736 allowed will be marked "(~name ok)".
1737
1738 EOH
1739         rp=''
1740         dflt='Type carriage return to continue'
1741         . ./myread
1742         cat <<'EOH'
1743
1744 The prompter used in this script allows you to use shell variables and
1745 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1746 in the default answer, as if the default line was a set of arguments given to a
1747 script shell.  This means you may also use $* to repeat the whole default line,
1748 so you do not have to re-type everything to add something to the default.
1749
1750 Everytime there is a substitution, you will have to confirm.  If there is an
1751 error (e.g. an unmatched backtick), the default answer will remain unchanged
1752 and you will be prompted again.
1753
1754 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1755 the questions and use the computed defaults (or the previous answers if there
1756 was already a config.sh file). Type 'Configure -h' for a list of options.
1757 You may also start interactively and then answer '& -d' at any prompt to turn
1758 on the non-interactive behaviour for the remainder of the execution.
1759
1760 EOH
1761         . ./myread
1762         cat <<EOH
1763
1764 Much effort has been expended to ensure that this shell script will run on any
1765 Unix system.  If despite that it blows up on yours, your best bet is to edit
1766 Configure and run it again.  If you can't run Configure for some reason,
1767 you'll have to generate a config.sh file by hand.  Whatever problems you
1768 have, let me (perlbug@perl.com) know how I blew it.
1769
1770 This installation script affects things in two ways:
1771
1772 1) it may do direct variable substitutions on some of the files included
1773    in this kit.
1774 2) it builds a config.h file for inclusion in C programs.  You may edit
1775    any of these files as the need arises after running this script.
1776
1777 If you make a mistake on a question, there is no easy way to back up to it
1778 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1779 files.  Configure will offer to let you do this before it runs the SH files.
1780
1781 EOH
1782         dflt='Type carriage return to continue'
1783         . ./myread
1784         case "$firsttime" in
1785         true) echo $user >>../.config/instruct;;
1786         esac
1787 fi
1788
1789 : find out where common programs are
1790 echo " "
1791 echo "Locating common programs..." >&4
1792 cat <<EOSC >loc
1793 $startsh
1794 case \$# in
1795 0) exit 1;;
1796 esac
1797 thing=\$1
1798 shift
1799 dflt=\$1
1800 shift
1801 for dir in \$*; do
1802         case "\$thing" in
1803         .)
1804         if test -d \$dir/\$thing; then
1805                 echo \$dir
1806                 exit 0
1807         fi
1808         ;;
1809         *)
1810         for thisthing in \$dir/\$thing; do
1811                 : just loop through to pick last item
1812         done
1813         if test -f \$thisthing; then
1814                 echo \$thisthing
1815                 exit 0
1816         elif test -f \$dir/\$thing.exe; then
1817                 if test -n "$DJGPP"; then
1818                         echo \$dir/\$thing.exe
1819                 else
1820                         : on Eunice apparently
1821                         echo \$dir/\$thing
1822                 fi
1823                 exit 0
1824         fi
1825         ;;
1826         esac
1827 done
1828 echo \$dflt
1829 exit 1
1830 EOSC
1831 chmod +x loc
1832 $eunicefix loc
1833 loclist="
1834 awk
1835 cat
1836 comm
1837 cp
1838 echo
1839 expr
1840 grep
1841 ls
1842 make
1843 mkdir
1844 rm
1845 sed
1846 sort
1847 touch
1848 tr
1849 uniq
1850 "
1851 trylist="
1852 Mcc
1853 ar
1854 byacc
1855 cpp
1856 csh
1857 date
1858 egrep
1859 gzip
1860 less
1861 ln
1862 more
1863 nm
1864 nroff
1865 perl
1866 pg
1867 test
1868 uname
1869 zip
1870 "
1871 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1872 pth="$pth /lib /usr/lib"
1873 for file in $loclist; do
1874         eval xxx=\$$file
1875         case "$xxx" in
1876         /*|?:[\\/]*)
1877                 if test -f "$xxx"; then
1878                         : ok
1879                 else
1880                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1881                         xxx=`./loc $file $file $pth`
1882                 fi
1883                 ;;
1884         '') xxx=`./loc $file $file $pth`;;
1885         *) xxx=`./loc $xxx $xxx $pth`;;
1886         esac
1887         eval $file=$xxx
1888         eval _$file=$xxx
1889         case "$xxx" in
1890         /*)
1891                 echo $file is in $xxx.
1892                 ;;
1893         ?:[\\/]*)
1894                 echo $file is in $xxx.
1895                 ;;
1896         *)
1897                 echo "I don't know where '$file' is, and my life depends on it." >&4
1898                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1899                 exit 1
1900                 ;;
1901         esac
1902 done
1903 echo " "
1904 echo "Don't worry if any of the following aren't found..."
1905 say=offhand
1906 for file in $trylist; do
1907         eval xxx=\$$file
1908         case "$xxx" in
1909         /*|?:[\\/]*)
1910                 if test -f "$xxx"; then
1911                         : ok
1912                 else
1913                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1914                         xxx=`./loc $file $file $pth`
1915                 fi
1916                 ;;
1917         '') xxx=`./loc $file $file $pth`;;
1918         *) xxx=`./loc $xxx $xxx $pth`;;
1919         esac
1920         eval $file=$xxx
1921         eval _$file=$xxx
1922         case "$xxx" in
1923         /*)
1924                 echo $file is in $xxx.
1925                 ;;
1926         ?:[\\/]*)
1927                 echo $file is in $xxx.
1928                 ;;
1929         *)
1930                 echo "I don't see $file out there, $say."
1931                 say=either
1932                 ;;
1933         esac
1934 done
1935 case "$egrep" in
1936 egrep)
1937         echo "Substituting grep for egrep."
1938         egrep=$grep
1939         ;;
1940 esac
1941 case "$ln" in
1942 ln)
1943         echo "Substituting cp for ln."
1944         ln=$cp
1945         ;;
1946 esac
1947 case "$test" in
1948 test)
1949         echo "Hopefully test is built into your sh."
1950         ;;
1951 *)
1952         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1953                 echo "Using the test built into your sh."
1954                 test=test
1955                 _test=test
1956         fi
1957         ;;
1958 esac
1959 case "$echo" in
1960 echo)
1961         echo "Hopefully echo is built into your sh."
1962         ;;
1963 '') ;;
1964 *)
1965         echo " "
1966 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1967         $echo $n "hi there$c" >foo1
1968         echo $n "hi there$c" >foo2
1969         if cmp foo1 foo2 >/dev/null 2>&1; then
1970                 echo "They are compatible.  In fact, they may be identical."
1971         else
1972                 case "$n" in
1973                 '-n') n='' c='\c';;
1974                 *) n='-n' c='';;
1975                 esac
1976                 cat <<FOO
1977 They are not compatible!  You are probably running ksh on a non-USG system.
1978 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1979 have echo built in and we may have to run some Bourne shell scripts.  That
1980 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1981
1982 FOO
1983                 $echo $n "The star should be here-->$c"
1984                 $echo "*"
1985         fi
1986         $rm -f foo1 foo2
1987         ;;
1988 esac
1989
1990 : determine whether symbolic links are supported
1991 echo " "
1992 $touch blurfl
1993 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1994         echo "Symbolic links are supported." >&4
1995         lns="$ln -s"
1996 else
1997         echo "Symbolic links are NOT supported." >&4
1998         lns="$ln"
1999 fi
2000 $rm -f blurfl sym
2001
2002 : see whether [:lower:] and [:upper:] are supported character classes
2003 echo " "
2004 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2005 ABYZ)
2006         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2007         up='[:upper:]'
2008         low='[:lower:]'
2009         ;;
2010 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2011         # (0xc9 and 0xd1), therefore that is a nice testing point.
2012         if test "X$up" = X -o "X$low" = X; then
2013             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2014             ij) up='[A-Z]'
2015                 low='[a-z]'
2016                 ;;
2017             esac
2018         fi
2019         if test "X$up" = X -o "X$low" = X; then
2020             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2021             ij) up='A-Z'
2022                 low='a-z'
2023                 ;;
2024             esac
2025         fi
2026         if test "X$up" = X -o "X$low" = X; then
2027             case "`echo IJ | od -x 2>/dev/null`" in
2028             *C9D1*|*c9d1*)
2029                 echo "Hey, this might be EBCDIC." >&4
2030                 if test "X$up" = X -o "X$low" = X; then
2031                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2032                     ij) up='[A-IJ-RS-Z]'
2033                         low='[a-ij-rs-z]'
2034                         ;;
2035                     esac
2036                 fi
2037                 if test "X$up" = X -o "X$low" = X; then
2038                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2039                     ij) up='A-IJ-RS-Z'
2040                         low='a-ij-rs-z'
2041                         ;;
2042                     esac
2043                 fi
2044                 ;;
2045             esac
2046         fi
2047 esac
2048 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2049 ij)
2050     echo "Using $up and $low to convert case." >&4
2051     ;;
2052 *)
2053     echo "I don't know how to translate letters from upper to lower case." >&4
2054     echo "Your tr is not acting any way I know of." >&4
2055     exit 1
2056     ;;
2057 esac
2058 : set up the translation script tr, must be called with ./tr of course
2059 cat >tr <<EOSC
2060 $startsh
2061 case "\$1\$2" in
2062 '[A-Z][a-z]') exec $tr '$up' '$low';;
2063 '[a-z][A-Z]') exec $tr '$low' '$up';;
2064 esac
2065 exec $tr "\$@"
2066 EOSC
2067 chmod +x tr
2068 $eunicefix tr
2069
2070 : Try to determine whether config.sh was made on this system
2071 case "$config_sh" in
2072 '')
2073 myuname=`$uname -a 2>/dev/null`
2074 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2075 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2076 # because the A-Z/a-z are not consecutive.
2077 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2078         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2079 newmyuname="$myuname"
2080 dflt=n
2081 case "$knowitall" in
2082 '')
2083         if test -f ../config.sh; then
2084                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2085                         eval "`grep myuname= ../config.sh`"
2086                 fi
2087                 if test "X$myuname" = "X$newmyuname"; then
2088                         dflt=y
2089                 fi
2090         fi
2091         ;;
2092 *) dflt=y;;
2093 esac
2094
2095 : Get old answers from old config file if Configure was run on the
2096 : same system, otherwise use the hints.
2097 hint=default
2098 cd ..
2099 if test -f config.sh; then
2100         echo " "
2101         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2102         . UU/myread
2103         case "$ans" in
2104         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2105         *)  echo "Fetching default answers from your old config.sh file..." >&4
2106                 tmp_n="$n"
2107                 tmp_c="$c"
2108                 tmp_sh="$sh"
2109                 . ./config.sh
2110                 cp config.sh UU
2111                 n="$tmp_n"
2112                 c="$tmp_c"
2113                 : Older versions did not always set $sh.  Catch re-use of such
2114                 : an old config.sh.
2115                 case "$sh" in
2116                 '') sh="$tmp_sh" ;;
2117                 esac
2118                 hint=previous
2119                 ;;
2120         esac
2121 fi
2122 if test ! -f config.sh; then
2123         $cat <<EOM
2124
2125 First time through, eh?  I have some defaults handy for some systems
2126 that need some extra help getting the Configure answers right:
2127
2128 EOM
2129         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2130         dflt=''
2131         : Half the following guesses are probably wrong... If you have better
2132         : tests or hints, please send them to perlbug@perl.com
2133         : The metaconfig authors would also appreciate a copy...
2134         $test -f /irix && osname=irix
2135         $test -f /xenix && osname=sco_xenix
2136         $test -f /dynix && osname=dynix
2137         $test -f /dnix && osname=dnix
2138         $test -f /lynx.os && osname=lynxos
2139         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2140         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2141         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2142         $test -f /bin/mips && /bin/mips && osname=mips
2143         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2144                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2145         $test -d /usr/apollo/bin && osname=apollo
2146         $test -f /etc/saf/_sactab && osname=svr4
2147         $test -d /usr/include/minix && osname=minix
2148         if $test -d /MachTen -o -d /MachTen_Folder; then
2149                 osname=machten
2150                 if $test -x /sbin/version; then
2151                         osvers=`/sbin/version | $awk '{print $2}' |
2152                         $sed -e 's/[A-Za-z]$//'`
2153                 elif $test -x /usr/etc/version; then
2154                         osvers=`/usr/etc/version | $awk '{print $2}' |
2155                         $sed -e 's/[A-Za-z]$//'`
2156                 else
2157                         osvers="$2.$3"
2158                 fi
2159         fi
2160
2161         $test -f /sys/posix.dll &&
2162                 $test -f /usr/bin/what &&
2163                 set X `/usr/bin/what /sys/posix.dll` &&
2164                 $test "$3" = UWIN &&
2165                 osname=uwin &&
2166                 osvers="$5"
2167
2168         if $test -f $uname; then
2169                 set X $myuname
2170                 shift
2171
2172                 case "$5" in
2173                 fps*) osname=fps ;;
2174                 mips*)
2175                         case "$4" in
2176                         umips) osname=umips ;;
2177                         *) osname=mips ;;
2178                         esac;;
2179                 [23]100) osname=mips ;;
2180                 next*) osname=next ;;
2181                 i386*)
2182                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2183                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2184                                 osname='sco'
2185                                 osvers=$tmp
2186                         elif $test -f /etc/kconfig; then
2187                                 osname=isc
2188                                 if test "$lns" = "$ln -s"; then
2189                                         osvers=4
2190                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2191                                         osvers=3
2192                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2193                                         osvers=2
2194                                 fi
2195                         fi
2196                         tmp=''
2197                         ;;
2198                 pc*)
2199                         if test -n "$DJGPP"; then
2200                                 osname=dos
2201                                 osvers=djgpp
2202                         fi
2203                         ;;
2204                 esac
2205
2206                 case "$1" in
2207                 aix) osname=aix
2208                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2209                         case "$tmp" in
2210                         'not found') osvers="$4"."$3" ;;
2211                         '<3240'|'<>3240') osvers=3.2.0 ;;
2212                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2213                         '=3250'|'>3250') osvers=3.2.5 ;;
2214                         *) osvers=$tmp;;
2215                         esac
2216                         ;;
2217                 bsd386) osname=bsd386
2218                         osvers=`$uname -r`
2219                         ;;
2220                 cygwin*) osname=cygwin
2221                         osvers="$3"
2222                         ;;
2223                 *dc.osx) osname=dcosx
2224                         osvers="$3"
2225                         ;;
2226                 dnix) osname=dnix
2227                         osvers="$3"
2228                         ;;
2229                 domainos) osname=apollo
2230                         osvers="$3"
2231                         ;;
2232                 dgux) osname=dgux 
2233                         osvers="$3"
2234                         ;;
2235                 dynixptx*) osname=dynixptx
2236                         osvers=`echo "$4"|sed 's/^v//'`
2237                         ;;
2238                 freebsd) osname=freebsd 
2239                         osvers="$3" ;;
2240                 genix) osname=genix ;;
2241                 hp*) osname=hpux 
2242                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2243                         ;;
2244                 irix*) osname=irix
2245                         case "$3" in
2246                         4*) osvers=4 ;;
2247                         5*) osvers=5 ;;
2248                         *)      osvers="$3" ;;
2249                         esac
2250                         ;;
2251                 linux) osname=linux
2252                         case "$3" in
2253                         *)      osvers="$3" ;;
2254                         esac
2255                         ;;
2256                 MiNT) osname=mint
2257                         ;;
2258                 netbsd*) osname=netbsd
2259                         osvers="$3"
2260                         ;;
2261                 news-os) osvers="$3"
2262                         case "$3" in
2263                         4*) osname=newsos4 ;;
2264                         *) osname=newsos ;;
2265                         esac
2266                         ;;
2267                 next*) osname=next ;;
2268                 POSIX-BC | posix-bc ) osname=posix-bc
2269                         osvers="$3"
2270                         ;;
2271                 powerux | power_ux | powermax_os | powermaxos | \
2272                 powerunix | power_unix) osname=powerux
2273                         osvers="$3"
2274                         ;;
2275                 qnx) osname=qnx
2276                         osvers="$4"
2277                         ;;
2278                 solaris) osname=solaris
2279                         case "$3" in
2280                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2281                         *)      osvers="$3" ;;
2282                         esac
2283                         ;;
2284                 sunos) osname=sunos
2285                         case "$3" in
2286                         5*) osname=solaris
2287                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2288                         *)      osvers="$3" ;;
2289                         esac
2290                         ;;
2291                 titanos) osname=titanos
2292                         case "$3" in
2293                         1*) osvers=1 ;;
2294                         2*) osvers=2 ;;
2295                         3*) osvers=3 ;;
2296                         4*) osvers=4 ;;
2297                         *)      osvers="$3" ;;
2298                         esac
2299                         ;;
2300                 ultrix) osname=ultrix
2301                         osvers="$3"
2302                         ;;
2303                 osf1|mls+)      case "$5" in
2304                                 alpha)
2305                                         osname=dec_osf
2306                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2307                                         ;;
2308                         hp*)    osname=hp_osf1  ;;
2309                         mips)   osname=mips_osf1 ;;
2310                         esac
2311                         ;;
2312                 unixware) osname=svr5
2313                         osvers="$4"
2314                         ;;
2315                 uts) osname=uts
2316                         osvers="$3"
2317                         ;;
2318                 $2) case "$osname" in
2319                         *isc*) ;;
2320                         *freebsd*) ;;
2321                         svr*)
2322                                 : svr4.x or possibly later
2323                                 case "svr$3" in 
2324                                 ${osname}*)
2325                                         osname=svr$3
2326                                         osvers=$4
2327                                         ;;
2328                                 esac
2329                                 case "$osname" in
2330                                 svr4.0)
2331                                         : Check for ESIX
2332                                         if test -f /stand/boot ; then
2333                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2334                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2335                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2336                                                         if test -n "$isesix"; then
2337                                                                 osname=esix4
2338                                                         fi
2339                                                 fi
2340                                         fi
2341                                         ;;
2342                                 esac
2343                                 ;;
2344                         *)      if test -f /etc/systemid; then
2345                                         osname=sco
2346                                         set `echo $3 | $sed 's/\./ /g'` $4
2347                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2348                                                 osvers=$1.$2.$3
2349                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2350                                                 osvers=$1.$2
2351                                         elif $test -f $src/hints/sco_$1.sh; then
2352                                                 osvers=$1
2353                                         fi
2354                                 else
2355                                         case "$osname" in
2356                                         '') : Still unknown.  Probably a generic Sys V.
2357                                                 osname="sysv"
2358                                                 osvers="$3"
2359                                                 ;;
2360                                         esac
2361                                 fi
2362                                 ;;
2363                         esac
2364                         ;;
2365                 *)      case "$osname" in
2366                         '') : Still unknown.  Probably a generic BSD.
2367                                 osname="$1"
2368                                 osvers="$3"
2369                                 ;;
2370                         esac
2371                         ;;
2372                 esac
2373         else
2374                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2375                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2376                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2377                                 osname=news_os
2378                         fi
2379                         $rm -f UU/kernel.what
2380                 elif test -d c:/.; then
2381                         set X $myuname
2382                         osname=os2
2383                         osvers="$5"
2384                 fi
2385         fi
2386         
2387         : Now look for a hint file osname_osvers, unless one has been
2388         : specified already.
2389         case "$hintfile" in
2390         ''|' ')
2391                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2392                 : Also try without trailing minor version numbers.
2393                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2394                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2395                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2396                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2397                 case "$file" in
2398                 '') dflt=none ;;
2399                 *)  case "$osvers" in
2400                         '') dflt=$file
2401                                 ;;
2402                         *)  if $test -f $src/hints/$file.sh ; then
2403                                         dflt=$file
2404                                 elif $test -f $src/hints/$xfile.sh ; then
2405                                         dflt=$xfile
2406                                 elif $test -f $src/hints/$xxfile.sh ; then
2407                                         dflt=$xxfile
2408                                 elif $test -f $src/hints/$xxxfile.sh ; then
2409                                         dflt=$xxxfile
2410                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2411                                         dflt=$xxxxfile
2412                                 elif $test -f "$src/hints/${osname}.sh" ; then
2413                                         dflt="${osname}"
2414                                 else
2415                                         dflt=none
2416                                 fi
2417                                 ;;
2418                         esac
2419                         ;;
2420                 esac
2421                 if $test -f Policy.sh ; then
2422                         case "$dflt" in
2423                         *Policy*) ;;
2424                         none) dflt="Policy" ;;
2425                         *) dflt="Policy $dflt" ;;
2426                         esac
2427                 fi
2428                 ;;
2429         *)
2430                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2431                 ;;
2432         esac
2433
2434         if $test -f Policy.sh ; then
2435                 $cat <<EOM
2436
2437 There's also a Policy hint file available, which should make the
2438 site-specific (policy) questions easier to answer.
2439 EOM
2440
2441         fi
2442
2443         $cat <<EOM
2444
2445 You may give one or more space-separated answers, or "none" if appropriate.
2446 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2447 is a good thing.  DO NOT give a wrong version or a wrong OS.
2448
2449 EOM
2450
2451         rp="Which of these apply, if any?"
2452         . UU/myread
2453         tans=$ans
2454         for file in $tans; do
2455                 if $test X$file = XPolicy -a -f Policy.sh; then
2456                         . Policy.sh
2457                         $cat Policy.sh >> UU/config.sh
2458                 elif $test -f $src/hints/$file.sh; then
2459                         . $src/hints/$file.sh
2460                         $cat $src/hints/$file.sh >> UU/config.sh
2461                 elif $test X$tans = X -o X$tans = Xnone ; then
2462                         : nothing
2463                 else
2464                         : Give one chance to correct a possible typo.
2465                         echo "$file.sh does not exist"
2466                         dflt=$file
2467                         rp="hint to use instead?"
2468                         . UU/myread
2469                         for file in $ans; do
2470                                 if $test -f "$src/hints/$file.sh"; then
2471                                         . $src/hints/$file.sh
2472                                         $cat $src/hints/$file.sh >> UU/config.sh
2473                                 elif $test X$ans = X -o X$ans = Xnone ; then
2474                                         : nothing
2475                                 else
2476                                         echo "$file.sh does not exist -- ignored."
2477                                 fi
2478                         done
2479                 fi
2480         done
2481
2482         hint=recommended
2483         : Remember our hint file for later.
2484         if $test -f "$src/hints/$file.sh" ; then
2485                 hintfile="$file"
2486         else
2487                 hintfile=''
2488         fi
2489 fi
2490 cd UU
2491 ;;
2492 *)
2493         echo " "
2494         echo "Fetching default answers from $config_sh..." >&4
2495         tmp_n="$n"
2496         tmp_c="$c"
2497         cd ..
2498         cp $config_sh config.sh 2>/dev/null
2499         chmod +w config.sh
2500         . ./config.sh
2501         cd UU
2502         cp ../config.sh .
2503         n="$tmp_n"
2504         c="$tmp_c"
2505         hint=previous
2506         ;;
2507 esac
2508 test "$override" && . ./optdef.sh
2509 myuname="$newmyuname"
2510
2511 : Restore computed paths
2512 for file in $loclist $trylist; do
2513         eval $file="\$_$file"
2514 done
2515
2516 cat << EOM
2517
2518 Configure uses the operating system name and version to set some defaults.
2519 The default value is probably right if the name rings a bell. Otherwise,
2520 since spelling matters for me, either accept the default or answer "none"
2521 to leave it blank.
2522
2523 EOM
2524 case "$osname" in
2525         ''|' ')
2526                 case "$hintfile" in
2527                 ''|' '|none) dflt=none ;;
2528                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2529                 esac
2530                 ;;
2531         *) dflt="$osname" ;;
2532 esac
2533 rp="Operating system name?"
2534 . ./myread
2535 case "$ans" in
2536 none)  osname='' ;;
2537 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2538 esac
2539 echo " "
2540 case "$osvers" in
2541         ''|' ')
2542                 case "$hintfile" in
2543                 ''|' '|none) dflt=none ;;
2544                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2545                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2546                         case "$dflt" in
2547                         ''|' ') dflt=none ;;
2548                         esac
2549                         ;;
2550                 esac
2551                 ;;
2552         *) dflt="$osvers" ;;
2553 esac
2554 rp="Operating system version?"
2555 . ./myread
2556 case "$ans" in
2557 none)  osvers='' ;;
2558 *) osvers="$ans" ;;
2559 esac
2560
2561
2562 . ./posthint.sh
2563
2564 : who configured the system
2565 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2566 cf_by=`(logname) 2>/dev/null`
2567 case "$cf_by" in
2568 "")
2569         cf_by=`(whoami) 2>/dev/null`
2570         case "$cf_by" in
2571         "") cf_by=unknown ;;
2572         esac ;;
2573 esac
2574
2575 : set up the script used to warn in case of inconsistency
2576 cat <<EOS >whoa
2577 $startsh
2578 EOS
2579 cat <<'EOSC' >>whoa
2580 dflt=y
2581 echo " "
2582 echo "*** WHOA THERE!!! ***" >&4
2583 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2584 rp="    Keep the $hint value?"
2585 . ./myread
2586 case "$ans" in
2587 y) td=$was; tu=$was;;
2588 esac
2589 EOSC
2590
2591 : function used to set $1 to $val
2592 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2593 case "$val$was" in
2594 $define$undef) . ./whoa; eval "$var=\$td";;
2595 $undef$define) . ./whoa; eval "$var=\$tu";;
2596 *) eval "$var=$val";;
2597 esac'
2598
2599 cat <<EOM
2600
2601 Perl can be built to take advantage of threads on some systems.
2602 To do so, Configure must be run with -Dusethreads.
2603
2604 Note that threading is a highly experimental feature, and
2605 some known race conditions still remain.  If you choose to try
2606 it, be very sure to not actually deploy it for production
2607 purposes.  README.threads has more details, and is required
2608 reading if you enable threads.
2609 EOM
2610 case "$usethreads" in
2611 $define|true|[yY]*)     dflt='y';;
2612 *) dflt='n';;
2613 esac
2614 rp='Build a threading Perl?'
2615 . ./myread
2616 case "$ans" in
2617 y|Y)    val="$define" ;;
2618 *)      val="$undef" ;;
2619 esac
2620 set usethreads
2621 eval $setvar
2622
2623 case "$usethreads" in
2624 $define)
2625         $cat <<EOM
2626
2627 As of 5.5.640, Perl has two different internal threading implementations,
2628 the 5.005 version (5005threads) and an interpreter-based version
2629 (ithreads) that has one interpreter per thread.  Both are very 
2630 experimental.  This arrangement exists to help developers work out
2631 which one is better.
2632
2633 If you're a casual user, you probably don't want interpreter-threads
2634 at this time.  There doesn't yet exist a way to create threads from
2635 within Perl in this model, i.e., "use Thread;" will NOT work.
2636 EOM
2637         : Default to ithreads unless overridden on command line or with
2638         : old config.sh
2639         dflt='y'
2640         case "$use5005threads" in
2641                 $define|true|[yY]*) dflt='n';;
2642         esac
2643         case "$useithreads" in
2644                 $undef|false|[nN]*) dflt='n';;
2645         esac
2646         rp='Use interpreter-based ithreads?'
2647         . ./myread
2648         case "$ans" in
2649         y|Y)    val="$define" ;;
2650         *)      val="$undef" ;;
2651         esac
2652         set useithreads
2653         eval $setvar
2654         : Now set use5005threads to the opposite value.
2655         case "$useithreads" in
2656         $define) val="$undef" ;;
2657         *) val="$define" ;;
2658         esac
2659         set use5005threads
2660         eval $setvar
2661         ;;
2662 *)
2663         useithreads="$undef"
2664         use5005threads="$undef"
2665         ;;
2666 esac
2667
2668 case "$d_oldpthreads" in
2669 '')     : Configure tests would be welcome here.  For now, assume undef.
2670         val="$undef" ;;
2671 *)      val="$d_oldpthreads" ;;
2672 esac
2673 set d_oldpthreads
2674 eval $setvar
2675
2676
2677 case "$usethreads" in
2678 "$define"|true|[yY]*)
2679 : Look for a hint-file generated 'call-back-unit'.  If the
2680 : user has specified that a threading perl is to be built,
2681 : we may need to set or change some other defaults.
2682         if $test -f usethreads.cbu; then
2683                 echo "Your platform has some specific hints for threaded builds, using them..."
2684                 . ./usethreads.cbu
2685         else
2686                 $cat <<EOM
2687 (Your platform doesn't have any specific hints for threaded builds.
2688  Assuming POSIX threads, then.)
2689 EOM
2690         fi
2691         ;;
2692 esac
2693
2694 cat <<EOM
2695
2696 Perl can be built so that multiple Perl interpreters can coexist
2697 within the same Perl executable.
2698 EOM
2699
2700 case "$useithreads" in
2701 $define)
2702         cat <<EOM
2703 This multiple interpreter support is required for interpreter-based threads.
2704 EOM
2705         val="$define"
2706         ;;
2707 *)
2708         echo 'Normally you do not need this and you should answer no.'
2709         case "$usemultiplicity" in
2710         $define|true|[yY]*)     dflt='y';;
2711         *) dflt='n';;
2712         esac
2713         rp='Build Perl for multiplicity?'
2714         . ./myread
2715         case "$ans" in
2716         y|Y)    val="$define" ;;
2717         *)      val="$undef" ;;
2718         esac
2719         ;;
2720 esac
2721 set usemultiplicity
2722 eval $setvar
2723
2724 : determine where manual pages are on this system
2725 echo " "
2726 case "$sysman" in
2727 '') 
2728         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2729         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2730         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2731         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2732         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2733         sysman=`./loc . /usr/man/man1 $syspath`
2734         ;;
2735 esac
2736 if $test -d "$sysman"; then
2737         echo "System manual is in $sysman." >&4
2738 else
2739         echo "Could not find manual pages in source form." >&4
2740 fi
2741
2742 : see what memory models we can support
2743 case "$models" in
2744 '')
2745         $cat >pdp11.c <<'EOP'
2746 int main() {
2747 #ifdef pdp11
2748         exit(0);
2749 #else
2750         exit(1);
2751 #endif
2752 }
2753 EOP
2754         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2755         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2756                 dflt='unsplit split'
2757         else
2758                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2759                 case "$tans" in
2760                 X) dflt='none';;
2761                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2762                                 dflt='small'
2763                         else
2764                                 dflt=''
2765                         fi
2766                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2767                                 dflt="$dflt medium"
2768                         fi
2769                         if $test -d /lib/large || $test -d /usr/lib/large; then
2770                                 dflt="$dflt large"
2771                         fi
2772                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2773                                 dflt="$dflt huge"
2774                         fi
2775                 esac
2776         fi;;
2777 *) dflt="$models";;
2778 esac
2779 $cat <<EOM
2780  
2781 Some systems have different model sizes.  On most systems they are called
2782 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2783 split.  If your system doesn't support different memory models, say "none".
2784 If you wish to force everything to one memory model, say "none" here and
2785 put the appropriate flags later when it asks you for other cc and ld flags.
2786 Venix systems may wish to put "none" and let the compiler figure things out.
2787 (In the following question multiple model names should be space separated.)
2788
2789 The default for most systems is "none".
2790
2791 EOM
2792 rp="Which memory models are supported?"
2793 . ./myread
2794 models="$ans"
2795
2796 case "$models" in
2797 none)
2798         small=''
2799         medium=''
2800         large=''
2801         huge=''
2802         unsplit=''
2803         split=''
2804         ;;
2805 *split)
2806         case "$split" in
2807         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2808                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2809                         dflt='-i'
2810                 else
2811                         dflt='none'
2812                 fi;;
2813         *) dflt="$split";;
2814         esac
2815         rp="What flag indicates separate I and D space?"
2816         . ./myread
2817         tans="$ans"
2818         case "$tans" in
2819         none) tans='';;
2820         esac
2821         split="$tans"
2822         unsplit='';;
2823 *large*|*small*|*medium*|*huge*)
2824         case "$models" in
2825         *large*)
2826                 case "$large" in
2827                 '') dflt='-Ml';;
2828                 *) dflt="$large";;
2829                 esac
2830         rp="What flag indicates large model?"
2831         . ./myread
2832         tans="$ans"
2833         case "$tans" in
2834         none) tans='';
2835         esac
2836         large="$tans";;
2837         *) large='';;
2838         esac
2839         case "$models" in
2840         *huge*) case "$huge" in
2841                 '') dflt='-Mh';;
2842                 *) dflt="$huge";;
2843                 esac
2844                 rp="What flag indicates huge model?"
2845                 . ./myread
2846                 tans="$ans"
2847                 case "$tans" in
2848                 none) tans='';
2849                 esac
2850                 huge="$tans";;
2851         *) huge="$large";;
2852         esac
2853         case "$models" in
2854         *medium*) case "$medium" in
2855                 '') dflt='-Mm';;
2856                 *) dflt="$medium";;
2857                 esac
2858                 rp="What flag indicates medium model?"
2859                 . ./myread
2860                 tans="$ans"
2861                 case "$tans" in
2862                 none) tans='';
2863                 esac
2864                 medium="$tans";;
2865         *) medium="$large";;
2866         esac
2867         case "$models" in
2868         *small*) case "$small" in
2869                 '') dflt='none';;
2870                 *) dflt="$small";;
2871                 esac
2872                 rp="What flag indicates small model?"
2873                 . ./myread
2874                 tans="$ans"
2875                 case "$tans" in
2876                 none) tans='';
2877                 esac
2878                 small="$tans";;
2879         *) small='';;
2880         esac
2881         ;;
2882 *)
2883         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2884         ;;
2885 esac
2886 $rm -f pdp11.* pdp11
2887
2888 : make some quick guesses about what we are up against
2889 echo " "
2890 $echo $n "Hmm...  $c"
2891 echo exit 1 >bsd
2892 echo exit 1 >usg
2893 echo exit 1 >v7
2894 echo exit 1 >osf1
2895 echo exit 1 >eunice
2896 echo exit 1 >xenix
2897 echo exit 1 >venix
2898 echo exit 1 >os2
2899 d_bsd="$undef"
2900 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2901 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2902 then
2903         echo "Looks kind of like an OSF/1 system, but we'll see..."
2904         echo exit 0 >osf1
2905 elif test `echo abc | tr a-z A-Z` = Abc ; then
2906         xxx=`./loc addbib blurfl $pth`
2907         if $test -f $xxx; then
2908         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2909                 echo exit 0 >bsd
2910                 echo exit 0 >usg
2911         else
2912                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2913                         echo "Looks kind of like an extended USG system, but we'll see..."
2914                 else
2915                         echo "Looks kind of like a USG system, but we'll see..."
2916                 fi
2917                 echo exit 0 >usg
2918         fi
2919 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2920         echo "Looks kind of like a BSD system, but we'll see..."
2921         d_bsd="$define"
2922         echo exit 0 >bsd
2923 else
2924         echo "Looks kind of like a Version 7 system, but we'll see..."
2925         echo exit 0 >v7
2926 fi
2927 case "$eunicefix" in
2928 *unixtovms*)
2929         $cat <<'EOI'
2930 There is, however, a strange, musty smell in the air that reminds me of
2931 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2932 EOI
2933         echo exit 0 >eunice
2934         d_eunice="$define"
2935 : it so happens the Eunice I know will not run shell scripts in Unix format
2936         ;;
2937 *)
2938         echo " "
2939         echo "Congratulations.  You aren't running Eunice."
2940         d_eunice="$undef"
2941         ;;
2942 esac
2943 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2944 case "$p_" in
2945 :) ;;
2946 *)
2947         $cat <<'EOI'
2948 I have the feeling something is not exactly right, however...don't tell me...
2949 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2950 EOI
2951         echo exit 0 >os2
2952         ;;
2953 esac
2954 if test -f /xenix; then
2955         echo "Actually, this looks more like a XENIX system..."
2956         echo exit 0 >xenix
2957         d_xenix="$define"
2958 else
2959         echo " "
2960         echo "It's not Xenix..."
2961         d_xenix="$undef"
2962 fi
2963 chmod +x xenix
2964 $eunicefix xenix
2965 if test -f /venix; then
2966         echo "Actually, this looks more like a VENIX system..."
2967         echo exit 0 >venix
2968 else
2969         echo " "
2970         if ./xenix; then
2971                 : null
2972         else
2973                 echo "Nor is it Venix..."
2974         fi
2975 fi
2976 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2977 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2978 $rm -f foo
2979
2980 : see if we need a special compiler
2981 echo " "
2982 if ./usg; then
2983         case "$cc" in
2984         '') case "$Mcc" in
2985                 /*) dflt='Mcc';;
2986                 *) case "$large" in
2987                         -M*) dflt='cc';;
2988                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2989                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2990                                                 dflt='cc'
2991                                         else
2992                                                 dflt='cc -M'
2993                                         fi
2994                                 else
2995                                         dflt='cc'
2996                                 fi;;
2997                         esac;;
2998                 esac;;
2999         *)  dflt="$cc";;
3000         esac
3001         case "$dflt" in
3002         *M*)    $cat <<'EOM'
3003 On some older systems the default C compiler will not resolve multiple global
3004 references that happen to have the same name.  On some such systems the "Mcc"
3005 command may be used to force these to be resolved.  On other systems a "cc -M"
3006 command is required.  (Note that the -M flag on other systems indicates a
3007 memory model to use!) If you have the Gnu C compiler, you might wish to use
3008 that instead.
3009
3010 EOM
3011         ;;
3012         esac
3013         rp="Use which C compiler?"
3014         . ./myread
3015         cc="$ans"
3016 else
3017         case "$cc" in
3018         '') dflt=cc;;
3019         *) dflt="$cc";;
3020         esac
3021         rp="Use which C compiler?"
3022         . ./myread
3023         cc="$ans"
3024 fi
3025 : Look for a hint-file generated 'call-back-unit'.  Now that the
3026 : user has specified the compiler, we may need to set or change some
3027 : other defaults.
3028 if $test -f cc.cbu; then
3029     . ./cc.cbu
3030 fi
3031 echo " "
3032 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3033 $cat >gccvers.c <<EOM
3034 #include <stdio.h>
3035 int main() {
3036 #ifdef __GNUC__
3037 #ifdef __VERSION__
3038         printf("%s\n", __VERSION__);
3039 #else
3040         printf("%s\n", "1");
3041 #endif
3042 #endif
3043         exit(0);
3044 }
3045 EOM
3046 if $cc -o gccvers gccvers.c; then
3047         gccversion=`./gccvers`
3048         case "$gccversion" in
3049         '') echo "You are not using GNU cc." ;;
3050         *)  echo "You are using GNU cc $gccversion."
3051             ;;
3052         esac
3053 else
3054         echo " "
3055         echo "*** WHOA THERE!!! ***" >&4
3056         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3057         case "$knowitall" in
3058         '')
3059         echo "    You'd better start hunting for one and let me know about it." >&4
3060                 exit 1
3061                 ;;
3062         esac
3063 fi
3064 $rm -f gccvers*
3065 case "$gccversion" in
3066 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3067 esac
3068
3069 : decide how portable to be.  Allow command line overrides.
3070 case "$d_portable" in
3071 "$undef") ;;
3072 *)      d_portable="$define" ;;
3073 esac
3074
3075 : set up shell script to do ~ expansion
3076 cat >filexp <<EOSS
3077 $startsh
3078 : expand filename
3079 case "\$1" in
3080  ~/*|~)
3081         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3082         ;;
3083  ~*)
3084         if $test -f /bin/csh; then
3085                 /bin/csh -f -c "glob \$1"
3086                 failed=\$?
3087                 echo ""
3088                 exit \$failed
3089         else
3090                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3091                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3092                 if $test ! -d "\$dir"; then
3093                         me=\`basename \$0\`
3094                         echo "\$me: can't locate home directory for: \$name" >&2
3095                         exit 1
3096                 fi
3097                 case "\$1" in
3098                 */*)
3099                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3100                         ;;
3101                 *)
3102                         echo \$dir
3103                         ;;
3104                 esac
3105         fi
3106         ;;
3107 *)
3108         echo \$1
3109         ;;
3110 esac
3111 EOSS
3112 chmod +x filexp
3113 $eunicefix filexp
3114
3115 : now set up to get a file name
3116 cat <<EOS >getfile
3117 $startsh
3118 EOS
3119 cat <<'EOSC' >>getfile
3120 tilde=''
3121 fullpath=''
3122 already=''
3123 skip=''
3124 none_ok=''
3125 exp_file=''
3126 nopath_ok=''
3127 orig_rp="$rp"
3128 orig_dflt="$dflt"
3129 case "$gfpth" in
3130 '') gfpth='.' ;;
3131 esac
3132
3133 case "$fn" in
3134 *\(*)
3135         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3136         fn=`echo $fn | sed 's/(.*)//'`
3137         ;;
3138 esac
3139
3140 case "$fn" in
3141 *:*)
3142         loc_file=`expr $fn : '.*:\(.*\)'`
3143         fn=`expr $fn : '\(.*\):.*'`
3144         ;;
3145 esac
3146
3147 case "$fn" in
3148 *~*) tilde=true;;
3149 esac
3150 case "$fn" in
3151 */*) fullpath=true;;
3152 esac
3153 case "$fn" in
3154 *+*) skip=true;;
3155 esac
3156 case "$fn" in
3157 *n*) none_ok=true;;
3158 esac
3159 case "$fn" in
3160 *e*) exp_file=true;;
3161 esac
3162 case "$fn" in
3163 *p*) nopath_ok=true;;
3164 esac
3165
3166 case "$fn" in
3167 *f*) type='File';;
3168 *d*) type='Directory';;
3169 *l*) type='Locate';;
3170 esac
3171
3172 what="$type"
3173 case "$what" in
3174 Locate) what='File';;
3175 esac
3176
3177 case "$exp_file" in
3178 '')
3179         case "$d_portable" in
3180         "$define") ;;
3181         *) exp_file=true;;
3182         esac
3183         ;;
3184 esac
3185
3186 cd ..
3187 while test "$type"; do
3188         redo=''
3189         rp="$orig_rp"
3190         dflt="$orig_dflt"
3191         case "$tilde" in
3192         true) rp="$rp (~name ok)";;
3193         esac
3194         . UU/myread
3195         if test -f UU/getfile.ok && \
3196                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3197         then
3198                 value="$ans"
3199                 ansexp="$ans"
3200                 break
3201         fi
3202         case "$ans" in
3203         none)
3204                 value=''
3205                 ansexp=''
3206                 case "$none_ok" in
3207                 true) type='';;
3208                 esac
3209                 ;;
3210         *)
3211                 case "$tilde" in
3212                 '') value="$ans"
3213                         ansexp="$ans";;
3214                 *)
3215                         value=`UU/filexp $ans`
3216                         case $? in
3217                         0)
3218                                 if test "$ans" != "$value"; then
3219                                         echo "(That expands to $value on this system.)"
3220                                 fi
3221                                 ;;
3222                         *) value="$ans";;
3223                         esac
3224                         ansexp="$value"
3225                         case "$exp_file" in
3226                         '') value="$ans";;
3227                         esac
3228                         ;;
3229                 esac
3230                 case "$fullpath" in
3231                 true)
3232                         case "$ansexp" in
3233                         /*) value="$ansexp" ;;
3234                         *)
3235                                 redo=true
3236                                 case "$already" in
3237                                 true)
3238                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3239                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3240                                         ;;
3241                                 *)
3242                                 echo "Please give a full path name, starting with slash." >&4
3243                                         case "$tilde" in
3244                                         true)
3245                                 echo "Note that using ~name is ok provided it expands well." >&4
3246                                                 already=true
3247                                                 ;;
3248                                         esac
3249                                 esac
3250                                 ;;
3251                         esac
3252                         ;;
3253                 esac
3254                 case "$redo" in
3255                 '')
3256                         case "$type" in
3257                         File)
3258                                 for fp in $gfpth; do
3259                                         if test "X$fp" = X.; then
3260                                             pf="$ansexp"
3261                                         else    
3262                                             pf="$fp/$ansexp"
3263                                         fi
3264                                         if test -f "$pf"; then
3265                                                 type=''
3266                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3267                                         then
3268                                                 echo "($value is not a plain file, but that's ok.)"
3269                                                 type=''
3270                                         fi
3271                                         if test X"$type" = X; then
3272                                             value="$pf"
3273                                             break
3274                                         fi
3275                                 done
3276                                 ;;
3277                         Directory)
3278                                 for fp in $gfpth; do
3279                                         if test "X$fp" = X.; then
3280                                             pf="$ansexp"
3281                                         else    
3282                                             pf="$fp/$ansexp"
3283                                         fi
3284                                         if test -d "$pf"; then
3285                                                 type=''
3286                                                 value="$pf"
3287                                                 break
3288                                         fi
3289                                 done
3290                                 ;;
3291                         Locate)
3292                                 if test -d "$ansexp"; then
3293                                         echo "(Looking for $loc_file in directory $value.)"
3294                                         value="$value/$loc_file"
3295                                         ansexp="$ansexp/$loc_file"
3296                                 fi
3297                                 if test -f "$ansexp"; then
3298                                         type=''
3299                                 fi
3300                                 case "$nopath_ok" in
3301                                 true)   case "$value" in
3302                                         */*) ;;
3303                                         *)      echo "Assuming $value will be in people's path."
3304                                                 type=''
3305                                                 ;;
3306                                         esac
3307                                         ;;
3308                                 esac
3309                                 ;;
3310                         esac
3311
3312                         case "$skip" in
3313                         true) type='';
3314                         esac
3315
3316                         case "$type" in
3317                         '') ;;
3318                         *)
3319                                 if test "$fastread" = yes; then
3320                                         dflt=y
3321                                 else
3322                                         dflt=n
3323                                 fi
3324                                 rp="$what $value doesn't exist.  Use that name anyway?"
3325                                 . UU/myread
3326                                 dflt=''
3327                                 case "$ans" in
3328                                 y*) type='';;
3329                                 *) echo " ";;
3330                                 esac
3331                                 ;;
3332                         esac
3333                         ;;
3334                 esac
3335                 ;;
3336         esac
3337 done
3338 cd UU
3339 ans="$value"
3340 rp="$orig_rp"
3341 dflt="$orig_dflt"
3342 rm -f getfile.ok
3343 test "X$gfpthkeep" != Xy && gfpth=""
3344 EOSC
3345
3346 : What should the include directory be ?
3347 echo " "
3348 $echo $n "Hmm...  $c"
3349 dflt='/usr/include'
3350 incpath=''
3351 mips_type=''
3352 if $test -f /bin/mips && /bin/mips; then
3353         echo "Looks like a MIPS system..."
3354         $cat >usr.c <<'EOCP'
3355 #ifdef SYSTYPE_BSD43
3356 /bsd43
3357 #endif
3358 EOCP
3359         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3360                 dflt='/bsd43/usr/include'
3361                 incpath='/bsd43'
3362                 mips_type='BSD 4.3'
3363         else
3364                 mips_type='System V'
3365         fi
3366         $rm -f usr.c usr.out
3367         echo "and you're compiling with the $mips_type compiler and libraries."
3368         xxx_prompt=y
3369         echo "exit 0" >mips
3370 else
3371         echo "Doesn't look like a MIPS system."
3372         xxx_prompt=n
3373         echo "exit 1" >mips
3374 fi
3375 chmod +x mips
3376 $eunicefix mips
3377 case "$usrinc" in
3378 '') ;;
3379 *) dflt="$usrinc";;
3380 esac
3381 case "$xxx_prompt" in
3382 y)      fn=d/
3383         echo " "
3384         rp='Where are the include files you want to use?'
3385         . ./getfile
3386         usrinc="$ans"
3387         ;;
3388 *)      usrinc="$dflt"
3389         ;;
3390 esac
3391
3392 : see how we invoke the C preprocessor
3393 echo " "
3394 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3395 cat <<'EOT' >testcpp.c
3396 #define ABC abc
3397 #define XYZ xyz
3398 ABC.XYZ
3399 EOT
3400 cd ..
3401 if test ! -f cppstdin; then
3402         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3403                 # AIX cc -E doesn't show the absolute headerfile
3404                 # locations but we'll cheat by using the -M flag.
3405                 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
3406         else
3407                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3408         fi
3409 else
3410         echo "Keeping your $hint cppstdin wrapper."
3411 fi
3412 chmod 755 cppstdin
3413 wrapper=`pwd`/cppstdin
3414 ok='false'
3415 cd UU
3416
3417 if $test "X$cppstdin" != "X" && \
3418         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3419         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3420 then
3421         echo "You used to use $cppstdin $cppminus so we'll use that again."
3422         case "$cpprun" in
3423         '') echo "But let's see if we can live without a wrapper..." ;;
3424         *)
3425                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3426                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3427                 then
3428                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3429                         ok='true'
3430                 else
3431                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3432                 fi
3433                 ;;
3434         esac
3435 else
3436         case "$cppstdin" in
3437         '') ;;
3438         *)
3439                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3440                 ;;
3441         esac
3442 fi
3443
3444 if $ok; then
3445         : nothing
3446 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3447         $cc -E <testcpp.c >testcpp.out 2>&1; \
3448         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3449         echo "Yup, it does."
3450         x_cpp="$cc -E"
3451         x_minus='';
3452 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3453         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3454         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3455         echo "Yup, it does."
3456         x_cpp="$cc -E"
3457         x_minus='-';
3458 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3459         $cc -P <testcpp.c >testcpp.out 2>&1; \
3460         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3461         echo "Yipee, that works!"
3462         x_cpp="$cc -P"
3463         x_minus='';
3464 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3465         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3466         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3467         echo "At long last!"
3468         x_cpp="$cc -P"
3469         x_minus='-';
3470 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3471         $cpp <testcpp.c >testcpp.out 2>&1; \
3472         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3473         echo "It works!"
3474         x_cpp="$cpp"
3475         x_minus='';
3476 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3477         $cpp - <testcpp.c >testcpp.out 2>&1; \
3478         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3479         echo "Hooray, it works!  I was beginning to wonder."
3480         x_cpp="$cpp"
3481         x_minus='-';
3482 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3483         $wrapper <testcpp.c >testcpp.out 2>&1; \
3484         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3485         x_cpp="$wrapper"
3486         x_minus=''
3487         echo "Eureka!"
3488 else
3489         dflt=''
3490         rp="No dice.  I can't find a C preprocessor.  Name one:"
3491         . ./myread
3492         x_cpp="$ans"
3493         x_minus=''
3494         $x_cpp <testcpp.c >testcpp.out 2>&1
3495         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3496                 echo "OK, that will do." >&4
3497         else
3498 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3499                 exit 1
3500         fi
3501 fi
3502
3503 case "$ok" in
3504 false)
3505         cppstdin="$x_cpp"
3506         cppminus="$x_minus"
3507         cpprun="$x_cpp"
3508         cpplast="$x_minus"
3509         set X $x_cpp
3510         shift
3511         case "$1" in
3512         "$cpp")
3513                 echo "Perhaps can we force $cc -E using a wrapper..."
3514                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3515                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3516                 then
3517                         echo "Yup, we can."
3518                         cppstdin="$wrapper"
3519                         cppminus='';
3520                 else
3521                         echo "Nope, we'll have to live without it..."
3522                 fi
3523                 ;;
3524         esac
3525         case "$cpprun" in
3526         "$wrapper")
3527                 cpprun=''
3528                 cpplast=''
3529                 ;;
3530         esac
3531         ;;
3532 esac
3533
3534 case "$cppstdin" in
3535 "$wrapper"|'cppstdin') ;;
3536 *) $rm -f $wrapper;;
3537 esac
3538 $rm -f testcpp.c testcpp.out
3539
3540 : Set private lib path
3541 case "$plibpth" in
3542 '') if ./mips; then
3543                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3544         fi;;
3545 esac
3546 case "$libpth" in
3547 ' ') dlist='';;
3548 '') dlist="$loclibpth $plibpth $glibpth";;
3549 *) dlist="$libpth";;
3550 esac
3551
3552 : Now check and see which directories actually exist, avoiding duplicates
3553 libpth=''
3554 for xxx in $dlist
3555 do
3556     if $test -d $xxx; then
3557                 case " $libpth " in
3558                 *" $xxx "*) ;;
3559                 *) libpth="$libpth $xxx";;
3560                 esac
3561     fi
3562 done
3563 $cat <<'EOM'
3564
3565 Some systems have incompatible or broken versions of libraries.  Among
3566 the directories listed in the question below, please remove any you
3567 know not to be holding relevant libraries, and add any that are needed.
3568 Say "none" for none.
3569
3570 EOM
3571 case "$libpth" in
3572 '') dflt='none';;
3573 *)
3574         set X $libpth
3575         shift
3576         dflt=${1+"$@"}
3577         ;;
3578 esac
3579 rp="Directories to use for library searches?"
3580 . ./myread
3581 case "$ans" in
3582 none) libpth=' ';;
3583 *) libpth="$ans";;
3584 esac
3585
3586 : compute shared library extension
3587 case "$so" in
3588 '')
3589         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3590                 dflt='sl'
3591         else
3592                 dflt='so'
3593         fi
3594         ;;
3595 *) dflt="$so";;
3596 esac
3597 $cat <<EOM
3598
3599 On some systems, shared libraries may be available.  Answer 'none' if
3600 you want to suppress searching of shared libraries for the remainder
3601 of this configuration.
3602
3603 EOM
3604 rp='What is the file extension used for shared libraries?'
3605 . ./myread
3606 so="$ans"
3607
3608 : Define several unixisms.
3609 : Hints files or command line option can be used to override them.
3610 : The convoluted testing is in case hints files set either the old
3611 : or the new name.
3612 case "$_exe" in
3613 '')     case "$exe_ext" in
3614     '') ;;
3615         *)      _exe="$exe_ext" ;;
3616         esac
3617         ;;
3618 esac
3619 case "$_a" in
3620 '')     case "$lib_ext" in
3621     '') _a='.a';;
3622         *)      _a="$lib_ext" ;;
3623         esac
3624         ;;
3625 esac
3626 case "$_o" in
3627 '') case "$obj_ext" in
3628         '')     _o='.o';;
3629         *)      _o="$obj_ext";;
3630         esac
3631         ;;
3632 esac
3633 case "$p_" in
3634 '') case "$path_sep" in
3635         '')     p_=':';;
3636         *)      p_="$path_sep";;
3637         esac
3638         ;;
3639 esac
3640 exe_ext=$_exe
3641 lib_ext=$_a
3642 obj_ext=$_o
3643 path_sep=$p_
3644
3645 : Which makefile gets called first.  This is used by make depend.
3646 case "$firstmakefile" in
3647 '') firstmakefile='makefile';;
3648 esac
3649
3650 cat <<EOM
3651
3652 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3653 Configure must be run with -Dusesocks.
3654
3655 Normally you do not need this and you should answer no.
3656
3657 EOM
3658 case "$usesocks" in
3659 $define|true|[yY]*)     dflt='y';;
3660 *) dflt='n';;
3661 esac
3662 rp='Build Perl for SOCKS?'
3663 . ./myread
3664 case "$ans" in
3665 y|Y)    val="$define" ;;     
3666 *)      val="$undef" ;;
3667 esac
3668 set usesocks
3669 eval $setvar
3670
3671 : Looking for optional libraries
3672 echo " "
3673 echo "Checking for optional libraries..." >&4
3674 case "$libs" in
3675 ' '|'') dflt='';;
3676 *) dflt="$libs";;
3677 esac
3678 case "$libswanted" in
3679 '') libswanted='c_s';;
3680 esac
3681 case "$usesocks" in
3682 $define)
3683         libswanted="$libswanted socks5 socks5_sh"
3684         ;;
3685 esac
3686 for thislib in $libswanted; do
3687         
3688         libname="$thislib"
3689         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3690                 if $test "X$ignore_versioned_solibs" = "X"; then
3691                         xxx=/ignored$xxx
3692                 else
3693                         libstyle=shared
3694                 fi
3695         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3696                 libstyle=shared
3697         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3698                 libstyle=static
3699         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3700                 libstyle=static
3701         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3702                 libstyle=static
3703                 libname=${thislib}_s
3704         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3705                 libstyle="static"
3706         fi
3707         if $test -f "$xxx"; then
3708                 eval $libscheck
3709         fi
3710         if $test -f "$xxx"; then
3711                 case "$libstyle" in
3712                 shared) echo "Found -l$libname (shared)." ;;
3713                 static) echo "Found -l$libname." ;;
3714                 *)      echo "Found -l$libname ($libstyle)." ;;
3715                 esac
3716                 case " $dflt " in
3717                 *"-l$thislib "*);;
3718                 *) dflt="$dflt -l$libname"
3719                    libsfound="$libsfound $xxx"
3720                    yyy=`basename $xxx`
3721                    libsfiles="$libsfiles $yyy"
3722                    yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3723                    case " $libsdirs " in
3724                    *" $yyy "*) ;;
3725                    *) libsdirs="$libsdirs $yyy" ;;
3726                    esac
3727                    ;;
3728                 esac
3729         else
3730                 echo "No -l$thislib."
3731         fi
3732 done
3733 set X $dflt
3734 shift
3735 dflt="$*"
3736 case "$libs" in
3737 '') dflt="$dflt";;
3738 *) dflt="$libs";;
3739 esac
3740 case "$dflt" in
3741 ' '|'') dflt='none';;
3742 esac
3743
3744 $cat <<EOM
3745
3746 In order to compile $package on your machine, a number of libraries
3747 are usually needed.  Include any other special libraries here as well.
3748 Say "none" for none.  The default list is almost always right.
3749 EOM
3750
3751 echo " "
3752 rp="What libraries to use?"
3753 . ./myread
3754 case "$ans" in
3755 none) libs=' ';;
3756 *) libs="$ans";;
3757 esac
3758
3759 : determine optimization, if desired, or use for debug flag also
3760 case "$optimize" in
3761 ' '|$undef) dflt='none';;
3762 '') dflt='-O';;
3763 *) dflt="$optimize";;
3764 esac
3765 $cat <<EOH
3766
3767 By default, $package compiles with the -O flag to use the optimizer.
3768 Alternately, you might want to use the symbolic debugger, which uses
3769 the -g flag (on traditional Unix systems).  Either flag can be
3770 specified here.  To use neither flag, specify the word "none".
3771
3772 EOH
3773 rp="What optimizer/debugger flag should be used?"
3774 . ./myread
3775 optimize="$ans"
3776 case "$optimize" in
3777 'none') optimize=" ";;
3778 esac
3779
3780 dflt=''
3781 : We will not override a previous value, but we might want to
3782 : augment a hint file
3783 case "$hint" in
3784 default|recommended)
3785         case "$gccversion" in
3786         1*) dflt='-fpcc-struct-return' ;;
3787         esac
3788         case "$optimize" in
3789         *-g*) dflt="$dflt -DDEBUGGING";;
3790         esac
3791         case "$gccversion" in
3792         2*) if test -d /etc/conf/kconfig.d &&
3793                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3794                 then
3795                         dflt="$dflt -posix"
3796                 fi
3797                 ;;
3798         esac
3799         case "$gccversion" in
3800         1*) ;;
3801         2.[0-8]*) ;;
3802         ?*)     echo " "
3803                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3804                 echo 'int main(void) { return 0; }' > gcctest.c
3805                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3806                         echo "Yes, it does." 2>&1
3807                         case "$ccflags" in
3808                         *strict-aliasing*) 
3809                                 echo "Leaving current flags $ccflags alone." 2>&1
3810                                 ;;
3811                         *) dflt="$dflt -fno-strict-aliasing" ;;
3812                         esac
3813                 else
3814                         echo "Nope, it doesn't, but that's ok." 2>&1
3815                 fi
3816                 ;;
3817         esac
3818         ;;
3819 esac
3820
3821 case "$mips_type" in
3822 *BSD*|'') inclwanted="$locincpth $usrinc";;
3823 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3824 esac
3825 for thisincl in $inclwanted; do
3826         if $test -d $thisincl; then
3827                 if $test x$thisincl != x$usrinc; then
3828                         case "$dflt" in
3829                         *$thisincl*);;
3830                         *) dflt="$dflt -I$thisincl";;
3831                         esac
3832                 fi
3833         fi
3834 done
3835
3836 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3837         xxx=true;
3838 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3839         xxx=true;
3840 else
3841         xxx=false;
3842 fi;
3843 if $xxx; then
3844         case "$dflt" in
3845         *$2*);;
3846         *) dflt="$dflt -D$2";;
3847         esac;
3848 fi'
3849
3850 set signal.h LANGUAGE_C; eval $inctest
3851
3852 case "$usesocks" in
3853 $define)
3854         ccflags="$ccflags -DSOCKS"
3855         ;;
3856 esac
3857
3858 case "$hint" in
3859 default|recommended) dflt="$ccflags $dflt" ;;
3860 *) dflt="$ccflags";;
3861 esac
3862
3863 case "$dflt" in
3864 ''|' ') dflt=none;;
3865 esac
3866 $cat <<EOH
3867
3868 Your C compiler may want other flags.  For this question you should include
3869 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3870 but you should NOT include libraries or ld flags like -lwhatever.  If you
3871 want $package to honor its debug switch, you should include -DDEBUGGING here.
3872 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3873
3874 To use no flags, specify the word "none".
3875
3876 EOH
3877 set X $dflt
3878 shift
3879 dflt=${1+"$@"}
3880 rp="Any additional cc flags?"
3881 . ./myread
3882 case "$ans" in
3883 none) ccflags='';;
3884 *) ccflags="$ans";;
3885 esac
3886
3887 : the following weeds options from ccflags that are of no interest to cpp
3888 cppflags="$ccflags"
3889 case "$gccversion" in
3890 1*) cppflags="$cppflags -D__GNUC__"
3891 esac
3892 case "$mips_type" in
3893 '');;
3894 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3895 esac
3896 case "$cppflags" in
3897 '');;
3898 *)
3899         echo " "
3900         echo "Let me guess what the preprocessor flags are..." >&4
3901         set X $cppflags
3902         shift
3903         cppflags=''
3904         $cat >cpp.c <<'EOM'
3905 #define BLURFL foo
3906
3907 BLURFL xx LFRULB
3908 EOM
3909         previous=''
3910         for flag in $*
3911         do
3912                 case "$flag" in
3913                 -*) ftry="$flag";;
3914                 *) ftry="$previous $flag";;
3915                 esac
3916                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3917                         >cpp1.out 2>/dev/null && \
3918                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3919                         >cpp2.out 2>/dev/null && \
3920                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3921                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3922                 then
3923                         cppflags="$cppflags $ftry"
3924                         previous=''
3925                 else
3926                         previous="$flag"
3927                 fi
3928         done
3929         set X $cppflags
3930         shift
3931         cppflags=${1+"$@"}
3932         case "$cppflags" in
3933         *-*)  echo "They appear to be: $cppflags";;
3934         esac
3935         $rm -f cpp.c cpp?.out
3936         ;;
3937 esac
3938
3939 : flags used in final linking phase
3940 case "$ldflags" in
3941 '') if ./venix; then
3942                 dflt='-i -z'
3943         else
3944                 dflt=''
3945         fi
3946         case "$ccflags" in
3947         *-posix*) dflt="$dflt -posix" ;;
3948         esac
3949         ;;
3950 *) dflt="$ldflags";;
3951 esac
3952
3953 : Try to guess additional flags to pick up local libraries.
3954 for thislibdir in $libpth; do
3955         case " $loclibpth " in
3956         *" $thislibdir "*)
3957                 case "$dflt " in 
3958                 *"-L$thislibdir "*) ;;
3959                 *)  dflt="$dflt -L$thislibdir" ;;
3960                 esac
3961                 ;;
3962         esac
3963 done
3964
3965 case "$dflt" in
3966 '') dflt='none' ;;
3967 esac
3968
3969 $cat <<EOH
3970
3971 Your C linker may need flags.  For this question you should
3972 include -L/whatever and any other flags used by the C linker, but you
3973 should NOT include libraries like -lwhatever.
3974
3975 Make sure you include the appropriate -L/path flags if your C linker
3976 does not normally search all of the directories you specified above,
3977 namely
3978         $libpth
3979 To use no flags, specify the word "none".
3980
3981 EOH
3982
3983 rp="Any additional ld flags (NOT including libraries)?"
3984 . ./myread
3985 case "$ans" in
3986 none) ldflags='';;
3987 *) ldflags="$ans";;
3988 esac
3989 rmlist="$rmlist pdp11"
3990
3991 : coherency check
3992 echo " "
3993 echo "Checking your choice of C compiler and flags for coherency..." >&4
3994 $cat > try.c <<'EOF'
3995 #include <stdio.h>
3996 int main() { printf("Ok\n"); exit(0); }
3997 EOF
3998 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
3999 shift
4000 $cat >try.msg <<'EOM'
4001 I've tried to compile and run the following simple program:
4002
4003 EOM
4004 $cat try.c >> try.msg
4005
4006 $cat >> try.msg <<EOM
4007
4008 I used the command:
4009
4010         $*
4011         ./try
4012
4013 and I got the following output:
4014
4015 EOM
4016 dflt=y
4017 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4018         if sh -c './try' >>try.msg 2>&1; then
4019                 xxx=`./try`
4020                 case "$xxx" in
4021                 "Ok") dflt=n ;;
4022                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4023                         case " $libs " in
4024                         *" -lsfio "*)
4025                                 cat >> try.msg <<'EOQS'
4026 If $libs contains -lsfio, and sfio is mis-configured, then it
4027 sometimes (apparently) runs and exits with a 0 status, but with no
4028 output!  It may have to do with sfio's use of _exit vs. exit.
4029
4030 EOQS
4031                                 rp="You have a big problem.  Shall I abort Configure"
4032                                 dflt=y
4033                                 ;;
4034                         esac
4035                         ;;
4036                 esac
4037         else
4038                 echo "The program compiled OK, but exited with status $?." >>try.msg
4039                 rp="You have a problem.  Shall I abort Configure"
4040                 dflt=y
4041         fi
4042 else
4043         echo "I can't compile the test program." >>try.msg
4044         rp="You have a BIG problem.  Shall I abort Configure"
4045         dflt=y
4046 fi
4047 case "$dflt" in
4048 y)
4049         $cat try.msg >&4
4050         case "$knowitall" in
4051         '')
4052                 echo "(The supplied flags or libraries might be incorrect.)"
4053                 ;;
4054         *) dflt=n;;
4055         esac
4056         echo " "
4057         . ./myread
4058         case "$ans" in
4059         n*|N*) ;;
4060         *)      echo "Ok.  Stopping Configure." >&4
4061                 exit 1
4062                 ;;
4063         esac
4064         ;;
4065 n) echo "OK, that should do.";;
4066 esac
4067 $rm -f try try.* core
4068
4069 : define an is-a-typedef? function
4070 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4071 case "$inclist" in
4072 "") inclist="sys/types.h";;
4073 esac;
4074 eval "varval=\$$var";
4075 case "$varval" in
4076 "")
4077         $rm -f temp.c;
4078         for inc in $inclist; do
4079                 echo "#include <$inc>" >>temp.c;
4080         done;
4081         echo "#ifdef $type" >> temp.c;
4082         echo "printf(\"We have $type\");" >> temp.c;
4083         echo "#endif" >> temp.c;
4084         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4085         if $contains $type temp.E >/dev/null 2>&1; then
4086                 eval "$var=\$type";
4087         else
4088                 eval "$var=\$def";
4089         fi;
4090         $rm -f temp.?;;
4091 *) eval "$var=\$varval";;
4092 esac'
4093
4094 : define an is-a-typedef? function that prompts if the type is not available.
4095 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4096 case "$inclist" in
4097 "") inclist="sys/types.h";;
4098 esac;
4099 eval "varval=\$$var";
4100 case "$varval" in
4101 "")
4102         $rm -f temp.c;
4103         for inc in $inclist; do
4104                 echo "#include <$inc>" >>temp.c;
4105         done;
4106         echo "#ifdef $type" >> temp.c;
4107         echo "printf(\"We have $type\");" >> temp.c;
4108         echo "#endif" >> temp.c;
4109         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4110         echo " " ;
4111         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4112         if $contains $type temp.E >/dev/null 2>&1; then
4113                 echo "$type found." >&4;
4114                 eval "$var=\$type";
4115         else
4116                 echo "$type NOT found." >&4;
4117                 dflt="$def";
4118                 . ./myread ;
4119                 eval "$var=\$ans";
4120         fi;
4121         $rm -f temp.?;;
4122 *) eval "$var=\$varval";;
4123 esac'
4124
4125 : define a shorthand compile call
4126 compile='
4127 mc_file=$1;
4128 shift;
4129 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4130 : define a shorthand compile call for compilations that should be ok.
4131 compile_ok='
4132 mc_file=$1;
4133 shift;
4134 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4135
4136 : check for lengths of integral types
4137 echo " "
4138 case "$intsize" in
4139 '')
4140         echo "Checking to see how big your integers are..." >&4
4141         $cat >intsize.c <<'EOCP'
4142 #include <stdio.h>
4143 int main()
4144 {
4145         printf("intsize=%d;\n", (int)sizeof(int));
4146         printf("longsize=%d;\n", (int)sizeof(long));
4147         printf("shortsize=%d;\n", (int)sizeof(short));
4148         exit(0);
4149 }
4150 EOCP
4151         set intsize
4152         if eval $compile_ok && ./intsize > /dev/null; then
4153                 eval `./intsize`
4154                 echo "Your integers are $intsize bytes long."
4155                 echo "Your long integers are $longsize bytes long."
4156                 echo "Your short integers are $shortsize bytes long."
4157         else
4158                 $cat >&4 <<EOM
4159 !
4160 Help! I can't compile and run the intsize test program: please enlighten me!
4161 (This is probably a misconfiguration in your system or libraries, and
4162 you really ought to fix it.  Still, I'll try anyway.)
4163 !
4164 EOM
4165                 dflt=4
4166                 rp="What is the size of an integer (in bytes)?"
4167                 . ./myread
4168                 intsize="$ans"
4169                 dflt=$intsize
4170                 rp="What is the size of a long integer (in bytes)?"
4171                 . ./myread
4172                 longsize="$ans"
4173                 dflt=2
4174                 rp="What is the size of a short integer (in bytes)?"
4175                 . ./myread
4176                 shortsize="$ans"
4177         fi
4178         ;;
4179 esac
4180 $rm -f intsize intsize.*
4181
4182 : see what type lseek is declared as in the kernel
4183 rp="What is the type used for lseek's offset on this system?"
4184 set off_t lseektype long stdio.h sys/types.h
4185 eval $typedef_ask
4186
4187 echo " "
4188 $echo $n "Checking to see how big your file offsets are...$c" >&4
4189 $cat >try.c <<EOCP
4190 #include <sys/types.h>
4191 #include <stdio.h>
4192 int main()
4193 {
4194     printf("%d\n", (int)sizeof($lseektype));
4195     return(0); 
4196 }
4197 EOCP
4198 set try
4199 if eval $compile_ok; then
4200         lseeksize=`./try`
4201         $echo " $lseeksize bytes." >&4
4202 else
4203         dflt=$longsize
4204         echo " "
4205         echo "(I can't seem to compile the test program.  Guessing...)"
4206         rp="What is the size of your file offsets (in bytes)?"
4207         . ./myread
4208         lseeksize="$ans"
4209 fi
4210 $rm -f try.c try
4211
4212 : see what type file positions are declared as in the library
4213 rp="What is the type for file position used by fsetpos()?"
4214 set fpos_t fpostype long stdio.h sys/types.h
4215 eval $typedef_ask
4216
4217 echo " "
4218 case "$fpostype" in
4219 *_t) zzz="$fpostype"    ;;
4220 *)   zzz="fpos_t"       ;;
4221 esac
4222 $echo $n "Checking the size of $zzz...$c" >&4 
4223 cat > try.c <<EOCP
4224 #include <sys/types.h>
4225 #include <stdio.h>
4226 int main() {
4227     printf("%d\n", (int)sizeof($fpostype));
4228     exit(0);
4229 }
4230 EOCP
4231 set try
4232 if eval $compile_ok; then
4233         yyy=`./try`
4234         case "$yyy" in
4235         '')     fpossize=4
4236                 echo " "
4237                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4238                 ;;
4239         *)      fpossize=$yyy
4240                 echo " $fpossize bytes."
4241                 ;;
4242         esac
4243 else
4244         dflt="$longsize"
4245         echo " "
4246         echo "(I can't compile the test program.  Guessing...)" >&4
4247         rp="What is the size of your file positions (in bytes)?"
4248         . ./myread
4249         fpossize="$ans"
4250 fi
4251
4252
4253
4254 case "$lseeksize:$fpossize" in
4255 8:8) cat <<EOM
4256
4257 You can have files larger than 2 gigabytes.
4258 EOM
4259    val="$define" ;;
4260 *) cat <<EOM
4261
4262 Perl can be built to understand large files (files larger than 2 gigabytes)
4263 on some systems.  To do so, Configure must be run with -Duselargefiles.
4264
4265 If this doesn't make any sense to you, just accept the default 'y'.
4266 EOM
4267    case "$uselargefiles" in
4268    "$undef"|false|[nN]*) dflt='n' ;;
4269    *)   dflt='y' ;;
4270    esac
4271    rp='Try to understand large files, if available?'
4272    . ./myread
4273    case "$ans" in
4274    y|Y)         val="$define" ;;
4275    *)           val="$undef"  ;;
4276    esac
4277    ;;
4278 esac
4279 set uselargefiles
4280 eval $setvar
4281 case "$uselargefiles" in
4282 "$define")
4283 : Look for a hint-file generated 'call-back-unit'.  If the
4284 : user has specified that a large files perl is to be built,
4285 : we may need to set or change some other defaults.
4286         if $test -f uselfs.cbu; then
4287                 echo "Your platform has some specific hints for large file builds, using them..."
4288                 . ./uselfs.cbu
4289                 echo " "
4290                 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4291                 $cat >try.c <<EOCP
4292 #include <sys/types.h>
4293 #include <stdio.h>
4294 int main()
4295 {
4296     printf("%d\n", (int)sizeof($lseektype));
4297     return(0); 
4298 }
4299 EOCP
4300                 set try
4301                 if eval $compile_ok; then
4302                         lseeksize=`./try`
4303                         $echo " $lseeksize bytes." >&4
4304                 else
4305                         dflt="$lseeksize"
4306                         echo " "
4307                         echo "(I can't seem to compile the test program.  Guessing...)"
4308                         rp="What is the size of your file offsets (in bytes)?"
4309                         . ./myread
4310                         lseeksize="$ans"
4311                 fi
4312                 case "$fpostype" in
4313                 *_t) zzz="$fpostype"    ;;
4314                 *)   zzz="fpos_t"       ;;
4315                 esac
4316                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4317                 $cat > try.c <<EOCP
4318 #include <sys/types.h>
4319 #include <stdio.h>
4320 int main() {
4321     printf("%d\n", (int)sizeof($fpostype));
4322     exit(0);
4323 }
4324 EOCP
4325                 set try
4326                 if eval $compile_ok; then
4327                         yyy=`./try`
4328                         dflt="$lseeksize"
4329                         case "$yyy" in
4330                         '')     echo " "
4331                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4332                                 ;;
4333                         *)      fpossize=$yyy
4334                                 echo " $fpossize bytes."
4335                                 ;;
4336                         esac
4337                 else
4338                         dflt="$fpossize"
4339                         echo " "
4340                         echo "(I can't compile the test program.  Guessing...)" >&4
4341                         rp="What is the size of your file positions (in bytes)?"
4342                         . ./myread
4343                         fpossize="$ans"
4344                 fi
4345                 $rm -f try.c try
4346         fi
4347         ;;
4348 esac
4349
4350
4351 case "$usemorebits" in
4352 "$define"|true|[yY]*)
4353         use64bits="$define"
4354         uselongdouble="$define"
4355         usemorebits="$define"
4356         ;;
4357 *)      usemorebits="$undef"
4358         ;;
4359 esac
4360
4361
4362 case "$intsize:$longsize" in
4363 8:*|*:8) cat <<EOM
4364
4365 You have natively 64-bit integers.
4366 EOM
4367    val="$define" ;;
4368 *) cat <<EOM
4369
4370 Perl can be built to take advantage of 64-bit integer types
4371 on some systems.  To do so, Configure must be run with -Duse64bits.
4372
4373 If this doesn't make any sense to you, just accept the default.
4374 EOM
4375   case "$use64bits" in
4376   $define|true|[yY]*)   dflt='y';;
4377   *) dflt='n';;
4378   esac
4379   rp='Try to use 64-bit integers, if available?'
4380   . ./myread
4381   case "$ans" in
4382   y|Y) val="$define" ;;
4383   *)   val="$undef"  ;;
4384   esac
4385   ;;
4386 esac
4387 set use64bits
4388 eval $setvar
4389
4390 case "$archname64" in
4391 '') archname64='' ;;    # not a typo
4392 esac
4393
4394 case "$use64bits" in
4395 "$define"|true|[yY]*)
4396 : Look for a hint-file generated 'call-back-unit'.  If the
4397 : user has specified that a 64-bit perl is to be built,
4398 : we may need to set or change some other defaults.
4399         if $test -f use64bits.cbu; then
4400                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4401                 . ./use64bits.cbu
4402         else
4403                 $cat <<EOM
4404 (Your platform doesn't have any specific hints for 64-bit builds.)
4405 EOM
4406                 case "$intsize:$longsize" in
4407 8:*|*:8) cat <<EOM
4408 (This is probably okay, as your system is a natively 64-bit system.)
4409 EOM
4410                   ;;
4411                 esac
4412                 case "$gccversion" in
4413                 '')     ;;
4414                 *)      case "$ccflags" in
4415                         *-DUSE_LONG_LONG*) ;;
4416                         *) $cat <<EOM
4417 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4418 to the compilation flags.
4419 EOM
4420                            ccflags="$ccflags -DUSE_LONG_LONG"
4421                            ;;
4422                         esac
4423                         ;;
4424                 esac
4425         fi
4426         ;;
4427 esac
4428
4429 : determine the architecture name
4430 echo " "
4431 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4432         tarch=`arch`"-$osname"
4433 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4434         if uname -m > tmparch 2>&1 ; then
4435                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4436                         -e 's/$/'"-$osname/" tmparch`
4437         else
4438                 tarch="$osname"
4439         fi
4440         $rm -f tmparch
4441 else
4442         tarch="$osname"
4443 fi
4444 case "$myarchname" in
4445 ''|"$tarch") ;;
4446 *)
4447         echo "(Your architecture name used to be $myarchname.)"
4448         archname=''
4449         ;;
4450 esac
4451 myarchname="$tarch"
4452 case "$archname" in
4453 '') dflt="$tarch";;
4454 *) dflt="$archname";;
4455 esac
4456 rp='What is your architecture name'
4457 . ./myread
4458 archname="$ans"
4459 case "$usethreads" in
4460 $define)
4461         echo "Threads selected." >&4
4462         case "$archname" in
4463         *-thread*) echo "...and architecture name already has -thread." >&4
4464                 ;;
4465         *)      archname="$archname-thread"
4466                 echo "...setting architecture name to $archname." >&4
4467                 ;;
4468         esac
4469         ;;
4470 esac
4471 case "$usemultiplicity" in
4472 $define)
4473         echo "Multiplicity selected." >&4
4474         case "$archname" in
4475         *-multi*) echo "...and architecture name already has -multi." >&4
4476                 ;;
4477         *)      archname="$archname-multi"
4478                 echo "...setting architecture name to $archname." >&4
4479                 ;;
4480         esac
4481         ;;
4482 esac
4483 case "$use64bits" in
4484 $define)
4485         case "$archname64" in
4486         '')
4487                 ;;
4488         *)
4489                 case "$archname" in
4490                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4491                         ;;
4492                 *)      archname="$archname-$archname64"
4493                         echo "...setting architecture name to $archname." >&4
4494                         ;;
4495                 esac
4496                 ;;
4497         esac
4498 esac
4499
4500 : determine root of directory hierarchy where package will be installed.
4501 case "$prefix" in
4502 '')
4503         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4504         ;;
4505 *)
4506         dflt="$prefix"
4507         ;;
4508 esac
4509 $cat <<EOM
4510
4511 By default, $package will be installed in $dflt/bin, manual pages
4512 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4513 installation directories. Typically this is something like /usr/local.
4514 If you wish to have binaries under /usr/bin but other parts of the
4515 installation under /usr/local, that's ok: you will be prompted
4516 separately for each of the installation directories, the prefix being
4517 only used to set the defaults.
4518
4519 EOM
4520 fn=d~
4521 rp='Installation prefix to use?'
4522 . ./getfile
4523 oldprefix=''
4524 case "$prefix" in
4525 '') ;;
4526 *)
4527         case "$ans" in
4528         "$prefix") ;;
4529         *) oldprefix="$prefix";;
4530         esac
4531         ;;
4532 esac
4533 prefix="$ans"
4534 prefixexp="$ansexp"
4535
4536 : is AFS running?
4537 echo " "
4538 case "$afs" in
4539 $define|true)   afs=true ;;
4540 $undef|false)   afs=false ;;
4541 *)      if test -d /afs; then
4542                 afs=true
4543         else
4544                 afs=false
4545         fi
4546         ;;
4547 esac
4548 if $afs; then
4549         echo "AFS may be running... I'll be extra cautious then..." >&4
4550 else
4551         echo "AFS does not seem to be running..." >&4
4552 fi
4553
4554 : determine installation prefix for where package is to be installed.
4555 if $afs; then 
4556 $cat <<EOM
4557
4558 Since you are running AFS, I need to distinguish the directory in which
4559 files will reside from the directory in which they are installed (and from
4560 which they are presumably copied to the former directory by occult means).
4561
4562 EOM
4563         case "$installprefix" in
4564         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4565         *) dflt="$installprefix";;
4566         esac
4567 else
4568 $cat <<EOM
4569
4570 In some special cases, particularly when building $package for distribution,
4571 it is convenient to distinguish between the directory in which files should 
4572 be installed from the directory ($prefix) in which they 
4573 will eventually reside.  For most users, these two directories are the same.
4574
4575 EOM
4576         case "$installprefix" in
4577         '') dflt=$prefix ;;
4578         *) dflt=$installprefix;;
4579         esac
4580 fi
4581 fn=d~
4582 rp='What installation prefix should I use for installing files?'
4583 . ./getfile
4584 installprefix="$ans"
4585 installprefixexp="$ansexp"
4586
4587 : set the prefixit variable, to compute a suitable default value
4588 prefixit='case "$3" in
4589 ""|none)
4590         case "$oldprefix" in
4591         "") eval "$1=\"\$$2\"";;
4592         *)
4593                 case "$3" in
4594                 "") eval "$1=";;
4595                 none)
4596                         eval "tp=\"\$$2\"";
4597                         case "$tp" in
4598                         ""|" ") eval "$1=\"\$$2\"";;
4599                         *) eval "$1=";;
4600                         esac;;
4601                 esac;;
4602         esac;;
4603 *)
4604         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4605         case "$tp" in
4606         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4607         /*-$oldprefix/*|\~*-$oldprefix/*)
4608                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4609         *) eval "$1=\"\$$2\"";;
4610         esac;;
4611 esac'
4612
4613 : set the base revision
4614 baserev=5.0
4615
4616
4617 : get the patchlevel
4618 echo " "
4619 echo "Getting the current patchlevel..." >&4
4620 if $test -r $rsrc/patchlevel.h;then
4621         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4622         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4623         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4624         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4625         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4626 else
4627         patchlevel=0
4628         subversion=0
4629         api_revision=0
4630         api_version=0
4631         api_subversion=0
4632 fi
4633 $echo $n "(You have $package" $c
4634 case "$package" in
4635 "*$baserev")    ;;
4636 *)              $echo $n " $baserev" $c ;;
4637 esac
4638 $echo $n " patchlevel $patchlevel" $c
4639 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4640 echo ".)"
4641 case "$osname" in
4642 dos|vms)
4643         : XXX Should be a Configure test for double-dots in filenames.
4644         version=`echo $baserev $patchlevel $subversion | \
4645                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4646         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4647                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4648         ;;
4649 *)
4650         version=`echo $baserev $patchlevel $subversion | \
4651                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4652         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4653                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4654         ;;
4655 esac
4656 : Special case the 5.005_xx maintenance series, which used 5.005
4657 : without any subversion label as a subdirectory in $sitelib
4658 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4659         api_versionstring='5.005'
4660 fi
4661
4662 : determine installation style
4663 : For now, try to deduce it from prefix unless it is already set.
4664 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4665 case "$installstyle" in
4666 '')     case "$prefix" in
4667                 *perl*) dflt='lib';;
4668                 *) dflt='lib/perl5' ;;
4669         esac
4670         ;;
4671 *)      dflt='lib/perl5' ;;
4672 esac
4673 : Probably not worth prompting for this since we prompt for all
4674 : the directories individually, and the prompt would be too long and
4675 : confusing anyway.
4676 installstyle=$dflt
4677
4678 : determine where private library files go
4679 : Usual default is /usr/local/lib/perl5/$version.
4680 : Also allow things like /opt/perl/lib/$version, since 
4681 : /opt/perl/lib/perl5... would be redundant.
4682 : The default "style" setting is made in installstyle.U
4683 case "$installstyle" in
4684 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4685 *)       set dflt privlib lib/$version ;;
4686 esac
4687 eval $prefixit
4688 $cat <<EOM
4689
4690 There are some auxiliary files for $package that need to be put into a
4691 private library directory that is accessible by everyone.
4692
4693 EOM
4694 fn=d~+
4695 rp='Pathname where the private library files will reside?'
4696 . ./getfile
4697 privlib="$ans"
4698 privlibexp="$ansexp"
4699 : Change installation prefix, if necessary.
4700 if $test X"$prefix" != X"$installprefix"; then
4701         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4702 else
4703         installprivlib="$privlibexp"
4704 fi
4705
4706 : set the prefixup variable, to restore leading tilda escape
4707 prefixup='case "$prefixexp" in
4708 "$prefix") ;;
4709 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4710 esac'
4711
4712 : determine where public architecture dependent libraries go
4713 set archlib archlib
4714 eval $prefixit
4715 : privlib default is /usr/local/lib/$package/$version
4716 : archlib default is /usr/local/lib/$package/$version/$archname
4717 : privlib may have an optional trailing /share.
4718 tdflt=`echo $privlib | $sed 's,/share$,,'`
4719 tdflt=$tdflt/$archname
4720 case "$archlib" in
4721 '')     dflt=$tdflt
4722         ;;
4723 *)      dflt="$archlib"
4724     ;;
4725 esac
4726 $cat <<EOM
4727
4728 $spackage contains architecture-dependent library files.  If you are
4729 sharing libraries in a heterogeneous environment, you might store
4730 these files in a separate location.  Otherwise, you can just include
4731 them with the rest of the public library files.
4732
4733 EOM
4734 fn=d+~
4735 rp='Where do you want to put the public architecture-dependent libraries?'
4736 . ./getfile
4737 archlib="$ans"
4738 archlibexp="$ansexp"
4739 if $test X"$archlib" = X"$privlib"; then
4740         d_archlib="$undef"
4741 else
4742         d_archlib="$define"
4743 fi
4744 : Change installation prefix, if necessary.
4745 if $test X"$prefix" != X"$installprefix"; then
4746         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4747 else
4748         installarchlib="$archlibexp"
4749 fi
4750
4751
4752 : Binary compatibility with 5.005 is not possible for builds
4753 : with advanced features
4754 case "$usethreads$usemultiplicity" in
4755 *define*)
4756         bincompat5005="$undef"
4757         d_bincompat5005="$undef"
4758         ;;
4759 *)      $cat <<EOM
4760
4761 Perl 5.006 can be compiled for binary compatibility with 5.005.
4762 If you decide to do so, you will be able to continue using most
4763 of the extensions that were compiled for Perl 5.005.
4764
4765 EOM
4766         case "$bincompat5005$d_bincompat5005" in
4767         *"$undef"*) dflt=n ;;
4768         *) dflt=y ;;
4769         esac
4770         rp='Binary compatibility with Perl 5.005?'
4771         . ./myread
4772         case "$ans" in
4773         y*) val="$define" ;;
4774         *)  val="$undef" ;;
4775         esac
4776         set d_bincompat5005
4777         eval $setvar
4778         case "$d_bincompat5005" in
4779         "$define")
4780                 bincompat5005="$define"
4781                 ;;
4782         *)      bincompat5005="$undef"
4783                 d_bincompat5005="$undef"
4784                 ;;
4785         esac
4786         ;;
4787 esac
4788
4789
4790 : see if setuid scripts can be secure
4791 $cat <<EOM
4792
4793 Some kernels have a bug that prevents setuid #! scripts from being
4794 secure.  Some sites have disabled setuid #! scripts because of this.
4795
4796 First let's decide if your kernel supports secure setuid #! scripts.
4797 (If setuid #! scripts would be secure but have been disabled anyway,
4798 don't say that they are secure if asked.)
4799
4800 EOM
4801
4802 val="$undef"
4803 if $test -d /dev/fd; then
4804         echo "#!$ls" >reflect
4805         chmod +x,u+s reflect
4806         ./reflect >flect 2>&1
4807         if $contains "/dev/fd" flect >/dev/null; then
4808                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4809                 val="$define"
4810         else
4811                 $cat <<EOM
4812 If you are not sure if they are secure, I can check but I'll need a
4813 username and password different from the one you are using right now.
4814 If you don't have such a username or don't want me to test, simply
4815 enter 'none'.
4816
4817 EOM
4818                 rp='Other username to test security of setuid scripts with?'
4819                 dflt='none'
4820                 . ./myread
4821                 case "$ans" in
4822                 n|none)
4823                         case "$d_suidsafe" in
4824                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4825                                 dflt=n;;
4826                         "$undef")
4827                                 echo "Well, the $hint value is *not* secure." >&4
4828                                 dflt=n;;
4829                         *)      echo "Well, the $hint value *is* secure." >&4
4830                                 dflt=y;;
4831                         esac
4832                         ;;
4833                 *)
4834                         $rm -f reflect flect
4835                         echo "#!$ls" >reflect
4836                         chmod +x,u+s reflect
4837                         echo >flect
4838                         chmod a+w flect
4839                         echo '"su" will (probably) prompt you for '"$ans's password."
4840                         su $ans -c './reflect >flect'
4841                         if $contains "/dev/fd" flect >/dev/null; then
4842                                 echo "Okay, it looks like setuid scripts are secure." >&4
4843                                 dflt=y
4844                         else
4845                                 echo "I don't think setuid scripts are secure." >&4
4846                                 dflt=n
4847                         fi
4848                         ;;
4849                 esac
4850                 rp='Does your kernel have *secure* setuid scripts?'
4851                 . ./myread
4852                 case "$ans" in
4853                 [yY]*)  val="$define";;
4854                 *)      val="$undef";;
4855                 esac
4856         fi
4857 else
4858         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4859         echo "(That's for file descriptors, not floppy disks.)"
4860         val="$undef"
4861 fi
4862 set d_suidsafe
4863 eval $setvar
4864
4865 $rm -f reflect flect
4866
4867 : now see if they want to do setuid emulation
4868 echo " "
4869 val="$undef"
4870 case "$d_suidsafe" in
4871 "$define")
4872         val="$undef"
4873         echo "No need to emulate SUID scripts since they are secure here." >& 4
4874         ;;
4875 *)
4876         $cat <<EOM
4877 Some systems have disabled setuid scripts, especially systems where
4878 setuid scripts cannot be secure.  On systems where setuid scripts have
4879 been disabled, the setuid/setgid bits on scripts are currently
4880 useless.  It is possible for $package to detect those bits and emulate
4881 setuid/setgid in a secure fashion.  This emulation will only work if
4882 setuid scripts have been disabled in your kernel.
4883
4884 EOM
4885         case "$d_dosuid" in
4886         "$define") dflt=y ;;
4887         *) dflt=n ;;
4888         esac
4889         rp="Do you want to do setuid/setgid emulation?"
4890         . ./myread
4891         case "$ans" in
4892         [yY]*)  val="$define";;
4893         *)      val="$undef";;
4894         esac
4895         ;;
4896 esac
4897 set d_dosuid
4898 eval $setvar
4899
4900 : determine filename position in cpp output
4901 echo " "
4902 echo "Computing filename position in cpp output for #include directives..." >&4
4903 echo '#include <stdio.h>' > foo.c
4904 $cat >fieldn <<EOF
4905 $startsh
4906 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4907 $grep '^[       ]*#.*stdio\.h' | \
4908 while read cline; do
4909         pos=1
4910         set \$cline
4911         while $test \$# -gt 0; do
4912                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4913                         echo "\$pos"
4914                         exit 0
4915                 fi
4916                 shift
4917                 pos=\`expr \$pos + 1\`
4918         done
4919 done
4920 EOF
4921 chmod +x fieldn
4922 fieldn=`./fieldn`
4923 $rm -f foo.c fieldn
4924 case $fieldn in
4925 '') pos='???';;
4926 1) pos=first;;
4927 2) pos=second;;
4928 3) pos=third;;
4929 *) pos="${fieldn}th";;
4930 esac
4931 echo "Your cpp writes the filename in the $pos field of the line."
4932
4933 : locate header file
4934 $cat >findhdr <<EOF
4935 $startsh
4936 wanted=\$1
4937 name=''
4938 for usrincdir in $usrinc
4939 do
4940         if test -f \$usrincdir/\$wanted; then
4941                 echo "\$usrincdir/\$wanted"
4942                 exit 0
4943         fi
4944 done
4945 awkprg='{ print \$$fieldn }'
4946 echo "#include <\$wanted>" > foo\$\$.c
4947 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4948 $grep "^[       ]*#.*\$wanted" | \
4949 while read cline; do
4950         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4951         case "\$name" in
4952         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4953         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4954         *) exit 2;;
4955         esac;
4956 done;
4957 #
4958 # status = 0: grep returned 0 lines, case statement not executed
4959 # status = 1: headerfile found
4960 # status = 2: while loop executed, no headerfile found
4961 #
4962 status=\$?
4963 $rm -f foo\$\$.c;
4964 if test \$status -eq 1; then
4965         exit 0;
4966 fi
4967 exit 1
4968 EOF
4969 chmod +x findhdr
4970
4971 : define an alternate in-header-list? function
4972 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4973 cont=true; xxf="echo \"<\$1> found.\" >&4";
4974 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4975 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4976 esac;
4977 case $# in 4) instead=instead;; *) instead="at last";; esac;
4978 while $test "$cont"; do
4979         xxx=`./findhdr $1`
4980         var=$2; eval "was=\$$2";
4981         if $test "$xxx" && $test -r "$xxx";
4982         then eval $xxf;
4983         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4984                 cont="";
4985         else eval $xxnf;
4986         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4987         set $yyy; shift; shift; yyy=$@;
4988         case $# in 0) cont="";;
4989         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4990                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4991         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4992                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4993         esac;
4994 done;
4995 while $test "$yyy";
4996 do set $yyy; var=$2; eval "was=\$$2";
4997         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4998         set $yyy; shift; shift; yyy=$@;
4999 done'
5000
5001 : see if this is a malloc.h system
5002 set malloc.h i_malloc
5003 eval $inhdr
5004
5005 : see if stdlib is available
5006 set stdlib.h i_stdlib
5007 eval $inhdr
5008
5009 : determine which malloc to compile in
5010 echo " "
5011 case "$usemymalloc" in
5012 ''|[yY]*|true|$define)  dflt='y' ;;
5013 *)      dflt='n' ;;
5014 esac
5015 rp="Do you wish to attempt to use the malloc that comes with $package?"
5016 . ./myread
5017 usemymalloc="$ans"
5018 case "$ans" in
5019 y*|true)
5020         usemymalloc='y'
5021         mallocsrc='malloc.c'
5022         mallocobj="malloc$_o"
5023         d_mymalloc="$define"
5024         case "$libs" in
5025         *-lmalloc*)
5026                 : Remove malloc from list of libraries to use
5027                 echo "Removing unneeded -lmalloc from library list" >&4
5028                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5029                 shift
5030                 libs="$*"
5031                 echo "libs = $libs" >&4
5032                 ;;
5033         esac
5034         ;;
5035 *)
5036         usemymalloc='n'
5037         mallocsrc=''
5038         mallocobj=''
5039         d_mymalloc="$undef"
5040         ;;
5041 esac
5042
5043 : compute the return types of malloc and free
5044 echo " "
5045 $cat >malloc.c <<END
5046 #$i_malloc I_MALLOC
5047 #$i_stdlib I_STDLIB
5048 #include <stdio.h>
5049 #include <sys/types.h>
5050 #ifdef I_MALLOC
5051 #include <malloc.h>
5052 #endif
5053 #ifdef I_STDLIB
5054 #include <stdlib.h>
5055 #endif
5056 #ifdef TRY_MALLOC
5057 void *malloc();
5058 #endif
5059 #ifdef TRY_FREE
5060 void free();
5061 #endif
5062 END
5063 case "$malloctype" in
5064 '')
5065         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5066                 malloctype='void *'
5067         else
5068                 malloctype='char *'
5069         fi
5070         ;;
5071 esac
5072 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5073
5074 case "$freetype" in
5075 '')
5076         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5077                 freetype='void'
5078         else
5079                 freetype='int'
5080         fi
5081         ;;
5082 esac
5083 echo "Your system uses $freetype free(), it would seem." >&4
5084 $rm -f malloc.[co]
5085 $cat <<EOM
5086
5087 The installation process will also create a directory for
5088 vendor-supplied add-ons.  Vendors who supply perl with their system
5089 may find it convenient to place all vendor-supplied files in this
5090 directory rather than in the main distribution directory.  This will
5091 ease upgrades between binary-compatible maintenance versions of perl.
5092
5093 Of course you may also use these directories in whatever way you see
5094 fit.  For example, you might use them to access modules shared over a
5095 company-wide network.
5096
5097 The default answer should be fine for most people.
5098 This causes further questions about vendor add-ons to be skipped
5099 and no vendor-specific directories will be configured for perl.
5100
5101 EOM
5102 rp='Do you want to configure vendor-specific add-on directories?'
5103 case "$usevendorprefix" in
5104 define|true|[yY]*) dflt=y ;;
5105 *) dflt=n ;;
5106 esac
5107 . ./myread
5108 case "$ans" in
5109 [yY]*)  fn=d~+
5110         rp='Installation prefix to use for vendor-supplied add-ons?'
5111         case "$vendorprefix" in
5112         '') dflt='' ;;
5113         *)  dflt=$vendorprefix ;;
5114         esac
5115         . ./getfile
5116         oldvendorprefix=''
5117         case "$vendorprefix" in
5118         '') ;;
5119         *)      case "$ans" in
5120                 "$prefix") ;;
5121                 *) oldvendorprefix="$prefix";;
5122                 esac
5123                 ;;
5124         esac
5125         usevendorprefix="$define"
5126         vendorprefix="$ans"
5127         vendorprefixexp="$ansexp"
5128         ;;
5129 *)      usevendorprefix="$undef"
5130         vendorprefix=''
5131         vendorprefixexp=''
5132         ;;
5133 esac
5134
5135 case "$vendorprefix" in
5136 '')     d_vendorlib="$undef"
5137         vendorlib=''
5138         vendorlibexp=''
5139         ;;
5140 *)      d_vendorlib="$define"
5141         : determine where vendor-supplied modules go.
5142         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5143         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5144         case "$installstyle" in
5145         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5146         *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5147         esac
5148         fn=d~+
5149         rp='Pathname for the vendor-supplied library files?'
5150         . ./getfile
5151         vendorlib="$ans"
5152         vendorlibexp="$ansexp"
5153         : Change installation prefix, if necessary.
5154         if $test X"$prefix" != X"$installprefix"; then
5155                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5156         else
5157                 installvendorlib="$vendorlibexp"
5158         fi
5159         ;;
5160 esac
5161
5162 : Cruising for prototypes
5163 echo " "
5164 echo "Checking out function prototypes..." >&4
5165 $cat >prototype.c <<'EOCP'
5166 int main(int argc, char *argv[]) {
5167         exit(0);}
5168 EOCP
5169 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5170         echo "Your C compiler appears to support function prototypes."
5171         val="$define"
5172 else
5173         echo "Your C compiler doesn't seem to understand function prototypes."
5174         val="$undef"
5175 fi
5176 set prototype
5177 eval $setvar
5178 $rm -f prototype*
5179
5180 case "$prototype" in
5181 "$define") ;;
5182 *)      ansi2knr='ansi2knr'
5183         echo " "
5184         cat <<EOM >&4
5185
5186 $me:  FATAL ERROR:
5187 This version of $package can only be compiled by a compiler that 
5188 understands function prototypes.  Unfortunately, your C compiler 
5189         $cc $ccflags
5190 doesn't seem to understand them.  Sorry about that.
5191
5192 If GNU cc is available for your system, perhaps you could try that instead.  
5193
5194 Eventually, we hope to support building Perl with pre-ANSI compilers.
5195 If you would like to help in that effort, please contact <perlbug@perl.org>.
5196
5197 Aborting Configure now.
5198 EOM
5199         exit 2
5200         ;;
5201 esac
5202
5203 : determine where public executables go
5204 echo " "
5205 set dflt bin bin
5206 eval $prefixit
5207 fn=d~
5208 rp='Pathname where the public executables will reside?'
5209 . ./getfile
5210 if $test "X$ansexp" != "X$binexp"; then
5211         installbin=''
5212 fi
5213 bin="$ans"
5214 binexp="$ansexp"
5215 : Change installation prefix, if necessary.
5216 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5217 if $test X"$prefix" != X"$installprefix"; then
5218         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5219 else
5220         installbin="$binexp"
5221 fi
5222
5223 $cat <<EOM
5224
5225 After $package is installed, you may wish to install various
5226 add-on modules and utilities.  Typically, these add-ons will
5227 be installed under $prefix with the rest
5228 of this package.  However, you may wish to install such add-ons
5229 elsewhere under a different prefix.
5230
5231 If you do not wish to put everything under a single prefix, that's
5232 ok.  You will be prompted for the individual locations; this siteprefix
5233 is only used to suggest the defaults.
5234
5235 The default should be fine for most people.
5236
5237 EOM
5238 fn=d~+
5239 rp='Installation prefix to use for add-on modules and utilities?'
5240 : XXX Here might be another good place for an installstyle setting.
5241 case "$siteprefix" in
5242 '') dflt=$prefix ;;
5243 *)  dflt=$siteprefix ;;
5244 esac
5245 . ./getfile
5246 oldsiteprefix=''
5247 case "$siteprefix" in
5248 '') ;;
5249 *)
5250         case "$ans" in
5251         "$prefix") ;;
5252         *) oldsiteprefix="$prefix";;
5253         esac
5254         ;;
5255 esac
5256 siteprefix="$ans"
5257 siteprefixexp="$ansexp"
5258
5259 : determine where site specific libraries go.
5260 : Usual default is /usr/local/lib/perl5/site_perl/$version
5261 : The default "style" setting is made in installstyle.U
5262 : XXX No longer works with Prefixit stuff.
5263 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5264 case "$installstyle" in
5265 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5266 *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5267 esac
5268 $cat <<EOM
5269
5270 The installation process will create a directory for
5271 site-specific extensions and modules.  Most users find it convenient
5272 to place all site-specific files in this directory rather than in the
5273 main distribution directory.
5274
5275 EOM
5276 fn=d~+
5277 rp='Pathname for the site-specific library files?'
5278 . ./getfile
5279 sitelib="$ans"
5280 sitelibexp="$ansexp"
5281 : Change installation prefix, if necessary.
5282 if $test X"$prefix" != X"$installprefix"; then
5283         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5284 else
5285         installsitelib="$sitelibexp"
5286 fi
5287
5288 : Determine list of previous versions to include in @INC
5289 $cat > getverlist <<EOPL
5290 #!$perl -w
5291 use File::Basename;
5292 \$api_versionstring = "$api_versionstring";
5293 \$version = "$version";
5294 \$sitelib = "$sitelib";
5295 \$archname = "$archname";
5296 EOPL
5297         $cat >> getverlist <<'EOPL'
5298 # Can't have leading @ because metaconfig interprets it as a command!
5299 ;@inc_version_list=();
5300 $stem=dirname($sitelib);
5301 # Redo to do opendir/readdir? 
5302 if (-d $stem) {
5303     chdir($stem);
5304     ;@candidates = glob("5.*");
5305 }
5306 else {
5307     ;@candidates = ();
5308 }
5309
5310 # XXX ToDo:  These comparisons must be reworked when two-digit
5311 # subversions come along, so that 5.7.10 compares as greater than
5312 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5313 # widespread that we can use the built-in version vectors rather
5314 # than reinventing them here.  For 5.6.0, however, we must
5315 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5316 foreach $d (@candidates) {
5317     if ($d lt $version) {
5318         if ($d ge $api_versionstring) {
5319             unshift(@inc_version_list, "$d/$archname", $d);
5320         }
5321         elsif ($d ge "5.005") {
5322             unshift(@inc_version_list, $d);
5323         }
5324     }
5325     else {
5326         # Skip newer version.  I.e. don't look in
5327         # 5.7.0 if we're installing 5.6.1.
5328     }
5329 }
5330
5331 if (@inc_version_list) {
5332     print join(' ', @inc_version_list);
5333 }
5334 else {
5335     # Blank space to preserve value for next Configure run.
5336     print " ";
5337 }
5338 EOPL
5339 chmod +x getverlist
5340 case "$inc_version_list" in
5341 '')     if test -x $perl; then
5342                 dflt=`$perl getverlist`
5343         else
5344                 dflt='none'
5345         fi
5346         ;;
5347 $undef) dflt='none' ;;
5348 *)  dflt="$inc_version_list" ;;
5349 esac
5350 $cat <<'EOM'
5351
5352 In order to ease the process of upgrading, this version of perl 
5353 can be configured to use modules built and installed with earlier 
5354 versions of perl that were installed under $prefix.  Specify here
5355 the list of earlier versions that this version of perl should check.
5356 If Configure detected no earlier versions of perl installed under
5357 $prefix, then the list will be empty.  Answer 'none' to tell perl
5358 to not search earlier versions.
5359
5360 The default should almost always be sensible, so if you're not sure,
5361 just accept the default.
5362 EOM
5363
5364 rp='List of earlier versions to include in @INC?'
5365 . ./myread
5366 case "$ans" in
5367 [Nn]one) inc_version_list=' ' ;;
5368 *) inc_version_list="$ans" ;;
5369 esac
5370 case "$inc_version_list" in
5371 ''|' ') 
5372         inc_version_list_init='""';;
5373 *)      inc_version_list_init=`echo $inc_version_list |
5374                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/"/'`
5375         ;;
5376 esac
5377 $rm -f getverlist
5378
5379 : determine whether to install perl also as /usr/bin/perl
5380
5381 echo " "
5382 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5383         $cat <<EOM
5384 Many scripts expect to perl to be installed as /usr/bin/perl.
5385 I can install the perl you are about to compile also as /usr/bin/perl
5386 (in addition to $installbin/perl).
5387 EOM
5388         case "$installusrbinperl" in
5389         "$undef"|[nN]*) dflt='n';;
5390         *)              dflt='y';;
5391         esac
5392         rp="Do you want to install perl as /usr/bin/perl?"
5393         . ./myread
5394         case "$ans" in
5395         [yY]*)  val="$define";;
5396         *)      val="$undef" ;;
5397         esac
5398 else
5399         val="$undef"
5400 fi
5401 set installusrbinperl
5402 eval $setvar
5403
5404 echo " "
5405 echo "Checking for GNU C Library..." >&4
5406 cat >gnulibc.c <<EOM
5407 #include <stdio.h>
5408 int main()
5409 {
5410 #ifdef __GLIBC__
5411     exit(0);
5412 #else
5413     exit(1);
5414 #endif
5415 }
5416 EOM
5417 set gnulibc
5418 if eval $compile_ok && ./gnulibc; then
5419         val="$define"
5420         echo "You are using the GNU C Library"
5421 else
5422         val="$undef"
5423         echo "You are not using the GNU C Library"
5424 fi
5425 $rm -f gnulibc*
5426 set d_gnulibc
5427 eval $setvar
5428
5429 : see if nm is to be used to determine whether a symbol is defined or not
5430 case "$usenm" in
5431 '')
5432         dflt=''
5433         case "$d_gnulibc" in
5434         "$define")
5435                 echo " "
5436                 echo "nm probably won't work on the GNU C Library." >&4
5437                 dflt=n
5438                 ;;
5439         esac
5440         case "$dflt" in
5441         '') 
5442                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5443                         echo " "
5444                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5445                         echo "'nm' won't be sufficient on this sytem." >&4
5446                         dflt=n
5447                 fi
5448                 ;;
5449         esac
5450         case "$dflt" in
5451         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5452                 if $test $dflt -gt 20; then
5453                         dflt=y
5454                 else
5455                         dflt=n
5456                 fi
5457                 ;;
5458         esac
5459         ;;
5460 *)
5461         case "$usenm" in
5462         true|$define) dflt=y;;
5463         *) dflt=n;;
5464         esac
5465         ;;
5466 esac
5467 $cat <<EOM
5468
5469 I can use $nm to extract the symbols from your C libraries. This
5470 is a time consuming task which may generate huge output on the disk (up
5471 to 3 megabytes) but that should make the symbols extraction faster. The
5472 alternative is to skip the 'nm' extraction part and to compile a small
5473 test program instead to determine whether each symbol is present. If
5474 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5475 this may be the best solution.
5476
5477 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5478
5479 EOM
5480 rp="Shall I use $nm to extract C symbols from the libraries?"
5481 . ./myread
5482 case "$ans" in
5483 [Nn]*) usenm=false;;
5484 *) usenm=true;;
5485 esac
5486
5487 runnm=$usenm
5488 case "$reuseval" in
5489 true) runnm=false;;
5490 esac
5491
5492 : nm options which may be necessary
5493 case "$nm_opt" in
5494 '') if $test -f /mach_boot; then
5495                 nm_opt=''       # Mach
5496         elif $test -d /usr/ccs/lib; then
5497                 nm_opt='-p'     # Solaris (and SunOS?)
5498         elif $test -f /dgux; then
5499                 nm_opt='-p'     # DG-UX
5500         elif $test -f /lib64/rld; then
5501                 nm_opt='-p'     # 64-bit Irix
5502         else
5503                 nm_opt=''
5504         fi;;
5505 esac
5506
5507 : nm options which may be necessary for shared libraries but illegal
5508 : for archive libraries.  Thank you, Linux.
5509 case "$nm_so_opt" in
5510 '')     case "$myuname" in
5511         *linux*)
5512                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5513                         nm_so_opt='--dynamic'
5514                 fi
5515                 ;;
5516         esac
5517         ;;
5518 esac
5519
5520 case "$runnm" in
5521 true)
5522 : get list of predefined functions in a handy place
5523 echo " "
5524 case "$libc" in
5525 '') libc=unknown
5526         case "$libs" in
5527         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5528         esac
5529         ;;
5530 esac
5531 libnames='';
5532 case "$libs" in
5533 '') ;;
5534 *)  for thislib in $libs; do
5535         case "$thislib" in
5536         -lc|-lc_s)
5537                 : Handle C library specially below.
5538                 ;;
5539         -l*)
5540                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5541                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5542                         :
5543                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5544                         :
5545                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5546                         :
5547                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5548                         :
5549                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5550                         :
5551                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5552                         :
5553                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5554                         :
5555                 else
5556                         try=''
5557                 fi
5558                 libnames="$libnames $try"
5559                 ;;
5560         *) libnames="$libnames $thislib" ;;
5561         esac
5562         done
5563         ;;
5564 esac
5565 xxx=normal
5566 case "$libc" in
5567 unknown)
5568         set /lib/libc.$so
5569         for xxx in $libpth; do
5570                 $test -r $1 || set $xxx/libc.$so
5571                 : The messy sed command sorts on library version numbers.
5572                 $test -r $1 || \
5573                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5574                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5575                                 h
5576                                 s/[0-9][0-9]*/0000&/g
5577                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5578                                 G
5579                                 s/\n/ /' | \
5580                          sort | $sed -e 's/^.* //'`
5581                 eval set \$$#
5582         done
5583         $test -r $1 || set /usr/ccs/lib/libc.$so
5584         $test -r $1 || set /lib/libsys_s$_a
5585         ;;
5586 *)
5587         set blurfl
5588         ;;
5589 esac
5590 if $test -r "$1"; then
5591         echo "Your (shared) C library seems to be in $1."
5592         libc="$1"
5593 elif $test -r /lib/libc && $test -r /lib/clib; then
5594         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5595         xxx=apollo
5596         libc='/lib/clib /lib/libc'
5597         if $test -r /lib/syslib; then
5598                 echo "(Your math library is in /lib/syslib.)"
5599                 libc="$libc /lib/syslib"
5600         fi
5601 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5602         echo "Your C library seems to be in $libc, as you said before."
5603 elif $test -r $incpath/usr/lib/libc$_a; then
5604         libc=$incpath/usr/lib/libc$_a;
5605         echo "Your C library seems to be in $libc.  That's fine."
5606 elif $test -r /lib/libc$_a; then
5607         libc=/lib/libc$_a;
5608         echo "Your C library seems to be in $libc.  You're normal."
5609 else
5610         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5611                 :
5612         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5613                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5614         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5615                 :
5616         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5617                 :
5618         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5619                 :
5620         else
5621                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5622         fi
5623         if $test -r "$tans"; then
5624                 echo "Your C library seems to be in $tans, of all places."
5625                 libc=$tans
5626         else
5627                 libc='blurfl'
5628         fi
5629 fi
5630 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5631         dflt="$libc"
5632         cat <<EOM
5633
5634 If the guess above is wrong (which it might be if you're using a strange
5635 compiler, or your machine supports multiple models), you can override it here.
5636
5637 EOM
5638 else
5639         dflt=''
5640         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5641         cat >&4 <<EOM
5642 I can't seem to find your C library.  I've looked in the following places:
5643
5644 EOM
5645         $sed 's/^/      /' libpath
5646         cat <<EOM
5647
5648 None of these seems to contain your C library. I need to get its name...
5649
5650 EOM
5651 fi
5652 fn=f
5653 rp='Where is your C library?'
5654 . ./getfile
5655 libc="$ans"
5656
5657 echo " "
5658 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5659 set X `cat libnames`
5660 shift
5661 xxx=files
5662 case $# in 1) xxx=file; esac
5663 echo "Extracting names from the following $xxx for later perusal:" >&4
5664 echo " "
5665 $sed 's/^/      /' libnames >&4
5666 echo " "
5667 $echo $n "This may take a while...$c" >&4
5668
5669 for file in $*; do
5670         case $file in
5671         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5672         *) $nm $nm_opt $file 2>/dev/null;;
5673         esac
5674 done >libc.tmp
5675
5676 $echo $n ".$c"
5677 $grep fprintf libc.tmp > libc.ptf
5678 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5679 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5680 xxx='[ADTSIW]'
5681 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5682         eval $xscan;\
5683         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5684                 eval $xrun
5685 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5686         eval $xscan;\
5687         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5688                 eval $xrun
5689 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5690         eval $xscan;\
5691         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5692                 eval $xrun
5693 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5694         eval $xscan;\
5695         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5696                 eval $xrun
5697 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5698         eval $xscan;\
5699         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5700                 eval $xrun
5701 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5702         eval $xscan;\
5703         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5704                 eval $xrun
5705 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5706                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5707         eval $xscan;\
5708         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5709                 eval $xrun
5710 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5711         eval $xscan;\
5712         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5713                 eval $xrun
5714 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5715         eval $xscan;\
5716         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5717                 eval $xrun
5718 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5719         eval $xscan;\
5720         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5721                 eval $xrun
5722 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5723         eval $xscan;\
5724         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5725                 eval $xrun
5726 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5727         eval $xscan;\
5728         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5729                 eval $xrun
5730 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5731         eval $xscan;\
5732         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5733                 eval $xrun
5734 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5735         eval $xscan;\
5736         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5737                 eval $xrun
5738 else
5739         $nm -p $* 2>/dev/null >libc.tmp
5740         $grep fprintf libc.tmp > libc.ptf
5741         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5742                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5743         then
5744                 nm_opt='-p'
5745                 eval $xrun
5746         else
5747                 echo " "
5748                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5749                 com=''
5750                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5751                         for thisname in $libnames $libc; do
5752                                 $ar t $thisname >>libc.tmp
5753                         done
5754                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5755                         echo "Ok." >&4
5756                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5757                         # Repeat libc to extract forwarders to DLL entries too
5758                         for thisname in $libnames $libc; do
5759                                 $ar tv $thisname >>libc.tmp
5760                                 # Revision 50 of EMX has bug in $ar.
5761                                 # it will not extract forwarders to DLL entries
5762                                 # Use emximp which will extract exactly them.
5763                                 emximp -o tmp.imp $thisname \
5764                                     2>/dev/null && \
5765                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5766                                     < tmp.imp >>libc.tmp
5767                                 $rm tmp.imp
5768                         done
5769                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5770                         echo "Ok." >&4
5771                 else
5772                         echo "$ar didn't seem to work right." >&4
5773                         echo "Maybe this is a Cray...trying bld instead..." >&4
5774                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5775                         then
5776                                 for thisname in $libnames; do
5777                                         bld t $libnames | \
5778                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5779                                         $ar t $thisname >>libc.tmp
5780                                 done
5781                                 echo "Ok." >&4
5782                         else
5783                                 echo "That didn't work either.  Giving up." >&4
5784                                 exit 1
5785                         fi
5786                 fi
5787         fi
5788 fi
5789 nm_extract="$com"
5790 if $test -f /lib/syscalls.exp; then
5791         echo " "
5792         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5793         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5794 fi
5795 ;;
5796 esac
5797 $rm -f libnames libpath
5798
5799 : see if dld is available
5800 set dld.h i_dld
5801 eval $inhdr
5802
5803 : is a C symbol defined?
5804 csym='tlook=$1;
5805 case "$3" in
5806 -v) tf=libc.tmp; tc=""; tdc="";;
5807 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5808 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5809 esac;
5810 tx=yes;
5811 case "$reuseval-$4" in
5812 true-) ;;
5813 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5814 esac;
5815 case "$tx" in
5816 yes)
5817         case "$runnm" in
5818         true)
5819                 if $contains $tlook $tf >/dev/null 2>&1;
5820                 then tval=true;
5821                 else tval=false;
5822                 fi;;
5823         *)
5824                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5825                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5826                 then tval=true;
5827                 else tval=false;
5828                 fi;
5829                 $rm -f t t.c;;
5830         esac;;
5831 *)
5832         case "$tval" in
5833         $define) tval=true;;
5834         *) tval=false;;
5835         esac;;
5836 esac;
5837 eval "$2=$tval"'
5838
5839 : define an is-in-libc? function
5840 inlibc='echo " "; td=$define; tu=$undef;
5841 sym=$1; var=$2; eval "was=\$$2";
5842 tx=yes;
5843 case "$reuseval$was" in
5844 true) ;;
5845 true*) tx=no;;
5846 esac;
5847 case "$tx" in
5848 yes)
5849         set $sym tres -f;
5850         eval $csym;
5851         case "$tres" in
5852         true)
5853                 echo "$sym() found." >&4;
5854                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5855         *)
5856                 echo "$sym() NOT found." >&4;
5857                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5858         esac;;
5859 *)
5860         case "$was" in
5861         $define) echo "$sym() found." >&4;;
5862         *) echo "$sym() NOT found." >&4;;
5863         esac;;
5864 esac'
5865
5866 : see if dlopen exists
5867 xxx_runnm="$runnm"
5868 runnm=false
5869 set dlopen d_dlopen
5870 eval $inlibc
5871 runnm="$xxx_runnm"
5872
5873 : determine which dynamic loading, if any, to compile in
5874 echo " "
5875 dldir="ext/DynaLoader"
5876 case "$usedl" in
5877 $define|y|true)
5878         dflt='y'
5879         usedl="$define"
5880         ;;
5881 $undef|n|false)
5882         dflt='n'
5883         usedl="$undef"
5884         ;;
5885 *) 
5886         dflt='n'
5887         case "$d_dlopen" in
5888             $define) dflt='y' ;;
5889         esac
5890         case "$i_dld" in
5891             $define) dflt='y' ;;
5892         esac
5893         : Does a dl_xxx.xs file exist for this operating system
5894         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5895         ;;
5896 esac
5897 rp="Do you wish to use dynamic loading?"
5898 . ./myread
5899 usedl="$ans"
5900 case "$ans" in
5901 y*) usedl="$define"
5902         case "$dlsrc" in
5903         '')
5904                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5905                         dflt="$dldir/dl_${osname}.xs"
5906                 elif $test "$d_dlopen" = "$define" ; then
5907                         dflt="$dldir/dl_dlopen.xs"
5908                 elif $test "$i_dld" = "$define" ; then
5909                         dflt="$dldir/dl_dld.xs"
5910                 else
5911                         dflt=''
5912                 fi
5913                 ;;
5914         *)      dflt="$dldir/$dlsrc"
5915                 ;;
5916         esac
5917     echo "The following dynamic loading files are available:"
5918         : Can not go over to $dldir because getfile has path hard-coded in.
5919         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5920         rp="Source file to use for dynamic loading"
5921         fn="fne"
5922         gfpth="$src"
5923         . ./getfile
5924         usedl="$define"
5925         : emulate basename
5926         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5927
5928         $cat << EOM
5929
5930 Some systems may require passing special flags to $cc -c to
5931 compile modules that will be used to create a shared library.
5932 To use no flags, say "none".
5933
5934 EOM
5935     case "$cccdlflags" in
5936     '') case "$gccversion" in
5937                 '') case "$osname" in
5938                         hpux)   dflt='+z' ;;
5939                         next)   dflt='none' ;;
5940                         irix*)  dflt='-KPIC' ;;
5941                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5942                         sunos)  dflt='-pic' ;;
5943                         *)      dflt='none' ;;
5944                     esac
5945                         ;;
5946                 *)  case "$osname" in
5947                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5948                         *)      dflt='-fpic' ;;
5949                     esac ;;
5950             esac ;;
5951         ' ') dflt='none' ;;
5952     *)  dflt="$cccdlflags" ;;
5953     esac
5954     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5955     . ./myread
5956     case "$ans" in
5957     none) cccdlflags=' ' ;;
5958     *) cccdlflags="$ans" ;;
5959     esac
5960
5961     cat << EOM
5962
5963 Some systems use ld to create libraries that can be dynamically loaded,
5964 while other systems (such as those using ELF) use $cc.
5965
5966 EOM
5967         case "$ld" in
5968         '')     $cat >try.c <<'EOM'
5969 /* Test for whether ELF binaries are produced */
5970 #include <fcntl.h>
5971 #include <stdlib.h>
5972 int main() {
5973         char b[4];
5974         int i = open("a.out",O_RDONLY);
5975         if(i == -1) 
5976                 exit(1); /* fail */
5977         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5978                 exit(0); /* succeed (yes, it's ELF) */
5979         else
5980                 exit(1); /* fail */
5981 }
5982 EOM
5983                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5984                         cat <<EOM
5985 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5986 EOM
5987                         dflt="$cc"
5988                 else
5989                         echo "I'll use ld to build dynamic libraries."
5990                         dflt='ld'
5991                 fi
5992                 rm -f try.c a.out
5993                 ;;
5994         *)      dflt="$ld"
5995                 ;;
5996         esac
5997
5998     rp="What command should be used to create dynamic libraries?"
5999     . ./myread
6000         ld="$ans"
6001
6002     cat << EOM
6003
6004 Some systems may require passing special flags to $ld to create a
6005 library that can be dynamically loaded.  If your ld flags include
6006 -L/other/path options to locate libraries outside your loader's normal
6007 search path, you may need to specify those -L options here as well.  To
6008 use no flags, say "none".
6009
6010 EOM
6011     case "$lddlflags" in
6012     '') case "$osname" in
6013                         beos) dflt='-nostart' ;;
6014                         hpux)  dflt='-b' ;;
6015                         linux|irix*)    dflt='-shared' ;;
6016                         next)  dflt='none' ;;
6017                         solaris) dflt='-G' ;;
6018                         sunos) dflt='-assert nodefinitions' ;;
6019                         svr4*|esix*) dflt="-G $ldflags" ;;
6020                 *)     dflt='none' ;;
6021                         esac
6022                         ;;
6023     *) dflt="$lddlflags" ;;
6024     esac
6025
6026         : Try to guess additional flags to pick up local libraries.
6027         : Be careful not to append to a plain 'none'
6028         case "$dflt" in
6029         none) dflt='' ;;
6030         esac
6031         for thisflag in $ldflags; do
6032                 case "$thisflag" in
6033                 -L*)
6034                         case " $dflt " in
6035                         *" $thisflag "*) ;;
6036                         *) dflt="$dflt $thisflag" ;;
6037                         esac
6038                         ;;
6039                 esac
6040         done
6041
6042         case "$dflt" in
6043         ''|' ') dflt='none' ;;
6044         esac
6045
6046     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6047     . ./myread
6048     case "$ans" in
6049     none) lddlflags=' ' ;;
6050     *) lddlflags="$ans" ;;
6051     esac
6052
6053         cat <<EOM
6054
6055 Some systems may require passing special flags to $cc to indicate that
6056 the resulting executable will use dynamic linking.  To use no flags,
6057 say "none".
6058
6059 EOM
6060     case "$ccdlflags" in
6061     '') case "$osname" in
6062                 hpux)   dflt='-Wl,-E' ;;
6063                 linux)  dflt='-rdynamic' ;;
6064                 next)   dflt='none' ;;
6065                 sunos)  dflt='none' ;;
6066                 *)      dflt='none' ;;
6067             esac ;;
6068     ' ')  dflt='none' ;;
6069     *)  dflt="$ccdlflags" ;;
6070     esac
6071     rp="Any special flags to pass to $cc to use dynamic linking?"
6072     . ./myread
6073     case "$ans" in
6074     none) ccdlflags=' ' ;;
6075     *) ccdlflags="$ans" ;;
6076     esac
6077     ;;
6078 *)  usedl="$undef"
6079         ld='ld'
6080     dlsrc='dl_none.xs'
6081     lddlflags=''
6082     ccdlflags=''
6083     ;;
6084 esac
6085
6086 also=''
6087 case "$usedl" in
6088 $undef)
6089         # No dynamic loading being used, so don't bother even to prompt.
6090         useshrplib='false'
6091         ;;
6092 *)      case "$useshrplib" in
6093         '')     case "$osname" in
6094                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6095                         dflt=y
6096                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6097                         ;;
6098                 next*)
6099                         case "$osvers" in
6100                         4*)     dflt=y
6101                                 also='Building a shared libperl is needed for MAB support.'
6102                                 ;;
6103                         *)      dflt=n
6104                                 ;;
6105                         esac
6106                         ;;
6107                 *)      dflt=n
6108                         ;;
6109                 esac
6110                 ;;
6111         $define|true|[Yy]*)
6112                 dflt=y
6113                 ;;
6114         *)      dflt=n
6115                 ;;
6116         esac
6117         $cat << EOM
6118
6119 The perl executable is normally obtained by linking perlmain.c with
6120 libperl${_a}, any static extensions (usually just DynaLoader), and
6121 any other libraries needed on this system (such as -lm, etc.).  Since
6122 your system supports dynamic loading, it is probably possible to build
6123 a shared libperl.$so.  If you will have more than one executable linked
6124 to libperl.$so, this will significantly reduce the size of each
6125 executable, but it may have a noticeable affect on performance.  The
6126 default is probably sensible for your system.
6127 $also
6128
6129 EOM
6130         rp="Build a shared libperl.$so (y/n)"
6131         . ./myread
6132         case "$ans" in
6133         true|$define|[Yy]*)
6134                 useshrplib='true'  ;;
6135         *)      useshrplib='false' ;;
6136         esac
6137         ;;
6138 esac
6139
6140 case "$useshrplib" in
6141 true)
6142         case "$libperl" in
6143         '')
6144                 # Figure out a good name for libperl.so.  Since it gets stored in
6145                 # a version-specific architecture-dependent library, the version
6146                 # number isn't really that important, except for making cc/ld happy.
6147                 #
6148                 # A name such as libperl.so.3.1
6149                 majmin="libperl.$so.$patchlevel.$subversion"
6150                 # A name such as libperl.so.301
6151                 majonly=`echo $patchlevel $subversion |
6152                         $awk '{printf "%d%02d", $1, $2}'`
6153                 majonly=libperl.$so.$majonly
6154                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6155                 # rely on figuring it out from the naming of libc.
6156                 case "${osname}${osvers}" in
6157                 next4*)
6158                         dflt=libperl.5.$so
6159                         # XXX How handle the --version stuff for MAB?
6160                         ;;
6161                 linux*)  # ld won't link with a bare -lperl otherwise.
6162                         dflt=libperl.$so
6163                         ;;
6164                 cygwin*) # include version
6165                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6166                         ;;
6167                 *)      # Try to guess based on whether libc has major.minor.
6168                         case "$libc" in
6169                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6170                         *libc.$so.[0-9]*) dflt=$majonly ;;
6171                         *)      dflt=libperl.$so ;;
6172                         esac
6173                         ;;
6174                 esac
6175                 ;;
6176         *)      dflt=$libperl
6177                 ;;
6178         esac
6179         cat << EOM
6180
6181 I need to select a good name for the shared libperl.  If your system uses
6182 library names with major and minor numbers, then you might want something
6183 like $majmin.  Alternatively, if your system uses a single version
6184 number for shared libraries, then you might want to use $majonly.
6185 Or, your system might be quite happy with a simple libperl.$so.
6186
6187 Since the shared libperl will get installed into a version-specific
6188 architecture-dependent directory, the version number of the shared perl
6189 library probably isn't important, so the default should be o.k.
6190
6191 EOM
6192         rp='What name do you want to give to the shared libperl?'
6193         . ./myread
6194         libperl=$ans
6195         echo "Ok, I'll use $libperl"
6196         ;;
6197 *)
6198         libperl="libperl${_a}"
6199         ;;
6200 esac
6201
6202 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6203 case "$shrpdir" in
6204 '') ;;
6205 *)      $cat >&4 <<EOM
6206 WARNING:  Use of the shrpdir variable for the installation location of
6207 the shared $libperl is not supported.  It was never documented and
6208 will not work in this version.  Let me (perlbug@perl.com)
6209 know of any problems this may cause.
6210
6211 EOM
6212         case "$shrpdir" in
6213         "$archlibexp/CORE")
6214                 $cat >&4 <<EOM
6215 But your current setting of $shrpdir is
6216 the default anyway, so it's harmless.
6217 EOM
6218                 ;;
6219         *)
6220                 $cat >&4 <<EOM
6221 Further, your current attempted setting of $shrpdir
6222 conflicts with the value of $archlibexp/CORE
6223 that installperl will use.
6224 EOM
6225                 ;;
6226         esac
6227         ;;
6228 esac
6229
6230 # How will the perl executable find the installed shared $libperl?
6231 # Add $xxx to ccdlflags.
6232 # If we can't figure out a command-line option, use $shrpenv to
6233 # set env LD_RUN_PATH.  The main perl makefile uses this.
6234 shrpdir=$archlibexp/CORE
6235 xxx=''
6236 tmp_shrpenv=''
6237 if "$useshrplib"; then
6238     case "$osname" in 
6239         aix)
6240                 # We'll set it in Makefile.SH...
6241                 ;;
6242         solaris|netbsd)
6243                 xxx="-R $shrpdir"
6244                 ;;
6245         freebsd)
6246                 xxx="-Wl,-R$shrpdir"
6247                 ;;
6248         linux|irix*|dec_osf)
6249                 xxx="-Wl,-rpath,$shrpdir"
6250                 ;;
6251         next)
6252                 # next doesn't like the default...
6253                 ;;
6254         beos)
6255                 # beos doesn't like the default, either.
6256                 ;;
6257         hpux*)
6258                 # hpux doesn't like the default, either.
6259                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6260                 ;;
6261         *)
6262                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6263                 ;;
6264         esac
6265         case "$xxx" in
6266         '') ;;
6267         *)      
6268                 # Only add $xxx if it isn't already in ccdlflags.
6269                 case " $ccdlflags " in
6270                 *" $xxx "*)     ;;
6271                 *)      ccdlflags="$ccdlflags $xxx"
6272                         cat <<EOM >&4
6273
6274 Adding $xxx to the flags
6275 passed to $ld so that the perl executable will find the 
6276 installed shared $libperl.
6277
6278 EOM
6279                         ;;
6280                 esac
6281                 ;;
6282         esac
6283 fi
6284 # Fix ccdlflags in AIX for building external extensions.
6285 # (For building Perl itself bare -bE:perl.exp is needed,
6286 #  Makefile.SH takes care of this.)
6287 case "$osname" in
6288 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6289 esac
6290 # Respect a hint or command-line value.
6291 case "$shrpenv" in
6292 '') shrpenv="$tmp_shrpenv" ;;
6293 esac
6294 case "$ldlibpthname" in
6295 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6296 none)   ldlibpthname='' ;;
6297 esac
6298
6299 : determine where manual pages go
6300 set man1dir man1dir none
6301 eval $prefixit
6302 $cat <<EOM
6303
6304 $spackage has manual pages available in source form.
6305 EOM
6306 case "$nroff" in
6307 nroff)
6308         echo "However, you don't have nroff, so they're probably useless to you."
6309         case "$man1dir" in
6310         '') man1dir="none";;
6311         esac;;
6312 esac
6313 echo "If you don't want the manual sources installed, answer 'none'."
6314 case "$man1dir" in
6315 ' ') dflt=none
6316         ;;
6317 '')
6318         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6319         lookpath="$lookpath $prefixexp/man/p_man/man1"
6320         lookpath="$lookpath $prefixexp/man/u_man/man1"
6321         lookpath="$lookpath $prefixexp/man/man.1"
6322         case "$sysman" in
6323         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6324         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6325         esac
6326         set dflt
6327         eval $prefixup
6328         ;;
6329 *)  dflt="$man1dir"
6330         ;;
6331 esac
6332 echo " "
6333 fn=dn+~
6334 rp="Where do the main $spackage manual pages (source) go?"
6335 . ./getfile
6336 if $test "X$man1direxp" != "X$ansexp"; then
6337         installman1dir=''
6338 fi
6339 man1dir="$ans"
6340 man1direxp="$ansexp"
6341 case "$man1dir" in
6342 '')     man1dir=' '
6343         installman1dir='';;
6344 esac
6345
6346 : Change installation prefix, if necessary.
6347 if $test X"$prefix" != X"$installprefix"; then
6348         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6349 else
6350         installman1dir="$man1direxp"
6351 fi
6352
6353 : What suffix to use on installed man pages
6354
6355 case "$man1dir" in
6356 ' ')
6357         man1ext='0'
6358         ;;
6359 *)
6360         rp="What suffix should be used for the main $spackage man pages?"
6361         case "$man1ext" in
6362         '')     case "$man1dir" in
6363                 *1)  dflt=1 ;;
6364                 *1p) dflt=1p ;;
6365                 *1pm) dflt=1pm ;;
6366                 *l) dflt=l;;
6367                 *n) dflt=n;;
6368                 *o) dflt=o;;
6369                 *p) dflt=p;;
6370                 *C) dflt=C;;
6371                 *L) dflt=L;;
6372                 *L1) dflt=L1;;
6373                 *) dflt=1;;
6374                 esac
6375                 ;;
6376         *)      dflt="$man1ext";;
6377         esac
6378         . ./myread
6379         man1ext="$ans"
6380         ;;
6381 esac
6382
6383 : see if we can have long filenames
6384 echo " "
6385 rmlist="$rmlist /tmp/cf$$"
6386 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6387 first=123456789abcdef
6388 second=/tmp/cf$$/$first
6389 $rm -f $first $second
6390 if (echo hi >$first) 2>/dev/null; then
6391         if $test -f 123456789abcde; then
6392                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6393                 val="$undef"
6394         else
6395                 if (echo hi >$second) 2>/dev/null; then
6396                         if $test -f /tmp/cf$$/123456789abcde; then
6397                                 $cat <<'EOM'
6398 That's peculiar... You can have filenames longer than 14 characters, but only
6399 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6400 I shall consider your system cannot support long filenames at all.
6401 EOM
6402                                 val="$undef"
6403                         else
6404                                 echo 'You can have filenames longer than 14 characters.' >&4
6405                                 val="$define"
6406                         fi
6407                 else
6408                         $cat <<'EOM'
6409 How confusing! Some of your filesystems are sane enough to allow filenames
6410 longer than 14 characters but some others like /tmp can't even think about them.
6411 So, for now on, I shall assume your kernel does not allow them at all.
6412 EOM
6413                         val="$undef"
6414                 fi
6415         fi
6416 else
6417         $cat <<'EOM'
6418 You can't have filenames longer than 14 chars.  You can't even think about them!
6419 EOM
6420         val="$undef"
6421 fi 
6422 set d_flexfnam
6423 eval $setvar
6424 $rm -rf /tmp/cf$$ 123456789abcde*
6425
6426 : determine where library module manual pages go
6427 set man3dir man3dir none
6428 eval $prefixit
6429 $cat <<EOM
6430
6431 $spackage has manual pages for many of the library modules.
6432 EOM
6433
6434 case "$nroff" in
6435 nroff)
6436         $cat <<'EOM'
6437 However, you don't have nroff, so they're probably useless to you.
6438 EOM
6439         case "$man3dir" in
6440         '') man3dir="none";;
6441         esac;;
6442 esac
6443
6444 case "$d_flexfnam" in
6445 undef)
6446         $cat <<'EOM'
6447 However, your system can't handle the long file names like File::Basename.3. 
6448 EOM
6449         case "$man3dir" in
6450         '') man3dir="none";;
6451         esac;;
6452 esac
6453
6454 echo "If you don't want the manual sources installed, answer 'none'."
6455 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6456 case "$man3dir" in
6457 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6458         if $test -d "$privlib/man/man3"; then
6459                 cat <<EOM >&4
6460
6461 WARNING:  Previous versions of perl installed man3 pages into
6462 $privlib/man/man3.  This version will suggest a 
6463 new default of $dflt.  
6464 EOM
6465                 tdflt=$dflt
6466                 dflt='n'
6467                 rp='Do you wish to preserve the old behavior?(y/n)'
6468                 . ./myread
6469                 case "$ans" in
6470                 y*) dflt="$privlib/man/man3" ;;
6471                 *)  dflt=$tdflt ;;
6472                 esac
6473     fi
6474         ;;
6475 ' ') dflt=none;;
6476 *)      dflt="$man3dir" ;;
6477 esac
6478 echo " "
6479 fn=dn+~
6480 rp="Where do the $package library man pages (source) go?"
6481 . ./getfile
6482 man3dir="$ans"
6483 man3direxp="$ansexp"
6484 case "$man1dir" in
6485 '')     man3dir=' '
6486         installman3dir='';;
6487 esac
6488
6489 : Change installation prefix, if necessary.
6490 if $test X"$prefix" != X"$installprefix"; then
6491         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6492 else
6493         installman3dir="$man3direxp"
6494 fi
6495
6496 : What suffix to use on installed man pages
6497 case "$man3dir" in
6498 ' ')
6499         man3ext='0'
6500         ;;
6501 *)
6502         rp="What suffix should be used for the $package library man pages?"
6503         case "$man3ext" in
6504         '')     case "$man3dir" in
6505                 *3)  dflt=3 ;;
6506                 *3p) dflt=3p ;;
6507                 *3pm) dflt=3pm ;;
6508                 *l) dflt=l;;
6509                 *n) dflt=n;;
6510                 *o) dflt=o;;
6511                 *p) dflt=p;;
6512                 *C) dflt=C;;
6513                 *L) dflt=L;;
6514                 *L3) dflt=L3;;
6515                 *) dflt=3;;
6516                 esac
6517                 ;;
6518         *)      dflt="$man3ext";;
6519         esac
6520         . ./myread
6521         man3ext="$ans"
6522         ;;
6523 esac
6524
6525 : see if we have to deal with yellow pages, now NIS.
6526 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6527         if $test -f /usr/etc/nibindd; then
6528                 echo " "
6529                 echo "I'm fairly confident you're on a NeXT."
6530                 echo " "
6531                 rp='Do you get the hosts file via NetInfo?'
6532                 dflt=y
6533                 case "$hostcat" in
6534                 nidump*) ;;
6535                 '') ;;
6536                 *) dflt=n;;
6537                 esac
6538                 . ./myread
6539                 case "$ans" in
6540                 y*) hostcat='nidump hosts .';;
6541                 *)      case "$hostcat" in
6542                         nidump*) hostcat='';;
6543                         esac
6544                         ;;
6545                 esac
6546         fi
6547         case "$hostcat" in
6548         nidump*) ;;
6549         *)
6550                 case "$hostcat" in
6551                 *ypcat*) dflt=y;;
6552                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6553                                 dflt=y
6554                         else
6555                                 dflt=n
6556                         fi;;
6557                 *) dflt=n;;
6558                 esac
6559                 echo " "
6560                 rp='Are you getting the hosts file via yellow pages?'
6561                 . ./myread
6562                 case "$ans" in
6563                 y*) hostcat='ypcat hosts';;
6564                 *) hostcat='cat /etc/hosts';;
6565                 esac
6566                 ;;
6567         esac
6568 fi
6569 case "$hostcat" in
6570 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6571 esac
6572 case "$groupcat" in
6573 '') test -f /etc/group && groupcat='cat /etc/group';;
6574 esac
6575 case "$passcat" in
6576 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6577 esac
6578
6579 : now get the host name
6580 echo " "
6581 echo "Figuring out host name..." >&4
6582 case "$myhostname" in
6583 '') cont=true
6584         echo 'Maybe "hostname" will work...'
6585         if tans=`sh -c hostname 2>&1` ; then
6586                 myhostname=$tans
6587                 phostname=hostname
6588                 cont=''
6589         fi
6590         ;;
6591 *) cont='';;
6592 esac
6593 if $test "$cont"; then
6594         if ./xenix; then
6595                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6596                 if tans=`cat /etc/systemid 2>&1` ; then
6597                         myhostname=$tans
6598                         phostname='cat /etc/systemid'
6599                         echo "Whadyaknow.  Xenix always was a bit strange..."
6600                         cont=''
6601                 fi
6602         elif $test -r /etc/systemid; then
6603                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6604         fi
6605 fi
6606 if $test "$cont"; then
6607         echo 'No, maybe "uuname -l" will work...'
6608         if tans=`sh -c 'uuname -l' 2>&1` ; then
6609                 myhostname=$tans
6610                 phostname='uuname -l'
6611         else
6612                 echo 'Strange.  Maybe "uname -n" will work...'
6613                 if tans=`sh -c 'uname -n' 2>&1` ; then
6614                         myhostname=$tans
6615                         phostname='uname -n'
6616                 else
6617                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6618                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6619                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6620                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6621                         else
6622                                 case "$myhostname" in
6623                                 '') echo "Does this machine have an identity crisis or something?"
6624                                         phostname='';;
6625                                 *)
6626                                         echo "Well, you said $myhostname before..."
6627                                         phostname='echo $myhostname';;
6628                                 esac
6629                         fi
6630                 fi
6631         fi
6632 fi
6633 : you do not want to know about this
6634 set $myhostname
6635 myhostname=$1
6636
6637 : verify guess
6638 if $test "$myhostname" ; then
6639         dflt=y
6640         rp='Your host name appears to be "'$myhostname'".'" Right?"
6641         . ./myread
6642         case "$ans" in
6643         y*) ;;
6644         *) myhostname='';;
6645         esac
6646 fi
6647
6648 : bad guess or no guess
6649 while $test "X$myhostname" = X ; do
6650         dflt=''
6651         rp="Please type the (one word) name of your host:"
6652         . ./myread
6653         myhostname="$ans"
6654 done
6655
6656 : translate upper to lower if necessary
6657 case "$myhostname" in
6658 *[A-Z]*)
6659         echo "(Normalizing case in your host name)"
6660         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6661         ;;
6662 esac
6663
6664 case "$myhostname" in
6665 *.*)
6666         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6667         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6668         echo "(Trimming domain name from host name--host name is now $myhostname)"
6669         ;;
6670 *) case "$mydomain" in
6671         '')
6672                 {
6673                         test "X$hostcat" = "Xypcat hosts" &&
6674                         ypmatch "$myhostname" hosts 2>/dev/null |\
6675                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6676                         $test -s hosts
6677                 } || {
6678                         test "X$hostcat" != "X" &&
6679                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6680                                         /[       ]$myhostname[  . ]/p" > hosts
6681                 }
6682                 tmp_re="[       . ]"
6683                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6684                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6685                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6686                         hosts | $sort | $uniq | \
6687                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6688                 case `$echo X$dflt` in
6689                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6690                         dflt=.
6691                         ;;
6692                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6693                         ;;
6694                 esac
6695                 case "$dflt" in
6696                 .)
6697                         tans=`./loc resolv.conf X /etc /usr/etc`
6698                         if $test -f "$tans"; then
6699                                 echo "(Attempting domain name extraction from $tans)"
6700                                 dflt=.`$sed -n -e 's/   / /g' \
6701                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6702                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6703                                 case "$dflt" in
6704                                 .) dflt=.`$sed -n -e 's/        / /g' \
6705                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6706                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6707                                         ;;
6708                                 esac
6709                         fi
6710                         ;;
6711                 esac
6712                 case "$dflt" in
6713                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6714                         dflt=.`sh -c domainname 2>/dev/null`
6715                         case "$dflt" in
6716                         '') dflt='.';;
6717                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6718                         esac
6719                         ;;
6720                 esac
6721                 case "$dflt" in
6722                 .) echo "(Lost all hope -- silly guess then)"
6723                         dflt='.uucp'
6724                         ;;
6725                 esac
6726                 $rm -f hosts
6727                 ;;
6728         *) dflt="$mydomain";;
6729         esac;;
6730 esac
6731 echo " "
6732 rp="What is your domain name?"
6733 . ./myread
6734 tans="$ans"
6735 case "$ans" in
6736 '') ;;
6737 .*) ;;
6738 *) tans=".$tans";;
6739 esac
6740 mydomain="$tans"
6741
6742 : translate upper to lower if necessary
6743 case "$mydomain" in
6744 *[A-Z]*)
6745         echo "(Normalizing case in your domain name)"
6746         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6747         ;;
6748 esac
6749
6750 : a little sanity check here
6751 case "$phostname" in
6752 '') ;;
6753 *)
6754         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6755         $myhostname$mydomain|$myhostname) ;;
6756         *)
6757                 case "$phostname" in
6758                 sed*)
6759                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6760                         ;;
6761                 *)
6762                         echo "(That doesn't agree with your $phostname command, by the way.)"
6763                         ;;
6764                 esac
6765         ;;
6766         esac
6767         ;;
6768 esac
6769
6770 $cat <<EOM
6771
6772 I need to get your e-mail address in Internet format if possible, i.e.
6773 something like user@host.domain. Please answer accurately since I have
6774 no easy means to double check it. The default value provided below
6775 is most probably close to reality but may not be valid from outside
6776 your organization...
6777
6778 EOM
6779 cont=x
6780 while test "$cont"; do
6781         case "$cf_email" in
6782         '') dflt="$cf_by@$myhostname$mydomain";;
6783         *) dflt="$cf_email";;
6784         esac
6785         rp='What is your e-mail address?'
6786         . ./myread
6787         cf_email="$ans"
6788         case "$cf_email" in
6789         *@*.*) cont='' ;;
6790         *)
6791                 rp='Address does not look like an Internet one.  Use it anyway?'
6792                 case "$fastread" in
6793                 yes) dflt=y ;;
6794                 *) dflt=n ;;
6795                 esac
6796                 . ./myread
6797                 case "$ans" in
6798                 y*) cont='' ;;
6799                 *) echo " " ;;
6800                 esac
6801                 ;;
6802         esac
6803 done
6804
6805 $cat <<EOM
6806
6807 If you or somebody else will be maintaining perl at your site, please
6808 fill in the correct e-mail address here so that they may be contacted
6809 if necessary. Currently, the "perlbug" program included with perl
6810 will send mail to this address in addition to perlbug@perl.com. You may
6811 enter "none" for no administrator.
6812
6813 EOM
6814 case "$perladmin" in
6815 '') dflt="$cf_email";;
6816 *) dflt="$perladmin";;
6817 esac
6818 rp='Perl administrator e-mail address'
6819 . ./myread
6820 perladmin="$ans"
6821
6822 : figure out how to guarantee perl startup
6823 case "$startperl" in
6824 '')
6825         case "$sharpbang" in
6826         *!)
6827                 $cat <<EOH
6828
6829 I can use the #! construct to start perl on your system. This will
6830 make startup of perl scripts faster, but may cause problems if you
6831 want to share those scripts and perl is not in a standard place
6832 ($binexp/perl) on all your platforms. The alternative is to force
6833 a shell by starting the script with a single ':' character.
6834
6835 EOH
6836                 dflt="$binexp/perl"
6837                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6838                 . ./myread
6839                 case "$ans" in
6840                 none)   startperl=": # use perl";;
6841                 *)      startperl="#!$ans"
6842                         if $test 30 -lt `echo "$ans" | wc -c`; then
6843                                 $cat >&4 <<EOM
6844
6845 WARNING:  Some systems limit the #! command to 32 characters.
6846 If you experience difficulty running Perl scripts with #!, try
6847 installing Perl in a directory with a shorter pathname.
6848
6849 EOM
6850                         fi ;;
6851                 esac
6852                 ;;
6853         *) startperl=": # use perl"
6854                 ;;
6855         esac
6856         ;;
6857 esac
6858 echo "I'll use $startperl to start perl scripts."
6859
6860 : figure best path for perl in scripts
6861 case "$perlpath" in
6862 '')
6863         perlpath="$binexp/perl"
6864         case "$startperl" in
6865         *!*) ;;
6866         *)
6867                 $cat <<EOH
6868
6869 I will use the "eval 'exec'" idiom to start Perl on your system.
6870 I can use the full path of your Perl binary for this purpose, but
6871 doing so may cause problems if you want to share those scripts and
6872 Perl is not always in a standard place ($binexp/perl).
6873
6874 EOH
6875                 dflt="$binexp/perl"
6876                 rp="What path shall I use in \"eval 'exec'\"?"
6877                 . ./myread
6878                 perlpath="$ans"
6879                 ;;
6880         esac
6881         ;;
6882 esac
6883 case "$startperl" in
6884 *!*)    ;;
6885 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6886 esac
6887
6888 : determine where public executable scripts go
6889 set scriptdir scriptdir
6890 eval $prefixit
6891 case "$scriptdir" in
6892 '')
6893         dflt="$bin"
6894         : guess some guesses
6895         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6896         $test -d /usr/share/bin     && dflt=/usr/share/bin
6897         $test -d /usr/local/script  && dflt=/usr/local/script
6898         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6899         $test -d $prefixexp/script  && dflt=$prefixexp/script
6900         set dflt
6901         eval $prefixup
6902         ;;
6903 *)  dflt="$scriptdir"
6904         ;;
6905 esac
6906 $cat <<EOM
6907  
6908 Some installations have a separate directory just for executable scripts so
6909 that they can mount it across multiple architectures but keep the scripts in
6910 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6911 Or you might just lump your scripts in with all your other executables.
6912  
6913 EOM
6914 fn=d~
6915 rp='Where do you keep publicly executable scripts?'
6916 . ./getfile
6917 if $test "X$ansexp" != "X$scriptdirexp"; then
6918         installscript=''
6919 fi
6920 scriptdir="$ans"
6921 scriptdirexp="$ansexp"
6922 : Change installation prefix, if necessary.
6923 if $test X"$prefix" != X"$installprefix"; then
6924         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6925 else
6926         installscript="$scriptdirexp"
6927 fi
6928
6929 : determine where site specific architecture-dependent libraries go.
6930 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6931 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6932 : sitelib may have an optional trailing /share.
6933 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6934 tdflt="$tdflt/$archname"
6935 set sitearch sitearch none
6936 eval $prefixit
6937 case "$sitearch" in
6938 '')     dflt="$tdflt" ;;
6939 *)      dflt="$sitearch" ;;
6940 esac
6941 $cat <<EOM
6942
6943 The installation process will also create a directory for
6944 architecture-dependent site-specific extensions and modules.
6945
6946 EOM
6947 fn=nd~+
6948 rp='Pathname for the site-specific architecture-dependent library files?'
6949 . ./getfile
6950 sitearch="$ans"
6951 sitearchexp="$ansexp"
6952 : Change installation prefix, if necessary.
6953 if $test X"$prefix" != X"$installprefix"; then
6954         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6955 else
6956         installsitearch="$sitearchexp"
6957 fi
6958
6959 : determine where add-on public executables go
6960 case "$sitebin" in
6961 '')     dflt=$siteprefix/bin ;;
6962 *)      dflt=$sitebin ;;
6963 esac
6964 fn=d~
6965 rp='Pathname where the add-on public executables should be installed?'
6966 . ./getfile
6967 sitebin="$ans"
6968 sitebinexp="$ansexp"
6969 : Change installation prefix, if necessary.
6970 if $test X"$prefix" != X"$installprefix"; then
6971         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6972 else
6973         installsitebin="$sitebinexp"
6974 fi
6975
6976 : see if sqrtl exists
6977 set sqrtl d_sqrtl
6978 eval $inlibc
6979
6980 cat <<EOM
6981
6982 Perl can be built to take advantage of long doubles which
6983 (if available) may give more accuracy and range for floating point numbers.
6984
6985 If this doesn't make any sense to you, just accept the default 'n'.
6986 EOM
6987
6988 case "$ccflags" in
6989 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6990 esac
6991
6992 case "$uselongdouble" in
6993 $define|true|[yY]*)     dflt='y';;
6994 *) dflt='n';;
6995 esac
6996 rp='Try to use long doubles if available?'
6997 . ./myread
6998 case "$ans" in
6999 y|Y)    val="$define"   ;;
7000 *)      val="$undef"    ;;
7001 esac
7002 set uselongdouble
7003 eval $setvar
7004
7005 case "$uselongdouble" in
7006 true|[yY]*) uselongdouble="$define" ;;
7007 esac
7008
7009 case "$uselongdouble" in
7010 $define)
7011 : Look for a hint-file generated 'call-back-unit'.  If the
7012 : user has specified that long doubles should be used,
7013 : we may need to set or change some other defaults.
7014         if $test -f uselongdouble.cbu; then
7015                 echo "Your platform has some specific hints for long doubles, using them..."
7016                 . ./uselongdouble.cbu
7017         else
7018                 $cat <<EOM
7019 (Your platform doesn't have any specific hints for long doubles.)
7020 EOM
7021         fi
7022         ;;
7023 esac
7024
7025 case "$uselongdouble:$d_sqrtl" in
7026 $define:$undef)
7027                 $cat <<EOM >&4
7028
7029 You requested the use of long doubles but you do not seem to have
7030 the mathematic functions for long doubles.  I'm disabling the use
7031 of long doubles.
7032 EOM
7033         uselongdouble=$undef
7034         ;;
7035 esac
7036
7037 cat <<EOM
7038
7039 Perl can be built to take advantage of long longs which
7040 (if available) may give more range for integer numbers.
7041
7042 If this doesn't make any sense to you, just accept the default 'n'.
7043 EOM
7044
7045 case "$ccflags" in
7046 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7047 esac
7048
7049 case "$uselonglong" in
7050 '')     dflt='y';;
7051 esac
7052 rp='Try to use long longs if available?'
7053 . ./myread
7054 case "$ans" in
7055 y|Y)    val="$define"   ;;
7056 *)      val="$undef"    ;;
7057 esac
7058 set uselonglong
7059 eval $setvar
7060
7061 case "$uselonglong" in
7062 true|[yY]*) uselonglong="$define" ;;
7063 esac
7064
7065 case "$uselonglong" in
7066 $define)
7067 : Look for a hint-file generated 'call-back-unit'.  If the
7068 : user has specified that long longs should be used,
7069 : we may need to set or change some other defaults.
7070         if $test -f uselonglong.cbu; then
7071                 echo "Your platform has some specific hints for long longs, using them..."
7072                 . ./uselonglong.cbu
7073         else
7074                 $cat <<EOM
7075 (Your platform doesn't have any specific hints for long longs.)
7076 EOM
7077         fi
7078         ;;
7079 esac
7080
7081 cat <<EOM
7082
7083 Previous version of $package used the standard IO mechanisms as defined
7084 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7085 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7086 the default.  This abstraction layer can use AT&T's sfio (if you already
7087 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7088 problems with some extension modules.  Using PerlIO with stdio is safe,
7089 but it is slower than plain stdio and therefore is not the default.
7090
7091 If this doesn't make any sense to you, just accept the default 'n'.
7092 EOM
7093 case "$useperlio" in
7094 $define|true|[yY]*)     dflt='y';;
7095 *) dflt='n';;
7096 esac
7097 rp='Use the experimental PerlIO abstraction layer?'
7098 . ./myread
7099 case "$ans" in
7100 y|Y) 
7101         val="$define"
7102         ;;     
7103 *)      
7104         echo "Ok, doing things the stdio way"
7105         val="$undef"
7106         ;;
7107 esac
7108 set useperlio
7109 eval $setvar 
7110
7111 case "$vendorprefix" in
7112 '')     d_vendorbin="$undef"
7113         vendorbin=''
7114         vendorbinexp=''
7115         ;;
7116 *)      d_vendorbin="$define"
7117         : determine where vendor-supplied executables go.
7118         dflt=$vendorprefix/bin
7119         fn=d~+
7120         rp='Pathname for the vendor-supplied executables directory?'
7121         . ./getfile
7122         vendorbin="$ans"
7123         vendorbinexp="$ansexp"
7124         : Change installation prefix, if necessary.
7125         if $test X"$prefix" != X"$installprefix"; then
7126                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7127         else
7128                 installvendorbin="$vendorbinexp"
7129         fi
7130         ;;
7131 esac
7132
7133 : check for length of double
7134 echo " "
7135 case "$doublesize" in
7136 '')
7137         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7138         $cat >try.c <<'EOCP'
7139 #include <stdio.h>
7140 int main()
7141 {
7142     printf("%d\n", (int)sizeof(double));
7143     exit(0);
7144 }
7145 EOCP
7146         set try
7147         if eval $compile_ok; then
7148                 doublesize=`./try`
7149                 $echo " $doublesize bytes." >&4
7150         else
7151                 dflt='8'
7152                 echo "(I can't seem to compile the test program.  Guessing...)"
7153                 rp="What is the size of a double precision number (in bytes)?"
7154                 . ./myread
7155                 doublesize="$ans"
7156         fi
7157         ;;
7158 esac
7159 $rm -f try.c try
7160
7161 : check for long doubles
7162 echo " "
7163 $echo $n "Checking to see if your system supports long double..." $c >&4
7164 echo 'int main() { long double x = 7.0; }' > try.c
7165 set try
7166 if eval $compile; then
7167         val="$define"
7168         echo " Yes, it does." >&4
7169 else
7170         val="$undef"
7171         echo " No, it doesn't." >&4
7172 fi
7173 $rm try.*
7174 set d_longdbl
7175 eval $setvar
7176
7177 : check for length of long double
7178 case "${d_longdbl}${longdblsize}" in
7179 $define)
7180         echo " "
7181         $echo $n "Checking to see how big your long doubles are..." $c >&4
7182         $cat >try.c <<'EOCP'
7183 #include <stdio.h>
7184 int main()
7185 {
7186         printf("%d\n", sizeof(long double));
7187 }
7188 EOCP
7189         set try
7190         set try
7191         if eval $compile; then
7192                 longdblsize=`./try$exe_ext`
7193                 $echo " $longdblsize bytes." >&4
7194         else
7195                 dflt='8'
7196                 echo " "
7197                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7198                 rp="What is the size of a long double (in bytes)?"
7199                 . ./myread
7200                 longdblsize="$ans"
7201         fi
7202         if $test "X$doublesize" = "X$longdblsize"; then
7203                 echo "(That isn't any different from an ordinary double.)"
7204         fi      
7205         ;;
7206 esac
7207 $rm -f try.* try
7208
7209 : Check how to convert floats to strings.
7210 if test "X$d_Gconvert" = X; then
7211         echo " "
7212         echo "Checking for an efficient way to convert floats to strings."
7213         $cat >try.c <<EOP
7214 #ifdef TRY_gconvert
7215 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7216 char *myname = "gconvert";
7217 #endif
7218 #ifdef TRY_gcvt
7219 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7220 char *myname = "gcvt";
7221 #endif
7222 #ifdef TRY_qgcvt
7223 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7224 char *myname = "qgcvt";
7225 #define DOUBLETYPE long double
7226 #endif
7227 #ifdef TRY_sprintf
7228 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7229 char *myname = "sprintf";
7230 #endif
7231
7232 #ifndef DOUBLETYPE
7233 #define DOUBLETYPE double
7234 #endif
7235
7236 #include <stdio.h>
7237
7238 #define I_STDLIB $i_stdlib
7239 #ifdef I_STDLIB
7240 #include <stdlib.h>
7241 #endif
7242
7243 int
7244 checkit(expect, got)
7245 char *expect;
7246 char *got;
7247 {
7248     if (strcmp(expect, got)) {
7249                 printf("%s oddity:  Expected %s, got %s\n",
7250                         myname, expect, got);
7251                 exit(1);
7252         }
7253 }
7254
7255 int main()
7256
7257         char buf[64]; 
7258         buf[63] = '\0';
7259
7260         /* This must be 1st test on (which?) platform */
7261         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7262         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7263         checkit("0.1", buf);
7264
7265         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7266         checkit("1", buf);
7267
7268         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7269         checkit("0", buf);
7270
7271         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7272         checkit("-1", buf);
7273
7274         /* Some Linux gcvt's give 1.e+5 here. */
7275         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7276         checkit("100000", buf);
7277         
7278         /* Some Linux gcvt's give -1.e+5 here. */
7279         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7280         checkit("-100000", buf);
7281
7282         exit(0);
7283 }
7284 EOP
7285         case "$d_Gconvert" in
7286         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7287         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7288         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7289         *) xxx_list='gconvert gcvt sprintf' ;;
7290         esac
7291
7292         case "$d_longdbl$uselongdouble" in
7293         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7294         esac
7295
7296         for xxx_convert in $xxx_list; do
7297                 echo "Trying $xxx_convert..."
7298                 $rm -f try try$_o
7299                 set try -DTRY_$xxx_convert
7300                 if eval $compile; then
7301                         echo "$xxx_convert() found." >&4
7302                         if ./try; then
7303                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7304                                 break;
7305                         else
7306                                 echo "...But $xxx_convert didn't work as I expected."
7307                         fi
7308                 else
7309                         echo "$xxx_convert NOT found." >&4
7310                 fi
7311         done
7312                 
7313         case "$xxx_convert" in
7314         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7315         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7316         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7317         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7318         esac
7319 fi
7320
7321 echo " "
7322
7323 if $test X"$d_longdbl" = X"$define"; then
7324
7325 echo "Checking how to print long doubles..." >&4
7326
7327 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7328         $cat >try.c <<'EOCP'
7329 #include <sys/types.h>
7330 #include <stdio.h>
7331 int main() {
7332   double d = 123.456;
7333   printf("%.3f\n", d);
7334 }
7335 EOCP
7336         set try
7337         if eval $compile; then
7338                 yyy=`./try$exe_ext`
7339                 case "$yyy" in
7340                 123.456)
7341                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7342                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7343                         echo "We will use %f."
7344                         ;;
7345                 esac
7346         fi
7347 fi
7348
7349 if $test X"$sPRIfldbl" = X; then
7350         $cat >try.c <<'EOCP'
7351 #include <sys/types.h>
7352 #include <stdio.h>
7353 int main() {
7354   long double d = 123.456;
7355   printf("%.3llf\n", d);
7356 }
7357 EOCP
7358         set try
7359         if eval $compile; then
7360                 yyy=`./try$exe_ext`
7361                 case "$yyy" in
7362                 123.456)
7363                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7364                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7365                         echo "We will use %llf."
7366                         ;;
7367                 esac
7368         fi
7369 fi
7370
7371 if $test X"$sPRIfldbl" = X; then
7372         $cat >try.c <<'EOCP'
7373 #include <sys/types.h>
7374 #include <stdio.h>
7375 int main() {
7376   long double d = 123.456;
7377   printf("%.3Lf\n", d);
7378 }
7379 EOCP
7380         set try
7381         if eval $compile; then
7382                 yyy=`./try$exe_ext`
7383                 case "$yyy" in
7384                 123.456)
7385                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7386                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7387                         echo "We will use %Lf."
7388                         ;;
7389                 esac
7390         fi
7391 fi
7392
7393 if $test X"$sPRIfldbl" = X; then
7394         $cat >try.c <<'EOCP'
7395 #include <sys/types.h>
7396 #include <stdio.h>
7397 int main() {
7398   long double d = 123.456;
7399   printf("%.3lf\n", d);
7400 }
7401 EOCP
7402         set try
7403         if eval $compile; then
7404                 yyy=`./try$exe_ext`
7405                 case "$yyy" in
7406                 123.456)
7407                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7408                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7409                         echo "We will use %lf."
7410                         ;;
7411                 esac
7412         fi
7413 fi
7414
7415 if $test X"$sPRIfldbl" = X; then
7416         echo "Cannot figure out how to print long doubles." >&4
7417 fi
7418
7419 $rm -f try try.*
7420
7421 fi # d_longdbl
7422
7423 case "$sPRIfldbl" in
7424 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7425         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7426         ;;
7427 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7428         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7429         ;;
7430 esac
7431
7432 : Initialize h_fcntl
7433 h_fcntl=false
7434
7435 : Initialize h_sysfile
7436 h_sysfile=false
7437
7438 : access call always available on UNIX
7439 set access d_access
7440 eval $inlibc
7441
7442 : locate the flags for 'access()'
7443 case "$d_access" in
7444 "$define")
7445         echo " "
7446         $cat >access.c <<'EOCP'
7447 #include <sys/types.h>
7448 #ifdef I_FCNTL
7449 #include <fcntl.h>
7450 #endif
7451 #ifdef I_SYS_FILE
7452 #include <sys/file.h>
7453 #endif
7454 #ifdef I_UNISTD
7455 #include <unistd.h>
7456 #endif
7457 int main() {
7458         exit(R_OK);
7459 }
7460 EOCP
7461         : check sys/file.h first, no particular reason here
7462         if $test `./findhdr sys/file.h` && \
7463                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7464                 h_sysfile=true;
7465                 echo "<sys/file.h> defines the *_OK access constants." >&4
7466         elif $test `./findhdr fcntl.h` && \
7467                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7468                 h_fcntl=true;
7469                 echo "<fcntl.h> defines the *_OK access constants." >&4
7470         elif $test `./findhdr unistd.h` && \
7471                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7472                 echo "<unistd.h> defines the *_OK access constants." >&4
7473         else
7474                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7475         fi
7476         ;;
7477 esac
7478 $rm -f access*
7479
7480 : see if accessx exists
7481 set accessx d_accessx
7482 eval $inlibc
7483
7484 : see if alarm exists
7485 set alarm d_alarm
7486 eval $inlibc
7487
7488 : see if atolf exists
7489 set atolf d_atolf
7490 eval $inlibc
7491
7492 : see if atoll exists
7493 set atoll d_atoll
7494 eval $inlibc
7495
7496 : Look for GNU-cc style attribute checking
7497 echo " "
7498 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7499 $cat >attrib.c <<'EOCP'
7500 #include <stdio.h>
7501 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7502 EOCP
7503 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7504         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7505                 echo "Your C compiler doesn't fully support __attribute__."
7506                 val="$undef"
7507         else
7508                 echo "Your C compiler supports __attribute__."
7509                 val="$define"
7510         fi
7511 else
7512         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7513         val="$undef"
7514 fi
7515 set d_attribut
7516 eval $setvar
7517 $rm -f attrib*
7518
7519 : see if bcmp exists
7520 set bcmp d_bcmp
7521 eval $inlibc
7522
7523 : see if bcopy exists
7524 set bcopy d_bcopy
7525 eval $inlibc
7526
7527 : see if this is a unistd.h system
7528 set unistd.h i_unistd
7529 eval $inhdr
7530
7531 : see if getpgrp exists
7532 set getpgrp d_getpgrp
7533 eval $inlibc
7534
7535 case "$d_getpgrp" in
7536 "$define")
7537         echo " "
7538         echo "Checking to see which flavor of getpgrp is in use..."
7539         $cat >set.c <<EOP
7540 #$i_unistd I_UNISTD
7541 #include <sys/types.h>
7542 #ifdef I_UNISTD
7543 #  include <unistd.h>
7544 #endif
7545 int main()
7546 {
7547         if (getuid() == 0) {
7548                 printf("(I see you are running Configure as super-user...)\n");
7549                 setuid(1);
7550         }
7551 #ifdef TRY_BSD_PGRP
7552         if (getpgrp(1) == 0)
7553                 exit(0);
7554 #else
7555         if (getpgrp() > 0)
7556                 exit(0);
7557 #endif
7558         exit(1);
7559 }
7560 EOP
7561         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7562                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7563                 val="$define"
7564         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7565                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7566                 val="$undef"
7567         else
7568                 echo "I can't seem to compile and run the test program."
7569                 if ./usg; then
7570                         xxx="a USG one, i.e. you use getpgrp()."
7571                 else
7572                         # SVR4 systems can appear rather BSD-ish.
7573                         case "$i_unistd" in
7574                         $undef)
7575                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7576                                 val="$define"
7577                                 ;;
7578                         $define)
7579                                 xxx="probably a USG one, i.e. you use getpgrp()."
7580                                 val="$undef"
7581                                 ;;
7582                         esac
7583                 fi
7584                 echo "Assuming your getpgrp is $xxx" >&4
7585         fi
7586         ;;
7587 *) val="$undef";;
7588 esac
7589 set d_bsdgetpgrp
7590 eval $setvar
7591 $rm -f set set.c
7592
7593 : see if setpgrp exists
7594 set setpgrp d_setpgrp
7595 eval $inlibc
7596
7597 case "$d_setpgrp" in
7598 "$define")
7599         echo " "
7600         echo "Checking to see which flavor of setpgrp is in use..."
7601         $cat >set.c <<EOP
7602 #$i_unistd I_UNISTD
7603 #include <sys/types.h>
7604 #ifdef I_UNISTD
7605 #  include <unistd.h>
7606 #endif
7607 int main()
7608 {
7609         if (getuid() == 0) {
7610                 printf("(I see you are running Configure as super-user...)\n");
7611                 setuid(1);
7612         }
7613 #ifdef TRY_BSD_PGRP
7614         if (-1 == setpgrp(1, 1))
7615                 exit(0);
7616 #else
7617         if (setpgrp() != -1)
7618                 exit(0);
7619 #endif
7620         exit(1);
7621 }
7622 EOP
7623         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7624                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7625                 val="$define"
7626         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7627                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7628                 val="$undef"
7629         else
7630                 echo "(I can't seem to compile and run the test program.)"
7631                 if ./usg; then
7632                         xxx="a USG one, i.e. you use setpgrp()."
7633                 else
7634                         # SVR4 systems can appear rather BSD-ish.
7635                         case "$i_unistd" in
7636                         $undef)
7637                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7638                                 val="$define"
7639                                 ;;
7640                         $define)
7641                                 xxx="probably a USG one, i.e. you use setpgrp()."
7642                                 val="$undef"
7643                                 ;;
7644                         esac
7645                 fi
7646                 echo "Assuming your setpgrp is $xxx" >&4
7647         fi
7648         ;;
7649 *) val="$undef";;
7650 esac
7651 set d_bsdsetpgrp
7652 eval $setvar
7653 $rm -f set set.c
7654 : see if bzero exists
7655 set bzero d_bzero
7656 eval $inlibc
7657
7658 : see if signal is declared as pointer to function returning int or void
7659 echo " "
7660 xxx=`./findhdr signal.h`
7661 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7662 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7663         echo "You have int (*signal())() instead of void." >&4
7664         val="$undef"
7665 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7666         echo "You have void (*signal())()." >&4
7667         val="$define"
7668 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7669         echo "You have int (*signal())() instead of void." >&4
7670         val="$undef"
7671 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7672         echo "You have void (*signal())()." >&4
7673         val="$define"
7674 else
7675         case "$d_voidsig" in
7676         '')
7677         echo "I can't determine whether signal handler returns void or int..." >&4
7678                 dflt=void
7679                 rp="What type does your signal handler return?"
7680                 . ./myread
7681                 case "$ans" in
7682                 v*) val="$define";;
7683                 *) val="$undef";;
7684                 esac;;
7685         "$define")
7686                 echo "As you already told me, signal handler returns void." >&4
7687                 val="$define"
7688                 ;;
7689         *)      echo "As you already told me, signal handler returns int." >&4
7690                 val="$undef"
7691                 ;;
7692         esac
7693 fi
7694 set d_voidsig
7695 eval $setvar
7696 case "$d_voidsig" in
7697 "$define") signal_t="void";;
7698 *) signal_t="int";;
7699 esac
7700 $rm -f $$.tmp
7701
7702 : check for ability to cast large floats to 32-bit ints.
7703 echo " "
7704 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7705 if $test "$intsize" -ge 4; then
7706         xxx=int
7707 else
7708         xxx=long
7709 fi
7710 $cat >try.c <<EOCP
7711 #include <stdio.h>
7712 #include <sys/types.h>
7713 #include <signal.h>
7714 $signal_t blech(s) int s; { exit(3); }
7715 int main()
7716 {
7717         $xxx i32;
7718         double f, g;
7719         int result = 0;
7720         char str[16];
7721         signal(SIGFPE, blech);
7722
7723         /* Don't let compiler optimize the test away.  Store the number 
7724            in a writable string for gcc to pass to sscanf under HP/UX.
7725         */
7726         sprintf(str, "2147483647");
7727         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7728         g = 10 * f;
7729         i32  = ($xxx) g;
7730
7731         /* x86 processors will probably give 0x8000 0000, which is a
7732        sign change.  We don't want that.  We want to mimic SPARC
7733            behavior here, which is to preserve the sign and give
7734            back 0x7fff ffff.
7735         */
7736         if (i32 != ($xxx) f)
7737                 result |= 1;
7738         exit(result);
7739 }
7740 EOCP
7741 set try
7742 if eval $compile_ok; then
7743         ./try
7744         yyy=$?
7745 else
7746         echo "(I can't seem to compile the test program--assuming it can't)"
7747         yyy=1
7748 fi
7749 case "$yyy" in
7750 0)      val="$define"
7751         echo "Yup, it can."
7752         ;;
7753 *)      val="$undef"
7754         echo "Nope, it can't."
7755         ;;
7756 esac
7757 set d_casti32
7758 eval $setvar
7759 $rm -f try try.*
7760
7761 : check for ability to cast negative floats to unsigned
7762 echo " "
7763 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7764 $cat >try.c <<EOCP
7765 #include <stdio.h>
7766 #include <sys/types.h>
7767 #include <signal.h>
7768 $signal_t blech(s) int s; { exit(7); }
7769 $signal_t blech_in_list(s) int s; { exit(4); }
7770 unsigned long dummy_long(p) unsigned long p; { return p; }
7771 unsigned int dummy_int(p) unsigned int p; { return p; }
7772 unsigned short dummy_short(p) unsigned short p; { return p; }
7773 int main()
7774 {
7775         double f;
7776         unsigned long along;
7777         unsigned int aint;
7778         unsigned short ashort;
7779         int result = 0;
7780         char str[16];
7781         
7782         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7783            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7784            optimized the whole file away
7785         */
7786         /* Store the number in a writable string for gcc to pass to 
7787            sscanf under HP/UX.
7788         */
7789         sprintf(str, "-123");
7790         sscanf(str, "%lf", &f);  /* f = -123.; */
7791
7792         signal(SIGFPE, blech);
7793         along = (unsigned long)f;
7794         aint = (unsigned int)f;
7795         ashort = (unsigned short)f;
7796         if (along != (unsigned long)-123)
7797                 result |= 1;
7798         if (aint != (unsigned int)-123)
7799                 result |= 1;
7800         if (ashort != (unsigned short)-123)
7801                 result |= 1;
7802         sprintf(str, "1073741824.");
7803         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7804         f = f + f;
7805         along = 0;
7806         along = (unsigned long)f;
7807         if (along != 0x80000000)
7808                 result |= 2;
7809         f -= 1.;
7810         along = 0;
7811         along = (unsigned long)f;
7812         if (along != 0x7fffffff)
7813                 result |= 1;
7814         f += 2.;
7815         along = 0;
7816         along = (unsigned long)f;
7817         if (along != 0x80000001)
7818                 result |= 2;
7819         if (result)
7820                 exit(result);
7821         signal(SIGFPE, blech_in_list);
7822         sprintf(str, "123.");
7823         sscanf(str, "%lf", &f);  /* f = 123.; */
7824         along = dummy_long((unsigned long)f);
7825         aint = dummy_int((unsigned int)f);
7826         ashort = dummy_short((unsigned short)f);
7827         if (along != (unsigned long)123)
7828                 result |= 4;
7829         if (aint != (unsigned int)123)
7830                 result |= 4;
7831         if (ashort != (unsigned short)123)
7832                 result |= 4;
7833         exit(result);
7834
7835 }
7836 EOCP
7837 set try
7838 if eval $compile_ok; then
7839         ./try
7840         castflags=$?
7841 else
7842         echo "(I can't seem to compile the test program--assuming it can't)"
7843         castflags=7
7844 fi
7845 case "$castflags" in
7846 0)      val="$define"
7847         echo "Yup, it can."
7848         ;;
7849 *)      val="$undef"
7850         echo "Nope, it can't."
7851         ;;
7852 esac
7853 set d_castneg
7854 eval $setvar
7855 $rm -f try.*
7856
7857 : see if vprintf exists
7858 echo " "
7859 if set vprintf val -f d_vprintf; eval $csym; $val; then
7860         echo 'vprintf() found.' >&4
7861         val="$define"
7862         $cat >vprintf.c <<'EOF'
7863 #include <varargs.h>
7864
7865 int main() { xxx("foo"); }
7866
7867 xxx(va_alist)
7868 va_dcl
7869 {
7870         va_list args;
7871         char buf[10];
7872
7873         va_start(args);
7874         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7875 }
7876 EOF
7877         set vprintf
7878         if eval $compile && ./vprintf; then
7879                 echo "Your vsprintf() returns (int)." >&4
7880                 val2="$undef"
7881         else
7882                 echo "Your vsprintf() returns (char*)." >&4
7883                 val2="$define"
7884         fi
7885 else
7886         echo 'vprintf() NOT found.' >&4
7887                 val="$undef"
7888                 val2="$undef"
7889 fi
7890 set d_vprintf
7891 eval $setvar
7892 val=$val2
7893 set d_charvspr
7894 eval $setvar
7895
7896 : see if chown exists
7897 set chown d_chown
7898 eval $inlibc
7899
7900 : see if chroot exists
7901 set chroot d_chroot
7902 eval $inlibc
7903
7904 : see if chsize exists
7905 set chsize d_chsize
7906 eval $inlibc
7907
7908 : check for const keyword
7909 echo " "
7910 echo 'Checking to see if your C compiler knows about "const"...' >&4
7911 $cat >const.c <<'EOCP'
7912 typedef struct spug { int drokk; } spug;
7913 int main()
7914 {
7915         const char *foo;
7916         const spug y;
7917 }
7918 EOCP
7919 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7920         val="$define"
7921         echo "Yup, it does."
7922 else
7923         val="$undef"
7924         echo "Nope, it doesn't."
7925 fi
7926 set d_const
7927 eval $setvar
7928
7929 : see if crypt exists
7930 echo " "
7931 if set crypt val -f d_crypt; eval $csym; $val; then
7932         echo 'crypt() found.' >&4
7933         val="$define"
7934         cryptlib=''
7935 else
7936         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7937         if $test -z "$cryptlib"; then
7938                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7939         else
7940                 cryptlib=-lcrypt
7941         fi
7942         if $test -z "$cryptlib"; then
7943                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7944         else
7945                 cryptlib=-lcrypt
7946         fi
7947         if $test -z "$cryptlib"; then
7948                 cryptlib=`./loc libcrypt$_a "" $libpth`
7949         else
7950                 cryptlib=-lcrypt
7951         fi
7952         if $test -z "$cryptlib"; then
7953                 echo 'crypt() NOT found.' >&4
7954                 val="$undef"
7955         else
7956                 val="$define"
7957         fi
7958 fi
7959 set d_crypt
7960 eval $setvar
7961
7962 : get csh whereabouts
7963 case "$csh" in
7964 'csh') val="$undef" ;;
7965 *) val="$define" ;;
7966 esac
7967 set d_csh
7968 eval $setvar
7969 : Respect a hint or command line value for full_csh.
7970 case "$full_csh" in
7971 '') full_csh=$csh ;;
7972 esac
7973
7974 : see if cuserid exists
7975 set cuserid d_cuserid
7976 eval $inlibc
7977
7978 : see if this is a limits.h system
7979 set limits.h i_limits
7980 eval $inhdr
7981
7982 : see if this is a float.h system
7983 set float.h i_float
7984 eval $inhdr
7985
7986 : See if number of significant digits in a double precision number is known
7987 echo " "
7988 $cat >dbl_dig.c <<EOM
7989 #$i_limits I_LIMITS
7990 #$i_float I_FLOAT
7991 #ifdef I_LIMITS
7992 #include <limits.h>
7993 #endif
7994 #ifdef I_FLOAT
7995 #include <float.h>
7996 #endif
7997 #ifdef DBL_DIG
7998 printf("Contains DBL_DIG");
7999 #endif
8000 EOM
8001 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8002 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8003         echo "DBL_DIG found." >&4
8004         val="$define"
8005 else
8006         echo "DBL_DIG NOT found." >&4
8007         val="$undef"
8008 fi
8009 $rm -f dbl_dig.?
8010 set d_dbl_dig
8011 eval $setvar
8012
8013 : see if difftime exists
8014 set difftime d_difftime
8015 eval $inlibc
8016
8017 : see if this is a dirent system
8018 echo " "
8019 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8020         val="$define"
8021         echo "<dirent.h> found." >&4
8022 else
8023         val="$undef"
8024         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8025                 echo "<sys/dir.h> found." >&4
8026                 echo " "
8027         else
8028                 xinc=`./findhdr sys/ndir.h`
8029         fi
8030         echo "<dirent.h> NOT found." >&4
8031 fi
8032 set i_dirent
8033 eval $setvar
8034
8035 : Look for type of directory structure.
8036 echo " "
8037 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8038
8039 case "$direntrytype" in
8040 ''|' ')
8041         case "$i_dirent" in
8042         $define) guess1='struct dirent' ;;
8043         *) guess1='struct direct'  ;;
8044         esac
8045         ;;
8046 *)      guess1="$direntrytype"
8047         ;;
8048 esac
8049
8050 case "$guess1" in
8051 'struct dirent') guess2='struct direct' ;;
8052 *) guess2='struct dirent' ;;
8053 esac
8054                 
8055 if $contains "$guess1" try.c >/dev/null 2>&1; then
8056         direntrytype="$guess1"
8057         echo "Your directory entries are $direntrytype." >&4
8058 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8059         direntrytype="$guess2"
8060         echo "Your directory entries seem to be $direntrytype." >&4
8061 else
8062         echo "I don't recognize your system's directory entries." >&4
8063         rp="What type is used for directory entries on this system?"
8064         dflt="$guess1"
8065         . ./myread
8066         direntrytype="$ans"
8067 fi
8068 $rm -f try.c
8069
8070
8071 : see if the directory entry stores field length
8072 echo " "
8073 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8074 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8075         echo "Good, your directory entry keeps length information in d_namlen." >&4
8076         val="$define"
8077 else
8078         echo "Your directory entry does not know about the d_namlen field." >&4
8079         val="$undef"
8080 fi
8081 set d_dirnamlen
8082 eval $setvar
8083 $rm -f try.c
8084
8085 : see if dlerror exists
8086 xxx_runnm="$runnm"
8087 runnm=false
8088 set dlerror d_dlerror
8089 eval $inlibc
8090 runnm="$xxx_runnm"
8091
8092 : see if dlfcn is available
8093 set dlfcn.h i_dlfcn
8094 eval $inhdr
8095
8096 case "$usedl" in
8097 $define|y|true)
8098         $cat << EOM
8099
8100 On a few systems, the dynamically loaded modules that perl generates and uses
8101 will need a different extension than shared libs. The default will probably
8102 be appropriate.
8103
8104 EOM
8105         case "$dlext" in
8106         '')     dflt="$so" ;;
8107         *)      dflt="$dlext" ;;
8108         esac
8109         rp='What is the extension of dynamically loaded modules'
8110         . ./myread
8111         dlext="$ans"
8112         ;;
8113 *)
8114         dlext="none"
8115         ;;
8116 esac
8117
8118 : Check if dlsym need a leading underscore
8119 echo " "
8120 val="$undef"
8121
8122 case "$dlsrc" in
8123 dl_dlopen.xs)
8124         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8125         $cat >dyna.c <<'EOM'
8126 fred () { }
8127 EOM
8128
8129 $cat >fred.c<<EOM
8130
8131 #include <stdio.h>
8132 #$i_dlfcn I_DLFCN
8133 #ifdef I_DLFCN
8134 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8135 #else
8136 #include <sys/types.h>
8137 #include <nlist.h>
8138 #include <link.h>
8139 #endif
8140
8141 extern int fred() ;
8142
8143 int main()
8144 {
8145     void * handle ;
8146     void * symbol ;
8147 #ifndef RTLD_LAZY
8148     int mode = 1 ;
8149 #else
8150     int mode = RTLD_LAZY ;
8151 #endif
8152     handle = dlopen("./dyna.$dlext", mode) ;
8153     if (handle == NULL) {
8154         printf ("1\n") ;
8155         fflush (stdout) ;
8156         exit(0);
8157     }
8158     symbol = dlsym(handle, "fred") ;
8159     if (symbol == NULL) {
8160         /* try putting a leading underscore */
8161         symbol = dlsym(handle, "_fred") ;
8162         if (symbol == NULL) {
8163             printf ("2\n") ;
8164             fflush (stdout) ;
8165             exit(0);
8166         }
8167         printf ("3\n") ;
8168     }
8169     else
8170         printf ("4\n") ;
8171     fflush (stdout) ;
8172     exit(0);
8173 }
8174 EOM
8175         : Call the object file tmp-dyna.o in case dlext=o.
8176         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8177                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8178                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8179                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8180                 xxx=`./fred`
8181                 case $xxx in
8182                 1)      echo "Test program failed using dlopen." >&4
8183                         echo "Perhaps you should not use dynamic loading." >&4;;
8184                 2)      echo "Test program failed using dlsym." >&4
8185                         echo "Perhaps you should not use dynamic loading." >&4;;
8186                 3)      echo "dlsym needs a leading underscore" >&4
8187                         val="$define" ;;
8188                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8189                 esac
8190         else
8191                 echo "I can't compile and run the test program." >&4
8192                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8193         fi
8194         ;;
8195 esac
8196                 
8197 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8198
8199 set d_dlsymun
8200 eval $setvar
8201
8202 hasproto='varname=$1; func=$2; shift; shift;
8203 while $test $# -ge 2; do
8204         case "$1" in
8205         $define) echo "#include <$2>";;
8206         esac ;
8207     shift 2;
8208 done > try.c;
8209 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8210 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8211         echo "$func() prototype found.";
8212         val="$define";
8213 else
8214         echo "$func() prototype NOT found.";
8215         val="$undef";
8216 fi;
8217 set $varname;
8218 eval $setvar;
8219 $rm -f try.c tryout.c'
8220
8221 : see if prototype for drand48 is available
8222 echo " "
8223 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8224 eval $hasproto
8225
8226 : see if dup2 exists
8227 set dup2 d_dup2
8228 eval $inlibc
8229
8230 : see if eaccess exists
8231 set eaccess d_eaccess
8232 eval $inlibc
8233
8234 : see if endgrent exists
8235 set endgrent d_endgrent
8236 eval $inlibc
8237
8238 : see if endhostent exists
8239 set endhostent d_endhent
8240 eval $inlibc
8241
8242 : see if endnetent exists
8243 set endnetent d_endnent
8244 eval $inlibc
8245
8246 : see if endprotoent exists
8247 set endprotoent d_endpent
8248 eval $inlibc
8249
8250 : see if endpwent exists
8251 set endpwent d_endpwent
8252 eval $inlibc
8253
8254 : see if endservent exists
8255 set endservent d_endsent
8256 eval $inlibc
8257
8258 : see if endspent exists
8259 set endspent d_endspent
8260 eval $inlibc
8261
8262 : Locate the flags for 'open()'
8263 echo " "
8264 $cat >open3.c <<'EOCP'
8265 #include <sys/types.h>
8266 #ifdef I_FCNTL
8267 #include <fcntl.h>
8268 #endif
8269 #ifdef I_SYS_FILE
8270 #include <sys/file.h>
8271 #endif
8272 int main() {
8273         if(O_RDONLY);
8274 #ifdef O_TRUNC
8275         exit(0);
8276 #else
8277         exit(1);
8278 #endif
8279 }
8280 EOCP
8281 : check sys/file.h first to get FREAD on Sun
8282 if $test `./findhdr sys/file.h` && \
8283                 set open3 -DI_SYS_FILE && eval $compile; then
8284         h_sysfile=true;
8285         echo "<sys/file.h> defines the O_* constants..." >&4
8286         if ./open3; then
8287                 echo "and you have the 3 argument form of open()." >&4
8288                 val="$define"
8289         else
8290                 echo "but not the 3 argument form of open().  Oh, well." >&4
8291                 val="$undef"
8292         fi
8293 elif $test `./findhdr fcntl.h` && \
8294                 set open3 -DI_FCNTL && eval $compile; then
8295         h_fcntl=true;
8296         echo "<fcntl.h> defines the O_* constants..." >&4
8297         if ./open3; then
8298                 echo "and you have the 3 argument form of open()." >&4
8299                 val="$define"
8300         else
8301                 echo "but not the 3 argument form of open().  Oh, well." >&4
8302                 val="$undef"
8303         fi
8304 else
8305         val="$undef"
8306         echo "I can't find the O_* constant definitions!  You got problems." >&4
8307 fi
8308 set d_open3
8309 eval $setvar
8310 $rm -f open3*
8311
8312 : see which of string.h or strings.h is needed
8313 echo " "
8314 strings=`./findhdr string.h`
8315 if $test "$strings" && $test -r "$strings"; then
8316         echo "Using <string.h> instead of <strings.h>." >&4
8317         val="$define"
8318 else
8319         val="$undef"
8320         strings=`./findhdr strings.h`
8321         if $test "$strings" && $test -r "$strings"; then
8322                 echo "Using <strings.h> instead of <string.h>." >&4
8323         else
8324                 echo "No string header found -- You'll surely have problems." >&4
8325         fi
8326 fi
8327 set i_string
8328 eval $setvar
8329 case "$i_string" in
8330 "$undef") strings=`./findhdr strings.h`;;
8331 *)        strings=`./findhdr string.h`;;
8332 esac
8333
8334 : check for non-blocking I/O stuff
8335 case "$h_sysfile" in
8336 true) echo "#include <sys/file.h>" > head.c;;
8337 *)
8338         case "$h_fcntl" in
8339         true) echo "#include <fcntl.h>" > head.c;;
8340         *) echo "#include <sys/fcntl.h>" > head.c;;
8341         esac
8342         ;;
8343 esac
8344 echo " "
8345 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8346 case "$o_nonblock" in
8347 '')
8348         $cat head.c > try.c
8349         $cat >>try.c <<'EOCP'
8350 #include <stdio.h>
8351 int main() {
8352 #ifdef O_NONBLOCK
8353         printf("O_NONBLOCK\n");
8354         exit(0);
8355 #endif
8356 #ifdef O_NDELAY
8357         printf("O_NDELAY\n");
8358         exit(0);
8359 #endif
8360 #ifdef FNDELAY
8361         printf("FNDELAY\n");
8362         exit(0);
8363 #endif
8364         exit(0);
8365 }
8366 EOCP
8367         set try
8368         if eval $compile_ok; then
8369                 o_nonblock=`./try`
8370                 case "$o_nonblock" in
8371                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8372                 *) echo "Seems like we can use $o_nonblock.";;
8373                 esac
8374         else
8375                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8376         fi
8377         ;;
8378 *) echo "Using $hint value $o_nonblock.";;
8379 esac
8380 $rm -f try try.* .out core
8381
8382 echo " "
8383 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8384 case "$eagain" in
8385 '')
8386         $cat head.c > try.c
8387         $cat >>try.c <<EOCP
8388 #include <errno.h>
8389 #include <sys/types.h>
8390 #include <signal.h>
8391 #include <stdio.h> 
8392 #define MY_O_NONBLOCK $o_nonblock
8393 #ifndef errno  /* XXX need better Configure test */
8394 extern int errno;
8395 #endif
8396 #$i_unistd I_UNISTD
8397 #ifdef I_UNISTD
8398 #include <unistd.h>
8399 #endif
8400 #ifdef $i_string
8401 #include <string.h>
8402 #else
8403 #include <strings.h>
8404 #endif
8405 $signal_t blech(x) int x; { exit(3); }
8406 EOCP
8407         $cat >> try.c <<'EOCP'
8408 int main()
8409 {
8410         int pd[2];
8411         int pu[2];
8412         char buf[1];
8413         char string[100];
8414
8415         pipe(pd);       /* Down: child -> parent */
8416         pipe(pu);       /* Up: parent -> child */
8417         if (0 != fork()) {
8418                 int ret;
8419                 close(pd[1]);   /* Parent reads from pd[0] */
8420                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8421                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8422                         exit(1);
8423                 signal(SIGALRM, blech);
8424                 alarm(5);
8425                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8426                         exit(2);
8427                 sprintf(string, "%d\n", ret);
8428                 write(2, string, strlen(string));
8429                 alarm(0);
8430 #ifdef EAGAIN
8431                 if (errno == EAGAIN) {
8432                         printf("EAGAIN\n");
8433                         goto ok;
8434                 }
8435 #endif
8436 #ifdef EWOULDBLOCK
8437                 if (errno == EWOULDBLOCK)
8438                         printf("EWOULDBLOCK\n");
8439 #endif
8440         ok:
8441                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8442                 sleep(2);                               /* Give it time to close our pipe */
8443                 alarm(5);
8444                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8445                 alarm(0);
8446                 sprintf(string, "%d\n", ret);
8447                 write(3, string, strlen(string));
8448                 exit(0);
8449         }
8450
8451         close(pd[0]);                   /* We write to pd[1] */
8452         close(pu[1]);                   /* We read from pu[0] */
8453         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8454         close(pd[1]);                   /* Pipe pd is now fully closed! */
8455         exit(0);                                /* Bye bye, thank you for playing! */
8456 }
8457 EOCP
8458         set try
8459         if eval $compile_ok; then
8460                 echo "$startsh" >mtry
8461                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8462                 chmod +x mtry
8463                 ./mtry >/dev/null 2>&1
8464                 case $? in
8465                 0) eagain=`$cat try.out`;;
8466                 1) echo "Could not perform non-blocking setting!";;
8467                 2) echo "I did a successful read() for something that was not there!";;
8468                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8469                 *) echo "Something terribly wrong happened during testing.";;
8470                 esac
8471                 rd_nodata=`$cat try.ret`
8472                 echo "A read() system call with no data present returns $rd_nodata."
8473                 case "$rd_nodata" in
8474                 0|-1) ;;
8475                 *)
8476                         echo "(That's peculiar, fixing that to be -1.)"
8477                         rd_nodata=-1
8478                         ;;
8479                 esac
8480                 case "$eagain" in
8481                 '')
8482                         echo "Forcing errno EAGAIN on read() with no data available."
8483                         eagain=EAGAIN
8484                         ;;
8485                 *)
8486                         echo "Your read() sets errno to $eagain when no data is available."
8487                         ;;
8488                 esac
8489                 status=`$cat try.err`
8490                 case "$status" in
8491                 0) echo "And it correctly returns 0 to signal EOF.";;
8492                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8493                 *) echo "However, your read() returns '$status' on EOF??";;
8494                 esac
8495                 val="$define"
8496                 if test "$status" = "$rd_nodata"; then
8497                         echo "WARNING: you can't distinguish between EOF and no data!"
8498                         val="$undef"
8499                 fi
8500         else
8501                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8502                 eagain=EAGAIN
8503         fi
8504         set d_eofnblk
8505         eval $setvar
8506         ;;
8507 *)
8508         echo "Using $hint value $eagain."
8509         echo "Your read() returns $rd_nodata when no data is present."
8510         case "$d_eofnblk" in
8511         "$define") echo "And you can see EOF because read() returns 0.";;
8512         "$undef") echo "But you can't see EOF status from read() returned value.";;
8513         *)
8514                 echo "(Assuming you can't see EOF status from read anyway.)"
8515                 d_eofnblk=$undef
8516                 ;;
8517         esac
8518         ;;
8519 esac
8520 $rm -f try try.* .out core head.c mtry
8521
8522 : see if fchmod exists
8523 set fchmod d_fchmod
8524 eval $inlibc
8525
8526 : see if fchown exists
8527 set fchown d_fchown
8528 eval $inlibc
8529
8530 : see if this is an fcntl system
8531 set fcntl d_fcntl
8532 eval $inlibc
8533
8534 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8535 while $test $# -ge 2; do
8536         case "$1" in
8537         $define) echo "#include <$2>";;
8538         esac ;
8539     shift 2;
8540 done > try.c;
8541 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8542 set try;
8543 if eval $compile; then
8544         val="$define";
8545 else
8546         val="$undef";
8547 fi;
8548 set $varname;
8549 eval $setvar;
8550 $rm -f try.c try.o'
8551
8552 socketlib=''
8553 sockethdr=''
8554 : see whether socket exists
8555 echo " "
8556 $echo $n "Hmm... $c" >&4
8557 if set socket val -f d_socket; eval $csym; $val; then
8558         echo "Looks like you have Berkeley networking support." >&4
8559         d_socket="$define"
8560         if set setsockopt val -f; eval $csym; $val; then
8561                 d_oldsock="$undef"
8562         else
8563                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8564                 d_oldsock="$define"
8565         fi
8566 else
8567         if $contains socklib libc.list >/dev/null 2>&1; then
8568                 echo "Looks like you have Berkeley networking support." >&4
8569                 d_socket="$define"
8570                 : we will have to assume that it supports the 4.2 BSD interface
8571                 d_oldsock="$undef"
8572         else
8573                 echo "You don't have Berkeley networking in libc$_a..." >&4
8574                 if test "X$d_socket" = "X$define"; then
8575                    echo "...but you seem to believe that you have sockets." >&4
8576                 else
8577                         for net in net socket
8578                         do
8579                                 if test -f /usr/lib/lib$net$_a; then
8580                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8581                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8582                                         if $contains socket libc.list >/dev/null 2>&1; then
8583                                                 d_socket="$define"
8584                                                 socketlib="-l$net"
8585                                                 case "$net" in
8586                                                 net)
8587                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8588                                                         sockethdr="-I/usr/netinclude"
8589                                                         ;;
8590                                                 esac
8591                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8592                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8593                                                         d_oldsock="$undef"
8594                                                 else
8595                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8596                                                         d_oldsock="$define"
8597                                                 fi
8598                                                 break
8599                                         fi
8600                                 fi
8601                         done
8602                         if test "X$d_socket" != "X$define"; then
8603                            echo "or anywhere else I see." >&4
8604                            d_socket="$undef"
8605                            d_oldsock="$undef"
8606                         fi
8607                 fi
8608         fi
8609 fi
8610
8611 : see if socketpair exists
8612 set socketpair d_sockpair
8613 eval $inlibc
8614
8615
8616 echo " "
8617 echo "Checking the availability of certain socket constants..." >& 4
8618 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8619         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8620         $cat >try.c <<EOF
8621 #include <sys/types.h>
8622 #include <sys/socket.h>
8623 int main() {
8624     int i = $ENUM;
8625 }
8626 EOF
8627         val="$undef"
8628         set try; if eval $compile; then
8629                 val="$define"
8630         fi
8631         set d_${enum}; eval $setvar
8632         $rm -f try.c try
8633 done
8634
8635 : see if sys/select.h has to be included
8636 set sys/select.h i_sysselct
8637 eval $inhdr
8638
8639 : see if we should include time.h, sys/time.h, or both
8640 echo " "
8641 if test "X$timeincl" = X; then
8642         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8643         $echo $n "I'm now running the test program...$c"
8644         $cat >try.c <<'EOCP'
8645 #include <sys/types.h>
8646 #ifdef I_TIME
8647 #include <time.h>
8648 #endif
8649 #ifdef I_SYSTIME
8650 #ifdef SYSTIMEKERNEL
8651 #define KERNEL
8652 #endif
8653 #include <sys/time.h>
8654 #endif
8655 #ifdef I_SYSSELECT
8656 #include <sys/select.h>
8657 #endif
8658 int main()
8659 {
8660         struct tm foo;
8661 #ifdef S_TIMEVAL
8662         struct timeval bar;
8663 #endif
8664 #ifdef S_TIMEZONE
8665         struct timezone tzp;
8666 #endif
8667         if (foo.tm_sec == foo.tm_sec)
8668                 exit(0);
8669 #ifdef S_TIMEVAL
8670         if (bar.tv_sec == bar.tv_sec)
8671                 exit(0);
8672 #endif
8673         exit(1);
8674 }
8675 EOCP
8676         flags=''
8677         for s_timezone in '-DS_TIMEZONE' ''; do
8678         sysselect=''
8679         for s_timeval in '-DS_TIMEVAL' ''; do
8680         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8681         for i_time in '' '-DI_TIME'; do
8682         for i_systime in '-DI_SYSTIME' ''; do
8683                 case "$flags" in
8684                 '') $echo $n ".$c"
8685                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8686                         if eval $compile; then
8687                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8688                                 shift
8689                                 flags="$*"
8690                                 echo " "
8691                                 $echo $n "Succeeded with $flags$c"
8692                         fi
8693                         ;;
8694                 esac
8695         done
8696         done
8697         done
8698         done
8699         done
8700         timeincl=''
8701         echo " "
8702         case "$flags" in
8703         *SYSTIMEKERNEL*) i_systimek="$define"
8704                 timeincl=`./findhdr sys/time.h`
8705                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8706         *) i_systimek="$undef";;
8707         esac
8708         case "$flags" in
8709         *I_TIME*) i_time="$define"
8710                 timeincl=`./findhdr time.h`" $timeincl"
8711                 echo "We'll include <time.h>." >&4;;
8712         *) i_time="$undef";;
8713         esac
8714         case "$flags" in
8715         *I_SYSTIME*) i_systime="$define"
8716                 timeincl=`./findhdr sys/time.h`" $timeincl"
8717                 echo "We'll include <sys/time.h>." >&4;;
8718         *) i_systime="$undef";;
8719         esac
8720         $rm -f try.c try
8721 fi
8722
8723 : check for fd_set items
8724 $cat <<EOM
8725
8726 Checking to see how well your C compiler handles fd_set and friends ...
8727 EOM
8728 $cat >fd_set.c <<EOCP
8729 #$i_systime I_SYS_TIME
8730 #$i_sysselct I_SYS_SELECT
8731 #$d_socket HAS_SOCKET
8732 #include <sys/types.h>
8733 #ifdef HAS_SOCKET
8734 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8735 #endif
8736 #ifdef I_SYS_TIME
8737 #include <sys/time.h>
8738 #endif
8739 #ifdef I_SYS_SELECT
8740 #include <sys/select.h>
8741 #endif
8742 int main() {
8743         fd_set fds;
8744
8745 #ifdef TRYBITS
8746         if(fds.fds_bits);
8747 #endif
8748
8749 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8750         exit(0);
8751 #else
8752         exit(1);
8753 #endif
8754 }
8755 EOCP
8756 set fd_set -DTRYBITS
8757 if eval $compile; then
8758         d_fds_bits="$define"
8759         d_fd_set="$define"
8760         echo "Well, your system knows about the normal fd_set typedef..." >&4
8761         if ./fd_set; then
8762                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8763                 d_fd_macros="$define"
8764         else
8765                 $cat >&4 <<'EOM'
8766 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8767 EOM
8768                 d_fd_macros="$undef"
8769         fi
8770 else
8771         $cat <<'EOM'
8772 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8773 EOM
8774         set fd_set
8775         if eval $compile; then
8776                 d_fds_bits="$undef"
8777                 d_fd_set="$define"
8778                 echo "Well, your system has some sort of fd_set available..." >&4
8779                 if ./fd_set; then
8780                         echo "and you have the normal fd_set macros." >&4
8781                         d_fd_macros="$define"
8782                 else
8783                         $cat <<'EOM'
8784 but not the normal fd_set macros!  Gross!  More work for me...
8785 EOM
8786                         d_fd_macros="$undef"
8787                 fi
8788         else
8789         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8790                 d_fd_set="$undef"
8791                 d_fds_bits="$undef"
8792                 d_fd_macros="$undef"
8793         fi
8794 fi
8795 $rm -f fd_set*
8796
8797 : see if fgetpos exists
8798 set fgetpos d_fgetpos
8799 eval $inlibc
8800
8801 : see if flock exists
8802 set flock d_flock
8803 eval $inlibc
8804
8805 : see if fork exists
8806 set fork d_fork
8807 eval $inlibc
8808
8809 : see if pathconf exists
8810 set pathconf d_pathconf
8811 eval $inlibc
8812
8813 : see if fpathconf exists
8814 set fpathconf d_fpathconf
8815 eval $inlibc
8816
8817
8818 : check for off64_t
8819 echo " "
8820 echo "Checking to see if your system supports off64_t..." >&4
8821 $cat >try.c <<EOCP
8822 #include <sys/types.h>
8823 #include <unistd.h>
8824 int main() { off64_t x = 7; }'
8825 EOCP
8826 set try
8827 if eval $compile; then
8828         val="$define"
8829         echo "Yes, it does."
8830 else
8831         val="$undef"
8832         echo "No, it doesn't."
8833         case "$lseeksize" in
8834         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8835         esac
8836 fi
8837 $rm -f try.* try
8838 set d_off64_t
8839 eval $setvar
8840
8841 : check for fpos64_t
8842 echo " "
8843 echo "Checking to see if your system supports fpos64_t..." >&4
8844 $cat >try.c <<EOCP
8845 #include <sys/stdio.h>
8846 int main() { fpos64_t x x = 7; }'
8847 EOCP
8848 set try
8849 if eval $compile; then
8850         val="$define"
8851         echo "Yes, it does."
8852 else
8853         val="$undef"
8854         echo "No, it doesn't."
8855         case "$fpossize" in
8856         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8857         esac
8858 fi
8859 $rm -f try.* try
8860 set d_fpos64_t
8861 eval $setvar
8862
8863 hasstruct='varname=$1; struct=$2; shift; shift;
8864 while $test $# -ge 2; do
8865         case "$1" in
8866         $define) echo "#include <$2>";;
8867         esac ;
8868     shift 2;
8869 done > try.c;
8870 echo "int main () { struct $struct foo; }" >> try.c;
8871 set try;
8872 if eval $compile; then
8873         val="$define";
8874 else
8875         val="$undef";
8876 fi;
8877 set $varname;
8878 eval $setvar;
8879 $rm -f try.c try.o'
8880
8881 : see if this is a sys/param system
8882 set sys/param.h i_sysparam
8883 eval $inhdr
8884
8885 : see if this is a sys/mount.h system
8886 set sys/mount.h i_sysmount
8887 eval $inhdr
8888
8889 : see if sys/types.h has to be included
8890 set sys/types.h i_systypes
8891 eval $inhdr
8892
8893
8894 echo " "
8895 echo "Checking to see if your system supports struct fs_data..." >&4
8896 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8897 eval $hasstruct
8898 case "$d_fs_data_s" in
8899 "$define")      echo "Yes, it does."   ;;
8900 *)              echo "No, it doesn't." ;;
8901 esac
8902
8903 : see if fseeko exists
8904 set fseeko d_fseeko
8905 eval $inlibc
8906 case "$longsize" in
8907 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8908 esac
8909
8910 : see if fsetpos exists
8911 set fsetpos d_fsetpos
8912 eval $inlibc
8913
8914
8915 : see if fstatfs exists
8916 set fstatfs d_fstatfs
8917 eval $inlibc
8918
8919
8920 : see if statvfs exists
8921 set statvfs d_statvfs
8922 eval $inlibc
8923
8924 : see if fstatvfs exists
8925 set fstatvfs d_fstatvfs
8926 eval $inlibc
8927
8928
8929 : see if ftello exists
8930 set ftello d_ftello
8931 eval $inlibc
8932 case "$longsize" in
8933 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8934 esac
8935
8936 : see if getgrent exists
8937 set getgrent d_getgrent
8938 eval $inlibc
8939
8940 : see if gethostbyaddr exists
8941 set gethostbyaddr d_gethbyaddr
8942 eval $inlibc
8943
8944 : see if gethostbyname exists
8945 set gethostbyname d_gethbyname
8946 eval $inlibc
8947
8948 : see if gethostent exists
8949 set gethostent d_gethent
8950 eval $inlibc
8951
8952 : see how we will look up host name
8953 echo " "
8954 call=''
8955 if set gethostname val -f d_gethname; eval $csym; $val; then
8956         echo 'gethostname() found.' >&4
8957         d_gethname="$define"
8958         call=gethostname
8959 fi
8960 if set uname val -f d_uname; eval $csym; $val; then
8961         if ./xenix; then
8962                 $cat <<'EOM'
8963 uname() was found, but you're running xenix, and older versions of xenix
8964 have a broken uname(). If you don't really know whether your xenix is old
8965 enough to have a broken system call, use the default answer.
8966
8967 EOM
8968                 dflt=y
8969                 case "$d_uname" in
8970                 "$define") dflt=n;;
8971                 esac
8972                 rp='Is your uname() broken?'
8973                 . ./myread
8974                 case "$ans" in
8975                 n*) d_uname="$define"; call=uname;;
8976                 esac
8977         else
8978                 echo 'uname() found.' >&4
8979                 d_uname="$define"
8980                 case "$call" in
8981                 '') call=uname ;;
8982                 esac
8983         fi
8984 fi
8985 case "$d_gethname" in
8986 '') d_gethname="$undef";;
8987 esac
8988 case "$d_uname" in
8989 '') d_uname="$undef";;
8990 esac
8991 case "$d_uname$d_gethname" in
8992 *define*)
8993         dflt=n
8994         cat <<EOM
8995  
8996 Every now and then someone has a $call() that lies about the hostname
8997 but can't be fixed for political or economic reasons.  If you wish, I can
8998 pretend $call() isn't there and maybe compute hostname at run-time
8999 thanks to the '$phostname' command.
9000
9001 EOM
9002         rp="Shall I ignore $call() from now on?"
9003         . ./myread
9004         case "$ans" in
9005         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9006         esac;;
9007 esac
9008 case "$phostname" in
9009 '') aphostname='';;
9010 *) case "$aphostname" in
9011         /*) ;;
9012         *) set X $phostname
9013                 shift
9014                 file=$1
9015                 shift
9016                 file=`./loc $file $file $pth`
9017                 aphostname=`echo $file $*`
9018                 ;;
9019         esac
9020         ;;
9021 esac
9022 case "$d_uname$d_gethname" in
9023 *define*) ;;
9024 *)
9025         case "$phostname" in
9026         '')
9027                 echo "There will be no way for $package to get your hostname." >&4;;
9028         *)
9029         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9030                 ;;
9031         esac;;
9032 esac
9033 case "$d_phostname" in
9034 '') d_phostname="$undef";;
9035 esac
9036
9037 : see if this is a netdb.h system
9038 set netdb.h i_netdb
9039 eval $inhdr
9040
9041 : see if prototypes for various gethostxxx netdb.h functions are available
9042 echo " "
9043 set d_gethostprotos gethostent $i_netdb netdb.h
9044 eval $hasproto
9045
9046 : see if getlogin exists
9047 set getlogin d_getlogin
9048 eval $inlibc
9049
9050 : see if getmnt exists
9051 set getmnt d_getmnt
9052 eval $inlibc
9053
9054 : see if getmntent exists
9055 set getmntent d_getmntent
9056 eval $inlibc
9057
9058 : see if getnetbyaddr exists
9059 set getnetbyaddr d_getnbyaddr
9060 eval $inlibc
9061
9062 : see if getnetbyname exists
9063 set getnetbyname d_getnbyname
9064 eval $inlibc
9065
9066 : see if getnetent exists
9067 set getnetent d_getnent
9068 eval $inlibc
9069
9070 : see if prototypes for various getnetxxx netdb.h functions are available
9071 echo " "
9072 set d_getnetprotos getnetent $i_netdb netdb.h
9073 eval $hasproto
9074
9075
9076 : see if getprotobyname exists
9077 set getprotobyname d_getpbyname
9078 eval $inlibc
9079
9080 : see if getprotobynumber exists
9081 set getprotobynumber d_getpbynumber
9082 eval $inlibc
9083
9084 : see if getprotoent exists
9085 set getprotoent d_getpent
9086 eval $inlibc
9087
9088 : see if getpgid exists
9089 set getpgid d_getpgid
9090 eval $inlibc
9091
9092 : see if getpgrp2 exists
9093 set getpgrp2 d_getpgrp2
9094 eval $inlibc
9095
9096 : see if getppid exists
9097 set getppid d_getppid
9098 eval $inlibc
9099
9100 : see if getpriority exists
9101 set getpriority d_getprior
9102 eval $inlibc
9103
9104 : see if prototypes for various getprotoxxx netdb.h functions are available
9105 echo " "
9106 set d_getprotoprotos getprotoent $i_netdb netdb.h
9107 eval $hasproto
9108
9109 : see if getpwent exists
9110 set getpwent d_getpwent
9111 eval $inlibc
9112
9113
9114 : see if getservbyname exists
9115 set getservbyname d_getsbyname
9116 eval $inlibc
9117
9118 : see if getservbyport exists
9119 set getservbyport d_getsbyport
9120 eval $inlibc
9121
9122 : see if getservent exists
9123 set getservent d_getsent
9124 eval $inlibc
9125
9126 : see if prototypes for various getservxxx netdb.h functions are available
9127 echo " "
9128 set d_getservprotos getservent $i_netdb netdb.h
9129 eval $hasproto
9130
9131 : see if getspent exists
9132 set getspent d_getspent
9133 eval $inlibc
9134
9135 : see if getspnam exists
9136 set getspnam d_getspnam
9137 eval $inlibc
9138
9139 : see if gettimeofday or ftime exists
9140 set gettimeofday d_gettimeod
9141 eval $inlibc
9142 case "$d_gettimeod" in
9143 "$undef")
9144         set ftime d_ftime 
9145         eval $inlibc
9146         ;;
9147 *)
9148         val="$undef"; set d_ftime; eval $setvar
9149         ;;
9150 esac
9151 case "$d_gettimeod$d_ftime" in
9152 "$undef$undef")
9153         echo " "
9154         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9155         ;;
9156 esac
9157
9158 : see if this is an grp system
9159 set grp.h i_grp
9160 eval $inhdr
9161
9162 case "$i_grp" in
9163 $define)
9164         xxx=`./findhdr grp.h`
9165         $cppstdin $cppflags $cppminus < $xxx >$$.h
9166
9167         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9168                 val="$define"
9169         else
9170                 val="$undef"
9171         fi
9172         set d_grpasswd
9173         eval $setvar
9174
9175         $rm -f $$.h
9176         ;;
9177 *)
9178         val="$undef";
9179         set d_grpasswd; eval $setvar
9180         ;;
9181 esac
9182
9183 : see if hasmntopt exists
9184 set hasmntopt d_hasmntopt
9185 eval $inlibc
9186
9187 : see if this is a netinet/in.h or sys/in.h system
9188 set netinet/in.h i_niin sys/in.h i_sysin
9189 eval $inhdr
9190
9191 : see if arpa/inet.h has to be included
9192 set arpa/inet.h i_arpainet
9193 eval $inhdr
9194
9195 : see if htonl --and friends-- exists
9196 val=''
9197 set htonl val
9198 eval $inlibc
9199
9200 : Maybe they are macros.
9201 case "$val" in
9202 $undef)
9203         $cat >htonl.c <<EOM
9204 #include <stdio.h>
9205 #include <sys/types.h>
9206 #$i_niin I_NETINET_IN
9207 #$i_sysin I_SYS_IN
9208 #$i_arpainet I_ARPA_INET
9209 #ifdef I_NETINET_IN
9210 #include <netinet/in.h>
9211 #endif
9212 #ifdef I_SYS_IN
9213 #include <sys/in.h>
9214 #endif
9215 #ifdef I_ARPA_INET
9216 #include <arpa/inet.h>
9217 #endif
9218 #ifdef htonl
9219 printf("Defined as a macro.");
9220 #endif
9221 EOM
9222         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9223         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9224                 val="$define"
9225                 echo "But it seems to be defined as a macro." >&4
9226         fi
9227         $rm -f htonl.?
9228         ;;
9229 esac
9230 set d_htonl
9231 eval $setvar
9232
9233 : see if iconv exists
9234 set iconv d_iconv
9235 eval $inlibc
9236
9237 : index or strchr
9238 echo " "
9239 if set index val -f; eval $csym; $val; then
9240         if set strchr val -f d_strchr; eval $csym; $val; then
9241                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9242                         val="$define"
9243                         vali="$undef"
9244                         echo "strchr() found." >&4
9245                 else
9246                         val="$undef"
9247                         vali="$define"
9248                         echo "index() found." >&4
9249                 fi
9250         else
9251                 val="$undef"
9252                 vali="$define"
9253                 echo "index() found." >&4
9254         fi
9255 else
9256         if set strchr val -f d_strchr; eval $csym; $val; then
9257                 val="$define"
9258                 vali="$undef"
9259                 echo "strchr() found." >&4
9260         else
9261                 echo "No index() or strchr() found!" >&4
9262                 val="$undef"
9263                 vali="$undef"
9264         fi
9265 fi
9266 set d_strchr; eval $setvar
9267 val="$vali"
9268 set d_index; eval $setvar
9269
9270 : check whether inet_aton exists
9271 set inet_aton d_inetaton
9272 eval $inlibc
9273
9274 : Look for isascii
9275 echo " "
9276 $cat >isascii.c <<'EOCP'
9277 #include <stdio.h>
9278 #include <ctype.h>
9279 int main() {
9280         int c = 'A';
9281         if (isascii(c))
9282                 exit(0);
9283         else
9284                 exit(1);
9285 }
9286 EOCP
9287 set isascii
9288 if eval $compile; then
9289         echo "isascii() found." >&4
9290         val="$define"
9291 else
9292         echo "isascii() NOT found." >&4
9293         val="$undef"
9294 fi
9295 set d_isascii
9296 eval $setvar
9297 $rm -f isascii*
9298
9299 : see if killpg exists
9300 set killpg d_killpg
9301 eval $inlibc
9302
9303 : see if lchown exists
9304 echo " "
9305 $cat > try.c <<'EOCP'
9306 /* System header to define __stub macros and hopefully few prototypes,
9307     which can conflict with char lchown(); below.  */
9308 #include <assert.h>
9309 /* Override any gcc2 internal prototype to avoid an error.  */
9310 /* We use char because int might match the return type of a gcc2
9311    builtin and then its argument prototype would still apply.  */
9312 char lchown();
9313 int main() {
9314     /*  The GNU C library defines this for functions which it implements
9315         to always fail with ENOSYS.  Some functions are actually named
9316         something starting with __ and the normal name is an alias.  */
9317 #if defined (__stub_lchown) || defined (__stub___lchown)
9318 choke me
9319 #else
9320 lchown();
9321 #endif
9322 ; return 0; }
9323 EOCP
9324 set try
9325 if eval $compile; then
9326     $echo "lchown() found." >&4
9327     val="$define"
9328 else
9329     $echo "lchown() NOT found." >&4
9330     val="$undef"
9331 fi
9332 set d_lchown
9333 eval $setvar
9334
9335 : See if number of significant digits in a double precision number is known
9336 echo " "
9337 $cat >ldbl_dig.c <<EOM
9338 #$i_limits I_LIMITS
9339 #$i_float I_FLOAT
9340 #ifdef I_LIMITS
9341 #include <limits.h>
9342 #endif
9343 #ifdef I_FLOAT
9344 #include <float.h>
9345 #endif
9346 #ifdef LDBL_DIG
9347 printf("Contains LDBL_DIG");
9348 #endif
9349 EOM
9350 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9351 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9352         echo "LDBL_DIG found." >&4
9353         val="$define"
9354 else
9355         echo "LDBL_DIG NOT found." >&4
9356         val="$undef"
9357 fi
9358 $rm -f ldbl_dig.?
9359 set d_ldbl_dig
9360 eval $setvar
9361
9362 : see if link exists
9363 set link d_link
9364 eval $inlibc
9365
9366 : see if localeconv exists
9367 set localeconv d_locconv
9368 eval $inlibc
9369
9370 : see if lockf exists
9371 set lockf d_lockf
9372 eval $inlibc
9373
9374 : check for long long
9375 echo " "
9376 $echo $n "Checking to see if your system supports long long..." $c >&4
9377 echo 'int main() { long long x = 7; return 0; }' > try.c
9378 set try
9379 if eval $compile; then
9380         val="$define"
9381         echo " Yes, it does." >&4
9382 else
9383         val="$undef"
9384         echo " No, it doesn't." >&4
9385 fi
9386 $rm try.*
9387 set d_longlong
9388 eval $setvar
9389
9390 : check for length of long long
9391 case "${d_longlong}${longlongsize}" in
9392 $define)
9393         echo " "
9394         $echo $n "Checking to see how big your long longs are..." $c >&4
9395         $cat >try.c <<'EOCP'
9396 #include <stdio.h>
9397 int main()
9398 {
9399     printf("%d\n", (int)sizeof(long long));
9400     return(0);
9401 }
9402 EOCP
9403         set try
9404         if eval $compile_ok; then
9405                 longlongsize=`./try$exe_ext`
9406                 $echo " $longlongsize bytes." >&4
9407         else
9408                 dflt='8'
9409                 echo " "
9410                 echo "(I can't seem to compile the test program.  Guessing...)"
9411                 rp="What is the size of a long long (in bytes)?"
9412                 . ./myread
9413                 longlongsize="$ans"
9414         fi
9415         if $test "X$longsize" = "X$longlongsize"; then
9416                 echo "(That isn't any different from an ordinary long.)"
9417         fi      
9418         ;;
9419 esac
9420 $rm -f try.* try
9421
9422 : see if lstat exists
9423 set lstat d_lstat
9424 eval $inlibc
9425
9426 : see if mblen exists
9427 set mblen d_mblen
9428 eval $inlibc
9429
9430 : see if mbstowcs exists
9431 set mbstowcs d_mbstowcs
9432 eval $inlibc
9433
9434 : see if mbtowc exists
9435 set mbtowc d_mbtowc
9436 eval $inlibc
9437
9438 : see if memchr exists
9439 set memchr d_memchr
9440 eval $inlibc
9441
9442 : see if memcmp exists
9443 set memcmp d_memcmp
9444 eval $inlibc
9445
9446 : see if memcpy exists
9447 set memcpy d_memcpy
9448 eval $inlibc
9449
9450 : see if memmove exists
9451 set memmove d_memmove
9452 eval $inlibc
9453
9454 : see if memset exists
9455 set memset d_memset
9456 eval $inlibc
9457
9458 : see if mkdir exists
9459 set mkdir d_mkdir
9460 eval $inlibc
9461
9462 : see if mkfifo exists
9463 set mkfifo d_mkfifo
9464 eval $inlibc
9465
9466 : see if mktime exists
9467 set mktime d_mktime
9468 eval $inlibc
9469
9470 : see if msgctl exists
9471 set msgctl d_msgctl
9472 eval $inlibc
9473
9474 : see if msgget exists
9475 set msgget d_msgget
9476 eval $inlibc
9477
9478 : see if msgsnd exists
9479 set msgsnd d_msgsnd
9480 eval $inlibc
9481
9482 : see if msgrcv exists
9483 set msgrcv d_msgrcv
9484 eval $inlibc
9485
9486 : see how much of the 'msg*(2)' library is present.
9487 h_msg=true
9488 echo " "
9489 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9490 *"$undef"*) h_msg=false;;
9491 esac
9492 case "$osname" in
9493 freebsd)
9494     case "`ipcs 2>&1`" in
9495     "SVID messages"*"not configured"*)
9496         echo "Your $osname does not have the msg*(2) configured." >&4
9497         h_msg=false
9498         val="$undef"
9499         set msgctl d_msgctl
9500         eval $setvar
9501         set msgget d_msgget
9502         eval $setvar
9503         set msgsnd d_msgsnd
9504         eval $setvar
9505         set msgrcv d_msgrcv
9506         eval $setvar
9507         ;;
9508     esac
9509     ;;
9510 esac
9511 : we could also check for sys/ipc.h ...
9512 if $h_msg && $test `./findhdr sys/msg.h`; then
9513         echo "You have the full msg*(2) library." >&4
9514         val="$define"
9515 else
9516         echo "You don't have the full msg*(2) library." >&4
9517         val="$undef"
9518 fi
9519 set d_msg
9520 eval $setvar
9521
9522 : see if nice exists
9523 set nice d_nice
9524 eval $inlibc
9525
9526 : see if inttypes.h is available
9527 : we want a real compile instead of Inhdr because some systems
9528 : have an inttypes.h which includes non-existent headers
9529 echo " "
9530 $cat >try.c <<EOCP
9531 #include <inttypes.h>
9532 int main() {
9533         static int32_t foo32 = 0x12345678;
9534 }
9535 EOCP
9536 set try
9537 if eval $compile; then
9538         echo "<inttypes.h> found." >&4
9539         val="$define"
9540 else
9541         echo "<inttypes.h> NOT found." >&4
9542         val="$undef"
9543 fi
9544 $rm -f try.c try
9545 set i_inttypes
9546 eval $setvar
9547
9548 : check for int64_t
9549 echo " "
9550 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9551 $cat >try.c <<EOCP
9552 #include <sys/types.h>
9553 #$i_inttypes I_INTTYPES
9554 #ifdef I_INTTYPES
9555 #include <inttypes.h>
9556 #endif
9557 int main() { int64_t x = 7; }
9558 EOCP
9559 set try
9560 if eval $compile; then
9561         val="$define"
9562         echo " Yes, it does." >&4
9563 else
9564         val="$undef"
9565         echo " No, it doesn't." >&4
9566 fi
9567 $rm -f try try.*
9568 set d_int64t
9569 eval $setvar
9570
9571
9572 echo " "
9573 echo "Checking which 64-bit integer type we could use..." >&4
9574
9575 case "$intsize" in
9576 8) val=int
9577    set quadtype
9578    eval $setvar
9579    val='"unsigned int"'
9580    set uquadtype
9581    eval $setvar
9582    quadkind=1
9583    ;;
9584 *) case "$longsize" in
9585    8) val=long
9586       set quadtype
9587       eval $setvar
9588       val='"unsigned long"'
9589       set uquadtype
9590       eval $setvar
9591       quadkind=2
9592       ;;
9593    *) case "$d_longlong:$longlongsize" in
9594       define:8)
9595         val='"long long"'
9596         set quadtype
9597         eval $setvar
9598         val='"unsigned long long"'
9599         set uquadtype
9600         eval $setvar
9601         quadkind=3
9602         ;;
9603       *) case "$d_int64t" in
9604          define)
9605            val=int64_t
9606            set quadtype
9607            eval $setvar
9608            val=uint64_t
9609            set uquadtype
9610            eval $setvar
9611            quadkind=4
9612            ;;
9613          esac
9614          ;;
9615       esac
9616       ;;
9617    esac
9618    ;;
9619 esac
9620
9621 case "$quadtype" in
9622 '')     case "$uselonglong:$d_longlong:$longlongsize" in
9623         undef:define:8)
9624            echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9625         *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9626         esac
9627         d_quad="$undef"
9628         ;;
9629 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9630             verb="will"
9631         else
9632             verb="could"
9633         fi
9634         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9635         d_quad="$define"
9636         ;;
9637 esac
9638
9639 : check for length of character
9640 echo " "
9641 case "$charsize" in
9642 '')
9643         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9644         $cat >try.c <<'EOCP'
9645 #include <stdio.h>
9646 int main()
9647 {
9648     printf("%d\n", (int)sizeof(char));
9649     exit(0);
9650 }
9651 EOCP
9652         set try
9653         if eval $compile_ok; then
9654                 dflt=`./try`
9655         else
9656                 dflt='1'
9657                 echo "(I can't seem to compile the test program.  Guessing...)"
9658         fi
9659         ;;
9660 *)
9661         dflt="$charsize"
9662         ;;
9663 esac
9664 rp="What is the size of a character (in bytes)?"
9665 . ./myread
9666 charsize="$ans"
9667 $rm -f try.c try
9668
9669
9670 echo " "
9671 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9672
9673 case "$use64bits:$d_quad:$quadtype" in
9674 define:define:?*)
9675         ivtype="$quadtype"
9676         uvtype="$uquadtype"
9677         ivsize=8
9678         uvsize=8
9679         ;;
9680 *)      ivtype="long"
9681         uvtype="unsigned long"
9682         ivsize=$longsize
9683         uvsize=$longsize
9684         ;;
9685 esac
9686
9687 case "$uselongdouble:$d_longdbl" in
9688 define:define)
9689         nvtype="long double"
9690         nvsize=$longdblsize
9691         ;;
9692 *)      nvtype=double
9693         nvsize=$doublesize
9694         ;;
9695 esac
9696
9697 $echo "(IV will be "$ivtype", $ivsize bytes)"
9698 $echo "(UV will be "$uvtype", $uvsize bytes)"
9699 $echo "(NV will be "$nvtype", $nvsize bytes)"
9700
9701 $cat >try.c <<EOCP
9702 #$i_inttypes I_INTTYPES
9703 #ifdef I_INTTYPES
9704 #include <inttypes.h>
9705 #endif
9706 #include <stdio.h>
9707 int main() {
9708 #ifdef INT8
9709    int8_t i =  INT8_MAX;
9710   uint8_t u = UINT8_MAX;
9711   printf("int8_t\n");
9712 #endif
9713 #ifdef INT16
9714    int16_t i =  INT16_MAX;
9715   uint16_t i = UINT16_MAX;
9716   printf("int16_t\n");
9717 #endif
9718 #ifdef INT32
9719    int32_t i =  INT32_MAX;
9720   uint32_t u = UINT32_MAX;
9721   printf("int32_t\n");
9722 #endif
9723 }
9724 EOCP
9725
9726 case "$i8type" in
9727 '')     case "$charsize" in
9728         1)      i8type=char
9729                 u8type="unsigned char"
9730                 i8size=$charsize
9731                 u8size=$charsize
9732                 ;;
9733         esac
9734         ;;
9735 esac
9736 case "$i8type" in
9737 '')     set try -DINT8
9738         if eval $compile; then
9739                 case "`./try$exe_ext`" in
9740                 int8_t) i8type=int8_t
9741                         u8type=uint8_t
9742                         i8size=1
9743                         u8size=1
9744                         ;;
9745                 esac
9746         fi
9747         ;;
9748 esac
9749 case "$i8type" in
9750 '')     if $test $charsize -ge 1; then
9751                 i8type=char
9752                 u8type="unsigned char"
9753                 i8size=$charsize
9754                 u8size=$charsize
9755         fi
9756         ;;
9757 esac
9758
9759 case "$i16type" in
9760 '')     case "$shortsize" in
9761         2)      i16type=short
9762                 u16type="unsigned short"
9763                 i16size=$shortsize
9764                 u16size=$shortsize
9765                 ;;
9766         esac
9767         ;;
9768 esac
9769 case "$i16type" in
9770 '')     set try -DINT16
9771         if eval $compile; then
9772                 case "`./try$exe_ext`" in
9773                 int16_t)
9774                         i16type=int16_t
9775                         u16type=uint16_t
9776                         i16size=2
9777                         u16size=2
9778                         ;;
9779                 esac
9780         fi
9781         ;;
9782 esac
9783 case "$i16type" in
9784 '')     if $test $shortsize -ge 2; then
9785                 i16type=short
9786                 u16type="unsigned short"
9787                 i16size=$shortsize
9788                 u16size=$shortsize
9789         fi
9790         ;;
9791 esac
9792
9793 case "$i32type" in
9794 '')     case "$longsize" in
9795         4)      i32type=long
9796                 u32type="unsigned long"
9797                 i32size=$longsize
9798                 u32size=$longsize
9799                 ;;
9800         *)      case "$intsize" in
9801                 4)      i32type=int
9802                         u32type="unsigned int"
9803                         i32size=$intsize
9804                         u32size=$intsize
9805                         ;;
9806                 esac
9807                 ;;
9808         esac
9809         ;;
9810 esac
9811 case "$i32type" in
9812 '')     set try -DINT32
9813         if eval $compile; then
9814                 case "`./try$exe_ext`" in
9815                 int32_t)
9816                         i32type=int32_t
9817                         u32type=uint32_t
9818                         i32size=4
9819                         u32size=4
9820                         ;;
9821                 esac
9822         fi
9823         ;;
9824 esac
9825 case "$i32type" in
9826 '')     if $test $intsize -ge 4; then
9827                 i32type=int
9828                 u32type="unsigned int"
9829                 i32size=$intsize
9830                 u32size=$intsize
9831         fi
9832         ;;
9833 esac
9834
9835 case "$i64type" in
9836 '')     case "$d_quad:$quadtype" in
9837         define:?*)
9838                 i64type="$quadtype"
9839                 u64type="$uquadtype"
9840                 i64size=8
9841                 u64size=8
9842                 ;;
9843         esac
9844         ;;
9845 esac
9846
9847 $echo "Checking whether your NVs can preserve your UVs..." >&4
9848 $cat <<EOP >try.c
9849 #include <stdio.h>
9850 int main() {
9851     $uvtype k = ($uvtype)~0, l;
9852     $nvtype d;
9853     l = k;
9854     d = ($nvtype)l;
9855     l = ($uvtype)d;
9856     if (l == k)
9857        printf("preserve\n");
9858     exit(0);
9859 }
9860 EOP
9861 set try
9862 if eval $compile; then
9863         case "`./try$exe_ext`" in
9864         preserve) d_nv_preserves_uv="$define" ;;
9865         esac
9866 fi      
9867 case "$d_nv_preserves_uv" in
9868 $define) $echo "Yes, they can."  2>&1 ;;
9869 *)       $echo "No, they can't." 2>&1
9870          d_nv_preserves_uv="$undef"
9871          ;;
9872 esac
9873
9874 $rm -f try.* try
9875
9876 : see if POSIX threads are available
9877 set pthread.h i_pthread
9878 eval $inhdr
9879
9880
9881
9882
9883 : how to create joinable pthreads
9884 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9885         echo " "
9886         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9887         $cat >try.c <<'EOCP'
9888 #include <pthread.h>
9889 int main() {
9890     int detachstate = JOINABLE;
9891 }
9892 EOCP
9893         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9894         if eval $compile; then
9895                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9896                 val="$undef" # Yes, undef.
9897                 set d_old_pthread_create_joinable
9898                 eval $setvar
9899                 val=""
9900                 set old_pthread_create_joinable
9901                 eval $setvar
9902         else
9903                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9904                 if eval $compile; then
9905                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9906                         val="$define"
9907                         set d_old_pthread_create_joinable
9908                         eval $setvar
9909                         val=PTHREAD_CREATE_UNDETACHED
9910                         set old_pthread_create_joinable
9911                         eval $setvar
9912                 else            
9913                         set try -DJOINABLE=__UNDETACHED
9914                         if eval $compile; then
9915                                 echo "You seem to use __UNDETACHED." >&4
9916                                 val="$define"
9917                                 set d_old_pthread_create_joinable
9918                                 eval $setvar
9919                                 val=__UNDETACHED
9920                                 set old_pthread_create_joinable
9921                                 eval $setvar
9922                         else
9923                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9924                                 val="$define"
9925                                 set d_old_pthread_create_joinable
9926                                 eval $setvar
9927                                 val=0
9928                                 set old_pthread_create_joinable
9929                                 eval $setvar
9930                         fi
9931                 fi
9932         fi
9933         $rm -f try try.*
9934 else
9935     d_old_pthread_create_joinable="$undef"
9936     old_pthread_create_joinable=""
9937 fi
9938
9939 : see if pause exists
9940 set pause d_pause
9941 eval $inlibc
9942
9943 : see if pipe exists
9944 set pipe d_pipe
9945 eval $inlibc
9946
9947 : see if poll exists
9948 set poll d_poll
9949 eval $inlibc
9950
9951
9952 : see whether the various POSIXish _yields exist
9953 $cat >try.c <<EOP
9954 #include <pthread.h>
9955 #include <stdio.h>
9956 int main() {
9957 #ifdef SCHED_YIELD
9958         sched_yield();
9959 #else
9960 #ifdef PTHREAD_YIELD
9961         pthread_yield();
9962 #else
9963 #ifdef PTHREAD_YIELD_NULL
9964         pthread_yield(NULL);
9965 #endif
9966 #endif
9967 #endif
9968 }
9969 EOP
9970 : see if sched_yield exists
9971 set try -DSCHED_YIELD
9972 if eval $compile; then
9973     val="$define"
9974     sched_yield='sched_yield()'
9975 else
9976     val="$undef"
9977 fi
9978 case "$usethreads" in
9979 $define)
9980         case "$val" in
9981         $define) echo 'sched_yield() found.' >&4        ;;
9982         *)       echo 'sched_yield() NOT found.' >&4    ;;
9983         esac
9984 esac
9985 set d_sched_yield
9986 eval $setvar
9987
9988 : see if pthread_yield exists
9989 set try -DPTHREAD_YIELD
9990 if eval $compile; then
9991     val="$define"
9992     case "$sched_yield" in
9993     '') sched_yield='pthread_yield()' ;;
9994     esac
9995 else
9996     set try -DPTHREAD_YIELD_NULL
9997     if eval $compile; then
9998         val="$define"
9999         case "$sched_yield" in
10000         '') sched_yield='pthread_yield(NULL)' ;;
10001         esac
10002     else
10003         val="$undef"
10004     fi
10005 fi
10006 case "$usethreads" in
10007 $define)
10008         case "$val" in
10009         $define) echo 'pthread_yield() found.' >&4      ;;
10010         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10011         esac
10012         ;;
10013 esac
10014 set d_pthread_yield
10015 eval $setvar
10016
10017 case "$sched_yield" in
10018 '') sched_yield=undef ;;
10019 esac
10020
10021 $rm -f try try.*
10022
10023 : see if this is a pwd.h system
10024 set pwd.h i_pwd
10025 eval $inhdr
10026
10027 case "$i_pwd" in
10028 $define)
10029         xxx=`./findhdr pwd.h`
10030         $cppstdin $cppflags $cppminus < $xxx >$$.h
10031
10032         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10033                 val="$define"
10034         else
10035                 val="$undef"
10036         fi
10037         set d_pwquota
10038         eval $setvar
10039
10040         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10041                 val="$define"
10042         else
10043                 val="$undef"
10044         fi
10045         set d_pwage
10046         eval $setvar
10047
10048         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10049                 val="$define"
10050         else
10051                 val="$undef"
10052         fi
10053         set d_pwchange
10054         eval $setvar
10055
10056         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10057                 val="$define"
10058         else
10059                 val="$undef"
10060         fi
10061         set d_pwclass
10062         eval $setvar
10063
10064         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10065                 val="$define"
10066         else
10067                 val="$undef"
10068         fi
10069         set d_pwexpire
10070         eval $setvar
10071
10072         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10073                 val="$define"
10074         else
10075                 val="$undef"
10076         fi
10077         set d_pwcomment
10078         eval $setvar
10079
10080         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10081                 val="$define"
10082         else
10083                 val="$undef"
10084         fi
10085         set d_pwgecos
10086         eval $setvar
10087
10088         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10089                 val="$define"
10090         else
10091                 val="$undef"
10092         fi
10093         set d_pwpasswd
10094         eval $setvar
10095
10096         $rm -f $$.h
10097         ;;
10098 *)
10099         val="$undef"; 
10100         set d_pwquota; eval $setvar
10101         set d_pwage; eval $setvar
10102         set d_pwchange; eval $setvar
10103         set d_pwclass; eval $setvar
10104         set d_pwexpire; eval $setvar
10105         set d_pwcomment; eval $setvar
10106         set d_pwgecos; eval $setvar
10107         set d_pwpasswd; eval $setvar
10108         ;;
10109 esac
10110
10111 : see if readdir and friends exist
10112 set readdir d_readdir
10113 eval $inlibc
10114 set seekdir d_seekdir
10115 eval $inlibc
10116 set telldir d_telldir
10117 eval $inlibc
10118 set rewinddir d_rewinddir
10119 eval $inlibc
10120
10121 : see if readlink exists
10122 set readlink d_readlink
10123 eval $inlibc
10124
10125 : see if rename exists
10126 set rename d_rename
10127 eval $inlibc
10128
10129 : see if rmdir exists
10130 set rmdir d_rmdir
10131 eval $inlibc
10132
10133 : see if memory.h is available.
10134 val=''
10135 set memory.h val
10136 eval $inhdr
10137
10138 : See if it conflicts with string.h
10139 case "$val" in
10140 $define)
10141         case "$strings" in
10142         '') ;;
10143         *)
10144                 $cppstdin $cppflags $cppminus < $strings > mem.h
10145                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10146                         echo " "
10147                         echo "We won't be including <memory.h>."
10148                         val="$undef"
10149                 fi
10150                 $rm -f mem.h
10151                 ;;
10152         esac
10153 esac
10154 set i_memory
10155 eval $setvar
10156
10157 : can bcopy handle overlapping blocks?
10158 val="$undef"
10159 case "$d_bcopy" in
10160 "$define")
10161         echo " "
10162         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10163         $cat >try.c <<EOCP
10164 #$i_memory I_MEMORY
10165 #$i_stdlib I_STDLIB
10166 #$i_string I_STRING
10167 #$i_unistd I_UNISTD
10168 EOCP
10169         $cat >>try.c <<'EOCP'
10170 #include <stdio.h>
10171 #ifdef I_MEMORY
10172 #  include <memory.h>
10173 #endif
10174 #ifdef I_STDLIB
10175 #  include <stdlib.h>
10176 #endif
10177 #ifdef I_STRING
10178 #  include <string.h>
10179 #else
10180 #  include <strings.h>
10181 #endif
10182 #ifdef I_UNISTD
10183 #  include <unistd.h>  /* Needed for NetBSD */
10184 #endif
10185 int main()
10186 {
10187 char buf[128], abc[128];
10188 char *b;
10189 int len;
10190 int off;
10191 int align;
10192
10193 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10194
10195 for (align = 7; align >= 0; align--) {
10196         for (len = 36; len; len--) {
10197                 b = buf+align;
10198                 bcopy(abc, b, len);
10199                 for (off = 1; off <= len; off++) {
10200                         bcopy(b, b+off, len);
10201                         bcopy(b+off, b, len);
10202                         if (bcmp(b, abc, len))
10203                                 exit(1);
10204                 }
10205         }
10206 }
10207 exit(0);
10208 }
10209 EOCP
10210         set try
10211         if eval $compile_ok; then
10212                 if ./try 2>/dev/null; then
10213                         echo "Yes, it can."
10214                         val="$define"
10215                 else
10216                         echo "It can't, sorry."
10217                         case "$d_memmove" in
10218                         "$define") echo "But that's Ok since you have memmove()." ;;
10219                         esac
10220                 fi
10221         else
10222                 echo "(I can't compile the test program, so we'll assume not...)"
10223                 case "$d_memmove" in
10224                 "$define") echo "But that's Ok since you have memmove()." ;;
10225                 esac
10226         fi
10227         ;;
10228 esac
10229 $rm -f try.* try core
10230 set d_safebcpy
10231 eval $setvar
10232
10233 : can memcpy handle overlapping blocks?
10234 val="$undef"
10235 case "$d_memcpy" in
10236 "$define")
10237         echo " "
10238         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10239         $cat >try.c <<EOCP
10240 #$i_memory I_MEMORY
10241 #$i_stdlib I_STDLIB
10242 #$i_string I_STRING
10243 #$i_unistd I_UNISTD
10244 EOCP
10245         $cat >>try.c <<'EOCP'
10246 #include <stdio.h>
10247 #ifdef I_MEMORY
10248 #  include <memory.h>
10249 #endif
10250 #ifdef I_STDLIB
10251 #  include <stdlib.h>
10252 #endif
10253 #ifdef I_STRING
10254 #  include <string.h>
10255 #else
10256 #  include <strings.h>
10257 #endif
10258 #ifdef I_UNISTD
10259 #  include <unistd.h>  /* Needed for NetBSD */
10260 #endif
10261 int main()
10262 {
10263 char buf[128], abc[128];
10264 char *b;
10265 int len;
10266 int off;
10267 int align;
10268
10269 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10270    try to store the string in read-only memory. */
10271 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10272
10273 for (align = 7; align >= 0; align--) {
10274         for (len = 36; len; len--) {
10275                 b = buf+align;
10276                 memcpy(b, abc, len);
10277                 for (off = 1; off <= len; off++) {
10278                         memcpy(b+off, b, len);
10279                         memcpy(b, b+off, len);
10280                         if (memcmp(b, abc, len))
10281                                 exit(1);
10282                 }
10283         }
10284 }
10285 exit(0);
10286 }
10287 EOCP
10288         set try
10289         if eval $compile_ok; then
10290                 if ./try 2>/dev/null; then
10291                         echo "Yes, it can."
10292                         val="$define"
10293                 else
10294                         echo "It can't, sorry."
10295                         case "$d_memmove" in
10296                         "$define") echo "But that's Ok since you have memmove()." ;;
10297                         esac
10298                 fi
10299         else
10300                 echo "(I can't compile the test program, so we'll assume not...)"
10301                 case "$d_memmove" in
10302                 "$define") echo "But that's Ok since you have memmove()." ;;
10303                 esac
10304         fi
10305         ;;
10306 esac
10307 $rm -f try.* try core
10308 set d_safemcpy
10309 eval $setvar
10310
10311 : can memcmp be trusted to compare relative magnitude?
10312 val="$undef"
10313 case "$d_memcmp" in
10314 "$define")
10315         echo " "
10316         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10317         $cat >try.c <<EOCP
10318 #$i_memory I_MEMORY
10319 #$i_stdlib I_STDLIB
10320 #$i_string I_STRING
10321 #$i_unistd I_UNISTD
10322 EOCP
10323         $cat >>try.c <<'EOCP'
10324 #include <stdio.h>
10325 #ifdef I_MEMORY
10326 #  include <memory.h>
10327 #endif
10328 #ifdef I_STDLIB
10329 #  include <stdlib.h>
10330 #endif
10331 #ifdef I_STRING
10332 #  include <string.h>
10333 #else
10334 #  include <strings.h>
10335 #endif
10336 #ifdef I_UNISTD
10337 #  include <unistd.h>  /* Needed for NetBSD */
10338 #endif
10339 int main()
10340 {
10341 char a = -1;
10342 char b = 0;
10343 if ((a < b) && memcmp(&a, &b, 1) < 0)
10344         exit(1);
10345 exit(0);
10346 }
10347 EOCP
10348         set try
10349         if eval $compile_ok; then
10350                 if ./try 2>/dev/null; then
10351                         echo "Yes, it can."
10352                         val="$define"
10353                 else
10354                         echo "No, it can't (it uses signed chars)."
10355                 fi
10356         else
10357                 echo "(I can't compile the test program, so we'll assume not...)"
10358         fi
10359         ;;
10360 esac
10361 $rm -f try.* try core
10362 set d_sanemcmp
10363 eval $setvar
10364
10365 : see if select exists
10366 set select d_select
10367 eval $inlibc
10368
10369 : see if semctl exists
10370 set semctl d_semctl
10371 eval $inlibc
10372
10373 : see if semget exists
10374 set semget d_semget
10375 eval $inlibc
10376
10377 : see if semop exists
10378 set semop d_semop
10379 eval $inlibc
10380
10381 : see how much of the 'sem*(2)' library is present.
10382 h_sem=true
10383 echo " "
10384 case "$d_semctl$d_semget$d_semop" in
10385 *"$undef"*) h_sem=false;;
10386 esac
10387 case "$osname" in
10388 freebsd)
10389     case "`ipcs 2>&1`" in
10390     "SVID messages"*"not configured"*)
10391         echo "Your $osname does not have the sem*(2) configured." >&4
10392         h_sem=false
10393         val="$undef"
10394         set semctl d_semctl
10395         eval $setvar
10396         set semget d_semget
10397         eval $setvar
10398         set semop d_semop
10399         eval $setvar
10400         ;;
10401     esac
10402     ;;
10403 esac
10404 : we could also check for sys/ipc.h ...
10405 if $h_sem && $test `./findhdr sys/sem.h`; then
10406         echo "You have the full sem*(2) library." >&4
10407         val="$define"
10408 else
10409         echo "You don't have the full sem*(2) library." >&4
10410         val="$undef"
10411 fi
10412 set d_sem
10413 eval $setvar
10414
10415 : see whether sys/sem.h defines union semun
10416 echo " "
10417 $cat > try.c <<'END'
10418 #include <sys/types.h>
10419 #include <sys/ipc.h>
10420 #include <sys/sem.h>
10421 int main () { union semun semun; semun.buf = 0; }
10422 END
10423 set try
10424 if eval $compile; then
10425     echo "You have union semun in <sys/sem.h>." >&4
10426     val="$define"
10427 else
10428     echo "You do not have union semun in <sys/sem.h>." >&4
10429     val="$undef"
10430 fi
10431 $rm -f try try.c try.h
10432 set d_union_semun
10433 eval $setvar
10434
10435 : see how to do semctl IPC_STAT
10436 case "$d_sem" in
10437 $define)
10438     : see whether semctl IPC_STAT can use union semun
10439     echo " "
10440     $cat > try.h <<END
10441 #ifndef S_IRUSR
10442 #   ifdef S_IREAD
10443 #       define S_IRUSR S_IREAD
10444 #       define S_IWUSR S_IWRITE
10445 #       define S_IXUSR S_IEXEC
10446 #   else
10447 #       define S_IRUSR 0400
10448 #       define S_IWUSR 0200
10449 #       define S_IXUSR 0100
10450 #   endif
10451 #   define S_IRGRP (S_IRUSR>>3)
10452 #   define S_IWGRP (S_IWUSR>>3)
10453 #   define S_IXGRP (S_IXUSR>>3)
10454 #   define S_IROTH (S_IRUSR>>6)
10455 #   define S_IWOTH (S_IWUSR>>6)
10456 #   define S_IXOTH (S_IXUSR>>6)
10457 #endif
10458 #ifndef S_IRWXU
10459 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10460 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10461 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10462 #endif
10463 END
10464
10465     $cat > try.c <<END
10466 #include <sys/types.h>
10467 #include <sys/ipc.h>
10468 #include <sys/sem.h>
10469 #include <sys/stat.h>
10470 #include <stdio.h>
10471 #include <errno.h>
10472 #include "try.h"
10473 #ifndef errno
10474 extern int errno;
10475 #endif
10476 #$d_union_semun HAS_UNION_SEMUN
10477 int main() {
10478     union semun
10479 #ifndef HAS_UNION_SEMUN
10480     {
10481         int val;
10482         struct semid_ds *buf;
10483         unsigned short *array;
10484     }
10485 #endif
10486     arg;
10487     int sem, st;
10488
10489 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10490     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10491     if (sem > -1) {
10492         struct semid_ds argbuf;
10493         arg.buf = &argbuf;
10494 #       ifdef IPC_STAT
10495         st = semctl(sem, 0, IPC_STAT, arg);
10496         if (st == 0)
10497             printf("semun\n");
10498         else
10499 #       endif /* IPC_STAT */
10500             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10501 #       ifdef IPC_RMID
10502         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10503 #       endif /* IPC_RMID */
10504             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10505     } else
10506 #endif /* IPC_PRIVATE && ... */
10507         printf("semget failed: errno = %d\n", errno);
10508   return 0;
10509 }
10510 END
10511     val="$undef"
10512     set try
10513     if eval $compile; then
10514         xxx=`./try`
10515         case "$xxx" in
10516         semun) val="$define" ;;
10517         esac
10518     fi
10519     $rm -f try try.c
10520     set d_semctl_semun
10521     eval $setvar
10522     case "$d_semctl_semun" in
10523     $define)
10524         echo "You can use union semun for semctl IPC_STAT." >&4
10525         also='also'
10526         ;;
10527     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10528         also=''
10529         ;;
10530     esac
10531
10532     : see whether semctl IPC_STAT can use struct semid_ds pointer
10533     $cat > try.c <<'END'
10534 #include <sys/types.h>
10535 #include <sys/ipc.h>
10536 #include <sys/sem.h>
10537 #include <sys/stat.h>
10538 #include "try.h"
10539 #include <stdio.h>
10540 #include <errno.h>
10541 #ifndef errno
10542 extern int errno;
10543 #endif
10544 int main() {
10545     struct semid_ds arg;
10546     int sem, st;
10547
10548 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10549     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10550     if (sem > -1) {
10551 #       ifdef IPC_STAT
10552         st = semctl(sem, 0, IPC_STAT, &arg);
10553         if (st == 0)
10554             printf("semid_ds\n");
10555         else
10556 #       endif /* IPC_STAT */
10557             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10558 #       ifdef IPC_RMID
10559         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10560 #       endif /* IPC_RMID */
10561             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10562     } else
10563 #endif /* IPC_PRIVATE && ... */
10564         printf("semget failed: errno = %d\n", errno);
10565
10566     return 0;
10567 }
10568 END
10569     val="$undef"
10570     set try
10571     if eval $compile; then
10572         xxx=`./try`
10573         case "$xxx" in
10574         semid_ds) val="$define" ;;
10575         esac
10576     fi
10577     $rm -f try try.c
10578     set d_semctl_semid_ds
10579     eval $setvar
10580     case "$d_semctl_semid_ds" in
10581     $define)
10582         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10583         ;;
10584     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10585         ;;
10586     esac
10587     $rm -f try.h
10588     ;;
10589 *)  val="$undef"
10590
10591     # We do not have the full sem*(2) library, so assume we can not
10592     # use either.
10593
10594     set d_semctl_semun
10595     eval $setvar
10596
10597     set d_semctl_semid_ds
10598     eval $setvar
10599     ;;
10600 esac
10601
10602 : see if setegid exists
10603 set setegid d_setegid
10604 eval $inlibc
10605
10606 : see if seteuid exists
10607 set seteuid d_seteuid
10608 eval $inlibc
10609
10610 : see if setgrent exists
10611 set setgrent d_setgrent
10612 eval $inlibc
10613
10614 : see if sethostent exists
10615 set sethostent d_sethent
10616 eval $inlibc
10617
10618 : see if setlinebuf exists
10619 set setlinebuf d_setlinebuf
10620 eval $inlibc
10621
10622 : see if setlocale exists
10623 set setlocale d_setlocale
10624 eval $inlibc
10625
10626 : see if setnetent exists
10627 set setnetent d_setnent
10628 eval $inlibc
10629
10630 : see if setprotoent exists
10631 set setprotoent d_setpent
10632 eval $inlibc
10633
10634 : see if setpgid exists
10635 set setpgid d_setpgid
10636 eval $inlibc
10637
10638 : see if setpgrp2 exists
10639 set setpgrp2 d_setpgrp2
10640 eval $inlibc
10641
10642 : see if setpriority exists
10643 set setpriority d_setprior
10644 eval $inlibc
10645
10646 : see if setpwent exists
10647 set setpwent d_setpwent
10648 eval $inlibc
10649
10650 : see if setregid exists
10651 set setregid d_setregid
10652 eval $inlibc
10653 set setresgid d_setresgid
10654 eval $inlibc
10655
10656 : see if setreuid exists
10657 set setreuid d_setreuid
10658 eval $inlibc
10659 set setresuid d_setresuid
10660 eval $inlibc
10661
10662 : see if setrgid exists
10663 set setrgid d_setrgid
10664 eval $inlibc
10665
10666 : see if setruid exists
10667 set setruid d_setruid
10668 eval $inlibc
10669
10670 : see if setservent exists
10671 set setservent d_setsent
10672 eval $inlibc
10673
10674 : see if setsid exists
10675 set setsid d_setsid
10676 eval $inlibc
10677
10678 : see if setspent exists
10679 set setspent d_setspent
10680 eval $inlibc
10681
10682 : see if setvbuf exists
10683 set setvbuf d_setvbuf
10684 eval $inlibc
10685
10686 : see if sfio.h is available
10687 set sfio.h i_sfio
10688 eval $inhdr
10689
10690
10691 : see if sfio library is available
10692 case "$i_sfio" in
10693 $define)
10694         val=''
10695         set sfreserve val
10696         eval $inlibc
10697         ;;
10698 *)
10699         val="$undef"
10700         ;;
10701 esac
10702 : Ok, but do we want to use it.
10703 case "$val" in
10704 $define)
10705         case "$usesfio" in
10706         true|$define|[yY]*) dflt='y';;
10707         *) dflt='n';;
10708         esac
10709         echo "$package can use the sfio library, but it is experimental."
10710         rp="You seem to have sfio available, do you want to try using it?"
10711         . ./myread
10712         case "$ans" in
10713         y|Y) ;;
10714         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10715                 val="$undef"
10716                 : Remove sfio from list of libraries to use
10717                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10718                 shift
10719                 libs="$*"
10720                 echo "libs = $libs" >&4
10721                 ;;
10722         esac
10723         ;;
10724 *)      case "$usesfio" in
10725         true|$define|[yY]*)
10726                 echo "Sorry, cannot find sfio on this machine" >&4
10727                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10728                 ;;
10729         esac
10730         ;;
10731 esac
10732 set d_sfio
10733 eval $setvar
10734 case "$d_sfio" in
10735 $define) usesfio='true';;
10736 *) usesfio='false';;
10737 esac
10738
10739 : see if shmctl exists
10740 set shmctl d_shmctl
10741 eval $inlibc
10742
10743 : see if shmget exists
10744 set shmget d_shmget
10745 eval $inlibc
10746
10747 : see if shmat exists
10748 set shmat d_shmat
10749 eval $inlibc
10750 : see what shmat returns
10751 case "$d_shmat" in
10752 "$define")
10753         $cat >shmat.c <<'END'
10754 #include <sys/shm.h>
10755 void *shmat();
10756 END
10757         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10758                 shmattype='void *'
10759         else
10760                 shmattype='char *'
10761         fi
10762         echo "and it returns ($shmattype)." >&4
10763         : see if a prototype for shmat is available
10764         xxx=`./findhdr sys/shm.h`
10765         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10766         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10767                 val="$define"
10768         else
10769                 val="$undef"
10770         fi
10771         $rm -f shmat.[co]
10772         ;;
10773 *)
10774         val="$undef"
10775         ;;
10776 esac
10777 set d_shmatprototype
10778 eval $setvar
10779
10780 : see if shmdt exists
10781 set shmdt d_shmdt
10782 eval $inlibc
10783
10784 : see how much of the 'shm*(2)' library is present.
10785 h_shm=true
10786 echo " "
10787 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10788 *"$undef"*) h_shm=false;;
10789 esac
10790 case "$osname" in
10791 freebsd)
10792     case "`ipcs 2>&1`" in
10793     "SVID shared memory"*"not configured"*)
10794         echo "Your $osname does not have the shm*(2) configured." >&4
10795         h_shm=false
10796         val="$undef"
10797         set shmctl d_shmctl
10798         evat $setvar
10799         set shmget d_shmget
10800         evat $setvar
10801         set shmat d_shmat
10802         evat $setvar
10803         set shmdt d_shmdt
10804         evat $setvar
10805         ;;
10806     esac
10807     ;;
10808 esac
10809 : we could also check for sys/ipc.h ...
10810 if $h_shm && $test `./findhdr sys/shm.h`; then
10811         echo "You have the full shm*(2) library." >&4
10812         val="$define"
10813 else
10814         echo "You don't have the full shm*(2) library." >&4
10815         val="$undef"
10816 fi
10817 set d_shm
10818 eval $setvar
10819
10820 echo " "
10821 : see if we have sigaction
10822 if set sigaction val -f d_sigaction; eval $csym; $val; then
10823         echo 'sigaction() found.' >&4
10824         $cat > try.c <<'EOP'
10825 #include <stdio.h>
10826 #include <sys/types.h>
10827 #include <signal.h>
10828 int main()
10829 {
10830     struct sigaction act, oact;
10831     act.sa_flags = 0;
10832     oact.sa_handler = 0;
10833     /* so that act and oact are used */
10834     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10835 }
10836 EOP
10837         set try
10838         if eval $compile_ok; then
10839                 val="$define"
10840         else
10841                 echo "But you don't seem to have a useable struct sigaction." >&4
10842                 val="$undef"
10843         fi
10844 else
10845         echo 'sigaction NOT found.' >&4
10846         val="$undef"
10847 fi
10848 set d_sigaction; eval $setvar
10849 $rm -f try try$_o try.c
10850
10851 : see if sigsetjmp exists
10852 echo " "
10853 case "$d_sigsetjmp" in
10854 '')
10855         $cat >try.c <<'EOP'
10856 #include <setjmp.h>
10857 sigjmp_buf env;
10858 int set = 1;
10859 int main()
10860 {
10861         if (sigsetjmp(env,1))
10862                 exit(set);
10863         set = 0;
10864         siglongjmp(env, 1);
10865         exit(1);
10866 }
10867 EOP
10868         set try
10869         if eval $compile; then
10870                 if ./try >/dev/null 2>&1; then
10871                         echo "POSIX sigsetjmp found." >&4
10872                         val="$define"
10873                 else
10874                         $cat >&4 <<EOM
10875 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10876 I'll ignore them.
10877 EOM
10878                         val="$undef"
10879                 fi
10880         else
10881                 echo "sigsetjmp not found." >&4
10882                 val="$undef"
10883         fi
10884         ;;
10885 *) val="$d_sigsetjmp"
10886         case "$d_sigsetjmp" in
10887         $define) echo "POSIX sigsetjmp found." >&4;;
10888         $undef) echo "sigsetjmp not found." >&4;;
10889         esac
10890         ;;
10891 esac
10892 set d_sigsetjmp
10893 eval $setvar
10894 $rm -f try.c try
10895
10896 : see if sys/stat.h is available
10897 set sys/stat.h i_sysstat
10898 eval $inhdr
10899
10900
10901 : see if stat knows about block sizes
10902 echo " "
10903 echo "Checking to see if your struct stat has st_blocks field..." >&4
10904 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10905 eval $hasfield
10906
10907
10908 : see if this is a sys/vfs.h system
10909 set sys/vfs.h i_sysvfs
10910 eval $inhdr
10911
10912
10913 : see if this is a sys/statfs.h system
10914 set sys/statfs.h i_sysstatfs
10915 eval $inhdr
10916
10917
10918 echo " "
10919 echo "Checking to see if your system supports struct statfs..." >&4
10920 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
10921 eval $hasstruct
10922 case "$d_statfs_s" in
10923 "$define")      echo "Yes, it does."   ;;
10924 *)              echo "No, it doesn't." ;;
10925 esac
10926
10927
10928
10929 : see if struct statfs knows about f_flags
10930 case "$d_statfs_s" in
10931 define) 
10932         echo " "
10933         echo "Checking to see if your struct statfs has f_flags field..." >&4
10934         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
10935         eval $hasfield
10936         ;;
10937 *)      val="$undef"
10938         set d_statfs_f_flags
10939         eval $setvar
10940         ;;
10941 esac
10942 case "$d_statfs_f_flags" in
10943 "$define")      echo "Yes, it does."   ;;
10944 *)              echo "No, it doesn't." ;;
10945 esac
10946
10947 : see if _ptr and _cnt from stdio act std
10948 echo " "
10949 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10950         echo "(Looks like you have stdio.h from Linux.)"
10951         case "$stdio_ptr" in
10952         '') stdio_ptr='((fp)->_IO_read_ptr)'
10953                 ptr_lval=$define
10954                 ;;
10955         *)      ptr_lval=$d_stdio_ptr_lval;;
10956         esac
10957         case "$stdio_cnt" in
10958         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10959                 cnt_lval=$undef
10960                 ;;
10961         *)      cnt_lval=$d_stdio_cnt_lval;;
10962         esac
10963         case "$stdio_base" in
10964         '') stdio_base='((fp)->_IO_read_base)';;
10965         esac
10966         case "$stdio_bufsiz" in
10967         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10968         esac
10969 else
10970         case "$stdio_ptr" in
10971         '') stdio_ptr='((fp)->_ptr)'
10972                 ptr_lval=$define
10973                 ;;
10974         *)      ptr_lval=$d_stdio_ptr_lval;;
10975         esac
10976         case "$stdio_cnt" in
10977         '') stdio_cnt='((fp)->_cnt)'
10978                 cnt_lval=$define
10979                 ;;
10980         *)      cnt_lval=$d_stdio_cnt_lval;;
10981         esac
10982         case "$stdio_base" in
10983         '') stdio_base='((fp)->_base)';;
10984         esac
10985         case "$stdio_bufsiz" in
10986         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10987         esac
10988 fi
10989 : test whether _ptr and _cnt really work
10990 echo "Checking how std your stdio is..." >&4
10991 $cat >try.c <<EOP
10992 #include <stdio.h>
10993 #define FILE_ptr(fp)    $stdio_ptr
10994 #define FILE_cnt(fp)    $stdio_cnt
10995 int main() {
10996         FILE *fp = fopen("try.c", "r");
10997         char c = getc(fp);
10998         if (
10999                 18 <= FILE_cnt(fp) &&
11000                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11001         )
11002                 exit(0);
11003         exit(1);
11004 }
11005 EOP
11006 val="$undef"
11007 set try
11008 if eval $compile; then
11009         if ./try; then
11010                 echo "Your stdio acts pretty std."
11011                 val="$define"
11012         else
11013                 echo "Your stdio isn't very std."
11014         fi
11015 else
11016         echo "Your stdio doesn't appear very std."
11017 fi
11018 $rm -f try.c try
11019 set d_stdstdio
11020 eval $setvar
11021
11022 : Can _ptr be used as an lvalue?
11023 case "$d_stdstdio$ptr_lval" in
11024 $define$define) val=$define ;;
11025 *) val=$undef ;;
11026 esac
11027 set d_stdio_ptr_lval
11028 eval $setvar
11029
11030 : Can _cnt be used as an lvalue?
11031 case "$d_stdstdio$cnt_lval" in
11032 $define$define) val=$define ;;
11033 *) val=$undef ;;
11034 esac
11035 set d_stdio_cnt_lval
11036 eval $setvar
11037
11038 : see if _base is also standard
11039 val="$undef"
11040 case "$d_stdstdio" in
11041 $define)
11042         $cat >try.c <<EOP
11043 #include <stdio.h>
11044 #define FILE_base(fp)   $stdio_base
11045 #define FILE_bufsiz(fp) $stdio_bufsiz
11046 int main() {
11047         FILE *fp = fopen("try.c", "r");
11048         char c = getc(fp);
11049         if (
11050                 19 <= FILE_bufsiz(fp) &&
11051                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11052         )
11053                 exit(0);
11054         exit(1);
11055 }
11056 EOP
11057         set try
11058         if eval $compile; then
11059                 if ./try; then
11060                         echo "And its _base field acts std."
11061                         val="$define"
11062                 else
11063                         echo "But its _base field isn't std."
11064                 fi
11065         else
11066                 echo "However, it seems to be lacking the _base field."
11067         fi
11068         $rm -f try.c try
11069         ;;
11070 esac
11071 set d_stdiobase
11072 eval $setvar
11073
11074 $cat >&4 <<EOM
11075 Checking how to access stdio streams by file descriptor number...
11076 EOM
11077 case "$stdio_stream_array" in
11078 '')     $cat >try.c <<EOCP
11079 #include <stdio.h>
11080 int main() {
11081   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11082     printf("yes\n");
11083 }
11084 EOCP
11085         for s in _iob __iob __sF
11086         do
11087                 set try -DSTDIO_STREAM_ARRAY=$s
11088                 if eval $compile; then
11089                         case "`./try$exe_ext`" in
11090                         yes)    stdio_stream_array=$s; break ;;
11091                         esac
11092                 fi
11093         done
11094         $rm -f try.* try$exe_ext
11095 esac
11096 case "$stdio_stream_array" in
11097 '')     $cat >&4 <<EOM
11098 I can't figure out how to access stdio streams by file descriptor number.
11099 EOM
11100         d_stdio_stream_array="$undef"
11101         ;;
11102 *)      $cat >&4 <<EOM
11103 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11104 EOM
11105         d_stdio_stream_array="$define"
11106         ;;
11107 esac
11108
11109 : see if strcoll exists
11110 set strcoll d_strcoll
11111 eval $inlibc
11112
11113 : check for structure copying
11114 echo " "
11115 echo "Checking to see if your C compiler can copy structs..." >&4
11116 $cat >try.c <<'EOCP'
11117 int main()
11118 {
11119         struct blurfl {
11120                 int dyick;
11121         } foo, bar;
11122
11123         foo = bar;
11124 }
11125 EOCP
11126 if $cc -c try.c >/dev/null 2>&1 ; then
11127         val="$define"
11128         echo "Yup, it can."
11129 else
11130         val="$undef"
11131         echo "Nope, it can't."
11132 fi
11133 set d_strctcpy
11134 eval $setvar
11135 $rm -f try.*
11136
11137 : see if strerror and/or sys_errlist[] exist
11138 echo " "
11139 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11140     if set strerror val -f d_strerror; eval $csym; $val; then
11141                 echo 'strerror() found.' >&4
11142                 d_strerror="$define"
11143                 d_strerrm='strerror(e)'
11144                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11145                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11146                         d_syserrlst="$define"
11147                 else
11148                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11149                         d_syserrlst="$undef"
11150                 fi
11151     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11152                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11153                 echo 'strerror() found in string header.' >&4
11154                 d_strerror="$define"
11155                 d_strerrm='strerror(e)'
11156                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11157                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11158                                 d_syserrlst="$define"
11159                 else
11160                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11161                         d_syserrlst="$undef"
11162                 fi
11163     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11164                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11165                 d_strerror="$undef"
11166                 d_syserrlst="$define"
11167                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11168     else
11169                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11170                 d_strerror="$undef"
11171                 d_syserrlst="$undef"
11172                 d_strerrm='"unknown"'
11173     fi
11174 fi
11175
11176 : see if strtod exists
11177 set strtod d_strtod
11178 eval $inlibc
11179
11180 : see if strtol exists
11181 set strtol d_strtol
11182 eval $inlibc
11183
11184 : see if strtold exists
11185 set strtold d_strtold
11186 eval $inlibc
11187
11188 : see if strtoll exists
11189 set strtoll d_strtoll
11190 eval $inlibc
11191
11192 : see if strtoul exists
11193 set strtoul d_strtoul
11194 eval $inlibc
11195
11196 : see if strtoull exists
11197 set strtoull d_strtoull
11198 eval $inlibc
11199
11200 : see if strtouq exists
11201 set strtouq d_strtouq
11202 eval $inlibc
11203
11204 : see if strxfrm exists
11205 set strxfrm d_strxfrm
11206 eval $inlibc
11207
11208 : see if symlink exists
11209 set symlink d_symlink
11210 eval $inlibc
11211
11212 : see if syscall exists
11213 set syscall d_syscall
11214 eval $inlibc
11215
11216 : see if sysconf exists
11217 set sysconf d_sysconf
11218 eval $inlibc
11219
11220 : see if system exists
11221 set system d_system
11222 eval $inlibc
11223
11224 : see if tcgetpgrp exists
11225 set tcgetpgrp d_tcgetpgrp
11226 eval $inlibc
11227
11228 : see if tcsetpgrp exists
11229 set tcsetpgrp d_tcsetpgrp
11230 eval $inlibc
11231
11232 : see if prototype for telldir is available
11233 echo " "
11234 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11235 eval $hasproto
11236
11237 : see if this is a sys/times.h system
11238 set sys/times.h i_systimes
11239 eval $inhdr
11240
11241 : see if times exists
11242 echo " "
11243 if set times val -f d_times; eval $csym; $val; then
11244         echo 'times() found.' >&4
11245         d_times="$define"
11246         inc=''
11247         case "$i_systimes" in
11248         "$define") inc='sys/times.h';;
11249         esac
11250         rp="What is the type returned by times() on this system?"
11251         set clock_t clocktype long stdio.h sys/types.h $inc
11252         eval $typedef_ask
11253 else
11254         echo 'times() NOT found, hope that will do.' >&4
11255         d_times="$undef"
11256         clocktype='int'
11257 fi
11258
11259 : see if truncate exists
11260 set truncate d_truncate
11261 eval $inlibc
11262
11263 : see if tzname[] exists
11264 echo " "
11265 if set tzname val -a d_tzname; eval $csym; $val; then
11266         val="$define"
11267         echo 'tzname[] found.' >&4
11268 else
11269         val="$undef"
11270         echo 'tzname[] NOT found.' >&4
11271 fi
11272 set d_tzname
11273 eval $setvar
11274
11275 : see if umask exists
11276 set umask d_umask
11277 eval $inlibc
11278
11279 : see if ustat exists
11280 set ustat d_ustat
11281 eval $inlibc
11282
11283 : backward compatibility for d_hvfork
11284 if test X$d_hvfork != X; then
11285         d_vfork="$d_hvfork"
11286         d_hvfork=''
11287 fi
11288 : see if there is a vfork
11289 val=''
11290 set vfork val
11291 eval $inlibc
11292
11293 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11294 : perl on Solaris 2.x, and probably elsewhere.
11295 case "$val" in
11296 $define)
11297         echo " "
11298         case "$usevfork" in
11299         false) dflt='n';;
11300         *) dflt='y';;
11301         esac
11302         cat <<'EOM'
11303  
11304 Perl can only use a vfork() that doesn't suffer from strict
11305 restrictions on calling functions or modifying global data in
11306 the child.  For example, glibc-2.1 contains such a vfork()
11307 that is unsuitable.  If your system provides a proper fork()
11308 call, chances are that you do NOT want perl to use vfork().
11309
11310 EOM
11311         rp="Do you still want to use vfork()?"
11312         . ./myread
11313         case "$ans" in
11314         y|Y) ;;
11315         *)
11316                 echo "Ok, we won't use vfork()."
11317                 val="$undef"
11318                 ;;
11319         esac
11320         ;;
11321 esac
11322 set d_vfork
11323 eval $setvar
11324 case "$d_vfork" in
11325 $define) usevfork='true';;
11326 *) usevfork='false';;
11327 esac
11328
11329 : see if this is an sysdir system
11330 set sys/dir.h i_sysdir
11331 eval $inhdr
11332
11333 : see if this is an sysndir system
11334 set sys/ndir.h i_sysndir
11335 eval $inhdr
11336
11337 : see if closedir exists
11338 set closedir d_closedir
11339 eval $inlibc
11340
11341 case "$d_closedir" in
11342 "$define")
11343         echo " "
11344         echo "Checking whether closedir() returns a status..." >&4
11345         cat > closedir.c <<EOM
11346 #$i_dirent I_DIRENT             /**/
11347 #$i_sysdir I_SYS_DIR            /**/
11348 #$i_sysndir I_SYS_NDIR          /**/
11349 #$i_systypes I_SYS_TYPES        /**/
11350
11351 #if defined(I_SYS_TYPES)
11352 #include <sys/types.h>
11353 #endif
11354 #if defined(I_DIRENT)
11355 #include <dirent.h>
11356 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11357 #include <sys/dir.h>
11358 #endif
11359 #else
11360 #ifdef I_SYS_NDIR
11361 #include <sys/ndir.h>
11362 #else
11363 #ifdef I_SYS_DIR
11364 #ifdef hp9000s500
11365 #include <ndir.h>       /* may be wrong in the future */
11366 #else
11367 #include <sys/dir.h>
11368 #endif
11369 #endif
11370 #endif
11371 #endif 
11372 int main() { return closedir(opendir(".")); }
11373 EOM
11374         set closedir
11375         if eval $compile_ok; then
11376                 if ./closedir > /dev/null 2>&1 ; then
11377                         echo "Yes, it does."
11378                         val="$undef"
11379                 else
11380                         echo "No, it doesn't."
11381                         val="$define"
11382                 fi
11383         else
11384                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11385                 val="$define"
11386         fi
11387         ;;
11388 *)
11389         val="$undef";
11390         ;;
11391 esac
11392 set d_void_closedir
11393 eval $setvar
11394 $rm -f closedir*
11395 : check for volatile keyword
11396 echo " "
11397 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11398 $cat >try.c <<'EOCP'
11399 int main()
11400 {
11401         typedef struct _goo_struct goo_struct;
11402         goo_struct * volatile goo = ((goo_struct *)0);
11403         struct _goo_struct {
11404                 long long_int;
11405                 int reg_int;
11406                 char char_var;
11407         };
11408         typedef unsigned short foo_t;
11409         char *volatile foo;
11410         volatile int bar;
11411         volatile foo_t blech;
11412         foo = foo;
11413 }
11414 EOCP
11415 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11416         val="$define"
11417         echo "Yup, it does."
11418 else
11419         val="$undef"
11420         echo "Nope, it doesn't."
11421 fi
11422 set d_volatile
11423 eval $setvar
11424 $rm -f try.*
11425
11426 : see if there is a wait4
11427 set wait4 d_wait4
11428 eval $inlibc
11429
11430 : see if waitpid exists
11431 set waitpid d_waitpid
11432 eval $inlibc
11433
11434 : see if wcstombs exists
11435 set wcstombs d_wcstombs
11436 eval $inlibc
11437
11438 : see if wctomb exists
11439 set wctomb d_wctomb
11440 eval $inlibc
11441
11442 : preserve RCS keywords in files with variable substitution, grrr
11443 Date='$Date'
11444 Id='$Id'
11445 Log='$Log'
11446 RCSfile='$RCSfile'
11447 Revision='$Revision'
11448
11449 case "$crosscompile" in
11450 ''|[nN]*) crosscompile="$undef" ;;
11451 esac
11452
11453 case "$osname" in
11454 next|rhapsody) multiarch="$define" ;;
11455 esac
11456 case "$multiarch" in
11457 ''|[nN]*) multiarch="$undef" ;;
11458 esac
11459
11460 : check for alignment requirements
11461 echo " "
11462 case "$crosscompile$multiarch" in
11463 *$define*)
11464         $cat <<EOM
11465 You seem to be either cross-compiling or doing a multiarchitecture build,
11466 skipping the memory alignment check.
11467
11468 EOM
11469         case "$alignbytes" in
11470         '') alignbytes=8 ;;
11471         esac
11472         ;;
11473 *)
11474         case "$alignbytes" in
11475         '') echo "Checking alignment constraints..." >&4
11476                 $cat >try.c <<'EOCP'
11477 #include <stdio.h>
11478 struct foobar {
11479         char foo;
11480         double bar;
11481 } try_algn;
11482 int main()
11483 {
11484     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11485     return(0);
11486 }
11487 EOCP
11488                 set try
11489                 if eval $compile_ok; then
11490                         dflt=`./try`
11491                 else
11492                         dflt='8'
11493                         echo "(I can't seem to compile the test program...)"
11494                 fi
11495                 ;;
11496         *) dflt="$alignbytes"
11497                 ;;
11498         esac
11499         rp="Doubles must be aligned on a how-many-byte boundary?"
11500         . ./myread
11501         alignbytes="$ans"
11502         $rm -f try.c try
11503         ;;
11504 esac
11505
11506
11507 : check for ordering of bytes in a long
11508 echo " "
11509 case "$crosscompile$multiarch" in
11510 *$define*)
11511         $cat <<EOM
11512 You seem to be either cross-compiling or doing a multiarchitecture build,
11513 skipping the byteorder check.
11514
11515 EOM
11516         byteorder='0xffff'
11517         ;;
11518 *)
11519         case "$byteorder" in
11520         '')
11521                 $cat <<'EOM'
11522 In the following, larger digits indicate more significance.  A big-endian
11523 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11524 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11525 machines may have weird orders like 3412.  A Cray will report 87654321,
11526 an Alpha will report 12345678. If the test program works the default is
11527 probably right.
11528 I'm now running the test program...
11529 EOM
11530                 $cat >try.c <<'EOCP'
11531 #include <stdio.h>
11532 int main()
11533 {
11534         int i;
11535         union {
11536                 unsigned long l;
11537                 char c[sizeof(long)];
11538         } u;
11539
11540         if (sizeof(long) > 4)
11541                 u.l = (0x08070605L << 32) | 0x04030201L;
11542         else
11543                 u.l = 0x04030201L;
11544         for (i = 0; i < sizeof(long); i++)
11545                 printf("%c", u.c[i]+'0');
11546         printf("\n");
11547         exit(0);
11548 }
11549 EOCP
11550                 xxx_prompt=y
11551                 set try
11552                 if eval $compile && ./try > /dev/null; then
11553                         dflt=`./try`
11554                         case "$dflt" in
11555                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11556                                 echo "(The test program ran ok.)"
11557                                 echo "byteorder=$dflt"
11558                                 xxx_prompt=n
11559                         ;;
11560                         ????|????????) echo "(The test program ran ok.)" ;;
11561                         *) echo "(The test program didn't run right for some reason.)" ;;
11562                         esac
11563                 else
11564                         dflt='4321'
11565                         cat <<'EOM'
11566 (I can't seem to compile the test program.  Guessing big-endian...)
11567 EOM
11568                 fi
11569                 case "$xxx_prompt" in
11570                 y)
11571                         rp="What is the order of bytes in a long?"
11572                         . ./myread
11573                         byteorder="$ans"
11574                         ;;
11575                 *)      byteorder=$dflt
11576                         ;;
11577                 esac
11578                 ;;
11579         esac
11580         $rm -f try.c try
11581         ;;
11582 esac
11583
11584
11585 : how do we catenate cpp tokens here?
11586 echo " "
11587 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11588 $cat >cpp_stuff.c <<'EOCP'
11589 #define RCAT(a,b)a/**/b
11590 #define ACAT(a,b)a ## b
11591 RCAT(Rei,ser)
11592 ACAT(Cir,cus)
11593 EOCP
11594 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11595 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11596         echo "Oh!  Smells like ANSI's been here." >&4
11597         echo "We can catify or stringify, separately or together!"
11598         cpp_stuff=42
11599 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11600         echo "Ah, yes!  The good old days!" >&4
11601         echo "However, in the good old days we don't know how to stringify and"
11602         echo "catify at the same time."
11603         cpp_stuff=1
11604 else
11605         $cat >&4 <<EOM
11606 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11607 to have to edit the values of CAT[2-5] in config.h...
11608 EOM
11609         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11610 fi
11611 $rm -f cpp_stuff.*
11612
11613 : see if this is a db.h system
11614 set db.h i_db
11615 eval $inhdr
11616
11617 case "$i_db" in
11618 $define)
11619         : Check db version.
11620         echo " "
11621         echo "Checking Berkeley DB version ..." >&4
11622         $cat >try.c <<EOCP
11623 #$d_const HASCONST
11624 #ifndef HASCONST
11625 #define const
11626 #endif
11627 #include <sys/types.h>
11628 #include <stdio.h>
11629 #include <db.h>
11630 int main()
11631 {
11632 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11633     int Major, Minor, Patch ;
11634     unsigned long Version ;
11635     (void)db_version(&Major, &Minor, &Patch) ;
11636     printf("You have Berkeley DB Version 2 or greater\n");
11637
11638     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11639                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11640     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11641                 Major, Minor, Patch) ;
11642
11643     /* check that db.h & libdb are compatible */
11644     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11645         printf("db.h and libdb are incompatible\n") ;
11646         exit(3);        
11647     }
11648
11649     printf("db.h and libdb are compatible\n") ;
11650
11651     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11652                 + DB_VERSION_PATCH ;
11653
11654     /* needs to be >= 2.3.4 */
11655     if (Version < 2003004) {
11656     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11657         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11658         exit(2);        
11659     }
11660
11661     exit(0);
11662 #else
11663 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11664     printf("You have Berkeley DB Version 1\n");
11665     exit(0);    /* DB version < 2: the coast is clear. */
11666 #else
11667     exit(1);    /* <db.h> not Berkeley DB? */
11668 #endif
11669 #endif
11670 }
11671 EOCP
11672         set try
11673         if eval $compile_ok && ./try; then
11674                 echo 'Looks OK.' >&4
11675         else
11676                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11677                 i_db=$undef
11678                 case " $libs " in
11679                 *"-ldb "*)
11680                         : Remove db from list of libraries to use
11681                         echo "Removing unusable -ldb from library list" >&4
11682                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11683                         shift
11684                         libs="$*"
11685                         echo "libs = $libs" >&4
11686                         ;;
11687                 esac
11688         fi
11689         $rm -f try.*
11690         ;;
11691 esac
11692
11693 case "$i_db" in
11694 define)
11695         : Check the return type needed for hash 
11696         echo " "
11697         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11698         $cat >try.c <<EOCP
11699 #$d_const HASCONST
11700 #ifndef HASCONST
11701 #define const
11702 #endif
11703 #include <sys/types.h>
11704 #include <db.h>
11705
11706 #ifndef DB_VERSION_MAJOR
11707 u_int32_t hash_cb (ptr, size)
11708 const void *ptr;
11709 size_t size;
11710 {
11711 }
11712 HASHINFO info;
11713 int main()
11714 {
11715         info.hash = hash_cb;
11716 }
11717 #endif
11718 EOCP
11719         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11720                 if $contains warning try.out >>/dev/null 2>&1 ; then
11721                         db_hashtype='int'
11722                 else
11723                         db_hashtype='u_int32_t'
11724                 fi
11725         else
11726                 : XXX Maybe we should just give up here.
11727                 db_hashtype=u_int32_t
11728                 $cat try.out >&4
11729                 echo "Help:  I can't seem to compile the db test program." >&4
11730                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11731         fi
11732         $rm -f try.*
11733         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11734         ;;
11735 *)      db_hashtype=u_int32_t
11736         ;;
11737 esac
11738 case "$i_db" in
11739 define)
11740         : Check the return type needed for prefix 
11741         echo " "
11742         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11743         cat >try.c <<EOCP
11744 #$d_const HASCONST
11745 #ifndef HASCONST
11746 #define const
11747 #endif
11748 #include <sys/types.h>
11749 #include <db.h>
11750
11751 #ifndef DB_VERSION_MAJOR
11752 size_t prefix_cb (key1, key2)
11753 const DBT *key1;
11754 const DBT *key2;
11755 {
11756 }
11757 BTREEINFO info;
11758 int main()
11759 {
11760         info.prefix = prefix_cb;
11761 }
11762 #endif
11763 EOCP
11764         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11765                 if $contains warning try.out >>/dev/null 2>&1 ; then
11766                         db_prefixtype='int'
11767                 else
11768                         db_prefixtype='size_t'
11769                 fi
11770         else
11771                 db_prefixtype='size_t'
11772                 : XXX Maybe we should just give up here.
11773                 $cat try.out >&4
11774                 echo "Help:  I can't seem to compile the db test program." >&4
11775                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11776         fi
11777         $rm -f try.*
11778         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11779         ;;
11780 *)      db_prefixtype='size_t'
11781         ;;
11782 esac
11783
11784 : check for void type
11785 echo " "
11786 echo "Checking to see how well your C compiler groks the void type..." >&4
11787 case "$voidflags" in
11788 '')
11789         $cat >try.c <<'EOCP'
11790 #if TRY & 1
11791 void sub() {
11792 #else
11793 sub() {
11794 #endif
11795         extern void moo();      /* function returning void */
11796         void (*goo)();          /* ptr to func returning void */
11797 #if TRY & 8
11798         void *hue;              /* generic ptr */
11799 #endif
11800 #if TRY & 2
11801         void (*foo[10])();
11802 #endif
11803
11804 #if TRY & 4
11805         if(goo == moo) {
11806                 exit(0);
11807         }
11808 #endif
11809         exit(0);
11810 }
11811 int main() { sub(); }
11812 EOCP
11813         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11814                 voidflags=$defvoidused
11815         echo "Good.  It appears to support void to the level $package wants.">&4
11816                 if $contains warning .out >/dev/null 2>&1; then
11817                         echo "However, you might get some warnings that look like this:"
11818                         $cat .out
11819                 fi
11820         else
11821 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11822                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11823                         echo "It supports 1..."
11824                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11825                                 echo "It also supports 2..."
11826                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11827                                         voidflags=7
11828                                         echo "And it supports 4 but not 8 definitely."
11829                                 else
11830                                         echo "It doesn't support 4..."
11831                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11832                                                 voidflags=11
11833                                                 echo "But it supports 8."
11834                                         else
11835                                                 voidflags=3
11836                                                 echo "Neither does it support 8."
11837                                         fi
11838                                 fi
11839                         else
11840                                 echo "It does not support 2..."
11841                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11842                                         voidflags=13
11843                                         echo "But it supports 4 and 8."
11844                                 else
11845                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11846                                                 voidflags=5
11847                                                 echo "And it supports 4 but has not heard about 8."
11848                                         else
11849                                                 echo "However it supports 8 but not 4."
11850                                         fi
11851                                 fi
11852                         fi
11853                 else
11854                         echo "There is no support at all for void."
11855                         voidflags=0
11856                 fi
11857         fi
11858 esac
11859 case "$voidflags" in
11860 "$defvoidused") ;;
11861 *)      $cat >&4 <<'EOM'
11862   Support flag bits are:
11863     1: basic void declarations.
11864     2: arrays of pointers to functions returning void.
11865     4: operations between pointers to and addresses of void functions.
11866     8: generic void pointers.
11867 EOM
11868         dflt="$voidflags";
11869         rp="Your void support flags add up to what?"
11870         . ./myread
11871         voidflags="$ans"
11872         ;;
11873 esac
11874 $rm -f try.* .out
11875
11876
11877 : How can we generate normalized random numbers ?
11878 echo " "
11879 echo "Looking for a random number function..." >&4
11880 case "$randfunc" in
11881 '')
11882         if set drand48 val -f; eval $csym; $val; then
11883                 dflt="drand48"
11884                 echo "Good, found drand48()." >&4
11885         elif set random val -f; eval $csym; $val; then
11886                 dflt="random"
11887                 echo "OK, found random()." >&4
11888         else
11889                 dflt="rand"
11890                 echo "Yick, looks like I have to use rand()." >&4
11891         fi
11892         echo " "
11893         ;;
11894 *)
11895         dflt="$randfunc"
11896         ;;
11897 esac
11898 cont=true
11899
11900 case "$ccflags" in
11901 *-Dmy_rand=*|*-Dmy_srand=*)
11902         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11903         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11904         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11905         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11906         ;;
11907 esac
11908
11909 while $test "$cont"; do
11910         rp="Use which function to generate random numbers?"
11911         . ./myread
11912         if $test "$ans" = "$dflt"; then
11913                 : null
11914         else
11915                 randbits=''
11916         fi
11917         randfunc="$ans"
11918         if set $ans val -f; eval $csym; $val; then
11919                 cont=''
11920         else
11921                 dflt=y
11922                 rp="I cannot find function $ans. Use that name anyway?"
11923                 . ./myread
11924                 dflt=rand
11925                 case "$ans" in
11926                         [yY]*) cont='';;
11927                 esac
11928         fi
11929         case "$cont" in
11930         '')
11931                 case "$randfunc" in
11932                 drand48)
11933                         drand01="drand48()"
11934                         seedfunc="srand48"
11935                         randbits=48
11936                         randseedtype=long
11937                         ;;
11938                 rand|random)
11939                         case "$randbits" in
11940                         '')
11941 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11942                                 $cat >try.c <<EOCP
11943 #$i_unistd I_UNISTD
11944 #$i_stdlib I_STDLIB
11945 #include <stdio.h>
11946 #ifdef I_UNISTD
11947 #  include <unistd.h>
11948 #endif
11949 #ifdef I_STDLIB
11950 #  include <stdlib.h>
11951 #endif
11952 int main()
11953 {
11954         register int i;
11955         register unsigned long tmp;
11956         register unsigned long max = 0L;
11957
11958         for (i = 1000; i; i--) {
11959                 tmp = (unsigned long) $randfunc();
11960                 if (tmp > max) max = tmp;
11961         }
11962         for (i = 0; max; i++)
11963                 max /= 2;
11964         printf("%d\n",i);
11965 }
11966 EOCP
11967                                 set try
11968                                 if eval $compile_ok; then
11969                                         dflt=`try`
11970                                 else
11971                                         dflt='?'
11972                                         echo "(I can't seem to compile the test program...)"
11973                                 fi
11974                                 ;;
11975                         *)
11976                                 dflt="$randbits"
11977                                 ;;
11978                         esac
11979                         rp="How many bits does your $randfunc() function produce?"
11980                         . ./myread
11981                         randbits="$ans"
11982                         $rm -f try.c try
11983                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11984                         seedfunc="s$randfunc"
11985                         randseedtype=unsigned
11986                         ;;
11987                 *)
11988                         dflt="31"
11989                         rp="How many bits does your $randfunc() function produce?"
11990                         . ./myread
11991                         randbits="$ans"
11992                         seedfunc="s$randfunc"
11993                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11994                         if set $seedfunc val -f; eval $csym; $val; then
11995                                 echo "(Using $seedfunc() to seed random generator)"
11996                         else
11997                                 echo "(Warning: no $seedfunc() to seed random generator)"
11998                                 seedfunc=rand
11999                         fi
12000                         randseedtype=unsigned
12001                         ;;
12002                 esac
12003                 ;;
12004         esac
12005 done
12006
12007 echo " "
12008 echo "Determining whether or not we are on an EBCDIC system..." >&4
12009 $cat >tebcdic.c <<'EOM'
12010 int main()
12011 {
12012   if ('M'==0xd4) return 0;
12013   return 1;
12014 }
12015 EOM
12016
12017 val=$undef
12018 set tebcdic
12019 if eval $compile_ok; then
12020         if ./tebcdic; then
12021                 echo "You have EBCDIC." >&4
12022                 val="$define"
12023         else
12024                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12025         fi
12026 else
12027         echo "I'm unable to compile the test program." >&4
12028         echo "I'll assume ASCII or some ISO Latin." >&4
12029 fi
12030 $rm -f tebcdic.c tebcdic
12031 set ebcdic
12032 eval $setvar
12033
12034 echo " "
12035 $cat >&4 <<EOM
12036 Checking how to flush all pending stdio output...
12037 EOM
12038 # I only know how to find the first 32 possibly open files on SunOS.
12039 # See also hints/sunos_4_1.sh and util.c  --AD
12040 case "$osname" in
12041 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12042 esac
12043 $cat >>try.c <<EOCP
12044 #include <stdio.h>
12045 #$i_unistd I_UNISTD
12046 #ifdef I_UNISTD
12047 # include <unistd.h>
12048 #endif
12049 #$d_sysconf HAS_SYSCONF
12050 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12051 #ifdef HAS_STDIO_STREAM_ARRAY
12052 # define STDIO_STREAM_ARRAY $stdio_stream_array
12053 #endif
12054 int main() {
12055   FILE* p = fopen("try.out", "w");
12056 #ifdef TRY_FPUTC
12057   fputc('x', p);
12058 #else
12059 # ifdef TRY_FPRINTF
12060   fprintf(p, "x");
12061 # endif
12062 #endif
12063 #ifdef TRY_FFLUSH_NULL
12064   fflush(NULL);
12065 #endif
12066 #ifdef TRY_FFLUSH_ALL
12067   {
12068     long open_max = -1;
12069 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12070     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12071 # else
12072 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12073     open_max = sysconf(_SC_OPEN_MAX);
12074 #  else
12075 #   ifdef FOPEN_MAX
12076     open_max = FOPEN_MAX;
12077 #   else
12078 #    ifdef OPEN_MAX
12079     open_max = OPEN_MAX;
12080 #    else
12081 #     ifdef _NFILE
12082     open_max = _NFILE;
12083 #     endif
12084 #    endif
12085 #   endif
12086 #  endif
12087 # endif 
12088 # ifdef HAS_STDIO_STREAM_ARRAY
12089     if (open_max > 0) {
12090       long i;
12091       for (i = 0; i < open_max; i++)
12092             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12093                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12094                 STDIO_STREAM_ARRAY[i]._flag)
12095                 fflush(&STDIO_STREAM_ARRAY[i]);
12096     }   
12097   }
12098 # endif
12099 #endif
12100   _exit(42);
12101 }
12102 EOCP
12103 : first we have to find out how _not_ to flush
12104 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12105     output=''
12106     set try -DTRY_FPUTC
12107     if eval $compile; then
12108             $rm -f try.out
12109             ./try$exe_ext 2>/dev/null
12110             if $test ! -s try.out -a "X$?" = X42; then
12111                 output=-DTRY_FPUTC
12112             fi
12113     fi
12114     case "$output" in
12115     '')
12116             set try -DTRY_FPRINTF
12117             $rm -f try.out
12118             if eval $compile; then
12119                     $rm -f try.out
12120                     ./try$exe_ext 2>/dev/null
12121                     if $test ! -s try.out -a "X$?" = X42; then
12122                         output=-DTRY_FPRINTF
12123                     fi
12124             fi
12125         ;;
12126     esac
12127 fi
12128 : check for fflush NULL behaviour
12129 case "$fflushNULL" in
12130 '')     set try -DTRY_FFLUSH_NULL $output
12131         if eval $compile; then
12132                 $rm -f try.out
12133                 ./try$exe_ext 2>/dev/null
12134                 code="$?"
12135                 if $test -s try.out -a "X$code" = X42; then
12136                         fflushNULL="`$cat try.out`"
12137                 else
12138                         if $test "X$code" != X42; then
12139                                 $cat >&4 <<EOM
12140 (If this test failed, don't worry, we'll try another method shortly.)
12141 EOM
12142                         fi
12143                 fi
12144         fi
12145         $rm -f core try.core core.try.*
12146         case "$fflushNULL" in
12147         x)      $cat >&4 <<EOM
12148 Your fflush(NULL) works okay.
12149 EOM
12150                 fflushNULL="$define"
12151                 ;;
12152         '')     $cat >&4 <<EOM
12153 Your fflush(NULL) isn't working (contrary to ANSI C).
12154 EOM
12155                 fflushNULL="$undef"
12156                 ;;
12157         *)      $cat >&4 <<EOM
12158 Cannot figure out whether your fflush(NULL) works or not.
12159 I'm assuming it doesn't (contrary to ANSI C).
12160 EOM
12161                 fflushNULL="$undef"
12162                 ;;
12163         esac
12164         ;;
12165 $define|true|[yY]*)
12166         fflushNULL="$define"
12167         ;;
12168 *)
12169         fflushNULL="$undef"
12170         ;;
12171 esac
12172 : check explicit looping only if NULL did not work
12173 case "$fflushNULL" in
12174 "$undef")
12175         : check for fflush all behaviour
12176         case "$fflushall" in
12177         '')     set try -DTRY_FFLUSH_ALL $output
12178                 if eval $compile; then
12179                         $cat >&4 <<EOM
12180 (Now testing the other method--but note that also this may fail.)
12181 EOM
12182                         $rm -f try.out
12183                         ./try$exe_ext 2>/dev/null
12184                         if $test -s try.out -a "X$?" = X42; then
12185                                 fflushall="`$cat try.out`"
12186                         fi
12187                 fi
12188                 $rm -f core try.core core.try.*
12189                 case "$fflushall" in
12190                 x)      $cat >&4 <<EOM
12191 Whew. Flushing explicitly all the stdio streams works.
12192 EOM
12193                         fflushall="$define"
12194                         ;;
12195                 '')     $cat >&4 <<EOM
12196 Sigh. Flushing explicitly all the stdio streams doesn't work.
12197 EOM
12198                         fflushall="$undef"
12199                         ;;
12200                 *)      $cat >&4 <<EOM
12201 Cannot figure out whether flushing stdio streams explicitly works or not.
12202 I'm assuming it doesn't.
12203 EOM
12204                         fflushall="$undef"
12205                         ;;
12206                 esac
12207                 ;;
12208         "$define"|true|[yY]*)
12209                 fflushall="$define"
12210                 ;;
12211         *)
12212                 fflushall="$undef"
12213                 ;;
12214         esac
12215         ;;
12216 *)      fflushall="$undef"      
12217         ;;
12218 esac
12219 case "$fflushNULL$fflushall" in
12220 undefundef)
12221         $cat <<EOM
12222 I cannot figure out how to flush pending stdio output.
12223 EOM
12224         ;;
12225 esac
12226 $rm -f try.* try$exe_ext
12227
12228 : Store the full pathname to the ar program for use in the C program
12229 : Respect a hint or command line value for full_ar.
12230 case "$full_ar" in
12231 '') full_ar=$ar ;;
12232 esac
12233
12234 : Store the full pathname to the sed program for use in the C program
12235 full_sed=$sed
12236
12237 : see what type gids are declared as in the kernel
12238 echo " "
12239 echo "Looking for the type for group ids returned by getgid()."
12240 set gid_t gidtype xxx stdio.h sys/types.h
12241 eval $typedef
12242 case "$gidtype" in
12243 xxx)
12244         xxx=`./findhdr sys/user.h`
12245         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12246         case $1 in
12247         unsigned) dflt="$1 $2" ;;
12248         *) dflt="$1" ;;
12249         esac
12250         ;;
12251 *) dflt="$gidtype";;
12252 esac
12253 case "$gidtype" in
12254 gid_t) echo "gid_t found." ;;
12255 *)      rp="What is the type for group ids returned by getgid()?"
12256         . ./myread
12257         gidtype="$ans"
12258         ;;
12259 esac
12260
12261 echo " "
12262 case "$gidtype" in
12263 *_t) zzz="$gidtype"     ;;
12264 *)   zzz="gid"          ;;
12265 esac
12266 echo "Checking the size of $zzz..." >&4 
12267 cat > try.c <<EOCP
12268 #include <sys/types.h>
12269 #include <stdio.h>
12270 int main() {
12271     printf("%d\n", (int)sizeof($gidtype));
12272     exit(0);
12273 }
12274 EOCP
12275 set try
12276 if eval $compile_ok; then
12277         yyy=`./try`
12278         case "$yyy" in
12279         '')     gidsize=4
12280                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12281                 ;;
12282         *)      gidsize=$yyy
12283                 echo "Your $zzz size is $gidsize bytes."
12284                 ;;
12285         esac
12286 else
12287         gidsize=4
12288         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12289 fi
12290
12291
12292 echo " "
12293 case "$gidtype" in
12294 *_t) zzz="$gidtype"     ;;
12295 *)   zzz="gid"          ;;
12296 esac
12297 echo "Checking the sign of $zzz..." >&4 
12298 cat > try.c <<EOCP
12299 #include <sys/types.h>
12300 #include <stdio.h>
12301 int main() {
12302         $gidtype foo = -1;
12303         if (foo < 0)
12304                 printf("-1\n");
12305         else
12306                 printf("1\n");
12307 }
12308 EOCP
12309 set try
12310 if eval $compile; then
12311         yyy=`./try`
12312         case "$yyy" in
12313         '')     gidsign=1
12314                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12315                 ;;
12316         *)      gidsign=$yyy
12317                 case "$gidsign" in
12318                  1) echo "Your $zzz is unsigned." ;;
12319                 -1) echo "Your $zzz is signed."   ;;
12320                 esac
12321                 ;;
12322         esac
12323 else
12324         gidsign=1
12325         echo "(I can't compile the test program--guessing unsigned.)" >&4
12326 fi
12327
12328
12329 echo " "
12330
12331 if $test X"$quadtype" != X; then
12332
12333 echo "Checking how to print 64-bit integers..." >&4
12334
12335 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12336         $cat >try.c <<'EOCP'
12337 #include <sys/types.h>
12338 #include <stdio.h>
12339 int main() {
12340   int q = 12345678901;
12341   printf("%ld\n", q);
12342 }
12343 EOCP
12344         set try
12345         if eval $compile; then
12346                 yyy=`./try$exe_ext`
12347                 case "$yyy" in
12348                 12345678901)
12349                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12350                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12351                         echo "We will use %d."
12352                         ;;
12353                 esac
12354         fi
12355 fi
12356
12357 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12358         $cat >try.c <<'EOCP'
12359 #include <sys/types.h>
12360 #include <stdio.h>
12361 int main() {
12362   long q = 12345678901;
12363   printf("%ld\n", q);
12364 }
12365 EOCP
12366         set try
12367         if eval $compile; then
12368                 yyy=`./try$exe_ext`
12369                 case "$yyy" in
12370                 12345678901)
12371                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12372                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12373                         echo "We will use %ld."
12374                         ;;
12375                 esac
12376         fi
12377 fi
12378
12379 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12380         $cat >try.c <<'EOCP'
12381 #include <sys/types.h>
12382 #include <inttypes.h>
12383 #include <stdio.h>
12384 int main() {
12385   int64_t q = 12345678901;
12386   printf("%" PRId64 "\n", q);
12387 }
12388 EOCP
12389         set try
12390         if eval $compile; then
12391                 yyy=`./try$exe_ext`
12392                 case "$yyy" in
12393                 12345678901)
12394                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12395                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12396                         echo "We will use the C9X style."
12397                         ;;
12398                 esac
12399         fi
12400 fi
12401
12402 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12403         $cat >try.c <<'EOCP'
12404 #include <sys/types.h>
12405 #include <stdio.h>
12406 int main() {
12407   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12408   printf("%lld\n", q);
12409 }
12410 EOCP
12411         set try
12412         if eval $compile; then
12413                 yyy=`./try$exe_ext`
12414                 case "$yyy" in
12415                 12345678901)
12416                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12417                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12418                         echo "We will use the %lld style."
12419                         ;;
12420                 esac
12421         fi
12422 fi
12423
12424 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12425         $cat >try.c <<EOCP
12426 #include <sys/types.h>
12427 #include <stdio.h>
12428 int main() {
12429   $quadtype q = 12345678901;
12430   printf("%Ld\n", q);
12431 }
12432 EOCP
12433         set try
12434         if eval $compile; then
12435                 yyy=`./try$exe_ext`
12436                 case "$yyy" in
12437                 12345678901)
12438                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12439                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12440                         echo "We will use %Ld."
12441                         ;;
12442                 esac
12443         fi
12444 fi
12445
12446 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12447         $cat >try.c <<EOCP
12448 #include <sys/types.h>
12449 #include <stdio.h>
12450 int main() {
12451   $quadtype q = 12345678901;
12452   printf("%qd\n", q);
12453 }
12454 EOCP
12455         set try
12456         if eval $compile; then
12457                 yyy=`./try$exe_ext`
12458                 case "$yyy" in
12459                 12345678901)
12460                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12461                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12462                         echo "We will use %qd."
12463                         ;;
12464                 esac
12465         fi
12466 fi
12467
12468 if $test X"$sPRId64" = X; then
12469         echo "Cannot figure out how to print 64-bit integers." >&4
12470 fi
12471
12472 $rm -f try try.*
12473
12474 fi
12475
12476 case "$sPRId64" in
12477 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12478         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12479         ;;
12480 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12481         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12482         ;;
12483 esac
12484
12485
12486 echo " "
12487 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12488
12489 if $test X"$ivsize" = X8; then
12490         ivdformat="$sPRId64"
12491         uvuformat="$sPRIu64"
12492         uvoformat="$sPRIo64"
12493         uvxformat="$sPRIx64"
12494 else
12495         if $test X"$ivsize" = X"$longsize"; then
12496                 ivdformat='"ld"'
12497                 uvuformat='"lu"'
12498                 uvoformat='"lo"'
12499                 uvxformat='"lx"'
12500         else
12501                 if $test X"$ivsize" = X"$intsize"; then
12502                         ivdformat='"d"'
12503                         uvuformat='"u"'
12504                         uvoformat='"o"'
12505                         uvxformat='"x"'
12506                 else
12507                         : far out
12508                         if $test X"$ivsize" = X"$shortsize"; then
12509                                 ivdformat='"hd"'
12510                                 uvuformat='"hu"'
12511                                 uvoformat='"ho"'
12512                                 uvxformat='"hx"'
12513                         fi
12514                 fi
12515         fi
12516 fi
12517
12518 case "$ivdformat" in
12519 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12520     exit 1
12521     ;;
12522 esac
12523
12524
12525 echo " "
12526 $echo "Checking the format string to be used for gids..." >&4
12527
12528 case "$gidsign" in
12529 -1)     if $test X"$gidsize" = X"$ivsize"; then
12530                 gidformat="$ivdformat"
12531         else
12532                 if $test X"$gidsize" = X"$longsize"; then
12533                         gidformat='"ld"'
12534                 else
12535                         if $test X"$gidsize" = X"$intsize"; then
12536                                 gidformat='"d"'
12537                         else
12538                                 if $test X"$gidsize" = X"$shortsize"; then
12539                                         gidformat='"hd"'
12540                                 fi
12541                         fi
12542                 fi
12543         fi
12544         ;;
12545 *)      if $test X"$gidsize" = X"$uvsize"; then
12546                 gidformat="$uvuformat"
12547         else
12548                 if $test X"$gidsize" = X"$longsize"; then
12549                         gidformat='"lu"'
12550                 else
12551                         if $test X"$gidsize" = X"$intsize"; then
12552                                 gidformat='"u"'
12553                         else
12554                                 if $test X"$gidsize" = X"$shortsize"; then
12555                                         gidformat='"hu"'
12556                                 fi
12557                         fi
12558                 fi
12559         fi
12560         ;;
12561 esac
12562
12563 : see if getgroups exists
12564 set getgroups d_getgrps
12565 eval $inlibc
12566
12567 : see if setgroups exists
12568 set setgroups d_setgrps
12569 eval $inlibc
12570
12571
12572 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12573 echo " "
12574 case "$d_getgrps$d_setgrps" in
12575 *define*)
12576         case "$groupstype" in
12577         '') dflt="$gidtype" ;;
12578         *)  dflt="$groupstype" ;;
12579         esac
12580         $cat <<EOM
12581 What type of pointer is the second argument to getgroups() and setgroups()?
12582 Usually this is the same as group ids, $gidtype, but not always.
12583
12584 EOM
12585         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12586         . ./myread
12587         groupstype="$ans"
12588         ;;
12589 *)  groupstype="$gidtype";;
12590 esac
12591
12592 echo " "
12593 echo "Checking if your $make program sets \$(MAKE)..." >&4
12594 case "$make_set_make" in
12595 '')
12596         $sed 's/^X //' > testmake.mak << 'EOF'
12597 Xall:
12598 X       @echo 'maketemp="$(MAKE)"'
12599 EOF
12600         case "`$make -f testmake.mak 2>/dev/null`" in
12601         *maketemp=*) make_set_make='#' ;;
12602         *)      make_set_make="MAKE=$make" ;;
12603         esac
12604         $rm -f testmake.mak
12605         ;;
12606 esac
12607 case "$make_set_make" in
12608 '#') echo "Yup, it does.";;
12609 *) echo "Nope, it doesn't.";;
12610 esac
12611
12612 : see what type is used for mode_t
12613 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12614 set mode_t modetype int stdio.h sys/types.h
12615 eval $typedef_ask
12616
12617 : define a fucntion to check prototypes
12618 $cat > protochk <<EOSH
12619 $startsh
12620 cc="$cc"
12621 optimize="$optimize"
12622 ccflags="$ccflags"
12623 prototype="$prototype"
12624 define="$define"
12625 rm=$rm
12626 EOSH
12627
12628 $cat >> protochk <<'EOSH'
12629
12630 $rm -f try.c
12631 foo="$1"
12632 shift
12633 while test $# -ge 2; do
12634         case "$1" in
12635                 $define) echo "#include <$2>" >> try.c ;;
12636                 literal) echo "$2" >> try.c ;;
12637         esac
12638     shift 2
12639 done
12640 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12641 cat >> try.c <<'EOCP'
12642 #ifdef CAN_PROTOTYPE
12643 #define _(args) args
12644 #else
12645 #define _(args) ()
12646 #endif
12647 EOCP
12648 echo "$foo" >> try.c
12649 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12650 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12651 status=$?
12652 $rm -f try.[co]
12653 exit $status
12654 EOSH
12655 chmod +x protochk
12656 $eunicefix protochk
12657
12658 : see what type is used for size_t
12659 rp="What is the type used for the length parameter for string functions?"
12660 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12661 eval $typedef_ask
12662
12663 : check for type of arguments to gethostbyaddr. 
12664 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12665         case "$d_gethbyaddr" in
12666         $define)
12667                 $cat <<EOM
12668
12669 Checking to see what type of arguments are accepted by gethostbyaddr().
12670 EOM
12671                 hdrs="$define sys/types.h
12672                         $d_socket sys/socket.h 
12673                         $i_niin netinet/in.h 
12674                         $i_netdb netdb.h
12675                         $i_unistd unistd.h"
12676                 : The first arg can 'char *' or 'void *'
12677                 : The second arg is some of integral type
12678                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12679                         for yyy in size_t long int; do
12680                                 case "$netdb_host_type" in
12681                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12682                                         if ./protochk "$try" $hdrs; then
12683                                                 echo "Your system accepts $xxx for the first arg."
12684                                                 echo "...and $yyy for the second arg."
12685                                                 netdb_host_type="$xxx"
12686                                                 netdb_hlen_type="$yyy"
12687                                         fi
12688                                         ;;
12689                                 esac
12690                         done
12691                 done
12692                 : In case none of those worked, prompt the user.
12693                 case "$netdb_host_type" in
12694                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12695                         dflt='char *'
12696                         . ./myread
12697                         netdb_host_type=$ans
12698                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12699                         dflt="$sizetype"
12700                         . ./myread
12701                         netdb_hlen_type=$ans
12702                         ;;
12703                 esac
12704                 ;;
12705         *)      : no gethostbyaddr, so pick harmless defaults
12706                 netdb_host_type='char *'
12707                 netdb_hlen_type="$sizetype"
12708                 ;;
12709         esac
12710         # Remove the "const" if needed. -- but then we'll have a 
12711         # prototype clash!
12712         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12713 fi
12714
12715 : check for type of argument to gethostbyname. 
12716 if test "X$netdb_name_type" = X ; then
12717         case "$d_gethbyname" in
12718         $define)
12719                 $cat <<EOM
12720
12721 Checking to see what type of argument is accepted by gethostbyname().
12722 EOM
12723                 hdrs="$define sys/types.h
12724                         $d_socket sys/socket.h 
12725                         $i_niin netinet/in.h 
12726                         $i_netdb netdb.h
12727                         $i_unistd unistd.h"
12728                 for xxx in "const char *" "char *"; do
12729                         case "$netdb_name_type" in
12730                         '')     try="extern struct hostent *gethostbyname($xxx);"
12731                                 if ./protochk "$try" $hdrs; then
12732                                         echo "Your system accepts $xxx."
12733                                         netdb_name_type="$xxx"
12734                                 fi
12735                                 ;;
12736                         esac
12737                 done
12738                 : In case none of those worked, prompt the user.
12739                 case "$netdb_name_type" in
12740                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12741                         dflt='char *'
12742                         . ./myread
12743                         netdb_name_type=$ans
12744                         ;;
12745                 esac
12746                 ;;
12747         *)      : no gethostbyname, so pick harmless default
12748                 netdb_name_type='char *'
12749                 ;;
12750         esac
12751 fi
12752
12753 : check for type of 1st argument to getnetbyaddr. 
12754 if test "X$netdb_net_type" = X ; then
12755         case "$d_getnbyaddr" in
12756         $define)
12757                 $cat <<EOM
12758
12759 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12760 EOM
12761                 hdrs="$define sys/types.h
12762                         $d_socket sys/socket.h 
12763                         $i_niin netinet/in.h 
12764                         $i_netdb netdb.h
12765                         $i_unistd unistd.h"
12766                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12767                         case "$netdb_net_type" in
12768                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12769                                 if ./protochk "$try" $hdrs; then
12770                                         echo "Your system accepts $xxx."
12771                                         netdb_net_type="$xxx"
12772                                 fi
12773                                 ;;
12774                         esac
12775                 done
12776                 : In case none of those worked, prompt the user.
12777                 case "$netdb_net_type" in
12778                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12779                         dflt='long'
12780                         . ./myread
12781                         netdb_net_type=$ans
12782                         ;;
12783                 esac
12784                 ;;
12785         *)      : no getnetbyaddr, so pick harmless default
12786                 netdb_net_type='long'
12787                 ;;
12788         esac
12789 fi
12790 : locate the preferred pager for this system
12791 case "$pager" in
12792 '')
12793         dflt=''
12794         case "$pg" in
12795         /*) dflt=$pg;;
12796         esac
12797         case "$more" in
12798         /*) dflt=$more;;
12799         esac
12800         case "$less" in
12801         /*) dflt=$less;;
12802         esac
12803         case "$dflt" in
12804         '') dflt=/usr/ucb/more;;
12805         esac
12806         ;;
12807 *) dflt="$pager";;
12808 esac
12809 echo " "
12810 fn=f/
12811 rp='What pager is used on your system?'
12812 . ./getfile
12813 pager="$ans"
12814
12815 : see what type pids are declared as in the kernel
12816 rp="What is the type of process ids on this system?"
12817 set pid_t pidtype int stdio.h sys/types.h
12818 eval $typedef_ask
12819
12820 : check for length of pointer
12821 echo " "
12822 case "$ptrsize" in
12823 '')
12824         $echo $n "Checking to see how big your pointers are...$c" >&4
12825         if test "$voidflags" -gt 7; then
12826                 echo '#define VOID_PTR char *' > try.c
12827         else
12828                 echo '#define VOID_PTR void *' > try.c
12829         fi
12830         $cat >>try.c <<'EOCP'
12831 #include <stdio.h>
12832 int main()
12833 {
12834     printf("%d\n", (int)sizeof(VOID_PTR));
12835     exit(0);
12836 }
12837 EOCP
12838         set try
12839         if eval $compile_ok; then
12840                 ptrsize=`./try`
12841                 $echo " $ptrsize bytes." >&4
12842         else
12843                 dflt='4'
12844                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12845                 rp="What is the size of a pointer (in bytes)?"
12846                 . ./myread
12847                 ptrsize="$ans"
12848         fi
12849         ;;
12850 esac
12851 $rm -f try.c try
12852
12853 : see if ar generates random libraries by itself
12854 echo " "
12855 echo "Checking how to generate random libraries on your machine..." >&4
12856 echo 'int bar1() { return bar2(); }' > bar1.c
12857 echo 'int bar2() { return 2; }' > bar2.c
12858 $cat > foo.c <<'EOP'
12859 int main() { printf("%d\n", bar1()); exit(0); }
12860 EOP
12861 $cc $ccflags -c bar1.c >/dev/null 2>&1
12862 $cc $ccflags -c bar2.c >/dev/null 2>&1
12863 $cc $ccflags -c foo.c >/dev/null 2>&1
12864 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12865 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12866         ./foobar >/dev/null 2>&1; then
12867         echo "$ar appears to generate random libraries itself."
12868         orderlib=false
12869         ranlib=":"
12870 elif $ar ts bar$_a >/dev/null 2>&1 &&
12871         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12872         ./foobar >/dev/null 2>&1; then
12873                 echo "a table of contents needs to be added with '$ar ts'."
12874                 orderlib=false
12875                 ranlib="$ar ts"
12876 else
12877         case "$ranlib" in
12878         :) ranlib='';;
12879         '')
12880                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12881                 $test -f $ranlib || ranlib=''
12882                 ;;
12883         esac
12884         if $test -n "$ranlib"; then
12885                 echo "your system has '$ranlib'; we'll use that."
12886                 orderlib=false
12887         else
12888                 echo "your system doesn't seem to support random libraries"
12889                 echo "so we'll use lorder and tsort to order the libraries."
12890                 orderlib=true
12891                 ranlib=":"
12892         fi
12893 fi
12894 $rm -f foo* bar* 
12895
12896 : check for type of arguments to select. 
12897 case "$selecttype" in
12898 '') case "$d_select" in
12899         $define)
12900                 echo " "
12901                 $cat <<EOM
12902 Checking to see what type of arguments are accepted by select().
12903 EOM
12904                 hdrs="$define sys/types.h
12905                         $i_systime sys/time.h 
12906                         $i_sysselct sys/select.h
12907                         $d_socket sys/socket.h"
12908                 : The first arg can be int, unsigned, or size_t
12909                 : The last arg may or may not be 'const'
12910                 val=''
12911                 : void pointer has been seen but using that
12912                 : breaks the selectminbits test
12913                 for xxx in 'fd_set *' 'int *'; do
12914                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12915                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12916                                         case "$val" in
12917                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12918                                                 if ./protochk "$try" $hdrs; then
12919                                                         echo "Your system accepts $xxx."
12920                                                         val="$xxx"
12921                                                 fi
12922                                                 ;;
12923                                         esac
12924                                 done
12925                         done
12926                 done
12927                 case "$val" in
12928                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12929                         case "$d_fd_set" in
12930                                 $define) dflt="fd_set *" ;;
12931                                 *)              dflt="int *" ;;
12932                         esac
12933                         . ./myread
12934                         val=$ans
12935                         ;;
12936                 esac
12937                 selecttype="$val"
12938                 ;;
12939         *)      : no select, so pick a harmless default
12940                 selecttype='int *'
12941                 ;;
12942         esac
12943         ;;
12944 esac
12945
12946 : check for the select 'width'
12947 case "$selectminbits" in
12948 '') case "$d_select" in
12949         $define)
12950                 $cat <<EOM
12951
12952 Checking to see on how many bits at a time your select() operates...
12953 EOM
12954                 $cat >try.c <<EOCP
12955 #include <sys/types.h>
12956 #$i_time I_TIME
12957 #$i_systime I_SYS_TIME
12958 #$i_systimek I_SYS_TIME_KERNEL
12959 #ifdef I_TIME
12960 #   include <time.h>
12961 #endif
12962 #ifdef I_SYS_TIME
12963 #   ifdef I_SYS_TIME_KERNEL
12964 #       define KERNEL
12965 #   endif
12966 #   include <sys/time.h>
12967 #   ifdef I_SYS_TIME_KERNEL
12968 #       undef KERNEL
12969 #   endif
12970 #endif
12971 #$i_sysselct I_SYS_SELECT
12972 #ifdef I_SYS_SELECT
12973 #include <sys/select.h>
12974 #endif
12975 #$d_socket HAS_SOCKET
12976 #ifdef HAS_SOCKET
12977 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12978 #endif
12979 #include <stdio.h>
12980 $selecttype b;
12981 #define S sizeof(*(b))
12982 #define MINBITS 64
12983 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
12984 #define NBITS  (NBYTES * 8)
12985 int main() {
12986     char s[NBYTES];
12987     struct timeval t;
12988     int i;
12989     FILE* fp;
12990     int fd;
12991
12992     fclose(stdin);
12993     fp = fopen("try.c", "r");
12994     if (fp == 0)
12995       exit(1);
12996     fd = fileno(fp);
12997     if (fd < 0)
12998       exit(2);
12999     b = ($selecttype)s;
13000     for (i = 0; i < NBITS; i++)
13001         FD_SET(i, b);
13002     t.tv_sec  = 0;
13003     t.tv_usec = 0;
13004     select(fd + 1, b, 0, 0, &t);
13005     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13006     printf("%d\n", i + 1);
13007     return 0;
13008 }
13009 EOCP
13010                 set try
13011                 if eval $compile_ok; then
13012                         selectminbits=`./try`
13013                         case "$selectminbits" in
13014                         '')     cat >&4 <<EOM
13015 Cannot figure out on how many bits at a time your select() operates.
13016 I'll play safe and guess it is 32 bits.
13017 EOM
13018                                 selectminbits=32
13019                                 bits="32 bits"
13020                                 ;;
13021                         1)      bits="1 bit" ;;
13022                         *)      bits="$selectminbits bits" ;;
13023                         esac
13024                         echo "Your select() operates on $bits at a time." >&4
13025                 else
13026                         rp='What is the minimum number of bits your select() operates on?'
13027                         case "$byteorder" in
13028                         1234|12345678)  dflt=32 ;;
13029                         *)              dflt=1  ;;
13030                         esac
13031                         . ./myread
13032                         val=$ans
13033                         selectminbits="$val"
13034                 fi
13035                 $rm -f try.* try
13036                 ;;
13037         *)      : no select, so pick a harmless default
13038                 selectminbits='32'
13039                 ;;
13040         esac
13041         ;;
13042 esac
13043
13044 : Trace out the files included by signal.h, then look for SIGxxx names.
13045 : Remove SIGARRAYSIZE used by HPUX.
13046 : Remove SIGSTKSIZE used by Linux.
13047 : Remove SIGSTKSZ used by Posix.
13048 : Remove SIGTYP void lines used by OS2.
13049 : Some cpps, like os390, dont give the file name anywhere
13050 if [ "X$fieldn" = X ]; then
13051         : Just make some guesses.  We check them later.
13052         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13053 else
13054         xxx=`echo '#include <signal.h>' |
13055         $cppstdin $cppminus $cppflags 2>/dev/null |
13056         $grep '^[       ]*#.*include' | 
13057         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13058 fi
13059 : Check this list of files to be sure we have parsed the cpp output ok.
13060 : This will also avoid potentially non-existent files, such 
13061 : as ../foo/bar.h
13062 xxxfiles=''
13063 for xx in $xxx /dev/null ; do
13064         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13065 done
13066 : If we have found no files, at least try signal.h
13067 case "$xxxfiles" in
13068 '')     xxxfiles=`./findhdr signal.h` ;;
13069 esac
13070 xxx=`awk '
13071 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13072         print substr($2, 4, 20)
13073 }
13074 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13075         print substr($3, 4, 20)
13076 }' $xxxfiles`
13077 : Append some common names just in case the awk scan failed.
13078 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13079 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13080 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13081 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13082 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13083
13084 : generate a few handy files for later
13085 $cat > signal.c <<'EOCP'
13086 #include <sys/types.h>
13087 #include <signal.h>
13088 #include <stdio.h>
13089 int main() {
13090
13091 /* Strange style to avoid deeply-nested #if/#else/#endif */
13092 #ifndef NSIG
13093 #  ifdef _NSIG
13094 #    define NSIG (_NSIG)
13095 #  endif
13096 #endif
13097
13098 #ifndef NSIG
13099 #  ifdef SIGMAX
13100 #    define NSIG (SIGMAX+1)
13101 #  endif
13102 #endif
13103
13104 #ifndef NSIG
13105 #  ifdef SIG_MAX
13106 #    define NSIG (SIG_MAX+1)
13107 #  endif
13108 #endif
13109
13110 #ifndef NSIG
13111 #  ifdef MAXSIG
13112 #    define NSIG (MAXSIG+1)
13113 #  endif
13114 #endif
13115
13116 #ifndef NSIG
13117 #  ifdef MAX_SIG
13118 #    define NSIG (MAX_SIG+1)
13119 #  endif
13120 #endif
13121
13122 #ifndef NSIG
13123 #  ifdef SIGARRAYSIZE
13124 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13125 #  endif
13126 #endif
13127
13128 #ifndef NSIG
13129 #  ifdef _sys_nsig
13130 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13131 #  endif
13132 #endif
13133
13134 /* Default to some arbitrary number that's big enough to get most
13135    of the common signals.
13136 */
13137 #ifndef NSIG
13138 #    define NSIG 50
13139 #endif
13140
13141 printf("NSIG %d\n", NSIG);
13142
13143 #ifndef JUST_NSIG
13144
13145 EOCP
13146
13147 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13148 {
13149         printf "#ifdef SIG"; printf $1; printf "\n"
13150         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13151         printf $1; printf ");\n"
13152         printf "#endif\n"
13153 }
13154 END {
13155         printf "#endif /* JUST_NSIG */\n";
13156         printf "exit(0);\n}\n";
13157 }
13158 ' >>signal.c
13159 $cat >signal.awk <<'EOP'
13160 BEGIN { ndups = 0 }
13161 $1 ~ /^NSIG$/ { nsig = $2 }
13162 ($1 !~ /^NSIG$/) && (NF == 2) {
13163     if ($2 > maxsig) { maxsig = $2 }
13164     if (sig_name[$2]) {
13165         dup_name[ndups] = $1
13166         dup_num[ndups] = $2
13167         ndups++ 
13168     }
13169     else {
13170         sig_name[$2] = $1
13171         sig_num[$2] = $2
13172     }
13173 }
13174 END { 
13175     if (nsig == 0) {
13176         nsig = maxsig + 1
13177     }
13178     printf("NSIG %d\n", nsig);
13179     for (n = 1; n < nsig; n++) {
13180         if (sig_name[n]) {
13181             printf("%s %d\n", sig_name[n], sig_num[n])
13182         }
13183         else {
13184             printf("NUM%d %d\n", n, n) 
13185         }
13186     }
13187     for (n = 0; n < ndups; n++) {
13188         printf("%s %d\n", dup_name[n], dup_num[n])
13189     }
13190 }
13191 EOP
13192 $cat >signal_cmd <<EOS
13193 $startsh
13194 if $test -s signal.lst; then
13195     echo "Using your existing signal.lst file"
13196         exit 0
13197 fi
13198 xxx="$xxx"
13199 EOS
13200 $cat >>signal_cmd <<'EOS'
13201
13202 set signal
13203 if eval $compile_ok; then
13204         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13205 else
13206         echo "(I can't seem be able to compile the whole test program)" >&4
13207         echo "(I'll try it in little pieces.)" >&4
13208         set signal -DJUST_NSIG
13209         if eval $compile_ok; then
13210                 ./signal$_exe > signal.nsg
13211                 $cat signal.nsg
13212         else
13213                 echo "I can't seem to figure out how many signals you have." >&4
13214                 echo "Guessing 50." >&4
13215                 echo 'NSIG 50' > signal.nsg
13216         fi
13217         : Now look at all the signal names, one at a time.
13218         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13219                 $cat > signal.c <<EOCP
13220 #include <sys/types.h>
13221 #include <signal.h>
13222 #include <stdio.h>
13223 int main() {
13224 printf("$xx %d\n", SIG${xx});
13225 return 0;
13226 }
13227 EOCP
13228                 set signal
13229                 if eval $compile; then
13230                         echo "SIG${xx} found."
13231                         ./signal$_exe  >> signal.ls1
13232                 else
13233                         echo "SIG${xx} NOT found."
13234                 fi
13235         done
13236         if $test -s signal.ls1; then
13237                 $cat signal.nsg signal.ls1 |
13238                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13239         fi
13240
13241 fi
13242 if $test -s signal.lst; then
13243         :
13244 else
13245         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13246         echo 'kill -l' >signal
13247         set X `csh -f <signal`
13248         $rm -f signal
13249         shift
13250         case $# in
13251         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13252         esac
13253         echo $@ | $tr ' ' $trnl | \
13254             $awk '{ printf "%s %d\n", $1, ++s; }
13255                   END { printf "NSIG %d\n", ++s }' >signal.lst
13256 fi
13257 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13258 EOS
13259 chmod a+x signal_cmd
13260 $eunicefix signal_cmd
13261
13262 : generate list of signal names
13263 echo " "
13264 case "$sig_name_init" in
13265 '') doinit=yes ;;
13266 *)  case "$sig_num_init" in
13267     ''|*,*) doinit=yes ;;
13268     esac ;;
13269 esac
13270 case "$doinit" in
13271 yes)
13272         echo "Generating a list of signal names and numbers..." >&4
13273         . ./signal_cmd
13274         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13275         sig_name=`$awk 'BEGIN { printf "ZERO " }
13276                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13277         sig_num=`$awk  'BEGIN { printf "0 " }
13278                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13279         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13280                              !/^NSIG/   { printf "\"%s\", ", $1 }
13281                              END        { printf "0\n" }' signal.lst`
13282         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13283                              !/^NSIG/   { printf "%d, ", $2}
13284                              END        { printf "0\n"}' signal.lst`
13285         ;;
13286 esac
13287 echo "The following $sig_count signals are available:"
13288 echo " "
13289 echo $sig_name | $awk \
13290 'BEGIN { linelen = 0 }
13291 {
13292         for (i = 1; i <= NF; i++) {
13293                 name = "SIG" $i " "
13294                 linelen = linelen + length(name)
13295                 if (linelen > 70) {
13296                         printf "\n"
13297                         linelen = length(name)
13298                 }
13299                 printf "%s", name
13300         }
13301         printf "\n"
13302 }'
13303 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13304
13305 : see what type is used for signed size_t
13306 set ssize_t ssizetype int stdio.h sys/types.h
13307 eval $typedef
13308 dflt="$ssizetype"
13309 $cat > ssize.c <<EOM
13310 #include <stdio.h>
13311 #include <sys/types.h>
13312 #define Size_t $sizetype
13313 #define SSize_t $dflt
13314 int main()
13315 {
13316         if (sizeof(Size_t) == sizeof(SSize_t))
13317                 printf("$dflt\n");
13318         else if (sizeof(Size_t) == sizeof(int))
13319                 printf("int\n");
13320         else 
13321                 printf("long\n");
13322         exit(0);
13323 }
13324 EOM
13325 echo " "
13326 set ssize
13327 if eval $compile_ok && ./ssize > /dev/null; then
13328         ssizetype=`./ssize`
13329         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13330 else
13331         $cat >&4 <<EOM
13332 Help! I can't compile and run the ssize_t test program: please enlighten me!
13333 (This is probably a misconfiguration in your system or libraries, and
13334 you really ought to fix it.  Still, I'll try anyway.)
13335
13336 I need a type that is the same size as $sizetype, but is guaranteed to
13337 be signed.  Common values are ssize_t, int and long.
13338
13339 EOM
13340         rp="What signed type is the same size as $sizetype?"
13341         . ./myread
13342         ssizetype="$ans"
13343 fi
13344 $rm -f ssize ssize.*
13345
13346 : see what type of char stdio uses.
13347 echo " "
13348 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13349         echo "Your stdio uses unsigned chars." >&4
13350         stdchar="unsigned char"
13351 else
13352         echo "Your stdio uses signed chars." >&4
13353         stdchar="char"
13354 fi
13355
13356 : see if time exists
13357 echo " "
13358 if test "X$d_time" = X -o X"$timetype" = X; then
13359     if set time val -f d_time; eval $csym; $val; then
13360                 echo 'time() found.' >&4
13361                 val="$define"
13362                 rp="What is the type returned by time() on this system?"
13363                 set time_t timetype long stdio.h sys/types.h
13364                 eval $typedef_ask
13365     else
13366                 echo 'time() not found, hope that will do.' >&4
13367                 val="$undef"
13368                 timetype='int';
13369     fi
13370     set d_time
13371     eval $setvar
13372 fi
13373
13374 : see what type uids are declared as in the kernel
13375 echo " "
13376 echo "Looking for the type for user ids returned by getuid()."
13377 set uid_t uidtype xxx stdio.h sys/types.h
13378 eval $typedef
13379 case "$uidtype" in
13380 xxx)
13381         xxx=`./findhdr sys/user.h`
13382         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13383         case $1 in
13384         unsigned) dflt="$1 $2" ;;
13385         *) dflt="$1" ;;
13386         esac
13387         ;;
13388 *) dflt="$uidtype";;
13389 esac
13390 case "$uidtype" in
13391 uid_t)  echo "uid_t found." ;;
13392 *)      rp="What is the type for user ids returned by getuid()?"
13393         . ./myread
13394         uidtype="$ans"
13395         ;;
13396 esac
13397
13398 echo " "
13399 case "$uidtype" in
13400 *_t) zzz="$uidtype"     ;;
13401 *)   zzz="uid"          ;;
13402 esac
13403 echo "Checking the size of $zzz..." >&4 
13404 cat > try.c <<EOCP
13405 #include <sys/types.h>
13406 #include <stdio.h>
13407 int main() {
13408     printf("%d\n", (int)sizeof($uidtype));
13409     exit(0);
13410 }
13411 EOCP
13412 set try
13413 if eval $compile_ok; then
13414         yyy=`./try`
13415         case "$yyy" in
13416         '')     uidsize=4
13417                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13418                 ;;
13419         *)      uidsize=$yyy
13420                 echo "Your $zzz size is $uidsize bytes."
13421                 ;;
13422         esac
13423 else
13424         uidsize=4
13425         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13426 fi
13427
13428 echo " "
13429 case "$uidtype" in
13430 *_t) zzz="$uidtype"     ;;
13431 *)   zzz="uid"          ;;
13432 esac
13433 echo "Checking the sign of $zzz..." >&4
13434 cat > try.c <<EOCP
13435 #include <sys/types.h>
13436 #include <stdio.h>
13437 int main() {
13438         $uidtype foo = -1;
13439         if (foo < 0)
13440                 printf("-1\n");
13441         else
13442                 printf("1\n");
13443 }
13444 EOCP
13445 set try
13446 if eval $compile; then
13447         yyy=`./try`
13448         case "$yyy" in
13449         '')     uidsign=1
13450                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13451                 ;;
13452         *)      uidsign=$yyy
13453                 case "$uidsign" in
13454                  1) echo "Your $zzz is unsigned." ;;
13455                 -1) echo "Your $zzz is signed."   ;;
13456                 esac
13457                 ;;
13458         esac
13459 else
13460         uidsign=1
13461         echo "(I can't compile the test program--guessing unsigned.)" >&4
13462 fi
13463
13464
13465
13466 echo " "
13467 $echo "Checking the format string to be used for uids..." >&4
13468
13469 case "$uidsign" in
13470 -1)     if $test X"$uidsize" = X"$ivsize"; then
13471                 uidformat="$ivdformat"
13472         else
13473                 if $test X"$uidsize" = X"$longsize"; then
13474                         uidformat='"ld"'
13475                 else
13476                         if $test X"$uidsize" = X"$intsize"; then
13477                                 uidformat='"d"'
13478                         else
13479                                 if $test X"$uidsize" = X"$shortsize"; then
13480                                         uidformat='"hd"'
13481                                 fi
13482                         fi
13483                 fi
13484         fi
13485         ;;
13486 *)      if $test X"$uidsize" = X"$uvsize"; then
13487                 uidformat="$uvuformat"
13488         else
13489                 if $test X"$uidsize" = X"$longsize"; then
13490                         uidformat='"lu"'
13491                 else
13492                         if $test X"$uidsize" = X"$intsize"; then
13493                                 uidformat='"u"'
13494                         else
13495                                 if $test X"$uidsize" = X"$shortsize"; then
13496                                         uidformat='"hu"'
13497                                 fi
13498                         fi
13499                 fi
13500         fi
13501         ;;
13502 esac
13503
13504 : see if dbm.h is available
13505 : see if dbmclose exists
13506 set dbmclose d_dbmclose
13507 eval $inlibc
13508
13509 case "$d_dbmclose" in
13510 $define)
13511         set dbm.h i_dbm
13512         eval $inhdr
13513         case "$i_dbm" in
13514         $define)
13515                 val="$undef"
13516                 set i_rpcsvcdbm
13517                 eval $setvar
13518                 ;;
13519         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13520                 eval $inhdr
13521                 ;;
13522         esac
13523         ;;
13524 *)      echo "We won't be including <dbm.h>"
13525         val="$undef"
13526         set i_dbm
13527         eval $setvar
13528         val="$undef"
13529         set i_rpcsvcdbm
13530         eval $setvar
13531         ;;
13532 esac
13533
13534 : see if this is a sys/file.h system
13535 val=''
13536 set sys/file.h val
13537 eval $inhdr
13538
13539 : do we need to include sys/file.h ?
13540 case "$val" in
13541 "$define")
13542         echo " "
13543         if $h_sysfile; then
13544                 val="$define"
13545                 echo "We'll be including <sys/file.h>." >&4
13546         else
13547                 val="$undef"
13548                 echo "We won't be including <sys/file.h>." >&4
13549         fi
13550         ;;
13551 *)
13552         h_sysfile=false
13553         ;;
13554 esac
13555 set i_sysfile
13556 eval $setvar
13557
13558 : see if fcntl.h is there
13559 val=''
13560 set fcntl.h val
13561 eval $inhdr
13562
13563 : see if we can include fcntl.h
13564 case "$val" in
13565 "$define")
13566         echo " "
13567         if $h_fcntl; then
13568                 val="$define"
13569                 echo "We'll be including <fcntl.h>." >&4
13570         else
13571                 val="$undef"
13572                 if $h_sysfile; then
13573         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13574                 else
13575                         echo "We won't be including <fcntl.h>." >&4
13576                 fi
13577         fi
13578         ;;
13579 *)
13580         h_fcntl=false
13581         val="$undef"
13582         ;;
13583 esac
13584 set i_fcntl
13585 eval $setvar
13586
13587 : see if this is a iconv.h system
13588 set iconv.h i_iconv
13589 eval $inhdr
13590
13591 : see if locale.h is available
13592 set locale.h i_locale
13593 eval $inhdr
13594
13595 : see if mach cthreads are available
13596 if test "X$usethreads" = "X$define"; then
13597         set mach/cthreads.h i_machcthr
13598         eval $inhdr
13599 else
13600         i_machcthr="$undef"
13601 fi
13602
13603
13604
13605 : see if this is a math.h system
13606 set math.h i_math
13607 eval $inhdr
13608
13609 : see if this is a mntent.h system
13610 set mntent.h i_mntent
13611 eval $inhdr
13612
13613 : see if ndbm.h is available
13614 set ndbm.h t_ndbm
13615 eval $inhdr
13616 case "$t_ndbm" in
13617 $define)
13618         : see if dbm_open exists
13619         set dbm_open d_dbm_open
13620         eval $inlibc
13621         case "$d_dbm_open" in
13622         $undef)
13623                 t_ndbm="$undef"
13624                 echo "We won't be including <ndbm.h>"
13625                 ;;
13626         esac
13627         ;;
13628 esac
13629 val="$t_ndbm"
13630 set i_ndbm
13631 eval $setvar
13632
13633 : see if net/errno.h is available
13634 val=''
13635 set net/errno.h val
13636 eval $inhdr
13637
13638 : Unfortunately, it causes problems on some systems.  Arrgh.
13639 case "$val" in
13640 $define)
13641         cat > try.c <<'EOM'
13642 #include <stdio.h>
13643 #include <errno.h>
13644 #include <net/errno.h>
13645 int func()
13646 {
13647         return ENOTSOCK;
13648 }
13649 EOM
13650         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13651                 echo "We'll be including <net/errno.h>." >&4
13652         else
13653                 echo "We won't be including <net/errno.h>." >&4
13654                 val="$undef"
13655         fi
13656         $rm -f try.* try
13657         ;;
13658 esac
13659 set i_neterrno
13660 eval $setvar
13661
13662 : see if netinet/tcp.h is available
13663 set netinet/tcp.h i_netinettcp
13664 eval $inhdr
13665
13666 : see if this is a poll.h system
13667 set poll.h i_poll
13668 eval $inhdr
13669
13670 echo " "
13671 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13672 $cat <<'EOSH' > Cppsym.know
13673 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13674 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13675 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13676 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13677 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13678 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13679 bull c cadmus clipper CMU COFF COMPILER_VERSION
13680 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13681 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13682 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13683 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13684 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13685 H3050R H3050RX hbullx20 hcx host_mips
13686 hp200 hp300 hp700 HP700 hp800 hp9000
13687 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13688 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13689 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13690 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13691 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13692 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13693 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13694 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13695 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13696 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13697 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13698 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13699 MATH_HAS_NO_SIDE_EFFECTS
13700 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13701 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13702 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13703 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13704 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13705 NetBSD news1500 news1700 news1800 news1900 news3700
13706 news700 news800 news900 NeXT NLS ns16000 ns32000
13707 ns32016 ns32332 ns32k nsc32000
13708 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13709 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13710 pc532 pdp11 PGC PIC plexus PORTAR posix
13711 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13712 POSIX_C_SOURCE POSIX_SOURCE POWER
13713 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13714 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13715 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13716 sony sony_news sonyrisc sparc sparclite spectrum
13717 stardent stdc STDC_EXT stratos sun sun3 sun386
13718 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13719 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13720 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13721 sysV68 sysV88 Tek4132 Tek4300 titan
13722 tower tower32 tower32_200 tower32_600 tower32_700
13723 tower32_800 tower32_850 tss
13724 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13725 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13726 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13727 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13728 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13729 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13730 z8000
13731 EOSH
13732 # Maybe put other stuff here too.
13733 cat <<EOSH >>Cppsym.know
13734 $osname
13735 EOSH
13736 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13737 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13738 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13739 $rm -f Cppsym.a Cppsym.b
13740 cat <<EOSH > Cppsym
13741 $startsh
13742 if $test \$# -gt 0; then
13743     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13744     if $test -s Cppsym.got; then
13745         $rm -f Cppsym.got
13746         exit 0
13747     fi
13748     $rm -f Cppsym.got
13749     exit 1
13750 else
13751     $tr " " "$trnl" | ./Cppsym.try
13752     exit 0
13753 fi
13754 EOSH
13755 chmod +x Cppsym
13756 $eunicefix Cppsym
13757 cat <<EOSH > Cppsym.try
13758 $startsh
13759 cat <<'EOCP' > try.c
13760 #include <stdio.h>
13761 int main() {
13762 EOCP
13763 $awk \\
13764 EOSH
13765 cat <<'EOSH' >> Cppsym.try
13766 'length($1) > 0 {
13767     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
13768     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
13769     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
13770     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
13771 }'       >> try.c
13772 echo '}' >> try.c
13773 EOSH
13774 cat <<EOSH >> Cppsym.try
13775 cc="$cc"
13776 optimize="$optimize"
13777 ccflags="$ccflags"
13778 ldflags="$ldflags"
13779 libs="$libs"
13780 exe_ext="$exe_ext"
13781 $cc $optimize $ccflags $ldflags -o try$exe_ext try.c $libs && ./try$exe_ext
13782 EOSH
13783 chmod +x Cppsym.try
13784 $eunicefix Cppsym.try
13785 ./Cppsym < Cppsym.know > Cppsym.true
13786 : now check the C compiler for additional symbols
13787 postprocess_cc_v=''
13788 case "$osname" in
13789 aix) postprocess_cc_v="|$tr , ' '" ;;
13790 esac
13791 $cat >ccsym <<EOS
13792 $startsh
13793 $cat >tmp.c <<EOF
13794 extern int foo;
13795 EOF
13796 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13797 do
13798         case "\$i" in
13799         -D*) echo "\$i" | $sed 's/^-D//';;
13800         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13801         esac
13802 done
13803 $rm -f try.c
13804 EOS
13805 postprocess_cc_v=''
13806 chmod +x ccsym
13807 $eunicefix ccsym
13808 ./ccsym > ccsym1.raw
13809 if $test -s ccsym1.raw; then
13810        $sort ccsym1.raw | $uniq >ccsym.raw
13811 else
13812        mv ccsym1.raw ccsym.raw
13813 fi
13814
13815 $awk '/\=/ { print $0; next }
13816         { print $0"=1" }' ccsym.raw >ccsym.list
13817 $awk '/\=/ { print $0; next }
13818         { print $0"=1" }' Cppsym.true >ccsym.true
13819 $comm -13 ccsym.true ccsym.list >ccsym.own
13820 $comm -12 ccsym.true ccsym.list >ccsym.com
13821 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13822 also=''
13823 if $test -z ccsym.raw; then
13824         echo "Your C compiler doesn't seem to define any symbols!" >&4
13825         echo " "
13826         echo "However, your C preprocessor defines the following symbols:"
13827         $cat Cppsym.true
13828         ccsymbols=''
13829         cppsymbols=`$cat Cppsym.true`
13830         cppsymbols=`echo $cppsymbols`
13831         cppccsymbols="$cppsymbols"
13832 else
13833         if $test -s ccsym.com; then
13834                 echo "Your C compiler and pre-processor define these symbols:"
13835                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13836                 also='also '
13837                 symbols='ones'
13838                 cppccsymbols=`$cat ccsym.com`
13839                 cppccsymbols=`echo $cppccsymbols`
13840                 $test "$silent" || sleep 1
13841         fi
13842         if $test -s ccsym.cpp; then
13843                 $test "$also" && echo " "
13844                 echo "Your C pre-processor ${also}defines the following symbols:"
13845                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13846                 also='further '
13847                 cppsymbols=`$cat ccsym.cpp`
13848                 cppsymbols=`echo $cppsymbols`
13849                 $test "$silent" || sleep 1
13850         fi
13851         if $test -s ccsym.own; then
13852                 $test "$also" && echo " "
13853                 echo "Your C compiler ${also}defines the following cpp symbols:"
13854                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13855                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13856                 ccsymbols=`$cat ccsym.own`
13857                 ccsymbols=`echo $ccsymbols`
13858                 $test "$silent" || sleep 1
13859         fi
13860 fi
13861 $rm -f ccsym*
13862
13863 : see if this is a termio system
13864 val="$undef"
13865 val2="$undef"
13866 val3="$undef"
13867 if $test `./findhdr termios.h`; then
13868         set tcsetattr i_termios
13869         eval $inlibc
13870         val3="$i_termios"
13871 fi
13872 echo " "
13873 case "$val3" in
13874 "$define") echo "You have POSIX termios.h... good!" >&4;;
13875 *) if ./Cppsym pyr; then
13876                 case "`/bin/universe`" in
13877                 ucb) if $test `./findhdr sgtty.h`; then
13878                                 val2="$define"
13879                                 echo "<sgtty.h> found." >&4
13880                         else
13881                                 echo "System is pyramid with BSD universe."
13882                                 echo "<sgtty.h> not found--you could have problems." >&4
13883                         fi;;
13884                 *) if $test `./findhdr termio.h`; then
13885                                 val="$define"
13886                                 echo "<termio.h> found." >&4
13887                         else
13888                                 echo "System is pyramid with USG universe."
13889                                 echo "<termio.h> not found--you could have problems." >&4
13890                         fi;;
13891                 esac
13892         elif ./usg; then
13893                 if $test `./findhdr termio.h`; then
13894                         echo "<termio.h> found." >&4
13895                         val="$define"
13896                 elif $test `./findhdr sgtty.h`; then
13897                         echo "<sgtty.h> found." >&4
13898                         val2="$define"
13899                 else
13900 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13901                 fi
13902         else
13903                 if $test `./findhdr sgtty.h`; then
13904                         echo "<sgtty.h> found." >&4
13905                         val2="$define"
13906                 elif $test `./findhdr termio.h`; then
13907                         echo "<termio.h> found." >&4
13908                         val="$define"
13909                 else
13910 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13911                 fi
13912         fi;;
13913 esac
13914 set i_termio; eval $setvar
13915 val=$val2; set i_sgtty; eval $setvar
13916 val=$val3; set i_termios; eval $setvar
13917
13918 : see if this is a shadow.h system
13919 set shadow.h i_shadow
13920 eval $inhdr
13921
13922 : see if this is a socks.h system
13923 set socks.h i_socks
13924 eval $inhdr
13925
13926 : see if stdarg is available
13927 echo " "
13928 if $test `./findhdr stdarg.h`; then
13929         echo "<stdarg.h> found." >&4
13930         valstd="$define"
13931 else
13932         echo "<stdarg.h> NOT found." >&4
13933         valstd="$undef"
13934 fi
13935
13936 : see if varags is available
13937 echo " "
13938 if $test `./findhdr varargs.h`; then
13939         echo "<varargs.h> found." >&4
13940 else
13941         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13942 fi
13943
13944 : set up the varargs testing programs
13945 $cat > varargs.c <<EOP
13946 #ifdef I_STDARG
13947 #include <stdarg.h>
13948 #endif
13949 #ifdef I_VARARGS
13950 #include <varargs.h>
13951 #endif
13952
13953 #ifdef I_STDARG
13954 int f(char *p, ...)
13955 #else
13956 int f(va_alist)
13957 va_dcl
13958 #endif
13959 {
13960         va_list ap;
13961 #ifndef I_STDARG
13962         char *p;
13963 #endif
13964 #ifdef I_STDARG
13965         va_start(ap,p);
13966 #else
13967         va_start(ap);
13968         p = va_arg(ap, char *);
13969 #endif
13970         va_end(ap);
13971 }
13972 EOP
13973 $cat > varargs <<EOP
13974 $startsh
13975 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13976         echo "true"
13977 else
13978         echo "false"
13979 fi
13980 $rm -f varargs$_o
13981 EOP
13982 chmod +x varargs
13983
13984 : now check which varargs header should be included
13985 echo " "
13986 i_varhdr=''
13987 case "$valstd" in
13988 "$define")
13989         if `./varargs I_STDARG`; then
13990                 val='stdarg.h'
13991         elif `./varargs I_VARARGS`; then
13992                 val='varargs.h'
13993         fi
13994         ;;
13995 *)
13996         if `./varargs I_VARARGS`; then
13997                 val='varargs.h'
13998         fi
13999         ;;
14000 esac
14001 case "$val" in
14002 '')
14003 echo "I could not find the definition for va_dcl... You have problems..." >&4
14004         val="$undef"; set i_stdarg; eval $setvar
14005         val="$undef"; set i_varargs; eval $setvar
14006         ;;
14007 *) 
14008         set i_varhdr
14009         eval $setvar
14010         case "$i_varhdr" in
14011         stdarg.h)
14012                 val="$define"; set i_stdarg; eval $setvar
14013                 val="$undef"; set i_varargs; eval $setvar
14014                 ;;
14015         varargs.h)
14016                 val="$undef"; set i_stdarg; eval $setvar
14017                 val="$define"; set i_varargs; eval $setvar
14018                 ;;
14019         esac
14020         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14021 esac
14022 $rm -f varargs*
14023
14024 : see if stddef is available
14025 set stddef.h i_stddef
14026 eval $inhdr
14027
14028 : see if sys/access.h is available
14029 set sys/access.h i_sysaccess
14030 eval $inhdr
14031
14032 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14033 set sys/filio.h i_sysfilio
14034 eval $inhdr
14035 echo " "
14036 if $test `./findhdr sys/ioctl.h`; then
14037         val="$define"
14038         echo '<sys/ioctl.h> found.' >&4
14039 else
14040         val="$undef"
14041         if $test $i_sysfilio = "$define"; then
14042             echo '<sys/ioctl.h> NOT found.' >&4
14043         else
14044                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14045                 $test $i_termio = "$define" && xxx="termio.h"
14046                 $test $i_termios = "$define" && xxx="termios.h"
14047 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14048         fi
14049 fi
14050 set i_sysioctl
14051 eval $setvar
14052
14053 : see if sys/resource.h has to be included
14054 set sys/resource.h i_sysresrc
14055 eval $inhdr
14056
14057 : see if sys/security.h is available
14058 set sys/security.h i_syssecrt
14059 eval $inhdr
14060
14061 : see if this is a sys/statvfs.h system
14062 set sys/statvfs.h i_sysstatvfs
14063 eval $inhdr
14064
14065 : see if this is a sys/uio.h system
14066 set sys/uio.h i_sysuio
14067 eval $inhdr
14068
14069 : see if this is a sys/un.h system
14070 set sys/un.h i_sysun
14071 eval $inhdr
14072
14073 : see if this is a syswait system
14074 set sys/wait.h i_syswait
14075 eval $inhdr
14076
14077 : see if this is a ustat.h system
14078 set ustat.h i_ustat
14079 eval $inhdr
14080
14081 : see if this is an utime system
14082 set utime.h i_utime
14083 eval $inhdr
14084
14085 : see if this is a values.h system
14086 set values.h i_values
14087 eval $inhdr
14088
14089 : see if this is a vfork system
14090 case "$d_vfork" in
14091 "$define")
14092         set vfork.h i_vfork
14093         eval $inhdr
14094         ;;
14095 *)
14096         i_vfork="$undef"
14097         ;;
14098 esac
14099
14100 : see if gdbm.h is available
14101 set gdbm.h t_gdbm
14102 eval $inhdr
14103 case "$t_gdbm" in
14104 $define)
14105         : see if gdbm_open exists
14106         set gdbm_open d_gdbm_open
14107         eval $inlibc
14108         case "$d_gdbm_open" in
14109         $undef)
14110                 t_gdbm="$undef"
14111                 echo "We won't be including <gdbm.h>"
14112                 ;;
14113         esac
14114         ;;
14115 esac
14116 val="$t_gdbm"
14117 set i_gdbm
14118 eval $setvar
14119
14120 echo " "
14121 echo "Looking for extensions..." >&4
14122 : If we are using the old config.sh, known_extensions may contain
14123 : old or inaccurate or duplicate values.
14124 known_extensions=''
14125 nonxs_extensions=''
14126 : We do not use find because it might not be available.
14127 : We do not just use MANIFEST because the user may have dropped
14128 : some additional extensions into the source tree and expect them
14129 : to be built.
14130
14131 : Function to recursively find available extensions, ignoring DynaLoader
14132 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14133 find_extensions='
14134     for xxx in *; do
14135        case "$xxx" in
14136            DynaLoader|dynaload) ;;
14137            *)
14138            if $test -f $xxx/$xxx.xs; then
14139                known_extensions="$known_extensions $1$xxx";
14140            elif $test -f $xxx/Makefile.PL; then
14141                nonxs_extensions="$nonxs_extensions $1$xxx";
14142            else
14143                if $test -d $xxx -a $# -lt 10; then
14144                    set $1$xxx/ $*;
14145                    cd $xxx;
14146                    eval $find_extensions;
14147                    cd ..;
14148                    shift;
14149                fi;
14150            fi
14151            ;;
14152        esac;
14153     done'
14154 tdir=`pwd`
14155 cd $rsrc/ext
14156 set X
14157 shift
14158 eval $find_extensions
14159 set X $nonxs_extensions
14160 shift
14161 nonxs_extensions="$*"
14162 set X $known_extensions
14163 shift
14164 known_extensions="$*"
14165 cd $tdir
14166
14167 : Now see which are supported on this system.
14168 avail_ext=''
14169 for xxx in $known_extensions ; do
14170         case "$xxx" in
14171         DB_File|db_file)
14172                 case "$i_db" in
14173                 $define) avail_ext="$avail_ext $xxx" ;;
14174                 esac
14175                 ;;
14176         GDBM_File|gdbm_fil)
14177                 case "$i_gdbm" in 
14178                 $define) avail_ext="$avail_ext $xxx" ;;
14179                 esac
14180                 ;;
14181         NDBM_File|ndbm_fil)
14182                 case "$i_ndbm" in
14183                 $define) avail_ext="$avail_ext $xxx" ;;
14184                 esac
14185                 ;;
14186         ODBM_File|odbm_fil) 
14187                 case "${i_dbm}${i_rpcsvcdbm}" in
14188                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14189                 esac
14190                 ;;
14191         POSIX|posix)
14192                 case "$useposix" in
14193                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14194                 esac
14195                 ;;
14196         Opcode|opcode)
14197                 case "$useopcode" in
14198                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14199                 esac
14200                 ;;
14201         Socket|socket)
14202                 case "$d_socket" in 
14203                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14204                 esac
14205                 ;;
14206         Thread|thread)
14207                 case "$usethreads" in 
14208                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14209                 esac
14210                 ;;
14211         IPC/SysV|ipc/sysv)
14212                 : XXX Do we need a useipcsysv variable here
14213                 case "${d_msg}${d_sem}${d_shm}" in 
14214                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14215                 esac
14216                 ;;
14217         *)      avail_ext="$avail_ext $xxx"
14218                 ;;
14219         esac
14220 done
14221
14222 set X $avail_ext
14223 shift
14224 avail_ext="$*"
14225
14226 : Now see which nonxs extensions are supported on this system.
14227 : For now assume all are.
14228 nonxs_ext=''
14229 for xxx in $nonxs_extensions ; do
14230         case "$xxx" in
14231         *)      nonxs_ext="$nonxs_ext $xxx"
14232                 ;;
14233         esac
14234 done
14235
14236 set X $nonxs_ext
14237 shift
14238 nonxs_ext="$*"
14239
14240 case $usedl in
14241 $define)
14242         $cat <<EOM
14243 A number of extensions are supplied with $package.  You may choose to
14244 compile these extensions for dynamic loading (the default), compile
14245 them into the $package executable (static loading), or not include
14246 them at all.  Answer "none" to include no extensions.
14247 Note that DynaLoader is always built and need not be mentioned here.
14248
14249 EOM
14250         case "$dynamic_ext" in
14251         '') dflt="$avail_ext" ;;
14252         *)      dflt="$dynamic_ext"
14253                 # Perhaps we are reusing an old out-of-date config.sh.
14254                 case "$hint" in
14255                 previous)
14256                         if test X"$dynamic_ext" != X"$avail_ext"; then
14257                                 $cat <<EOM
14258 NOTICE:  Your previous config.sh list may be incorrect. 
14259 The extensions now available to you are 
14260         ${avail_ext}
14261 but the default list from your previous config.sh is
14262         ${dynamic_ext} 
14263
14264 EOM
14265                         fi
14266                         ;;
14267                 esac
14268                 ;;
14269         esac
14270         case "$dflt" in
14271         '')     dflt=none;;
14272         esac
14273         rp="What extensions do you wish to load dynamically?"
14274         . ./myread
14275         case "$ans" in
14276         none) dynamic_ext=' ' ;;
14277         *) dynamic_ext="$ans" ;;
14278         esac
14279
14280         case "$static_ext" in
14281         '')
14282                 : Exclude those already listed in dynamic linking
14283                 dflt=''
14284                 for xxx in $avail_ext; do
14285                         case " $dynamic_ext " in
14286                         *" $xxx "*) ;;
14287                         *) dflt="$dflt $xxx" ;;
14288                         esac
14289                 done
14290                 set X $dflt
14291                 shift
14292                 dflt="$*"
14293                 ;;
14294         *)  dflt="$static_ext" 
14295                 ;;
14296         esac
14297
14298         case "$dflt" in
14299         '')     dflt=none;;
14300         esac
14301         rp="What extensions do you wish to load statically?"
14302         . ./myread
14303         case "$ans" in
14304         none) static_ext=' ' ;;
14305         *) static_ext="$ans" ;;
14306         esac
14307         ;;
14308 *)
14309         $cat <<EOM
14310 A number of extensions are supplied with $package.  Answer "none" 
14311 to include no extensions. 
14312 Note that DynaLoader is always built and need not be mentioned here.
14313
14314 EOM
14315         case "$static_ext" in
14316         '') dflt="$avail_ext" ;;
14317         *)      dflt="$static_ext"
14318                 # Perhaps we are reusing an old out-of-date config.sh.
14319                 case "$hint" in
14320                 previous)
14321                         if test X"$static_ext" != X"$avail_ext"; then
14322                                 $cat <<EOM
14323 NOTICE:  Your previous config.sh list may be incorrect. 
14324 The extensions now available to you are 
14325         ${avail_ext}
14326 but the default list from your previous config.sh is
14327         ${static_ext} 
14328
14329 EOM
14330                         fi
14331                         ;;
14332                 esac
14333                 ;;
14334         esac
14335         : Exclude those that are not xs extensions
14336         case "$dflt" in
14337         '')     dflt=none;;
14338         esac
14339         rp="What extensions do you wish to include?"
14340         . ./myread
14341         case "$ans" in
14342         none) static_ext=' ' ;;
14343         *) static_ext="$ans" ;;
14344         esac
14345         ;;
14346 esac
14347
14348 set X $dynamic_ext $static_ext $nonxs_ext
14349 shift
14350 extensions="$*"
14351
14352 : Remove build directory name from cppstdin so it can be used from
14353 : either the present location or the final installed location.
14354 echo " "
14355 : Get out of the UU directory to get correct path name.
14356 cd ..
14357 case "$cppstdin" in
14358 `pwd`/cppstdin)
14359         echo "Stripping down cppstdin path name"
14360         cppstdin=cppstdin
14361         ;;
14362 esac
14363 cd UU
14364
14365 : end of configuration questions
14366 echo " "
14367 echo "End of configuration questions."
14368 echo " "
14369
14370 : back to where it started
14371 if test -d ../UU; then
14372         cd ..
14373 fi
14374
14375 : configuration may be patched via a 'config.over' file
14376 if $test -f config.over; then
14377         echo " "
14378         dflt=y
14379         rp='I see a config.over file.  Do you wish to load it?'
14380         . UU/myread
14381         case "$ans" in
14382         n*) echo "OK, I'll ignore it.";;
14383         *)      . ./config.over
14384                 echo "Configuration override changes have been loaded."
14385                 ;;
14386         esac
14387 fi
14388
14389 : in case they want portability, strip down executable paths
14390 case "$d_portable" in
14391 "$define")
14392         echo " "
14393         echo "Stripping down executable paths..." >&4
14394         for file in $loclist $trylist; do
14395                 eval temp=\$$file
14396                 eval $file=`basename $temp`
14397         done
14398         ;;
14399 esac
14400
14401 : create config.sh file
14402 echo " "
14403 echo "Creating config.sh..." >&4
14404 $spitshell <<EOT >config.sh
14405 $startsh
14406 #
14407 # This file was produced by running the Configure script. It holds all the
14408 # definitions figured out by Configure. Should you modify one of these values,
14409 # do not forget to propagate your changes by running "Configure -der". You may
14410 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14411 #
14412
14413 # Package name      : $package
14414 # Source directory  : $src
14415 # Configuration time: $cf_time
14416 # Configured by     : $cf_by
14417 # Target system     : $myuname
14418
14419 Author='$Author'
14420 Date='$Date'
14421 Header='$Header'
14422 Id='$Id'
14423 Locker='$Locker'
14424 Log='$Log'
14425 Mcc='$Mcc'
14426 RCSfile='$RCSfile'
14427 Revision='$Revision'
14428 Source='$Source'
14429 State='$State'
14430 _a='$_a'
14431 _exe='$_exe'
14432 _o='$_o'
14433 afs='$afs'
14434 alignbytes='$alignbytes'
14435 ansi2knr='$ansi2knr'
14436 aphostname='$aphostname'
14437 api_revision='$api_revision'
14438 api_subversion='$api_subversion'
14439 api_version='$api_version'
14440 api_versionstring='$api_versionstring'
14441 ar='$ar'
14442 archlib='$archlib'
14443 archlibexp='$archlibexp'
14444 archname64='$archname64'
14445 archname='$archname'
14446 archobjs='$archobjs'
14447 awk='$awk'
14448 baserev='$baserev'
14449 bash='$bash'
14450 bin='$bin'
14451 bincompat5005='$bincompat5005'
14452 binexp='$binexp'
14453 bison='$bison'
14454 byacc='$byacc'
14455 byteorder='$byteorder'
14456 c='$c'
14457 castflags='$castflags'
14458 cat='$cat'
14459 cc='$cc'
14460 cccdlflags='$cccdlflags'
14461 ccdlflags='$ccdlflags'
14462 ccflags='$ccflags'
14463 ccsymbols='$ccsymbols'
14464 cf_by='$cf_by'
14465 cf_email='$cf_email'
14466 cf_time='$cf_time'
14467 charsize='$charsize'
14468 chgrp='$chgrp'
14469 chmod='$chmod'
14470 chown='$chown'
14471 clocktype='$clocktype'
14472 comm='$comm'
14473 compress='$compress'
14474 contains='$contains'
14475 cp='$cp'
14476 cpio='$cpio'
14477 cpp='$cpp'
14478 cpp_stuff='$cpp_stuff'
14479 cppccsymbols='$cppccsymbols'
14480 cppflags='$cppflags'
14481 cpplast='$cpplast'
14482 cppminus='$cppminus'
14483 cpprun='$cpprun'
14484 cppstdin='$cppstdin'
14485 cppsymbols='$cppsymbols'
14486 crosscompile='$crosscompile'
14487 cryptlib='$cryptlib'
14488 csh='$csh'
14489 d_Gconvert='$d_Gconvert'
14490 d_PRIEldbl='$d_PRIEldbl'
14491 d_PRIFldbl='$d_PRIFldbl'
14492 d_PRIGldbl='$d_PRIGldbl'
14493 d_PRIX64='$d_PRIX64'
14494 d_PRId64='$d_PRId64'
14495 d_PRIeldbl='$d_PRIeldbl'
14496 d_PRIfldbl='$d_PRIfldbl'
14497 d_PRIgldbl='$d_PRIgldbl'
14498 d_PRIi64='$d_PRIi64'
14499 d_PRIo64='$d_PRIo64'
14500 d_PRIu64='$d_PRIu64'
14501 d_PRIx64='$d_PRIx64'
14502 d_access='$d_access'
14503 d_accessx='$d_accessx'
14504 d_alarm='$d_alarm'
14505 d_archlib='$d_archlib'
14506 d_atolf='$d_atolf'
14507 d_atoll='$d_atoll'
14508 d_attribut='$d_attribut'
14509 d_bcmp='$d_bcmp'
14510 d_bcopy='$d_bcopy'
14511 d_bincompat5005='$d_bincompat5005'
14512 d_bsd='$d_bsd'
14513 d_bsdgetpgrp='$d_bsdgetpgrp'
14514 d_bsdsetpgrp='$d_bsdsetpgrp'
14515 d_bzero='$d_bzero'
14516 d_casti32='$d_casti32'
14517 d_castneg='$d_castneg'
14518 d_charvspr='$d_charvspr'
14519 d_chown='$d_chown'
14520 d_chroot='$d_chroot'
14521 d_chsize='$d_chsize'
14522 d_closedir='$d_closedir'
14523 d_const='$d_const'
14524 d_crypt='$d_crypt'
14525 d_csh='$d_csh'
14526 d_cuserid='$d_cuserid'
14527 d_dbl_dig='$d_dbl_dig'
14528 d_difftime='$d_difftime'
14529 d_dirnamlen='$d_dirnamlen'
14530 d_dlerror='$d_dlerror'
14531 d_dlopen='$d_dlopen'
14532 d_dlsymun='$d_dlsymun'
14533 d_dosuid='$d_dosuid'
14534 d_drand48proto='$d_drand48proto'
14535 d_dup2='$d_dup2'
14536 d_eaccess='$d_eaccess'
14537 d_endgrent='$d_endgrent'
14538 d_endhent='$d_endhent'
14539 d_endnent='$d_endnent'
14540 d_endpent='$d_endpent'
14541 d_endpwent='$d_endpwent'
14542 d_endsent='$d_endsent'
14543 d_endspent='$d_endspent'
14544 d_eofnblk='$d_eofnblk'
14545 d_eunice='$d_eunice'
14546 d_fchmod='$d_fchmod'
14547 d_fchown='$d_fchown'
14548 d_fcntl='$d_fcntl'
14549 d_fd_macros='$d_fd_macros'
14550 d_fd_set='$d_fd_set'
14551 d_fds_bits='$d_fds_bits'
14552 d_fgetpos='$d_fgetpos'
14553 d_flexfnam='$d_flexfnam'
14554 d_flock='$d_flock'
14555 d_fork='$d_fork'
14556 d_fpathconf='$d_fpathconf'
14557 d_fpos64_t='$d_fpos64_t'
14558 d_fs_data_s='$d_fs_data_s'
14559 d_fseeko='$d_fseeko'
14560 d_fsetpos='$d_fsetpos'
14561 d_fstatfs='$d_fstatfs'
14562 d_fstatvfs='$d_fstatvfs'
14563 d_ftello='$d_ftello'
14564 d_ftime='$d_ftime'
14565 d_getgrent='$d_getgrent'
14566 d_getgrps='$d_getgrps'
14567 d_gethbyaddr='$d_gethbyaddr'
14568 d_gethbyname='$d_gethbyname'
14569 d_gethent='$d_gethent'
14570 d_gethname='$d_gethname'
14571 d_gethostprotos='$d_gethostprotos'
14572 d_getlogin='$d_getlogin'
14573 d_getmnt='$d_getmnt'
14574 d_getmntent='$d_getmntent'
14575 d_getnbyaddr='$d_getnbyaddr'
14576 d_getnbyname='$d_getnbyname'
14577 d_getnent='$d_getnent'
14578 d_getnetprotos='$d_getnetprotos'
14579 d_getpbyname='$d_getpbyname'
14580 d_getpbynumber='$d_getpbynumber'
14581 d_getpent='$d_getpent'
14582 d_getpgid='$d_getpgid'
14583 d_getpgrp2='$d_getpgrp2'
14584 d_getpgrp='$d_getpgrp'
14585 d_getppid='$d_getppid'
14586 d_getprior='$d_getprior'
14587 d_getprotoprotos='$d_getprotoprotos'
14588 d_getpwent='$d_getpwent'
14589 d_getsbyname='$d_getsbyname'
14590 d_getsbyport='$d_getsbyport'
14591 d_getsent='$d_getsent'
14592 d_getservprotos='$d_getservprotos'
14593 d_getspent='$d_getspent'
14594 d_getspnam='$d_getspnam'
14595 d_gettimeod='$d_gettimeod'
14596 d_gnulibc='$d_gnulibc'
14597 d_grpasswd='$d_grpasswd'
14598 d_hasmntopt='$d_hasmntopt'
14599 d_htonl='$d_htonl'
14600 d_iconv='$d_iconv'
14601 d_index='$d_index'
14602 d_inetaton='$d_inetaton'
14603 d_int64t='$d_int64t'
14604 d_isascii='$d_isascii'
14605 d_killpg='$d_killpg'
14606 d_lchown='$d_lchown'
14607 d_ldbl_dig='$d_ldbl_dig'
14608 d_link='$d_link'
14609 d_locconv='$d_locconv'
14610 d_lockf='$d_lockf'
14611 d_longdbl='$d_longdbl'
14612 d_longlong='$d_longlong'
14613 d_lstat='$d_lstat'
14614 d_mblen='$d_mblen'
14615 d_mbstowcs='$d_mbstowcs'
14616 d_mbtowc='$d_mbtowc'
14617 d_memchr='$d_memchr'
14618 d_memcmp='$d_memcmp'
14619 d_memcpy='$d_memcpy'
14620 d_memmove='$d_memmove'
14621 d_memset='$d_memset'
14622 d_mkdir='$d_mkdir'
14623 d_mkfifo='$d_mkfifo'
14624 d_mktime='$d_mktime'
14625 d_msg='$d_msg'
14626 d_msg_ctrunc='$d_msg_ctrunc'
14627 d_msg_dontroute='$d_msg_dontroute'
14628 d_msg_oob='$d_msg_oob'
14629 d_msg_peek='$d_msg_peek'
14630 d_msg_proxy='$d_msg_proxy'
14631 d_msgctl='$d_msgctl'
14632 d_msgget='$d_msgget'
14633 d_msgrcv='$d_msgrcv'
14634 d_msgsnd='$d_msgsnd'
14635 d_mymalloc='$d_mymalloc'
14636 d_nice='$d_nice'
14637 d_nv_preserves_uv='$d_nv_preserves_uv'
14638 d_off64_t='$d_off64_t'
14639 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14640 d_oldpthreads='$d_oldpthreads'
14641 d_oldsock='$d_oldsock'
14642 d_open3='$d_open3'
14643 d_pathconf='$d_pathconf'
14644 d_pause='$d_pause'
14645 d_phostname='$d_phostname'
14646 d_pipe='$d_pipe'
14647 d_poll='$d_poll'
14648 d_portable='$d_portable'
14649 d_pthread_yield='$d_pthread_yield'
14650 d_pwage='$d_pwage'
14651 d_pwchange='$d_pwchange'
14652 d_pwclass='$d_pwclass'
14653 d_pwcomment='$d_pwcomment'
14654 d_pwexpire='$d_pwexpire'
14655 d_pwgecos='$d_pwgecos'
14656 d_pwpasswd='$d_pwpasswd'
14657 d_pwquota='$d_pwquota'
14658 d_quad='$d_quad'
14659 d_readdir='$d_readdir'
14660 d_readlink='$d_readlink'
14661 d_rename='$d_rename'
14662 d_rewinddir='$d_rewinddir'
14663 d_rmdir='$d_rmdir'
14664 d_safebcpy='$d_safebcpy'
14665 d_safemcpy='$d_safemcpy'
14666 d_sanemcmp='$d_sanemcmp'
14667 d_sched_yield='$d_sched_yield'
14668 d_scm_rights='$d_scm_rights'
14669 d_seekdir='$d_seekdir'
14670 d_select='$d_select'
14671 d_sem='$d_sem'
14672 d_semctl='$d_semctl'
14673 d_semctl_semid_ds='$d_semctl_semid_ds'
14674 d_semctl_semun='$d_semctl_semun'
14675 d_semget='$d_semget'
14676 d_semop='$d_semop'
14677 d_setegid='$d_setegid'
14678 d_seteuid='$d_seteuid'
14679 d_setgrent='$d_setgrent'
14680 d_setgrps='$d_setgrps'
14681 d_sethent='$d_sethent'
14682 d_setlinebuf='$d_setlinebuf'
14683 d_setlocale='$d_setlocale'
14684 d_setnent='$d_setnent'
14685 d_setpent='$d_setpent'
14686 d_setpgid='$d_setpgid'
14687 d_setpgrp2='$d_setpgrp2'
14688 d_setpgrp='$d_setpgrp'
14689 d_setprior='$d_setprior'
14690 d_setpwent='$d_setpwent'
14691 d_setregid='$d_setregid'
14692 d_setresgid='$d_setresgid'
14693 d_setresuid='$d_setresuid'
14694 d_setreuid='$d_setreuid'
14695 d_setrgid='$d_setrgid'
14696 d_setruid='$d_setruid'
14697 d_setsent='$d_setsent'
14698 d_setsid='$d_setsid'
14699 d_setspent='$d_setspent'
14700 d_setvbuf='$d_setvbuf'
14701 d_sfio='$d_sfio'
14702 d_shm='$d_shm'
14703 d_shmat='$d_shmat'
14704 d_shmatprototype='$d_shmatprototype'
14705 d_shmctl='$d_shmctl'
14706 d_shmdt='$d_shmdt'
14707 d_shmget='$d_shmget'
14708 d_sigaction='$d_sigaction'
14709 d_sigsetjmp='$d_sigsetjmp'
14710 d_socket='$d_socket'
14711 d_sockpair='$d_sockpair'
14712 d_sqrtl='$d_sqrtl'
14713 d_statblks='$d_statblks'
14714 d_statfs_f_flags='$d_statfs_f_flags'
14715 d_statfs_s='$d_statfs_s'
14716 d_statvfs='$d_statvfs'
14717 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14718 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14719 d_stdio_stream_array='$d_stdio_stream_array'
14720 d_stdiobase='$d_stdiobase'
14721 d_stdstdio='$d_stdstdio'
14722 d_strchr='$d_strchr'
14723 d_strcoll='$d_strcoll'
14724 d_strctcpy='$d_strctcpy'
14725 d_strerrm='$d_strerrm'
14726 d_strerror='$d_strerror'
14727 d_strtod='$d_strtod'
14728 d_strtol='$d_strtol'
14729 d_strtold='$d_strtold'
14730 d_strtoll='$d_strtoll'
14731 d_strtoul='$d_strtoul'
14732 d_strtoull='$d_strtoull'
14733 d_strtouq='$d_strtouq'
14734 d_strxfrm='$d_strxfrm'
14735 d_suidsafe='$d_suidsafe'
14736 d_symlink='$d_symlink'
14737 d_syscall='$d_syscall'
14738 d_sysconf='$d_sysconf'
14739 d_sysernlst='$d_sysernlst'
14740 d_syserrlst='$d_syserrlst'
14741 d_system='$d_system'
14742 d_tcgetpgrp='$d_tcgetpgrp'
14743 d_tcsetpgrp='$d_tcsetpgrp'
14744 d_telldir='$d_telldir'
14745 d_telldirproto='$d_telldirproto'
14746 d_time='$d_time'
14747 d_times='$d_times'
14748 d_truncate='$d_truncate'
14749 d_tzname='$d_tzname'
14750 d_umask='$d_umask'
14751 d_uname='$d_uname'
14752 d_union_semun='$d_union_semun'
14753 d_ustat='$d_ustat'
14754 d_vendorbin='$d_vendorbin'
14755 d_vendorlib='$d_vendorlib'
14756 d_vfork='$d_vfork'
14757 d_void_closedir='$d_void_closedir'
14758 d_voidsig='$d_voidsig'
14759 d_voidtty='$d_voidtty'
14760 d_volatile='$d_volatile'
14761 d_vprintf='$d_vprintf'
14762 d_wait4='$d_wait4'
14763 d_waitpid='$d_waitpid'
14764 d_wcstombs='$d_wcstombs'
14765 d_wctomb='$d_wctomb'
14766 d_xenix='$d_xenix'
14767 date='$date'
14768 db_hashtype='$db_hashtype'
14769 db_prefixtype='$db_prefixtype'
14770 defvoidused='$defvoidused'
14771 direntrytype='$direntrytype'
14772 dlext='$dlext'
14773 dlsrc='$dlsrc'
14774 doublesize='$doublesize'
14775 drand01='$drand01'
14776 dynamic_ext='$dynamic_ext'
14777 eagain='$eagain'
14778 ebcdic='$ebcdic'
14779 echo='$echo'
14780 egrep='$egrep'
14781 emacs='$emacs'
14782 eunicefix='$eunicefix'
14783 exe_ext='$exe_ext'
14784 expr='$expr'
14785 extensions='$extensions'
14786 fflushNULL='$fflushNULL'
14787 fflushall='$fflushall'
14788 find='$find'
14789 firstmakefile='$firstmakefile'
14790 flex='$flex'
14791 fpossize='$fpossize'
14792 fpostype='$fpostype'
14793 freetype='$freetype'
14794 full_ar='$full_ar'
14795 full_csh='$full_csh'
14796 full_sed='$full_sed'
14797 gccversion='$gccversion'
14798 gidformat='$gidformat'
14799 gidsign='$gidsign'
14800 gidsize='$gidsize'
14801 gidtype='$gidtype'
14802 glibpth='$glibpth'
14803 grep='$grep'
14804 groupcat='$groupcat'
14805 groupstype='$groupstype'
14806 gzip='$gzip'
14807 h_fcntl='$h_fcntl'
14808 h_sysfile='$h_sysfile'
14809 hint='$hint'
14810 hostcat='$hostcat'
14811 huge='$huge'
14812 i16size='$i16size'
14813 i16type='$i16type'
14814 i32size='$i32size'
14815 i32type='$i32type'
14816 i64size='$i64size'
14817 i64type='$i64type'
14818 i8size='$i8size'
14819 i8type='$i8type'
14820 i_arpainet='$i_arpainet'
14821 i_bsdioctl='$i_bsdioctl'
14822 i_db='$i_db'
14823 i_dbm='$i_dbm'
14824 i_dirent='$i_dirent'
14825 i_dld='$i_dld'
14826 i_dlfcn='$i_dlfcn'
14827 i_fcntl='$i_fcntl'
14828 i_float='$i_float'
14829 i_gdbm='$i_gdbm'
14830 i_grp='$i_grp'
14831 i_iconv='$i_iconv'
14832 i_inttypes='$i_inttypes'
14833 i_limits='$i_limits'
14834 i_locale='$i_locale'
14835 i_machcthr='$i_machcthr'
14836 i_malloc='$i_malloc'
14837 i_math='$i_math'
14838 i_memory='$i_memory'
14839 i_mntent='$i_mntent'
14840 i_ndbm='$i_ndbm'
14841 i_netdb='$i_netdb'
14842 i_neterrno='$i_neterrno'
14843 i_netinettcp='$i_netinettcp'
14844 i_niin='$i_niin'
14845 i_poll='$i_poll'
14846 i_pthread='$i_pthread'
14847 i_pwd='$i_pwd'
14848 i_rpcsvcdbm='$i_rpcsvcdbm'
14849 i_sfio='$i_sfio'
14850 i_sgtty='$i_sgtty'
14851 i_shadow='$i_shadow'
14852 i_socks='$i_socks'
14853 i_stdarg='$i_stdarg'
14854 i_stddef='$i_stddef'
14855 i_stdlib='$i_stdlib'
14856 i_string='$i_string'
14857 i_sysaccess='$i_sysaccess'
14858 i_sysdir='$i_sysdir'
14859 i_sysfile='$i_sysfile'
14860 i_sysfilio='$i_sysfilio'
14861 i_sysin='$i_sysin'
14862 i_sysioctl='$i_sysioctl'
14863 i_sysmount='$i_sysmount'
14864 i_sysndir='$i_sysndir'
14865 i_sysparam='$i_sysparam'
14866 i_sysresrc='$i_sysresrc'
14867 i_syssecrt='$i_syssecrt'
14868 i_sysselct='$i_sysselct'
14869 i_syssockio='$i_syssockio'
14870 i_sysstat='$i_sysstat'
14871 i_sysstatfs='$i_sysstatfs'
14872 i_sysstatvfs='$i_sysstatvfs'
14873 i_systime='$i_systime'
14874 i_systimek='$i_systimek'
14875 i_systimes='$i_systimes'
14876 i_systypes='$i_systypes'
14877 i_sysuio='$i_sysuio'
14878 i_sysun='$i_sysun'
14879 i_sysvfs='$i_sysvfs'
14880 i_syswait='$i_syswait'
14881 i_termio='$i_termio'
14882 i_termios='$i_termios'
14883 i_time='$i_time'
14884 i_unistd='$i_unistd'
14885 i_ustat='$i_ustat'
14886 i_utime='$i_utime'
14887 i_values='$i_values'
14888 i_varargs='$i_varargs'
14889 i_varhdr='$i_varhdr'
14890 i_vfork='$i_vfork'
14891 ignore_versioned_solibs='$ignore_versioned_solibs'
14892 inc_version_list='$inc_version_list'
14893 inc_version_list_init='$inc_version_list_init'
14894 incpath='$incpath'
14895 inews='$inews'
14896 installarchlib='$installarchlib'
14897 installbin='$installbin'
14898 installman1dir='$installman1dir'
14899 installman3dir='$installman3dir'
14900 installprefix='$installprefix'
14901 installprefixexp='$installprefixexp'
14902 installprivlib='$installprivlib'
14903 installscript='$installscript'
14904 installsitearch='$installsitearch'
14905 installsitebin='$installsitebin'
14906 installsitelib='$installsitelib'
14907 installstyle='$installstyle'
14908 installusrbinperl='$installusrbinperl'
14909 installvendorbin='$installvendorbin'
14910 installvendorlib='$installvendorlib'
14911 intsize='$intsize'
14912 ivdformat='$ivdformat'
14913 ivsize='$ivsize'
14914 ivtype='$ivtype'
14915 known_extensions='$known_extensions'
14916 ksh='$ksh'
14917 large='$large'
14918 ld='$ld'
14919 lddlflags='$lddlflags'
14920 ldflags='$ldflags'
14921 ldlibpthname='$ldlibpthname'
14922 less='$less'
14923 lib_ext='$lib_ext'
14924 libc='$libc'
14925 libperl='$libperl'
14926 libpth='$libpth'
14927 libs='$libs'
14928 libsdirs='$libsdirs'
14929 libsfiles='$libsfiles'
14930 libsfound='$libsfound'
14931 libswanted='$libswanted'
14932 line='$line'
14933 lint='$lint'
14934 lkflags='$lkflags'
14935 ln='$ln'
14936 lns='$lns'
14937 locincpth='$locincpth'
14938 loclibpth='$loclibpth'
14939 longdblsize='$longdblsize'
14940 longlongsize='$longlongsize'
14941 longsize='$longsize'
14942 lp='$lp'
14943 lpr='$lpr'
14944 ls='$ls'
14945 lseeksize='$lseeksize'
14946 lseektype='$lseektype'
14947 mail='$mail'
14948 mailx='$mailx'
14949 make='$make'
14950 make_set_make='$make_set_make'
14951 mallocobj='$mallocobj'
14952 mallocsrc='$mallocsrc'
14953 malloctype='$malloctype'
14954 man1dir='$man1dir'
14955 man1direxp='$man1direxp'
14956 man1ext='$man1ext'
14957 man3dir='$man3dir'
14958 man3direxp='$man3direxp'
14959 man3ext='$man3ext'
14960 medium='$medium'
14961 mips_type='$mips_type'
14962 mkdir='$mkdir'
14963 models='$models'
14964 modetype='$modetype'
14965 more='$more'
14966 multiarch='$multiarch'
14967 mv='$mv'
14968 myarchname='$myarchname'
14969 mydomain='$mydomain'
14970 myhostname='$myhostname'
14971 myuname='$myuname'
14972 n='$n'
14973 netdb_hlen_type='$netdb_hlen_type'
14974 netdb_host_type='$netdb_host_type'
14975 netdb_name_type='$netdb_name_type'
14976 netdb_net_type='$netdb_net_type'
14977 nm='$nm'
14978 nm_opt='$nm_opt'
14979 nm_so_opt='$nm_so_opt'
14980 nonxs_ext='$nonxs_ext'
14981 nroff='$nroff'
14982 nvsize='$nvsize'
14983 nvtype='$nvtype'
14984 o_nonblock='$o_nonblock'
14985 obj_ext='$obj_ext'
14986 old_pthread_create_joinable='$old_pthread_create_joinable'
14987 optimize='$optimize'
14988 orderlib='$orderlib'
14989 osname='$osname'
14990 osvers='$osvers'
14991 package='$package'
14992 pager='$pager'
14993 passcat='$passcat'
14994 patchlevel='$patchlevel'
14995 path_sep='$path_sep'
14996 perl='$perl'
14997 perladmin='$perladmin'
14998 perlpath='$perlpath'
14999 pg='$pg'
15000 phostname='$phostname'
15001 pidtype='$pidtype'
15002 plibpth='$plibpth'
15003 pmake='$pmake'
15004 pr='$pr'
15005 prefix='$prefix'
15006 prefixexp='$prefixexp'
15007 privlib='$privlib'
15008 privlibexp='$privlibexp'
15009 prototype='$prototype'
15010 ptrsize='$ptrsize'
15011 quadkind='$quadkind'
15012 quadtype='$quadtype'
15013 randbits='$randbits'
15014 randfunc='$randfunc'
15015 randseedtype='$randseedtype'
15016 ranlib='$ranlib'
15017 rd_nodata='$rd_nodata'
15018 rm='$rm'
15019 rmail='$rmail'
15020 runnm='$runnm'
15021 sPRIEldbl='$sPRIEldbl'
15022 sPRIFldbl='$sPRIFldbl'
15023 sPRIGldbl='$sPRIGldbl'
15024 sPRIX64='$sPRIX64'
15025 sPRId64='$sPRId64'
15026 sPRIeldbl='$sPRIeldbl'
15027 sPRIfldbl='$sPRIfldbl'
15028 sPRIgldbl='$sPRIgldbl'
15029 sPRIi64='$sPRIi64'
15030 sPRIo64='$sPRIo64'
15031 sPRIu64='$sPRIu64'
15032 sPRIx64='$sPRIx64'
15033 sched_yield='$sched_yield'
15034 scriptdir='$scriptdir'
15035 scriptdirexp='$scriptdirexp'
15036 sed='$sed'
15037 seedfunc='$seedfunc'
15038 selectminbits='$selectminbits'
15039 selecttype='$selecttype'
15040 sendmail='$sendmail'
15041 sh='$sh'
15042 shar='$shar'
15043 sharpbang='$sharpbang'
15044 shmattype='$shmattype'
15045 shortsize='$shortsize'
15046 shrpenv='$shrpenv'
15047 shsharp='$shsharp'
15048 sig_count='$sig_count'
15049 sig_name='$sig_name'
15050 sig_name_init='$sig_name_init'
15051 sig_num='$sig_num'
15052 sig_num_init='$sig_num_init'
15053 signal_t='$signal_t'
15054 sitearch='$sitearch'
15055 sitearchexp='$sitearchexp'
15056 sitebin='$sitebin'
15057 sitebinexp='$sitebinexp'
15058 sitelib='$sitelib'
15059 sitelibexp='$sitelibexp'
15060 siteprefix='$siteprefix'
15061 siteprefixexp='$siteprefixexp'
15062 sizetype='$sizetype'
15063 sleep='$sleep'
15064 smail='$smail'
15065 small='$small'
15066 so='$so'
15067 sockethdr='$sockethdr'
15068 socketlib='$socketlib'
15069 sort='$sort'
15070 spackage='$spackage'
15071 spitshell='$spitshell'
15072 split='$split'
15073 src='$src'
15074 ssizetype='$ssizetype'
15075 startperl='$startperl'
15076 startsh='$startsh'
15077 static_ext='$static_ext'
15078 stdchar='$stdchar'
15079 stdio_base='$stdio_base'
15080 stdio_bufsiz='$stdio_bufsiz'
15081 stdio_cnt='$stdio_cnt'
15082 stdio_filbuf='$stdio_filbuf'
15083 stdio_ptr='$stdio_ptr'
15084 stdio_stream_array='$stdio_stream_array'
15085 strings='$strings'
15086 submit='$submit'
15087 subversion='$subversion'
15088 sysman='$sysman'
15089 tail='$tail'
15090 tar='$tar'
15091 tbl='$tbl'
15092 tee='$tee'
15093 test='$test'
15094 timeincl='$timeincl'
15095 timetype='$timetype'
15096 touch='$touch'
15097 tr='$tr'
15098 trnl='$trnl'
15099 troff='$troff'
15100 u16size='$u16size'
15101 u16type='$u16type'
15102 u32size='$u32size'
15103 u32type='$u32type'
15104 u64size='$u64size'
15105 u64type='$u64type'
15106 u8size='$u8size'
15107 u8type='$u8type'
15108 uidformat='$uidformat'
15109 uidsign='$uidsign'
15110 uidsize='$uidsize'
15111 uidtype='$uidtype'
15112 uname='$uname'
15113 uniq='$uniq'
15114 uquadtype='$uquadtype'
15115 use5005threads='$use5005threads'
15116 use64bits='$use64bits'
15117 usedl='$usedl'
15118 useithreads='$useithreads'
15119 uselargefiles='$uselargefiles'
15120 uselongdouble='$uselongdouble'
15121 uselonglong='$uselonglong'
15122 usemorebits='$usemorebits'
15123 usemultiplicity='$usemultiplicity'
15124 usemymalloc='$usemymalloc'
15125 usenm='$usenm'
15126 useopcode='$useopcode'
15127 useperlio='$useperlio'
15128 useposix='$useposix'
15129 usesfio='$usesfio'
15130 useshrplib='$useshrplib'
15131 usesocks='$usesocks'
15132 usethreads='$usethreads'
15133 usevendorprefix='$usevendorprefix'
15134 usevfork='$usevfork'
15135 usrinc='$usrinc'
15136 uuname='$uuname'
15137 uvoformat='$uvoformat'
15138 uvsize='$uvsize'
15139 uvtype='$uvtype'
15140 uvuformat='$uvuformat'
15141 uvxformat='$uvxformat'
15142 vendorbin='$vendorbin'
15143 vendorbinexp='$vendorbinexp'
15144 vendorlib='$vendorlib'
15145 vendorlibexp='$vendorlibexp'
15146 vendorprefix='$vendorprefix'
15147 vendorprefixexp='$vendorprefixexp'
15148 version='$version'
15149 vi='$vi'
15150 voidflags='$voidflags'
15151 xlibpth='$xlibpth'
15152 zcat='$zcat'
15153 zip='$zip'
15154 EOT
15155
15156 : Add in command line options if available
15157 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15158
15159 : add special variables
15160 $test -f $src/patchlevel.h && \
15161 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15162 echo "CONFIGDOTSH=true" >>config.sh
15163
15164 : propagate old symbols
15165 if $test -f UU/config.sh; then
15166         <UU/config.sh sort | uniq >UU/oldconfig.sh
15167         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15168         sort | uniq -u >UU/oldsyms
15169         set X `cat UU/oldsyms`
15170         shift
15171         case $# in
15172         0) ;;
15173         *)
15174                 cat <<EOM
15175 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15176 EOM
15177                 echo "# Variables propagated from previous config.sh file." >>config.sh
15178                 for sym in `cat UU/oldsyms`; do
15179                         echo "    Propagating $hint variable "'$'"$sym..."
15180                         eval 'tmp="$'"${sym}"'"'
15181                         echo "$tmp" | \
15182                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15183                 done
15184                 ;;
15185         esac
15186 fi
15187
15188 : Finish up by extracting the .SH files
15189 case "$alldone" in
15190 exit)
15191         $rm -rf UU
15192         echo "Done."
15193         exit 0
15194         ;;
15195 cont)
15196         ;;
15197 '')
15198         dflt=''
15199         nostick=true
15200         $cat <<EOM
15201
15202 If you'd like to make any changes to the config.sh file before I begin
15203 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15204
15205 EOM
15206         rp="Press return or use a shell escape to edit config.sh:"
15207         . UU/myread
15208         nostick=''
15209         case "$ans" in
15210         '') ;;
15211         *) : in case they cannot read
15212                 sh 1>&4 -c "$ans";;
15213         esac
15214         ;;
15215 esac
15216
15217 : if this fails, just run all the .SH files by hand
15218 . ./config.sh
15219
15220 echo " "
15221 exec 1>&4
15222 . ./UU/extract
15223
15224 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15225         dflt=y
15226         case "$silent" in
15227         true) ;;
15228         *)
15229                 $cat <<EOM
15230
15231 Now you need to generate make dependencies by running "$make depend".
15232 You might prefer to run it in background: "$make depend > makedepend.out &"
15233 It can take a while, so you might not want to run it right now.
15234
15235 EOM
15236                 ;;
15237         esac
15238         rp="Run $make depend now?"
15239         . UU/myread
15240         case "$ans" in
15241         y*)
15242                 $make depend && echo "Now you must run a $make."
15243                 ;;
15244         *)
15245                 echo "You must run '$make depend' then '$make'."
15246                 ;;
15247         esac
15248 elif test -f [Mm]akefile; then
15249         echo " "
15250         echo "Now you must run a $make."
15251 else
15252         echo "Done."
15253 fi
15254
15255 if $test -f Policy.sh; then
15256     $cat <<EOM
15257
15258 If you compile $package on a different machine or from a different object
15259 directory, copy the Policy.sh file from this object directory to the
15260 new one before you run Configure -- this will help you with most of
15261 the policy defaults.
15262
15263 EOM
15264 fi
15265 if $test -f config.msg; then
15266     echo "Hmm.  I also noted the following information while running:"
15267     echo " "
15268     $cat config.msg >&4
15269     $rm -f config.msg
15270 fi
15271 $rm -f kit*isdone ark*isdone
15272 $rm -rf UU
15273
15274 : End of Configure
15275