typo fix
[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 20:55:50 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 EOM
2633         : Default to ithreads unless overridden on command line or with
2634         : old config.sh
2635         dflt='y'
2636         case "$use5005threads" in
2637                 $define|true|[yY]*) dflt='n';;
2638         esac
2639         case "$useithreads" in
2640                 $undef|false|[nN]*) dflt='n';;
2641         esac
2642         rp='Use interpreter-based ithreads?'
2643         . ./myread
2644         case "$ans" in
2645         y|Y)    val="$define" ;;
2646         *)      val="$undef" ;;
2647         esac
2648         set useithreads
2649         eval $setvar
2650         : Now set use5005threads to the opposite value.
2651         case "$useithreads" in
2652         $define) val="$undef" ;;
2653         *) val="$define" ;;
2654         esac
2655         set use5005threads
2656         eval $setvar
2657         ;;
2658 *)
2659         useithreads="$undef"
2660         use5005threads="$undef"
2661         ;;
2662 esac
2663
2664 case "$d_oldpthreads" in
2665 '')     : Configure tests would be welcome here.  For now, assume undef.
2666         val="$undef" ;;
2667 *)      val="$d_oldpthreads" ;;
2668 esac
2669 set d_oldpthreads
2670 eval $setvar
2671
2672
2673 case "$usethreads" in
2674 "$define"|true|[yY]*)
2675 : Look for a hint-file generated 'call-back-unit'.  If the
2676 : user has specified that a threading perl is to be built,
2677 : we may need to set or change some other defaults.
2678         if $test -f usethreads.cbu; then
2679                 echo "Your platform has some specific hints for threaded builds, using them..."
2680                 . ./usethreads.cbu
2681         else
2682                 $cat <<EOM
2683 (Your platform doesn't have any specific hints for threaded builds.
2684  Assuming POSIX threads, then.)
2685 EOM
2686         fi
2687         ;;
2688 esac
2689
2690 cat <<EOM
2691
2692 Perl can be built so that multiple Perl interpreters can coexist
2693 within the same Perl executable.
2694 EOM
2695
2696 case "$useithreads" in
2697 $define)
2698         cat <<EOM
2699 This multiple interpreter support is required for interpreter-based threads.
2700 EOM
2701         val="$define"
2702         ;;
2703 *)
2704         echo 'Normally you do not need this and you should answer no.'
2705         case "$usemultiplicity" in
2706         $define|true|[yY]*)     dflt='y';;
2707         *) dflt='n';;
2708         esac
2709         rp='Build Perl for multiplicity?'
2710         . ./myread
2711         case "$ans" in
2712         y|Y)    val="$define" ;;
2713         *)      val="$undef" ;;
2714         esac
2715         ;;
2716 esac
2717 set usemultiplicity
2718 eval $setvar
2719
2720 : determine where manual pages are on this system
2721 echo " "
2722 case "$sysman" in
2723 '') 
2724         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2725         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2726         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2727         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2728         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2729         sysman=`./loc . /usr/man/man1 $syspath`
2730         ;;
2731 esac
2732 if $test -d "$sysman"; then
2733         echo "System manual is in $sysman." >&4
2734 else
2735         echo "Could not find manual pages in source form." >&4
2736 fi
2737
2738 : see what memory models we can support
2739 case "$models" in
2740 '')
2741         $cat >pdp11.c <<'EOP'
2742 int main() {
2743 #ifdef pdp11
2744         exit(0);
2745 #else
2746         exit(1);
2747 #endif
2748 }
2749 EOP
2750         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2751         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2752                 dflt='unsplit split'
2753         else
2754                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2755                 case "$tans" in
2756                 X) dflt='none';;
2757                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2758                                 dflt='small'
2759                         else
2760                                 dflt=''
2761                         fi
2762                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2763                                 dflt="$dflt medium"
2764                         fi
2765                         if $test -d /lib/large || $test -d /usr/lib/large; then
2766                                 dflt="$dflt large"
2767                         fi
2768                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2769                                 dflt="$dflt huge"
2770                         fi
2771                 esac
2772         fi;;
2773 *) dflt="$models";;
2774 esac
2775 $cat <<EOM
2776  
2777 Some systems have different model sizes.  On most systems they are called
2778 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2779 split.  If your system doesn't support different memory models, say "none".
2780 If you wish to force everything to one memory model, say "none" here and
2781 put the appropriate flags later when it asks you for other cc and ld flags.
2782 Venix systems may wish to put "none" and let the compiler figure things out.
2783 (In the following question multiple model names should be space separated.)
2784
2785 The default for most systems is "none".
2786
2787 EOM
2788 rp="Which memory models are supported?"
2789 . ./myread
2790 models="$ans"
2791
2792 case "$models" in
2793 none)
2794         small=''
2795         medium=''
2796         large=''
2797         huge=''
2798         unsplit=''
2799         split=''
2800         ;;
2801 *split)
2802         case "$split" in
2803         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2804                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2805                         dflt='-i'
2806                 else
2807                         dflt='none'
2808                 fi;;
2809         *) dflt="$split";;
2810         esac
2811         rp="What flag indicates separate I and D space?"
2812         . ./myread
2813         tans="$ans"
2814         case "$tans" in
2815         none) tans='';;
2816         esac
2817         split="$tans"
2818         unsplit='';;
2819 *large*|*small*|*medium*|*huge*)
2820         case "$models" in
2821         *large*)
2822                 case "$large" in
2823                 '') dflt='-Ml';;
2824                 *) dflt="$large";;
2825                 esac
2826         rp="What flag indicates large model?"
2827         . ./myread
2828         tans="$ans"
2829         case "$tans" in
2830         none) tans='';
2831         esac
2832         large="$tans";;
2833         *) large='';;
2834         esac
2835         case "$models" in
2836         *huge*) case "$huge" in
2837                 '') dflt='-Mh';;
2838                 *) dflt="$huge";;
2839                 esac
2840                 rp="What flag indicates huge model?"
2841                 . ./myread
2842                 tans="$ans"
2843                 case "$tans" in
2844                 none) tans='';
2845                 esac
2846                 huge="$tans";;
2847         *) huge="$large";;
2848         esac
2849         case "$models" in
2850         *medium*) case "$medium" in
2851                 '') dflt='-Mm';;
2852                 *) dflt="$medium";;
2853                 esac
2854                 rp="What flag indicates medium model?"
2855                 . ./myread
2856                 tans="$ans"
2857                 case "$tans" in
2858                 none) tans='';
2859                 esac
2860                 medium="$tans";;
2861         *) medium="$large";;
2862         esac
2863         case "$models" in
2864         *small*) case "$small" in
2865                 '') dflt='none';;
2866                 *) dflt="$small";;
2867                 esac
2868                 rp="What flag indicates small model?"
2869                 . ./myread
2870                 tans="$ans"
2871                 case "$tans" in
2872                 none) tans='';
2873                 esac
2874                 small="$tans";;
2875         *) small='';;
2876         esac
2877         ;;
2878 *)
2879         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2880         ;;
2881 esac
2882 $rm -f pdp11.* pdp11
2883
2884 : make some quick guesses about what we are up against
2885 echo " "
2886 $echo $n "Hmm...  $c"
2887 echo exit 1 >bsd
2888 echo exit 1 >usg
2889 echo exit 1 >v7
2890 echo exit 1 >osf1
2891 echo exit 1 >eunice
2892 echo exit 1 >xenix
2893 echo exit 1 >venix
2894 echo exit 1 >os2
2895 d_bsd="$undef"
2896 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2897 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2898 then
2899         echo "Looks kind of like an OSF/1 system, but we'll see..."
2900         echo exit 0 >osf1
2901 elif test `echo abc | tr a-z A-Z` = Abc ; then
2902         xxx=`./loc addbib blurfl $pth`
2903         if $test -f $xxx; then
2904         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2905                 echo exit 0 >bsd
2906                 echo exit 0 >usg
2907         else
2908                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2909                         echo "Looks kind of like an extended USG system, but we'll see..."
2910                 else
2911                         echo "Looks kind of like a USG system, but we'll see..."
2912                 fi
2913                 echo exit 0 >usg
2914         fi
2915 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2916         echo "Looks kind of like a BSD system, but we'll see..."
2917         d_bsd="$define"
2918         echo exit 0 >bsd
2919 else
2920         echo "Looks kind of like a Version 7 system, but we'll see..."
2921         echo exit 0 >v7
2922 fi
2923 case "$eunicefix" in
2924 *unixtovms*)
2925         $cat <<'EOI'
2926 There is, however, a strange, musty smell in the air that reminds me of
2927 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2928 EOI
2929         echo exit 0 >eunice
2930         d_eunice="$define"
2931 : it so happens the Eunice I know will not run shell scripts in Unix format
2932         ;;
2933 *)
2934         echo " "
2935         echo "Congratulations.  You aren't running Eunice."
2936         d_eunice="$undef"
2937         ;;
2938 esac
2939 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2940 case "$p_" in
2941 :) ;;
2942 *)
2943         $cat <<'EOI'
2944 I have the feeling something is not exactly right, however...don't tell me...
2945 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2946 EOI
2947         echo exit 0 >os2
2948         ;;
2949 esac
2950 if test -f /xenix; then
2951         echo "Actually, this looks more like a XENIX system..."
2952         echo exit 0 >xenix
2953         d_xenix="$define"
2954 else
2955         echo " "
2956         echo "It's not Xenix..."
2957         d_xenix="$undef"
2958 fi
2959 chmod +x xenix
2960 $eunicefix xenix
2961 if test -f /venix; then
2962         echo "Actually, this looks more like a VENIX system..."
2963         echo exit 0 >venix
2964 else
2965         echo " "
2966         if ./xenix; then
2967                 : null
2968         else
2969                 echo "Nor is it Venix..."
2970         fi
2971 fi
2972 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2973 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2974 $rm -f foo
2975
2976 : see if we need a special compiler
2977 echo " "
2978 if ./usg; then
2979         case "$cc" in
2980         '') case "$Mcc" in
2981                 /*) dflt='Mcc';;
2982                 *) case "$large" in
2983                         -M*) dflt='cc';;
2984                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2985                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2986                                                 dflt='cc'
2987                                         else
2988                                                 dflt='cc -M'
2989                                         fi
2990                                 else
2991                                         dflt='cc'
2992                                 fi;;
2993                         esac;;
2994                 esac;;
2995         *)  dflt="$cc";;
2996         esac
2997         case "$dflt" in
2998         *M*)    $cat <<'EOM'
2999 On some older systems the default C compiler will not resolve multiple global
3000 references that happen to have the same name.  On some such systems the "Mcc"
3001 command may be used to force these to be resolved.  On other systems a "cc -M"
3002 command is required.  (Note that the -M flag on other systems indicates a
3003 memory model to use!) If you have the Gnu C compiler, you might wish to use
3004 that instead.
3005
3006 EOM
3007         ;;
3008         esac
3009         rp="Use which C compiler?"
3010         . ./myread
3011         cc="$ans"
3012 else
3013         case "$cc" in
3014         '') dflt=cc;;
3015         *) dflt="$cc";;
3016         esac
3017         rp="Use which C compiler?"
3018         . ./myread
3019         cc="$ans"
3020 fi
3021 : Look for a hint-file generated 'call-back-unit'.  Now that the
3022 : user has specified the compiler, we may need to set or change some
3023 : other defaults.
3024 if $test -f cc.cbu; then
3025     . ./cc.cbu
3026 fi
3027 echo " "
3028 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3029 $cat >gccvers.c <<EOM
3030 #include <stdio.h>
3031 int main() {
3032 #ifdef __GNUC__
3033 #ifdef __VERSION__
3034         printf("%s\n", __VERSION__);
3035 #else
3036         printf("%s\n", "1");
3037 #endif
3038 #endif
3039         exit(0);
3040 }
3041 EOM
3042 if $cc -o gccvers gccvers.c; then
3043         gccversion=`./gccvers`
3044         case "$gccversion" in
3045         '') echo "You are not using GNU cc." ;;
3046         *)  echo "You are using GNU cc $gccversion."
3047             ;;
3048         esac
3049 else
3050         echo " "
3051         echo "*** WHOA THERE!!! ***" >&4
3052         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3053         case "$knowitall" in
3054         '')
3055         echo "    You'd better start hunting for one and let me know about it." >&4
3056                 exit 1
3057                 ;;
3058         esac
3059 fi
3060 $rm -f gccvers*
3061 case "$gccversion" in
3062 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3063 esac
3064
3065 : decide how portable to be.  Allow command line overrides.
3066 case "$d_portable" in
3067 "$undef") ;;
3068 *)      d_portable="$define" ;;
3069 esac
3070
3071 : set up shell script to do ~ expansion
3072 cat >filexp <<EOSS
3073 $startsh
3074 : expand filename
3075 case "\$1" in
3076  ~/*|~)
3077         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3078         ;;
3079  ~*)
3080         if $test -f /bin/csh; then
3081                 /bin/csh -f -c "glob \$1"
3082                 failed=\$?
3083                 echo ""
3084                 exit \$failed
3085         else
3086                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3087                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3088                 if $test ! -d "\$dir"; then
3089                         me=\`basename \$0\`
3090                         echo "\$me: can't locate home directory for: \$name" >&2
3091                         exit 1
3092                 fi
3093                 case "\$1" in
3094                 */*)
3095                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3096                         ;;
3097                 *)
3098                         echo \$dir
3099                         ;;
3100                 esac
3101         fi
3102         ;;
3103 *)
3104         echo \$1
3105         ;;
3106 esac
3107 EOSS
3108 chmod +x filexp
3109 $eunicefix filexp
3110
3111 : now set up to get a file name
3112 cat <<EOS >getfile
3113 $startsh
3114 EOS
3115 cat <<'EOSC' >>getfile
3116 tilde=''
3117 fullpath=''
3118 already=''
3119 skip=''
3120 none_ok=''
3121 exp_file=''
3122 nopath_ok=''
3123 orig_rp="$rp"
3124 orig_dflt="$dflt"
3125 case "$gfpth" in
3126 '') gfpth='.' ;;
3127 esac
3128
3129 case "$fn" in
3130 *\(*)
3131         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3132         fn=`echo $fn | sed 's/(.*)//'`
3133         ;;
3134 esac
3135
3136 case "$fn" in
3137 *:*)
3138         loc_file=`expr $fn : '.*:\(.*\)'`
3139         fn=`expr $fn : '\(.*\):.*'`
3140         ;;
3141 esac
3142
3143 case "$fn" in
3144 *~*) tilde=true;;
3145 esac
3146 case "$fn" in
3147 */*) fullpath=true;;
3148 esac
3149 case "$fn" in
3150 *+*) skip=true;;
3151 esac
3152 case "$fn" in
3153 *n*) none_ok=true;;
3154 esac
3155 case "$fn" in
3156 *e*) exp_file=true;;
3157 esac
3158 case "$fn" in
3159 *p*) nopath_ok=true;;
3160 esac
3161
3162 case "$fn" in
3163 *f*) type='File';;
3164 *d*) type='Directory';;
3165 *l*) type='Locate';;
3166 esac
3167
3168 what="$type"
3169 case "$what" in
3170 Locate) what='File';;
3171 esac
3172
3173 case "$exp_file" in
3174 '')
3175         case "$d_portable" in
3176         "$define") ;;
3177         *) exp_file=true;;
3178         esac
3179         ;;
3180 esac
3181
3182 cd ..
3183 while test "$type"; do
3184         redo=''
3185         rp="$orig_rp"
3186         dflt="$orig_dflt"
3187         case "$tilde" in
3188         true) rp="$rp (~name ok)";;
3189         esac
3190         . UU/myread
3191         if test -f UU/getfile.ok && \
3192                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3193         then
3194                 value="$ans"
3195                 ansexp="$ans"
3196                 break
3197         fi
3198         case "$ans" in
3199         none)
3200                 value=''
3201                 ansexp=''
3202                 case "$none_ok" in
3203                 true) type='';;
3204                 esac
3205                 ;;
3206         *)
3207                 case "$tilde" in
3208                 '') value="$ans"
3209                         ansexp="$ans";;
3210                 *)
3211                         value=`UU/filexp $ans`
3212                         case $? in
3213                         0)
3214                                 if test "$ans" != "$value"; then
3215                                         echo "(That expands to $value on this system.)"
3216                                 fi
3217                                 ;;
3218                         *) value="$ans";;
3219                         esac
3220                         ansexp="$value"
3221                         case "$exp_file" in
3222                         '') value="$ans";;
3223                         esac
3224                         ;;
3225                 esac
3226                 case "$fullpath" in
3227                 true)
3228                         case "$ansexp" in
3229                         /*) value="$ansexp" ;;
3230                         *)
3231                                 redo=true
3232                                 case "$already" in
3233                                 true)
3234                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3235                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3236                                         ;;
3237                                 *)
3238                                 echo "Please give a full path name, starting with slash." >&4
3239                                         case "$tilde" in
3240                                         true)
3241                                 echo "Note that using ~name is ok provided it expands well." >&4
3242                                                 already=true
3243                                                 ;;
3244                                         esac
3245                                 esac
3246                                 ;;
3247                         esac
3248                         ;;
3249                 esac
3250                 case "$redo" in
3251                 '')
3252                         case "$type" in
3253                         File)
3254                                 for fp in $gfpth; do
3255                                         if test "X$fp" = X.; then
3256                                             pf="$ansexp"
3257                                         else    
3258                                             pf="$fp/$ansexp"
3259                                         fi
3260                                         if test -f "$pf"; then
3261                                                 type=''
3262                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3263                                         then
3264                                                 echo "($value is not a plain file, but that's ok.)"
3265                                                 type=''
3266                                         fi
3267                                         if test X"$type" = X; then
3268                                             value="$pf"
3269                                             break
3270                                         fi
3271                                 done
3272                                 ;;
3273                         Directory)
3274                                 for fp in $gfpth; do
3275                                         if test "X$fp" = X.; then
3276                                             pf="$ansexp"
3277                                         else    
3278                                             pf="$fp/$ansexp"
3279                                         fi
3280                                         if test -d "$pf"; then
3281                                                 type=''
3282                                                 value="$pf"
3283                                                 break
3284                                         fi
3285                                 done
3286                                 ;;
3287                         Locate)
3288                                 if test -d "$ansexp"; then
3289                                         echo "(Looking for $loc_file in directory $value.)"
3290                                         value="$value/$loc_file"
3291                                         ansexp="$ansexp/$loc_file"
3292                                 fi
3293                                 if test -f "$ansexp"; then
3294                                         type=''
3295                                 fi
3296                                 case "$nopath_ok" in
3297                                 true)   case "$value" in
3298                                         */*) ;;
3299                                         *)      echo "Assuming $value will be in people's path."
3300                                                 type=''
3301                                                 ;;
3302                                         esac
3303                                         ;;
3304                                 esac
3305                                 ;;
3306                         esac
3307
3308                         case "$skip" in
3309                         true) type='';
3310                         esac
3311
3312                         case "$type" in
3313                         '') ;;
3314                         *)
3315                                 if test "$fastread" = yes; then
3316                                         dflt=y
3317                                 else
3318                                         dflt=n
3319                                 fi
3320                                 rp="$what $value doesn't exist.  Use that name anyway?"
3321                                 . UU/myread
3322                                 dflt=''
3323                                 case "$ans" in
3324                                 y*) type='';;
3325                                 *) echo " ";;
3326                                 esac
3327                                 ;;
3328                         esac
3329                         ;;
3330                 esac
3331                 ;;
3332         esac
3333 done
3334 cd UU
3335 ans="$value"
3336 rp="$orig_rp"
3337 dflt="$orig_dflt"
3338 rm -f getfile.ok
3339 test "X$gfpthkeep" != Xy && gfpth=""
3340 EOSC
3341
3342 : What should the include directory be ?
3343 echo " "
3344 $echo $n "Hmm...  $c"
3345 dflt='/usr/include'
3346 incpath=''
3347 mips_type=''
3348 if $test -f /bin/mips && /bin/mips; then
3349         echo "Looks like a MIPS system..."
3350         $cat >usr.c <<'EOCP'
3351 #ifdef SYSTYPE_BSD43
3352 /bsd43
3353 #endif
3354 EOCP
3355         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3356                 dflt='/bsd43/usr/include'
3357                 incpath='/bsd43'
3358                 mips_type='BSD 4.3'
3359         else
3360                 mips_type='System V'
3361         fi
3362         $rm -f usr.c usr.out
3363         echo "and you're compiling with the $mips_type compiler and libraries."
3364         xxx_prompt=y
3365         echo "exit 0" >mips
3366 else
3367         echo "Doesn't look like a MIPS system."
3368         xxx_prompt=n
3369         echo "exit 1" >mips
3370 fi
3371 chmod +x mips
3372 $eunicefix mips
3373 case "$usrinc" in
3374 '') ;;
3375 *) dflt="$usrinc";;
3376 esac
3377 case "$xxx_prompt" in
3378 y)      fn=d/
3379         echo " "
3380         rp='Where are the include files you want to use?'
3381         . ./getfile
3382         usrinc="$ans"
3383         ;;
3384 *)      usrinc="$dflt"
3385         ;;
3386 esac
3387
3388 : see how we invoke the C preprocessor
3389 echo " "
3390 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3391 cat <<'EOT' >testcpp.c
3392 #define ABC abc
3393 #define XYZ xyz
3394 ABC.XYZ
3395 EOT
3396 cd ..
3397 if test ! -f cppstdin; then
3398         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3399                 # AIX cc -E doesn't show the absolute headerfile
3400                 # locations but we'll cheat by using the -M flag.
3401                 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
3402         else
3403                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3404         fi
3405 else
3406         echo "Keeping your $hint cppstdin wrapper."
3407 fi
3408 chmod 755 cppstdin
3409 wrapper=`pwd`/cppstdin
3410 ok='false'
3411 cd UU
3412
3413 if $test "X$cppstdin" != "X" && \
3414         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3415         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3416 then
3417         echo "You used to use $cppstdin $cppminus so we'll use that again."
3418         case "$cpprun" in
3419         '') echo "But let's see if we can live without a wrapper..." ;;
3420         *)
3421                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3422                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3423                 then
3424                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3425                         ok='true'
3426                 else
3427                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3428                 fi
3429                 ;;
3430         esac
3431 else
3432         case "$cppstdin" in
3433         '') ;;
3434         *)
3435                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3436                 ;;
3437         esac
3438 fi
3439
3440 if $ok; then
3441         : nothing
3442 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3443         $cc -E <testcpp.c >testcpp.out 2>&1; \
3444         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3445         echo "Yup, it does."
3446         x_cpp="$cc -E"
3447         x_minus='';
3448 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3449         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3450         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3451         echo "Yup, it does."
3452         x_cpp="$cc -E"
3453         x_minus='-';
3454 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3455         $cc -P <testcpp.c >testcpp.out 2>&1; \
3456         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3457         echo "Yipee, that works!"
3458         x_cpp="$cc -P"
3459         x_minus='';
3460 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3461         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3462         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3463         echo "At long last!"
3464         x_cpp="$cc -P"
3465         x_minus='-';
3466 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3467         $cpp <testcpp.c >testcpp.out 2>&1; \
3468         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3469         echo "It works!"
3470         x_cpp="$cpp"
3471         x_minus='';
3472 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3473         $cpp - <testcpp.c >testcpp.out 2>&1; \
3474         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3475         echo "Hooray, it works!  I was beginning to wonder."
3476         x_cpp="$cpp"
3477         x_minus='-';
3478 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3479         $wrapper <testcpp.c >testcpp.out 2>&1; \
3480         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3481         x_cpp="$wrapper"
3482         x_minus=''
3483         echo "Eureka!"
3484 else
3485         dflt=''
3486         rp="No dice.  I can't find a C preprocessor.  Name one:"
3487         . ./myread
3488         x_cpp="$ans"
3489         x_minus=''
3490         $x_cpp <testcpp.c >testcpp.out 2>&1
3491         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492                 echo "OK, that will do." >&4
3493         else
3494 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3495                 exit 1
3496         fi
3497 fi
3498
3499 case "$ok" in
3500 false)
3501         cppstdin="$x_cpp"
3502         cppminus="$x_minus"
3503         cpprun="$x_cpp"
3504         cpplast="$x_minus"
3505         set X $x_cpp
3506         shift
3507         case "$1" in
3508         "$cpp")
3509                 echo "Perhaps can we force $cc -E using a wrapper..."
3510                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3511                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3512                 then
3513                         echo "Yup, we can."
3514                         cppstdin="$wrapper"
3515                         cppminus='';
3516                 else
3517                         echo "Nope, we'll have to live without it..."
3518                 fi
3519                 ;;
3520         esac
3521         case "$cpprun" in
3522         "$wrapper")
3523                 cpprun=''
3524                 cpplast=''
3525                 ;;
3526         esac
3527         ;;
3528 esac
3529
3530 case "$cppstdin" in
3531 "$wrapper"|'cppstdin') ;;
3532 *) $rm -f $wrapper;;
3533 esac
3534 $rm -f testcpp.c testcpp.out
3535
3536 : Set private lib path
3537 case "$plibpth" in
3538 '') if ./mips; then
3539                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3540         fi;;
3541 esac
3542 case "$libpth" in
3543 ' ') dlist='';;
3544 '') dlist="$loclibpth $plibpth $glibpth";;
3545 *) dlist="$libpth";;
3546 esac
3547
3548 : Now check and see which directories actually exist, avoiding duplicates
3549 libpth=''
3550 for xxx in $dlist
3551 do
3552     if $test -d $xxx; then
3553                 case " $libpth " in
3554                 *" $xxx "*) ;;
3555                 *) libpth="$libpth $xxx";;
3556                 esac
3557     fi
3558 done
3559 $cat <<'EOM'
3560
3561 Some systems have incompatible or broken versions of libraries.  Among
3562 the directories listed in the question below, please remove any you
3563 know not to be holding relevant libraries, and add any that are needed.
3564 Say "none" for none.
3565
3566 EOM
3567 case "$libpth" in
3568 '') dflt='none';;
3569 *)
3570         set X $libpth
3571         shift
3572         dflt=${1+"$@"}
3573         ;;
3574 esac
3575 rp="Directories to use for library searches?"
3576 . ./myread
3577 case "$ans" in
3578 none) libpth=' ';;
3579 *) libpth="$ans";;
3580 esac
3581
3582 : compute shared library extension
3583 case "$so" in
3584 '')
3585         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3586                 dflt='sl'
3587         else
3588                 dflt='so'
3589         fi
3590         ;;
3591 *) dflt="$so";;
3592 esac
3593 $cat <<EOM
3594
3595 On some systems, shared libraries may be available.  Answer 'none' if
3596 you want to suppress searching of shared libraries for the remainder
3597 of this configuration.
3598
3599 EOM
3600 rp='What is the file extension used for shared libraries?'
3601 . ./myread
3602 so="$ans"
3603
3604 : Define several unixisms.
3605 : Hints files or command line option can be used to override them.
3606 : The convoluted testing is in case hints files set either the old
3607 : or the new name.
3608 case "$_exe" in
3609 '')     case "$exe_ext" in
3610     '') ;;
3611         *)      _exe="$exe_ext" ;;
3612         esac
3613         ;;
3614 esac
3615 case "$_a" in
3616 '')     case "$lib_ext" in
3617     '') _a='.a';;
3618         *)      _a="$lib_ext" ;;
3619         esac
3620         ;;
3621 esac
3622 case "$_o" in
3623 '') case "$obj_ext" in
3624         '')     _o='.o';;
3625         *)      _o="$obj_ext";;
3626         esac
3627         ;;
3628 esac
3629 case "$p_" in
3630 '') case "$path_sep" in
3631         '')     p_=':';;
3632         *)      p_="$path_sep";;
3633         esac
3634         ;;
3635 esac
3636 exe_ext=$_exe
3637 lib_ext=$_a
3638 obj_ext=$_o
3639 path_sep=$p_
3640
3641 : Which makefile gets called first.  This is used by make depend.
3642 case "$firstmakefile" in
3643 '') firstmakefile='makefile';;
3644 esac
3645
3646 cat <<EOM
3647
3648 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3649 Configure must be run with -Dusesocks.
3650
3651 Normally you do not need this and you should answer no.
3652
3653 EOM
3654 case "$usesocks" in
3655 $define|true|[yY]*)     dflt='y';;
3656 *) dflt='n';;
3657 esac
3658 rp='Build Perl for SOCKS?'
3659 . ./myread
3660 case "$ans" in
3661 y|Y)    val="$define" ;;     
3662 *)      val="$undef" ;;
3663 esac
3664 set usesocks
3665 eval $setvar
3666
3667 : Looking for optional libraries
3668 echo " "
3669 echo "Checking for optional libraries..." >&4
3670 case "$libs" in
3671 ' '|'') dflt='';;
3672 *) dflt="$libs";;
3673 esac
3674 case "$libswanted" in
3675 '') libswanted='c_s';;
3676 esac
3677 case "$usesocks" in
3678 $define)
3679         libswanted="$libswanted socks5 socks5_sh"
3680         ;;
3681 esac
3682 for thislib in $libswanted; do
3683         
3684         libname="$thislib"
3685         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3686                 if $test "X$ignore_versioned_solibs" = "X"; then
3687                         xxx=/ignored$xxx
3688                 else
3689                         libstyle=shared
3690                 fi
3691         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3692                 libstyle=shared
3693         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3694                 libstyle=static
3695         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3696                 libstyle=static
3697         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3698                 libstyle=static
3699                 libname=${thislib}_s
3700         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3701                 libstyle="static"
3702         fi
3703         if $test -f "$xxx"; then
3704                 eval $libscheck
3705         fi
3706         if $test -f "$xxx"; then
3707                 case "$libstyle" in
3708                 shared) echo "Found -l$libname (shared)." ;;
3709                 static) echo "Found -l$libname." ;;
3710                 *)      echo "Found -l$libname ($libstyle)." ;;
3711                 esac
3712                 case " $dflt " in
3713                 *"-l$thislib "*);;
3714                 *) dflt="$dflt -l$libname"
3715                    libsfound="$libsfound $xxx"
3716                    yyy=`basename $xxx`
3717                    libsfiles="$libsfiles $yyy"
3718                    yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3719                    case " $libsdirs " in
3720                    *" $yyy "*) ;;
3721                    *) libsdirs="$libsdirs $yyy" ;;
3722                    esac
3723                    ;;
3724                 esac
3725         else
3726                 echo "No -l$thislib."
3727         fi
3728 done
3729 set X $dflt
3730 shift
3731 dflt="$*"
3732 case "$libs" in
3733 '') dflt="$dflt";;
3734 *) dflt="$libs";;
3735 esac
3736 case "$dflt" in
3737 ' '|'') dflt='none';;
3738 esac
3739
3740 $cat <<EOM
3741
3742 In order to compile $package on your machine, a number of libraries
3743 are usually needed.  Include any other special libraries here as well.
3744 Say "none" for none.  The default list is almost always right.
3745 EOM
3746
3747 echo " "
3748 rp="What libraries to use?"
3749 . ./myread
3750 case "$ans" in
3751 none) libs=' ';;
3752 *) libs="$ans";;
3753 esac
3754
3755 : determine optimization, if desired, or use for debug flag also
3756 case "$optimize" in
3757 ' '|$undef) dflt='none';;
3758 '') dflt='-O';;
3759 *) dflt="$optimize";;
3760 esac
3761 $cat <<EOH
3762
3763 By default, $package compiles with the -O flag to use the optimizer.
3764 Alternately, you might want to use the symbolic debugger, which uses
3765 the -g flag (on traditional Unix systems).  Either flag can be
3766 specified here.  To use neither flag, specify the word "none".
3767
3768 EOH
3769 rp="What optimizer/debugger flag should be used?"
3770 . ./myread
3771 optimize="$ans"
3772 case "$optimize" in
3773 'none') optimize=" ";;
3774 esac
3775
3776 dflt=''
3777 : We will not override a previous value, but we might want to
3778 : augment a hint file
3779 case "$hint" in
3780 default|recommended)
3781         case "$gccversion" in
3782         1*) dflt='-fpcc-struct-return' ;;
3783         esac
3784         case "$optimize" in
3785         *-g*) dflt="$dflt -DDEBUGGING";;
3786         esac
3787         case "$gccversion" in
3788         2*) if test -d /etc/conf/kconfig.d &&
3789                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3790                 then
3791                         dflt="$dflt -posix"
3792                 fi
3793                 ;;
3794         esac
3795         case "$gccversion" in
3796         1*) ;;
3797         2.[0-8]*) ;;
3798         ?*)     echo " "
3799                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3800                 echo 'int main(void) { return 0; }' > gcctest.c
3801                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3802                         echo "Yes, it does." 2>&1
3803                         case "$ccflags" in
3804                         *strict-aliasing*) 
3805                                 echo "Leaving current flags $ccflags alone." 2>&1
3806                                 ;;
3807                         *) dflt="$dflt -fno-strict-aliasing" ;;
3808                         esac
3809                 else
3810                         echo "Nope, it doesn't, but that's ok." 2>&1
3811                 fi
3812                 ;;
3813         esac
3814         ;;
3815 esac
3816
3817 case "$mips_type" in
3818 *BSD*|'') inclwanted="$locincpth $usrinc";;
3819 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3820 esac
3821 for thisincl in $inclwanted; do
3822         if $test -d $thisincl; then
3823                 if $test x$thisincl != x$usrinc; then
3824                         case "$dflt" in
3825                         *$thisincl*);;
3826                         *) dflt="$dflt -I$thisincl";;
3827                         esac
3828                 fi
3829         fi
3830 done
3831
3832 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3833         xxx=true;
3834 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3835         xxx=true;
3836 else
3837         xxx=false;
3838 fi;
3839 if $xxx; then
3840         case "$dflt" in
3841         *$2*);;
3842         *) dflt="$dflt -D$2";;
3843         esac;
3844 fi'
3845
3846 set signal.h LANGUAGE_C; eval $inctest
3847
3848 case "$usesocks" in
3849 $define)
3850         ccflags="$ccflags -DSOCKS"
3851         ;;
3852 esac
3853
3854 case "$hint" in
3855 default|recommended) dflt="$ccflags $dflt" ;;
3856 *) dflt="$ccflags";;
3857 esac
3858
3859 case "$dflt" in
3860 ''|' ') dflt=none;;
3861 esac
3862 $cat <<EOH
3863
3864 Your C compiler may want other flags.  For this question you should include
3865 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3866 but you should NOT include libraries or ld flags like -lwhatever.  If you
3867 want $package to honor its debug switch, you should include -DDEBUGGING here.
3868 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3869
3870 To use no flags, specify the word "none".
3871
3872 EOH
3873 set X $dflt
3874 shift
3875 dflt=${1+"$@"}
3876 rp="Any additional cc flags?"
3877 . ./myread
3878 case "$ans" in
3879 none) ccflags='';;
3880 *) ccflags="$ans";;
3881 esac
3882
3883 : the following weeds options from ccflags that are of no interest to cpp
3884 cppflags="$ccflags"
3885 case "$gccversion" in
3886 1*) cppflags="$cppflags -D__GNUC__"
3887 esac
3888 case "$mips_type" in
3889 '');;
3890 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3891 esac
3892 case "$cppflags" in
3893 '');;
3894 *)
3895         echo " "
3896         echo "Let me guess what the preprocessor flags are..." >&4
3897         set X $cppflags
3898         shift
3899         cppflags=''
3900         $cat >cpp.c <<'EOM'
3901 #define BLURFL foo
3902
3903 BLURFL xx LFRULB
3904 EOM
3905         previous=''
3906         for flag in $*
3907         do
3908                 case "$flag" in
3909                 -*) ftry="$flag";;
3910                 *) ftry="$previous $flag";;
3911                 esac
3912                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3913                         >cpp1.out 2>/dev/null && \
3914                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3915                         >cpp2.out 2>/dev/null && \
3916                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3917                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3918                 then
3919                         cppflags="$cppflags $ftry"
3920                         previous=''
3921                 else
3922                         previous="$flag"
3923                 fi
3924         done
3925         set X $cppflags
3926         shift
3927         cppflags=${1+"$@"}
3928         case "$cppflags" in
3929         *-*)  echo "They appear to be: $cppflags";;
3930         esac
3931         $rm -f cpp.c cpp?.out
3932         ;;
3933 esac
3934
3935 : flags used in final linking phase
3936 case "$ldflags" in
3937 '') if ./venix; then
3938                 dflt='-i -z'
3939         else
3940                 dflt=''
3941         fi
3942         case "$ccflags" in
3943         *-posix*) dflt="$dflt -posix" ;;
3944         esac
3945         ;;
3946 *) dflt="$ldflags";;
3947 esac
3948
3949 : Try to guess additional flags to pick up local libraries.
3950 for thislibdir in $libpth; do
3951         case " $loclibpth " in
3952         *" $thislibdir "*)
3953                 case "$dflt " in 
3954                 *"-L$thislibdir "*) ;;
3955                 *)  dflt="$dflt -L$thislibdir" ;;
3956                 esac
3957                 ;;
3958         esac
3959 done
3960
3961 case "$dflt" in
3962 '') dflt='none' ;;
3963 esac
3964
3965 $cat <<EOH
3966
3967 Your C linker may need flags.  For this question you should
3968 include -L/whatever and any other flags used by the C linker, but you
3969 should NOT include libraries like -lwhatever.
3970
3971 Make sure you include the appropriate -L/path flags if your C linker
3972 does not normally search all of the directories you specified above,
3973 namely
3974         $libpth
3975 To use no flags, specify the word "none".
3976
3977 EOH
3978
3979 rp="Any additional ld flags (NOT including libraries)?"
3980 . ./myread
3981 case "$ans" in
3982 none) ldflags='';;
3983 *) ldflags="$ans";;
3984 esac
3985 rmlist="$rmlist pdp11"
3986
3987 : coherency check
3988 echo " "
3989 echo "Checking your choice of C compiler and flags for coherency..." >&4
3990 $cat > try.c <<'EOF'
3991 #include <stdio.h>
3992 int main() { printf("Ok\n"); exit(0); }
3993 EOF
3994 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
3995 shift
3996 $cat >try.msg <<'EOM'
3997 I've tried to compile and run the following simple program:
3998
3999 EOM
4000 $cat try.c >> try.msg
4001
4002 $cat >> try.msg <<EOM
4003
4004 I used the command:
4005
4006         $*
4007         ./try
4008
4009 and I got the following output:
4010
4011 EOM
4012 dflt=y
4013 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4014         if sh -c './try' >>try.msg 2>&1; then
4015                 xxx=`./try`
4016                 case "$xxx" in
4017                 "Ok") dflt=n ;;
4018                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4019                         case " $libs " in
4020                         *" -lsfio "*)
4021                                 cat >> try.msg <<'EOQS'
4022 If $libs contains -lsfio, and sfio is mis-configured, then it
4023 sometimes (apparently) runs and exits with a 0 status, but with no
4024 output!  It may have to do with sfio's use of _exit vs. exit.
4025
4026 EOQS
4027                                 rp="You have a big problem.  Shall I abort Configure"
4028                                 dflt=y
4029                                 ;;
4030                         esac
4031                         ;;
4032                 esac
4033         else
4034                 echo "The program compiled OK, but exited with status $?." >>try.msg
4035                 rp="You have a problem.  Shall I abort Configure"
4036                 dflt=y
4037         fi
4038 else
4039         echo "I can't compile the test program." >>try.msg
4040         rp="You have a BIG problem.  Shall I abort Configure"
4041         dflt=y
4042 fi
4043 case "$dflt" in
4044 y)
4045         $cat try.msg >&4
4046         case "$knowitall" in
4047         '')
4048                 echo "(The supplied flags or libraries might be incorrect.)"
4049                 ;;
4050         *) dflt=n;;
4051         esac
4052         echo " "
4053         . ./myread
4054         case "$ans" in
4055         n*|N*) ;;
4056         *)      echo "Ok.  Stopping Configure." >&4
4057                 exit 1
4058                 ;;
4059         esac
4060         ;;
4061 n) echo "OK, that should do.";;
4062 esac
4063 $rm -f try try.* core
4064
4065 : define an is-a-typedef? function
4066 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4067 case "$inclist" in
4068 "") inclist="sys/types.h";;
4069 esac;
4070 eval "varval=\$$var";
4071 case "$varval" in
4072 "")
4073         $rm -f temp.c;
4074         for inc in $inclist; do
4075                 echo "#include <$inc>" >>temp.c;
4076         done;
4077         echo "#ifdef $type" >> temp.c;
4078         echo "printf(\"We have $type\");" >> temp.c;
4079         echo "#endif" >> temp.c;
4080         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4081         if $contains $type temp.E >/dev/null 2>&1; then
4082                 eval "$var=\$type";
4083         else
4084                 eval "$var=\$def";
4085         fi;
4086         $rm -f temp.?;;
4087 *) eval "$var=\$varval";;
4088 esac'
4089
4090 : define an is-a-typedef? function that prompts if the type is not available.
4091 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4092 case "$inclist" in
4093 "") inclist="sys/types.h";;
4094 esac;
4095 eval "varval=\$$var";
4096 case "$varval" in
4097 "")
4098         $rm -f temp.c;
4099         for inc in $inclist; do
4100                 echo "#include <$inc>" >>temp.c;
4101         done;
4102         echo "#ifdef $type" >> temp.c;
4103         echo "printf(\"We have $type\");" >> temp.c;
4104         echo "#endif" >> temp.c;
4105         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4106         echo " " ;
4107         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4108         if $contains $type temp.E >/dev/null 2>&1; then
4109                 echo "$type found." >&4;
4110                 eval "$var=\$type";
4111         else
4112                 echo "$type NOT found." >&4;
4113                 dflt="$def";
4114                 . ./myread ;
4115                 eval "$var=\$ans";
4116         fi;
4117         $rm -f temp.?;;
4118 *) eval "$var=\$varval";;
4119 esac'
4120
4121 : define a shorthand compile call
4122 compile='
4123 mc_file=$1;
4124 shift;
4125 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4126 : define a shorthand compile call for compilations that should be ok.
4127 compile_ok='
4128 mc_file=$1;
4129 shift;
4130 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4131
4132 : check for lengths of integral types
4133 echo " "
4134 case "$intsize" in
4135 '')
4136         echo "Checking to see how big your integers are..." >&4
4137         $cat >intsize.c <<'EOCP'
4138 #include <stdio.h>
4139 int main()
4140 {
4141         printf("intsize=%d;\n", (int)sizeof(int));
4142         printf("longsize=%d;\n", (int)sizeof(long));
4143         printf("shortsize=%d;\n", (int)sizeof(short));
4144         exit(0);
4145 }
4146 EOCP
4147         set intsize
4148         if eval $compile_ok && ./intsize > /dev/null; then
4149                 eval `./intsize`
4150                 echo "Your integers are $intsize bytes long."
4151                 echo "Your long integers are $longsize bytes long."
4152                 echo "Your short integers are $shortsize bytes long."
4153         else
4154                 $cat >&4 <<EOM
4155 !
4156 Help! I can't compile and run the intsize test program: please enlighten me!
4157 (This is probably a misconfiguration in your system or libraries, and
4158 you really ought to fix it.  Still, I'll try anyway.)
4159 !
4160 EOM
4161                 dflt=4
4162                 rp="What is the size of an integer (in bytes)?"
4163                 . ./myread
4164                 intsize="$ans"
4165                 dflt=$intsize
4166                 rp="What is the size of a long integer (in bytes)?"
4167                 . ./myread
4168                 longsize="$ans"
4169                 dflt=2
4170                 rp="What is the size of a short integer (in bytes)?"
4171                 . ./myread
4172                 shortsize="$ans"
4173         fi
4174         ;;
4175 esac
4176 $rm -f intsize intsize.*
4177
4178 : see what type lseek is declared as in the kernel
4179 rp="What is the type used for lseek's offset on this system?"
4180 set off_t lseektype long stdio.h sys/types.h
4181 eval $typedef_ask
4182
4183 echo " "
4184 $echo $n "Checking to see how big your file offsets are...$c" >&4
4185 $cat >try.c <<EOCP
4186 #include <sys/types.h>
4187 #include <stdio.h>
4188 int main()
4189 {
4190     printf("%d\n", (int)sizeof($lseektype));
4191     return(0); 
4192 }
4193 EOCP
4194 set try
4195 if eval $compile_ok; then
4196         lseeksize=`./try`
4197         $echo " $lseeksize bytes." >&4
4198 else
4199         dflt=$longsize
4200         echo " "
4201         echo "(I can't seem to compile the test program.  Guessing...)"
4202         rp="What is the size of your file offsets (in bytes)?"
4203         . ./myread
4204         lseeksize="$ans"
4205 fi
4206 $rm -f try.c try
4207
4208 : see what type file positions are declared as in the library
4209 rp="What is the type for file position used by fsetpos()?"
4210 set fpos_t fpostype long stdio.h sys/types.h
4211 eval $typedef_ask
4212
4213 echo " "
4214 case "$fpostype" in
4215 *_t) zzz="$fpostype"    ;;
4216 *)   zzz="fpos_t"       ;;
4217 esac
4218 $echo $n "Checking the size of $zzz...$c" >&4 
4219 cat > try.c <<EOCP
4220 #include <sys/types.h>
4221 #include <stdio.h>
4222 int main() {
4223     printf("%d\n", (int)sizeof($fpostype));
4224     exit(0);
4225 }
4226 EOCP
4227 set try
4228 if eval $compile_ok; then
4229         yyy=`./try`
4230         case "$yyy" in
4231         '')     fpossize=4
4232                 echo " "
4233                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4234                 ;;
4235         *)      fpossize=$yyy
4236                 echo " $fpossize bytes."
4237                 ;;
4238         esac
4239 else
4240         dflt="$longsize"
4241         echo " "
4242         echo "(I can't compile the test program.  Guessing...)" >&4
4243         rp="What is the size of your file positions (in bytes)?"
4244         . ./myread
4245         fpossize="$ans"
4246 fi
4247
4248
4249
4250 case "$lseeksize:$fpossize" in
4251 8:8) cat <<EOM
4252
4253 You can have files larger than 2 gigabytes.
4254 EOM
4255    val="$define" ;;
4256 *) cat <<EOM
4257
4258 Perl can be built to understand large files (files larger than 2 gigabytes)
4259 on some systems.  To do so, Configure must be run with -Duselargefiles.
4260
4261 If this doesn't make any sense to you, just accept the default 'y'.
4262 EOM
4263    case "$uselargefiles" in
4264    "$undef"|false|[nN]*) dflt='n' ;;
4265    *)   dflt='y' ;;
4266    esac
4267    rp='Try to understand large files, if available?'
4268    . ./myread
4269    case "$ans" in
4270    y|Y)         val="$define" ;;
4271    *)           val="$undef"  ;;
4272    esac
4273    ;;
4274 esac
4275 set uselargefiles
4276 eval $setvar
4277 case "$uselargefiles" in
4278 "$define")
4279 : Look for a hint-file generated 'call-back-unit'.  If the
4280 : user has specified that a large files perl is to be built,
4281 : we may need to set or change some other defaults.
4282         if $test -f uselfs.cbu; then
4283                 echo "Your platform has some specific hints for large file builds, using them..."
4284                 . ./uselfs.cbu
4285                 echo " "
4286                 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4287                 $cat >try.c <<EOCP
4288 #include <sys/types.h>
4289 #include <stdio.h>
4290 int main()
4291 {
4292     printf("%d\n", (int)sizeof($lseektype));
4293     return(0); 
4294 }
4295 EOCP
4296                 set try
4297                 if eval $compile_ok; then
4298                         lseeksize=`./try`
4299                         $echo " $lseeksize bytes." >&4
4300                 else
4301                         dflt="$lseeksize"
4302                         echo " "
4303                         echo "(I can't seem to compile the test program.  Guessing...)"
4304                         rp="What is the size of your file offsets (in bytes)?"
4305                         . ./myread
4306                         lseeksize="$ans"
4307                 fi
4308                 case "$fpostype" in
4309                 *_t) zzz="$fpostype"    ;;
4310                 *)   zzz="fpos_t"       ;;
4311                 esac
4312                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4313                 $cat > try.c <<EOCP
4314 #include <sys/types.h>
4315 #include <stdio.h>
4316 int main() {
4317     printf("%d\n", (int)sizeof($fpostype));
4318     exit(0);
4319 }
4320 EOCP
4321                 set try
4322                 if eval $compile_ok; then
4323                         yyy=`./try`
4324                         dflt="$lseeksize"
4325                         case "$yyy" in
4326                         '')     echo " "
4327                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4328                                 ;;
4329                         *)      fpossize=$yyy
4330                                 echo " $fpossize bytes."
4331                                 ;;
4332                         esac
4333                 else
4334                         dflt="$fpossize"
4335                         echo " "
4336                         echo "(I can't compile the test program.  Guessing...)" >&4
4337                         rp="What is the size of your file positions (in bytes)?"
4338                         . ./myread
4339                         fpossize="$ans"
4340                 fi
4341                 $rm -f try.c try
4342         fi
4343         ;;
4344 esac
4345
4346
4347 case "$usemorebits" in
4348 "$define"|true|[yY]*)
4349         use64bits="$define"
4350         uselongdouble="$define"
4351         usemorebits="$define"
4352         ;;
4353 *)      usemorebits="$undef"
4354         ;;
4355 esac
4356
4357
4358 case "$intsize:$longsize" in
4359 8:*|*:8) cat <<EOM
4360
4361 You have natively 64-bit integers.
4362 EOM
4363    val="$define" ;;
4364 *) cat <<EOM
4365
4366 Perl can be built to take advantage of 64-bit integer types
4367 on some systems.  To do so, Configure must be run with -Duse64bits.
4368
4369 If this doesn't make any sense to you, just accept the default.
4370 EOM
4371   case "$use64bits" in
4372   $define|true|[yY]*)   dflt='y';;
4373   *) dflt='n';;
4374   esac
4375   rp='Try to use 64-bit integers, if available?'
4376   . ./myread
4377   case "$ans" in
4378   y|Y) val="$define" ;;
4379   *)   val="$undef"  ;;
4380   esac
4381   ;;
4382 esac
4383 set use64bits
4384 eval $setvar
4385
4386 case "$archname64" in
4387 '') archname64='' ;;    # not a typo
4388 esac
4389
4390 case "$use64bits" in
4391 "$define"|true|[yY]*)
4392 : Look for a hint-file generated 'call-back-unit'.  If the
4393 : user has specified that a 64-bit perl is to be built,
4394 : we may need to set or change some other defaults.
4395         if $test -f use64bits.cbu; then
4396                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4397                 . ./use64bits.cbu
4398         else
4399                 $cat <<EOM
4400 (Your platform doesn't have any specific hints for 64-bit builds.)
4401 EOM
4402                 case "$intsize:$longsize" in
4403 8:*|*:8) cat <<EOM
4404 (This is probably okay, as your system is a natively 64-bit system.)
4405 EOM
4406                   ;;
4407                 esac
4408                 case "$gccversion" in
4409                 '')     ;;
4410                 *)      case "$ccflags" in
4411                         *-DUSE_LONG_LONG*) ;;
4412                         *) $cat <<EOM
4413 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4414 to the compilation flags.
4415 EOM
4416                            ccflags="$ccflags -DUSE_LONG_LONG"
4417                            ;;
4418                         esac
4419                         ;;
4420                 esac
4421         fi
4422         ;;
4423 esac
4424
4425 : determine the architecture name
4426 echo " "
4427 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4428         tarch=`arch`"-$osname"
4429 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4430         if uname -m > tmparch 2>&1 ; then
4431                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4432                         -e 's/$/'"-$osname/" tmparch`
4433         else
4434                 tarch="$osname"
4435         fi
4436         $rm -f tmparch
4437 else
4438         tarch="$osname"
4439 fi
4440 case "$myarchname" in
4441 ''|"$tarch") ;;
4442 *)
4443         echo "(Your architecture name used to be $myarchname.)"
4444         archname=''
4445         ;;
4446 esac
4447 myarchname="$tarch"
4448 case "$archname" in
4449 '') dflt="$tarch";;
4450 *) dflt="$archname";;
4451 esac
4452 rp='What is your architecture name'
4453 . ./myread
4454 archname="$ans"
4455 case "$usethreads" in
4456 $define)
4457         echo "Threads selected." >&4
4458         case "$archname" in
4459         *-thread*) echo "...and architecture name already has -thread." >&4
4460                 ;;
4461         *)      archname="$archname-thread"
4462                 echo "...setting architecture name to $archname." >&4
4463                 ;;
4464         esac
4465         ;;
4466 esac
4467 case "$usemultiplicity" in
4468 $define)
4469         echo "Multiplicity selected." >&4
4470         case "$archname" in
4471         *-multi*) echo "...and architecture name already has -multi." >&4
4472                 ;;
4473         *)      archname="$archname-multi"
4474                 echo "...setting architecture name to $archname." >&4
4475                 ;;
4476         esac
4477         ;;
4478 esac
4479 case "$use64bits" in
4480 $define)
4481         case "$archname64" in
4482         '')
4483                 ;;
4484         *)
4485                 case "$archname" in
4486                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4487                         ;;
4488                 *)      archname="$archname-$archname64"
4489                         echo "...setting architecture name to $archname." >&4
4490                         ;;
4491                 esac
4492                 ;;
4493         esac
4494 esac
4495
4496 : determine root of directory hierarchy where package will be installed.
4497 case "$prefix" in
4498 '')
4499         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4500         ;;
4501 *)
4502         dflt="$prefix"
4503         ;;
4504 esac
4505 $cat <<EOM
4506
4507 By default, $package will be installed in $dflt/bin, manual pages
4508 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4509 installation directories. Typically this is something like /usr/local.
4510 If you wish to have binaries under /usr/bin but other parts of the
4511 installation under /usr/local, that's ok: you will be prompted
4512 separately for each of the installation directories, the prefix being
4513 only used to set the defaults.
4514
4515 EOM
4516 fn=d~
4517 rp='Installation prefix to use?'
4518 . ./getfile
4519 oldprefix=''
4520 case "$prefix" in
4521 '') ;;
4522 *)
4523         case "$ans" in
4524         "$prefix") ;;
4525         *) oldprefix="$prefix";;
4526         esac
4527         ;;
4528 esac
4529 prefix="$ans"
4530 prefixexp="$ansexp"
4531
4532 : is AFS running?
4533 echo " "
4534 case "$afs" in
4535 $define|true)   afs=true ;;
4536 $undef|false)   afs=false ;;
4537 *)      if test -d /afs; then
4538                 afs=true
4539         else
4540                 afs=false
4541         fi
4542         ;;
4543 esac
4544 if $afs; then
4545         echo "AFS may be running... I'll be extra cautious then..." >&4
4546 else
4547         echo "AFS does not seem to be running..." >&4
4548 fi
4549
4550 : determine installation prefix for where package is to be installed.
4551 if $afs; then 
4552 $cat <<EOM
4553
4554 Since you are running AFS, I need to distinguish the directory in which
4555 files will reside from the directory in which they are installed (and from
4556 which they are presumably copied to the former directory by occult means).
4557
4558 EOM
4559         case "$installprefix" in
4560         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4561         *) dflt="$installprefix";;
4562         esac
4563 else
4564 $cat <<EOM
4565
4566 In some special cases, particularly when building $package for distribution,
4567 it is convenient to distinguish between the directory in which files should 
4568 be installed from the directory ($prefix) in which they 
4569 will eventually reside.  For most users, these two directories are the same.
4570
4571 EOM
4572         case "$installprefix" in
4573         '') dflt=$prefix ;;
4574         *) dflt=$installprefix;;
4575         esac
4576 fi
4577 fn=d~
4578 rp='What installation prefix should I use for installing files?'
4579 . ./getfile
4580 installprefix="$ans"
4581 installprefixexp="$ansexp"
4582
4583 : set the prefixit variable, to compute a suitable default value
4584 prefixit='case "$3" in
4585 ""|none)
4586         case "$oldprefix" in
4587         "") eval "$1=\"\$$2\"";;
4588         *)
4589                 case "$3" in
4590                 "") eval "$1=";;
4591                 none)
4592                         eval "tp=\"\$$2\"";
4593                         case "$tp" in
4594                         ""|" ") eval "$1=\"\$$2\"";;
4595                         *) eval "$1=";;
4596                         esac;;
4597                 esac;;
4598         esac;;
4599 *)
4600         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4601         case "$tp" in
4602         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4603         /*-$oldprefix/*|\~*-$oldprefix/*)
4604                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4605         *) eval "$1=\"\$$2\"";;
4606         esac;;
4607 esac'
4608
4609 : set the base revision
4610 baserev=5.0
4611
4612
4613 : get the patchlevel
4614 echo " "
4615 echo "Getting the current patchlevel..." >&4
4616 if $test -r $rsrc/patchlevel.h;then
4617         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4618         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4619         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4620         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4621         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4622 else
4623         patchlevel=0
4624         subversion=0
4625         api_revision=0
4626         api_version=0
4627         api_subversion=0
4628 fi
4629 $echo $n "(You have $package" $c
4630 case "$package" in
4631 "*$baserev")    ;;
4632 *)              $echo $n " $baserev" $c ;;
4633 esac
4634 $echo $n " patchlevel $patchlevel" $c
4635 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4636 echo ".)"
4637 case "$osname" in
4638 dos|cygwin|vms|win32)
4639         : XXX Should be a Configure test for double-dots in filenames.
4640         version=`echo $baserev $patchlevel $subversion | \
4641                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4642         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4643                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4644         ;;
4645 *)
4646         version=`echo $baserev $patchlevel $subversion | \
4647                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4648         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4649                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4650         ;;
4651 esac
4652 : Special case the 5.005_xx maintenance series, which used 5.005
4653 : without any subversion label as a subdirectory in $sitelib
4654 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4655         api_versionstring='5.005'
4656 fi
4657
4658 : determine installation style
4659 : For now, try to deduce it from prefix unless it is already set.
4660 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4661 case "$installstyle" in
4662 '')     case "$prefix" in
4663                 *perl*) dflt='lib';;
4664                 *) dflt='lib/perl5' ;;
4665         esac
4666         ;;
4667 *)      dflt='lib/perl5' ;;
4668 esac
4669 : Probably not worth prompting for this since we prompt for all
4670 : the directories individually, and the prompt would be too long and
4671 : confusing anyway.
4672 installstyle=$dflt
4673
4674 : determine where private library files go
4675 : Usual default is /usr/local/lib/perl5/$version.
4676 : Also allow things like /opt/perl/lib/$version, since 
4677 : /opt/perl/lib/perl5... would be redundant.
4678 : The default "style" setting is made in installstyle.U
4679 case "$installstyle" in
4680 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4681 *)       set dflt privlib lib/$version ;;
4682 esac
4683 eval $prefixit
4684 $cat <<EOM
4685
4686 There are some auxiliary files for $package that need to be put into a
4687 private library directory that is accessible by everyone.
4688
4689 EOM
4690 fn=d~+
4691 rp='Pathname where the private library files will reside?'
4692 . ./getfile
4693 privlib="$ans"
4694 privlibexp="$ansexp"
4695 : Change installation prefix, if necessary.
4696 if $test X"$prefix" != X"$installprefix"; then
4697         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4698 else
4699         installprivlib="$privlibexp"
4700 fi
4701
4702 : set the prefixup variable, to restore leading tilda escape
4703 prefixup='case "$prefixexp" in
4704 "$prefix") ;;
4705 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4706 esac'
4707
4708 : determine where public architecture dependent libraries go
4709 set archlib archlib
4710 eval $prefixit
4711 : privlib default is /usr/local/lib/$package/$version
4712 : archlib default is /usr/local/lib/$package/$version/$archname
4713 : privlib may have an optional trailing /share.
4714 tdflt=`echo $privlib | $sed 's,/share$,,'`
4715 tdflt=$tdflt/$archname
4716 case "$archlib" in
4717 '')     dflt=$tdflt
4718         ;;
4719 *)      dflt="$archlib"
4720     ;;
4721 esac
4722 $cat <<EOM
4723
4724 $spackage contains architecture-dependent library files.  If you are
4725 sharing libraries in a heterogeneous environment, you might store
4726 these files in a separate location.  Otherwise, you can just include
4727 them with the rest of the public library files.
4728
4729 EOM
4730 fn=d+~
4731 rp='Where do you want to put the public architecture-dependent libraries?'
4732 . ./getfile
4733 archlib="$ans"
4734 archlibexp="$ansexp"
4735 if $test X"$archlib" = X"$privlib"; then
4736         d_archlib="$undef"
4737 else
4738         d_archlib="$define"
4739 fi
4740 : Change installation prefix, if necessary.
4741 if $test X"$prefix" != X"$installprefix"; then
4742         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4743 else
4744         installarchlib="$archlibexp"
4745 fi
4746
4747
4748 : Binary compatibility with 5.005 is not possible for builds
4749 : with advanced features
4750 case "$usethreads$usemultiplicity" in
4751 *define*)
4752         bincompat5005="$undef"
4753         d_bincompat5005="$undef"
4754         ;;
4755 *)      $cat <<EOM
4756
4757 Perl 5.006 can be compiled for binary compatibility with 5.005.
4758 If you decide to do so, you will be able to continue using most
4759 of the extensions that were compiled for Perl 5.005.
4760
4761 EOM
4762         case "$bincompat5005$d_bincompat5005" in
4763         *"$undef"*) dflt=n ;;
4764         *) dflt=y ;;
4765         esac
4766         rp='Binary compatibility with Perl 5.005?'
4767         . ./myread
4768         case "$ans" in
4769         y*) val="$define" ;;
4770         *)  val="$undef" ;;
4771         esac
4772         set d_bincompat5005
4773         eval $setvar
4774         case "$d_bincompat5005" in
4775         "$define")
4776                 bincompat5005="$define"
4777                 ;;
4778         *)      bincompat5005="$undef"
4779                 d_bincompat5005="$undef"
4780                 ;;
4781         esac
4782         ;;
4783 esac
4784
4785
4786 : see if setuid scripts can be secure
4787 $cat <<EOM
4788
4789 Some kernels have a bug that prevents setuid #! scripts from being
4790 secure.  Some sites have disabled setuid #! scripts because of this.
4791
4792 First let's decide if your kernel supports secure setuid #! scripts.
4793 (If setuid #! scripts would be secure but have been disabled anyway,
4794 don't say that they are secure if asked.)
4795
4796 EOM
4797
4798 val="$undef"
4799 if $test -d /dev/fd; then
4800         echo "#!$ls" >reflect
4801         chmod +x,u+s reflect
4802         ./reflect >flect 2>&1
4803         if $contains "/dev/fd" flect >/dev/null; then
4804                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4805                 val="$define"
4806         else
4807                 $cat <<EOM
4808 If you are not sure if they are secure, I can check but I'll need a
4809 username and password different from the one you are using right now.
4810 If you don't have such a username or don't want me to test, simply
4811 enter 'none'.
4812
4813 EOM
4814                 rp='Other username to test security of setuid scripts with?'
4815                 dflt='none'
4816                 . ./myread
4817                 case "$ans" in
4818                 n|none)
4819                         case "$d_suidsafe" in
4820                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4821                                 dflt=n;;
4822                         "$undef")
4823                                 echo "Well, the $hint value is *not* secure." >&4
4824                                 dflt=n;;
4825                         *)      echo "Well, the $hint value *is* secure." >&4
4826                                 dflt=y;;
4827                         esac
4828                         ;;
4829                 *)
4830                         $rm -f reflect flect
4831                         echo "#!$ls" >reflect
4832                         chmod +x,u+s reflect
4833                         echo >flect
4834                         chmod a+w flect
4835                         echo '"su" will (probably) prompt you for '"$ans's password."
4836                         su $ans -c './reflect >flect'
4837                         if $contains "/dev/fd" flect >/dev/null; then
4838                                 echo "Okay, it looks like setuid scripts are secure." >&4
4839                                 dflt=y
4840                         else
4841                                 echo "I don't think setuid scripts are secure." >&4
4842                                 dflt=n
4843                         fi
4844                         ;;
4845                 esac
4846                 rp='Does your kernel have *secure* setuid scripts?'
4847                 . ./myread
4848                 case "$ans" in
4849                 [yY]*)  val="$define";;
4850                 *)      val="$undef";;
4851                 esac
4852         fi
4853 else
4854         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4855         echo "(That's for file descriptors, not floppy disks.)"
4856         val="$undef"
4857 fi
4858 set d_suidsafe
4859 eval $setvar
4860
4861 $rm -f reflect flect
4862
4863 : now see if they want to do setuid emulation
4864 echo " "
4865 val="$undef"
4866 case "$d_suidsafe" in
4867 "$define")
4868         val="$undef"
4869         echo "No need to emulate SUID scripts since they are secure here." >& 4
4870         ;;
4871 *)
4872         $cat <<EOM
4873 Some systems have disabled setuid scripts, especially systems where
4874 setuid scripts cannot be secure.  On systems where setuid scripts have
4875 been disabled, the setuid/setgid bits on scripts are currently
4876 useless.  It is possible for $package to detect those bits and emulate
4877 setuid/setgid in a secure fashion.  This emulation will only work if
4878 setuid scripts have been disabled in your kernel.
4879
4880 EOM
4881         case "$d_dosuid" in
4882         "$define") dflt=y ;;
4883         *) dflt=n ;;
4884         esac
4885         rp="Do you want to do setuid/setgid emulation?"
4886         . ./myread
4887         case "$ans" in
4888         [yY]*)  val="$define";;
4889         *)      val="$undef";;
4890         esac
4891         ;;
4892 esac
4893 set d_dosuid
4894 eval $setvar
4895
4896 : determine filename position in cpp output
4897 echo " "
4898 echo "Computing filename position in cpp output for #include directives..." >&4
4899 echo '#include <stdio.h>' > foo.c
4900 $cat >fieldn <<EOF
4901 $startsh
4902 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4903 $grep '^[       ]*#.*stdio\.h' | \
4904 while read cline; do
4905         pos=1
4906         set \$cline
4907         while $test \$# -gt 0; do
4908                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4909                         echo "\$pos"
4910                         exit 0
4911                 fi
4912                 shift
4913                 pos=\`expr \$pos + 1\`
4914         done
4915 done
4916 EOF
4917 chmod +x fieldn
4918 fieldn=`./fieldn`
4919 $rm -f foo.c fieldn
4920 case $fieldn in
4921 '') pos='???';;
4922 1) pos=first;;
4923 2) pos=second;;
4924 3) pos=third;;
4925 *) pos="${fieldn}th";;
4926 esac
4927 echo "Your cpp writes the filename in the $pos field of the line."
4928
4929 : locate header file
4930 $cat >findhdr <<EOF
4931 $startsh
4932 wanted=\$1
4933 name=''
4934 for usrincdir in $usrinc
4935 do
4936         if test -f \$usrincdir/\$wanted; then
4937                 echo "\$usrincdir/\$wanted"
4938                 exit 0
4939         fi
4940 done
4941 awkprg='{ print \$$fieldn }'
4942 echo "#include <\$wanted>" > foo\$\$.c
4943 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4944 $grep "^[       ]*#.*\$wanted" | \
4945 while read cline; do
4946         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4947         case "\$name" in
4948         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4949         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4950         *) exit 2;;
4951         esac;
4952 done;
4953 #
4954 # status = 0: grep returned 0 lines, case statement not executed
4955 # status = 1: headerfile found
4956 # status = 2: while loop executed, no headerfile found
4957 #
4958 status=\$?
4959 $rm -f foo\$\$.c;
4960 if test \$status -eq 1; then
4961         exit 0;
4962 fi
4963 exit 1
4964 EOF
4965 chmod +x findhdr
4966
4967 : define an alternate in-header-list? function
4968 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4969 cont=true; xxf="echo \"<\$1> found.\" >&4";
4970 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4971 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4972 esac;
4973 case $# in 4) instead=instead;; *) instead="at last";; esac;
4974 while $test "$cont"; do
4975         xxx=`./findhdr $1`
4976         var=$2; eval "was=\$$2";
4977         if $test "$xxx" && $test -r "$xxx";
4978         then eval $xxf;
4979         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4980                 cont="";
4981         else eval $xxnf;
4982         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4983         set $yyy; shift; shift; yyy=$@;
4984         case $# in 0) cont="";;
4985         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4986                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4987         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4988                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4989         esac;
4990 done;
4991 while $test "$yyy";
4992 do set $yyy; var=$2; eval "was=\$$2";
4993         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4994         set $yyy; shift; shift; yyy=$@;
4995 done'
4996
4997 : see if this is a malloc.h system
4998 set malloc.h i_malloc
4999 eval $inhdr
5000
5001 : see if stdlib is available
5002 set stdlib.h i_stdlib
5003 eval $inhdr
5004
5005 : determine which malloc to compile in
5006 echo " "
5007 case "$usemymalloc" in
5008 ''|[yY]*|true|$define)  dflt='y' ;;
5009 *)      dflt='n' ;;
5010 esac
5011 rp="Do you wish to attempt to use the malloc that comes with $package?"
5012 . ./myread
5013 usemymalloc="$ans"
5014 case "$ans" in
5015 y*|true)
5016         usemymalloc='y'
5017         mallocsrc='malloc.c'
5018         mallocobj="malloc$_o"
5019         d_mymalloc="$define"
5020         case "$libs" in
5021         *-lmalloc*)
5022                 : Remove malloc from list of libraries to use
5023                 echo "Removing unneeded -lmalloc from library list" >&4
5024                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5025                 shift
5026                 libs="$*"
5027                 echo "libs = $libs" >&4
5028                 ;;
5029         esac
5030         ;;
5031 *)
5032         usemymalloc='n'
5033         mallocsrc=''
5034         mallocobj=''
5035         d_mymalloc="$undef"
5036         ;;
5037 esac
5038
5039 : compute the return types of malloc and free
5040 echo " "
5041 $cat >malloc.c <<END
5042 #$i_malloc I_MALLOC
5043 #$i_stdlib I_STDLIB
5044 #include <stdio.h>
5045 #include <sys/types.h>
5046 #ifdef I_MALLOC
5047 #include <malloc.h>
5048 #endif
5049 #ifdef I_STDLIB
5050 #include <stdlib.h>
5051 #endif
5052 #ifdef TRY_MALLOC
5053 void *malloc();
5054 #endif
5055 #ifdef TRY_FREE
5056 void free();
5057 #endif
5058 END
5059 case "$malloctype" in
5060 '')
5061         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5062                 malloctype='void *'
5063         else
5064                 malloctype='char *'
5065         fi
5066         ;;
5067 esac
5068 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5069
5070 case "$freetype" in
5071 '')
5072         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5073                 freetype='void'
5074         else
5075                 freetype='int'
5076         fi
5077         ;;
5078 esac
5079 echo "Your system uses $freetype free(), it would seem." >&4
5080 $rm -f malloc.[co]
5081 $cat <<EOM
5082
5083 The installation process will also create a directory for
5084 vendor-supplied add-ons.  Vendors who supply perl with their system
5085 may find it convenient to place all vendor-supplied files in this
5086 directory rather than in the main distribution directory.  This will
5087 ease upgrades between binary-compatible maintenance versions of perl.
5088
5089 Of course you may also use these directories in whatever way you see
5090 fit.  For example, you might use them to access modules shared over a
5091 company-wide network.
5092
5093 The default answer should be fine for most people.
5094 This causes further questions about vendor add-ons to be skipped
5095 and no vendor-specific directories will be configured for perl.
5096
5097 EOM
5098 rp='Do you want to configure vendor-specific add-on directories?'
5099 case "$usevendorprefix" in
5100 define|true|[yY]*) dflt=y ;;
5101 *) dflt=n ;;
5102 esac
5103 . ./myread
5104 case "$ans" in
5105 [yY]*)  fn=d~+
5106         rp='Installation prefix to use for vendor-supplied add-ons?'
5107         case "$vendorprefix" in
5108         '') dflt='' ;;
5109         *)  dflt=$vendorprefix ;;
5110         esac
5111         . ./getfile
5112         oldvendorprefix=''
5113         case "$vendorprefix" in
5114         '') ;;
5115         *)      case "$ans" in
5116                 "$prefix") ;;
5117                 *) oldvendorprefix="$prefix";;
5118                 esac
5119                 ;;
5120         esac
5121         usevendorprefix="$define"
5122         vendorprefix="$ans"
5123         vendorprefixexp="$ansexp"
5124         ;;
5125 *)      usevendorprefix="$undef"
5126         vendorprefix=''
5127         vendorprefixexp=''
5128         ;;
5129 esac
5130
5131 case "$vendorprefix" in
5132 '')     d_vendorlib="$undef"
5133         vendorlib=''
5134         vendorlibexp=''
5135         ;;
5136 *)      d_vendorlib="$define"
5137         : determine where vendor-supplied modules go.
5138         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5139         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5140         case "$installstyle" in
5141         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5142         *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5143         esac
5144         fn=d~+
5145         rp='Pathname for the vendor-supplied library files?'
5146         . ./getfile
5147         vendorlib="$ans"
5148         vendorlibexp="$ansexp"
5149         : Change installation prefix, if necessary.
5150         if $test X"$prefix" != X"$installprefix"; then
5151                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5152         else
5153                 installvendorlib="$vendorlibexp"
5154         fi
5155         ;;
5156 esac
5157
5158 : Cruising for prototypes
5159 echo " "
5160 echo "Checking out function prototypes..." >&4
5161 $cat >prototype.c <<'EOCP'
5162 int main(int argc, char *argv[]) {
5163         exit(0);}
5164 EOCP
5165 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5166         echo "Your C compiler appears to support function prototypes."
5167         val="$define"
5168 else
5169         echo "Your C compiler doesn't seem to understand function prototypes."
5170         val="$undef"
5171 fi
5172 set prototype
5173 eval $setvar
5174 $rm -f prototype*
5175
5176 case "$prototype" in
5177 "$define") ;;
5178 *)      ansi2knr='ansi2knr'
5179         echo " "
5180         cat <<EOM >&4
5181
5182 $me:  FATAL ERROR:
5183 This version of $package can only be compiled by a compiler that 
5184 understands function prototypes.  Unfortunately, your C compiler 
5185         $cc $ccflags
5186 doesn't seem to understand them.  Sorry about that.
5187
5188 If GNU cc is available for your system, perhaps you could try that instead.  
5189
5190 Eventually, we hope to support building Perl with pre-ANSI compilers.
5191 If you would like to help in that effort, please contact <perlbug@perl.org>.
5192
5193 Aborting Configure now.
5194 EOM
5195         exit 2
5196         ;;
5197 esac
5198
5199 : determine where public executables go
5200 echo " "
5201 set dflt bin bin
5202 eval $prefixit
5203 fn=d~
5204 rp='Pathname where the public executables will reside?'
5205 . ./getfile
5206 if $test "X$ansexp" != "X$binexp"; then
5207         installbin=''
5208 fi
5209 bin="$ans"
5210 binexp="$ansexp"
5211 : Change installation prefix, if necessary.
5212 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5213 if $test X"$prefix" != X"$installprefix"; then
5214         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5215 else
5216         installbin="$binexp"
5217 fi
5218
5219 $cat <<EOM
5220
5221 After $package is installed, you may wish to install various
5222 add-on modules and utilities.  Typically, these add-ons will
5223 be installed under $prefix with the rest
5224 of this package.  However, you may wish to install such add-ons
5225 elsewhere under a different prefix.
5226
5227 If you do not wish to put everything under a single prefix, that's
5228 ok.  You will be prompted for the individual locations; this siteprefix
5229 is only used to suggest the defaults.
5230
5231 The default should be fine for most people.
5232
5233 EOM
5234 fn=d~+
5235 rp='Installation prefix to use for add-on modules and utilities?'
5236 : XXX Here might be another good place for an installstyle setting.
5237 case "$siteprefix" in
5238 '') dflt=$prefix ;;
5239 *)  dflt=$siteprefix ;;
5240 esac
5241 . ./getfile
5242 oldsiteprefix=''
5243 case "$siteprefix" in
5244 '') ;;
5245 *)
5246         case "$ans" in
5247         "$prefix") ;;
5248         *) oldsiteprefix="$prefix";;
5249         esac
5250         ;;
5251 esac
5252 siteprefix="$ans"
5253 siteprefixexp="$ansexp"
5254
5255 : determine where site specific libraries go.
5256 : Usual default is /usr/local/lib/perl5/site_perl/$version
5257 : The default "style" setting is made in installstyle.U
5258 : XXX No longer works with Prefixit stuff.
5259 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5260 case "$installstyle" in
5261 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5262 *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5263 esac
5264 $cat <<EOM
5265
5266 The installation process will create a directory for
5267 site-specific extensions and modules.  Most users find it convenient
5268 to place all site-specific files in this directory rather than in the
5269 main distribution directory.
5270
5271 EOM
5272 fn=d~+
5273 rp='Pathname for the site-specific library files?'
5274 . ./getfile
5275 sitelib="$ans"
5276 sitelibexp="$ansexp"
5277 : Change installation prefix, if necessary.
5278 if $test X"$prefix" != X"$installprefix"; then
5279         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5280 else
5281         installsitelib="$sitelibexp"
5282 fi
5283
5284 : Determine list of previous versions to include in @INC
5285 $cat > getverlist <<EOPL
5286 #!$perl -w
5287 use File::Basename;
5288 \$api_versionstring = "$api_versionstring";
5289 \$version = "$version";
5290 \$sitelib = "$sitelib";
5291 \$archname = "$archname";
5292 EOPL
5293         $cat >> getverlist <<'EOPL'
5294 # Can't have leading @ because metaconfig interprets it as a command!
5295 ;@inc_version_list=();
5296 $stem=dirname($sitelib);
5297 # Redo to do opendir/readdir? 
5298 if (-d $stem) {
5299     chdir($stem);
5300     ;@candidates = glob("5.*");
5301 }
5302 else {
5303     ;@candidates = ();
5304 }
5305
5306 # XXX ToDo:  These comparisons must be reworked when two-digit
5307 # subversions come along, so that 5.7.10 compares as greater than
5308 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5309 # widespread that we can use the built-in version vectors rather
5310 # than reinventing them here.  For 5.6.0, however, we must
5311 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5312 foreach $d (@candidates) {
5313     if ($d lt $version) {
5314         if ($d ge $api_versionstring) {
5315             unshift(@inc_version_list, "$d/$archname", $d);
5316         }
5317         elsif ($d ge "5.005") {
5318             unshift(@inc_version_list, $d);
5319         }
5320     }
5321     else {
5322         # Skip newer version.  I.e. don't look in
5323         # 5.7.0 if we're installing 5.6.1.
5324     }
5325 }
5326
5327 if (@inc_version_list) {
5328     print join(' ', @inc_version_list);
5329 }
5330 else {
5331     # Blank space to preserve value for next Configure run.
5332     print " ";
5333 }
5334 EOPL
5335 chmod +x getverlist
5336 case "$inc_version_list" in
5337 '')     if test -x $perl; then
5338                 dflt=`$perl getverlist`
5339         else
5340                 dflt='none'
5341         fi
5342         ;;
5343 $undef) dflt='none' ;;
5344 *)  dflt="$inc_version_list" ;;
5345 esac
5346 $cat <<'EOM'
5347
5348 In order to ease the process of upgrading, this version of perl 
5349 can be configured to use modules built and installed with earlier 
5350 versions of perl that were installed under $prefix.  Specify here
5351 the list of earlier versions that this version of perl should check.
5352 If Configure detected no earlier versions of perl installed under
5353 $prefix, then the list will be empty.  Answer 'none' to tell perl
5354 to not search earlier versions.
5355
5356 The default should almost always be sensible, so if you're not sure,
5357 just accept the default.
5358 EOM
5359
5360 rp='List of earlier versions to include in @INC?'
5361 . ./myread
5362 case "$ans" in
5363 [Nn]one) inc_version_list=' ' ;;
5364 *) inc_version_list="$ans" ;;
5365 esac
5366 case "$inc_version_list" in
5367 ''|' ') 
5368         inc_version_list_init='""';;
5369 *)      inc_version_list_init=`echo $inc_version_list |
5370                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/"/'`
5371         ;;
5372 esac
5373 $rm -f getverlist
5374
5375 : determine whether to install perl also as /usr/bin/perl
5376
5377 echo " "
5378 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5379         $cat <<EOM
5380 Many scripts expect to perl to be installed as /usr/bin/perl.
5381 I can install the perl you are about to compile also as /usr/bin/perl
5382 (in addition to $installbin/perl).
5383 EOM
5384         case "$installusrbinperl" in
5385         "$undef"|[nN]*) dflt='n';;
5386         *)              dflt='y';;
5387         esac
5388         rp="Do you want to install perl as /usr/bin/perl?"
5389         . ./myread
5390         case "$ans" in
5391         [yY]*)  val="$define";;
5392         *)      val="$undef" ;;
5393         esac
5394 else
5395         val="$undef"
5396 fi
5397 set installusrbinperl
5398 eval $setvar
5399
5400 echo " "
5401 echo "Checking for GNU C Library..." >&4
5402 cat >gnulibc.c <<EOM
5403 #include <stdio.h>
5404 int main()
5405 {
5406 #ifdef __GLIBC__
5407     exit(0);
5408 #else
5409     exit(1);
5410 #endif
5411 }
5412 EOM
5413 set gnulibc
5414 if eval $compile_ok && ./gnulibc; then
5415         val="$define"
5416         echo "You are using the GNU C Library"
5417 else
5418         val="$undef"
5419         echo "You are not using the GNU C Library"
5420 fi
5421 $rm -f gnulibc*
5422 set d_gnulibc
5423 eval $setvar
5424
5425 : see if nm is to be used to determine whether a symbol is defined or not
5426 case "$usenm" in
5427 '')
5428         dflt=''
5429         case "$d_gnulibc" in
5430         "$define")
5431                 echo " "
5432                 echo "nm probably won't work on the GNU C Library." >&4
5433                 dflt=n
5434                 ;;
5435         esac
5436         case "$dflt" in
5437         '') 
5438                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5439                         echo " "
5440                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5441                         echo "'nm' won't be sufficient on this sytem." >&4
5442                         dflt=n
5443                 fi
5444                 ;;
5445         esac
5446         case "$dflt" in
5447         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5448                 if $test $dflt -gt 20; then
5449                         dflt=y
5450                 else
5451                         dflt=n
5452                 fi
5453                 ;;
5454         esac
5455         ;;
5456 *)
5457         case "$usenm" in
5458         true|$define) dflt=y;;
5459         *) dflt=n;;
5460         esac
5461         ;;
5462 esac
5463 $cat <<EOM
5464
5465 I can use $nm to extract the symbols from your C libraries. This
5466 is a time consuming task which may generate huge output on the disk (up
5467 to 3 megabytes) but that should make the symbols extraction faster. The
5468 alternative is to skip the 'nm' extraction part and to compile a small
5469 test program instead to determine whether each symbol is present. If
5470 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5471 this may be the best solution.
5472
5473 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5474
5475 EOM
5476 rp="Shall I use $nm to extract C symbols from the libraries?"
5477 . ./myread
5478 case "$ans" in
5479 [Nn]*) usenm=false;;
5480 *) usenm=true;;
5481 esac
5482
5483 runnm=$usenm
5484 case "$reuseval" in
5485 true) runnm=false;;
5486 esac
5487
5488 : nm options which may be necessary
5489 case "$nm_opt" in
5490 '') if $test -f /mach_boot; then
5491                 nm_opt=''       # Mach
5492         elif $test -d /usr/ccs/lib; then
5493                 nm_opt='-p'     # Solaris (and SunOS?)
5494         elif $test -f /dgux; then
5495                 nm_opt='-p'     # DG-UX
5496         elif $test -f /lib64/rld; then
5497                 nm_opt='-p'     # 64-bit Irix
5498         else
5499                 nm_opt=''
5500         fi;;
5501 esac
5502
5503 : nm options which may be necessary for shared libraries but illegal
5504 : for archive libraries.  Thank you, Linux.
5505 case "$nm_so_opt" in
5506 '')     case "$myuname" in
5507         *linux*)
5508                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5509                         nm_so_opt='--dynamic'
5510                 fi
5511                 ;;
5512         esac
5513         ;;
5514 esac
5515
5516 case "$runnm" in
5517 true)
5518 : get list of predefined functions in a handy place
5519 echo " "
5520 case "$libc" in
5521 '') libc=unknown
5522         case "$libs" in
5523         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5524         esac
5525         ;;
5526 esac
5527 libnames='';
5528 case "$libs" in
5529 '') ;;
5530 *)  for thislib in $libs; do
5531         case "$thislib" in
5532         -lc|-lc_s)
5533                 : Handle C library specially below.
5534                 ;;
5535         -l*)
5536                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5537                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5538                         :
5539                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5540                         :
5541                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5542                         :
5543                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5544                         :
5545                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5546                         :
5547                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5548                         :
5549                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5550                         :
5551                 else
5552                         try=''
5553                 fi
5554                 libnames="$libnames $try"
5555                 ;;
5556         *) libnames="$libnames $thislib" ;;
5557         esac
5558         done
5559         ;;
5560 esac
5561 xxx=normal
5562 case "$libc" in
5563 unknown)
5564         set /lib/libc.$so
5565         for xxx in $libpth; do
5566                 $test -r $1 || set $xxx/libc.$so
5567                 : The messy sed command sorts on library version numbers.
5568                 $test -r $1 || \
5569                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5570                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5571                                 h
5572                                 s/[0-9][0-9]*/0000&/g
5573                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5574                                 G
5575                                 s/\n/ /' | \
5576                          sort | $sed -e 's/^.* //'`
5577                 eval set \$$#
5578         done
5579         $test -r $1 || set /usr/ccs/lib/libc.$so
5580         $test -r $1 || set /lib/libsys_s$_a
5581         ;;
5582 *)
5583         set blurfl
5584         ;;
5585 esac
5586 if $test -r "$1"; then
5587         echo "Your (shared) C library seems to be in $1."
5588         libc="$1"
5589 elif $test -r /lib/libc && $test -r /lib/clib; then
5590         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5591         xxx=apollo
5592         libc='/lib/clib /lib/libc'
5593         if $test -r /lib/syslib; then
5594                 echo "(Your math library is in /lib/syslib.)"
5595                 libc="$libc /lib/syslib"
5596         fi
5597 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5598         echo "Your C library seems to be in $libc, as you said before."
5599 elif $test -r $incpath/usr/lib/libc$_a; then
5600         libc=$incpath/usr/lib/libc$_a;
5601         echo "Your C library seems to be in $libc.  That's fine."
5602 elif $test -r /lib/libc$_a; then
5603         libc=/lib/libc$_a;
5604         echo "Your C library seems to be in $libc.  You're normal."
5605 else
5606         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5607                 :
5608         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5609                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5610         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5611                 :
5612         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5613                 :
5614         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5615                 :
5616         else
5617                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5618         fi
5619         if $test -r "$tans"; then
5620                 echo "Your C library seems to be in $tans, of all places."
5621                 libc=$tans
5622         else
5623                 libc='blurfl'
5624         fi
5625 fi
5626 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5627         dflt="$libc"
5628         cat <<EOM
5629
5630 If the guess above is wrong (which it might be if you're using a strange
5631 compiler, or your machine supports multiple models), you can override it here.
5632
5633 EOM
5634 else
5635         dflt=''
5636         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5637         cat >&4 <<EOM
5638 I can't seem to find your C library.  I've looked in the following places:
5639
5640 EOM
5641         $sed 's/^/      /' libpath
5642         cat <<EOM
5643
5644 None of these seems to contain your C library. I need to get its name...
5645
5646 EOM
5647 fi
5648 fn=f
5649 rp='Where is your C library?'
5650 . ./getfile
5651 libc="$ans"
5652
5653 echo " "
5654 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5655 set X `cat libnames`
5656 shift
5657 xxx=files
5658 case $# in 1) xxx=file; esac
5659 echo "Extracting names from the following $xxx for later perusal:" >&4
5660 echo " "
5661 $sed 's/^/      /' libnames >&4
5662 echo " "
5663 $echo $n "This may take a while...$c" >&4
5664
5665 for file in $*; do
5666         case $file in
5667         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5668         *) $nm $nm_opt $file 2>/dev/null;;
5669         esac
5670 done >libc.tmp
5671
5672 $echo $n ".$c"
5673 $grep fprintf libc.tmp > libc.ptf
5674 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5675 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5676 xxx='[ADTSIW]'
5677 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5678         eval $xscan;\
5679         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5680                 eval $xrun
5681 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5682         eval $xscan;\
5683         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5684                 eval $xrun
5685 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5686         eval $xscan;\
5687         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5688                 eval $xrun
5689 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5690         eval $xscan;\
5691         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5692                 eval $xrun
5693 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5694         eval $xscan;\
5695         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5696                 eval $xrun
5697 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5698         eval $xscan;\
5699         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5700                 eval $xrun
5701 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5702                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5703         eval $xscan;\
5704         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5705                 eval $xrun
5706 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5707         eval $xscan;\
5708         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5709                 eval $xrun
5710 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5711         eval $xscan;\
5712         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5713                 eval $xrun
5714 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5715         eval $xscan;\
5716         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5717                 eval $xrun
5718 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5719         eval $xscan;\
5720         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5721                 eval $xrun
5722 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\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/.*\.text n\ \ \ \.//p'";\
5727         eval $xscan;\
5728         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5729                 eval $xrun
5730 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5731         eval $xscan;\
5732         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5733                 eval $xrun
5734 else
5735         $nm -p $* 2>/dev/null >libc.tmp
5736         $grep fprintf libc.tmp > libc.ptf
5737         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5738                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5739         then
5740                 nm_opt='-p'
5741                 eval $xrun
5742         else
5743                 echo " "
5744                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5745                 com=''
5746                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5747                         for thisname in $libnames $libc; do
5748                                 $ar t $thisname >>libc.tmp
5749                         done
5750                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5751                         echo "Ok." >&4
5752                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5753                         # Repeat libc to extract forwarders to DLL entries too
5754                         for thisname in $libnames $libc; do
5755                                 $ar tv $thisname >>libc.tmp
5756                                 # Revision 50 of EMX has bug in $ar.
5757                                 # it will not extract forwarders to DLL entries
5758                                 # Use emximp which will extract exactly them.
5759                                 emximp -o tmp.imp $thisname \
5760                                     2>/dev/null && \
5761                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5762                                     < tmp.imp >>libc.tmp
5763                                 $rm tmp.imp
5764                         done
5765                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5766                         echo "Ok." >&4
5767                 else
5768                         echo "$ar didn't seem to work right." >&4
5769                         echo "Maybe this is a Cray...trying bld instead..." >&4
5770                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5771                         then
5772                                 for thisname in $libnames; do
5773                                         bld t $libnames | \
5774                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5775                                         $ar t $thisname >>libc.tmp
5776                                 done
5777                                 echo "Ok." >&4
5778                         else
5779                                 echo "That didn't work either.  Giving up." >&4
5780                                 exit 1
5781                         fi
5782                 fi
5783         fi
5784 fi
5785 nm_extract="$com"
5786 if $test -f /lib/syscalls.exp; then
5787         echo " "
5788         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5789         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5790 fi
5791 ;;
5792 esac
5793 $rm -f libnames libpath
5794
5795 : see if dld is available
5796 set dld.h i_dld
5797 eval $inhdr
5798
5799 : is a C symbol defined?
5800 csym='tlook=$1;
5801 case "$3" in
5802 -v) tf=libc.tmp; tc=""; tdc="";;
5803 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5804 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5805 esac;
5806 tx=yes;
5807 case "$reuseval-$4" in
5808 true-) ;;
5809 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5810 esac;
5811 case "$tx" in
5812 yes)
5813         case "$runnm" in
5814         true)
5815                 if $contains $tlook $tf >/dev/null 2>&1;
5816                 then tval=true;
5817                 else tval=false;
5818                 fi;;
5819         *)
5820                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5821                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5822                 then tval=true;
5823                 else tval=false;
5824                 fi;
5825                 $rm -f t t.c;;
5826         esac;;
5827 *)
5828         case "$tval" in
5829         $define) tval=true;;
5830         *) tval=false;;
5831         esac;;
5832 esac;
5833 eval "$2=$tval"'
5834
5835 : define an is-in-libc? function
5836 inlibc='echo " "; td=$define; tu=$undef;
5837 sym=$1; var=$2; eval "was=\$$2";
5838 tx=yes;
5839 case "$reuseval$was" in
5840 true) ;;
5841 true*) tx=no;;
5842 esac;
5843 case "$tx" in
5844 yes)
5845         set $sym tres -f;
5846         eval $csym;
5847         case "$tres" in
5848         true)
5849                 echo "$sym() found." >&4;
5850                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5851         *)
5852                 echo "$sym() NOT found." >&4;
5853                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5854         esac;;
5855 *)
5856         case "$was" in
5857         $define) echo "$sym() found." >&4;;
5858         *) echo "$sym() NOT found." >&4;;
5859         esac;;
5860 esac'
5861
5862 : see if dlopen exists
5863 xxx_runnm="$runnm"
5864 runnm=false
5865 set dlopen d_dlopen
5866 eval $inlibc
5867 runnm="$xxx_runnm"
5868
5869 : determine which dynamic loading, if any, to compile in
5870 echo " "
5871 dldir="ext/DynaLoader"
5872 case "$usedl" in
5873 $define|y|true)
5874         dflt='y'
5875         usedl="$define"
5876         ;;
5877 $undef|n|false)
5878         dflt='n'
5879         usedl="$undef"
5880         ;;
5881 *) 
5882         dflt='n'
5883         case "$d_dlopen" in
5884             $define) dflt='y' ;;
5885         esac
5886         case "$i_dld" in
5887             $define) dflt='y' ;;
5888         esac
5889         : Does a dl_xxx.xs file exist for this operating system
5890         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5891         ;;
5892 esac
5893 rp="Do you wish to use dynamic loading?"
5894 . ./myread
5895 usedl="$ans"
5896 case "$ans" in
5897 y*) usedl="$define"
5898         case "$dlsrc" in
5899         '')
5900                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5901                         dflt="$dldir/dl_${osname}.xs"
5902                 elif $test "$d_dlopen" = "$define" ; then
5903                         dflt="$dldir/dl_dlopen.xs"
5904                 elif $test "$i_dld" = "$define" ; then
5905                         dflt="$dldir/dl_dld.xs"
5906                 else
5907                         dflt=''
5908                 fi
5909                 ;;
5910         *)      dflt="$dldir/$dlsrc"
5911                 ;;
5912         esac
5913     echo "The following dynamic loading files are available:"
5914         : Can not go over to $dldir because getfile has path hard-coded in.
5915         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5916         rp="Source file to use for dynamic loading"
5917         fn="fne"
5918         gfpth="$src"
5919         . ./getfile
5920         usedl="$define"
5921         : emulate basename
5922         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5923
5924         $cat << EOM
5925
5926 Some systems may require passing special flags to $cc -c to
5927 compile modules that will be used to create a shared library.
5928 To use no flags, say "none".
5929
5930 EOM
5931     case "$cccdlflags" in
5932     '') case "$gccversion" in
5933                 '') case "$osname" in
5934                         hpux)   dflt='+z' ;;
5935                         next)   dflt='none' ;;
5936                         irix*)  dflt='-KPIC' ;;
5937                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5938                         sunos)  dflt='-pic' ;;
5939                         *)      dflt='none' ;;
5940                     esac
5941                         ;;
5942                 *)  case "$osname" in
5943                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5944                         *)      dflt='-fpic' ;;
5945                     esac ;;
5946             esac ;;
5947         ' ') dflt='none' ;;
5948     *)  dflt="$cccdlflags" ;;
5949     esac
5950     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5951     . ./myread
5952     case "$ans" in
5953     none) cccdlflags=' ' ;;
5954     *) cccdlflags="$ans" ;;
5955     esac
5956
5957     cat << EOM
5958
5959 Some systems use ld to create libraries that can be dynamically loaded,
5960 while other systems (such as those using ELF) use $cc.
5961
5962 EOM
5963         case "$ld" in
5964         '')     $cat >try.c <<'EOM'
5965 /* Test for whether ELF binaries are produced */
5966 #include <fcntl.h>
5967 #include <stdlib.h>
5968 int main() {
5969         char b[4];
5970         int i = open("a.out",O_RDONLY);
5971         if(i == -1) 
5972                 exit(1); /* fail */
5973         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5974                 exit(0); /* succeed (yes, it's ELF) */
5975         else
5976                 exit(1); /* fail */
5977 }
5978 EOM
5979                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5980                         cat <<EOM
5981 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5982 EOM
5983                         dflt="$cc"
5984                 else
5985                         echo "I'll use ld to build dynamic libraries."
5986                         dflt='ld'
5987                 fi
5988                 rm -f try.c a.out
5989                 ;;
5990         *)      dflt="$ld"
5991                 ;;
5992         esac
5993
5994     rp="What command should be used to create dynamic libraries?"
5995     . ./myread
5996         ld="$ans"
5997
5998     cat << EOM
5999
6000 Some systems may require passing special flags to $ld to create a
6001 library that can be dynamically loaded.  If your ld flags include
6002 -L/other/path options to locate libraries outside your loader's normal
6003 search path, you may need to specify those -L options here as well.  To
6004 use no flags, say "none".
6005
6006 EOM
6007     case "$lddlflags" in
6008     '') case "$osname" in
6009                         beos) dflt='-nostart' ;;
6010                         hpux)  dflt='-b' ;;
6011                         linux|irix*)    dflt='-shared' ;;
6012                         next)  dflt='none' ;;
6013                         solaris) dflt='-G' ;;
6014                         sunos) dflt='-assert nodefinitions' ;;
6015                         svr4*|esix*) dflt="-G $ldflags" ;;
6016                 *)     dflt='none' ;;
6017                         esac
6018                         ;;
6019     *) dflt="$lddlflags" ;;
6020     esac
6021
6022         : Try to guess additional flags to pick up local libraries.
6023         : Be careful not to append to a plain 'none'
6024         case "$dflt" in
6025         none) dflt='' ;;
6026         esac
6027         for thisflag in $ldflags; do
6028                 case "$thisflag" in
6029                 -L*)
6030                         case " $dflt " in
6031                         *" $thisflag "*) ;;
6032                         *) dflt="$dflt $thisflag" ;;
6033                         esac
6034                         ;;
6035                 esac
6036         done
6037
6038         case "$dflt" in
6039         ''|' ') dflt='none' ;;
6040         esac
6041
6042     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6043     . ./myread
6044     case "$ans" in
6045     none) lddlflags=' ' ;;
6046     *) lddlflags="$ans" ;;
6047     esac
6048
6049         cat <<EOM
6050
6051 Some systems may require passing special flags to $cc to indicate that
6052 the resulting executable will use dynamic linking.  To use no flags,
6053 say "none".
6054
6055 EOM
6056     case "$ccdlflags" in
6057     '') case "$osname" in
6058                 hpux)   dflt='-Wl,-E' ;;
6059                 linux)  dflt='-rdynamic' ;;
6060                 next)   dflt='none' ;;
6061                 sunos)  dflt='none' ;;
6062                 *)      dflt='none' ;;
6063             esac ;;
6064     ' ')  dflt='none' ;;
6065     *)  dflt="$ccdlflags" ;;
6066     esac
6067     rp="Any special flags to pass to $cc to use dynamic linking?"
6068     . ./myread
6069     case "$ans" in
6070     none) ccdlflags=' ' ;;
6071     *) ccdlflags="$ans" ;;
6072     esac
6073     ;;
6074 *)  usedl="$undef"
6075         ld='ld'
6076     dlsrc='dl_none.xs'
6077     lddlflags=''
6078     ccdlflags=''
6079     ;;
6080 esac
6081
6082 also=''
6083 case "$usedl" in
6084 $undef)
6085         # No dynamic loading being used, so don't bother even to prompt.
6086         useshrplib='false'
6087         ;;
6088 *)      case "$useshrplib" in
6089         '')     case "$osname" in
6090                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6091                         dflt=y
6092                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6093                         ;;
6094                 next*)
6095                         case "$osvers" in
6096                         4*)     dflt=y
6097                                 also='Building a shared libperl is needed for MAB support.'
6098                                 ;;
6099                         *)      dflt=n
6100                                 ;;
6101                         esac
6102                         ;;
6103                 *)      dflt=n
6104                         ;;
6105                 esac
6106                 ;;
6107         $define|true|[Yy]*)
6108                 dflt=y
6109                 ;;
6110         *)      dflt=n
6111                 ;;
6112         esac
6113         $cat << EOM
6114
6115 The perl executable is normally obtained by linking perlmain.c with
6116 libperl${_a}, any static extensions (usually just DynaLoader), and
6117 any other libraries needed on this system (such as -lm, etc.).  Since
6118 your system supports dynamic loading, it is probably possible to build
6119 a shared libperl.$so.  If you will have more than one executable linked
6120 to libperl.$so, this will significantly reduce the size of each
6121 executable, but it may have a noticeable affect on performance.  The
6122 default is probably sensible for your system.
6123 $also
6124
6125 EOM
6126         rp="Build a shared libperl.$so (y/n)"
6127         . ./myread
6128         case "$ans" in
6129         true|$define|[Yy]*)
6130                 useshrplib='true'  ;;
6131         *)      useshrplib='false' ;;
6132         esac
6133         ;;
6134 esac
6135
6136 case "$useshrplib" in
6137 true)
6138         case "$libperl" in
6139         '')
6140                 # Figure out a good name for libperl.so.  Since it gets stored in
6141                 # a version-specific architecture-dependent library, the version
6142                 # number isn't really that important, except for making cc/ld happy.
6143                 #
6144                 # A name such as libperl.so.3.1
6145                 majmin="libperl.$so.$patchlevel.$subversion"
6146                 # A name such as libperl.so.301
6147                 majonly=`echo $patchlevel $subversion |
6148                         $awk '{printf "%d%02d", $1, $2}'`
6149                 majonly=libperl.$so.$majonly
6150                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6151                 # rely on figuring it out from the naming of libc.
6152                 case "${osname}${osvers}" in
6153                 next4*)
6154                         dflt=libperl.5.$so
6155                         # XXX How handle the --version stuff for MAB?
6156                         ;;
6157                 linux*)  # ld won't link with a bare -lperl otherwise.
6158                         dflt=libperl.$so
6159                         ;;
6160                 cygwin*) # include version
6161                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6162                         ;;
6163                 *)      # Try to guess based on whether libc has major.minor.
6164                         case "$libc" in
6165                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6166                         *libc.$so.[0-9]*) dflt=$majonly ;;
6167                         *)      dflt=libperl.$so ;;
6168                         esac
6169                         ;;
6170                 esac
6171                 ;;
6172         *)      dflt=$libperl
6173                 ;;
6174         esac
6175         cat << EOM
6176
6177 I need to select a good name for the shared libperl.  If your system uses
6178 library names with major and minor numbers, then you might want something
6179 like $majmin.  Alternatively, if your system uses a single version
6180 number for shared libraries, then you might want to use $majonly.
6181 Or, your system might be quite happy with a simple libperl.$so.
6182
6183 Since the shared libperl will get installed into a version-specific
6184 architecture-dependent directory, the version number of the shared perl
6185 library probably isn't important, so the default should be o.k.
6186
6187 EOM
6188         rp='What name do you want to give to the shared libperl?'
6189         . ./myread
6190         libperl=$ans
6191         echo "Ok, I'll use $libperl"
6192         ;;
6193 *)
6194         libperl="libperl${_a}"
6195         ;;
6196 esac
6197
6198 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6199 case "$shrpdir" in
6200 '') ;;
6201 *)      $cat >&4 <<EOM
6202 WARNING:  Use of the shrpdir variable for the installation location of
6203 the shared $libperl is not supported.  It was never documented and
6204 will not work in this version.  Let me (perlbug@perl.com)
6205 know of any problems this may cause.
6206
6207 EOM
6208         case "$shrpdir" in
6209         "$archlibexp/CORE")
6210                 $cat >&4 <<EOM
6211 But your current setting of $shrpdir is
6212 the default anyway, so it's harmless.
6213 EOM
6214                 ;;
6215         *)
6216                 $cat >&4 <<EOM
6217 Further, your current attempted setting of $shrpdir
6218 conflicts with the value of $archlibexp/CORE
6219 that installperl will use.
6220 EOM
6221                 ;;
6222         esac
6223         ;;
6224 esac
6225
6226 # How will the perl executable find the installed shared $libperl?
6227 # Add $xxx to ccdlflags.
6228 # If we can't figure out a command-line option, use $shrpenv to
6229 # set env LD_RUN_PATH.  The main perl makefile uses this.
6230 shrpdir=$archlibexp/CORE
6231 xxx=''
6232 tmp_shrpenv=''
6233 if "$useshrplib"; then
6234     case "$osname" in 
6235         aix)
6236                 # We'll set it in Makefile.SH...
6237                 ;;
6238         solaris|netbsd)
6239                 xxx="-R $shrpdir"
6240                 ;;
6241         freebsd)
6242                 xxx="-Wl,-R$shrpdir"
6243                 ;;
6244         linux|irix*|dec_osf)
6245                 xxx="-Wl,-rpath,$shrpdir"
6246                 ;;
6247         next)
6248                 # next doesn't like the default...
6249                 ;;
6250         beos)
6251                 # beos doesn't like the default, either.
6252                 ;;
6253         hpux*)
6254                 # hpux doesn't like the default, either.
6255                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6256                 ;;
6257         *)
6258                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6259                 ;;
6260         esac
6261         case "$xxx" in
6262         '') ;;
6263         *)      
6264                 # Only add $xxx if it isn't already in ccdlflags.
6265                 case " $ccdlflags " in
6266                 *" $xxx "*)     ;;
6267                 *)      ccdlflags="$ccdlflags $xxx"
6268                         cat <<EOM >&4
6269
6270 Adding $xxx to the flags
6271 passed to $ld so that the perl executable will find the 
6272 installed shared $libperl.
6273
6274 EOM
6275                         ;;
6276                 esac
6277                 ;;
6278         esac
6279 fi
6280 # Fix ccdlflags in AIX for building external extensions.
6281 # (For building Perl itself bare -bE:perl.exp is needed,
6282 #  Makefile.SH takes care of this.)
6283 case "$osname" in
6284 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6285 esac
6286 # Respect a hint or command-line value.
6287 case "$shrpenv" in
6288 '') shrpenv="$tmp_shrpenv" ;;
6289 esac
6290 case "$ldlibpthname" in
6291 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6292 none)   ldlibpthname='' ;;
6293 esac
6294
6295 : determine where manual pages go
6296 set man1dir man1dir none
6297 eval $prefixit
6298 $cat <<EOM
6299
6300 $spackage has manual pages available in source form.
6301 EOM
6302 case "$nroff" in
6303 nroff)
6304         echo "However, you don't have nroff, so they're probably useless to you."
6305         case "$man1dir" in
6306         '') man1dir="none";;
6307         esac;;
6308 esac
6309 echo "If you don't want the manual sources installed, answer 'none'."
6310 case "$man1dir" in
6311 ' ') dflt=none
6312         ;;
6313 '')
6314         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6315         lookpath="$lookpath $prefixexp/man/p_man/man1"
6316         lookpath="$lookpath $prefixexp/man/u_man/man1"
6317         lookpath="$lookpath $prefixexp/man/man.1"
6318         case "$sysman" in
6319         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6320         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6321         esac
6322         set dflt
6323         eval $prefixup
6324         ;;
6325 *)  dflt="$man1dir"
6326         ;;
6327 esac
6328 echo " "
6329 fn=dn+~
6330 rp="Where do the main $spackage manual pages (source) go?"
6331 . ./getfile
6332 if $test "X$man1direxp" != "X$ansexp"; then
6333         installman1dir=''
6334 fi
6335 man1dir="$ans"
6336 man1direxp="$ansexp"
6337 case "$man1dir" in
6338 '')     man1dir=' '
6339         installman1dir='';;
6340 esac
6341
6342 : Change installation prefix, if necessary.
6343 if $test X"$prefix" != X"$installprefix"; then
6344         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6345 else
6346         installman1dir="$man1direxp"
6347 fi
6348
6349 : What suffix to use on installed man pages
6350
6351 case "$man1dir" in
6352 ' ')
6353         man1ext='0'
6354         ;;
6355 *)
6356         rp="What suffix should be used for the main $spackage man pages?"
6357         case "$man1ext" in
6358         '')     case "$man1dir" in
6359                 *1)  dflt=1 ;;
6360                 *1p) dflt=1p ;;
6361                 *1pm) dflt=1pm ;;
6362                 *l) dflt=l;;
6363                 *n) dflt=n;;
6364                 *o) dflt=o;;
6365                 *p) dflt=p;;
6366                 *C) dflt=C;;
6367                 *L) dflt=L;;
6368                 *L1) dflt=L1;;
6369                 *) dflt=1;;
6370                 esac
6371                 ;;
6372         *)      dflt="$man1ext";;
6373         esac
6374         . ./myread
6375         man1ext="$ans"
6376         ;;
6377 esac
6378
6379 : see if we can have long filenames
6380 echo " "
6381 rmlist="$rmlist /tmp/cf$$"
6382 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6383 first=123456789abcdef
6384 second=/tmp/cf$$/$first
6385 $rm -f $first $second
6386 if (echo hi >$first) 2>/dev/null; then
6387         if $test -f 123456789abcde; then
6388                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6389                 val="$undef"
6390         else
6391                 if (echo hi >$second) 2>/dev/null; then
6392                         if $test -f /tmp/cf$$/123456789abcde; then
6393                                 $cat <<'EOM'
6394 That's peculiar... You can have filenames longer than 14 characters, but only
6395 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6396 I shall consider your system cannot support long filenames at all.
6397 EOM
6398                                 val="$undef"
6399                         else
6400                                 echo 'You can have filenames longer than 14 characters.' >&4
6401                                 val="$define"
6402                         fi
6403                 else
6404                         $cat <<'EOM'
6405 How confusing! Some of your filesystems are sane enough to allow filenames
6406 longer than 14 characters but some others like /tmp can't even think about them.
6407 So, for now on, I shall assume your kernel does not allow them at all.
6408 EOM
6409                         val="$undef"
6410                 fi
6411         fi
6412 else
6413         $cat <<'EOM'
6414 You can't have filenames longer than 14 chars.  You can't even think about them!
6415 EOM
6416         val="$undef"
6417 fi 
6418 set d_flexfnam
6419 eval $setvar
6420 $rm -rf /tmp/cf$$ 123456789abcde*
6421
6422 : determine where library module manual pages go
6423 set man3dir man3dir none
6424 eval $prefixit
6425 $cat <<EOM
6426
6427 $spackage has manual pages for many of the library modules.
6428 EOM
6429
6430 case "$nroff" in
6431 nroff)
6432         $cat <<'EOM'
6433 However, you don't have nroff, so they're probably useless to you.
6434 EOM
6435         case "$man3dir" in
6436         '') man3dir="none";;
6437         esac;;
6438 esac
6439
6440 case "$d_flexfnam" in
6441 undef)
6442         $cat <<'EOM'
6443 However, your system can't handle the long file names like File::Basename.3. 
6444 EOM
6445         case "$man3dir" in
6446         '') man3dir="none";;
6447         esac;;
6448 esac
6449
6450 echo "If you don't want the manual sources installed, answer 'none'."
6451 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6452 case "$man3dir" in
6453 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6454         if $test -d "$privlib/man/man3"; then
6455                 cat <<EOM >&4
6456
6457 WARNING:  Previous versions of perl installed man3 pages into
6458 $privlib/man/man3.  This version will suggest a 
6459 new default of $dflt.  
6460 EOM
6461                 tdflt=$dflt
6462                 dflt='n'
6463                 rp='Do you wish to preserve the old behavior?(y/n)'
6464                 . ./myread
6465                 case "$ans" in
6466                 y*) dflt="$privlib/man/man3" ;;
6467                 *)  dflt=$tdflt ;;
6468                 esac
6469     fi
6470         ;;
6471 ' ') dflt=none;;
6472 *)      dflt="$man3dir" ;;
6473 esac
6474 echo " "
6475 fn=dn+~
6476 rp="Where do the $package library man pages (source) go?"
6477 . ./getfile
6478 man3dir="$ans"
6479 man3direxp="$ansexp"
6480 case "$man1dir" in
6481 '')     man3dir=' '
6482         installman3dir='';;
6483 esac
6484
6485 : Change installation prefix, if necessary.
6486 if $test X"$prefix" != X"$installprefix"; then
6487         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6488 else
6489         installman3dir="$man3direxp"
6490 fi
6491
6492 : What suffix to use on installed man pages
6493 case "$man3dir" in
6494 ' ')
6495         man3ext='0'
6496         ;;
6497 *)
6498         rp="What suffix should be used for the $package library man pages?"
6499         case "$man3ext" in
6500         '')     case "$man3dir" in
6501                 *3)  dflt=3 ;;
6502                 *3p) dflt=3p ;;
6503                 *3pm) dflt=3pm ;;
6504                 *l) dflt=l;;
6505                 *n) dflt=n;;
6506                 *o) dflt=o;;
6507                 *p) dflt=p;;
6508                 *C) dflt=C;;
6509                 *L) dflt=L;;
6510                 *L3) dflt=L3;;
6511                 *) dflt=3;;
6512                 esac
6513                 ;;
6514         *)      dflt="$man3ext";;
6515         esac
6516         . ./myread
6517         man3ext="$ans"
6518         ;;
6519 esac
6520
6521 : see if we have to deal with yellow pages, now NIS.
6522 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6523         if $test -f /usr/etc/nibindd; then
6524                 echo " "
6525                 echo "I'm fairly confident you're on a NeXT."
6526                 echo " "
6527                 rp='Do you get the hosts file via NetInfo?'
6528                 dflt=y
6529                 case "$hostcat" in
6530                 nidump*) ;;
6531                 '') ;;
6532                 *) dflt=n;;
6533                 esac
6534                 . ./myread
6535                 case "$ans" in
6536                 y*) hostcat='nidump hosts .';;
6537                 *)      case "$hostcat" in
6538                         nidump*) hostcat='';;
6539                         esac
6540                         ;;
6541                 esac
6542         fi
6543         case "$hostcat" in
6544         nidump*) ;;
6545         *)
6546                 case "$hostcat" in
6547                 *ypcat*) dflt=y;;
6548                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6549                                 dflt=y
6550                         else
6551                                 dflt=n
6552                         fi;;
6553                 *) dflt=n;;
6554                 esac
6555                 echo " "
6556                 rp='Are you getting the hosts file via yellow pages?'
6557                 . ./myread
6558                 case "$ans" in
6559                 y*) hostcat='ypcat hosts';;
6560                 *) hostcat='cat /etc/hosts';;
6561                 esac
6562                 ;;
6563         esac
6564 fi
6565 case "$hostcat" in
6566 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6567 esac
6568 case "$groupcat" in
6569 '') test -f /etc/group && groupcat='cat /etc/group';;
6570 esac
6571 case "$passcat" in
6572 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6573 esac
6574
6575 : now get the host name
6576 echo " "
6577 echo "Figuring out host name..." >&4
6578 case "$myhostname" in
6579 '') cont=true
6580         echo 'Maybe "hostname" will work...'
6581         if tans=`sh -c hostname 2>&1` ; then
6582                 myhostname=$tans
6583                 phostname=hostname
6584                 cont=''
6585         fi
6586         ;;
6587 *) cont='';;
6588 esac
6589 if $test "$cont"; then
6590         if ./xenix; then
6591                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6592                 if tans=`cat /etc/systemid 2>&1` ; then
6593                         myhostname=$tans
6594                         phostname='cat /etc/systemid'
6595                         echo "Whadyaknow.  Xenix always was a bit strange..."
6596                         cont=''
6597                 fi
6598         elif $test -r /etc/systemid; then
6599                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6600         fi
6601 fi
6602 if $test "$cont"; then
6603         echo 'No, maybe "uuname -l" will work...'
6604         if tans=`sh -c 'uuname -l' 2>&1` ; then
6605                 myhostname=$tans
6606                 phostname='uuname -l'
6607         else
6608                 echo 'Strange.  Maybe "uname -n" will work...'
6609                 if tans=`sh -c 'uname -n' 2>&1` ; then
6610                         myhostname=$tans
6611                         phostname='uname -n'
6612                 else
6613                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6614                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6615                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6616                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6617                         else
6618                                 case "$myhostname" in
6619                                 '') echo "Does this machine have an identity crisis or something?"
6620                                         phostname='';;
6621                                 *)
6622                                         echo "Well, you said $myhostname before..."
6623                                         phostname='echo $myhostname';;
6624                                 esac
6625                         fi
6626                 fi
6627         fi
6628 fi
6629 : you do not want to know about this
6630 set $myhostname
6631 myhostname=$1
6632
6633 : verify guess
6634 if $test "$myhostname" ; then
6635         dflt=y
6636         rp='Your host name appears to be "'$myhostname'".'" Right?"
6637         . ./myread
6638         case "$ans" in
6639         y*) ;;
6640         *) myhostname='';;
6641         esac
6642 fi
6643
6644 : bad guess or no guess
6645 while $test "X$myhostname" = X ; do
6646         dflt=''
6647         rp="Please type the (one word) name of your host:"
6648         . ./myread
6649         myhostname="$ans"
6650 done
6651
6652 : translate upper to lower if necessary
6653 case "$myhostname" in
6654 *[A-Z]*)
6655         echo "(Normalizing case in your host name)"
6656         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6657         ;;
6658 esac
6659
6660 case "$myhostname" in
6661 *.*)
6662         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6663         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6664         echo "(Trimming domain name from host name--host name is now $myhostname)"
6665         ;;
6666 *) case "$mydomain" in
6667         '')
6668                 {
6669                         test "X$hostcat" = "Xypcat hosts" &&
6670                         ypmatch "$myhostname" hosts 2>/dev/null |\
6671                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6672                         $test -s hosts
6673                 } || {
6674                         test "X$hostcat" != "X" &&
6675                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6676                                         /[       ]$myhostname[  . ]/p" > hosts
6677                 }
6678                 tmp_re="[       . ]"
6679                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6680                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6681                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6682                         hosts | $sort | $uniq | \
6683                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6684                 case `$echo X$dflt` in
6685                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6686                         dflt=.
6687                         ;;
6688                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6689                         ;;
6690                 esac
6691                 case "$dflt" in
6692                 .)
6693                         tans=`./loc resolv.conf X /etc /usr/etc`
6694                         if $test -f "$tans"; then
6695                                 echo "(Attempting domain name extraction from $tans)"
6696                                 dflt=.`$sed -n -e 's/   / /g' \
6697                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6698                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6699                                 case "$dflt" in
6700                                 .) dflt=.`$sed -n -e 's/        / /g' \
6701                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6702                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6703                                         ;;
6704                                 esac
6705                         fi
6706                         ;;
6707                 esac
6708                 case "$dflt" in
6709                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6710                         dflt=.`sh -c domainname 2>/dev/null`
6711                         case "$dflt" in
6712                         '') dflt='.';;
6713                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6714                         esac
6715                         ;;
6716                 esac
6717                 case "$dflt" in
6718                 .) echo "(Lost all hope -- silly guess then)"
6719                         dflt='.uucp'
6720                         ;;
6721                 esac
6722                 $rm -f hosts
6723                 ;;
6724         *) dflt="$mydomain";;
6725         esac;;
6726 esac
6727 echo " "
6728 rp="What is your domain name?"
6729 . ./myread
6730 tans="$ans"
6731 case "$ans" in
6732 '') ;;
6733 .*) ;;
6734 *) tans=".$tans";;
6735 esac
6736 mydomain="$tans"
6737
6738 : translate upper to lower if necessary
6739 case "$mydomain" in
6740 *[A-Z]*)
6741         echo "(Normalizing case in your domain name)"
6742         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6743         ;;
6744 esac
6745
6746 : a little sanity check here
6747 case "$phostname" in
6748 '') ;;
6749 *)
6750         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6751         $myhostname$mydomain|$myhostname) ;;
6752         *)
6753                 case "$phostname" in
6754                 sed*)
6755                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6756                         ;;
6757                 *)
6758                         echo "(That doesn't agree with your $phostname command, by the way.)"
6759                         ;;
6760                 esac
6761         ;;
6762         esac
6763         ;;
6764 esac
6765
6766 $cat <<EOM
6767
6768 I need to get your e-mail address in Internet format if possible, i.e.
6769 something like user@host.domain. Please answer accurately since I have
6770 no easy means to double check it. The default value provided below
6771 is most probably close to reality but may not be valid from outside
6772 your organization...
6773
6774 EOM
6775 cont=x
6776 while test "$cont"; do
6777         case "$cf_email" in
6778         '') dflt="$cf_by@$myhostname$mydomain";;
6779         *) dflt="$cf_email";;
6780         esac
6781         rp='What is your e-mail address?'
6782         . ./myread
6783         cf_email="$ans"
6784         case "$cf_email" in
6785         *@*.*) cont='' ;;
6786         *)
6787                 rp='Address does not look like an Internet one.  Use it anyway?'
6788                 case "$fastread" in
6789                 yes) dflt=y ;;
6790                 *) dflt=n ;;
6791                 esac
6792                 . ./myread
6793                 case "$ans" in
6794                 y*) cont='' ;;
6795                 *) echo " " ;;
6796                 esac
6797                 ;;
6798         esac
6799 done
6800
6801 $cat <<EOM
6802
6803 If you or somebody else will be maintaining perl at your site, please
6804 fill in the correct e-mail address here so that they may be contacted
6805 if necessary. Currently, the "perlbug" program included with perl
6806 will send mail to this address in addition to perlbug@perl.com. You may
6807 enter "none" for no administrator.
6808
6809 EOM
6810 case "$perladmin" in
6811 '') dflt="$cf_email";;
6812 *) dflt="$perladmin";;
6813 esac
6814 rp='Perl administrator e-mail address'
6815 . ./myread
6816 perladmin="$ans"
6817
6818 : figure out how to guarantee perl startup
6819 case "$startperl" in
6820 '')
6821         case "$sharpbang" in
6822         *!)
6823                 $cat <<EOH
6824
6825 I can use the #! construct to start perl on your system. This will
6826 make startup of perl scripts faster, but may cause problems if you
6827 want to share those scripts and perl is not in a standard place
6828 ($binexp/perl) on all your platforms. The alternative is to force
6829 a shell by starting the script with a single ':' character.
6830
6831 EOH
6832                 dflt="$binexp/perl"
6833                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6834                 . ./myread
6835                 case "$ans" in
6836                 none)   startperl=": # use perl";;
6837                 *)      startperl="#!$ans"
6838                         if $test 30 -lt `echo "$ans" | wc -c`; then
6839                                 $cat >&4 <<EOM
6840
6841 WARNING:  Some systems limit the #! command to 32 characters.
6842 If you experience difficulty running Perl scripts with #!, try
6843 installing Perl in a directory with a shorter pathname.
6844
6845 EOM
6846                         fi ;;
6847                 esac
6848                 ;;
6849         *) startperl=": # use perl"
6850                 ;;
6851         esac
6852         ;;
6853 esac
6854 echo "I'll use $startperl to start perl scripts."
6855
6856 : figure best path for perl in scripts
6857 case "$perlpath" in
6858 '')
6859         perlpath="$binexp/perl"
6860         case "$startperl" in
6861         *!*) ;;
6862         *)
6863                 $cat <<EOH
6864
6865 I will use the "eval 'exec'" idiom to start Perl on your system.
6866 I can use the full path of your Perl binary for this purpose, but
6867 doing so may cause problems if you want to share those scripts and
6868 Perl is not always in a standard place ($binexp/perl).
6869
6870 EOH
6871                 dflt="$binexp/perl"
6872                 rp="What path shall I use in \"eval 'exec'\"?"
6873                 . ./myread
6874                 perlpath="$ans"
6875                 ;;
6876         esac
6877         ;;
6878 esac
6879 case "$startperl" in
6880 *!*)    ;;
6881 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6882 esac
6883
6884 : determine where public executable scripts go
6885 set scriptdir scriptdir
6886 eval $prefixit
6887 case "$scriptdir" in
6888 '')
6889         dflt="$bin"
6890         : guess some guesses
6891         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6892         $test -d /usr/share/bin     && dflt=/usr/share/bin
6893         $test -d /usr/local/script  && dflt=/usr/local/script
6894         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6895         $test -d $prefixexp/script  && dflt=$prefixexp/script
6896         set dflt
6897         eval $prefixup
6898         ;;
6899 *)  dflt="$scriptdir"
6900         ;;
6901 esac
6902 $cat <<EOM
6903  
6904 Some installations have a separate directory just for executable scripts so
6905 that they can mount it across multiple architectures but keep the scripts in
6906 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6907 Or you might just lump your scripts in with all your other executables.
6908  
6909 EOM
6910 fn=d~
6911 rp='Where do you keep publicly executable scripts?'
6912 . ./getfile
6913 if $test "X$ansexp" != "X$scriptdirexp"; then
6914         installscript=''
6915 fi
6916 scriptdir="$ans"
6917 scriptdirexp="$ansexp"
6918 : Change installation prefix, if necessary.
6919 if $test X"$prefix" != X"$installprefix"; then
6920         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6921 else
6922         installscript="$scriptdirexp"
6923 fi
6924
6925 : determine where site specific architecture-dependent libraries go.
6926 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6927 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6928 : sitelib may have an optional trailing /share.
6929 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6930 tdflt="$tdflt/$archname"
6931 set sitearch sitearch none
6932 eval $prefixit
6933 case "$sitearch" in
6934 '')     dflt="$tdflt" ;;
6935 *)      dflt="$sitearch" ;;
6936 esac
6937 $cat <<EOM
6938
6939 The installation process will also create a directory for
6940 architecture-dependent site-specific extensions and modules.
6941
6942 EOM
6943 fn=nd~+
6944 rp='Pathname for the site-specific architecture-dependent library files?'
6945 . ./getfile
6946 sitearch="$ans"
6947 sitearchexp="$ansexp"
6948 : Change installation prefix, if necessary.
6949 if $test X"$prefix" != X"$installprefix"; then
6950         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6951 else
6952         installsitearch="$sitearchexp"
6953 fi
6954
6955 : determine where add-on public executables go
6956 case "$sitebin" in
6957 '')     dflt=$siteprefix/bin ;;
6958 *)      dflt=$sitebin ;;
6959 esac
6960 fn=d~
6961 rp='Pathname where the add-on public executables should be installed?'
6962 . ./getfile
6963 sitebin="$ans"
6964 sitebinexp="$ansexp"
6965 : Change installation prefix, if necessary.
6966 if $test X"$prefix" != X"$installprefix"; then
6967         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6968 else
6969         installsitebin="$sitebinexp"
6970 fi
6971
6972 : see if sqrtl exists
6973 set sqrtl d_sqrtl
6974 eval $inlibc
6975
6976 cat <<EOM
6977
6978 Perl can be built to take advantage of long doubles which
6979 (if available) may give more accuracy and range for floating point numbers.
6980
6981 If this doesn't make any sense to you, just accept the default 'n'.
6982 EOM
6983
6984 case "$ccflags" in
6985 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
6986 esac
6987
6988 case "$uselongdouble" in
6989 $define|true|[yY]*)     dflt='y';;
6990 *) dflt='n';;
6991 esac
6992 rp='Try to use long doubles if available?'
6993 . ./myread
6994 case "$ans" in
6995 y|Y)    val="$define"   ;;
6996 *)      val="$undef"    ;;
6997 esac
6998 set uselongdouble
6999 eval $setvar
7000
7001 case "$uselongdouble" in
7002 true|[yY]*) uselongdouble="$define" ;;
7003 esac
7004
7005 case "$uselongdouble" in
7006 $define)
7007 : Look for a hint-file generated 'call-back-unit'.  If the
7008 : user has specified that long doubles should be used,
7009 : we may need to set or change some other defaults.
7010         if $test -f uselongdouble.cbu; then
7011                 echo "Your platform has some specific hints for long doubles, using them..."
7012                 . ./uselongdouble.cbu
7013         else
7014                 $cat <<EOM
7015 (Your platform doesn't have any specific hints for long doubles.)
7016 EOM
7017         fi
7018         ;;
7019 esac
7020
7021 case "$uselongdouble:$d_sqrtl" in
7022 $define:$undef)
7023                 $cat <<EOM >&4
7024
7025 You requested the use of long doubles but you do not seem to have
7026 the mathematic functions for long doubles.  I'm disabling the use
7027 of long doubles.
7028 EOM
7029         uselongdouble=$undef
7030         ;;
7031 esac
7032
7033 cat <<EOM
7034
7035 Perl can be built to take advantage of long longs which
7036 (if available) may give more range for integer numbers.
7037
7038 If this doesn't make any sense to you, just accept the default 'n'.
7039 EOM
7040
7041 case "$ccflags" in
7042 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7043 esac
7044
7045 case "$uselonglong" in
7046 '')     dflt='y';;
7047 esac
7048 rp='Try to use long longs if available?'
7049 . ./myread
7050 case "$ans" in
7051 y|Y)    val="$define"   ;;
7052 *)      val="$undef"    ;;
7053 esac
7054 set uselonglong
7055 eval $setvar
7056
7057 case "$uselonglong" in
7058 true|[yY]*) uselonglong="$define" ;;
7059 esac
7060
7061 case "$uselonglong" in
7062 $define)
7063 : Look for a hint-file generated 'call-back-unit'.  If the
7064 : user has specified that long longs should be used,
7065 : we may need to set or change some other defaults.
7066         if $test -f uselonglong.cbu; then
7067                 echo "Your platform has some specific hints for long longs, using them..."
7068                 . ./uselonglong.cbu
7069         else
7070                 $cat <<EOM
7071 (Your platform doesn't have any specific hints for long longs.)
7072 EOM
7073         fi
7074         ;;
7075 esac
7076
7077 cat <<EOM
7078
7079 Previous version of $package used the standard IO mechanisms as defined
7080 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7081 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7082 the default.  This abstraction layer can use AT&T's sfio (if you already
7083 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7084 problems with some extension modules.  Using PerlIO with stdio is safe,
7085 but it is slower than plain stdio and therefore is not the default.
7086
7087 If this doesn't make any sense to you, just accept the default 'n'.
7088 EOM
7089 case "$useperlio" in
7090 $define|true|[yY]*)     dflt='y';;
7091 *) dflt='n';;
7092 esac
7093 rp='Use the experimental PerlIO abstraction layer?'
7094 . ./myread
7095 case "$ans" in
7096 y|Y) 
7097         val="$define"
7098         ;;     
7099 *)      
7100         echo "Ok, doing things the stdio way"
7101         val="$undef"
7102         ;;
7103 esac
7104 set useperlio
7105 eval $setvar 
7106
7107 case "$vendorprefix" in
7108 '')     d_vendorbin="$undef"
7109         vendorbin=''
7110         vendorbinexp=''
7111         ;;
7112 *)      d_vendorbin="$define"
7113         : determine where vendor-supplied executables go.
7114         dflt=$vendorprefix/bin
7115         fn=d~+
7116         rp='Pathname for the vendor-supplied executables directory?'
7117         . ./getfile
7118         vendorbin="$ans"
7119         vendorbinexp="$ansexp"
7120         : Change installation prefix, if necessary.
7121         if $test X"$prefix" != X"$installprefix"; then
7122                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7123         else
7124                 installvendorbin="$vendorbinexp"
7125         fi
7126         ;;
7127 esac
7128
7129 : check for length of double
7130 echo " "
7131 case "$doublesize" in
7132 '')
7133         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7134         $cat >try.c <<'EOCP'
7135 #include <stdio.h>
7136 int main()
7137 {
7138     printf("%d\n", (int)sizeof(double));
7139     exit(0);
7140 }
7141 EOCP
7142         set try
7143         if eval $compile_ok; then
7144                 doublesize=`./try`
7145                 $echo " $doublesize bytes." >&4
7146         else
7147                 dflt='8'
7148                 echo "(I can't seem to compile the test program.  Guessing...)"
7149                 rp="What is the size of a double precision number (in bytes)?"
7150                 . ./myread
7151                 doublesize="$ans"
7152         fi
7153         ;;
7154 esac
7155 $rm -f try.c try
7156
7157 : check for long doubles
7158 echo " "
7159 $echo $n "Checking to see if your system supports long double..." $c >&4
7160 echo 'int main() { long double x = 7.0; }' > try.c
7161 set try
7162 if eval $compile; then
7163         val="$define"
7164         echo " Yes, it does." >&4
7165 else
7166         val="$undef"
7167         echo " No, it doesn't." >&4
7168 fi
7169 $rm try.*
7170 set d_longdbl
7171 eval $setvar
7172
7173 : check for length of long double
7174 case "${d_longdbl}${longdblsize}" in
7175 $define)
7176         echo " "
7177         $echo $n "Checking to see how big your long doubles are..." $c >&4
7178         $cat >try.c <<'EOCP'
7179 #include <stdio.h>
7180 int main()
7181 {
7182         printf("%d\n", sizeof(long double));
7183 }
7184 EOCP
7185         set try
7186         set try
7187         if eval $compile; then
7188                 longdblsize=`./try$exe_ext`
7189                 $echo " $longdblsize bytes." >&4
7190         else
7191                 dflt='8'
7192                 echo " "
7193                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7194                 rp="What is the size of a long double (in bytes)?"
7195                 . ./myread
7196                 longdblsize="$ans"
7197         fi
7198         if $test "X$doublesize" = "X$longdblsize"; then
7199                 echo "(That isn't any different from an ordinary double.)"
7200         fi      
7201         ;;
7202 esac
7203 $rm -f try.* try
7204
7205 : Check how to convert floats to strings.
7206 if test "X$d_Gconvert" = X; then
7207         echo " "
7208         echo "Checking for an efficient way to convert floats to strings."
7209         $cat >try.c <<EOP
7210 #ifdef TRY_gconvert
7211 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7212 char *myname = "gconvert";
7213 #endif
7214 #ifdef TRY_gcvt
7215 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7216 char *myname = "gcvt";
7217 #endif
7218 #ifdef TRY_qgcvt
7219 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7220 char *myname = "qgcvt";
7221 #define DOUBLETYPE long double
7222 #endif
7223 #ifdef TRY_sprintf
7224 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7225 char *myname = "sprintf";
7226 #endif
7227
7228 #ifndef DOUBLETYPE
7229 #define DOUBLETYPE double
7230 #endif
7231
7232 #include <stdio.h>
7233
7234 #define I_STDLIB $i_stdlib
7235 #ifdef I_STDLIB
7236 #include <stdlib.h>
7237 #endif
7238
7239 int
7240 checkit(expect, got)
7241 char *expect;
7242 char *got;
7243 {
7244     if (strcmp(expect, got)) {
7245                 printf("%s oddity:  Expected %s, got %s\n",
7246                         myname, expect, got);
7247                 exit(1);
7248         }
7249 }
7250
7251 int main()
7252
7253         char buf[64]; 
7254         buf[63] = '\0';
7255
7256         /* This must be 1st test on (which?) platform */
7257         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7258         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7259         checkit("0.1", buf);
7260
7261         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7262         checkit("1", buf);
7263
7264         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7265         checkit("0", buf);
7266
7267         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7268         checkit("-1", buf);
7269
7270         /* Some Linux gcvt's give 1.e+5 here. */
7271         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7272         checkit("100000", 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         exit(0);
7279 }
7280 EOP
7281         case "$d_Gconvert" in
7282         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7283         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7284         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7285         *) xxx_list='gconvert gcvt sprintf' ;;
7286         esac
7287
7288         case "$d_longdbl$uselongdouble" in
7289         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7290         esac
7291
7292         for xxx_convert in $xxx_list; do
7293                 echo "Trying $xxx_convert..."
7294                 $rm -f try try$_o
7295                 set try -DTRY_$xxx_convert
7296                 if eval $compile; then
7297                         echo "$xxx_convert() found." >&4
7298                         if ./try; then
7299                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7300                                 break;
7301                         else
7302                                 echo "...But $xxx_convert didn't work as I expected."
7303                         fi
7304                 else
7305                         echo "$xxx_convert NOT found." >&4
7306                 fi
7307         done
7308                 
7309         case "$xxx_convert" in
7310         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7311         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7312         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7313         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7314         esac
7315 fi
7316
7317 echo " "
7318
7319 if $test X"$d_longdbl" = X"$define"; then
7320
7321 echo "Checking how to print long doubles..." >&4
7322
7323 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7324         $cat >try.c <<'EOCP'
7325 #include <sys/types.h>
7326 #include <stdio.h>
7327 int main() {
7328   double d = 123.456;
7329   printf("%.3f\n", d);
7330 }
7331 EOCP
7332         set try
7333         if eval $compile; then
7334                 yyy=`./try$exe_ext`
7335                 case "$yyy" in
7336                 123.456)
7337                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7338                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7339                         echo "We will use %f."
7340                         ;;
7341                 esac
7342         fi
7343 fi
7344
7345 if $test X"$sPRIfldbl" = X; then
7346         $cat >try.c <<'EOCP'
7347 #include <sys/types.h>
7348 #include <stdio.h>
7349 int main() {
7350   long double d = 123.456;
7351   printf("%.3llf\n", d);
7352 }
7353 EOCP
7354         set try
7355         if eval $compile; then
7356                 yyy=`./try$exe_ext`
7357                 case "$yyy" in
7358                 123.456)
7359                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7360                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7361                         echo "We will use %llf."
7362                         ;;
7363                 esac
7364         fi
7365 fi
7366
7367 if $test X"$sPRIfldbl" = X; then
7368         $cat >try.c <<'EOCP'
7369 #include <sys/types.h>
7370 #include <stdio.h>
7371 int main() {
7372   long double d = 123.456;
7373   printf("%.3Lf\n", d);
7374 }
7375 EOCP
7376         set try
7377         if eval $compile; then
7378                 yyy=`./try$exe_ext`
7379                 case "$yyy" in
7380                 123.456)
7381                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7382                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7383                         echo "We will use %Lf."
7384                         ;;
7385                 esac
7386         fi
7387 fi
7388
7389 if $test X"$sPRIfldbl" = X; then
7390         $cat >try.c <<'EOCP'
7391 #include <sys/types.h>
7392 #include <stdio.h>
7393 int main() {
7394   long double d = 123.456;
7395   printf("%.3lf\n", d);
7396 }
7397 EOCP
7398         set try
7399         if eval $compile; then
7400                 yyy=`./try$exe_ext`
7401                 case "$yyy" in
7402                 123.456)
7403                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7404                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7405                         echo "We will use %lf."
7406                         ;;
7407                 esac
7408         fi
7409 fi
7410
7411 if $test X"$sPRIfldbl" = X; then
7412         echo "Cannot figure out how to print long doubles." >&4
7413 fi
7414
7415 $rm -f try try.*
7416
7417 fi # d_longdbl
7418
7419 case "$sPRIfldbl" in
7420 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7421         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7422         ;;
7423 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7424         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7425         ;;
7426 esac
7427
7428 : Initialize h_fcntl
7429 h_fcntl=false
7430
7431 : Initialize h_sysfile
7432 h_sysfile=false
7433
7434 : access call always available on UNIX
7435 set access d_access
7436 eval $inlibc
7437
7438 : locate the flags for 'access()'
7439 case "$d_access" in
7440 "$define")
7441         echo " "
7442         $cat >access.c <<'EOCP'
7443 #include <sys/types.h>
7444 #ifdef I_FCNTL
7445 #include <fcntl.h>
7446 #endif
7447 #ifdef I_SYS_FILE
7448 #include <sys/file.h>
7449 #endif
7450 #ifdef I_UNISTD
7451 #include <unistd.h>
7452 #endif
7453 int main() {
7454         exit(R_OK);
7455 }
7456 EOCP
7457         : check sys/file.h first, no particular reason here
7458         if $test `./findhdr sys/file.h` && \
7459                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7460                 h_sysfile=true;
7461                 echo "<sys/file.h> defines the *_OK access constants." >&4
7462         elif $test `./findhdr fcntl.h` && \
7463                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7464                 h_fcntl=true;
7465                 echo "<fcntl.h> defines the *_OK access constants." >&4
7466         elif $test `./findhdr unistd.h` && \
7467                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7468                 echo "<unistd.h> defines the *_OK access constants." >&4
7469         else
7470                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7471         fi
7472         ;;
7473 esac
7474 $rm -f access*
7475
7476 : see if accessx exists
7477 set accessx d_accessx
7478 eval $inlibc
7479
7480 : see if alarm exists
7481 set alarm d_alarm
7482 eval $inlibc
7483
7484 : see if atolf exists
7485 set atolf d_atolf
7486 eval $inlibc
7487
7488 : see if atoll exists
7489 set atoll d_atoll
7490 eval $inlibc
7491
7492 : Look for GNU-cc style attribute checking
7493 echo " "
7494 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7495 $cat >attrib.c <<'EOCP'
7496 #include <stdio.h>
7497 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7498 EOCP
7499 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7500         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7501                 echo "Your C compiler doesn't fully support __attribute__."
7502                 val="$undef"
7503         else
7504                 echo "Your C compiler supports __attribute__."
7505                 val="$define"
7506         fi
7507 else
7508         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7509         val="$undef"
7510 fi
7511 set d_attribut
7512 eval $setvar
7513 $rm -f attrib*
7514
7515 : see if bcmp exists
7516 set bcmp d_bcmp
7517 eval $inlibc
7518
7519 : see if bcopy exists
7520 set bcopy d_bcopy
7521 eval $inlibc
7522
7523 : see if this is a unistd.h system
7524 set unistd.h i_unistd
7525 eval $inhdr
7526
7527 : see if getpgrp exists
7528 set getpgrp d_getpgrp
7529 eval $inlibc
7530
7531 case "$d_getpgrp" in
7532 "$define")
7533         echo " "
7534         echo "Checking to see which flavor of getpgrp is in use..."
7535         $cat >set.c <<EOP
7536 #$i_unistd I_UNISTD
7537 #include <sys/types.h>
7538 #ifdef I_UNISTD
7539 #  include <unistd.h>
7540 #endif
7541 int main()
7542 {
7543         if (getuid() == 0) {
7544                 printf("(I see you are running Configure as super-user...)\n");
7545                 setuid(1);
7546         }
7547 #ifdef TRY_BSD_PGRP
7548         if (getpgrp(1) == 0)
7549                 exit(0);
7550 #else
7551         if (getpgrp() > 0)
7552                 exit(0);
7553 #endif
7554         exit(1);
7555 }
7556 EOP
7557         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7558                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7559                 val="$define"
7560         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7561                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7562                 val="$undef"
7563         else
7564                 echo "I can't seem to compile and run the test program."
7565                 if ./usg; then
7566                         xxx="a USG one, i.e. you use getpgrp()."
7567                 else
7568                         # SVR4 systems can appear rather BSD-ish.
7569                         case "$i_unistd" in
7570                         $undef)
7571                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7572                                 val="$define"
7573                                 ;;
7574                         $define)
7575                                 xxx="probably a USG one, i.e. you use getpgrp()."
7576                                 val="$undef"
7577                                 ;;
7578                         esac
7579                 fi
7580                 echo "Assuming your getpgrp is $xxx" >&4
7581         fi
7582         ;;
7583 *) val="$undef";;
7584 esac
7585 set d_bsdgetpgrp
7586 eval $setvar
7587 $rm -f set set.c
7588
7589 : see if setpgrp exists
7590 set setpgrp d_setpgrp
7591 eval $inlibc
7592
7593 case "$d_setpgrp" in
7594 "$define")
7595         echo " "
7596         echo "Checking to see which flavor of setpgrp is in use..."
7597         $cat >set.c <<EOP
7598 #$i_unistd I_UNISTD
7599 #include <sys/types.h>
7600 #ifdef I_UNISTD
7601 #  include <unistd.h>
7602 #endif
7603 int main()
7604 {
7605         if (getuid() == 0) {
7606                 printf("(I see you are running Configure as super-user...)\n");
7607                 setuid(1);
7608         }
7609 #ifdef TRY_BSD_PGRP
7610         if (-1 == setpgrp(1, 1))
7611                 exit(0);
7612 #else
7613         if (setpgrp() != -1)
7614                 exit(0);
7615 #endif
7616         exit(1);
7617 }
7618 EOP
7619         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7620                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7621                 val="$define"
7622         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7623                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7624                 val="$undef"
7625         else
7626                 echo "(I can't seem to compile and run the test program.)"
7627                 if ./usg; then
7628                         xxx="a USG one, i.e. you use setpgrp()."
7629                 else
7630                         # SVR4 systems can appear rather BSD-ish.
7631                         case "$i_unistd" in
7632                         $undef)
7633                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7634                                 val="$define"
7635                                 ;;
7636                         $define)
7637                                 xxx="probably a USG one, i.e. you use setpgrp()."
7638                                 val="$undef"
7639                                 ;;
7640                         esac
7641                 fi
7642                 echo "Assuming your setpgrp is $xxx" >&4
7643         fi
7644         ;;
7645 *) val="$undef";;
7646 esac
7647 set d_bsdsetpgrp
7648 eval $setvar
7649 $rm -f set set.c
7650 : see if bzero exists
7651 set bzero d_bzero
7652 eval $inlibc
7653
7654 : see if signal is declared as pointer to function returning int or void
7655 echo " "
7656 xxx=`./findhdr signal.h`
7657 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7658 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7659         echo "You have int (*signal())() instead of void." >&4
7660         val="$undef"
7661 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7662         echo "You have void (*signal())()." >&4
7663         val="$define"
7664 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7665         echo "You have int (*signal())() instead of void." >&4
7666         val="$undef"
7667 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7668         echo "You have void (*signal())()." >&4
7669         val="$define"
7670 else
7671         case "$d_voidsig" in
7672         '')
7673         echo "I can't determine whether signal handler returns void or int..." >&4
7674                 dflt=void
7675                 rp="What type does your signal handler return?"
7676                 . ./myread
7677                 case "$ans" in
7678                 v*) val="$define";;
7679                 *) val="$undef";;
7680                 esac;;
7681         "$define")
7682                 echo "As you already told me, signal handler returns void." >&4
7683                 val="$define"
7684                 ;;
7685         *)      echo "As you already told me, signal handler returns int." >&4
7686                 val="$undef"
7687                 ;;
7688         esac
7689 fi
7690 set d_voidsig
7691 eval $setvar
7692 case "$d_voidsig" in
7693 "$define") signal_t="void";;
7694 *) signal_t="int";;
7695 esac
7696 $rm -f $$.tmp
7697
7698 : check for ability to cast large floats to 32-bit ints.
7699 echo " "
7700 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7701 if $test "$intsize" -ge 4; then
7702         xxx=int
7703 else
7704         xxx=long
7705 fi
7706 $cat >try.c <<EOCP
7707 #include <stdio.h>
7708 #include <sys/types.h>
7709 #include <signal.h>
7710 $signal_t blech(s) int s; { exit(3); }
7711 int main()
7712 {
7713         $xxx i32;
7714         double f, g;
7715         int result = 0;
7716         char str[16];
7717         signal(SIGFPE, blech);
7718
7719         /* Don't let compiler optimize the test away.  Store the number 
7720            in a writable string for gcc to pass to sscanf under HP/UX.
7721         */
7722         sprintf(str, "2147483647");
7723         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7724         g = 10 * f;
7725         i32  = ($xxx) g;
7726
7727         /* x86 processors will probably give 0x8000 0000, which is a
7728        sign change.  We don't want that.  We want to mimic SPARC
7729            behavior here, which is to preserve the sign and give
7730            back 0x7fff ffff.
7731         */
7732         if (i32 != ($xxx) f)
7733                 result |= 1;
7734         exit(result);
7735 }
7736 EOCP
7737 set try
7738 if eval $compile_ok; then
7739         ./try
7740         yyy=$?
7741 else
7742         echo "(I can't seem to compile the test program--assuming it can't)"
7743         yyy=1
7744 fi
7745 case "$yyy" in
7746 0)      val="$define"
7747         echo "Yup, it can."
7748         ;;
7749 *)      val="$undef"
7750         echo "Nope, it can't."
7751         ;;
7752 esac
7753 set d_casti32
7754 eval $setvar
7755 $rm -f try try.*
7756
7757 : check for ability to cast negative floats to unsigned
7758 echo " "
7759 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7760 $cat >try.c <<EOCP
7761 #include <stdio.h>
7762 #include <sys/types.h>
7763 #include <signal.h>
7764 $signal_t blech(s) int s; { exit(7); }
7765 $signal_t blech_in_list(s) int s; { exit(4); }
7766 unsigned long dummy_long(p) unsigned long p; { return p; }
7767 unsigned int dummy_int(p) unsigned int p; { return p; }
7768 unsigned short dummy_short(p) unsigned short p; { return p; }
7769 int main()
7770 {
7771         double f;
7772         unsigned long along;
7773         unsigned int aint;
7774         unsigned short ashort;
7775         int result = 0;
7776         char str[16];
7777         
7778         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7779            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7780            optimized the whole file away
7781         */
7782         /* Store the number in a writable string for gcc to pass to 
7783            sscanf under HP/UX.
7784         */
7785         sprintf(str, "-123");
7786         sscanf(str, "%lf", &f);  /* f = -123.; */
7787
7788         signal(SIGFPE, blech);
7789         along = (unsigned long)f;
7790         aint = (unsigned int)f;
7791         ashort = (unsigned short)f;
7792         if (along != (unsigned long)-123)
7793                 result |= 1;
7794         if (aint != (unsigned int)-123)
7795                 result |= 1;
7796         if (ashort != (unsigned short)-123)
7797                 result |= 1;
7798         sprintf(str, "1073741824.");
7799         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7800         f = f + f;
7801         along = 0;
7802         along = (unsigned long)f;
7803         if (along != 0x80000000)
7804                 result |= 2;
7805         f -= 1.;
7806         along = 0;
7807         along = (unsigned long)f;
7808         if (along != 0x7fffffff)
7809                 result |= 1;
7810         f += 2.;
7811         along = 0;
7812         along = (unsigned long)f;
7813         if (along != 0x80000001)
7814                 result |= 2;
7815         if (result)
7816                 exit(result);
7817         signal(SIGFPE, blech_in_list);
7818         sprintf(str, "123.");
7819         sscanf(str, "%lf", &f);  /* f = 123.; */
7820         along = dummy_long((unsigned long)f);
7821         aint = dummy_int((unsigned int)f);
7822         ashort = dummy_short((unsigned short)f);
7823         if (along != (unsigned long)123)
7824                 result |= 4;
7825         if (aint != (unsigned int)123)
7826                 result |= 4;
7827         if (ashort != (unsigned short)123)
7828                 result |= 4;
7829         exit(result);
7830
7831 }
7832 EOCP
7833 set try
7834 if eval $compile_ok; then
7835         ./try
7836         castflags=$?
7837 else
7838         echo "(I can't seem to compile the test program--assuming it can't)"
7839         castflags=7
7840 fi
7841 case "$castflags" in
7842 0)      val="$define"
7843         echo "Yup, it can."
7844         ;;
7845 *)      val="$undef"
7846         echo "Nope, it can't."
7847         ;;
7848 esac
7849 set d_castneg
7850 eval $setvar
7851 $rm -f try.*
7852
7853 : see if vprintf exists
7854 echo " "
7855 if set vprintf val -f d_vprintf; eval $csym; $val; then
7856         echo 'vprintf() found.' >&4
7857         val="$define"
7858         $cat >vprintf.c <<'EOF'
7859 #include <varargs.h>
7860
7861 int main() { xxx("foo"); }
7862
7863 xxx(va_alist)
7864 va_dcl
7865 {
7866         va_list args;
7867         char buf[10];
7868
7869         va_start(args);
7870         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7871 }
7872 EOF
7873         set vprintf
7874         if eval $compile && ./vprintf; then
7875                 echo "Your vsprintf() returns (int)." >&4
7876                 val2="$undef"
7877         else
7878                 echo "Your vsprintf() returns (char*)." >&4
7879                 val2="$define"
7880         fi
7881 else
7882         echo 'vprintf() NOT found.' >&4
7883                 val="$undef"
7884                 val2="$undef"
7885 fi
7886 set d_vprintf
7887 eval $setvar
7888 val=$val2
7889 set d_charvspr
7890 eval $setvar
7891
7892 : see if chown exists
7893 set chown d_chown
7894 eval $inlibc
7895
7896 : see if chroot exists
7897 set chroot d_chroot
7898 eval $inlibc
7899
7900 : see if chsize exists
7901 set chsize d_chsize
7902 eval $inlibc
7903
7904 : check for const keyword
7905 echo " "
7906 echo 'Checking to see if your C compiler knows about "const"...' >&4
7907 $cat >const.c <<'EOCP'
7908 typedef struct spug { int drokk; } spug;
7909 int main()
7910 {
7911         const char *foo;
7912         const spug y;
7913 }
7914 EOCP
7915 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7916         val="$define"
7917         echo "Yup, it does."
7918 else
7919         val="$undef"
7920         echo "Nope, it doesn't."
7921 fi
7922 set d_const
7923 eval $setvar
7924
7925 : see if crypt exists
7926 echo " "
7927 if set crypt val -f d_crypt; eval $csym; $val; then
7928         echo 'crypt() found.' >&4
7929         val="$define"
7930         cryptlib=''
7931 else
7932         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7933         if $test -z "$cryptlib"; then
7934                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7935         else
7936                 cryptlib=-lcrypt
7937         fi
7938         if $test -z "$cryptlib"; then
7939                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7940         else
7941                 cryptlib=-lcrypt
7942         fi
7943         if $test -z "$cryptlib"; then
7944                 cryptlib=`./loc libcrypt$_a "" $libpth`
7945         else
7946                 cryptlib=-lcrypt
7947         fi
7948         if $test -z "$cryptlib"; then
7949                 echo 'crypt() NOT found.' >&4
7950                 val="$undef"
7951         else
7952                 val="$define"
7953         fi
7954 fi
7955 set d_crypt
7956 eval $setvar
7957
7958 : get csh whereabouts
7959 case "$csh" in
7960 'csh') val="$undef" ;;
7961 *) val="$define" ;;
7962 esac
7963 set d_csh
7964 eval $setvar
7965 : Respect a hint or command line value for full_csh.
7966 case "$full_csh" in
7967 '') full_csh=$csh ;;
7968 esac
7969
7970 : see if cuserid exists
7971 set cuserid d_cuserid
7972 eval $inlibc
7973
7974 : see if this is a limits.h system
7975 set limits.h i_limits
7976 eval $inhdr
7977
7978 : see if this is a float.h system
7979 set float.h i_float
7980 eval $inhdr
7981
7982 : See if number of significant digits in a double precision number is known
7983 echo " "
7984 $cat >dbl_dig.c <<EOM
7985 #$i_limits I_LIMITS
7986 #$i_float I_FLOAT
7987 #ifdef I_LIMITS
7988 #include <limits.h>
7989 #endif
7990 #ifdef I_FLOAT
7991 #include <float.h>
7992 #endif
7993 #ifdef DBL_DIG
7994 printf("Contains DBL_DIG");
7995 #endif
7996 EOM
7997 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
7998 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
7999         echo "DBL_DIG found." >&4
8000         val="$define"
8001 else
8002         echo "DBL_DIG NOT found." >&4
8003         val="$undef"
8004 fi
8005 $rm -f dbl_dig.?
8006 set d_dbl_dig
8007 eval $setvar
8008
8009 : see if difftime exists
8010 set difftime d_difftime
8011 eval $inlibc
8012
8013 : see if this is a dirent system
8014 echo " "
8015 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8016         val="$define"
8017         echo "<dirent.h> found." >&4
8018 else
8019         val="$undef"
8020         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8021                 echo "<sys/dir.h> found." >&4
8022                 echo " "
8023         else
8024                 xinc=`./findhdr sys/ndir.h`
8025         fi
8026         echo "<dirent.h> NOT found." >&4
8027 fi
8028 set i_dirent
8029 eval $setvar
8030
8031 : Look for type of directory structure.
8032 echo " "
8033 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8034
8035 case "$direntrytype" in
8036 ''|' ')
8037         case "$i_dirent" in
8038         $define) guess1='struct dirent' ;;
8039         *) guess1='struct direct'  ;;
8040         esac
8041         ;;
8042 *)      guess1="$direntrytype"
8043         ;;
8044 esac
8045
8046 case "$guess1" in
8047 'struct dirent') guess2='struct direct' ;;
8048 *) guess2='struct dirent' ;;
8049 esac
8050                 
8051 if $contains "$guess1" try.c >/dev/null 2>&1; then
8052         direntrytype="$guess1"
8053         echo "Your directory entries are $direntrytype." >&4
8054 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8055         direntrytype="$guess2"
8056         echo "Your directory entries seem to be $direntrytype." >&4
8057 else
8058         echo "I don't recognize your system's directory entries." >&4
8059         rp="What type is used for directory entries on this system?"
8060         dflt="$guess1"
8061         . ./myread
8062         direntrytype="$ans"
8063 fi
8064 $rm -f try.c
8065
8066
8067 : see if the directory entry stores field length
8068 echo " "
8069 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8070 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8071         echo "Good, your directory entry keeps length information in d_namlen." >&4
8072         val="$define"
8073 else
8074         echo "Your directory entry does not know about the d_namlen field." >&4
8075         val="$undef"
8076 fi
8077 set d_dirnamlen
8078 eval $setvar
8079 $rm -f try.c
8080
8081 : see if dlerror exists
8082 xxx_runnm="$runnm"
8083 runnm=false
8084 set dlerror d_dlerror
8085 eval $inlibc
8086 runnm="$xxx_runnm"
8087
8088 : see if dlfcn is available
8089 set dlfcn.h i_dlfcn
8090 eval $inhdr
8091
8092 case "$usedl" in
8093 $define|y|true)
8094         $cat << EOM
8095
8096 On a few systems, the dynamically loaded modules that perl generates and uses
8097 will need a different extension than shared libs. The default will probably
8098 be appropriate.
8099
8100 EOM
8101         case "$dlext" in
8102         '')     dflt="$so" ;;
8103         *)      dflt="$dlext" ;;
8104         esac
8105         rp='What is the extension of dynamically loaded modules'
8106         . ./myread
8107         dlext="$ans"
8108         ;;
8109 *)
8110         dlext="none"
8111         ;;
8112 esac
8113
8114 : Check if dlsym need a leading underscore
8115 echo " "
8116 val="$undef"
8117
8118 case "$dlsrc" in
8119 dl_dlopen.xs)
8120         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8121         $cat >dyna.c <<'EOM'
8122 fred () { }
8123 EOM
8124
8125 $cat >fred.c<<EOM
8126
8127 #include <stdio.h>
8128 #$i_dlfcn I_DLFCN
8129 #ifdef I_DLFCN
8130 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8131 #else
8132 #include <sys/types.h>
8133 #include <nlist.h>
8134 #include <link.h>
8135 #endif
8136
8137 extern int fred() ;
8138
8139 int main()
8140 {
8141     void * handle ;
8142     void * symbol ;
8143 #ifndef RTLD_LAZY
8144     int mode = 1 ;
8145 #else
8146     int mode = RTLD_LAZY ;
8147 #endif
8148     handle = dlopen("./dyna.$dlext", mode) ;
8149     if (handle == NULL) {
8150         printf ("1\n") ;
8151         fflush (stdout) ;
8152         exit(0);
8153     }
8154     symbol = dlsym(handle, "fred") ;
8155     if (symbol == NULL) {
8156         /* try putting a leading underscore */
8157         symbol = dlsym(handle, "_fred") ;
8158         if (symbol == NULL) {
8159             printf ("2\n") ;
8160             fflush (stdout) ;
8161             exit(0);
8162         }
8163         printf ("3\n") ;
8164     }
8165     else
8166         printf ("4\n") ;
8167     fflush (stdout) ;
8168     exit(0);
8169 }
8170 EOM
8171         : Call the object file tmp-dyna.o in case dlext=o.
8172         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8173                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8174                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8175                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8176                 xxx=`./fred`
8177                 case $xxx in
8178                 1)      echo "Test program failed using dlopen." >&4
8179                         echo "Perhaps you should not use dynamic loading." >&4;;
8180                 2)      echo "Test program failed using dlsym." >&4
8181                         echo "Perhaps you should not use dynamic loading." >&4;;
8182                 3)      echo "dlsym needs a leading underscore" >&4
8183                         val="$define" ;;
8184                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8185                 esac
8186         else
8187                 echo "I can't compile and run the test program." >&4
8188                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8189         fi
8190         ;;
8191 esac
8192                 
8193 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8194
8195 set d_dlsymun
8196 eval $setvar
8197
8198 hasproto='varname=$1; func=$2; shift; shift;
8199 while $test $# -ge 2; do
8200         case "$1" in
8201         $define) echo "#include <$2>";;
8202         esac ;
8203     shift 2;
8204 done > try.c;
8205 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8206 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8207         echo "$func() prototype found.";
8208         val="$define";
8209 else
8210         echo "$func() prototype NOT found.";
8211         val="$undef";
8212 fi;
8213 set $varname;
8214 eval $setvar;
8215 $rm -f try.c tryout.c'
8216
8217 : see if prototype for drand48 is available
8218 echo " "
8219 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8220 eval $hasproto
8221
8222 : see if dup2 exists
8223 set dup2 d_dup2
8224 eval $inlibc
8225
8226 : see if eaccess exists
8227 set eaccess d_eaccess
8228 eval $inlibc
8229
8230 : see if endgrent exists
8231 set endgrent d_endgrent
8232 eval $inlibc
8233
8234 : see if endhostent exists
8235 set endhostent d_endhent
8236 eval $inlibc
8237
8238 : see if endnetent exists
8239 set endnetent d_endnent
8240 eval $inlibc
8241
8242 : see if endprotoent exists
8243 set endprotoent d_endpent
8244 eval $inlibc
8245
8246 : see if endpwent exists
8247 set endpwent d_endpwent
8248 eval $inlibc
8249
8250 : see if endservent exists
8251 set endservent d_endsent
8252 eval $inlibc
8253
8254 : see if endspent exists
8255 set endspent d_endspent
8256 eval $inlibc
8257
8258 : Locate the flags for 'open()'
8259 echo " "
8260 $cat >open3.c <<'EOCP'
8261 #include <sys/types.h>
8262 #ifdef I_FCNTL
8263 #include <fcntl.h>
8264 #endif
8265 #ifdef I_SYS_FILE
8266 #include <sys/file.h>
8267 #endif
8268 int main() {
8269         if(O_RDONLY);
8270 #ifdef O_TRUNC
8271         exit(0);
8272 #else
8273         exit(1);
8274 #endif
8275 }
8276 EOCP
8277 : check sys/file.h first to get FREAD on Sun
8278 if $test `./findhdr sys/file.h` && \
8279                 set open3 -DI_SYS_FILE && eval $compile; then
8280         h_sysfile=true;
8281         echo "<sys/file.h> defines the O_* constants..." >&4
8282         if ./open3; then
8283                 echo "and you have the 3 argument form of open()." >&4
8284                 val="$define"
8285         else
8286                 echo "but not the 3 argument form of open().  Oh, well." >&4
8287                 val="$undef"
8288         fi
8289 elif $test `./findhdr fcntl.h` && \
8290                 set open3 -DI_FCNTL && eval $compile; then
8291         h_fcntl=true;
8292         echo "<fcntl.h> defines the O_* constants..." >&4
8293         if ./open3; then
8294                 echo "and you have the 3 argument form of open()." >&4
8295                 val="$define"
8296         else
8297                 echo "but not the 3 argument form of open().  Oh, well." >&4
8298                 val="$undef"
8299         fi
8300 else
8301         val="$undef"
8302         echo "I can't find the O_* constant definitions!  You got problems." >&4
8303 fi
8304 set d_open3
8305 eval $setvar
8306 $rm -f open3*
8307
8308 : see which of string.h or strings.h is needed
8309 echo " "
8310 strings=`./findhdr string.h`
8311 if $test "$strings" && $test -r "$strings"; then
8312         echo "Using <string.h> instead of <strings.h>." >&4
8313         val="$define"
8314 else
8315         val="$undef"
8316         strings=`./findhdr strings.h`
8317         if $test "$strings" && $test -r "$strings"; then
8318                 echo "Using <strings.h> instead of <string.h>." >&4
8319         else
8320                 echo "No string header found -- You'll surely have problems." >&4
8321         fi
8322 fi
8323 set i_string
8324 eval $setvar
8325 case "$i_string" in
8326 "$undef") strings=`./findhdr strings.h`;;
8327 *)        strings=`./findhdr string.h`;;
8328 esac
8329
8330 : check for non-blocking I/O stuff
8331 case "$h_sysfile" in
8332 true) echo "#include <sys/file.h>" > head.c;;
8333 *)
8334         case "$h_fcntl" in
8335         true) echo "#include <fcntl.h>" > head.c;;
8336         *) echo "#include <sys/fcntl.h>" > head.c;;
8337         esac
8338         ;;
8339 esac
8340 echo " "
8341 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8342 case "$o_nonblock" in
8343 '')
8344         $cat head.c > try.c
8345         $cat >>try.c <<'EOCP'
8346 #include <stdio.h>
8347 int main() {
8348 #ifdef O_NONBLOCK
8349         printf("O_NONBLOCK\n");
8350         exit(0);
8351 #endif
8352 #ifdef O_NDELAY
8353         printf("O_NDELAY\n");
8354         exit(0);
8355 #endif
8356 #ifdef FNDELAY
8357         printf("FNDELAY\n");
8358         exit(0);
8359 #endif
8360         exit(0);
8361 }
8362 EOCP
8363         set try
8364         if eval $compile_ok; then
8365                 o_nonblock=`./try`
8366                 case "$o_nonblock" in
8367                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8368                 *) echo "Seems like we can use $o_nonblock.";;
8369                 esac
8370         else
8371                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8372         fi
8373         ;;
8374 *) echo "Using $hint value $o_nonblock.";;
8375 esac
8376 $rm -f try try.* .out core
8377
8378 echo " "
8379 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8380 case "$eagain" in
8381 '')
8382         $cat head.c > try.c
8383         $cat >>try.c <<EOCP
8384 #include <errno.h>
8385 #include <sys/types.h>
8386 #include <signal.h>
8387 #include <stdio.h> 
8388 #define MY_O_NONBLOCK $o_nonblock
8389 #ifndef errno  /* XXX need better Configure test */
8390 extern int errno;
8391 #endif
8392 #$i_unistd I_UNISTD
8393 #ifdef I_UNISTD
8394 #include <unistd.h>
8395 #endif
8396 #ifdef $i_string
8397 #include <string.h>
8398 #else
8399 #include <strings.h>
8400 #endif
8401 $signal_t blech(x) int x; { exit(3); }
8402 EOCP
8403         $cat >> try.c <<'EOCP'
8404 int main()
8405 {
8406         int pd[2];
8407         int pu[2];
8408         char buf[1];
8409         char string[100];
8410
8411         pipe(pd);       /* Down: child -> parent */
8412         pipe(pu);       /* Up: parent -> child */
8413         if (0 != fork()) {
8414                 int ret;
8415                 close(pd[1]);   /* Parent reads from pd[0] */
8416                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8417                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8418                         exit(1);
8419                 signal(SIGALRM, blech);
8420                 alarm(5);
8421                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8422                         exit(2);
8423                 sprintf(string, "%d\n", ret);
8424                 write(2, string, strlen(string));
8425                 alarm(0);
8426 #ifdef EAGAIN
8427                 if (errno == EAGAIN) {
8428                         printf("EAGAIN\n");
8429                         goto ok;
8430                 }
8431 #endif
8432 #ifdef EWOULDBLOCK
8433                 if (errno == EWOULDBLOCK)
8434                         printf("EWOULDBLOCK\n");
8435 #endif
8436         ok:
8437                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8438                 sleep(2);                               /* Give it time to close our pipe */
8439                 alarm(5);
8440                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8441                 alarm(0);
8442                 sprintf(string, "%d\n", ret);
8443                 write(3, string, strlen(string));
8444                 exit(0);
8445         }
8446
8447         close(pd[0]);                   /* We write to pd[1] */
8448         close(pu[1]);                   /* We read from pu[0] */
8449         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8450         close(pd[1]);                   /* Pipe pd is now fully closed! */
8451         exit(0);                                /* Bye bye, thank you for playing! */
8452 }
8453 EOCP
8454         set try
8455         if eval $compile_ok; then
8456                 echo "$startsh" >mtry
8457                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8458                 chmod +x mtry
8459                 ./mtry >/dev/null 2>&1
8460                 case $? in
8461                 0) eagain=`$cat try.out`;;
8462                 1) echo "Could not perform non-blocking setting!";;
8463                 2) echo "I did a successful read() for something that was not there!";;
8464                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8465                 *) echo "Something terribly wrong happened during testing.";;
8466                 esac
8467                 rd_nodata=`$cat try.ret`
8468                 echo "A read() system call with no data present returns $rd_nodata."
8469                 case "$rd_nodata" in
8470                 0|-1) ;;
8471                 *)
8472                         echo "(That's peculiar, fixing that to be -1.)"
8473                         rd_nodata=-1
8474                         ;;
8475                 esac
8476                 case "$eagain" in
8477                 '')
8478                         echo "Forcing errno EAGAIN on read() with no data available."
8479                         eagain=EAGAIN
8480                         ;;
8481                 *)
8482                         echo "Your read() sets errno to $eagain when no data is available."
8483                         ;;
8484                 esac
8485                 status=`$cat try.err`
8486                 case "$status" in
8487                 0) echo "And it correctly returns 0 to signal EOF.";;
8488                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8489                 *) echo "However, your read() returns '$status' on EOF??";;
8490                 esac
8491                 val="$define"
8492                 if test "$status" = "$rd_nodata"; then
8493                         echo "WARNING: you can't distinguish between EOF and no data!"
8494                         val="$undef"
8495                 fi
8496         else
8497                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8498                 eagain=EAGAIN
8499         fi
8500         set d_eofnblk
8501         eval $setvar
8502         ;;
8503 *)
8504         echo "Using $hint value $eagain."
8505         echo "Your read() returns $rd_nodata when no data is present."
8506         case "$d_eofnblk" in
8507         "$define") echo "And you can see EOF because read() returns 0.";;
8508         "$undef") echo "But you can't see EOF status from read() returned value.";;
8509         *)
8510                 echo "(Assuming you can't see EOF status from read anyway.)"
8511                 d_eofnblk=$undef
8512                 ;;
8513         esac
8514         ;;
8515 esac
8516 $rm -f try try.* .out core head.c mtry
8517
8518 : see if fchmod exists
8519 set fchmod d_fchmod
8520 eval $inlibc
8521
8522 : see if fchown exists
8523 set fchown d_fchown
8524 eval $inlibc
8525
8526 : see if this is an fcntl system
8527 set fcntl d_fcntl
8528 eval $inlibc
8529
8530 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8531 while $test $# -ge 2; do
8532         case "$1" in
8533         $define) echo "#include <$2>";;
8534         esac ;
8535     shift 2;
8536 done > try.c;
8537 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8538 set try;
8539 if eval $compile; then
8540         val="$define";
8541 else
8542         val="$undef";
8543 fi;
8544 set $varname;
8545 eval $setvar;
8546 $rm -f try.c try.o'
8547
8548 socketlib=''
8549 sockethdr=''
8550 : see whether socket exists
8551 echo " "
8552 $echo $n "Hmm... $c" >&4
8553 if set socket val -f d_socket; eval $csym; $val; then
8554         echo "Looks like you have Berkeley networking support." >&4
8555         d_socket="$define"
8556         if set setsockopt val -f; eval $csym; $val; then
8557                 d_oldsock="$undef"
8558         else
8559                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8560                 d_oldsock="$define"
8561         fi
8562 else
8563         if $contains socklib libc.list >/dev/null 2>&1; then
8564                 echo "Looks like you have Berkeley networking support." >&4
8565                 d_socket="$define"
8566                 : we will have to assume that it supports the 4.2 BSD interface
8567                 d_oldsock="$undef"
8568         else
8569                 echo "You don't have Berkeley networking in libc$_a..." >&4
8570                 if test "X$d_socket" = "X$define"; then
8571                    echo "...but you seem to believe that you have sockets." >&4
8572                 else
8573                         for net in net socket
8574                         do
8575                                 if test -f /usr/lib/lib$net$_a; then
8576                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8577                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8578                                         if $contains socket libc.list >/dev/null 2>&1; then
8579                                                 d_socket="$define"
8580                                                 socketlib="-l$net"
8581                                                 case "$net" in
8582                                                 net)
8583                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8584                                                         sockethdr="-I/usr/netinclude"
8585                                                         ;;
8586                                                 esac
8587                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8588                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8589                                                         d_oldsock="$undef"
8590                                                 else
8591                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8592                                                         d_oldsock="$define"
8593                                                 fi
8594                                                 break
8595                                         fi
8596                                 fi
8597                         done
8598                         if test "X$d_socket" != "X$define"; then
8599                            echo "or anywhere else I see." >&4
8600                            d_socket="$undef"
8601                            d_oldsock="$undef"
8602                         fi
8603                 fi
8604         fi
8605 fi
8606
8607 : see if socketpair exists
8608 set socketpair d_sockpair
8609 eval $inlibc
8610
8611
8612 echo " "
8613 echo "Checking the availability of certain socket constants..." >& 4
8614 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8615         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8616         $cat >try.c <<EOF
8617 #include <sys/types.h>
8618 #include <sys/socket.h>
8619 int main() {
8620     int i = $ENUM;
8621 }
8622 EOF
8623         val="$undef"
8624         set try; if eval $compile; then
8625                 val="$define"
8626         fi
8627         set d_${enum}; eval $setvar
8628         $rm -f try.c try
8629 done
8630
8631 : see if sys/select.h has to be included
8632 set sys/select.h i_sysselct
8633 eval $inhdr
8634
8635 : see if we should include time.h, sys/time.h, or both
8636 echo " "
8637 if test "X$timeincl" = X; then
8638         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8639         $echo $n "I'm now running the test program...$c"
8640         $cat >try.c <<'EOCP'
8641 #include <sys/types.h>
8642 #ifdef I_TIME
8643 #include <time.h>
8644 #endif
8645 #ifdef I_SYSTIME
8646 #ifdef SYSTIMEKERNEL
8647 #define KERNEL
8648 #endif
8649 #include <sys/time.h>
8650 #endif
8651 #ifdef I_SYSSELECT
8652 #include <sys/select.h>
8653 #endif
8654 int main()
8655 {
8656         struct tm foo;
8657 #ifdef S_TIMEVAL
8658         struct timeval bar;
8659 #endif
8660 #ifdef S_TIMEZONE
8661         struct timezone tzp;
8662 #endif
8663         if (foo.tm_sec == foo.tm_sec)
8664                 exit(0);
8665 #ifdef S_TIMEVAL
8666         if (bar.tv_sec == bar.tv_sec)
8667                 exit(0);
8668 #endif
8669         exit(1);
8670 }
8671 EOCP
8672         flags=''
8673         for s_timezone in '-DS_TIMEZONE' ''; do
8674         sysselect=''
8675         for s_timeval in '-DS_TIMEVAL' ''; do
8676         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8677         for i_time in '' '-DI_TIME'; do
8678         for i_systime in '-DI_SYSTIME' ''; do
8679                 case "$flags" in
8680                 '') $echo $n ".$c"
8681                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8682                         if eval $compile; then
8683                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8684                                 shift
8685                                 flags="$*"
8686                                 echo " "
8687                                 $echo $n "Succeeded with $flags$c"
8688                         fi
8689                         ;;
8690                 esac
8691         done
8692         done
8693         done
8694         done
8695         done
8696         timeincl=''
8697         echo " "
8698         case "$flags" in
8699         *SYSTIMEKERNEL*) i_systimek="$define"
8700                 timeincl=`./findhdr sys/time.h`
8701                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8702         *) i_systimek="$undef";;
8703         esac
8704         case "$flags" in
8705         *I_TIME*) i_time="$define"
8706                 timeincl=`./findhdr time.h`" $timeincl"
8707                 echo "We'll include <time.h>." >&4;;
8708         *) i_time="$undef";;
8709         esac
8710         case "$flags" in
8711         *I_SYSTIME*) i_systime="$define"
8712                 timeincl=`./findhdr sys/time.h`" $timeincl"
8713                 echo "We'll include <sys/time.h>." >&4;;
8714         *) i_systime="$undef";;
8715         esac
8716         $rm -f try.c try
8717 fi
8718
8719 : check for fd_set items
8720 $cat <<EOM
8721
8722 Checking to see how well your C compiler handles fd_set and friends ...
8723 EOM
8724 $cat >fd_set.c <<EOCP
8725 #$i_systime I_SYS_TIME
8726 #$i_sysselct I_SYS_SELECT
8727 #$d_socket HAS_SOCKET
8728 #include <sys/types.h>
8729 #ifdef HAS_SOCKET
8730 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8731 #endif
8732 #ifdef I_SYS_TIME
8733 #include <sys/time.h>
8734 #endif
8735 #ifdef I_SYS_SELECT
8736 #include <sys/select.h>
8737 #endif
8738 int main() {
8739         fd_set fds;
8740
8741 #ifdef TRYBITS
8742         if(fds.fds_bits);
8743 #endif
8744
8745 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8746         exit(0);
8747 #else
8748         exit(1);
8749 #endif
8750 }
8751 EOCP
8752 set fd_set -DTRYBITS
8753 if eval $compile; then
8754         d_fds_bits="$define"
8755         d_fd_set="$define"
8756         echo "Well, your system knows about the normal fd_set typedef..." >&4
8757         if ./fd_set; then
8758                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8759                 d_fd_macros="$define"
8760         else
8761                 $cat >&4 <<'EOM'
8762 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8763 EOM
8764                 d_fd_macros="$undef"
8765         fi
8766 else
8767         $cat <<'EOM'
8768 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8769 EOM
8770         set fd_set
8771         if eval $compile; then
8772                 d_fds_bits="$undef"
8773                 d_fd_set="$define"
8774                 echo "Well, your system has some sort of fd_set available..." >&4
8775                 if ./fd_set; then
8776                         echo "and you have the normal fd_set macros." >&4
8777                         d_fd_macros="$define"
8778                 else
8779                         $cat <<'EOM'
8780 but not the normal fd_set macros!  Gross!  More work for me...
8781 EOM
8782                         d_fd_macros="$undef"
8783                 fi
8784         else
8785         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8786                 d_fd_set="$undef"
8787                 d_fds_bits="$undef"
8788                 d_fd_macros="$undef"
8789         fi
8790 fi
8791 $rm -f fd_set*
8792
8793 : see if fgetpos exists
8794 set fgetpos d_fgetpos
8795 eval $inlibc
8796
8797 : see if flock exists
8798 set flock d_flock
8799 eval $inlibc
8800
8801 : see if fork exists
8802 set fork d_fork
8803 eval $inlibc
8804
8805 : see if pathconf exists
8806 set pathconf d_pathconf
8807 eval $inlibc
8808
8809 : see if fpathconf exists
8810 set fpathconf d_fpathconf
8811 eval $inlibc
8812
8813
8814 : check for off64_t
8815 echo " "
8816 echo "Checking to see if your system supports off64_t..." >&4
8817 $cat >try.c <<EOCP
8818 #include <sys/types.h>
8819 #include <unistd.h>
8820 int main() { off64_t x = 7; }'
8821 EOCP
8822 set try
8823 if eval $compile; then
8824         val="$define"
8825         echo "Yes, it does."
8826 else
8827         val="$undef"
8828         echo "No, it doesn't."
8829         case "$lseeksize" in
8830         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8831         esac
8832 fi
8833 $rm -f try.* try
8834 set d_off64_t
8835 eval $setvar
8836
8837 : check for fpos64_t
8838 echo " "
8839 echo "Checking to see if your system supports fpos64_t..." >&4
8840 $cat >try.c <<EOCP
8841 #include <sys/stdio.h>
8842 int main() { fpos64_t x x = 7; }'
8843 EOCP
8844 set try
8845 if eval $compile; then
8846         val="$define"
8847         echo "Yes, it does."
8848 else
8849         val="$undef"
8850         echo "No, it doesn't."
8851         case "$fpossize" in
8852         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8853         esac
8854 fi
8855 $rm -f try.* try
8856 set d_fpos64_t
8857 eval $setvar
8858
8859 hasstruct='varname=$1; struct=$2; shift; shift;
8860 while $test $# -ge 2; do
8861         case "$1" in
8862         $define) echo "#include <$2>";;
8863         esac ;
8864     shift 2;
8865 done > try.c;
8866 echo "int main () { struct $struct foo; }" >> try.c;
8867 set try;
8868 if eval $compile; then
8869         val="$define";
8870 else
8871         val="$undef";
8872 fi;
8873 set $varname;
8874 eval $setvar;
8875 $rm -f try.c try.o'
8876
8877 : see if this is a sys/param system
8878 set sys/param.h i_sysparam
8879 eval $inhdr
8880
8881 : see if this is a sys/mount.h system
8882 set sys/mount.h i_sysmount
8883 eval $inhdr
8884
8885 : see if sys/types.h has to be included
8886 set sys/types.h i_systypes
8887 eval $inhdr
8888
8889
8890 echo " "
8891 echo "Checking to see if your system supports struct fs_data..." >&4
8892 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8893 eval $hasstruct
8894 case "$d_fs_data_s" in
8895 "$define")      echo "Yes, it does."   ;;
8896 *)              echo "No, it doesn't." ;;
8897 esac
8898
8899 : see if fseeko exists
8900 set fseeko d_fseeko
8901 eval $inlibc
8902 case "$longsize" in
8903 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8904 esac
8905
8906 : see if fsetpos exists
8907 set fsetpos d_fsetpos
8908 eval $inlibc
8909
8910
8911 : see if fstatfs exists
8912 set fstatfs d_fstatfs
8913 eval $inlibc
8914
8915
8916 : see if statvfs exists
8917 set statvfs d_statvfs
8918 eval $inlibc
8919
8920 : see if fstatvfs exists
8921 set fstatvfs d_fstatvfs
8922 eval $inlibc
8923
8924
8925 : see if ftello exists
8926 set ftello d_ftello
8927 eval $inlibc
8928 case "$longsize" in
8929 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8930 esac
8931
8932 : see if getgrent exists
8933 set getgrent d_getgrent
8934 eval $inlibc
8935
8936 : see if gethostbyaddr exists
8937 set gethostbyaddr d_gethbyaddr
8938 eval $inlibc
8939
8940 : see if gethostbyname exists
8941 set gethostbyname d_gethbyname
8942 eval $inlibc
8943
8944 : see if gethostent exists
8945 set gethostent d_gethent
8946 eval $inlibc
8947
8948 : see how we will look up host name
8949 echo " "
8950 call=''
8951 if set gethostname val -f d_gethname; eval $csym; $val; then
8952         echo 'gethostname() found.' >&4
8953         d_gethname="$define"
8954         call=gethostname
8955 fi
8956 if set uname val -f d_uname; eval $csym; $val; then
8957         if ./xenix; then
8958                 $cat <<'EOM'
8959 uname() was found, but you're running xenix, and older versions of xenix
8960 have a broken uname(). If you don't really know whether your xenix is old
8961 enough to have a broken system call, use the default answer.
8962
8963 EOM
8964                 dflt=y
8965                 case "$d_uname" in
8966                 "$define") dflt=n;;
8967                 esac
8968                 rp='Is your uname() broken?'
8969                 . ./myread
8970                 case "$ans" in
8971                 n*) d_uname="$define"; call=uname;;
8972                 esac
8973         else
8974                 echo 'uname() found.' >&4
8975                 d_uname="$define"
8976                 case "$call" in
8977                 '') call=uname ;;
8978                 esac
8979         fi
8980 fi
8981 case "$d_gethname" in
8982 '') d_gethname="$undef";;
8983 esac
8984 case "$d_uname" in
8985 '') d_uname="$undef";;
8986 esac
8987 case "$d_uname$d_gethname" in
8988 *define*)
8989         dflt=n
8990         cat <<EOM
8991  
8992 Every now and then someone has a $call() that lies about the hostname
8993 but can't be fixed for political or economic reasons.  If you wish, I can
8994 pretend $call() isn't there and maybe compute hostname at run-time
8995 thanks to the '$phostname' command.
8996
8997 EOM
8998         rp="Shall I ignore $call() from now on?"
8999         . ./myread
9000         case "$ans" in
9001         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9002         esac;;
9003 esac
9004 case "$phostname" in
9005 '') aphostname='';;
9006 *) case "$aphostname" in
9007         /*) ;;
9008         *) set X $phostname
9009                 shift
9010                 file=$1
9011                 shift
9012                 file=`./loc $file $file $pth`
9013                 aphostname=`echo $file $*`
9014                 ;;
9015         esac
9016         ;;
9017 esac
9018 case "$d_uname$d_gethname" in
9019 *define*) ;;
9020 *)
9021         case "$phostname" in
9022         '')
9023                 echo "There will be no way for $package to get your hostname." >&4;;
9024         *)
9025         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9026                 ;;
9027         esac;;
9028 esac
9029 case "$d_phostname" in
9030 '') d_phostname="$undef";;
9031 esac
9032
9033 : see if this is a netdb.h system
9034 set netdb.h i_netdb
9035 eval $inhdr
9036
9037 : see if prototypes for various gethostxxx netdb.h functions are available
9038 echo " "
9039 set d_gethostprotos gethostent $i_netdb netdb.h
9040 eval $hasproto
9041
9042 : see if getlogin exists
9043 set getlogin d_getlogin
9044 eval $inlibc
9045
9046 : see if getmnt exists
9047 set getmnt d_getmnt
9048 eval $inlibc
9049
9050 : see if getmntent exists
9051 set getmntent d_getmntent
9052 eval $inlibc
9053
9054 : see if getnetbyaddr exists
9055 set getnetbyaddr d_getnbyaddr
9056 eval $inlibc
9057
9058 : see if getnetbyname exists
9059 set getnetbyname d_getnbyname
9060 eval $inlibc
9061
9062 : see if getnetent exists
9063 set getnetent d_getnent
9064 eval $inlibc
9065
9066 : see if prototypes for various getnetxxx netdb.h functions are available
9067 echo " "
9068 set d_getnetprotos getnetent $i_netdb netdb.h
9069 eval $hasproto
9070
9071
9072 : see if getprotobyname exists
9073 set getprotobyname d_getpbyname
9074 eval $inlibc
9075
9076 : see if getprotobynumber exists
9077 set getprotobynumber d_getpbynumber
9078 eval $inlibc
9079
9080 : see if getprotoent exists
9081 set getprotoent d_getpent
9082 eval $inlibc
9083
9084 : see if getpgid exists
9085 set getpgid d_getpgid
9086 eval $inlibc
9087
9088 : see if getpgrp2 exists
9089 set getpgrp2 d_getpgrp2
9090 eval $inlibc
9091
9092 : see if getppid exists
9093 set getppid d_getppid
9094 eval $inlibc
9095
9096 : see if getpriority exists
9097 set getpriority d_getprior
9098 eval $inlibc
9099
9100 : see if prototypes for various getprotoxxx netdb.h functions are available
9101 echo " "
9102 set d_getprotoprotos getprotoent $i_netdb netdb.h
9103 eval $hasproto
9104
9105 : see if getpwent exists
9106 set getpwent d_getpwent
9107 eval $inlibc
9108
9109
9110 : see if getservbyname exists
9111 set getservbyname d_getsbyname
9112 eval $inlibc
9113
9114 : see if getservbyport exists
9115 set getservbyport d_getsbyport
9116 eval $inlibc
9117
9118 : see if getservent exists
9119 set getservent d_getsent
9120 eval $inlibc
9121
9122 : see if prototypes for various getservxxx netdb.h functions are available
9123 echo " "
9124 set d_getservprotos getservent $i_netdb netdb.h
9125 eval $hasproto
9126
9127 : see if getspent exists
9128 set getspent d_getspent
9129 eval $inlibc
9130
9131 : see if getspnam exists
9132 set getspnam d_getspnam
9133 eval $inlibc
9134
9135 : see if gettimeofday or ftime exists
9136 set gettimeofday d_gettimeod
9137 eval $inlibc
9138 case "$d_gettimeod" in
9139 "$undef")
9140         set ftime d_ftime 
9141         eval $inlibc
9142         ;;
9143 *)
9144         val="$undef"; set d_ftime; eval $setvar
9145         ;;
9146 esac
9147 case "$d_gettimeod$d_ftime" in
9148 "$undef$undef")
9149         echo " "
9150         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9151         ;;
9152 esac
9153
9154 : see if this is an grp system
9155 set grp.h i_grp
9156 eval $inhdr
9157
9158 case "$i_grp" in
9159 $define)
9160         xxx=`./findhdr grp.h`
9161         $cppstdin $cppflags $cppminus < $xxx >$$.h
9162
9163         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9164                 val="$define"
9165         else
9166                 val="$undef"
9167         fi
9168         set d_grpasswd
9169         eval $setvar
9170
9171         $rm -f $$.h
9172         ;;
9173 *)
9174         val="$undef";
9175         set d_grpasswd; eval $setvar
9176         ;;
9177 esac
9178
9179 : see if hasmntopt exists
9180 set hasmntopt d_hasmntopt
9181 eval $inlibc
9182
9183 : see if this is a netinet/in.h or sys/in.h system
9184 set netinet/in.h i_niin sys/in.h i_sysin
9185 eval $inhdr
9186
9187 : see if arpa/inet.h has to be included
9188 set arpa/inet.h i_arpainet
9189 eval $inhdr
9190
9191 : see if htonl --and friends-- exists
9192 val=''
9193 set htonl val
9194 eval $inlibc
9195
9196 : Maybe they are macros.
9197 case "$val" in
9198 $undef)
9199         $cat >htonl.c <<EOM
9200 #include <stdio.h>
9201 #include <sys/types.h>
9202 #$i_niin I_NETINET_IN
9203 #$i_sysin I_SYS_IN
9204 #$i_arpainet I_ARPA_INET
9205 #ifdef I_NETINET_IN
9206 #include <netinet/in.h>
9207 #endif
9208 #ifdef I_SYS_IN
9209 #include <sys/in.h>
9210 #endif
9211 #ifdef I_ARPA_INET
9212 #include <arpa/inet.h>
9213 #endif
9214 #ifdef htonl
9215 printf("Defined as a macro.");
9216 #endif
9217 EOM
9218         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9219         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9220                 val="$define"
9221                 echo "But it seems to be defined as a macro." >&4
9222         fi
9223         $rm -f htonl.?
9224         ;;
9225 esac
9226 set d_htonl
9227 eval $setvar
9228
9229 : see if iconv exists
9230 set iconv d_iconv
9231 eval $inlibc
9232
9233 : index or strchr
9234 echo " "
9235 if set index val -f; eval $csym; $val; then
9236         if set strchr val -f d_strchr; eval $csym; $val; then
9237                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9238                         val="$define"
9239                         vali="$undef"
9240                         echo "strchr() found." >&4
9241                 else
9242                         val="$undef"
9243                         vali="$define"
9244                         echo "index() found." >&4
9245                 fi
9246         else
9247                 val="$undef"
9248                 vali="$define"
9249                 echo "index() found." >&4
9250         fi
9251 else
9252         if set strchr val -f d_strchr; eval $csym; $val; then
9253                 val="$define"
9254                 vali="$undef"
9255                 echo "strchr() found." >&4
9256         else
9257                 echo "No index() or strchr() found!" >&4
9258                 val="$undef"
9259                 vali="$undef"
9260         fi
9261 fi
9262 set d_strchr; eval $setvar
9263 val="$vali"
9264 set d_index; eval $setvar
9265
9266 : check whether inet_aton exists
9267 set inet_aton d_inetaton
9268 eval $inlibc
9269
9270 : Look for isascii
9271 echo " "
9272 $cat >isascii.c <<'EOCP'
9273 #include <stdio.h>
9274 #include <ctype.h>
9275 int main() {
9276         int c = 'A';
9277         if (isascii(c))
9278                 exit(0);
9279         else
9280                 exit(1);
9281 }
9282 EOCP
9283 set isascii
9284 if eval $compile; then
9285         echo "isascii() found." >&4
9286         val="$define"
9287 else
9288         echo "isascii() NOT found." >&4
9289         val="$undef"
9290 fi
9291 set d_isascii
9292 eval $setvar
9293 $rm -f isascii*
9294
9295 : see if killpg exists
9296 set killpg d_killpg
9297 eval $inlibc
9298
9299 : see if lchown exists
9300 echo " "
9301 $cat > try.c <<'EOCP'
9302 /* System header to define __stub macros and hopefully few prototypes,
9303     which can conflict with char lchown(); below.  */
9304 #include <assert.h>
9305 /* Override any gcc2 internal prototype to avoid an error.  */
9306 /* We use char because int might match the return type of a gcc2
9307    builtin and then its argument prototype would still apply.  */
9308 char lchown();
9309 int main() {
9310     /*  The GNU C library defines this for functions which it implements
9311         to always fail with ENOSYS.  Some functions are actually named
9312         something starting with __ and the normal name is an alias.  */
9313 #if defined (__stub_lchown) || defined (__stub___lchown)
9314 choke me
9315 #else
9316 lchown();
9317 #endif
9318 ; return 0; }
9319 EOCP
9320 set try
9321 if eval $compile; then
9322     $echo "lchown() found." >&4
9323     val="$define"
9324 else
9325     $echo "lchown() NOT found." >&4
9326     val="$undef"
9327 fi
9328 set d_lchown
9329 eval $setvar
9330
9331 : See if number of significant digits in a double precision number is known
9332 echo " "
9333 $cat >ldbl_dig.c <<EOM
9334 #$i_limits I_LIMITS
9335 #$i_float I_FLOAT
9336 #ifdef I_LIMITS
9337 #include <limits.h>
9338 #endif
9339 #ifdef I_FLOAT
9340 #include <float.h>
9341 #endif
9342 #ifdef LDBL_DIG
9343 printf("Contains LDBL_DIG");
9344 #endif
9345 EOM
9346 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9347 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9348         echo "LDBL_DIG found." >&4
9349         val="$define"
9350 else
9351         echo "LDBL_DIG NOT found." >&4
9352         val="$undef"
9353 fi
9354 $rm -f ldbl_dig.?
9355 set d_ldbl_dig
9356 eval $setvar
9357
9358 : see if link exists
9359 set link d_link
9360 eval $inlibc
9361
9362 : see if localeconv exists
9363 set localeconv d_locconv
9364 eval $inlibc
9365
9366 : see if lockf exists
9367 set lockf d_lockf
9368 eval $inlibc
9369
9370 : check for long long
9371 echo " "
9372 $echo $n "Checking to see if your system supports long long..." $c >&4
9373 echo 'int main() { long long x = 7; return 0; }' > try.c
9374 set try
9375 if eval $compile; then
9376         val="$define"
9377         echo " Yes, it does." >&4
9378 else
9379         val="$undef"
9380         echo " No, it doesn't." >&4
9381 fi
9382 $rm try.*
9383 set d_longlong
9384 eval $setvar
9385
9386 : check for length of long long
9387 case "${d_longlong}${longlongsize}" in
9388 $define)
9389         echo " "
9390         $echo $n "Checking to see how big your long longs are..." $c >&4
9391         $cat >try.c <<'EOCP'
9392 #include <stdio.h>
9393 int main()
9394 {
9395     printf("%d\n", (int)sizeof(long long));
9396     return(0);
9397 }
9398 EOCP
9399         set try
9400         if eval $compile_ok; then
9401                 longlongsize=`./try$exe_ext`
9402                 $echo " $longlongsize bytes." >&4
9403         else
9404                 dflt='8'
9405                 echo " "
9406                 echo "(I can't seem to compile the test program.  Guessing...)"
9407                 rp="What is the size of a long long (in bytes)?"
9408                 . ./myread
9409                 longlongsize="$ans"
9410         fi
9411         if $test "X$longsize" = "X$longlongsize"; then
9412                 echo "(That isn't any different from an ordinary long.)"
9413         fi      
9414         ;;
9415 esac
9416 $rm -f try.* try
9417
9418 : see if lstat exists
9419 set lstat d_lstat
9420 eval $inlibc
9421
9422 : see if mblen exists
9423 set mblen d_mblen
9424 eval $inlibc
9425
9426 : see if mbstowcs exists
9427 set mbstowcs d_mbstowcs
9428 eval $inlibc
9429
9430 : see if mbtowc exists
9431 set mbtowc d_mbtowc
9432 eval $inlibc
9433
9434 : see if memchr exists
9435 set memchr d_memchr
9436 eval $inlibc
9437
9438 : see if memcmp exists
9439 set memcmp d_memcmp
9440 eval $inlibc
9441
9442 : see if memcpy exists
9443 set memcpy d_memcpy
9444 eval $inlibc
9445
9446 : see if memmove exists
9447 set memmove d_memmove
9448 eval $inlibc
9449
9450 : see if memset exists
9451 set memset d_memset
9452 eval $inlibc
9453
9454 : see if mkdir exists
9455 set mkdir d_mkdir
9456 eval $inlibc
9457
9458 : see if mkfifo exists
9459 set mkfifo d_mkfifo
9460 eval $inlibc
9461
9462 : see if mktime exists
9463 set mktime d_mktime
9464 eval $inlibc
9465
9466 : see if msgctl exists
9467 set msgctl d_msgctl
9468 eval $inlibc
9469
9470 : see if msgget exists
9471 set msgget d_msgget
9472 eval $inlibc
9473
9474 : see if msgsnd exists
9475 set msgsnd d_msgsnd
9476 eval $inlibc
9477
9478 : see if msgrcv exists
9479 set msgrcv d_msgrcv
9480 eval $inlibc
9481
9482 : see how much of the 'msg*(2)' library is present.
9483 h_msg=true
9484 echo " "
9485 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9486 *"$undef"*) h_msg=false;;
9487 esac
9488 case "$osname" in
9489 freebsd)
9490     case "`ipcs 2>&1`" in
9491     "SVID messages"*"not configured"*)
9492         echo "Your $osname does not have the msg*(2) configured." >&4
9493         h_msg=false
9494         val="$undef"
9495         set msgctl d_msgctl
9496         eval $setvar
9497         set msgget d_msgget
9498         eval $setvar
9499         set msgsnd d_msgsnd
9500         eval $setvar
9501         set msgrcv d_msgrcv
9502         eval $setvar
9503         ;;
9504     esac
9505     ;;
9506 esac
9507 : we could also check for sys/ipc.h ...
9508 if $h_msg && $test `./findhdr sys/msg.h`; then
9509         echo "You have the full msg*(2) library." >&4
9510         val="$define"
9511 else
9512         echo "You don't have the full msg*(2) library." >&4
9513         val="$undef"
9514 fi
9515 set d_msg
9516 eval $setvar
9517
9518 : see if nice exists
9519 set nice d_nice
9520 eval $inlibc
9521
9522 : see if inttypes.h is available
9523 : we want a real compile instead of Inhdr because some systems
9524 : have an inttypes.h which includes non-existent headers
9525 echo " "
9526 $cat >try.c <<EOCP
9527 #include <inttypes.h>
9528 int main() {
9529         static int32_t foo32 = 0x12345678;
9530 }
9531 EOCP
9532 set try
9533 if eval $compile; then
9534         echo "<inttypes.h> found." >&4
9535         val="$define"
9536 else
9537         echo "<inttypes.h> NOT found." >&4
9538         val="$undef"
9539 fi
9540 $rm -f try.c try
9541 set i_inttypes
9542 eval $setvar
9543
9544 : check for int64_t
9545 echo " "
9546 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9547 $cat >try.c <<EOCP
9548 #include <sys/types.h>
9549 #$i_inttypes I_INTTYPES
9550 #ifdef I_INTTYPES
9551 #include <inttypes.h>
9552 #endif
9553 int main() { int64_t x = 7; }
9554 EOCP
9555 set try
9556 if eval $compile; then
9557         val="$define"
9558         echo " Yes, it does." >&4
9559 else
9560         val="$undef"
9561         echo " No, it doesn't." >&4
9562 fi
9563 $rm -f try try.*
9564 set d_int64t
9565 eval $setvar
9566
9567
9568 echo " "
9569 echo "Checking which 64-bit integer type we could use..." >&4
9570
9571 case "$intsize" in
9572 8) val=int
9573    set quadtype
9574    eval $setvar
9575    val='"unsigned int"'
9576    set uquadtype
9577    eval $setvar
9578    quadkind=1
9579    ;;
9580 *) case "$longsize" in
9581    8) val=long
9582       set quadtype
9583       eval $setvar
9584       val='"unsigned long"'
9585       set uquadtype
9586       eval $setvar
9587       quadkind=2
9588       ;;
9589    *) case "$d_longlong:$longlongsize" in
9590       define:8)
9591         val='"long long"'
9592         set quadtype
9593         eval $setvar
9594         val='"unsigned long long"'
9595         set uquadtype
9596         eval $setvar
9597         quadkind=3
9598         ;;
9599       *) case "$d_int64t" in
9600          define)
9601            val=int64_t
9602            set quadtype
9603            eval $setvar
9604            val=uint64_t
9605            set uquadtype
9606            eval $setvar
9607            quadkind=4
9608            ;;
9609          esac
9610          ;;
9611       esac
9612       ;;
9613    esac
9614    ;;
9615 esac
9616
9617 case "$quadtype" in
9618 '')     case "$uselonglong:$d_longlong:$longlongsize" in
9619         undef:define:8)
9620            echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9621         *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9622         esac
9623         d_quad="$undef"
9624         ;;
9625 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9626             verb="will"
9627         else
9628             verb="could"
9629         fi
9630         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9631         d_quad="$define"
9632         ;;
9633 esac
9634
9635 : check for length of character
9636 echo " "
9637 case "$charsize" in
9638 '')
9639         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9640         $cat >try.c <<'EOCP'
9641 #include <stdio.h>
9642 int main()
9643 {
9644     printf("%d\n", (int)sizeof(char));
9645     exit(0);
9646 }
9647 EOCP
9648         set try
9649         if eval $compile_ok; then
9650                 dflt=`./try`
9651         else
9652                 dflt='1'
9653                 echo "(I can't seem to compile the test program.  Guessing...)"
9654         fi
9655         ;;
9656 *)
9657         dflt="$charsize"
9658         ;;
9659 esac
9660 rp="What is the size of a character (in bytes)?"
9661 . ./myread
9662 charsize="$ans"
9663 $rm -f try.c try
9664
9665
9666 echo " "
9667 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9668
9669 case "$use64bits:$d_quad:$quadtype" in
9670 define:define:?*)
9671         ivtype="$quadtype"
9672         uvtype="$uquadtype"
9673         ivsize=8
9674         uvsize=8
9675         ;;
9676 *)      ivtype="long"
9677         uvtype="unsigned long"
9678         ivsize=$longsize
9679         uvsize=$longsize
9680         ;;
9681 esac
9682
9683 case "$uselongdouble:$d_longdbl" in
9684 define:define)
9685         nvtype="long double"
9686         nvsize=$longdblsize
9687         ;;
9688 *)      nvtype=double
9689         nvsize=$doublesize
9690         ;;
9691 esac
9692
9693 $echo "(IV will be "$ivtype", $ivsize bytes)"
9694 $echo "(UV will be "$uvtype", $uvsize bytes)"
9695 $echo "(NV will be "$nvtype", $nvsize bytes)"
9696
9697 $cat >try.c <<EOCP
9698 #$i_inttypes I_INTTYPES
9699 #ifdef I_INTTYPES
9700 #include <inttypes.h>
9701 #endif
9702 #include <stdio.h>
9703 int main() {
9704 #ifdef INT8
9705    int8_t i =  INT8_MAX;
9706   uint8_t u = UINT8_MAX;
9707   printf("int8_t\n");
9708 #endif
9709 #ifdef INT16
9710    int16_t i =  INT16_MAX;
9711   uint16_t i = UINT16_MAX;
9712   printf("int16_t\n");
9713 #endif
9714 #ifdef INT32
9715    int32_t i =  INT32_MAX;
9716   uint32_t u = UINT32_MAX;
9717   printf("int32_t\n");
9718 #endif
9719 }
9720 EOCP
9721
9722 case "$i8type" in
9723 '')     case "$charsize" in
9724         1)      i8type=char
9725                 u8type="unsigned char"
9726                 i8size=$charsize
9727                 u8size=$charsize
9728                 ;;
9729         esac
9730         ;;
9731 esac
9732 case "$i8type" in
9733 '')     set try -DINT8
9734         if eval $compile; then
9735                 case "`./try$exe_ext`" in
9736                 int8_t) i8type=int8_t
9737                         u8type=uint8_t
9738                         i8size=1
9739                         u8size=1
9740                         ;;
9741                 esac
9742         fi
9743         ;;
9744 esac
9745 case "$i8type" in
9746 '')     if $test $charsize -ge 1; then
9747                 i8type=char
9748                 u8type="unsigned char"
9749                 i8size=$charsize
9750                 u8size=$charsize
9751         fi
9752         ;;
9753 esac
9754
9755 case "$i16type" in
9756 '')     case "$shortsize" in
9757         2)      i16type=short
9758                 u16type="unsigned short"
9759                 i16size=$shortsize
9760                 u16size=$shortsize
9761                 ;;
9762         esac
9763         ;;
9764 esac
9765 case "$i16type" in
9766 '')     set try -DINT16
9767         if eval $compile; then
9768                 case "`./try$exe_ext`" in
9769                 int16_t)
9770                         i16type=int16_t
9771                         u16type=uint16_t
9772                         i16size=2
9773                         u16size=2
9774                         ;;
9775                 esac
9776         fi
9777         ;;
9778 esac
9779 case "$i16type" in
9780 '')     if $test $shortsize -ge 2; then
9781                 i16type=short
9782                 u16type="unsigned short"
9783                 i16size=$shortsize
9784                 u16size=$shortsize
9785         fi
9786         ;;
9787 esac
9788
9789 case "$i32type" in
9790 '')     case "$longsize" in
9791         4)      i32type=long
9792                 u32type="unsigned long"
9793                 i32size=$longsize
9794                 u32size=$longsize
9795                 ;;
9796         *)      case "$intsize" in
9797                 4)      i32type=int
9798                         u32type="unsigned int"
9799                         i32size=$intsize
9800                         u32size=$intsize
9801                         ;;
9802                 esac
9803                 ;;
9804         esac
9805         ;;
9806 esac
9807 case "$i32type" in
9808 '')     set try -DINT32
9809         if eval $compile; then
9810                 case "`./try$exe_ext`" in
9811                 int32_t)
9812                         i32type=int32_t
9813                         u32type=uint32_t
9814                         i32size=4
9815                         u32size=4
9816                         ;;
9817                 esac
9818         fi
9819         ;;
9820 esac
9821 case "$i32type" in
9822 '')     if $test $intsize -ge 4; then
9823                 i32type=int
9824                 u32type="unsigned int"
9825                 i32size=$intsize
9826                 u32size=$intsize
9827         fi
9828         ;;
9829 esac
9830
9831 case "$i64type" in
9832 '')     case "$d_quad:$quadtype" in
9833         define:?*)
9834                 i64type="$quadtype"
9835                 u64type="$uquadtype"
9836                 i64size=8
9837                 u64size=8
9838                 ;;
9839         esac
9840         ;;
9841 esac
9842
9843 $echo "Checking whether your NVs can preserve your UVs..." >&4
9844 $cat <<EOP >try.c
9845 #include <stdio.h>
9846 int main() {
9847     $uvtype k = ($uvtype)~0, l;
9848     $nvtype d;
9849     l = k;
9850     d = ($nvtype)l;
9851     l = ($uvtype)d;
9852     if (l == k)
9853        printf("preserve\n");
9854     exit(0);
9855 }
9856 EOP
9857 set try
9858 if eval $compile; then
9859         case "`./try$exe_ext`" in
9860         preserve) d_nv_preserves_uv="$define" ;;
9861         esac
9862 fi      
9863 case "$d_nv_preserves_uv" in
9864 $define) $echo "Yes, they can."  2>&1 ;;
9865 *)       $echo "No, they can't." 2>&1
9866          d_nv_preserves_uv="$undef"
9867          ;;
9868 esac
9869
9870 $rm -f try.* try
9871
9872 : see if POSIX threads are available
9873 set pthread.h i_pthread
9874 eval $inhdr
9875
9876
9877
9878
9879 : how to create joinable pthreads
9880 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9881         echo " "
9882         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9883         $cat >try.c <<'EOCP'
9884 #include <pthread.h>
9885 int main() {
9886     int detachstate = JOINABLE;
9887 }
9888 EOCP
9889         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9890         if eval $compile; then
9891                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9892                 val="$undef" # Yes, undef.
9893                 set d_old_pthread_create_joinable
9894                 eval $setvar
9895                 val=""
9896                 set old_pthread_create_joinable
9897                 eval $setvar
9898         else
9899                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9900                 if eval $compile; then
9901                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9902                         val="$define"
9903                         set d_old_pthread_create_joinable
9904                         eval $setvar
9905                         val=PTHREAD_CREATE_UNDETACHED
9906                         set old_pthread_create_joinable
9907                         eval $setvar
9908                 else            
9909                         set try -DJOINABLE=__UNDETACHED
9910                         if eval $compile; then
9911                                 echo "You seem to use __UNDETACHED." >&4
9912                                 val="$define"
9913                                 set d_old_pthread_create_joinable
9914                                 eval $setvar
9915                                 val=__UNDETACHED
9916                                 set old_pthread_create_joinable
9917                                 eval $setvar
9918                         else
9919                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9920                                 val="$define"
9921                                 set d_old_pthread_create_joinable
9922                                 eval $setvar
9923                                 val=0
9924                                 set old_pthread_create_joinable
9925                                 eval $setvar
9926                         fi
9927                 fi
9928         fi
9929         $rm -f try try.*
9930 else
9931     d_old_pthread_create_joinable="$undef"
9932     old_pthread_create_joinable=""
9933 fi
9934
9935 : see if pause exists
9936 set pause d_pause
9937 eval $inlibc
9938
9939 : see if pipe exists
9940 set pipe d_pipe
9941 eval $inlibc
9942
9943 : see if poll exists
9944 set poll d_poll
9945 eval $inlibc
9946
9947
9948 : see whether the various POSIXish _yields exist
9949 $cat >try.c <<EOP
9950 #include <pthread.h>
9951 #include <stdio.h>
9952 int main() {
9953 #ifdef SCHED_YIELD
9954         sched_yield();
9955 #else
9956 #ifdef PTHREAD_YIELD
9957         pthread_yield();
9958 #else
9959 #ifdef PTHREAD_YIELD_NULL
9960         pthread_yield(NULL);
9961 #endif
9962 #endif
9963 #endif
9964 }
9965 EOP
9966 : see if sched_yield exists
9967 set try -DSCHED_YIELD
9968 if eval $compile; then
9969     val="$define"
9970     sched_yield='sched_yield()'
9971 else
9972     val="$undef"
9973 fi
9974 case "$usethreads" in
9975 $define)
9976         case "$val" in
9977         $define) echo 'sched_yield() found.' >&4        ;;
9978         *)       echo 'sched_yield() NOT found.' >&4    ;;
9979         esac
9980 esac
9981 set d_sched_yield
9982 eval $setvar
9983
9984 : see if pthread_yield exists
9985 set try -DPTHREAD_YIELD
9986 if eval $compile; then
9987     val="$define"
9988     case "$sched_yield" in
9989     '') sched_yield='pthread_yield()' ;;
9990     esac
9991 else
9992     set try -DPTHREAD_YIELD_NULL
9993     if eval $compile; then
9994         val="$define"
9995         case "$sched_yield" in
9996         '') sched_yield='pthread_yield(NULL)' ;;
9997         esac
9998     else
9999         val="$undef"
10000     fi
10001 fi
10002 case "$usethreads" in
10003 $define)
10004         case "$val" in
10005         $define) echo 'pthread_yield() found.' >&4      ;;
10006         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10007         esac
10008         ;;
10009 esac
10010 set d_pthread_yield
10011 eval $setvar
10012
10013 case "$sched_yield" in
10014 '') sched_yield=undef ;;
10015 esac
10016
10017 $rm -f try try.*
10018
10019 : see if this is a pwd.h system
10020 set pwd.h i_pwd
10021 eval $inhdr
10022
10023 case "$i_pwd" in
10024 $define)
10025         xxx=`./findhdr pwd.h`
10026         $cppstdin $cppflags $cppminus < $xxx >$$.h
10027
10028         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10029                 val="$define"
10030         else
10031                 val="$undef"
10032         fi
10033         set d_pwquota
10034         eval $setvar
10035
10036         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10037                 val="$define"
10038         else
10039                 val="$undef"
10040         fi
10041         set d_pwage
10042         eval $setvar
10043
10044         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10045                 val="$define"
10046         else
10047                 val="$undef"
10048         fi
10049         set d_pwchange
10050         eval $setvar
10051
10052         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10053                 val="$define"
10054         else
10055                 val="$undef"
10056         fi
10057         set d_pwclass
10058         eval $setvar
10059
10060         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10061                 val="$define"
10062         else
10063                 val="$undef"
10064         fi
10065         set d_pwexpire
10066         eval $setvar
10067
10068         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10069                 val="$define"
10070         else
10071                 val="$undef"
10072         fi
10073         set d_pwcomment
10074         eval $setvar
10075
10076         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10077                 val="$define"
10078         else
10079                 val="$undef"
10080         fi
10081         set d_pwgecos
10082         eval $setvar
10083
10084         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10085                 val="$define"
10086         else
10087                 val="$undef"
10088         fi
10089         set d_pwpasswd
10090         eval $setvar
10091
10092         $rm -f $$.h
10093         ;;
10094 *)
10095         val="$undef"; 
10096         set d_pwquota; eval $setvar
10097         set d_pwage; eval $setvar
10098         set d_pwchange; eval $setvar
10099         set d_pwclass; eval $setvar
10100         set d_pwexpire; eval $setvar
10101         set d_pwcomment; eval $setvar
10102         set d_pwgecos; eval $setvar
10103         set d_pwpasswd; eval $setvar
10104         ;;
10105 esac
10106
10107 : see if readdir and friends exist
10108 set readdir d_readdir
10109 eval $inlibc
10110 set seekdir d_seekdir
10111 eval $inlibc
10112 set telldir d_telldir
10113 eval $inlibc
10114 set rewinddir d_rewinddir
10115 eval $inlibc
10116
10117 : see if readlink exists
10118 set readlink d_readlink
10119 eval $inlibc
10120
10121 : see if rename exists
10122 set rename d_rename
10123 eval $inlibc
10124
10125 : see if rmdir exists
10126 set rmdir d_rmdir
10127 eval $inlibc
10128
10129 : see if memory.h is available.
10130 val=''
10131 set memory.h val
10132 eval $inhdr
10133
10134 : See if it conflicts with string.h
10135 case "$val" in
10136 $define)
10137         case "$strings" in
10138         '') ;;
10139         *)
10140                 $cppstdin $cppflags $cppminus < $strings > mem.h
10141                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10142                         echo " "
10143                         echo "We won't be including <memory.h>."
10144                         val="$undef"
10145                 fi
10146                 $rm -f mem.h
10147                 ;;
10148         esac
10149 esac
10150 set i_memory
10151 eval $setvar
10152
10153 : can bcopy handle overlapping blocks?
10154 val="$undef"
10155 case "$d_bcopy" in
10156 "$define")
10157         echo " "
10158         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10159         $cat >try.c <<EOCP
10160 #$i_memory I_MEMORY
10161 #$i_stdlib I_STDLIB
10162 #$i_string I_STRING
10163 #$i_unistd I_UNISTD
10164 EOCP
10165         $cat >>try.c <<'EOCP'
10166 #include <stdio.h>
10167 #ifdef I_MEMORY
10168 #  include <memory.h>
10169 #endif
10170 #ifdef I_STDLIB
10171 #  include <stdlib.h>
10172 #endif
10173 #ifdef I_STRING
10174 #  include <string.h>
10175 #else
10176 #  include <strings.h>
10177 #endif
10178 #ifdef I_UNISTD
10179 #  include <unistd.h>  /* Needed for NetBSD */
10180 #endif
10181 int main()
10182 {
10183 char buf[128], abc[128];
10184 char *b;
10185 int len;
10186 int off;
10187 int align;
10188
10189 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10190
10191 for (align = 7; align >= 0; align--) {
10192         for (len = 36; len; len--) {
10193                 b = buf+align;
10194                 bcopy(abc, b, len);
10195                 for (off = 1; off <= len; off++) {
10196                         bcopy(b, b+off, len);
10197                         bcopy(b+off, b, len);
10198                         if (bcmp(b, abc, len))
10199                                 exit(1);
10200                 }
10201         }
10202 }
10203 exit(0);
10204 }
10205 EOCP
10206         set try
10207         if eval $compile_ok; then
10208                 if ./try 2>/dev/null; then
10209                         echo "Yes, it can."
10210                         val="$define"
10211                 else
10212                         echo "It can't, sorry."
10213                         case "$d_memmove" in
10214                         "$define") echo "But that's Ok since you have memmove()." ;;
10215                         esac
10216                 fi
10217         else
10218                 echo "(I can't compile the test program, so we'll assume not...)"
10219                 case "$d_memmove" in
10220                 "$define") echo "But that's Ok since you have memmove()." ;;
10221                 esac
10222         fi
10223         ;;
10224 esac
10225 $rm -f try.* try core
10226 set d_safebcpy
10227 eval $setvar
10228
10229 : can memcpy handle overlapping blocks?
10230 val="$undef"
10231 case "$d_memcpy" in
10232 "$define")
10233         echo " "
10234         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10235         $cat >try.c <<EOCP
10236 #$i_memory I_MEMORY
10237 #$i_stdlib I_STDLIB
10238 #$i_string I_STRING
10239 #$i_unistd I_UNISTD
10240 EOCP
10241         $cat >>try.c <<'EOCP'
10242 #include <stdio.h>
10243 #ifdef I_MEMORY
10244 #  include <memory.h>
10245 #endif
10246 #ifdef I_STDLIB
10247 #  include <stdlib.h>
10248 #endif
10249 #ifdef I_STRING
10250 #  include <string.h>
10251 #else
10252 #  include <strings.h>
10253 #endif
10254 #ifdef I_UNISTD
10255 #  include <unistd.h>  /* Needed for NetBSD */
10256 #endif
10257 int main()
10258 {
10259 char buf[128], abc[128];
10260 char *b;
10261 int len;
10262 int off;
10263 int align;
10264
10265 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10266    try to store the string in read-only memory. */
10267 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10268
10269 for (align = 7; align >= 0; align--) {
10270         for (len = 36; len; len--) {
10271                 b = buf+align;
10272                 memcpy(b, abc, len);
10273                 for (off = 1; off <= len; off++) {
10274                         memcpy(b+off, b, len);
10275                         memcpy(b, b+off, len);
10276                         if (memcmp(b, abc, len))
10277                                 exit(1);
10278                 }
10279         }
10280 }
10281 exit(0);
10282 }
10283 EOCP
10284         set try
10285         if eval $compile_ok; then
10286                 if ./try 2>/dev/null; then
10287                         echo "Yes, it can."
10288                         val="$define"
10289                 else
10290                         echo "It can't, sorry."
10291                         case "$d_memmove" in
10292                         "$define") echo "But that's Ok since you have memmove()." ;;
10293                         esac
10294                 fi
10295         else
10296                 echo "(I can't compile the test program, so we'll assume not...)"
10297                 case "$d_memmove" in
10298                 "$define") echo "But that's Ok since you have memmove()." ;;
10299                 esac
10300         fi
10301         ;;
10302 esac
10303 $rm -f try.* try core
10304 set d_safemcpy
10305 eval $setvar
10306
10307 : can memcmp be trusted to compare relative magnitude?
10308 val="$undef"
10309 case "$d_memcmp" in
10310 "$define")
10311         echo " "
10312         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10313         $cat >try.c <<EOCP
10314 #$i_memory I_MEMORY
10315 #$i_stdlib I_STDLIB
10316 #$i_string I_STRING
10317 #$i_unistd I_UNISTD
10318 EOCP
10319         $cat >>try.c <<'EOCP'
10320 #include <stdio.h>
10321 #ifdef I_MEMORY
10322 #  include <memory.h>
10323 #endif
10324 #ifdef I_STDLIB
10325 #  include <stdlib.h>
10326 #endif
10327 #ifdef I_STRING
10328 #  include <string.h>
10329 #else
10330 #  include <strings.h>
10331 #endif
10332 #ifdef I_UNISTD
10333 #  include <unistd.h>  /* Needed for NetBSD */
10334 #endif
10335 int main()
10336 {
10337 char a = -1;
10338 char b = 0;
10339 if ((a < b) && memcmp(&a, &b, 1) < 0)
10340         exit(1);
10341 exit(0);
10342 }
10343 EOCP
10344         set try
10345         if eval $compile_ok; then
10346                 if ./try 2>/dev/null; then
10347                         echo "Yes, it can."
10348                         val="$define"
10349                 else
10350                         echo "No, it can't (it uses signed chars)."
10351                 fi
10352         else
10353                 echo "(I can't compile the test program, so we'll assume not...)"
10354         fi
10355         ;;
10356 esac
10357 $rm -f try.* try core
10358 set d_sanemcmp
10359 eval $setvar
10360
10361 : see if select exists
10362 set select d_select
10363 eval $inlibc
10364
10365 : see if semctl exists
10366 set semctl d_semctl
10367 eval $inlibc
10368
10369 : see if semget exists
10370 set semget d_semget
10371 eval $inlibc
10372
10373 : see if semop exists
10374 set semop d_semop
10375 eval $inlibc
10376
10377 : see how much of the 'sem*(2)' library is present.
10378 h_sem=true
10379 echo " "
10380 case "$d_semctl$d_semget$d_semop" in
10381 *"$undef"*) h_sem=false;;
10382 esac
10383 case "$osname" in
10384 freebsd)
10385     case "`ipcs 2>&1`" in
10386     "SVID messages"*"not configured"*)
10387         echo "Your $osname does not have the sem*(2) configured." >&4
10388         h_sem=false
10389         val="$undef"
10390         set semctl d_semctl
10391         eval $setvar
10392         set semget d_semget
10393         eval $setvar
10394         set semop d_semop
10395         eval $setvar
10396         ;;
10397     esac
10398     ;;
10399 esac
10400 : we could also check for sys/ipc.h ...
10401 if $h_sem && $test `./findhdr sys/sem.h`; then
10402         echo "You have the full sem*(2) library." >&4
10403         val="$define"
10404 else
10405         echo "You don't have the full sem*(2) library." >&4
10406         val="$undef"
10407 fi
10408 set d_sem
10409 eval $setvar
10410
10411 : see whether sys/sem.h defines union semun
10412 echo " "
10413 $cat > try.c <<'END'
10414 #include <sys/types.h>
10415 #include <sys/ipc.h>
10416 #include <sys/sem.h>
10417 int main () { union semun semun; semun.buf = 0; }
10418 END
10419 set try
10420 if eval $compile; then
10421     echo "You have union semun in <sys/sem.h>." >&4
10422     val="$define"
10423 else
10424     echo "You do not have union semun in <sys/sem.h>." >&4
10425     val="$undef"
10426 fi
10427 $rm -f try try.c try.h
10428 set d_union_semun
10429 eval $setvar
10430
10431 : see how to do semctl IPC_STAT
10432 case "$d_sem" in
10433 $define)
10434     : see whether semctl IPC_STAT can use union semun
10435     echo " "
10436     $cat > try.h <<END
10437 #ifndef S_IRUSR
10438 #   ifdef S_IREAD
10439 #       define S_IRUSR S_IREAD
10440 #       define S_IWUSR S_IWRITE
10441 #       define S_IXUSR S_IEXEC
10442 #   else
10443 #       define S_IRUSR 0400
10444 #       define S_IWUSR 0200
10445 #       define S_IXUSR 0100
10446 #   endif
10447 #   define S_IRGRP (S_IRUSR>>3)
10448 #   define S_IWGRP (S_IWUSR>>3)
10449 #   define S_IXGRP (S_IXUSR>>3)
10450 #   define S_IROTH (S_IRUSR>>6)
10451 #   define S_IWOTH (S_IWUSR>>6)
10452 #   define S_IXOTH (S_IXUSR>>6)
10453 #endif
10454 #ifndef S_IRWXU
10455 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10456 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10457 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10458 #endif
10459 END
10460
10461     $cat > try.c <<END
10462 #include <sys/types.h>
10463 #include <sys/ipc.h>
10464 #include <sys/sem.h>
10465 #include <sys/stat.h>
10466 #include <stdio.h>
10467 #include <errno.h>
10468 #include "try.h"
10469 #ifndef errno
10470 extern int errno;
10471 #endif
10472 #$d_union_semun HAS_UNION_SEMUN
10473 int main() {
10474     union semun
10475 #ifndef HAS_UNION_SEMUN
10476     {
10477         int val;
10478         struct semid_ds *buf;
10479         unsigned short *array;
10480     }
10481 #endif
10482     arg;
10483     int sem, st;
10484
10485 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10486     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10487     if (sem > -1) {
10488         struct semid_ds argbuf;
10489         arg.buf = &argbuf;
10490 #       ifdef IPC_STAT
10491         st = semctl(sem, 0, IPC_STAT, arg);
10492         if (st == 0)
10493             printf("semun\n");
10494         else
10495 #       endif /* IPC_STAT */
10496             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10497 #       ifdef IPC_RMID
10498         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10499 #       endif /* IPC_RMID */
10500             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10501     } else
10502 #endif /* IPC_PRIVATE && ... */
10503         printf("semget failed: errno = %d\n", errno);
10504   return 0;
10505 }
10506 END
10507     val="$undef"
10508     set try
10509     if eval $compile; then
10510         xxx=`./try`
10511         case "$xxx" in
10512         semun) val="$define" ;;
10513         esac
10514     fi
10515     $rm -f try try.c
10516     set d_semctl_semun
10517     eval $setvar
10518     case "$d_semctl_semun" in
10519     $define)
10520         echo "You can use union semun for semctl IPC_STAT." >&4
10521         also='also'
10522         ;;
10523     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10524         also=''
10525         ;;
10526     esac
10527
10528     : see whether semctl IPC_STAT can use struct semid_ds pointer
10529     $cat > try.c <<'END'
10530 #include <sys/types.h>
10531 #include <sys/ipc.h>
10532 #include <sys/sem.h>
10533 #include <sys/stat.h>
10534 #include "try.h"
10535 #include <stdio.h>
10536 #include <errno.h>
10537 #ifndef errno
10538 extern int errno;
10539 #endif
10540 int main() {
10541     struct semid_ds arg;
10542     int sem, st;
10543
10544 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10545     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10546     if (sem > -1) {
10547 #       ifdef IPC_STAT
10548         st = semctl(sem, 0, IPC_STAT, &arg);
10549         if (st == 0)
10550             printf("semid_ds\n");
10551         else
10552 #       endif /* IPC_STAT */
10553             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10554 #       ifdef IPC_RMID
10555         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10556 #       endif /* IPC_RMID */
10557             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10558     } else
10559 #endif /* IPC_PRIVATE && ... */
10560         printf("semget failed: errno = %d\n", errno);
10561
10562     return 0;
10563 }
10564 END
10565     val="$undef"
10566     set try
10567     if eval $compile; then
10568         xxx=`./try`
10569         case "$xxx" in
10570         semid_ds) val="$define" ;;
10571         esac
10572     fi
10573     $rm -f try try.c
10574     set d_semctl_semid_ds
10575     eval $setvar
10576     case "$d_semctl_semid_ds" in
10577     $define)
10578         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10579         ;;
10580     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10581         ;;
10582     esac
10583     $rm -f try.h
10584     ;;
10585 *)  val="$undef"
10586
10587     # We do not have the full sem*(2) library, so assume we can not
10588     # use either.
10589
10590     set d_semctl_semun
10591     eval $setvar
10592
10593     set d_semctl_semid_ds
10594     eval $setvar
10595     ;;
10596 esac
10597
10598 : see if setegid exists
10599 set setegid d_setegid
10600 eval $inlibc
10601
10602 : see if seteuid exists
10603 set seteuid d_seteuid
10604 eval $inlibc
10605
10606 : see if setgrent exists
10607 set setgrent d_setgrent
10608 eval $inlibc
10609
10610 : see if sethostent exists
10611 set sethostent d_sethent
10612 eval $inlibc
10613
10614 : see if setlinebuf exists
10615 set setlinebuf d_setlinebuf
10616 eval $inlibc
10617
10618 : see if setlocale exists
10619 set setlocale d_setlocale
10620 eval $inlibc
10621
10622 : see if setnetent exists
10623 set setnetent d_setnent
10624 eval $inlibc
10625
10626 : see if setprotoent exists
10627 set setprotoent d_setpent
10628 eval $inlibc
10629
10630 : see if setpgid exists
10631 set setpgid d_setpgid
10632 eval $inlibc
10633
10634 : see if setpgrp2 exists
10635 set setpgrp2 d_setpgrp2
10636 eval $inlibc
10637
10638 : see if setpriority exists
10639 set setpriority d_setprior
10640 eval $inlibc
10641
10642 : see if setpwent exists
10643 set setpwent d_setpwent
10644 eval $inlibc
10645
10646 : see if setregid exists
10647 set setregid d_setregid
10648 eval $inlibc
10649 set setresgid d_setresgid
10650 eval $inlibc
10651
10652 : see if setreuid exists
10653 set setreuid d_setreuid
10654 eval $inlibc
10655 set setresuid d_setresuid
10656 eval $inlibc
10657
10658 : see if setrgid exists
10659 set setrgid d_setrgid
10660 eval $inlibc
10661
10662 : see if setruid exists
10663 set setruid d_setruid
10664 eval $inlibc
10665
10666 : see if setservent exists
10667 set setservent d_setsent
10668 eval $inlibc
10669
10670 : see if setsid exists
10671 set setsid d_setsid
10672 eval $inlibc
10673
10674 : see if setspent exists
10675 set setspent d_setspent
10676 eval $inlibc
10677
10678 : see if setvbuf exists
10679 set setvbuf d_setvbuf
10680 eval $inlibc
10681
10682 : see if sfio.h is available
10683 set sfio.h i_sfio
10684 eval $inhdr
10685
10686
10687 : see if sfio library is available
10688 case "$i_sfio" in
10689 $define)
10690         val=''
10691         set sfreserve val
10692         eval $inlibc
10693         ;;
10694 *)
10695         val="$undef"
10696         ;;
10697 esac
10698 : Ok, but do we want to use it.
10699 case "$val" in
10700 $define)
10701         case "$usesfio" in
10702         true|$define|[yY]*) dflt='y';;
10703         *) dflt='n';;
10704         esac
10705         echo "$package can use the sfio library, but it is experimental."
10706         rp="You seem to have sfio available, do you want to try using it?"
10707         . ./myread
10708         case "$ans" in
10709         y|Y) ;;
10710         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10711                 val="$undef"
10712                 : Remove sfio from list of libraries to use
10713                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10714                 shift
10715                 libs="$*"
10716                 echo "libs = $libs" >&4
10717                 ;;
10718         esac
10719         ;;
10720 *)      case "$usesfio" in
10721         true|$define|[yY]*)
10722                 echo "Sorry, cannot find sfio on this machine" >&4
10723                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10724                 ;;
10725         esac
10726         ;;
10727 esac
10728 set d_sfio
10729 eval $setvar
10730 case "$d_sfio" in
10731 $define) usesfio='true';;
10732 *) usesfio='false';;
10733 esac
10734
10735 : see if shmctl exists
10736 set shmctl d_shmctl
10737 eval $inlibc
10738
10739 : see if shmget exists
10740 set shmget d_shmget
10741 eval $inlibc
10742
10743 : see if shmat exists
10744 set shmat d_shmat
10745 eval $inlibc
10746 : see what shmat returns
10747 case "$d_shmat" in
10748 "$define")
10749         $cat >shmat.c <<'END'
10750 #include <sys/shm.h>
10751 void *shmat();
10752 END
10753         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10754                 shmattype='void *'
10755         else
10756                 shmattype='char *'
10757         fi
10758         echo "and it returns ($shmattype)." >&4
10759         : see if a prototype for shmat is available
10760         xxx=`./findhdr sys/shm.h`
10761         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10762         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10763                 val="$define"
10764         else
10765                 val="$undef"
10766         fi
10767         $rm -f shmat.[co]
10768         ;;
10769 *)
10770         val="$undef"
10771         ;;
10772 esac
10773 set d_shmatprototype
10774 eval $setvar
10775
10776 : see if shmdt exists
10777 set shmdt d_shmdt
10778 eval $inlibc
10779
10780 : see how much of the 'shm*(2)' library is present.
10781 h_shm=true
10782 echo " "
10783 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10784 *"$undef"*) h_shm=false;;
10785 esac
10786 case "$osname" in
10787 freebsd)
10788     case "`ipcs 2>&1`" in
10789     "SVID shared memory"*"not configured"*)
10790         echo "Your $osname does not have the shm*(2) configured." >&4
10791         h_shm=false
10792         val="$undef"
10793         set shmctl d_shmctl
10794         evat $setvar
10795         set shmget d_shmget
10796         evat $setvar
10797         set shmat d_shmat
10798         evat $setvar
10799         set shmdt d_shmdt
10800         evat $setvar
10801         ;;
10802     esac
10803     ;;
10804 esac
10805 : we could also check for sys/ipc.h ...
10806 if $h_shm && $test `./findhdr sys/shm.h`; then
10807         echo "You have the full shm*(2) library." >&4
10808         val="$define"
10809 else
10810         echo "You don't have the full shm*(2) library." >&4
10811         val="$undef"
10812 fi
10813 set d_shm
10814 eval $setvar
10815
10816 echo " "
10817 : see if we have sigaction
10818 if set sigaction val -f d_sigaction; eval $csym; $val; then
10819         echo 'sigaction() found.' >&4
10820         $cat > try.c <<'EOP'
10821 #include <stdio.h>
10822 #include <sys/types.h>
10823 #include <signal.h>
10824 int main()
10825 {
10826     struct sigaction act, oact;
10827     act.sa_flags = 0;
10828     oact.sa_handler = 0;
10829     /* so that act and oact are used */
10830     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10831 }
10832 EOP
10833         set try
10834         if eval $compile_ok; then
10835                 val="$define"
10836         else
10837                 echo "But you don't seem to have a useable struct sigaction." >&4
10838                 val="$undef"
10839         fi
10840 else
10841         echo 'sigaction NOT found.' >&4
10842         val="$undef"
10843 fi
10844 set d_sigaction; eval $setvar
10845 $rm -f try try$_o try.c
10846
10847 : see if sigsetjmp exists
10848 echo " "
10849 case "$d_sigsetjmp" in
10850 '')
10851         $cat >try.c <<'EOP'
10852 #include <setjmp.h>
10853 sigjmp_buf env;
10854 int set = 1;
10855 int main()
10856 {
10857         if (sigsetjmp(env,1))
10858                 exit(set);
10859         set = 0;
10860         siglongjmp(env, 1);
10861         exit(1);
10862 }
10863 EOP
10864         set try
10865         if eval $compile; then
10866                 if ./try >/dev/null 2>&1; then
10867                         echo "POSIX sigsetjmp found." >&4
10868                         val="$define"
10869                 else
10870                         $cat >&4 <<EOM
10871 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10872 I'll ignore them.
10873 EOM
10874                         val="$undef"
10875                 fi
10876         else
10877                 echo "sigsetjmp not found." >&4
10878                 val="$undef"
10879         fi
10880         ;;
10881 *) val="$d_sigsetjmp"
10882         case "$d_sigsetjmp" in
10883         $define) echo "POSIX sigsetjmp found." >&4;;
10884         $undef) echo "sigsetjmp not found." >&4;;
10885         esac
10886         ;;
10887 esac
10888 set d_sigsetjmp
10889 eval $setvar
10890 $rm -f try.c try
10891
10892 : see if sys/stat.h is available
10893 set sys/stat.h i_sysstat
10894 eval $inhdr
10895
10896
10897 : see if stat knows about block sizes
10898 echo " "
10899 echo "Checking to see if your struct stat has st_blocks field..." >&4
10900 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10901 eval $hasfield
10902
10903
10904 : see if this is a sys/vfs.h system
10905 set sys/vfs.h i_sysvfs
10906 eval $inhdr
10907
10908
10909 : see if this is a sys/statfs.h system
10910 set sys/statfs.h i_sysstatfs
10911 eval $inhdr
10912
10913
10914 echo " "
10915 echo "Checking to see if your system supports struct statfs..." >&4
10916 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
10917 eval $hasstruct
10918 case "$d_statfs_s" in
10919 "$define")      echo "Yes, it does."   ;;
10920 *)              echo "No, it doesn't." ;;
10921 esac
10922
10923
10924
10925 : see if struct statfs knows about f_flags
10926 case "$d_statfs_s" in
10927 define) 
10928         echo " "
10929         echo "Checking to see if your struct statfs has f_flags field..." >&4
10930         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
10931         eval $hasfield
10932         ;;
10933 *)      val="$undef"
10934         set d_statfs_f_flags
10935         eval $setvar
10936         ;;
10937 esac
10938 case "$d_statfs_f_flags" in
10939 "$define")      echo "Yes, it does."   ;;
10940 *)              echo "No, it doesn't." ;;
10941 esac
10942
10943 : see if _ptr and _cnt from stdio act std
10944 echo " "
10945 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10946         echo "(Looks like you have stdio.h from Linux.)"
10947         case "$stdio_ptr" in
10948         '') stdio_ptr='((fp)->_IO_read_ptr)'
10949                 ptr_lval=$define
10950                 ;;
10951         *)      ptr_lval=$d_stdio_ptr_lval;;
10952         esac
10953         case "$stdio_cnt" in
10954         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10955                 cnt_lval=$undef
10956                 ;;
10957         *)      cnt_lval=$d_stdio_cnt_lval;;
10958         esac
10959         case "$stdio_base" in
10960         '') stdio_base='((fp)->_IO_read_base)';;
10961         esac
10962         case "$stdio_bufsiz" in
10963         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10964         esac
10965 else
10966         case "$stdio_ptr" in
10967         '') stdio_ptr='((fp)->_ptr)'
10968                 ptr_lval=$define
10969                 ;;
10970         *)      ptr_lval=$d_stdio_ptr_lval;;
10971         esac
10972         case "$stdio_cnt" in
10973         '') stdio_cnt='((fp)->_cnt)'
10974                 cnt_lval=$define
10975                 ;;
10976         *)      cnt_lval=$d_stdio_cnt_lval;;
10977         esac
10978         case "$stdio_base" in
10979         '') stdio_base='((fp)->_base)';;
10980         esac
10981         case "$stdio_bufsiz" in
10982         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10983         esac
10984 fi
10985 : test whether _ptr and _cnt really work
10986 echo "Checking how std your stdio is..." >&4
10987 $cat >try.c <<EOP
10988 #include <stdio.h>
10989 #define FILE_ptr(fp)    $stdio_ptr
10990 #define FILE_cnt(fp)    $stdio_cnt
10991 int main() {
10992         FILE *fp = fopen("try.c", "r");
10993         char c = getc(fp);
10994         if (
10995                 18 <= FILE_cnt(fp) &&
10996                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
10997         )
10998                 exit(0);
10999         exit(1);
11000 }
11001 EOP
11002 val="$undef"
11003 set try
11004 if eval $compile; then
11005         if ./try; then
11006                 echo "Your stdio acts pretty std."
11007                 val="$define"
11008         else
11009                 echo "Your stdio isn't very std."
11010         fi
11011 else
11012         echo "Your stdio doesn't appear very std."
11013 fi
11014 $rm -f try.c try
11015 set d_stdstdio
11016 eval $setvar
11017
11018 : Can _ptr be used as an lvalue?
11019 case "$d_stdstdio$ptr_lval" in
11020 $define$define) val=$define ;;
11021 *) val=$undef ;;
11022 esac
11023 set d_stdio_ptr_lval
11024 eval $setvar
11025
11026 : Can _cnt be used as an lvalue?
11027 case "$d_stdstdio$cnt_lval" in
11028 $define$define) val=$define ;;
11029 *) val=$undef ;;
11030 esac
11031 set d_stdio_cnt_lval
11032 eval $setvar
11033
11034 : see if _base is also standard
11035 val="$undef"
11036 case "$d_stdstdio" in
11037 $define)
11038         $cat >try.c <<EOP
11039 #include <stdio.h>
11040 #define FILE_base(fp)   $stdio_base
11041 #define FILE_bufsiz(fp) $stdio_bufsiz
11042 int main() {
11043         FILE *fp = fopen("try.c", "r");
11044         char c = getc(fp);
11045         if (
11046                 19 <= FILE_bufsiz(fp) &&
11047                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11048         )
11049                 exit(0);
11050         exit(1);
11051 }
11052 EOP
11053         set try
11054         if eval $compile; then
11055                 if ./try; then
11056                         echo "And its _base field acts std."
11057                         val="$define"
11058                 else
11059                         echo "But its _base field isn't std."
11060                 fi
11061         else
11062                 echo "However, it seems to be lacking the _base field."
11063         fi
11064         $rm -f try.c try
11065         ;;
11066 esac
11067 set d_stdiobase
11068 eval $setvar
11069
11070 $cat >&4 <<EOM
11071 Checking how to access stdio streams by file descriptor number...
11072 EOM
11073 case "$stdio_stream_array" in
11074 '')     $cat >try.c <<EOCP
11075 #include <stdio.h>
11076 int main() {
11077   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11078     printf("yes\n");
11079 }
11080 EOCP
11081         for s in _iob __iob __sF
11082         do
11083                 set try -DSTDIO_STREAM_ARRAY=$s
11084                 if eval $compile; then
11085                         case "`./try$exe_ext`" in
11086                         yes)    stdio_stream_array=$s; break ;;
11087                         esac
11088                 fi
11089         done
11090         $rm -f try.* try$exe_ext
11091 esac
11092 case "$stdio_stream_array" in
11093 '')     $cat >&4 <<EOM
11094 I can't figure out how to access stdio streams by file descriptor number.
11095 EOM
11096         d_stdio_stream_array="$undef"
11097         ;;
11098 *)      $cat >&4 <<EOM
11099 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11100 EOM
11101         d_stdio_stream_array="$define"
11102         ;;
11103 esac
11104
11105 : see if strcoll exists
11106 set strcoll d_strcoll
11107 eval $inlibc
11108
11109 : check for structure copying
11110 echo " "
11111 echo "Checking to see if your C compiler can copy structs..." >&4
11112 $cat >try.c <<'EOCP'
11113 int main()
11114 {
11115         struct blurfl {
11116                 int dyick;
11117         } foo, bar;
11118
11119         foo = bar;
11120 }
11121 EOCP
11122 if $cc -c try.c >/dev/null 2>&1 ; then
11123         val="$define"
11124         echo "Yup, it can."
11125 else
11126         val="$undef"
11127         echo "Nope, it can't."
11128 fi
11129 set d_strctcpy
11130 eval $setvar
11131 $rm -f try.*
11132
11133 : see if strerror and/or sys_errlist[] exist
11134 echo " "
11135 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11136     if set strerror val -f d_strerror; eval $csym; $val; then
11137                 echo 'strerror() found.' >&4
11138                 d_strerror="$define"
11139                 d_strerrm='strerror(e)'
11140                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11141                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11142                         d_syserrlst="$define"
11143                 else
11144                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11145                         d_syserrlst="$undef"
11146                 fi
11147     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11148                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11149                 echo 'strerror() found in string header.' >&4
11150                 d_strerror="$define"
11151                 d_strerrm='strerror(e)'
11152                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11153                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11154                                 d_syserrlst="$define"
11155                 else
11156                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11157                         d_syserrlst="$undef"
11158                 fi
11159     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11160                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11161                 d_strerror="$undef"
11162                 d_syserrlst="$define"
11163                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11164     else
11165                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11166                 d_strerror="$undef"
11167                 d_syserrlst="$undef"
11168                 d_strerrm='"unknown"'
11169     fi
11170 fi
11171
11172 : see if strtod exists
11173 set strtod d_strtod
11174 eval $inlibc
11175
11176 : see if strtol exists
11177 set strtol d_strtol
11178 eval $inlibc
11179
11180 : see if strtold exists
11181 set strtold d_strtold
11182 eval $inlibc
11183
11184 : see if strtoll exists
11185 set strtoll d_strtoll
11186 eval $inlibc
11187
11188 : see if strtoul exists
11189 set strtoul d_strtoul
11190 eval $inlibc
11191
11192 : see if strtoull exists
11193 set strtoull d_strtoull
11194 eval $inlibc
11195
11196 : see if strtouq exists
11197 set strtouq d_strtouq
11198 eval $inlibc
11199
11200 : see if strxfrm exists
11201 set strxfrm d_strxfrm
11202 eval $inlibc
11203
11204 : see if symlink exists
11205 set symlink d_symlink
11206 eval $inlibc
11207
11208 : see if syscall exists
11209 set syscall d_syscall
11210 eval $inlibc
11211
11212 : see if sysconf exists
11213 set sysconf d_sysconf
11214 eval $inlibc
11215
11216 : see if system exists
11217 set system d_system
11218 eval $inlibc
11219
11220 : see if tcgetpgrp exists
11221 set tcgetpgrp d_tcgetpgrp
11222 eval $inlibc
11223
11224 : see if tcsetpgrp exists
11225 set tcsetpgrp d_tcsetpgrp
11226 eval $inlibc
11227
11228 : see if prototype for telldir is available
11229 echo " "
11230 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11231 eval $hasproto
11232
11233 : see if this is a sys/times.h system
11234 set sys/times.h i_systimes
11235 eval $inhdr
11236
11237 : see if times exists
11238 echo " "
11239 if set times val -f d_times; eval $csym; $val; then
11240         echo 'times() found.' >&4
11241         d_times="$define"
11242         inc=''
11243         case "$i_systimes" in
11244         "$define") inc='sys/times.h';;
11245         esac
11246         rp="What is the type returned by times() on this system?"
11247         set clock_t clocktype long stdio.h sys/types.h $inc
11248         eval $typedef_ask
11249 else
11250         echo 'times() NOT found, hope that will do.' >&4
11251         d_times="$undef"
11252         clocktype='int'
11253 fi
11254
11255 : see if truncate exists
11256 set truncate d_truncate
11257 eval $inlibc
11258
11259 : see if tzname[] exists
11260 echo " "
11261 if set tzname val -a d_tzname; eval $csym; $val; then
11262         val="$define"
11263         echo 'tzname[] found.' >&4
11264 else
11265         val="$undef"
11266         echo 'tzname[] NOT found.' >&4
11267 fi
11268 set d_tzname
11269 eval $setvar
11270
11271 : see if umask exists
11272 set umask d_umask
11273 eval $inlibc
11274
11275 : see if ustat exists
11276 set ustat d_ustat
11277 eval $inlibc
11278
11279 : backward compatibility for d_hvfork
11280 if test X$d_hvfork != X; then
11281         d_vfork="$d_hvfork"
11282         d_hvfork=''
11283 fi
11284 : see if there is a vfork
11285 val=''
11286 set vfork val
11287 eval $inlibc
11288
11289 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11290 : perl on Solaris 2.x, and probably elsewhere.
11291 case "$val" in
11292 $define)
11293         echo " "
11294         case "$usevfork" in
11295         false) dflt='n';;
11296         *) dflt='y';;
11297         esac
11298         cat <<'EOM'
11299  
11300 Perl can only use a vfork() that doesn't suffer from strict
11301 restrictions on calling functions or modifying global data in
11302 the child.  For example, glibc-2.1 contains such a vfork()
11303 that is unsuitable.  If your system provides a proper fork()
11304 call, chances are that you do NOT want perl to use vfork().
11305
11306 EOM
11307         rp="Do you still want to use vfork()?"
11308         . ./myread
11309         case "$ans" in
11310         y|Y) ;;
11311         *)
11312                 echo "Ok, we won't use vfork()."
11313                 val="$undef"
11314                 ;;
11315         esac
11316         ;;
11317 esac
11318 set d_vfork
11319 eval $setvar
11320 case "$d_vfork" in
11321 $define) usevfork='true';;
11322 *) usevfork='false';;
11323 esac
11324
11325 : see if this is an sysdir system
11326 set sys/dir.h i_sysdir
11327 eval $inhdr
11328
11329 : see if this is an sysndir system
11330 set sys/ndir.h i_sysndir
11331 eval $inhdr
11332
11333 : see if closedir exists
11334 set closedir d_closedir
11335 eval $inlibc
11336
11337 case "$d_closedir" in
11338 "$define")
11339         echo " "
11340         echo "Checking whether closedir() returns a status..." >&4
11341         cat > closedir.c <<EOM
11342 #$i_dirent I_DIRENT             /**/
11343 #$i_sysdir I_SYS_DIR            /**/
11344 #$i_sysndir I_SYS_NDIR          /**/
11345 #$i_systypes I_SYS_TYPES        /**/
11346
11347 #if defined(I_SYS_TYPES)
11348 #include <sys/types.h>
11349 #endif
11350 #if defined(I_DIRENT)
11351 #include <dirent.h>
11352 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11353 #include <sys/dir.h>
11354 #endif
11355 #else
11356 #ifdef I_SYS_NDIR
11357 #include <sys/ndir.h>
11358 #else
11359 #ifdef I_SYS_DIR
11360 #ifdef hp9000s500
11361 #include <ndir.h>       /* may be wrong in the future */
11362 #else
11363 #include <sys/dir.h>
11364 #endif
11365 #endif
11366 #endif
11367 #endif 
11368 int main() { return closedir(opendir(".")); }
11369 EOM
11370         set closedir
11371         if eval $compile_ok; then
11372                 if ./closedir > /dev/null 2>&1 ; then
11373                         echo "Yes, it does."
11374                         val="$undef"
11375                 else
11376                         echo "No, it doesn't."
11377                         val="$define"
11378                 fi
11379         else
11380                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11381                 val="$define"
11382         fi
11383         ;;
11384 *)
11385         val="$undef";
11386         ;;
11387 esac
11388 set d_void_closedir
11389 eval $setvar
11390 $rm -f closedir*
11391 : check for volatile keyword
11392 echo " "
11393 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11394 $cat >try.c <<'EOCP'
11395 int main()
11396 {
11397         typedef struct _goo_struct goo_struct;
11398         goo_struct * volatile goo = ((goo_struct *)0);
11399         struct _goo_struct {
11400                 long long_int;
11401                 int reg_int;
11402                 char char_var;
11403         };
11404         typedef unsigned short foo_t;
11405         char *volatile foo;
11406         volatile int bar;
11407         volatile foo_t blech;
11408         foo = foo;
11409 }
11410 EOCP
11411 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11412         val="$define"
11413         echo "Yup, it does."
11414 else
11415         val="$undef"
11416         echo "Nope, it doesn't."
11417 fi
11418 set d_volatile
11419 eval $setvar
11420 $rm -f try.*
11421
11422 : see if there is a wait4
11423 set wait4 d_wait4
11424 eval $inlibc
11425
11426 : see if waitpid exists
11427 set waitpid d_waitpid
11428 eval $inlibc
11429
11430 : see if wcstombs exists
11431 set wcstombs d_wcstombs
11432 eval $inlibc
11433
11434 : see if wctomb exists
11435 set wctomb d_wctomb
11436 eval $inlibc
11437
11438 : preserve RCS keywords in files with variable substitution, grrr
11439 Date='$Date'
11440 Id='$Id'
11441 Log='$Log'
11442 RCSfile='$RCSfile'
11443 Revision='$Revision'
11444
11445 case "$crosscompile" in
11446 ''|[nN]*) crosscompile="$undef" ;;
11447 esac
11448
11449 case "$osname" in
11450 next|rhapsody) multiarch="$define" ;;
11451 esac
11452 case "$multiarch" in
11453 ''|[nN]*) multiarch="$undef" ;;
11454 esac
11455
11456 : check for alignment requirements
11457 echo " "
11458 case "$crosscompile$multiarch" in
11459 *$define*)
11460         $cat <<EOM
11461 You seem to be either cross-compiling or doing a multiarchitecture build,
11462 skipping the memory alignment check.
11463
11464 EOM
11465         case "$alignbytes" in
11466         '') alignbytes=8 ;;
11467         esac
11468         ;;
11469 *)
11470         case "$alignbytes" in
11471         '') echo "Checking alignment constraints..." >&4
11472                 $cat >try.c <<'EOCP'
11473 #include <stdio.h>
11474 struct foobar {
11475         char foo;
11476         double bar;
11477 } try_algn;
11478 int main()
11479 {
11480     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11481     return(0);
11482 }
11483 EOCP
11484                 set try
11485                 if eval $compile_ok; then
11486                         dflt=`./try`
11487                 else
11488                         dflt='8'
11489                         echo "(I can't seem to compile the test program...)"
11490                 fi
11491                 ;;
11492         *) dflt="$alignbytes"
11493                 ;;
11494         esac
11495         rp="Doubles must be aligned on a how-many-byte boundary?"
11496         . ./myread
11497         alignbytes="$ans"
11498         $rm -f try.c try
11499         ;;
11500 esac
11501
11502
11503 : check for ordering of bytes in a long
11504 echo " "
11505 case "$crosscompile$multiarch" in
11506 *$define*)
11507         $cat <<EOM
11508 You seem to be either cross-compiling or doing a multiarchitecture build,
11509 skipping the byteorder check.
11510
11511 EOM
11512         byteorder='0xffff'
11513         ;;
11514 *)
11515         case "$byteorder" in
11516         '')
11517                 $cat <<'EOM'
11518 In the following, larger digits indicate more significance.  A big-endian
11519 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11520 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11521 machines may have weird orders like 3412.  A Cray will report 87654321,
11522 an Alpha will report 12345678. If the test program works the default is
11523 probably right.
11524 I'm now running the test program...
11525 EOM
11526                 $cat >try.c <<'EOCP'
11527 #include <stdio.h>
11528 int main()
11529 {
11530         int i;
11531         union {
11532                 unsigned long l;
11533                 char c[sizeof(long)];
11534         } u;
11535
11536         if (sizeof(long) > 4)
11537                 u.l = (0x08070605L << 32) | 0x04030201L;
11538         else
11539                 u.l = 0x04030201L;
11540         for (i = 0; i < sizeof(long); i++)
11541                 printf("%c", u.c[i]+'0');
11542         printf("\n");
11543         exit(0);
11544 }
11545 EOCP
11546                 xxx_prompt=y
11547                 set try
11548                 if eval $compile && ./try > /dev/null; then
11549                         dflt=`./try`
11550                         case "$dflt" in
11551                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11552                                 echo "(The test program ran ok.)"
11553                                 echo "byteorder=$dflt"
11554                                 xxx_prompt=n
11555                         ;;
11556                         ????|????????) echo "(The test program ran ok.)" ;;
11557                         *) echo "(The test program didn't run right for some reason.)" ;;
11558                         esac
11559                 else
11560                         dflt='4321'
11561                         cat <<'EOM'
11562 (I can't seem to compile the test program.  Guessing big-endian...)
11563 EOM
11564                 fi
11565                 case "$xxx_prompt" in
11566                 y)
11567                         rp="What is the order of bytes in a long?"
11568                         . ./myread
11569                         byteorder="$ans"
11570                         ;;
11571                 *)      byteorder=$dflt
11572                         ;;
11573                 esac
11574                 ;;
11575         esac
11576         $rm -f try.c try
11577         ;;
11578 esac
11579
11580
11581 : how do we catenate cpp tokens here?
11582 echo " "
11583 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11584 $cat >cpp_stuff.c <<'EOCP'
11585 #define RCAT(a,b)a/**/b
11586 #define ACAT(a,b)a ## b
11587 RCAT(Rei,ser)
11588 ACAT(Cir,cus)
11589 EOCP
11590 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11591 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11592         echo "Oh!  Smells like ANSI's been here." >&4
11593         echo "We can catify or stringify, separately or together!"
11594         cpp_stuff=42
11595 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11596         echo "Ah, yes!  The good old days!" >&4
11597         echo "However, in the good old days we don't know how to stringify and"
11598         echo "catify at the same time."
11599         cpp_stuff=1
11600 else
11601         $cat >&4 <<EOM
11602 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11603 to have to edit the values of CAT[2-5] in config.h...
11604 EOM
11605         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11606 fi
11607 $rm -f cpp_stuff.*
11608
11609 : see if this is a db.h system
11610 set db.h i_db
11611 eval $inhdr
11612
11613 case "$i_db" in
11614 $define)
11615         : Check db version.
11616         echo " "
11617         echo "Checking Berkeley DB version ..." >&4
11618         $cat >try.c <<EOCP
11619 #$d_const HASCONST
11620 #ifndef HASCONST
11621 #define const
11622 #endif
11623 #include <sys/types.h>
11624 #include <stdio.h>
11625 #include <db.h>
11626 int main()
11627 {
11628 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11629     int Major, Minor, Patch ;
11630     unsigned long Version ;
11631     (void)db_version(&Major, &Minor, &Patch) ;
11632     printf("You have Berkeley DB Version 2 or greater\n");
11633
11634     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11635                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11636     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11637                 Major, Minor, Patch) ;
11638
11639     /* check that db.h & libdb are compatible */
11640     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11641         printf("db.h and libdb are incompatible\n") ;
11642         exit(3);        
11643     }
11644
11645     printf("db.h and libdb are compatible\n") ;
11646
11647     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11648                 + DB_VERSION_PATCH ;
11649
11650     /* needs to be >= 2.3.4 */
11651     if (Version < 2003004) {
11652     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11653         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11654         exit(2);        
11655     }
11656
11657     exit(0);
11658 #else
11659 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11660     printf("You have Berkeley DB Version 1\n");
11661     exit(0);    /* DB version < 2: the coast is clear. */
11662 #else
11663     exit(1);    /* <db.h> not Berkeley DB? */
11664 #endif
11665 #endif
11666 }
11667 EOCP
11668         set try
11669         if eval $compile_ok && ./try; then
11670                 echo 'Looks OK.' >&4
11671         else
11672                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11673                 i_db=$undef
11674                 case " $libs " in
11675                 *"-ldb "*)
11676                         : Remove db from list of libraries to use
11677                         echo "Removing unusable -ldb from library list" >&4
11678                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11679                         shift
11680                         libs="$*"
11681                         echo "libs = $libs" >&4
11682                         ;;
11683                 esac
11684         fi
11685         $rm -f try.*
11686         ;;
11687 esac
11688
11689 case "$i_db" in
11690 define)
11691         : Check the return type needed for hash 
11692         echo " "
11693         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11694         $cat >try.c <<EOCP
11695 #$d_const HASCONST
11696 #ifndef HASCONST
11697 #define const
11698 #endif
11699 #include <sys/types.h>
11700 #include <db.h>
11701
11702 #ifndef DB_VERSION_MAJOR
11703 u_int32_t hash_cb (ptr, size)
11704 const void *ptr;
11705 size_t size;
11706 {
11707 }
11708 HASHINFO info;
11709 int main()
11710 {
11711         info.hash = hash_cb;
11712 }
11713 #endif
11714 EOCP
11715         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11716                 if $contains warning try.out >>/dev/null 2>&1 ; then
11717                         db_hashtype='int'
11718                 else
11719                         db_hashtype='u_int32_t'
11720                 fi
11721         else
11722                 : XXX Maybe we should just give up here.
11723                 db_hashtype=u_int32_t
11724                 $cat try.out >&4
11725                 echo "Help:  I can't seem to compile the db test program." >&4
11726                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11727         fi
11728         $rm -f try.*
11729         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11730         ;;
11731 *)      db_hashtype=u_int32_t
11732         ;;
11733 esac
11734 case "$i_db" in
11735 define)
11736         : Check the return type needed for prefix 
11737         echo " "
11738         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11739         cat >try.c <<EOCP
11740 #$d_const HASCONST
11741 #ifndef HASCONST
11742 #define const
11743 #endif
11744 #include <sys/types.h>
11745 #include <db.h>
11746
11747 #ifndef DB_VERSION_MAJOR
11748 size_t prefix_cb (key1, key2)
11749 const DBT *key1;
11750 const DBT *key2;
11751 {
11752 }
11753 BTREEINFO info;
11754 int main()
11755 {
11756         info.prefix = prefix_cb;
11757 }
11758 #endif
11759 EOCP
11760         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11761                 if $contains warning try.out >>/dev/null 2>&1 ; then
11762                         db_prefixtype='int'
11763                 else
11764                         db_prefixtype='size_t'
11765                 fi
11766         else
11767                 db_prefixtype='size_t'
11768                 : XXX Maybe we should just give up here.
11769                 $cat try.out >&4
11770                 echo "Help:  I can't seem to compile the db test program." >&4
11771                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11772         fi
11773         $rm -f try.*
11774         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11775         ;;
11776 *)      db_prefixtype='size_t'
11777         ;;
11778 esac
11779
11780 : check for void type
11781 echo " "
11782 echo "Checking to see how well your C compiler groks the void type..." >&4
11783 case "$voidflags" in
11784 '')
11785         $cat >try.c <<'EOCP'
11786 #if TRY & 1
11787 void sub() {
11788 #else
11789 sub() {
11790 #endif
11791         extern void moo();      /* function returning void */
11792         void (*goo)();          /* ptr to func returning void */
11793 #if TRY & 8
11794         void *hue;              /* generic ptr */
11795 #endif
11796 #if TRY & 2
11797         void (*foo[10])();
11798 #endif
11799
11800 #if TRY & 4
11801         if(goo == moo) {
11802                 exit(0);
11803         }
11804 #endif
11805         exit(0);
11806 }
11807 int main() { sub(); }
11808 EOCP
11809         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11810                 voidflags=$defvoidused
11811         echo "Good.  It appears to support void to the level $package wants.">&4
11812                 if $contains warning .out >/dev/null 2>&1; then
11813                         echo "However, you might get some warnings that look like this:"
11814                         $cat .out
11815                 fi
11816         else
11817 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11818                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11819                         echo "It supports 1..."
11820                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11821                                 echo "It also supports 2..."
11822                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11823                                         voidflags=7
11824                                         echo "And it supports 4 but not 8 definitely."
11825                                 else
11826                                         echo "It doesn't support 4..."
11827                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11828                                                 voidflags=11
11829                                                 echo "But it supports 8."
11830                                         else
11831                                                 voidflags=3
11832                                                 echo "Neither does it support 8."
11833                                         fi
11834                                 fi
11835                         else
11836                                 echo "It does not support 2..."
11837                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11838                                         voidflags=13
11839                                         echo "But it supports 4 and 8."
11840                                 else
11841                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11842                                                 voidflags=5
11843                                                 echo "And it supports 4 but has not heard about 8."
11844                                         else
11845                                                 echo "However it supports 8 but not 4."
11846                                         fi
11847                                 fi
11848                         fi
11849                 else
11850                         echo "There is no support at all for void."
11851                         voidflags=0
11852                 fi
11853         fi
11854 esac
11855 case "$voidflags" in
11856 "$defvoidused") ;;
11857 *)      $cat >&4 <<'EOM'
11858   Support flag bits are:
11859     1: basic void declarations.
11860     2: arrays of pointers to functions returning void.
11861     4: operations between pointers to and addresses of void functions.
11862     8: generic void pointers.
11863 EOM
11864         dflt="$voidflags";
11865         rp="Your void support flags add up to what?"
11866         . ./myread
11867         voidflags="$ans"
11868         ;;
11869 esac
11870 $rm -f try.* .out
11871
11872
11873 : How can we generate normalized random numbers ?
11874 echo " "
11875 echo "Looking for a random number function..." >&4
11876 case "$randfunc" in
11877 '')
11878         if set drand48 val -f; eval $csym; $val; then
11879                 dflt="drand48"
11880                 echo "Good, found drand48()." >&4
11881         elif set random val -f; eval $csym; $val; then
11882                 dflt="random"
11883                 echo "OK, found random()." >&4
11884         else
11885                 dflt="rand"
11886                 echo "Yick, looks like I have to use rand()." >&4
11887         fi
11888         echo " "
11889         ;;
11890 *)
11891         dflt="$randfunc"
11892         ;;
11893 esac
11894 cont=true
11895
11896 case "$ccflags" in
11897 *-Dmy_rand=*|*-Dmy_srand=*)
11898         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11899         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11900         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11901         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11902         ;;
11903 esac
11904
11905 while $test "$cont"; do
11906         rp="Use which function to generate random numbers?"
11907         . ./myread
11908         if $test "$ans" = "$dflt"; then
11909                 : null
11910         else
11911                 randbits=''
11912         fi
11913         randfunc="$ans"
11914         if set $ans val -f; eval $csym; $val; then
11915                 cont=''
11916         else
11917                 dflt=y
11918                 rp="I cannot find function $ans. Use that name anyway?"
11919                 . ./myread
11920                 dflt=rand
11921                 case "$ans" in
11922                         [yY]*) cont='';;
11923                 esac
11924         fi
11925         case "$cont" in
11926         '')
11927                 case "$randfunc" in
11928                 drand48)
11929                         drand01="drand48()"
11930                         seedfunc="srand48"
11931                         randbits=48
11932                         randseedtype=long
11933                         ;;
11934                 rand|random)
11935                         case "$randbits" in
11936                         '')
11937 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11938                                 $cat >try.c <<EOCP
11939 #$i_unistd I_UNISTD
11940 #$i_stdlib I_STDLIB
11941 #include <stdio.h>
11942 #ifdef I_UNISTD
11943 #  include <unistd.h>
11944 #endif
11945 #ifdef I_STDLIB
11946 #  include <stdlib.h>
11947 #endif
11948 int main()
11949 {
11950         register int i;
11951         register unsigned long tmp;
11952         register unsigned long max = 0L;
11953
11954         for (i = 1000; i; i--) {
11955                 tmp = (unsigned long) $randfunc();
11956                 if (tmp > max) max = tmp;
11957         }
11958         for (i = 0; max; i++)
11959                 max /= 2;
11960         printf("%d\n",i);
11961 }
11962 EOCP
11963                                 set try
11964                                 if eval $compile_ok; then
11965                                         dflt=`try`
11966                                 else
11967                                         dflt='?'
11968                                         echo "(I can't seem to compile the test program...)"
11969                                 fi
11970                                 ;;
11971                         *)
11972                                 dflt="$randbits"
11973                                 ;;
11974                         esac
11975                         rp="How many bits does your $randfunc() function produce?"
11976                         . ./myread
11977                         randbits="$ans"
11978                         $rm -f try.c try
11979                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11980                         seedfunc="s$randfunc"
11981                         randseedtype=unsigned
11982                         ;;
11983                 *)
11984                         dflt="31"
11985                         rp="How many bits does your $randfunc() function produce?"
11986                         . ./myread
11987                         randbits="$ans"
11988                         seedfunc="s$randfunc"
11989                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11990                         if set $seedfunc val -f; eval $csym; $val; then
11991                                 echo "(Using $seedfunc() to seed random generator)"
11992                         else
11993                                 echo "(Warning: no $seedfunc() to seed random generator)"
11994                                 seedfunc=rand
11995                         fi
11996                         randseedtype=unsigned
11997                         ;;
11998                 esac
11999                 ;;
12000         esac
12001 done
12002
12003 echo " "
12004 echo "Determining whether or not we are on an EBCDIC system..." >&4
12005 $cat >tebcdic.c <<'EOM'
12006 int main()
12007 {
12008   if ('M'==0xd4) return 0;
12009   return 1;
12010 }
12011 EOM
12012
12013 val=$undef
12014 set tebcdic
12015 if eval $compile_ok; then
12016         if ./tebcdic; then
12017                 echo "You have EBCDIC." >&4
12018                 val="$define"
12019         else
12020                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12021         fi
12022 else
12023         echo "I'm unable to compile the test program." >&4
12024         echo "I'll assume ASCII or some ISO Latin." >&4
12025 fi
12026 $rm -f tebcdic.c tebcdic
12027 set ebcdic
12028 eval $setvar
12029
12030 echo " "
12031 $cat >&4 <<EOM
12032 Checking how to flush all pending stdio output...
12033 EOM
12034 # I only know how to find the first 32 possibly open files on SunOS.
12035 # See also hints/sunos_4_1.sh and util.c  --AD
12036 case "$osname" in
12037 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12038 esac
12039 $cat >>try.c <<EOCP
12040 #include <stdio.h>
12041 #$i_unistd I_UNISTD
12042 #ifdef I_UNISTD
12043 # include <unistd.h>
12044 #endif
12045 #$d_sysconf HAS_SYSCONF
12046 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12047 #ifdef HAS_STDIO_STREAM_ARRAY
12048 # define STDIO_STREAM_ARRAY $stdio_stream_array
12049 #endif
12050 int main() {
12051   FILE* p = fopen("try.out", "w");
12052 #ifdef TRY_FPUTC
12053   fputc('x', p);
12054 #else
12055 # ifdef TRY_FPRINTF
12056   fprintf(p, "x");
12057 # endif
12058 #endif
12059 #ifdef TRY_FFLUSH_NULL
12060   fflush(NULL);
12061 #endif
12062 #ifdef TRY_FFLUSH_ALL
12063   {
12064     long open_max = -1;
12065 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12066     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12067 # else
12068 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12069     open_max = sysconf(_SC_OPEN_MAX);
12070 #  else
12071 #   ifdef FOPEN_MAX
12072     open_max = FOPEN_MAX;
12073 #   else
12074 #    ifdef OPEN_MAX
12075     open_max = OPEN_MAX;
12076 #    else
12077 #     ifdef _NFILE
12078     open_max = _NFILE;
12079 #     endif
12080 #    endif
12081 #   endif
12082 #  endif
12083 # endif 
12084 # ifdef HAS_STDIO_STREAM_ARRAY
12085     if (open_max > 0) {
12086       long i;
12087       for (i = 0; i < open_max; i++)
12088             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12089                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12090                 STDIO_STREAM_ARRAY[i]._flag)
12091                 fflush(&STDIO_STREAM_ARRAY[i]);
12092     }   
12093   }
12094 # endif
12095 #endif
12096   _exit(42);
12097 }
12098 EOCP
12099 : first we have to find out how _not_ to flush
12100 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12101     output=''
12102     set try -DTRY_FPUTC
12103     if eval $compile; then
12104             $rm -f try.out
12105             ./try$exe_ext 2>/dev/null
12106             if $test ! -s try.out -a "X$?" = X42; then
12107                 output=-DTRY_FPUTC
12108             fi
12109     fi
12110     case "$output" in
12111     '')
12112             set try -DTRY_FPRINTF
12113             $rm -f try.out
12114             if eval $compile; then
12115                     $rm -f try.out
12116                     ./try$exe_ext 2>/dev/null
12117                     if $test ! -s try.out -a "X$?" = X42; then
12118                         output=-DTRY_FPRINTF
12119                     fi
12120             fi
12121         ;;
12122     esac
12123 fi
12124 : check for fflush NULL behaviour
12125 case "$fflushNULL" in
12126 '')     set try -DTRY_FFLUSH_NULL $output
12127         if eval $compile; then
12128                 $rm -f try.out
12129                 ./try$exe_ext 2>/dev/null
12130                 code="$?"
12131                 if $test -s try.out -a "X$code" = X42; then
12132                         fflushNULL="`$cat try.out`"
12133                 else
12134                         if $test "X$code" != X42; then
12135                                 $cat >&4 <<EOM
12136 (If this test failed, don't worry, we'll try another method shortly.)
12137 EOM
12138                         fi
12139                 fi
12140         fi
12141         $rm -f core try.core core.try.*
12142         case "$fflushNULL" in
12143         x)      $cat >&4 <<EOM
12144 Your fflush(NULL) works okay.
12145 EOM
12146                 fflushNULL="$define"
12147                 ;;
12148         '')     $cat >&4 <<EOM
12149 Your fflush(NULL) isn't working (contrary to ANSI C).
12150 EOM
12151                 fflushNULL="$undef"
12152                 ;;
12153         *)      $cat >&4 <<EOM
12154 Cannot figure out whether your fflush(NULL) works or not.
12155 I'm assuming it doesn't (contrary to ANSI C).
12156 EOM
12157                 fflushNULL="$undef"
12158                 ;;
12159         esac
12160         ;;
12161 $define|true|[yY]*)
12162         fflushNULL="$define"
12163         ;;
12164 *)
12165         fflushNULL="$undef"
12166         ;;
12167 esac
12168 : check explicit looping only if NULL did not work
12169 case "$fflushNULL" in
12170 "$undef")
12171         : check for fflush all behaviour
12172         case "$fflushall" in
12173         '')     set try -DTRY_FFLUSH_ALL $output
12174                 if eval $compile; then
12175                         $cat >&4 <<EOM
12176 (Now testing the other method--but note that also this may fail.)
12177 EOM
12178                         $rm -f try.out
12179                         ./try$exe_ext 2>/dev/null
12180                         if $test -s try.out -a "X$?" = X42; then
12181                                 fflushall="`$cat try.out`"
12182                         fi
12183                 fi
12184                 $rm -f core try.core core.try.*
12185                 case "$fflushall" in
12186                 x)      $cat >&4 <<EOM
12187 Whew. Flushing explicitly all the stdio streams works.
12188 EOM
12189                         fflushall="$define"
12190                         ;;
12191                 '')     $cat >&4 <<EOM
12192 Sigh. Flushing explicitly all the stdio streams doesn't work.
12193 EOM
12194                         fflushall="$undef"
12195                         ;;
12196                 *)      $cat >&4 <<EOM
12197 Cannot figure out whether flushing stdio streams explicitly works or not.
12198 I'm assuming it doesn't.
12199 EOM
12200                         fflushall="$undef"
12201                         ;;
12202                 esac
12203                 ;;
12204         "$define"|true|[yY]*)
12205                 fflushall="$define"
12206                 ;;
12207         *)
12208                 fflushall="$undef"
12209                 ;;
12210         esac
12211         ;;
12212 *)      fflushall="$undef"      
12213         ;;
12214 esac
12215 case "$fflushNULL$fflushall" in
12216 undefundef)
12217         $cat <<EOM
12218 I cannot figure out how to flush pending stdio output.
12219 EOM
12220         ;;
12221 esac
12222 $rm -f try.* try$exe_ext
12223
12224 : Store the full pathname to the ar program for use in the C program
12225 : Respect a hint or command line value for full_ar.
12226 case "$full_ar" in
12227 '') full_ar=$ar ;;
12228 esac
12229
12230 : Store the full pathname to the sed program for use in the C program
12231 full_sed=$sed
12232
12233 : see what type gids are declared as in the kernel
12234 echo " "
12235 echo "Looking for the type for group ids returned by getgid()."
12236 set gid_t gidtype xxx stdio.h sys/types.h
12237 eval $typedef
12238 case "$gidtype" in
12239 xxx)
12240         xxx=`./findhdr sys/user.h`
12241         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12242         case $1 in
12243         unsigned) dflt="$1 $2" ;;
12244         *) dflt="$1" ;;
12245         esac
12246         ;;
12247 *) dflt="$gidtype";;
12248 esac
12249 case "$gidtype" in
12250 gid_t) echo "gid_t found." ;;
12251 *)      rp="What is the type for group ids returned by getgid()?"
12252         . ./myread
12253         gidtype="$ans"
12254         ;;
12255 esac
12256
12257 echo " "
12258 case "$gidtype" in
12259 *_t) zzz="$gidtype"     ;;
12260 *)   zzz="gid"          ;;
12261 esac
12262 echo "Checking the size of $zzz..." >&4 
12263 cat > try.c <<EOCP
12264 #include <sys/types.h>
12265 #include <stdio.h>
12266 int main() {
12267     printf("%d\n", (int)sizeof($gidtype));
12268     exit(0);
12269 }
12270 EOCP
12271 set try
12272 if eval $compile_ok; then
12273         yyy=`./try`
12274         case "$yyy" in
12275         '')     gidsize=4
12276                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12277                 ;;
12278         *)      gidsize=$yyy
12279                 echo "Your $zzz size is $gidsize bytes."
12280                 ;;
12281         esac
12282 else
12283         gidsize=4
12284         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12285 fi
12286
12287
12288 echo " "
12289 case "$gidtype" in
12290 *_t) zzz="$gidtype"     ;;
12291 *)   zzz="gid"          ;;
12292 esac
12293 echo "Checking the sign of $zzz..." >&4 
12294 cat > try.c <<EOCP
12295 #include <sys/types.h>
12296 #include <stdio.h>
12297 int main() {
12298         $gidtype foo = -1;
12299         if (foo < 0)
12300                 printf("-1\n");
12301         else
12302                 printf("1\n");
12303 }
12304 EOCP
12305 set try
12306 if eval $compile; then
12307         yyy=`./try`
12308         case "$yyy" in
12309         '')     gidsign=1
12310                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12311                 ;;
12312         *)      gidsign=$yyy
12313                 case "$gidsign" in
12314                  1) echo "Your $zzz is unsigned." ;;
12315                 -1) echo "Your $zzz is signed."   ;;
12316                 esac
12317                 ;;
12318         esac
12319 else
12320         gidsign=1
12321         echo "(I can't compile the test program--guessing unsigned.)" >&4
12322 fi
12323
12324
12325 echo " "
12326
12327 if $test X"$quadtype" != X; then
12328
12329 echo "Checking how to print 64-bit integers..." >&4
12330
12331 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12332         $cat >try.c <<'EOCP'
12333 #include <sys/types.h>
12334 #include <stdio.h>
12335 int main() {
12336   int q = 12345678901;
12337   printf("%ld\n", q);
12338 }
12339 EOCP
12340         set try
12341         if eval $compile; then
12342                 yyy=`./try$exe_ext`
12343                 case "$yyy" in
12344                 12345678901)
12345                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12346                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12347                         echo "We will use %d."
12348                         ;;
12349                 esac
12350         fi
12351 fi
12352
12353 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12354         $cat >try.c <<'EOCP'
12355 #include <sys/types.h>
12356 #include <stdio.h>
12357 int main() {
12358   long q = 12345678901;
12359   printf("%ld\n", q);
12360 }
12361 EOCP
12362         set try
12363         if eval $compile; then
12364                 yyy=`./try$exe_ext`
12365                 case "$yyy" in
12366                 12345678901)
12367                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12368                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12369                         echo "We will use %ld."
12370                         ;;
12371                 esac
12372         fi
12373 fi
12374
12375 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12376         $cat >try.c <<'EOCP'
12377 #include <sys/types.h>
12378 #include <inttypes.h>
12379 #include <stdio.h>
12380 int main() {
12381   int64_t q = 12345678901;
12382   printf("%" PRId64 "\n", q);
12383 }
12384 EOCP
12385         set try
12386         if eval $compile; then
12387                 yyy=`./try$exe_ext`
12388                 case "$yyy" in
12389                 12345678901)
12390                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12391                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12392                         echo "We will use the C9X style."
12393                         ;;
12394                 esac
12395         fi
12396 fi
12397
12398 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12399         $cat >try.c <<'EOCP'
12400 #include <sys/types.h>
12401 #include <stdio.h>
12402 int main() {
12403   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12404   printf("%lld\n", q);
12405 }
12406 EOCP
12407         set try
12408         if eval $compile; then
12409                 yyy=`./try$exe_ext`
12410                 case "$yyy" in
12411                 12345678901)
12412                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12413                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12414                         echo "We will use the %lld style."
12415                         ;;
12416                 esac
12417         fi
12418 fi
12419
12420 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12421         $cat >try.c <<EOCP
12422 #include <sys/types.h>
12423 #include <stdio.h>
12424 int main() {
12425   $quadtype q = 12345678901;
12426   printf("%Ld\n", q);
12427 }
12428 EOCP
12429         set try
12430         if eval $compile; then
12431                 yyy=`./try$exe_ext`
12432                 case "$yyy" in
12433                 12345678901)
12434                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12435                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12436                         echo "We will use %Ld."
12437                         ;;
12438                 esac
12439         fi
12440 fi
12441
12442 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12443         $cat >try.c <<EOCP
12444 #include <sys/types.h>
12445 #include <stdio.h>
12446 int main() {
12447   $quadtype q = 12345678901;
12448   printf("%qd\n", q);
12449 }
12450 EOCP
12451         set try
12452         if eval $compile; then
12453                 yyy=`./try$exe_ext`
12454                 case "$yyy" in
12455                 12345678901)
12456                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12457                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12458                         echo "We will use %qd."
12459                         ;;
12460                 esac
12461         fi
12462 fi
12463
12464 if $test X"$sPRId64" = X; then
12465         echo "Cannot figure out how to print 64-bit integers." >&4
12466 fi
12467
12468 $rm -f try try.*
12469
12470 fi
12471
12472 case "$sPRId64" in
12473 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12474         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12475         ;;
12476 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12477         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12478         ;;
12479 esac
12480
12481
12482 echo " "
12483 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12484
12485 if $test X"$ivsize" = X8; then
12486         ivdformat="$sPRId64"
12487         uvuformat="$sPRIu64"
12488         uvoformat="$sPRIo64"
12489         uvxformat="$sPRIx64"
12490 else
12491         if $test X"$ivsize" = X"$longsize"; then
12492                 ivdformat='"ld"'
12493                 uvuformat='"lu"'
12494                 uvoformat='"lo"'
12495                 uvxformat='"lx"'
12496         else
12497                 if $test X"$ivsize" = X"$intsize"; then
12498                         ivdformat='"d"'
12499                         uvuformat='"u"'
12500                         uvoformat='"o"'
12501                         uvxformat='"x"'
12502                 else
12503                         : far out
12504                         if $test X"$ivsize" = X"$shortsize"; then
12505                                 ivdformat='"hd"'
12506                                 uvuformat='"hu"'
12507                                 uvoformat='"ho"'
12508                                 uvxformat='"hx"'
12509                         fi
12510                 fi
12511         fi
12512 fi
12513
12514 case "$ivdformat" in
12515 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12516     exit 1
12517     ;;
12518 esac
12519
12520
12521 echo " "
12522 $echo "Checking the format string to be used for gids..." >&4
12523
12524 case "$gidsign" in
12525 -1)     if $test X"$gidsize" = X"$ivsize"; then
12526                 gidformat="$ivdformat"
12527         else
12528                 if $test X"$gidsize" = X"$longsize"; then
12529                         gidformat='"ld"'
12530                 else
12531                         if $test X"$gidsize" = X"$intsize"; then
12532                                 gidformat='"d"'
12533                         else
12534                                 if $test X"$gidsize" = X"$shortsize"; then
12535                                         gidformat='"hd"'
12536                                 fi
12537                         fi
12538                 fi
12539         fi
12540         ;;
12541 *)      if $test X"$gidsize" = X"$uvsize"; then
12542                 gidformat="$uvuformat"
12543         else
12544                 if $test X"$gidsize" = X"$longsize"; then
12545                         gidformat='"lu"'
12546                 else
12547                         if $test X"$gidsize" = X"$intsize"; then
12548                                 gidformat='"u"'
12549                         else
12550                                 if $test X"$gidsize" = X"$shortsize"; then
12551                                         gidformat='"hu"'
12552                                 fi
12553                         fi
12554                 fi
12555         fi
12556         ;;
12557 esac
12558
12559 : see if getgroups exists
12560 set getgroups d_getgrps
12561 eval $inlibc
12562
12563 : see if setgroups exists
12564 set setgroups d_setgrps
12565 eval $inlibc
12566
12567
12568 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12569 echo " "
12570 case "$d_getgrps$d_setgrps" in
12571 *define*)
12572         case "$groupstype" in
12573         '') dflt="$gidtype" ;;
12574         *)  dflt="$groupstype" ;;
12575         esac
12576         $cat <<EOM
12577 What type of pointer is the second argument to getgroups() and setgroups()?
12578 Usually this is the same as group ids, $gidtype, but not always.
12579
12580 EOM
12581         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12582         . ./myread
12583         groupstype="$ans"
12584         ;;
12585 *)  groupstype="$gidtype";;
12586 esac
12587
12588 echo " "
12589 echo "Checking if your $make program sets \$(MAKE)..." >&4
12590 case "$make_set_make" in
12591 '')
12592         $sed 's/^X //' > testmake.mak << 'EOF'
12593 Xall:
12594 X       @echo 'maketemp="$(MAKE)"'
12595 EOF
12596         case "`$make -f testmake.mak 2>/dev/null`" in
12597         *maketemp=*) make_set_make='#' ;;
12598         *)      make_set_make="MAKE=$make" ;;
12599         esac
12600         $rm -f testmake.mak
12601         ;;
12602 esac
12603 case "$make_set_make" in
12604 '#') echo "Yup, it does.";;
12605 *) echo "Nope, it doesn't.";;
12606 esac
12607
12608 : see what type is used for mode_t
12609 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12610 set mode_t modetype int stdio.h sys/types.h
12611 eval $typedef_ask
12612
12613 : define a fucntion to check prototypes
12614 $cat > protochk <<EOSH
12615 $startsh
12616 cc="$cc"
12617 optimize="$optimize"
12618 ccflags="$ccflags"
12619 prototype="$prototype"
12620 define="$define"
12621 rm=$rm
12622 EOSH
12623
12624 $cat >> protochk <<'EOSH'
12625
12626 $rm -f try.c
12627 foo="$1"
12628 shift
12629 while test $# -ge 2; do
12630         case "$1" in
12631                 $define) echo "#include <$2>" >> try.c ;;
12632                 literal) echo "$2" >> try.c ;;
12633         esac
12634     shift 2
12635 done
12636 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12637 cat >> try.c <<'EOCP'
12638 #ifdef CAN_PROTOTYPE
12639 #define _(args) args
12640 #else
12641 #define _(args) ()
12642 #endif
12643 EOCP
12644 echo "$foo" >> try.c
12645 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12646 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12647 status=$?
12648 $rm -f try.[co]
12649 exit $status
12650 EOSH
12651 chmod +x protochk
12652 $eunicefix protochk
12653
12654 : see what type is used for size_t
12655 rp="What is the type used for the length parameter for string functions?"
12656 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12657 eval $typedef_ask
12658
12659 : check for type of arguments to gethostbyaddr. 
12660 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12661         case "$d_gethbyaddr" in
12662         $define)
12663                 $cat <<EOM
12664
12665 Checking to see what type of arguments are accepted by gethostbyaddr().
12666 EOM
12667                 hdrs="$define sys/types.h
12668                         $d_socket sys/socket.h 
12669                         $i_niin netinet/in.h 
12670                         $i_netdb netdb.h
12671                         $i_unistd unistd.h"
12672                 : The first arg can 'char *' or 'void *'
12673                 : The second arg is some of integral type
12674                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12675                         for yyy in size_t long int; do
12676                                 case "$netdb_host_type" in
12677                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12678                                         if ./protochk "$try" $hdrs; then
12679                                                 echo "Your system accepts $xxx for the first arg."
12680                                                 echo "...and $yyy for the second arg."
12681                                                 netdb_host_type="$xxx"
12682                                                 netdb_hlen_type="$yyy"
12683                                         fi
12684                                         ;;
12685                                 esac
12686                         done
12687                 done
12688                 : In case none of those worked, prompt the user.
12689                 case "$netdb_host_type" in
12690                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12691                         dflt='char *'
12692                         . ./myread
12693                         netdb_host_type=$ans
12694                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12695                         dflt="$sizetype"
12696                         . ./myread
12697                         netdb_hlen_type=$ans
12698                         ;;
12699                 esac
12700                 ;;
12701         *)      : no gethostbyaddr, so pick harmless defaults
12702                 netdb_host_type='char *'
12703                 netdb_hlen_type="$sizetype"
12704                 ;;
12705         esac
12706         # Remove the "const" if needed. -- but then we'll have a 
12707         # prototype clash!
12708         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12709 fi
12710
12711 : check for type of argument to gethostbyname. 
12712 if test "X$netdb_name_type" = X ; then
12713         case "$d_gethbyname" in
12714         $define)
12715                 $cat <<EOM
12716
12717 Checking to see what type of argument is accepted by gethostbyname().
12718 EOM
12719                 hdrs="$define sys/types.h
12720                         $d_socket sys/socket.h 
12721                         $i_niin netinet/in.h 
12722                         $i_netdb netdb.h
12723                         $i_unistd unistd.h"
12724                 for xxx in "const char *" "char *"; do
12725                         case "$netdb_name_type" in
12726                         '')     try="extern struct hostent *gethostbyname($xxx);"
12727                                 if ./protochk "$try" $hdrs; then
12728                                         echo "Your system accepts $xxx."
12729                                         netdb_name_type="$xxx"
12730                                 fi
12731                                 ;;
12732                         esac
12733                 done
12734                 : In case none of those worked, prompt the user.
12735                 case "$netdb_name_type" in
12736                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12737                         dflt='char *'
12738                         . ./myread
12739                         netdb_name_type=$ans
12740                         ;;
12741                 esac
12742                 ;;
12743         *)      : no gethostbyname, so pick harmless default
12744                 netdb_name_type='char *'
12745                 ;;
12746         esac
12747 fi
12748
12749 : check for type of 1st argument to getnetbyaddr. 
12750 if test "X$netdb_net_type" = X ; then
12751         case "$d_getnbyaddr" in
12752         $define)
12753                 $cat <<EOM
12754
12755 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12756 EOM
12757                 hdrs="$define sys/types.h
12758                         $d_socket sys/socket.h 
12759                         $i_niin netinet/in.h 
12760                         $i_netdb netdb.h
12761                         $i_unistd unistd.h"
12762                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12763                         case "$netdb_net_type" in
12764                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12765                                 if ./protochk "$try" $hdrs; then
12766                                         echo "Your system accepts $xxx."
12767                                         netdb_net_type="$xxx"
12768                                 fi
12769                                 ;;
12770                         esac
12771                 done
12772                 : In case none of those worked, prompt the user.
12773                 case "$netdb_net_type" in
12774                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12775                         dflt='long'
12776                         . ./myread
12777                         netdb_net_type=$ans
12778                         ;;
12779                 esac
12780                 ;;
12781         *)      : no getnetbyaddr, so pick harmless default
12782                 netdb_net_type='long'
12783                 ;;
12784         esac
12785 fi
12786 : locate the preferred pager for this system
12787 case "$pager" in
12788 '')
12789         dflt=''
12790         case "$pg" in
12791         /*) dflt=$pg;;
12792         esac
12793         case "$more" in
12794         /*) dflt=$more;;
12795         esac
12796         case "$less" in
12797         /*) dflt=$less;;
12798         esac
12799         case "$dflt" in
12800         '') dflt=/usr/ucb/more;;
12801         esac
12802         ;;
12803 *) dflt="$pager";;
12804 esac
12805 echo " "
12806 fn=f/
12807 rp='What pager is used on your system?'
12808 . ./getfile
12809 pager="$ans"
12810
12811 : see what type pids are declared as in the kernel
12812 rp="What is the type of process ids on this system?"
12813 set pid_t pidtype int stdio.h sys/types.h
12814 eval $typedef_ask
12815
12816 : check for length of pointer
12817 echo " "
12818 case "$ptrsize" in
12819 '')
12820         $echo $n "Checking to see how big your pointers are...$c" >&4
12821         if test "$voidflags" -gt 7; then
12822                 echo '#define VOID_PTR char *' > try.c
12823         else
12824                 echo '#define VOID_PTR void *' > try.c
12825         fi
12826         $cat >>try.c <<'EOCP'
12827 #include <stdio.h>
12828 int main()
12829 {
12830     printf("%d\n", (int)sizeof(VOID_PTR));
12831     exit(0);
12832 }
12833 EOCP
12834         set try
12835         if eval $compile_ok; then
12836                 ptrsize=`./try`
12837                 $echo " $ptrsize bytes." >&4
12838         else
12839                 dflt='4'
12840                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12841                 rp="What is the size of a pointer (in bytes)?"
12842                 . ./myread
12843                 ptrsize="$ans"
12844         fi
12845         ;;
12846 esac
12847 $rm -f try.c try
12848
12849 : see if ar generates random libraries by itself
12850 echo " "
12851 echo "Checking how to generate random libraries on your machine..." >&4
12852 echo 'int bar1() { return bar2(); }' > bar1.c
12853 echo 'int bar2() { return 2; }' > bar2.c
12854 $cat > foo.c <<'EOP'
12855 int main() { printf("%d\n", bar1()); exit(0); }
12856 EOP
12857 $cc $ccflags -c bar1.c >/dev/null 2>&1
12858 $cc $ccflags -c bar2.c >/dev/null 2>&1
12859 $cc $ccflags -c foo.c >/dev/null 2>&1
12860 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12861 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12862         ./foobar >/dev/null 2>&1; then
12863         echo "$ar appears to generate random libraries itself."
12864         orderlib=false
12865         ranlib=":"
12866 elif $ar ts bar$_a >/dev/null 2>&1 &&
12867         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12868         ./foobar >/dev/null 2>&1; then
12869                 echo "a table of contents needs to be added with '$ar ts'."
12870                 orderlib=false
12871                 ranlib="$ar ts"
12872 else
12873         case "$ranlib" in
12874         :) ranlib='';;
12875         '')
12876                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12877                 $test -f $ranlib || ranlib=''
12878                 ;;
12879         esac
12880         if $test -n "$ranlib"; then
12881                 echo "your system has '$ranlib'; we'll use that."
12882                 orderlib=false
12883         else
12884                 echo "your system doesn't seem to support random libraries"
12885                 echo "so we'll use lorder and tsort to order the libraries."
12886                 orderlib=true
12887                 ranlib=":"
12888         fi
12889 fi
12890 $rm -f foo* bar* 
12891
12892 : check for type of arguments to select. 
12893 case "$selecttype" in
12894 '') case "$d_select" in
12895         $define)
12896                 echo " "
12897                 $cat <<EOM
12898 Checking to see what type of arguments are accepted by select().
12899 EOM
12900                 hdrs="$define sys/types.h
12901                         $i_systime sys/time.h 
12902                         $i_sysselct sys/select.h
12903                         $d_socket sys/socket.h"
12904                 : The first arg can be int, unsigned, or size_t
12905                 : The last arg may or may not be 'const'
12906                 val=''
12907                 : void pointer has been seen but using that
12908                 : breaks the selectminbits test
12909                 for xxx in 'fd_set *' 'int *'; do
12910                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12911                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12912                                         case "$val" in
12913                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12914                                                 if ./protochk "$try" $hdrs; then
12915                                                         echo "Your system accepts $xxx."
12916                                                         val="$xxx"
12917                                                 fi
12918                                                 ;;
12919                                         esac
12920                                 done
12921                         done
12922                 done
12923                 case "$val" in
12924                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12925                         case "$d_fd_set" in
12926                                 $define) dflt="fd_set *" ;;
12927                                 *)              dflt="int *" ;;
12928                         esac
12929                         . ./myread
12930                         val=$ans
12931                         ;;
12932                 esac
12933                 selecttype="$val"
12934                 ;;
12935         *)      : no select, so pick a harmless default
12936                 selecttype='int *'
12937                 ;;
12938         esac
12939         ;;
12940 esac
12941
12942 : check for the select 'width'
12943 case "$selectminbits" in
12944 '') case "$d_select" in
12945         $define)
12946                 $cat <<EOM
12947
12948 Checking to see on how many bits at a time your select() operates...
12949 EOM
12950                 $cat >try.c <<EOCP
12951 #include <sys/types.h>
12952 #$i_time I_TIME
12953 #$i_systime I_SYS_TIME
12954 #$i_systimek I_SYS_TIME_KERNEL
12955 #ifdef I_TIME
12956 #   include <time.h>
12957 #endif
12958 #ifdef I_SYS_TIME
12959 #   ifdef I_SYS_TIME_KERNEL
12960 #       define KERNEL
12961 #   endif
12962 #   include <sys/time.h>
12963 #   ifdef I_SYS_TIME_KERNEL
12964 #       undef KERNEL
12965 #   endif
12966 #endif
12967 #$i_sysselct I_SYS_SELECT
12968 #ifdef I_SYS_SELECT
12969 #include <sys/select.h>
12970 #endif
12971 #$d_socket HAS_SOCKET
12972 #ifdef HAS_SOCKET
12973 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12974 #endif
12975 #include <stdio.h>
12976 $selecttype b;
12977 #define S sizeof(*(b))
12978 #define MINBITS 64
12979 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
12980 #define NBITS  (NBYTES * 8)
12981 int main() {
12982     char s[NBYTES];
12983     struct timeval t;
12984     int i;
12985     FILE* fp;
12986     int fd;
12987
12988     fclose(stdin);
12989     fp = fopen("try.c", "r");
12990     if (fp == 0)
12991       exit(1);
12992     fd = fileno(fp);
12993     if (fd < 0)
12994       exit(2);
12995     b = ($selecttype)s;
12996     for (i = 0; i < NBITS; i++)
12997         FD_SET(i, b);
12998     t.tv_sec  = 0;
12999     t.tv_usec = 0;
13000     select(fd + 1, b, 0, 0, &t);
13001     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13002     printf("%d\n", i + 1);
13003     return 0;
13004 }
13005 EOCP
13006                 set try
13007                 if eval $compile_ok; then
13008                         selectminbits=`./try`
13009                         case "$selectminbits" in
13010                         '')     cat >&4 <<EOM
13011 Cannot figure out on how many bits at a time your select() operates.
13012 I'll play safe and guess it is 32 bits.
13013 EOM
13014                                 selectminbits=32
13015                                 bits="32 bits"
13016                                 ;;
13017                         1)      bits="1 bit" ;;
13018                         *)      bits="$selectminbits bits" ;;
13019                         esac
13020                         echo "Your select() operates on $bits at a time." >&4
13021                 else
13022                         rp='What is the minimum number of bits your select() operates on?'
13023                         case "$byteorder" in
13024                         1234|12345678)  dflt=32 ;;
13025                         *)              dflt=1  ;;
13026                         esac
13027                         . ./myread
13028                         val=$ans
13029                         selectminbits="$val"
13030                 fi
13031                 $rm -f try.* try
13032                 ;;
13033         *)      : no select, so pick a harmless default
13034                 selectminbits='32'
13035                 ;;
13036         esac
13037         ;;
13038 esac
13039
13040 : Trace out the files included by signal.h, then look for SIGxxx names.
13041 : Remove SIGARRAYSIZE used by HPUX.
13042 : Remove SIGSTKSIZE used by Linux.
13043 : Remove SIGSTKSZ used by Posix.
13044 : Remove SIGTYP void lines used by OS2.
13045 : Some cpps, like os390, dont give the file name anywhere
13046 if [ "X$fieldn" = X ]; then
13047         : Just make some guesses.  We check them later.
13048         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13049 else
13050         xxx=`echo '#include <signal.h>' |
13051         $cppstdin $cppminus $cppflags 2>/dev/null |
13052         $grep '^[       ]*#.*include' | 
13053         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13054 fi
13055 : Check this list of files to be sure we have parsed the cpp output ok.
13056 : This will also avoid potentially non-existent files, such 
13057 : as ../foo/bar.h
13058 xxxfiles=''
13059 for xx in $xxx /dev/null ; do
13060         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13061 done
13062 : If we have found no files, at least try signal.h
13063 case "$xxxfiles" in
13064 '')     xxxfiles=`./findhdr signal.h` ;;
13065 esac
13066 xxx=`awk '
13067 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13068         print substr($2, 4, 20)
13069 }
13070 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13071         print substr($3, 4, 20)
13072 }' $xxxfiles`
13073 : Append some common names just in case the awk scan failed.
13074 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13075 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13076 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13077 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13078 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13079
13080 : generate a few handy files for later
13081 $cat > signal.c <<'EOCP'
13082 #include <sys/types.h>
13083 #include <signal.h>
13084 #include <stdio.h>
13085 int main() {
13086
13087 /* Strange style to avoid deeply-nested #if/#else/#endif */
13088 #ifndef NSIG
13089 #  ifdef _NSIG
13090 #    define NSIG (_NSIG)
13091 #  endif
13092 #endif
13093
13094 #ifndef NSIG
13095 #  ifdef SIGMAX
13096 #    define NSIG (SIGMAX+1)
13097 #  endif
13098 #endif
13099
13100 #ifndef NSIG
13101 #  ifdef SIG_MAX
13102 #    define NSIG (SIG_MAX+1)
13103 #  endif
13104 #endif
13105
13106 #ifndef NSIG
13107 #  ifdef MAXSIG
13108 #    define NSIG (MAXSIG+1)
13109 #  endif
13110 #endif
13111
13112 #ifndef NSIG
13113 #  ifdef MAX_SIG
13114 #    define NSIG (MAX_SIG+1)
13115 #  endif
13116 #endif
13117
13118 #ifndef NSIG
13119 #  ifdef SIGARRAYSIZE
13120 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13121 #  endif
13122 #endif
13123
13124 #ifndef NSIG
13125 #  ifdef _sys_nsig
13126 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13127 #  endif
13128 #endif
13129
13130 /* Default to some arbitrary number that's big enough to get most
13131    of the common signals.
13132 */
13133 #ifndef NSIG
13134 #    define NSIG 50
13135 #endif
13136
13137 printf("NSIG %d\n", NSIG);
13138
13139 #ifndef JUST_NSIG
13140
13141 EOCP
13142
13143 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13144 {
13145         printf "#ifdef SIG"; printf $1; printf "\n"
13146         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13147         printf $1; printf ");\n"
13148         printf "#endif\n"
13149 }
13150 END {
13151         printf "#endif /* JUST_NSIG */\n";
13152         printf "exit(0);\n}\n";
13153 }
13154 ' >>signal.c
13155 $cat >signal.awk <<'EOP'
13156 BEGIN { ndups = 0 }
13157 $1 ~ /^NSIG$/ { nsig = $2 }
13158 ($1 !~ /^NSIG$/) && (NF == 2) {
13159     if ($2 > maxsig) { maxsig = $2 }
13160     if (sig_name[$2]) {
13161         dup_name[ndups] = $1
13162         dup_num[ndups] = $2
13163         ndups++ 
13164     }
13165     else {
13166         sig_name[$2] = $1
13167         sig_num[$2] = $2
13168     }
13169 }
13170 END { 
13171     if (nsig == 0) {
13172         nsig = maxsig + 1
13173     }
13174     printf("NSIG %d\n", nsig);
13175     for (n = 1; n < nsig; n++) {
13176         if (sig_name[n]) {
13177             printf("%s %d\n", sig_name[n], sig_num[n])
13178         }
13179         else {
13180             printf("NUM%d %d\n", n, n) 
13181         }
13182     }
13183     for (n = 0; n < ndups; n++) {
13184         printf("%s %d\n", dup_name[n], dup_num[n])
13185     }
13186 }
13187 EOP
13188 $cat >signal_cmd <<EOS
13189 $startsh
13190 if $test -s signal.lst; then
13191     echo "Using your existing signal.lst file"
13192         exit 0
13193 fi
13194 xxx="$xxx"
13195 EOS
13196 $cat >>signal_cmd <<'EOS'
13197
13198 set signal
13199 if eval $compile_ok; then
13200         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13201 else
13202         echo "(I can't seem be able to compile the whole test program)" >&4
13203         echo "(I'll try it in little pieces.)" >&4
13204         set signal -DJUST_NSIG
13205         if eval $compile_ok; then
13206                 ./signal$_exe > signal.nsg
13207                 $cat signal.nsg
13208         else
13209                 echo "I can't seem to figure out how many signals you have." >&4
13210                 echo "Guessing 50." >&4
13211                 echo 'NSIG 50' > signal.nsg
13212         fi
13213         : Now look at all the signal names, one at a time.
13214         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13215                 $cat > signal.c <<EOCP
13216 #include <sys/types.h>
13217 #include <signal.h>
13218 #include <stdio.h>
13219 int main() {
13220 printf("$xx %d\n", SIG${xx});
13221 return 0;
13222 }
13223 EOCP
13224                 set signal
13225                 if eval $compile; then
13226                         echo "SIG${xx} found."
13227                         ./signal$_exe  >> signal.ls1
13228                 else
13229                         echo "SIG${xx} NOT found."
13230                 fi
13231         done
13232         if $test -s signal.ls1; then
13233                 $cat signal.nsg signal.ls1 |
13234                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13235         fi
13236
13237 fi
13238 if $test -s signal.lst; then
13239         :
13240 else
13241         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13242         echo 'kill -l' >signal
13243         set X `csh -f <signal`
13244         $rm -f signal
13245         shift
13246         case $# in
13247         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13248         esac
13249         echo $@ | $tr ' ' $trnl | \
13250             $awk '{ printf "%s %d\n", $1, ++s; }
13251                   END { printf "NSIG %d\n", ++s }' >signal.lst
13252 fi
13253 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13254 EOS
13255 chmod a+x signal_cmd
13256 $eunicefix signal_cmd
13257
13258 : generate list of signal names
13259 echo " "
13260 case "$sig_name_init" in
13261 '') doinit=yes ;;
13262 *)  case "$sig_num_init" in
13263     ''|*,*) doinit=yes ;;
13264     esac ;;
13265 esac
13266 case "$doinit" in
13267 yes)
13268         echo "Generating a list of signal names and numbers..." >&4
13269         . ./signal_cmd
13270         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13271         sig_name=`$awk 'BEGIN { printf "ZERO " }
13272                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13273         sig_num=`$awk  'BEGIN { printf "0 " }
13274                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13275         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13276                              !/^NSIG/   { printf "\"%s\", ", $1 }
13277                              END        { printf "0\n" }' signal.lst`
13278         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13279                              !/^NSIG/   { printf "%d, ", $2}
13280                              END        { printf "0\n"}' signal.lst`
13281         ;;
13282 esac
13283 echo "The following $sig_count signals are available:"
13284 echo " "
13285 echo $sig_name | $awk \
13286 'BEGIN { linelen = 0 }
13287 {
13288         for (i = 1; i <= NF; i++) {
13289                 name = "SIG" $i " "
13290                 linelen = linelen + length(name)
13291                 if (linelen > 70) {
13292                         printf "\n"
13293                         linelen = length(name)
13294                 }
13295                 printf "%s", name
13296         }
13297         printf "\n"
13298 }'
13299 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13300
13301 : see what type is used for signed size_t
13302 set ssize_t ssizetype int stdio.h sys/types.h
13303 eval $typedef
13304 dflt="$ssizetype"
13305 $cat > ssize.c <<EOM
13306 #include <stdio.h>
13307 #include <sys/types.h>
13308 #define Size_t $sizetype
13309 #define SSize_t $dflt
13310 int main()
13311 {
13312         if (sizeof(Size_t) == sizeof(SSize_t))
13313                 printf("$dflt\n");
13314         else if (sizeof(Size_t) == sizeof(int))
13315                 printf("int\n");
13316         else 
13317                 printf("long\n");
13318         exit(0);
13319 }
13320 EOM
13321 echo " "
13322 set ssize
13323 if eval $compile_ok && ./ssize > /dev/null; then
13324         ssizetype=`./ssize`
13325         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13326 else
13327         $cat >&4 <<EOM
13328 Help! I can't compile and run the ssize_t test program: please enlighten me!
13329 (This is probably a misconfiguration in your system or libraries, and
13330 you really ought to fix it.  Still, I'll try anyway.)
13331
13332 I need a type that is the same size as $sizetype, but is guaranteed to
13333 be signed.  Common values are ssize_t, int and long.
13334
13335 EOM
13336         rp="What signed type is the same size as $sizetype?"
13337         . ./myread
13338         ssizetype="$ans"
13339 fi
13340 $rm -f ssize ssize.*
13341
13342 : see what type of char stdio uses.
13343 echo " "
13344 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13345         echo "Your stdio uses unsigned chars." >&4
13346         stdchar="unsigned char"
13347 else
13348         echo "Your stdio uses signed chars." >&4
13349         stdchar="char"
13350 fi
13351
13352 : see if time exists
13353 echo " "
13354 if test "X$d_time" = X -o X"$timetype" = X; then
13355     if set time val -f d_time; eval $csym; $val; then
13356                 echo 'time() found.' >&4
13357                 val="$define"
13358                 rp="What is the type returned by time() on this system?"
13359                 set time_t timetype long stdio.h sys/types.h
13360                 eval $typedef_ask
13361     else
13362                 echo 'time() not found, hope that will do.' >&4
13363                 val="$undef"
13364                 timetype='int';
13365     fi
13366     set d_time
13367     eval $setvar
13368 fi
13369
13370 : see what type uids are declared as in the kernel
13371 echo " "
13372 echo "Looking for the type for user ids returned by getuid()."
13373 set uid_t uidtype xxx stdio.h sys/types.h
13374 eval $typedef
13375 case "$uidtype" in
13376 xxx)
13377         xxx=`./findhdr sys/user.h`
13378         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13379         case $1 in
13380         unsigned) dflt="$1 $2" ;;
13381         *) dflt="$1" ;;
13382         esac
13383         ;;
13384 *) dflt="$uidtype";;
13385 esac
13386 case "$uidtype" in
13387 uid_t)  echo "uid_t found." ;;
13388 *)      rp="What is the type for user ids returned by getuid()?"
13389         . ./myread
13390         uidtype="$ans"
13391         ;;
13392 esac
13393
13394 echo " "
13395 case "$uidtype" in
13396 *_t) zzz="$uidtype"     ;;
13397 *)   zzz="uid"          ;;
13398 esac
13399 echo "Checking the size of $zzz..." >&4 
13400 cat > try.c <<EOCP
13401 #include <sys/types.h>
13402 #include <stdio.h>
13403 int main() {
13404     printf("%d\n", (int)sizeof($uidtype));
13405     exit(0);
13406 }
13407 EOCP
13408 set try
13409 if eval $compile_ok; then
13410         yyy=`./try`
13411         case "$yyy" in
13412         '')     uidsize=4
13413                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13414                 ;;
13415         *)      uidsize=$yyy
13416                 echo "Your $zzz size is $uidsize bytes."
13417                 ;;
13418         esac
13419 else
13420         uidsize=4
13421         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13422 fi
13423
13424 echo " "
13425 case "$uidtype" in
13426 *_t) zzz="$uidtype"     ;;
13427 *)   zzz="uid"          ;;
13428 esac
13429 echo "Checking the sign of $zzz..." >&4
13430 cat > try.c <<EOCP
13431 #include <sys/types.h>
13432 #include <stdio.h>
13433 int main() {
13434         $uidtype foo = -1;
13435         if (foo < 0)
13436                 printf("-1\n");
13437         else
13438                 printf("1\n");
13439 }
13440 EOCP
13441 set try
13442 if eval $compile; then
13443         yyy=`./try`
13444         case "$yyy" in
13445         '')     uidsign=1
13446                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13447                 ;;
13448         *)      uidsign=$yyy
13449                 case "$uidsign" in
13450                  1) echo "Your $zzz is unsigned." ;;
13451                 -1) echo "Your $zzz is signed."   ;;
13452                 esac
13453                 ;;
13454         esac
13455 else
13456         uidsign=1
13457         echo "(I can't compile the test program--guessing unsigned.)" >&4
13458 fi
13459
13460
13461
13462 echo " "
13463 $echo "Checking the format string to be used for uids..." >&4
13464
13465 case "$uidsign" in
13466 -1)     if $test X"$uidsize" = X"$ivsize"; then
13467                 uidformat="$ivdformat"
13468         else
13469                 if $test X"$uidsize" = X"$longsize"; then
13470                         uidformat='"ld"'
13471                 else
13472                         if $test X"$uidsize" = X"$intsize"; then
13473                                 uidformat='"d"'
13474                         else
13475                                 if $test X"$uidsize" = X"$shortsize"; then
13476                                         uidformat='"hd"'
13477                                 fi
13478                         fi
13479                 fi
13480         fi
13481         ;;
13482 *)      if $test X"$uidsize" = X"$uvsize"; then
13483                 uidformat="$uvuformat"
13484         else
13485                 if $test X"$uidsize" = X"$longsize"; then
13486                         uidformat='"lu"'
13487                 else
13488                         if $test X"$uidsize" = X"$intsize"; then
13489                                 uidformat='"u"'
13490                         else
13491                                 if $test X"$uidsize" = X"$shortsize"; then
13492                                         uidformat='"hu"'
13493                                 fi
13494                         fi
13495                 fi
13496         fi
13497         ;;
13498 esac
13499
13500 : see if dbm.h is available
13501 : see if dbmclose exists
13502 set dbmclose d_dbmclose
13503 eval $inlibc
13504
13505 case "$d_dbmclose" in
13506 $define)
13507         set dbm.h i_dbm
13508         eval $inhdr
13509         case "$i_dbm" in
13510         $define)
13511                 val="$undef"
13512                 set i_rpcsvcdbm
13513                 eval $setvar
13514                 ;;
13515         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13516                 eval $inhdr
13517                 ;;
13518         esac
13519         ;;
13520 *)      echo "We won't be including <dbm.h>"
13521         val="$undef"
13522         set i_dbm
13523         eval $setvar
13524         val="$undef"
13525         set i_rpcsvcdbm
13526         eval $setvar
13527         ;;
13528 esac
13529
13530 : see if this is a sys/file.h system
13531 val=''
13532 set sys/file.h val
13533 eval $inhdr
13534
13535 : do we need to include sys/file.h ?
13536 case "$val" in
13537 "$define")
13538         echo " "
13539         if $h_sysfile; then
13540                 val="$define"
13541                 echo "We'll be including <sys/file.h>." >&4
13542         else
13543                 val="$undef"
13544                 echo "We won't be including <sys/file.h>." >&4
13545         fi
13546         ;;
13547 *)
13548         h_sysfile=false
13549         ;;
13550 esac
13551 set i_sysfile
13552 eval $setvar
13553
13554 : see if fcntl.h is there
13555 val=''
13556 set fcntl.h val
13557 eval $inhdr
13558
13559 : see if we can include fcntl.h
13560 case "$val" in
13561 "$define")
13562         echo " "
13563         if $h_fcntl; then
13564                 val="$define"
13565                 echo "We'll be including <fcntl.h>." >&4
13566         else
13567                 val="$undef"
13568                 if $h_sysfile; then
13569         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13570                 else
13571                         echo "We won't be including <fcntl.h>." >&4
13572                 fi
13573         fi
13574         ;;
13575 *)
13576         h_fcntl=false
13577         val="$undef"
13578         ;;
13579 esac
13580 set i_fcntl
13581 eval $setvar
13582
13583 : see if this is a iconv.h system
13584 set iconv.h i_iconv
13585 eval $inhdr
13586
13587 : see if locale.h is available
13588 set locale.h i_locale
13589 eval $inhdr
13590
13591 : see if mach cthreads are available
13592 if test "X$usethreads" = "X$define"; then
13593         set mach/cthreads.h i_machcthr
13594         eval $inhdr
13595 else
13596         i_machcthr="$undef"
13597 fi
13598
13599
13600
13601 : see if this is a math.h system
13602 set math.h i_math
13603 eval $inhdr
13604
13605 : see if this is a mntent.h system
13606 set mntent.h i_mntent
13607 eval $inhdr
13608
13609 : see if ndbm.h is available
13610 set ndbm.h t_ndbm
13611 eval $inhdr
13612 case "$t_ndbm" in
13613 $define)
13614         : see if dbm_open exists
13615         set dbm_open d_dbm_open
13616         eval $inlibc
13617         case "$d_dbm_open" in
13618         $undef)
13619                 t_ndbm="$undef"
13620                 echo "We won't be including <ndbm.h>"
13621                 ;;
13622         esac
13623         ;;
13624 esac
13625 val="$t_ndbm"
13626 set i_ndbm
13627 eval $setvar
13628
13629 : see if net/errno.h is available
13630 val=''
13631 set net/errno.h val
13632 eval $inhdr
13633
13634 : Unfortunately, it causes problems on some systems.  Arrgh.
13635 case "$val" in
13636 $define)
13637         cat > try.c <<'EOM'
13638 #include <stdio.h>
13639 #include <errno.h>
13640 #include <net/errno.h>
13641 int func()
13642 {
13643         return ENOTSOCK;
13644 }
13645 EOM
13646         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13647                 echo "We'll be including <net/errno.h>." >&4
13648         else
13649                 echo "We won't be including <net/errno.h>." >&4
13650                 val="$undef"
13651         fi
13652         $rm -f try.* try
13653         ;;
13654 esac
13655 set i_neterrno
13656 eval $setvar
13657
13658 : see if netinet/tcp.h is available
13659 set netinet/tcp.h i_netinettcp
13660 eval $inhdr
13661
13662 : see if this is a poll.h system
13663 set poll.h i_poll
13664 eval $inhdr
13665
13666 echo " "
13667 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13668 $cat <<'EOSH' > Cppsym.know
13669 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13670 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13671 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13672 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13673 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13674 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13675 bull c cadmus clipper CMU COFF COMPILER_VERSION
13676 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13677 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13678 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13679 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13680 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13681 H3050R H3050RX hbullx20 hcx host_mips
13682 hp200 hp300 hp700 HP700 hp800 hp9000
13683 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13684 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13685 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13686 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13687 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13688 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13689 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13690 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13691 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13692 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13693 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13694 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13695 MATH_HAS_NO_SIDE_EFFECTS
13696 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13697 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13698 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13699 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13700 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13701 NetBSD news1500 news1700 news1800 news1900 news3700
13702 news700 news800 news900 NeXT NLS ns16000 ns32000
13703 ns32016 ns32332 ns32k nsc32000
13704 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13705 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13706 pc532 pdp11 PGC PIC plexus PORTAR posix
13707 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13708 POSIX_C_SOURCE POSIX_SOURCE POWER
13709 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13710 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13711 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13712 sony sony_news sonyrisc sparc sparclite spectrum
13713 stardent stdc STDC_EXT stratos sun sun3 sun386
13714 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13715 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13716 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13717 sysV68 sysV88 Tek4132 Tek4300 titan
13718 tower tower32 tower32_200 tower32_600 tower32_700
13719 tower32_800 tower32_850 tss
13720 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13721 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13722 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13723 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13724 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13725 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13726 z8000
13727 EOSH
13728 # Maybe put other stuff here too.
13729 cat <<EOSH >>Cppsym.know
13730 $osname
13731 EOSH
13732 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13733 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13734 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13735 $rm -f Cppsym.a Cppsym.b
13736 cat <<EOSH > Cppsym
13737 $startsh
13738 if $test \$# -gt 0; then
13739     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13740     if $test -s Cppsym.got; then
13741         $rm -f Cppsym.got
13742         exit 0
13743     fi
13744     $rm -f Cppsym.got
13745     exit 1
13746 else
13747     $tr " " "$trnl" | ./Cppsym.try
13748     exit 0
13749 fi
13750 EOSH
13751 chmod +x Cppsym
13752 $eunicefix Cppsym
13753 cat <<EOSH > Cppsym.try
13754 $startsh
13755 cat <<'EOCP' > try.c
13756 #include <stdio.h>
13757 int main() {
13758 EOCP
13759 $awk \\
13760 EOSH
13761 cat <<'EOSH' >> Cppsym.try
13762 'length($1) > 0 {
13763     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
13764     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
13765     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
13766     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
13767 }'       >> try.c
13768 echo '}' >> try.c
13769 EOSH
13770 cat <<EOSH >> Cppsym.try
13771 cc="$cc"
13772 optimize="$optimize"
13773 ccflags="$ccflags"
13774 ldflags="$ldflags"
13775 libs="$libs"
13776 exe_ext="$exe_ext"
13777 $cc $optimize $ccflags $ldflags -o try$exe_ext try.c $libs && ./try$exe_ext
13778 EOSH
13779 chmod +x Cppsym.try
13780 $eunicefix Cppsym.try
13781 ./Cppsym < Cppsym.know > Cppsym.true
13782 : now check the C compiler for additional symbols
13783 postprocess_cc_v=''
13784 case "$osname" in
13785 aix) postprocess_cc_v="|$tr , ' '" ;;
13786 esac
13787 $cat >ccsym <<EOS
13788 $startsh
13789 $cat >tmp.c <<EOF
13790 extern int foo;
13791 EOF
13792 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13793 do
13794         case "\$i" in
13795         -D*) echo "\$i" | $sed 's/^-D//';;
13796         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13797         esac
13798 done
13799 $rm -f try.c
13800 EOS
13801 postprocess_cc_v=''
13802 chmod +x ccsym
13803 $eunicefix ccsym
13804 ./ccsym > ccsym1.raw
13805 if $test -s ccsym1.raw; then
13806        $sort ccsym1.raw | $uniq >ccsym.raw
13807 else
13808        mv ccsym1.raw ccsym.raw
13809 fi
13810
13811 $awk '/\=/ { print $0; next }
13812         { print $0"=1" }' ccsym.raw >ccsym.list
13813 $awk '/\=/ { print $0; next }
13814         { print $0"=1" }' Cppsym.true >ccsym.true
13815 $comm -13 ccsym.true ccsym.list >ccsym.own
13816 $comm -12 ccsym.true ccsym.list >ccsym.com
13817 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13818 also=''
13819 if $test -z ccsym.raw; then
13820         echo "Your C compiler doesn't seem to define any symbols!" >&4
13821         echo " "
13822         echo "However, your C preprocessor defines the following symbols:"
13823         $cat Cppsym.true
13824         ccsymbols=''
13825         cppsymbols=`$cat Cppsym.true`
13826         cppsymbols=`echo $cppsymbols`
13827         cppccsymbols="$cppsymbols"
13828 else
13829         if $test -s ccsym.com; then
13830                 echo "Your C compiler and pre-processor define these symbols:"
13831                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13832                 also='also '
13833                 symbols='ones'
13834                 cppccsymbols=`$cat ccsym.com`
13835                 cppccsymbols=`echo $cppccsymbols`
13836                 $test "$silent" || sleep 1
13837         fi
13838         if $test -s ccsym.cpp; then
13839                 $test "$also" && echo " "
13840                 echo "Your C pre-processor ${also}defines the following symbols:"
13841                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13842                 also='further '
13843                 cppsymbols=`$cat ccsym.cpp`
13844                 cppsymbols=`echo $cppsymbols`
13845                 $test "$silent" || sleep 1
13846         fi
13847         if $test -s ccsym.own; then
13848                 $test "$also" && echo " "
13849                 echo "Your C compiler ${also}defines the following cpp symbols:"
13850                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13851                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13852                 ccsymbols=`$cat ccsym.own`
13853                 ccsymbols=`echo $ccsymbols`
13854                 $test "$silent" || sleep 1
13855         fi
13856 fi
13857 $rm -f ccsym*
13858
13859 : see if this is a termio system
13860 val="$undef"
13861 val2="$undef"
13862 val3="$undef"
13863 if $test `./findhdr termios.h`; then
13864         set tcsetattr i_termios
13865         eval $inlibc
13866         val3="$i_termios"
13867 fi
13868 echo " "
13869 case "$val3" in
13870 "$define") echo "You have POSIX termios.h... good!" >&4;;
13871 *) if ./Cppsym pyr; then
13872                 case "`/bin/universe`" in
13873                 ucb) if $test `./findhdr sgtty.h`; then
13874                                 val2="$define"
13875                                 echo "<sgtty.h> found." >&4
13876                         else
13877                                 echo "System is pyramid with BSD universe."
13878                                 echo "<sgtty.h> not found--you could have problems." >&4
13879                         fi;;
13880                 *) if $test `./findhdr termio.h`; then
13881                                 val="$define"
13882                                 echo "<termio.h> found." >&4
13883                         else
13884                                 echo "System is pyramid with USG universe."
13885                                 echo "<termio.h> not found--you could have problems." >&4
13886                         fi;;
13887                 esac
13888         elif ./usg; then
13889                 if $test `./findhdr termio.h`; then
13890                         echo "<termio.h> found." >&4
13891                         val="$define"
13892                 elif $test `./findhdr sgtty.h`; then
13893                         echo "<sgtty.h> found." >&4
13894                         val2="$define"
13895                 else
13896 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13897                 fi
13898         else
13899                 if $test `./findhdr sgtty.h`; then
13900                         echo "<sgtty.h> found." >&4
13901                         val2="$define"
13902                 elif $test `./findhdr termio.h`; then
13903                         echo "<termio.h> found." >&4
13904                         val="$define"
13905                 else
13906 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13907                 fi
13908         fi;;
13909 esac
13910 set i_termio; eval $setvar
13911 val=$val2; set i_sgtty; eval $setvar
13912 val=$val3; set i_termios; eval $setvar
13913
13914 : see if this is a shadow.h system
13915 set shadow.h i_shadow
13916 eval $inhdr
13917
13918 : see if this is a socks.h system
13919 set socks.h i_socks
13920 eval $inhdr
13921
13922 : see if stdarg is available
13923 echo " "
13924 if $test `./findhdr stdarg.h`; then
13925         echo "<stdarg.h> found." >&4
13926         valstd="$define"
13927 else
13928         echo "<stdarg.h> NOT found." >&4
13929         valstd="$undef"
13930 fi
13931
13932 : see if varags is available
13933 echo " "
13934 if $test `./findhdr varargs.h`; then
13935         echo "<varargs.h> found." >&4
13936 else
13937         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13938 fi
13939
13940 : set up the varargs testing programs
13941 $cat > varargs.c <<EOP
13942 #ifdef I_STDARG
13943 #include <stdarg.h>
13944 #endif
13945 #ifdef I_VARARGS
13946 #include <varargs.h>
13947 #endif
13948
13949 #ifdef I_STDARG
13950 int f(char *p, ...)
13951 #else
13952 int f(va_alist)
13953 va_dcl
13954 #endif
13955 {
13956         va_list ap;
13957 #ifndef I_STDARG
13958         char *p;
13959 #endif
13960 #ifdef I_STDARG
13961         va_start(ap,p);
13962 #else
13963         va_start(ap);
13964         p = va_arg(ap, char *);
13965 #endif
13966         va_end(ap);
13967 }
13968 EOP
13969 $cat > varargs <<EOP
13970 $startsh
13971 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13972         echo "true"
13973 else
13974         echo "false"
13975 fi
13976 $rm -f varargs$_o
13977 EOP
13978 chmod +x varargs
13979
13980 : now check which varargs header should be included
13981 echo " "
13982 i_varhdr=''
13983 case "$valstd" in
13984 "$define")
13985         if `./varargs I_STDARG`; then
13986                 val='stdarg.h'
13987         elif `./varargs I_VARARGS`; then
13988                 val='varargs.h'
13989         fi
13990         ;;
13991 *)
13992         if `./varargs I_VARARGS`; then
13993                 val='varargs.h'
13994         fi
13995         ;;
13996 esac
13997 case "$val" in
13998 '')
13999 echo "I could not find the definition for va_dcl... You have problems..." >&4
14000         val="$undef"; set i_stdarg; eval $setvar
14001         val="$undef"; set i_varargs; eval $setvar
14002         ;;
14003 *) 
14004         set i_varhdr
14005         eval $setvar
14006         case "$i_varhdr" in
14007         stdarg.h)
14008                 val="$define"; set i_stdarg; eval $setvar
14009                 val="$undef"; set i_varargs; eval $setvar
14010                 ;;
14011         varargs.h)
14012                 val="$undef"; set i_stdarg; eval $setvar
14013                 val="$define"; set i_varargs; eval $setvar
14014                 ;;
14015         esac
14016         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14017 esac
14018 $rm -f varargs*
14019
14020 : see if stddef is available
14021 set stddef.h i_stddef
14022 eval $inhdr
14023
14024 : see if sys/access.h is available
14025 set sys/access.h i_sysaccess
14026 eval $inhdr
14027
14028 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14029 set sys/filio.h i_sysfilio
14030 eval $inhdr
14031 echo " "
14032 if $test `./findhdr sys/ioctl.h`; then
14033         val="$define"
14034         echo '<sys/ioctl.h> found.' >&4
14035 else
14036         val="$undef"
14037         if $test $i_sysfilio = "$define"; then
14038             echo '<sys/ioctl.h> NOT found.' >&4
14039         else
14040                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14041                 $test $i_termio = "$define" && xxx="termio.h"
14042                 $test $i_termios = "$define" && xxx="termios.h"
14043 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14044         fi
14045 fi
14046 set i_sysioctl
14047 eval $setvar
14048
14049 : see if sys/resource.h has to be included
14050 set sys/resource.h i_sysresrc
14051 eval $inhdr
14052
14053 : see if sys/security.h is available
14054 set sys/security.h i_syssecrt
14055 eval $inhdr
14056
14057 : see if this is a sys/statvfs.h system
14058 set sys/statvfs.h i_sysstatvfs
14059 eval $inhdr
14060
14061 : see if this is a sys/uio.h system
14062 set sys/uio.h i_sysuio
14063 eval $inhdr
14064
14065 : see if this is a sys/un.h system
14066 set sys/un.h i_sysun
14067 eval $inhdr
14068
14069 : see if this is a syswait system
14070 set sys/wait.h i_syswait
14071 eval $inhdr
14072
14073 : see if this is a ustat.h system
14074 set ustat.h i_ustat
14075 eval $inhdr
14076
14077 : see if this is an utime system
14078 set utime.h i_utime
14079 eval $inhdr
14080
14081 : see if this is a values.h system
14082 set values.h i_values
14083 eval $inhdr
14084
14085 : see if this is a vfork system
14086 case "$d_vfork" in
14087 "$define")
14088         set vfork.h i_vfork
14089         eval $inhdr
14090         ;;
14091 *)
14092         i_vfork="$undef"
14093         ;;
14094 esac
14095
14096 : see if gdbm.h is available
14097 set gdbm.h t_gdbm
14098 eval $inhdr
14099 case "$t_gdbm" in
14100 $define)
14101         : see if gdbm_open exists
14102         set gdbm_open d_gdbm_open
14103         eval $inlibc
14104         case "$d_gdbm_open" in
14105         $undef)
14106                 t_gdbm="$undef"
14107                 echo "We won't be including <gdbm.h>"
14108                 ;;
14109         esac
14110         ;;
14111 esac
14112 val="$t_gdbm"
14113 set i_gdbm
14114 eval $setvar
14115
14116 echo " "
14117 echo "Looking for extensions..." >&4
14118 : If we are using the old config.sh, known_extensions may contain
14119 : old or inaccurate or duplicate values.
14120 known_extensions=''
14121 nonxs_extensions=''
14122 : We do not use find because it might not be available.
14123 : We do not just use MANIFEST because the user may have dropped
14124 : some additional extensions into the source tree and expect them
14125 : to be built.
14126
14127 : Function to recursively find available extensions, ignoring DynaLoader
14128 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14129 find_extensions='
14130     for xxx in *; do
14131        case "$xxx" in
14132            DynaLoader|dynaload) ;;
14133            *)
14134            if $test -f $xxx/$xxx.xs; then
14135                known_extensions="$known_extensions $1$xxx";
14136            elif $test -f $xxx/Makefile.PL; then
14137                nonxs_extensions="$nonxs_extensions $1$xxx";
14138            else
14139                if $test -d $xxx -a $# -lt 10; then
14140                    set $1$xxx/ $*;
14141                    cd $xxx;
14142                    eval $find_extensions;
14143                    cd ..;
14144                    shift;
14145                fi;
14146            fi
14147            ;;
14148        esac;
14149     done'
14150 tdir=`pwd`
14151 cd $rsrc/ext
14152 set X
14153 shift
14154 eval $find_extensions
14155 set X $nonxs_extensions
14156 shift
14157 nonxs_extensions="$*"
14158 set X $known_extensions
14159 shift
14160 known_extensions="$*"
14161 cd $tdir
14162
14163 : Now see which are supported on this system.
14164 avail_ext=''
14165 for xxx in $known_extensions ; do
14166         case "$xxx" in
14167         DB_File|db_file)
14168                 case "$i_db" in
14169                 $define) avail_ext="$avail_ext $xxx" ;;
14170                 esac
14171                 ;;
14172         GDBM_File|gdbm_fil)
14173                 case "$i_gdbm" in 
14174                 $define) avail_ext="$avail_ext $xxx" ;;
14175                 esac
14176                 ;;
14177         NDBM_File|ndbm_fil)
14178                 case "$i_ndbm" in
14179                 $define) avail_ext="$avail_ext $xxx" ;;
14180                 esac
14181                 ;;
14182         ODBM_File|odbm_fil) 
14183                 case "${i_dbm}${i_rpcsvcdbm}" in
14184                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14185                 esac
14186                 ;;
14187         POSIX|posix)
14188                 case "$useposix" in
14189                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14190                 esac
14191                 ;;
14192         Opcode|opcode)
14193                 case "$useopcode" in
14194                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14195                 esac
14196                 ;;
14197         Socket|socket)
14198                 case "$d_socket" in 
14199                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14200                 esac
14201                 ;;
14202         Thread|thread)
14203                 case "$usethreads" in 
14204                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14205                 esac
14206                 ;;
14207         IPC/SysV|ipc/sysv)
14208                 : XXX Do we need a useipcsysv variable here
14209                 case "${d_msg}${d_sem}${d_shm}" in 
14210                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14211                 esac
14212                 ;;
14213         *)      avail_ext="$avail_ext $xxx"
14214                 ;;
14215         esac
14216 done
14217
14218 set X $avail_ext
14219 shift
14220 avail_ext="$*"
14221
14222 : Now see which nonxs extensions are supported on this system.
14223 : For now assume all are.
14224 nonxs_ext=''
14225 for xxx in $nonxs_extensions ; do
14226         case "$xxx" in
14227         *)      nonxs_ext="$nonxs_ext $xxx"
14228                 ;;
14229         esac
14230 done
14231
14232 set X $nonxs_ext
14233 shift
14234 nonxs_ext="$*"
14235
14236 case $usedl in
14237 $define)
14238         $cat <<EOM
14239 A number of extensions are supplied with $package.  You may choose to
14240 compile these extensions for dynamic loading (the default), compile
14241 them into the $package executable (static loading), or not include
14242 them at all.  Answer "none" to include no extensions.
14243 Note that DynaLoader is always built and need not be mentioned here.
14244
14245 EOM
14246         case "$dynamic_ext" in
14247         '') dflt="$avail_ext" ;;
14248         *)      dflt="$dynamic_ext"
14249                 # Perhaps we are reusing an old out-of-date config.sh.
14250                 case "$hint" in
14251                 previous)
14252                         if test X"$dynamic_ext" != X"$avail_ext"; then
14253                                 $cat <<EOM
14254 NOTICE:  Your previous config.sh list may be incorrect. 
14255 The extensions now available to you are 
14256         ${avail_ext}
14257 but the default list from your previous config.sh is
14258         ${dynamic_ext} 
14259
14260 EOM
14261                         fi
14262                         ;;
14263                 esac
14264                 ;;
14265         esac
14266         case "$dflt" in
14267         '')     dflt=none;;
14268         esac
14269         rp="What extensions do you wish to load dynamically?"
14270         . ./myread
14271         case "$ans" in
14272         none) dynamic_ext=' ' ;;
14273         *) dynamic_ext="$ans" ;;
14274         esac
14275
14276         case "$static_ext" in
14277         '')
14278                 : Exclude those already listed in dynamic linking
14279                 dflt=''
14280                 for xxx in $avail_ext; do
14281                         case " $dynamic_ext " in
14282                         *" $xxx "*) ;;
14283                         *) dflt="$dflt $xxx" ;;
14284                         esac
14285                 done
14286                 set X $dflt
14287                 shift
14288                 dflt="$*"
14289                 ;;
14290         *)  dflt="$static_ext" 
14291                 ;;
14292         esac
14293
14294         case "$dflt" in
14295         '')     dflt=none;;
14296         esac
14297         rp="What extensions do you wish to load statically?"
14298         . ./myread
14299         case "$ans" in
14300         none) static_ext=' ' ;;
14301         *) static_ext="$ans" ;;
14302         esac
14303         ;;
14304 *)
14305         $cat <<EOM
14306 A number of extensions are supplied with $package.  Answer "none" 
14307 to include no extensions. 
14308 Note that DynaLoader is always built and need not be mentioned here.
14309
14310 EOM
14311         case "$static_ext" in
14312         '') dflt="$avail_ext" ;;
14313         *)      dflt="$static_ext"
14314                 # Perhaps we are reusing an old out-of-date config.sh.
14315                 case "$hint" in
14316                 previous)
14317                         if test X"$static_ext" != X"$avail_ext"; then
14318                                 $cat <<EOM
14319 NOTICE:  Your previous config.sh list may be incorrect. 
14320 The extensions now available to you are 
14321         ${avail_ext}
14322 but the default list from your previous config.sh is
14323         ${static_ext} 
14324
14325 EOM
14326                         fi
14327                         ;;
14328                 esac
14329                 ;;
14330         esac
14331         : Exclude those that are not xs extensions
14332         case "$dflt" in
14333         '')     dflt=none;;
14334         esac
14335         rp="What extensions do you wish to include?"
14336         . ./myread
14337         case "$ans" in
14338         none) static_ext=' ' ;;
14339         *) static_ext="$ans" ;;
14340         esac
14341         ;;
14342 esac
14343
14344 set X $dynamic_ext $static_ext $nonxs_ext
14345 shift
14346 extensions="$*"
14347
14348 : Remove build directory name from cppstdin so it can be used from
14349 : either the present location or the final installed location.
14350 echo " "
14351 : Get out of the UU directory to get correct path name.
14352 cd ..
14353 case "$cppstdin" in
14354 `pwd`/cppstdin)
14355         echo "Stripping down cppstdin path name"
14356         cppstdin=cppstdin
14357         ;;
14358 esac
14359 cd UU
14360
14361 : end of configuration questions
14362 echo " "
14363 echo "End of configuration questions."
14364 echo " "
14365
14366 : back to where it started
14367 if test -d ../UU; then
14368         cd ..
14369 fi
14370
14371 : configuration may be patched via a 'config.over' file
14372 if $test -f config.over; then
14373         echo " "
14374         dflt=y
14375         rp='I see a config.over file.  Do you wish to load it?'
14376         . UU/myread
14377         case "$ans" in
14378         n*) echo "OK, I'll ignore it.";;
14379         *)      . ./config.over
14380                 echo "Configuration override changes have been loaded."
14381                 ;;
14382         esac
14383 fi
14384
14385 : in case they want portability, strip down executable paths
14386 case "$d_portable" in
14387 "$define")
14388         echo " "
14389         echo "Stripping down executable paths..." >&4
14390         for file in $loclist $trylist; do
14391                 eval temp=\$$file
14392                 eval $file=`basename $temp`
14393         done
14394         ;;
14395 esac
14396
14397 : create config.sh file
14398 echo " "
14399 echo "Creating config.sh..." >&4
14400 $spitshell <<EOT >config.sh
14401 $startsh
14402 #
14403 # This file was produced by running the Configure script. It holds all the
14404 # definitions figured out by Configure. Should you modify one of these values,
14405 # do not forget to propagate your changes by running "Configure -der". You may
14406 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14407 #
14408
14409 # Package name      : $package
14410 # Source directory  : $src
14411 # Configuration time: $cf_time
14412 # Configured by     : $cf_by
14413 # Target system     : $myuname
14414
14415 Author='$Author'
14416 Date='$Date'
14417 Header='$Header'
14418 Id='$Id'
14419 Locker='$Locker'
14420 Log='$Log'
14421 Mcc='$Mcc'
14422 RCSfile='$RCSfile'
14423 Revision='$Revision'
14424 Source='$Source'
14425 State='$State'
14426 _a='$_a'
14427 _exe='$_exe'
14428 _o='$_o'
14429 afs='$afs'
14430 alignbytes='$alignbytes'
14431 ansi2knr='$ansi2knr'
14432 aphostname='$aphostname'
14433 api_revision='$api_revision'
14434 api_subversion='$api_subversion'
14435 api_version='$api_version'
14436 api_versionstring='$api_versionstring'
14437 ar='$ar'
14438 archlib='$archlib'
14439 archlibexp='$archlibexp'
14440 archname64='$archname64'
14441 archname='$archname'
14442 archobjs='$archobjs'
14443 awk='$awk'
14444 baserev='$baserev'
14445 bash='$bash'
14446 bin='$bin'
14447 bincompat5005='$bincompat5005'
14448 binexp='$binexp'
14449 bison='$bison'
14450 byacc='$byacc'
14451 byteorder='$byteorder'
14452 c='$c'
14453 castflags='$castflags'
14454 cat='$cat'
14455 cc='$cc'
14456 cccdlflags='$cccdlflags'
14457 ccdlflags='$ccdlflags'
14458 ccflags='$ccflags'
14459 ccsymbols='$ccsymbols'
14460 cf_by='$cf_by'
14461 cf_email='$cf_email'
14462 cf_time='$cf_time'
14463 charsize='$charsize'
14464 chgrp='$chgrp'
14465 chmod='$chmod'
14466 chown='$chown'
14467 clocktype='$clocktype'
14468 comm='$comm'
14469 compress='$compress'
14470 contains='$contains'
14471 cp='$cp'
14472 cpio='$cpio'
14473 cpp='$cpp'
14474 cpp_stuff='$cpp_stuff'
14475 cppccsymbols='$cppccsymbols'
14476 cppflags='$cppflags'
14477 cpplast='$cpplast'
14478 cppminus='$cppminus'
14479 cpprun='$cpprun'
14480 cppstdin='$cppstdin'
14481 cppsymbols='$cppsymbols'
14482 crosscompile='$crosscompile'
14483 cryptlib='$cryptlib'
14484 csh='$csh'
14485 d_Gconvert='$d_Gconvert'
14486 d_PRIEldbl='$d_PRIEldbl'
14487 d_PRIFldbl='$d_PRIFldbl'
14488 d_PRIGldbl='$d_PRIGldbl'
14489 d_PRIX64='$d_PRIX64'
14490 d_PRId64='$d_PRId64'
14491 d_PRIeldbl='$d_PRIeldbl'
14492 d_PRIfldbl='$d_PRIfldbl'
14493 d_PRIgldbl='$d_PRIgldbl'
14494 d_PRIi64='$d_PRIi64'
14495 d_PRIo64='$d_PRIo64'
14496 d_PRIu64='$d_PRIu64'
14497 d_PRIx64='$d_PRIx64'
14498 d_access='$d_access'
14499 d_accessx='$d_accessx'
14500 d_alarm='$d_alarm'
14501 d_archlib='$d_archlib'
14502 d_atolf='$d_atolf'
14503 d_atoll='$d_atoll'
14504 d_attribut='$d_attribut'
14505 d_bcmp='$d_bcmp'
14506 d_bcopy='$d_bcopy'
14507 d_bincompat5005='$d_bincompat5005'
14508 d_bsd='$d_bsd'
14509 d_bsdgetpgrp='$d_bsdgetpgrp'
14510 d_bsdsetpgrp='$d_bsdsetpgrp'
14511 d_bzero='$d_bzero'
14512 d_casti32='$d_casti32'
14513 d_castneg='$d_castneg'
14514 d_charvspr='$d_charvspr'
14515 d_chown='$d_chown'
14516 d_chroot='$d_chroot'
14517 d_chsize='$d_chsize'
14518 d_closedir='$d_closedir'
14519 d_const='$d_const'
14520 d_crypt='$d_crypt'
14521 d_csh='$d_csh'
14522 d_cuserid='$d_cuserid'
14523 d_dbl_dig='$d_dbl_dig'
14524 d_difftime='$d_difftime'
14525 d_dirnamlen='$d_dirnamlen'
14526 d_dlerror='$d_dlerror'
14527 d_dlopen='$d_dlopen'
14528 d_dlsymun='$d_dlsymun'
14529 d_dosuid='$d_dosuid'
14530 d_drand48proto='$d_drand48proto'
14531 d_dup2='$d_dup2'
14532 d_eaccess='$d_eaccess'
14533 d_endgrent='$d_endgrent'
14534 d_endhent='$d_endhent'
14535 d_endnent='$d_endnent'
14536 d_endpent='$d_endpent'
14537 d_endpwent='$d_endpwent'
14538 d_endsent='$d_endsent'
14539 d_endspent='$d_endspent'
14540 d_eofnblk='$d_eofnblk'
14541 d_eunice='$d_eunice'
14542 d_fchmod='$d_fchmod'
14543 d_fchown='$d_fchown'
14544 d_fcntl='$d_fcntl'
14545 d_fd_macros='$d_fd_macros'
14546 d_fd_set='$d_fd_set'
14547 d_fds_bits='$d_fds_bits'
14548 d_fgetpos='$d_fgetpos'
14549 d_flexfnam='$d_flexfnam'
14550 d_flock='$d_flock'
14551 d_fork='$d_fork'
14552 d_fpathconf='$d_fpathconf'
14553 d_fpos64_t='$d_fpos64_t'
14554 d_fs_data_s='$d_fs_data_s'
14555 d_fseeko='$d_fseeko'
14556 d_fsetpos='$d_fsetpos'
14557 d_fstatfs='$d_fstatfs'
14558 d_fstatvfs='$d_fstatvfs'
14559 d_ftello='$d_ftello'
14560 d_ftime='$d_ftime'
14561 d_getgrent='$d_getgrent'
14562 d_getgrps='$d_getgrps'
14563 d_gethbyaddr='$d_gethbyaddr'
14564 d_gethbyname='$d_gethbyname'
14565 d_gethent='$d_gethent'
14566 d_gethname='$d_gethname'
14567 d_gethostprotos='$d_gethostprotos'
14568 d_getlogin='$d_getlogin'
14569 d_getmnt='$d_getmnt'
14570 d_getmntent='$d_getmntent'
14571 d_getnbyaddr='$d_getnbyaddr'
14572 d_getnbyname='$d_getnbyname'
14573 d_getnent='$d_getnent'
14574 d_getnetprotos='$d_getnetprotos'
14575 d_getpbyname='$d_getpbyname'
14576 d_getpbynumber='$d_getpbynumber'
14577 d_getpent='$d_getpent'
14578 d_getpgid='$d_getpgid'
14579 d_getpgrp2='$d_getpgrp2'
14580 d_getpgrp='$d_getpgrp'
14581 d_getppid='$d_getppid'
14582 d_getprior='$d_getprior'
14583 d_getprotoprotos='$d_getprotoprotos'
14584 d_getpwent='$d_getpwent'
14585 d_getsbyname='$d_getsbyname'
14586 d_getsbyport='$d_getsbyport'
14587 d_getsent='$d_getsent'
14588 d_getservprotos='$d_getservprotos'
14589 d_getspent='$d_getspent'
14590 d_getspnam='$d_getspnam'
14591 d_gettimeod='$d_gettimeod'
14592 d_gnulibc='$d_gnulibc'
14593 d_grpasswd='$d_grpasswd'
14594 d_hasmntopt='$d_hasmntopt'
14595 d_htonl='$d_htonl'
14596 d_iconv='$d_iconv'
14597 d_index='$d_index'
14598 d_inetaton='$d_inetaton'
14599 d_int64t='$d_int64t'
14600 d_isascii='$d_isascii'
14601 d_killpg='$d_killpg'
14602 d_lchown='$d_lchown'
14603 d_ldbl_dig='$d_ldbl_dig'
14604 d_link='$d_link'
14605 d_locconv='$d_locconv'
14606 d_lockf='$d_lockf'
14607 d_longdbl='$d_longdbl'
14608 d_longlong='$d_longlong'
14609 d_lstat='$d_lstat'
14610 d_mblen='$d_mblen'
14611 d_mbstowcs='$d_mbstowcs'
14612 d_mbtowc='$d_mbtowc'
14613 d_memchr='$d_memchr'
14614 d_memcmp='$d_memcmp'
14615 d_memcpy='$d_memcpy'
14616 d_memmove='$d_memmove'
14617 d_memset='$d_memset'
14618 d_mkdir='$d_mkdir'
14619 d_mkfifo='$d_mkfifo'
14620 d_mktime='$d_mktime'
14621 d_msg='$d_msg'
14622 d_msg_ctrunc='$d_msg_ctrunc'
14623 d_msg_dontroute='$d_msg_dontroute'
14624 d_msg_oob='$d_msg_oob'
14625 d_msg_peek='$d_msg_peek'
14626 d_msg_proxy='$d_msg_proxy'
14627 d_msgctl='$d_msgctl'
14628 d_msgget='$d_msgget'
14629 d_msgrcv='$d_msgrcv'
14630 d_msgsnd='$d_msgsnd'
14631 d_mymalloc='$d_mymalloc'
14632 d_nice='$d_nice'
14633 d_nv_preserves_uv='$d_nv_preserves_uv'
14634 d_off64_t='$d_off64_t'
14635 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14636 d_oldpthreads='$d_oldpthreads'
14637 d_oldsock='$d_oldsock'
14638 d_open3='$d_open3'
14639 d_pathconf='$d_pathconf'
14640 d_pause='$d_pause'
14641 d_phostname='$d_phostname'
14642 d_pipe='$d_pipe'
14643 d_poll='$d_poll'
14644 d_portable='$d_portable'
14645 d_pthread_yield='$d_pthread_yield'
14646 d_pwage='$d_pwage'
14647 d_pwchange='$d_pwchange'
14648 d_pwclass='$d_pwclass'
14649 d_pwcomment='$d_pwcomment'
14650 d_pwexpire='$d_pwexpire'
14651 d_pwgecos='$d_pwgecos'
14652 d_pwpasswd='$d_pwpasswd'
14653 d_pwquota='$d_pwquota'
14654 d_quad='$d_quad'
14655 d_readdir='$d_readdir'
14656 d_readlink='$d_readlink'
14657 d_rename='$d_rename'
14658 d_rewinddir='$d_rewinddir'
14659 d_rmdir='$d_rmdir'
14660 d_safebcpy='$d_safebcpy'
14661 d_safemcpy='$d_safemcpy'
14662 d_sanemcmp='$d_sanemcmp'
14663 d_sched_yield='$d_sched_yield'
14664 d_scm_rights='$d_scm_rights'
14665 d_seekdir='$d_seekdir'
14666 d_select='$d_select'
14667 d_sem='$d_sem'
14668 d_semctl='$d_semctl'
14669 d_semctl_semid_ds='$d_semctl_semid_ds'
14670 d_semctl_semun='$d_semctl_semun'
14671 d_semget='$d_semget'
14672 d_semop='$d_semop'
14673 d_setegid='$d_setegid'
14674 d_seteuid='$d_seteuid'
14675 d_setgrent='$d_setgrent'
14676 d_setgrps='$d_setgrps'
14677 d_sethent='$d_sethent'
14678 d_setlinebuf='$d_setlinebuf'
14679 d_setlocale='$d_setlocale'
14680 d_setnent='$d_setnent'
14681 d_setpent='$d_setpent'
14682 d_setpgid='$d_setpgid'
14683 d_setpgrp2='$d_setpgrp2'
14684 d_setpgrp='$d_setpgrp'
14685 d_setprior='$d_setprior'
14686 d_setpwent='$d_setpwent'
14687 d_setregid='$d_setregid'
14688 d_setresgid='$d_setresgid'
14689 d_setresuid='$d_setresuid'
14690 d_setreuid='$d_setreuid'
14691 d_setrgid='$d_setrgid'
14692 d_setruid='$d_setruid'
14693 d_setsent='$d_setsent'
14694 d_setsid='$d_setsid'
14695 d_setspent='$d_setspent'
14696 d_setvbuf='$d_setvbuf'
14697 d_sfio='$d_sfio'
14698 d_shm='$d_shm'
14699 d_shmat='$d_shmat'
14700 d_shmatprototype='$d_shmatprototype'
14701 d_shmctl='$d_shmctl'
14702 d_shmdt='$d_shmdt'
14703 d_shmget='$d_shmget'
14704 d_sigaction='$d_sigaction'
14705 d_sigsetjmp='$d_sigsetjmp'
14706 d_socket='$d_socket'
14707 d_sockpair='$d_sockpair'
14708 d_sqrtl='$d_sqrtl'
14709 d_statblks='$d_statblks'
14710 d_statfs_f_flags='$d_statfs_f_flags'
14711 d_statfs_s='$d_statfs_s'
14712 d_statvfs='$d_statvfs'
14713 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14714 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14715 d_stdio_stream_array='$d_stdio_stream_array'
14716 d_stdiobase='$d_stdiobase'
14717 d_stdstdio='$d_stdstdio'
14718 d_strchr='$d_strchr'
14719 d_strcoll='$d_strcoll'
14720 d_strctcpy='$d_strctcpy'
14721 d_strerrm='$d_strerrm'
14722 d_strerror='$d_strerror'
14723 d_strtod='$d_strtod'
14724 d_strtol='$d_strtol'
14725 d_strtold='$d_strtold'
14726 d_strtoll='$d_strtoll'
14727 d_strtoul='$d_strtoul'
14728 d_strtoull='$d_strtoull'
14729 d_strtouq='$d_strtouq'
14730 d_strxfrm='$d_strxfrm'
14731 d_suidsafe='$d_suidsafe'
14732 d_symlink='$d_symlink'
14733 d_syscall='$d_syscall'
14734 d_sysconf='$d_sysconf'
14735 d_sysernlst='$d_sysernlst'
14736 d_syserrlst='$d_syserrlst'
14737 d_system='$d_system'
14738 d_tcgetpgrp='$d_tcgetpgrp'
14739 d_tcsetpgrp='$d_tcsetpgrp'
14740 d_telldir='$d_telldir'
14741 d_telldirproto='$d_telldirproto'
14742 d_time='$d_time'
14743 d_times='$d_times'
14744 d_truncate='$d_truncate'
14745 d_tzname='$d_tzname'
14746 d_umask='$d_umask'
14747 d_uname='$d_uname'
14748 d_union_semun='$d_union_semun'
14749 d_ustat='$d_ustat'
14750 d_vendorbin='$d_vendorbin'
14751 d_vendorlib='$d_vendorlib'
14752 d_vfork='$d_vfork'
14753 d_void_closedir='$d_void_closedir'
14754 d_voidsig='$d_voidsig'
14755 d_voidtty='$d_voidtty'
14756 d_volatile='$d_volatile'
14757 d_vprintf='$d_vprintf'
14758 d_wait4='$d_wait4'
14759 d_waitpid='$d_waitpid'
14760 d_wcstombs='$d_wcstombs'
14761 d_wctomb='$d_wctomb'
14762 d_xenix='$d_xenix'
14763 date='$date'
14764 db_hashtype='$db_hashtype'
14765 db_prefixtype='$db_prefixtype'
14766 defvoidused='$defvoidused'
14767 direntrytype='$direntrytype'
14768 dlext='$dlext'
14769 dlsrc='$dlsrc'
14770 doublesize='$doublesize'
14771 drand01='$drand01'
14772 dynamic_ext='$dynamic_ext'
14773 eagain='$eagain'
14774 ebcdic='$ebcdic'
14775 echo='$echo'
14776 egrep='$egrep'
14777 emacs='$emacs'
14778 eunicefix='$eunicefix'
14779 exe_ext='$exe_ext'
14780 expr='$expr'
14781 extensions='$extensions'
14782 fflushNULL='$fflushNULL'
14783 fflushall='$fflushall'
14784 find='$find'
14785 firstmakefile='$firstmakefile'
14786 flex='$flex'
14787 fpossize='$fpossize'
14788 fpostype='$fpostype'
14789 freetype='$freetype'
14790 full_ar='$full_ar'
14791 full_csh='$full_csh'
14792 full_sed='$full_sed'
14793 gccversion='$gccversion'
14794 gidformat='$gidformat'
14795 gidsign='$gidsign'
14796 gidsize='$gidsize'
14797 gidtype='$gidtype'
14798 glibpth='$glibpth'
14799 grep='$grep'
14800 groupcat='$groupcat'
14801 groupstype='$groupstype'
14802 gzip='$gzip'
14803 h_fcntl='$h_fcntl'
14804 h_sysfile='$h_sysfile'
14805 hint='$hint'
14806 hostcat='$hostcat'
14807 huge='$huge'
14808 i16size='$i16size'
14809 i16type='$i16type'
14810 i32size='$i32size'
14811 i32type='$i32type'
14812 i64size='$i64size'
14813 i64type='$i64type'
14814 i8size='$i8size'
14815 i8type='$i8type'
14816 i_arpainet='$i_arpainet'
14817 i_bsdioctl='$i_bsdioctl'
14818 i_db='$i_db'
14819 i_dbm='$i_dbm'
14820 i_dirent='$i_dirent'
14821 i_dld='$i_dld'
14822 i_dlfcn='$i_dlfcn'
14823 i_fcntl='$i_fcntl'
14824 i_float='$i_float'
14825 i_gdbm='$i_gdbm'
14826 i_grp='$i_grp'
14827 i_iconv='$i_iconv'
14828 i_inttypes='$i_inttypes'
14829 i_limits='$i_limits'
14830 i_locale='$i_locale'
14831 i_machcthr='$i_machcthr'
14832 i_malloc='$i_malloc'
14833 i_math='$i_math'
14834 i_memory='$i_memory'
14835 i_mntent='$i_mntent'
14836 i_ndbm='$i_ndbm'
14837 i_netdb='$i_netdb'
14838 i_neterrno='$i_neterrno'
14839 i_netinettcp='$i_netinettcp'
14840 i_niin='$i_niin'
14841 i_poll='$i_poll'
14842 i_pthread='$i_pthread'
14843 i_pwd='$i_pwd'
14844 i_rpcsvcdbm='$i_rpcsvcdbm'
14845 i_sfio='$i_sfio'
14846 i_sgtty='$i_sgtty'
14847 i_shadow='$i_shadow'
14848 i_socks='$i_socks'
14849 i_stdarg='$i_stdarg'
14850 i_stddef='$i_stddef'
14851 i_stdlib='$i_stdlib'
14852 i_string='$i_string'
14853 i_sysaccess='$i_sysaccess'
14854 i_sysdir='$i_sysdir'
14855 i_sysfile='$i_sysfile'
14856 i_sysfilio='$i_sysfilio'
14857 i_sysin='$i_sysin'
14858 i_sysioctl='$i_sysioctl'
14859 i_sysmount='$i_sysmount'
14860 i_sysndir='$i_sysndir'
14861 i_sysparam='$i_sysparam'
14862 i_sysresrc='$i_sysresrc'
14863 i_syssecrt='$i_syssecrt'
14864 i_sysselct='$i_sysselct'
14865 i_syssockio='$i_syssockio'
14866 i_sysstat='$i_sysstat'
14867 i_sysstatfs='$i_sysstatfs'
14868 i_sysstatvfs='$i_sysstatvfs'
14869 i_systime='$i_systime'
14870 i_systimek='$i_systimek'
14871 i_systimes='$i_systimes'
14872 i_systypes='$i_systypes'
14873 i_sysuio='$i_sysuio'
14874 i_sysun='$i_sysun'
14875 i_sysvfs='$i_sysvfs'
14876 i_syswait='$i_syswait'
14877 i_termio='$i_termio'
14878 i_termios='$i_termios'
14879 i_time='$i_time'
14880 i_unistd='$i_unistd'
14881 i_ustat='$i_ustat'
14882 i_utime='$i_utime'
14883 i_values='$i_values'
14884 i_varargs='$i_varargs'
14885 i_varhdr='$i_varhdr'
14886 i_vfork='$i_vfork'
14887 ignore_versioned_solibs='$ignore_versioned_solibs'
14888 inc_version_list='$inc_version_list'
14889 inc_version_list_init='$inc_version_list_init'
14890 incpath='$incpath'
14891 inews='$inews'
14892 installarchlib='$installarchlib'
14893 installbin='$installbin'
14894 installman1dir='$installman1dir'
14895 installman3dir='$installman3dir'
14896 installprefix='$installprefix'
14897 installprefixexp='$installprefixexp'
14898 installprivlib='$installprivlib'
14899 installscript='$installscript'
14900 installsitearch='$installsitearch'
14901 installsitebin='$installsitebin'
14902 installsitelib='$installsitelib'
14903 installstyle='$installstyle'
14904 installusrbinperl='$installusrbinperl'
14905 installvendorbin='$installvendorbin'
14906 installvendorlib='$installvendorlib'
14907 intsize='$intsize'
14908 ivdformat='$ivdformat'
14909 ivsize='$ivsize'
14910 ivtype='$ivtype'
14911 known_extensions='$known_extensions'
14912 ksh='$ksh'
14913 large='$large'
14914 ld='$ld'
14915 lddlflags='$lddlflags'
14916 ldflags='$ldflags'
14917 ldlibpthname='$ldlibpthname'
14918 less='$less'
14919 lib_ext='$lib_ext'
14920 libc='$libc'
14921 libperl='$libperl'
14922 libpth='$libpth'
14923 libs='$libs'
14924 libsdirs='$libsdirs'
14925 libsfiles='$libsfiles'
14926 libsfound='$libsfound'
14927 libswanted='$libswanted'
14928 line='$line'
14929 lint='$lint'
14930 lkflags='$lkflags'
14931 ln='$ln'
14932 lns='$lns'
14933 locincpth='$locincpth'
14934 loclibpth='$loclibpth'
14935 longdblsize='$longdblsize'
14936 longlongsize='$longlongsize'
14937 longsize='$longsize'
14938 lp='$lp'
14939 lpr='$lpr'
14940 ls='$ls'
14941 lseeksize='$lseeksize'
14942 lseektype='$lseektype'
14943 mail='$mail'
14944 mailx='$mailx'
14945 make='$make'
14946 make_set_make='$make_set_make'
14947 mallocobj='$mallocobj'
14948 mallocsrc='$mallocsrc'
14949 malloctype='$malloctype'
14950 man1dir='$man1dir'
14951 man1direxp='$man1direxp'
14952 man1ext='$man1ext'
14953 man3dir='$man3dir'
14954 man3direxp='$man3direxp'
14955 man3ext='$man3ext'
14956 medium='$medium'
14957 mips_type='$mips_type'
14958 mkdir='$mkdir'
14959 models='$models'
14960 modetype='$modetype'
14961 more='$more'
14962 multiarch='$multiarch'
14963 mv='$mv'
14964 myarchname='$myarchname'
14965 mydomain='$mydomain'
14966 myhostname='$myhostname'
14967 myuname='$myuname'
14968 n='$n'
14969 netdb_hlen_type='$netdb_hlen_type'
14970 netdb_host_type='$netdb_host_type'
14971 netdb_name_type='$netdb_name_type'
14972 netdb_net_type='$netdb_net_type'
14973 nm='$nm'
14974 nm_opt='$nm_opt'
14975 nm_so_opt='$nm_so_opt'
14976 nonxs_ext='$nonxs_ext'
14977 nroff='$nroff'
14978 nvsize='$nvsize'
14979 nvtype='$nvtype'
14980 o_nonblock='$o_nonblock'
14981 obj_ext='$obj_ext'
14982 old_pthread_create_joinable='$old_pthread_create_joinable'
14983 optimize='$optimize'
14984 orderlib='$orderlib'
14985 osname='$osname'
14986 osvers='$osvers'
14987 package='$package'
14988 pager='$pager'
14989 passcat='$passcat'
14990 patchlevel='$patchlevel'
14991 path_sep='$path_sep'
14992 perl='$perl'
14993 perladmin='$perladmin'
14994 perlpath='$perlpath'
14995 pg='$pg'
14996 phostname='$phostname'
14997 pidtype='$pidtype'
14998 plibpth='$plibpth'
14999 pmake='$pmake'
15000 pr='$pr'
15001 prefix='$prefix'
15002 prefixexp='$prefixexp'
15003 privlib='$privlib'
15004 privlibexp='$privlibexp'
15005 prototype='$prototype'
15006 ptrsize='$ptrsize'
15007 quadkind='$quadkind'
15008 quadtype='$quadtype'
15009 randbits='$randbits'
15010 randfunc='$randfunc'
15011 randseedtype='$randseedtype'
15012 ranlib='$ranlib'
15013 rd_nodata='$rd_nodata'
15014 rm='$rm'
15015 rmail='$rmail'
15016 runnm='$runnm'
15017 sPRIEldbl='$sPRIEldbl'
15018 sPRIFldbl='$sPRIFldbl'
15019 sPRIGldbl='$sPRIGldbl'
15020 sPRIX64='$sPRIX64'
15021 sPRId64='$sPRId64'
15022 sPRIeldbl='$sPRIeldbl'
15023 sPRIfldbl='$sPRIfldbl'
15024 sPRIgldbl='$sPRIgldbl'
15025 sPRIi64='$sPRIi64'
15026 sPRIo64='$sPRIo64'
15027 sPRIu64='$sPRIu64'
15028 sPRIx64='$sPRIx64'
15029 sched_yield='$sched_yield'
15030 scriptdir='$scriptdir'
15031 scriptdirexp='$scriptdirexp'
15032 sed='$sed'
15033 seedfunc='$seedfunc'
15034 selectminbits='$selectminbits'
15035 selecttype='$selecttype'
15036 sendmail='$sendmail'
15037 sh='$sh'
15038 shar='$shar'
15039 sharpbang='$sharpbang'
15040 shmattype='$shmattype'
15041 shortsize='$shortsize'
15042 shrpenv='$shrpenv'
15043 shsharp='$shsharp'
15044 sig_count='$sig_count'
15045 sig_name='$sig_name'
15046 sig_name_init='$sig_name_init'
15047 sig_num='$sig_num'
15048 sig_num_init='$sig_num_init'
15049 signal_t='$signal_t'
15050 sitearch='$sitearch'
15051 sitearchexp='$sitearchexp'
15052 sitebin='$sitebin'
15053 sitebinexp='$sitebinexp'
15054 sitelib='$sitelib'
15055 sitelibexp='$sitelibexp'
15056 siteprefix='$siteprefix'
15057 siteprefixexp='$siteprefixexp'
15058 sizetype='$sizetype'
15059 sleep='$sleep'
15060 smail='$smail'
15061 small='$small'
15062 so='$so'
15063 sockethdr='$sockethdr'
15064 socketlib='$socketlib'
15065 sort='$sort'
15066 spackage='$spackage'
15067 spitshell='$spitshell'
15068 split='$split'
15069 src='$src'
15070 ssizetype='$ssizetype'
15071 startperl='$startperl'
15072 startsh='$startsh'
15073 static_ext='$static_ext'
15074 stdchar='$stdchar'
15075 stdio_base='$stdio_base'
15076 stdio_bufsiz='$stdio_bufsiz'
15077 stdio_cnt='$stdio_cnt'
15078 stdio_filbuf='$stdio_filbuf'
15079 stdio_ptr='$stdio_ptr'
15080 stdio_stream_array='$stdio_stream_array'
15081 strings='$strings'
15082 submit='$submit'
15083 subversion='$subversion'
15084 sysman='$sysman'
15085 tail='$tail'
15086 tar='$tar'
15087 tbl='$tbl'
15088 tee='$tee'
15089 test='$test'
15090 timeincl='$timeincl'
15091 timetype='$timetype'
15092 touch='$touch'
15093 tr='$tr'
15094 trnl='$trnl'
15095 troff='$troff'
15096 u16size='$u16size'
15097 u16type='$u16type'
15098 u32size='$u32size'
15099 u32type='$u32type'
15100 u64size='$u64size'
15101 u64type='$u64type'
15102 u8size='$u8size'
15103 u8type='$u8type'
15104 uidformat='$uidformat'
15105 uidsign='$uidsign'
15106 uidsize='$uidsize'
15107 uidtype='$uidtype'
15108 uname='$uname'
15109 uniq='$uniq'
15110 uquadtype='$uquadtype'
15111 use5005threads='$use5005threads'
15112 use64bits='$use64bits'
15113 usedl='$usedl'
15114 useithreads='$useithreads'
15115 uselargefiles='$uselargefiles'
15116 uselongdouble='$uselongdouble'
15117 uselonglong='$uselonglong'
15118 usemorebits='$usemorebits'
15119 usemultiplicity='$usemultiplicity'
15120 usemymalloc='$usemymalloc'
15121 usenm='$usenm'
15122 useopcode='$useopcode'
15123 useperlio='$useperlio'
15124 useposix='$useposix'
15125 usesfio='$usesfio'
15126 useshrplib='$useshrplib'
15127 usesocks='$usesocks'
15128 usethreads='$usethreads'
15129 usevendorprefix='$usevendorprefix'
15130 usevfork='$usevfork'
15131 usrinc='$usrinc'
15132 uuname='$uuname'
15133 uvoformat='$uvoformat'
15134 uvsize='$uvsize'
15135 uvtype='$uvtype'
15136 uvuformat='$uvuformat'
15137 uvxformat='$uvxformat'
15138 vendorbin='$vendorbin'
15139 vendorbinexp='$vendorbinexp'
15140 vendorlib='$vendorlib'
15141 vendorlibexp='$vendorlibexp'
15142 vendorprefix='$vendorprefix'
15143 vendorprefixexp='$vendorprefixexp'
15144 version='$version'
15145 vi='$vi'
15146 voidflags='$voidflags'
15147 xlibpth='$xlibpth'
15148 zcat='$zcat'
15149 zip='$zip'
15150 EOT
15151
15152 : Add in command line options if available
15153 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15154
15155 : add special variables
15156 $test -f $src/patchlevel.h && \
15157 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15158 echo "CONFIGDOTSH=true" >>config.sh
15159
15160 : propagate old symbols
15161 if $test -f UU/config.sh; then
15162         <UU/config.sh sort | uniq >UU/oldconfig.sh
15163         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15164         sort | uniq -u >UU/oldsyms
15165         set X `cat UU/oldsyms`
15166         shift
15167         case $# in
15168         0) ;;
15169         *)
15170                 cat <<EOM
15171 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15172 EOM
15173                 echo "# Variables propagated from previous config.sh file." >>config.sh
15174                 for sym in `cat UU/oldsyms`; do
15175                         echo "    Propagating $hint variable "'$'"$sym..."
15176                         eval 'tmp="$'"${sym}"'"'
15177                         echo "$tmp" | \
15178                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15179                 done
15180                 ;;
15181         esac
15182 fi
15183
15184 : Finish up by extracting the .SH files
15185 case "$alldone" in
15186 exit)
15187         $rm -rf UU
15188         echo "Done."
15189         exit 0
15190         ;;
15191 cont)
15192         ;;
15193 '')
15194         dflt=''
15195         nostick=true
15196         $cat <<EOM
15197
15198 If you'd like to make any changes to the config.sh file before I begin
15199 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15200
15201 EOM
15202         rp="Press return or use a shell escape to edit config.sh:"
15203         . UU/myread
15204         nostick=''
15205         case "$ans" in
15206         '') ;;
15207         *) : in case they cannot read
15208                 sh 1>&4 -c "$ans";;
15209         esac
15210         ;;
15211 esac
15212
15213 : if this fails, just run all the .SH files by hand
15214 . ./config.sh
15215
15216 echo " "
15217 exec 1>&4
15218 . ./UU/extract
15219
15220 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15221         dflt=y
15222         case "$silent" in
15223         true) ;;
15224         *)
15225                 $cat <<EOM
15226
15227 Now you need to generate make dependencies by running "$make depend".
15228 You might prefer to run it in background: "$make depend > makedepend.out &"
15229 It can take a while, so you might not want to run it right now.
15230
15231 EOM
15232                 ;;
15233         esac
15234         rp="Run $make depend now?"
15235         . UU/myread
15236         case "$ans" in
15237         y*)
15238                 $make depend && echo "Now you must run a $make."
15239                 ;;
15240         *)
15241                 echo "You must run '$make depend' then '$make'."
15242                 ;;
15243         esac
15244 elif test -f [Mm]akefile; then
15245         echo " "
15246         echo "Now you must run a $make."
15247 else
15248         echo "Done."
15249 fi
15250
15251 if $test -f Policy.sh; then
15252     $cat <<EOM
15253
15254 If you compile $package on a different machine or from a different object
15255 directory, copy the Policy.sh file from this object directory to the
15256 new one before you run Configure -- this will help you with most of
15257 the policy defaults.
15258
15259 EOM
15260 fi
15261 if $test -f config.msg; then
15262     echo "Hmm.  I also noted the following information while running:"
15263     echo " "
15264     $cat config.msg >&4
15265     $rm -f config.msg
15266 fi
15267 $rm -f kit*isdone ark*isdone
15268 $rm -rf UU
15269
15270 : End of Configure
15271