Re: Questions about Tie::Array and perl modules
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Thu Oct  5 01:50:43 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 perllibs=''
169 dynamic_ext=''
170 extensions=''
171 known_extensions=''
172 nonxs_ext=''
173 static_ext=''
174 useopcode=''
175 useposix=''
176 d_bsd=''
177 d_eunice=''
178 d_xenix=''
179 eunicefix=''
180 Mcc=''
181 ar=''
182 awk=''
183 bash=''
184 bison=''
185 byacc=''
186 cat=''
187 chgrp=''
188 chmod=''
189 chown=''
190 comm=''
191 compress=''
192 cp=''
193 cpio=''
194 cpp=''
195 csh=''
196 date=''
197 echo=''
198 egrep=''
199 emacs=''
200 expr=''
201 find=''
202 flex=''
203 grep=''
204 gzip=''
205 inews=''
206 ksh=''
207 less=''
208 line=''
209 lint=''
210 ln=''
211 lp=''
212 lpr=''
213 ls=''
214 mail=''
215 mailx=''
216 make=''
217 mkdir=''
218 more=''
219 mv=''
220 nm=''
221 nroff=''
222 perl=''
223 pg=''
224 pmake=''
225 pr=''
226 rm=''
227 rmail=''
228 sed=''
229 sendmail=''
230 shar=''
231 sleep=''
232 smail=''
233 sort=''
234 submit=''
235 tail=''
236 tar=''
237 tbl=''
238 tee=''
239 test=''
240 touch=''
241 tr=''
242 troff=''
243 uname=''
244 uniq=''
245 uuname=''
246 vi=''
247 zcat=''
248 zip=''
249 full_ar=''
250 full_sed=''
251 libswanted=''
252 hint=''
253 myuname=''
254 osname=''
255 osvers=''
256 Author=''
257 Date=''
258 Header=''
259 Id=''
260 Locker=''
261 Log=''
262 RCSfile=''
263 Revision=''
264 Source=''
265 State=''
266 _a=''
267 _exe=''
268 _o=''
269 archobjs=''
270 exe_ext=''
271 firstmakefile=''
272 lib_ext=''
273 obj_ext=''
274 path_sep=''
275 afs=''
276 alignbytes=''
277 ansi2knr=''
278 archlib=''
279 archlibexp=''
280 d_archlib=''
281 installarchlib=''
282 archname=''
283 myarchname=''
284 d_atolf=''
285 d_atoll=''
286 baserev=''
287 bin=''
288 binexp=''
289 installbin=''
290 bincompat5005=''
291 d_bincompat5005=''
292 byteorder=''
293 cc=''
294 ccflags=''
295 cppflags=''
296 ldflags=''
297 lkflags=''
298 locincpth=''
299 optimize=''
300 cf_email=''
301 cf_by=''
302 cf_time=''
303 charsize=''
304 contains=''
305 cpp_stuff=''
306 cpplast=''
307 cppminus=''
308 cpprun=''
309 cppstdin=''
310 crosscompile=''
311 d_access=''
312 d_accessx=''
313 d_alarm=''
314 d_attribut=''
315 d_bcmp=''
316 d_bcopy=''
317 d_bzero=''
318 d_casti32=''
319 castflags=''
320 d_castneg=''
321 d_chown=''
322 d_chroot=''
323 d_chsize=''
324 d_closedir=''
325 d_void_closedir=''
326 d_const=''
327 cryptlib=''
328 d_crypt=''
329 d_csh=''
330 full_csh=''
331 d_cuserid=''
332 d_dbl_dig=''
333 d_difftime=''
334 d_dlerror=''
335 d_dlopen=''
336 d_dlsymun=''
337 d_dosuid=''
338 d_suidsafe=''
339 d_drand48proto=''
340 d_dup2=''
341 d_eaccess=''
342 d_endgrent=''
343 d_endhent=''
344 d_endnent=''
345 d_endpent=''
346 d_endpwent=''
347 d_endsent=''
348 d_fchmod=''
349 d_fchown=''
350 d_fcntl=''
351 d_fd_macros=''
352 d_fd_set=''
353 d_fds_bits=''
354 d_fgetpos=''
355 d_flexfnam=''
356 d_flock=''
357 d_fork=''
358 d_fpos64_t=''
359 d_frexpl=''
360 d_fs_data_s=''
361 d_fseeko=''
362 d_fsetpos=''
363 d_fstatfs=''
364 d_ftello=''
365 d_ftime=''
366 d_gettimeod=''
367 d_Gconvert=''
368 d_getcwd=''
369 d_getespwnam=''
370 d_getfsstat=''
371 d_getgrent=''
372 d_getgrps=''
373 d_gethbyaddr=''
374 d_gethbyname=''
375 d_gethent=''
376 aphostname=''
377 d_gethname=''
378 d_phostname=''
379 d_uname=''
380 d_gethostprotos=''
381 d_getlogin=''
382 d_getmnt=''
383 d_getmntent=''
384 d_getnbyaddr=''
385 d_getnbyname=''
386 d_getnent=''
387 d_getnetprotos=''
388 d_getpent=''
389 d_getpgid=''
390 d_getpgrp2=''
391 d_bsdgetpgrp=''
392 d_getpgrp=''
393 d_getppid=''
394 d_getprior=''
395 d_getpbyname=''
396 d_getpbynumber=''
397 d_getprotoprotos=''
398 d_getprpwnam=''
399 d_getpwent=''
400 d_getsent=''
401 d_getservprotos=''
402 d_getspnam=''
403 d_getsbyname=''
404 d_getsbyport=''
405 d_gnulibc=''
406 d_hasmntopt=''
407 d_htonl=''
408 d_iconv=''
409 d_inetaton=''
410 d_int64_t=''
411 d_isascii=''
412 d_isnan=''
413 d_isnanl=''
414 d_killpg=''
415 d_lchown=''
416 d_ldbl_dig=''
417 d_link=''
418 d_locconv=''
419 d_lockf=''
420 d_longdbl=''
421 longdblsize=''
422 d_longlong=''
423 longlongsize=''
424 d_lseekproto=''
425 d_lstat=''
426 d_madvise=''
427 d_mblen=''
428 d_mbstowcs=''
429 d_mbtowc=''
430 d_memchr=''
431 d_memcmp=''
432 d_memcpy=''
433 d_memmove=''
434 d_memset=''
435 d_mkdir=''
436 d_mkdtemp=''
437 d_mkfifo=''
438 d_mkstemp=''
439 d_mkstemps=''
440 d_mktime=''
441 d_mmap=''
442 mmaptype=''
443 d_modfl=''
444 d_mprotect=''
445 d_msg=''
446 d_msgctl=''
447 d_msgget=''
448 d_msgrcv=''
449 d_msgsnd=''
450 d_msync=''
451 d_munmap=''
452 d_nice=''
453 d_off64_t=''
454 d_open3=''
455 d_fpathconf=''
456 d_pathconf=''
457 d_pause=''
458 d_pipe=''
459 d_poll=''
460 d_portable=''
461 d_old_pthread_create_joinable=''
462 old_pthread_create_joinable=''
463 d_pthread_yield=''
464 d_sched_yield=''
465 sched_yield=''
466 d_qgcvt=''
467 d_readdir=''
468 d_rewinddir=''
469 d_seekdir=''
470 d_telldir=''
471 d_readlink=''
472 d_rename=''
473 d_rmdir=''
474 d_safebcpy=''
475 d_safemcpy=''
476 d_sanemcmp=''
477 d_select=''
478 d_sem=''
479 d_semctl=''
480 d_semget=''
481 d_semop=''
482 d_setegid=''
483 d_seteuid=''
484 d_setgrent=''
485 d_setgrps=''
486 d_sethent=''
487 d_setlinebuf=''
488 d_setlocale=''
489 d_setnent=''
490 d_setpent=''
491 d_setpgid=''
492 d_setpgrp2=''
493 d_bsdsetpgrp=''
494 d_setpgrp=''
495 d_setprior=''
496 d_setproctitle=''
497 d_setpwent=''
498 d_setregid=''
499 d_setresgid=''
500 d_setresuid=''
501 d_setreuid=''
502 d_setrgid=''
503 d_setruid=''
504 d_setsent=''
505 d_setsid=''
506 d_setvbuf=''
507 d_sfio=''
508 usesfio=''
509 d_shm=''
510 d_shmat=''
511 d_shmatprototype=''
512 shmattype=''
513 d_shmctl=''
514 d_shmdt=''
515 d_shmget=''
516 d_sigaction=''
517 d_sigsetjmp=''
518 d_msg_ctrunc=''
519 d_msg_dontroute=''
520 d_msg_oob=''
521 d_msg_peek=''
522 d_msg_proxy=''
523 d_oldsock=''
524 d_scm_rights=''
525 d_socket=''
526 d_sockpair=''
527 sockethdr=''
528 socketlib=''
529 d_socklen_t=''
530 d_socks5_init=''
531 d_sqrtl=''
532 d_statblks=''
533 d_statfs_f_flags=''
534 d_statfs_s=''
535 d_fstatvfs=''
536 d_statvfs=''
537 d_stdio_cnt_lval=''
538 d_stdio_ptr_lval=''
539 d_stdiobase=''
540 d_stdstdio=''
541 stdio_base=''
542 stdio_bufsiz=''
543 stdio_cnt=''
544 stdio_filbuf=''
545 stdio_ptr=''
546 d_index=''
547 d_strchr=''
548 d_strcoll=''
549 d_strctcpy=''
550 d_strerrm=''
551 d_strerror=''
552 d_sysernlst=''
553 d_syserrlst=''
554 d_strtod=''
555 d_strtol=''
556 d_strtold=''
557 d_strtoll=''
558 d_strtoul=''
559 d_strtoull=''
560 d_strtouq=''
561 d_strxfrm=''
562 d_symlink=''
563 d_syscall=''
564 d_sysconf=''
565 d_system=''
566 d_tcgetpgrp=''
567 d_tcsetpgrp=''
568 d_telldirproto=''
569 d_time=''
570 timetype=''
571 clocktype=''
572 d_times=''
573 d_truncate=''
574 d_tzname=''
575 d_umask=''
576 d_semctl_semid_ds=''
577 d_semctl_semun=''
578 d_union_semun=''
579 d_ustat=''
580 d_vfork=''
581 usevfork=''
582 d_voidsig=''
583 signal_t=''
584 d_volatile=''
585 d_charvspr=''
586 d_vprintf=''
587 d_wait4=''
588 d_waitpid=''
589 d_wcstombs=''
590 d_wctomb=''
591 dlext=''
592 cccdlflags=''
593 ccdlflags=''
594 dlsrc=''
595 ld=''
596 lddlflags=''
597 usedl=''
598 doublesize=''
599 ebcdic=''
600 fflushNULL=''
601 fflushall=''
602 fpossize=''
603 fpostype=''
604 gccosandvers=''
605 gccversion=''
606 gidformat=''
607 gidsign=''
608 gidsize=''
609 gidtype=''
610 groupstype=''
611 h_fcntl=''
612 h_sysfile=''
613 i_arpainet=''
614 db_hashtype=''
615 db_prefixtype=''
616 i_db=''
617 i_dbm=''
618 i_rpcsvcdbm=''
619 d_dirnamlen=''
620 direntrytype=''
621 i_dirent=''
622 i_dld=''
623 i_dlfcn=''
624 i_fcntl=''
625 i_float=''
626 i_gdbm=''
627 d_grpasswd=''
628 i_grp=''
629 i_iconv=''
630 i_ieeefp=''
631 i_inttypes=''
632 i_libutil=''
633 i_limits=''
634 i_locale=''
635 i_machcthr=''
636 i_malloc=''
637 i_math=''
638 i_memory=''
639 i_mntent=''
640 i_ndbm=''
641 i_netdb=''
642 i_neterrno=''
643 i_netinettcp=''
644 i_niin=''
645 i_sysin=''
646 i_poll=''
647 i_prot=''
648 i_pthread=''
649 d_pwage=''
650 d_pwchange=''
651 d_pwclass=''
652 d_pwcomment=''
653 d_pwexpire=''
654 d_pwgecos=''
655 d_pwpasswd=''
656 d_pwquota=''
657 i_pwd=''
658 i_sfio=''
659 i_shadow=''
660 i_socks=''
661 i_stddef=''
662 i_stdlib=''
663 i_string=''
664 strings=''
665 i_sunmath=''
666 i_sysaccess=''
667 i_sysdir=''
668 i_sysfile=''
669 d_voidtty=''
670 i_bsdioctl=''
671 i_sysfilio=''
672 i_sysioctl=''
673 i_syssockio=''
674 i_syslog=''
675 i_sysmman=''
676 i_sysmode=''
677 i_sysmount=''
678 i_sysndir=''
679 i_sysparam=''
680 i_sysresrc=''
681 i_syssecrt=''
682 i_sysselct=''
683 i_sysstat=''
684 i_sysstatfs=''
685 i_sysstatvfs=''
686 i_systimes=''
687 i_systypes=''
688 i_sysuio=''
689 i_sysun=''
690 i_sysutsname=''
691 i_sysvfs=''
692 i_syswait=''
693 i_sgtty=''
694 i_termio=''
695 i_termios=''
696 i_systime=''
697 i_systimek=''
698 i_time=''
699 timeincl=''
700 i_unistd=''
701 i_ustat=''
702 i_utime=''
703 i_values=''
704 i_stdarg=''
705 i_varargs=''
706 i_varhdr=''
707 i_vfork=''
708 inc_version_list=''
709 inc_version_list_init=''
710 installprefix=''
711 installprefixexp=''
712 installscripts=''
713 installstyle=''
714 installusrbinperl=''
715 intsize=''
716 longsize=''
717 shortsize=''
718 libc=''
719 ldlibpthname=''
720 libperl=''
721 shrpenv=''
722 useshrplib=''
723 glibpth=''
724 libpth=''
725 loclibpth=''
726 plibpth=''
727 xlibpth=''
728 ignore_versioned_solibs=''
729 libs=''
730 libsdirs=''
731 libsfiles=''
732 libsfound=''
733 libspath=''
734 lns=''
735 d_PRIEUldbl=''
736 d_PRIFUldbl=''
737 d_PRIGUldbl=''
738 d_PRIeldbl=''
739 d_PRIfldbl=''
740 d_PRIgldbl=''
741 d_SCNfldbl=''
742 sPRIEUldbl=''
743 sPRIFUldbl=''
744 sPRIGUldbl=''
745 sPRIeldbl=''
746 sPRIfldbl=''
747 sPRIgldbl=''
748 sSCNfldbl=''
749 lseeksize=''
750 lseektype=''
751 make_set_make=''
752 d_mymalloc=''
753 freetype=''
754 mallocobj=''
755 mallocsrc=''
756 malloctype=''
757 usemymalloc=''
758 installman1dir=''
759 man1dir=''
760 man1direxp=''
761 man1ext=''
762 installman3dir=''
763 man3dir=''
764 man3direxp=''
765 man3ext=''
766 modetype=''
767 multiarch=''
768 mydomain=''
769 myhostname=''
770 phostname=''
771 c=''
772 n=''
773 d_eofnblk=''
774 eagain=''
775 o_nonblock=''
776 rd_nodata=''
777 netdb_hlen_type=''
778 netdb_host_type=''
779 netdb_name_type=''
780 netdb_net_type=''
781 groupcat=''
782 hostcat=''
783 passcat=''
784 orderlib=''
785 ranlib=''
786 d_perl_otherlibdirs=''
787 otherlibdirs=''
788 package=''
789 spackage=''
790 pager=''
791 api_revision=''
792 api_subversion=''
793 api_version=''
794 api_versionstring=''
795 patchlevel=''
796 revision=''
797 subversion=''
798 version=''
799 perl5=''
800 perladmin=''
801 perlpath=''
802 d_nv_preserves_uv=''
803 d_nv_preserves_uv_bits=''
804 i16size=''
805 i16type=''
806 i32size=''
807 i32type=''
808 i64size=''
809 i64type=''
810 i8size=''
811 i8type=''
812 ivsize=''
813 ivtype=''
814 nvsize=''
815 nvtype=''
816 u16size=''
817 u16type=''
818 u32size=''
819 u32type=''
820 u64size=''
821 u64type=''
822 u8size=''
823 u8type=''
824 uvsize=''
825 uvtype=''
826 ivdformat=''
827 nvEUformat=''
828 nvFUformat=''
829 nvGUformat=''
830 nveformat=''
831 nvfformat=''
832 nvgformat=''
833 uvXUformat=''
834 uvoformat=''
835 uvuformat=''
836 uvxformat=''
837 pidtype=''
838 prefix=''
839 prefixexp=''
840 installprivlib=''
841 privlib=''
842 privlibexp=''
843 prototype=''
844 ptrsize=''
845 d_PRIXU64=''
846 d_PRId64=''
847 d_PRIi64=''
848 d_PRIo64=''
849 d_PRIu64=''
850 d_PRIx64=''
851 sPRIXU64=''
852 sPRId64=''
853 sPRIi64=''
854 sPRIo64=''
855 sPRIu64=''
856 sPRIx64=''
857 d_quad=''
858 quadkind=''
859 quadtype=''
860 uquadtype=''
861 drand01=''
862 randbits=''
863 randfunc=''
864 randseedtype=''
865 seedfunc=''
866 installscript=''
867 scriptdir=''
868 scriptdirexp=''
869 selectminbits=''
870 selecttype=''
871 sh=''
872 sig_count=''
873 sig_name=''
874 sig_name_init=''
875 sig_num=''
876 sig_num_init=''
877 installsitearch=''
878 sitearch=''
879 sitearchexp=''
880 installsitebin=''
881 sitebin=''
882 sitebinexp=''
883 installsitelib=''
884 sitelib=''
885 sitelib_stem=''
886 sitelibexp=''
887 siteprefix=''
888 siteprefixexp=''
889 sizesize=''
890 sizetype=''
891 so=''
892 socksizetype=''
893 sharpbang=''
894 shsharp=''
895 spitshell=''
896 src=''
897 ssizetype=''
898 startperl=''
899 startsh=''
900 stdchar=''
901 d_stdio_stream_array=''
902 stdio_stream_array=''
903 sysman=''
904 trnl=''
905 uidformat=''
906 uidsign=''
907 uidsize=''
908 uidtype=''
909 archname64=''
910 use64bitall=''
911 use64bitint=''
912 ccflags_uselargefiles=''
913 ldflags_uselargefiles=''
914 libswanted_uselargefiles=''
915 uselargefiles=''
916 uselongdouble=''
917 usemorebits=''
918 usemultiplicity=''
919 nm_opt=''
920 nm_so_opt=''
921 runnm=''
922 usenm=''
923 useperlio=''
924 usesocks=''
925 d_oldpthreads=''
926 use5005threads=''
927 useithreads=''
928 usethreads=''
929 incpath=''
930 mips_type=''
931 usrinc=''
932 d_vendorarch=''
933 installvendorarch=''
934 vendorarch=''
935 vendorarchexp=''
936 d_vendorbin=''
937 installvendorbin=''
938 vendorbin=''
939 vendorbinexp=''
940 d_vendorlib=''
941 installvendorlib=''
942 vendorlib=''
943 vendorlib_stem=''
944 vendorlibexp=''
945 usevendorprefix=''
946 vendorprefix=''
947 vendorprefixexp=''
948 defvoidused=''
949 voidflags=''
950 pm_apiversion=''
951 xs_apiversion=''
952 CONFIG=''
953
954 define='define'
955 undef='undef'
956 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
957 rmlist=''
958
959 : We must find out about Eunice early
960 eunicefix=':'
961 if test -f /etc/unixtovms; then
962         eunicefix=/etc/unixtovms
963 fi
964 if test -f /etc/unixtovms.exe; then
965         eunicefix=/etc/unixtovms.exe
966 fi
967
968 i_whoami=''
969 ccname=''
970 ccversion=''
971 perllibs=''
972 : set useposix=false in your hint file to disable the POSIX extension.
973 useposix=true
974 : set useopcode=false in your hint file to disable the Opcode extension.
975 useopcode=true
976 : Trailing extension.  Override this in a hint file, if needed.
977 _exe=''
978 : Extra object files, if any, needed on this platform.
979 archobjs=''
980 archname=''
981 : Possible local include directories to search.
982 : Set locincpth to "" in a hint file to defeat local include searches.
983 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
984 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
985 :
986 : no include file wanted by default
987 inclwanted=''
988
989 groupstype=''
990 : change the next line if compiling for Xenix/286 on Xenix/386
991 xlibpth='/usr/lib/386 /lib/386'
992 : Possible local library directories to search.
993 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
994 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
995
996 : general looking path for locating libraries
997 glibpth="/lib /usr/lib $xlibpth"
998 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
999 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1000 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1001
1002 : Private path used by Configure to find libraries.  Its value
1003 : is prepended to libpth. This variable takes care of special
1004 : machines, like the mips.  Usually, it should be empty.
1005 plibpth=''
1006
1007 : default library list
1008 libswanted=''
1009 : some systems want to use only the non-versioned libso:s
1010 ignore_versioned_solibs=''
1011 archname64=''
1012 ccflags_uselargefiles=''
1013 ldflags_uselargefiles=''
1014 libswanted_uselargefiles=''
1015 : set usemultiplicity on the Configure command line to enable multiplicity.
1016 : set usesocks on the Configure command line to enable socks.
1017 : set usethreads on the Configure command line to enable threads.
1018 : full support for void wanted by default
1019 defvoidused=15
1020
1021 : List of libraries we want.
1022 : If anyone needs -lnet, put it in a hint file.
1023 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1024 libswanted="$libswanted dld ld sun m c cposix posix"
1025 libswanted="$libswanted ndir dir crypt sec"
1026 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1027 : We probably want to search /usr/shlib before most other libraries.
1028 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1029 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1030 glibpth="/usr/shlib $glibpth"
1031 : Do not use vfork unless overridden by a hint file.
1032 usevfork=false
1033
1034 : Find the basic shell for Bourne shell scripts
1035 case "$sh" in
1036 '')
1037         case "$SYSTYPE" in
1038         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1039         *) xxx='/bin/sh';;
1040         esac
1041         if test -f "$xxx"; then
1042                 sh="$xxx"
1043         else
1044                 : Build up a list and do a single loop so we can 'break' out.
1045                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1046                 for xxx in sh bash ksh pdksh ash; do
1047                         for p in $pth; do
1048                                 try="$try ${p}/${xxx}"
1049                         done
1050                 done
1051                 for xxx in $try; do
1052                         if test -f "$xxx"; then
1053                                 sh="$xxx";
1054                                 break
1055                         elif test -f "$xxx.exe"; then
1056                                 sh="$xxx";
1057                                 break
1058                         fi
1059                 done
1060         fi
1061         ;;
1062 esac
1063
1064 case "$sh" in
1065 '')     cat <<EOM >&2
1066 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1067
1068 Usually it's in /bin/sh.  How did you even get this far?
1069 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1070 we'll try to straighten this all out.
1071 EOM
1072         exit 1
1073         ;;
1074 esac
1075
1076 : see if sh knows # comments
1077 if `$sh -c '#' >/dev/null 2>&1`; then
1078         shsharp=true
1079         spitshell=cat
1080         xcat=/bin/cat
1081         test -f $xcat || xcat=/usr/bin/cat
1082         echo "#!$xcat" >try
1083         $eunicefix try
1084         chmod +x try
1085         ./try > today
1086         if test -s today; then
1087                 sharpbang='#!'
1088         else
1089                 echo "#! $xcat" > try
1090                 $eunicefix try
1091                 chmod +x try
1092                 ./try > today
1093                 if test -s today; then
1094                         sharpbang='#! '
1095                 else
1096                         sharpbang=': use '
1097                 fi
1098         fi
1099 else
1100         echo " "
1101         echo "Your $sh doesn't grok # comments--I will strip them later on."
1102         shsharp=false
1103         cd ..
1104         echo "exec grep -v '^[  ]*#'" >spitshell
1105         chmod +x spitshell
1106         $eunicefix spitshell
1107         spitshell=`pwd`/spitshell
1108         cd UU
1109         echo "I presume that if # doesn't work, #! won't work either!"
1110         sharpbang=': use '
1111 fi
1112 rm -f try today
1113
1114 : figure out how to guarantee sh startup
1115 case "$startsh" in
1116 '') startsh=${sharpbang}${sh} ;;
1117 *)
1118 esac
1119 cat >try <<EOSS
1120 $startsh
1121 set abc
1122 test "$?abc" != 1
1123 EOSS
1124
1125 chmod +x try
1126 $eunicefix try
1127 if ./try; then
1128         : echo "Yup, it does."
1129 else
1130         echo "Hmm... '$startsh' does not guarantee sh startup..."
1131         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1132 fi
1133 rm -f try
1134
1135
1136 : Save command line options in file UU/cmdline.opt for later use in
1137 : generating config.sh.
1138 cat > cmdline.opt <<EOSH
1139 # Configure command line arguments.
1140 config_arg0='$0'
1141 config_args='$*'
1142 config_argc=$#
1143 EOSH
1144 argn=1
1145 for arg in "$@"; do
1146         cat >>cmdline.opt <<EOSH
1147 config_arg$argn='$arg'
1148 EOSH
1149         argn=`expr $argn + 1`
1150 done
1151
1152 : produce awk script to parse command line options
1153 cat >options.awk <<'EOF'
1154 BEGIN {
1155         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1156
1157         len = length(optstr);
1158         for (i = 1; i <= len; i++) {
1159                 c = substr(optstr, i, 1);
1160                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1161                 if (a == ":") {
1162                         arg[c] = 1;
1163                         i++;
1164                 }
1165                 opt[c] = 1;
1166         }
1167 }
1168 {
1169         expect = 0;
1170         str = $0;
1171         if (substr(str, 1, 1) != "-") {
1172                 printf("'%s'\n", str);
1173                 next;
1174         }
1175         len = length($0);
1176         for (i = 2; i <= len; i++) {
1177                 c = substr(str, i, 1);
1178                 if (!opt[c]) {
1179                         printf("-%s\n", substr(str, i));
1180                         next;
1181                 }
1182                 printf("-%s\n", c);
1183                 if (arg[c]) {
1184                         if (i < len)
1185                                 printf("'%s'\n", substr(str, i + 1));
1186                         else
1187                                 expect = 1;
1188                         next;
1189                 }
1190         }
1191 }
1192 END {
1193         if (expect)
1194                 print "?";
1195 }
1196 EOF
1197
1198 : process the command line options
1199 set X `for arg in "$@"; do echo "X$arg"; done |
1200         sed -e s/X// | awk -f options.awk`
1201 eval "set $*"
1202 shift
1203 rm -f options.awk
1204
1205 : set up default values
1206 fastread=''
1207 reuseval=false
1208 config_sh=''
1209 alldone=''
1210 error=''
1211 silent=''
1212 extractsh=''
1213 override=''
1214 knowitall=''
1215 rm -f optdef.sh posthint.sh
1216 cat >optdef.sh <<EOS
1217 $startsh
1218 EOS
1219
1220
1221 : option parsing
1222 while test $# -gt 0; do
1223         case "$1" in
1224         -d) shift; fastread=yes;;
1225         -e) shift; alldone=cont;;
1226         -f)
1227                 shift
1228                 cd ..
1229                 if test -r "$1"; then
1230                         config_sh="$1"
1231                 else
1232                         echo "$me: cannot read config file $1." >&2
1233                         error=true
1234                 fi
1235                 cd UU
1236                 shift;;
1237         -h) shift; error=true;;
1238         -r) shift; reuseval=true;;
1239         -s) shift; silent=true; realsilent=true;;
1240         -E) shift; alldone=exit;;
1241         -K) shift; knowitall=true;;
1242         -O) shift; override=true;;
1243         -S) shift; silent=true; extractsh=true;;
1244         -D)
1245                 shift
1246                 case "$1" in
1247                 *=)
1248                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1249                         echo "$me: ignoring -D $1" >&2
1250                         ;;
1251                 *=*) echo "$1" | \
1252                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1253                 *) echo "$1='define'" >> optdef.sh;;
1254                 esac
1255                 shift
1256                 ;;
1257         -U)
1258                 shift
1259                 case "$1" in
1260                 *=) echo "$1" >> optdef.sh;;
1261                 *=*)
1262                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1263                         echo "$me: ignoring -U $1" >&2
1264                         ;;
1265                 *) echo "$1='undef'" >> optdef.sh;;
1266                 esac
1267                 shift
1268                 ;;
1269         -A)
1270             shift
1271             xxx=''
1272             yyy="$1"
1273             zzz=''
1274             uuu=undef
1275             case "$yyy" in
1276             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1277                  case "$zzz" in
1278                  *:*) zzz='' ;;
1279                  *)   xxx=append
1280                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1281                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1282                  esac
1283                  ;;
1284             esac
1285             case "$xxx" in
1286             '')  case "$yyy" in
1287                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1288                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1289                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1290                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1291                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1292                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1293                  esac
1294                  ;;       
1295             esac
1296             case "$xxx" in
1297             append)
1298                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1299             clear)
1300                 echo "$yyy=''"                  >> posthint.sh ;;
1301             define)
1302                 case "$zzz" in
1303                 '') zzz=define ;;
1304                 esac
1305                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1306             eval)
1307                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1308             prepend)
1309                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1310             undef)
1311                 case "$zzz" in
1312                 '') zzz="$uuu" ;;
1313                 esac
1314                 echo "$yyy=$zzz"                >> posthint.sh ;;
1315             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1316             esac
1317             shift
1318             ;;
1319         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1320             exit 0;;
1321         --) break;;
1322         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1323         *) break;;
1324         esac
1325 done
1326
1327 case "$error" in
1328 true)
1329         cat >&2 <<EOM
1330 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1331                  [-U symbol] [-U symbol=] [-A command:symbol...]
1332   -d : use defaults for all answers.
1333   -e : go on without questioning past the production of config.sh.
1334   -f : specify an alternate default configuration file.
1335   -h : print this help message and exit (with an error status).
1336   -r : reuse C symbols value if possible (skips costly nm extraction).
1337   -s : silent mode, only echoes questions and essential information.
1338   -D : define symbol to have some value:
1339          -D symbol         symbol gets the value 'define'
1340          -D symbol=value   symbol gets the value 'value'
1341   -E : stop at the end of questions, after having produced config.sh.
1342   -K : do not use unless you know what you are doing.
1343   -O : let -D and -U override definitions from loaded configuration file.
1344   -S : perform variable substitutions on all .SH files (can mix with -f)
1345   -U : undefine symbol:
1346          -U symbol    symbol gets the value 'undef'
1347          -U symbol=   symbol gets completely empty
1348   -A : manipulate symbol after the platform specific hints have been applied:
1349          -A symbol=value                append " "value to symbol
1350          -A append:symbol=value         append value to symbol
1351          -A define:symbol=value         define symbol to have value
1352          -A clear:symbol                define symbol to be ''
1353          -A define:symbol               define symbol to be 'define'
1354          -A eval:symbol=value           define symbol to be eval of value
1355          -A prepend:symbol=value        prepend value to symbol
1356          -A undef:symbol                define symbol to be 'undef'
1357          -A undef:symbol=               define symbol to be ''
1358   -V : print version number and exit (with a zero status).
1359 EOM
1360         exit 1
1361         ;;
1362 esac
1363
1364 : Sanity checks
1365 case "$fastread$alldone" in
1366 yescont|yesexit) ;;
1367 *)
1368         case "$extractsh" in
1369         true) ;;
1370         *)
1371                 if test ! -t 0; then
1372                         echo "Say 'sh Configure', not 'sh <Configure'"
1373                         exit 1
1374                 fi
1375                 ;;
1376         esac
1377         ;;
1378 esac
1379
1380 exec 4>&1
1381 case "$silent" in
1382 true) exec 1>/dev/null;;
1383 esac
1384
1385 : run the defines and the undefines, if any, but leave the file out there...
1386 touch optdef.sh
1387 . ./optdef.sh
1388 : create the posthint manipulation script and leave the file out there...
1389 touch posthint.sh
1390
1391 : set package name
1392 package=perl5
1393 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1394 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1395 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1396 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1397 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1398 esac
1399
1400 : Some greps do not return status, grrr.
1401 echo "grimblepritz" >grimble
1402 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1403         contains=contains
1404 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1405         contains=grep
1406 else
1407         contains=contains
1408 fi
1409 rm -f grimble
1410 : the following should work in any shell
1411 case "$contains" in
1412 contains*)
1413         echo " "
1414         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1415         cat >contains <<'EOSS'
1416 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1417 EOSS
1418 chmod +x contains
1419 esac
1420
1421 : Find the path to the source tree
1422 case "$src" in
1423 '') case "$0" in
1424     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1425          case "$src" in
1426          /*)    ;;
1427          *)     src=`cd ../$src && pwd` ;;
1428          esac
1429          ;;
1430     *)   src='.';;
1431     esac;;
1432 esac
1433 case "$src" in
1434 '')     src=/
1435         rsrc=/
1436         ;;
1437 /*) rsrc="$src";;
1438 *) rsrc="../$src";;
1439 esac
1440 if test -f $rsrc/Configure && \
1441         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1442 then
1443    : found it, so we are ok.
1444 else
1445         rsrc=''
1446         for src in . .. ../.. ../../.. ../../../..; do
1447                 if test -f ../$src/Configure && \
1448                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1449                 then
1450                         rsrc=../$src
1451                         break
1452                 fi
1453         done
1454 fi
1455 case "$rsrc" in
1456 '')
1457         cat <<EOM >&4
1458
1459 Sorry, I can't seem to locate the source dir for $package.  Please start
1460 Configure with an explicit path -- i.e. /some/path/Configure.
1461
1462 EOM
1463         exit 1
1464         ;;
1465 ../.)   rsrc='..';;
1466 *)
1467         echo " "
1468         echo "Sources for $package found in \"$src\"." >&4
1469         ;;
1470 esac
1471
1472 : script used to extract .SH files with variable substitutions
1473 cat >extract <<'EOS'
1474 CONFIGDOTSH=true
1475 echo "Doing variable substitutions on .SH files..."
1476 if test -f $src/MANIFEST; then
1477         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1478 else
1479         echo "(Looking for .SH files under the source directory.)"
1480         set x `(cd $src; find . -name "*.SH" -print)`
1481 fi
1482 shift
1483 case $# in
1484 0) set x `(cd $src; echo *.SH)`; shift;;
1485 esac
1486 if test ! -f $src/$1; then
1487         shift
1488 fi
1489 mkdir_p='
1490 name=$1;
1491 create="";
1492 while test $name; do
1493         if test ! -d "$name"; then
1494                 create="$name $create";
1495                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1496                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1497         else
1498                 name="";
1499         fi;
1500 done;
1501 for file in $create; do
1502         mkdir $file;
1503 done
1504 '
1505 for file in $*; do
1506         case "$src" in
1507         ".")
1508                 case "$file" in
1509                 */*)
1510                         dir=`expr X$file : 'X\(.*\)/'`
1511                         file=`expr X$file : 'X.*/\(.*\)'`
1512                         (cd $dir && . ./$file)
1513                         ;;
1514                 *)
1515                         . ./$file
1516                         ;;
1517                 esac
1518                 ;;
1519         *)
1520                 case "$file" in
1521                 */*)
1522                         dir=`expr X$file : 'X\(.*\)/'`
1523                         file=`expr X$file : 'X.*/\(.*\)'`
1524                         (set x $dir; shift; eval $mkdir_p)
1525                         sh <$src/$dir/$file
1526                         ;;
1527                 *)
1528                         sh <$src/$file
1529                         ;;
1530                 esac
1531                 ;;
1532         esac
1533 done
1534 if test -f $src/config_h.SH; then
1535         if test ! -f config.h; then
1536         : oops, they left it out of MANIFEST, probably, so do it anyway.
1537         . $src/config_h.SH
1538         fi
1539 fi
1540 EOS
1541
1542 : extract files and exit if asked to do so
1543 case "$extractsh" in
1544 true)
1545         case "$realsilent" in
1546         true) ;;
1547         *) exec 1>&4;;
1548         esac
1549         case "$config_sh" in
1550         '') config_sh='config.sh';;
1551         esac
1552         echo " "
1553         echo "Fetching answers from $config_sh..."
1554         cd ..
1555         . $config_sh
1556         test "$override" && . ./optdef.sh
1557         echo " "
1558         . UU/extract
1559         rm -rf UU
1560         echo "Done."
1561         exit 0
1562         ;;
1563 esac
1564
1565 : Eunice requires " " instead of "", can you believe it
1566 echo " "
1567 : Here we go...
1568 echo "Beginning of configuration questions for $package."
1569
1570 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1571
1572 : first determine how to suppress newline on echo command
1573 echo " "
1574 echo "Checking echo to see how to suppress newlines..."
1575 (echo "hi there\c" ; echo " ") >.echotmp
1576 if $contains c .echotmp >/dev/null 2>&1 ; then
1577         echo "...using -n."
1578         n='-n'
1579         c=''
1580 else
1581         cat <<'EOM'
1582 ...using \c
1583 EOM
1584         n=''
1585         c='\c'
1586 fi
1587 echo $n "The star should be here-->$c"
1588 echo '*'
1589 rm -f .echotmp
1590
1591 : Now test for existence of everything in MANIFEST
1592 echo " "
1593 if test -f $rsrc/MANIFEST; then
1594         echo "First let's make sure your kit is complete.  Checking..." >&4
1595         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1596         rm -f missing
1597         tmppwd=`pwd`
1598         for filelist in x??; do
1599                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1600         done
1601         if test -s missing; then
1602                 cat missing >&4
1603                 cat >&4 <<'EOM'
1604
1605 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1606
1607 You have the option of continuing the configuration process, despite the
1608 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1609 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1610 and contact the author (perlbug@perl.org).
1611
1612 EOM
1613                 echo $n "Continue? [n] $c" >&4
1614                 read ans
1615                 case "$ans" in
1616                 y*)
1617                         echo "Continuing..." >&4
1618                         rm -f missing
1619                         ;;
1620                 *)
1621                         echo "ABORTING..." >&4
1622                         kill $$
1623                         ;;
1624                 esac
1625         else
1626                 echo "Looks good..."
1627         fi
1628 else
1629         echo "There is no MANIFEST file.  I hope your kit is complete !"
1630 fi
1631 rm -f missing x??
1632
1633 echo " "
1634 : Find the appropriate value for a newline for tr
1635 if test -n "$DJGPP"; then
1636        trnl='\012'
1637 fi
1638 if test X"$trnl" = X; then
1639         case "`echo foo|tr '\n' x 2>/dev/null`" in
1640         foox) trnl='\n' ;;
1641         esac
1642 fi
1643 if test X"$trnl" = X; then
1644         case "`echo foo|tr '\012' x 2>/dev/null`" in
1645         foox) trnl='\012' ;;
1646         esac
1647 fi
1648 if test X"$trnl" = X; then
1649         cat <<EOM >&2
1650
1651 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1652
1653 EOM
1654         exit 1
1655 fi
1656
1657 : compute the number of columns on the terminal for proper question formatting
1658 case "$COLUMNS" in
1659 '') COLUMNS='80';;
1660 esac
1661
1662 : set up the echo used in my read
1663 myecho="case \"\$xxxm\" in
1664 '') echo $n \"\$rp $c\" >&4;;
1665 *) case \"\$rp\" in
1666         '') echo $n \"[\$xxxm] $c\";;
1667         *)
1668                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1669                         echo \"\$rp\" >&4
1670                         echo $n \"[\$xxxm] $c\" >&4
1671                 else
1672                         echo $n \"\$rp [\$xxxm] $c\" >&4
1673                 fi
1674                 ;;
1675         esac;;
1676 esac"
1677
1678 : now set up to do reads with possible shell escape and default assignment
1679 cat <<EOSC >myread
1680 $startsh
1681 xxxm=\$dflt
1682 $myecho
1683 ans='!'
1684 case "\$fastread" in
1685 yes) case "\$dflt" in
1686         '') ;;
1687         *) ans='';
1688                 case "\$silent-\$rp" in
1689                 true-) ;;
1690                 *) echo " " >&4;;
1691                 esac;;
1692         esac;;
1693 *) case "\$silent" in
1694         true) case "\$rp" in
1695                 '') ans='';;
1696                 esac;;
1697         esac;;
1698 esac
1699 while expr "X\$ans" : "X!" >/dev/null; do
1700         read answ
1701         set x \$xxxm
1702         shift
1703         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1704         case  "\$answ" in
1705         "!")
1706                 sh 1>&4
1707                 echo " "
1708                 $myecho
1709                 ;;
1710         !*)
1711                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1712                 shift
1713                 sh 1>&4 -c "\$*"
1714                 echo " "
1715                 $myecho
1716                 ;;
1717         "\$ans")
1718                 case "\$ans" in
1719                 \\&*)
1720                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1721                         shift
1722                         case "\$1" in
1723                         -d)
1724                                 fastread=yes
1725                                 echo "(OK, I'll run with -d after this question.)" >&4
1726                                 ;;
1727                         -*)
1728                                 echo "*** Sorry, \$1 not supported yet." >&4
1729                                 ;;
1730                         esac
1731                         $myecho
1732                         ans=!
1733                         ;;
1734                 esac;;
1735         *)
1736                 case "\$aok" in
1737                 y)
1738                         echo "*** Substitution done -- please confirm."
1739                         xxxm="\$ans"
1740                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1741                         xxxm="\$ans"
1742                         ans=!
1743                         ;;
1744                 *)
1745                         echo "*** Error -- try again."
1746                         ans=!
1747                         ;;
1748                 esac
1749                 $myecho
1750                 ;;
1751         esac
1752         case "\$ans\$xxxm\$nostick" in
1753         '')
1754                 ans=!
1755                 $myecho
1756                 ;;
1757         esac
1758 done
1759 case "\$ans" in
1760 '') ans="\$xxxm";;
1761 esac
1762 EOSC
1763
1764 : create .config dir to save info across Configure sessions
1765 test -d ../.config || mkdir ../.config
1766 cat >../.config/README <<EOF
1767 This directory created by Configure to save information that should
1768 persist across sessions for $package.
1769
1770 You may safely delete it if you wish.
1771 EOF
1772
1773 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1774 case "$usedevel" in
1775 $define|true|[yY]*) ;;
1776 *) case "$xversion" in
1777    *[13579])
1778         cat >&4 <<EOH
1779 *** WHOA THERE!!! ***
1780
1781     This is an UNSTABLE DEVELOPMENT release.
1782     The version of this $package distribution is $xversion, that is, odd,
1783     (as opposed to even) and that signifies a development release.
1784     If you want a maintenance release, you want an even-numbered version.
1785
1786     Do ***NOT*** install this into production use.
1787     Data corruption and crashes are possible.
1788
1789     It is most seriously suggested that you do not continue any further
1790     unless you want to help in developing and debugging Perl.
1791
1792 EOH
1793         rp='Do you really want to continue?'
1794         dflt='n'
1795         . ./myread
1796         case "$ans" in
1797         [yY]) echo >&4 "Okay, continuing." ;;
1798         *) echo >&4 "Okay, bye."
1799            exit 1
1800            ;;
1801         esac
1802         ;;
1803     esac
1804     ;;
1805 esac
1806
1807 : general instructions
1808 needman=true
1809 firsttime=true
1810 user=`(logname) 2>/dev/null`
1811 case "$user" in
1812 '') user=`whoami 2>&1`;;
1813 esac
1814 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1815         firsttime=false
1816         echo " "
1817         rp='Would you like to see the instructions?'
1818         dflt=n
1819         . ./myread
1820         case "$ans" in
1821         [yY]*) ;;
1822         *) needman=false;;
1823         esac
1824 fi
1825 if $needman; then
1826         cat <<EOH
1827
1828 This installation shell script will examine your system and ask you questions
1829 to determine how the perl5 package should be installed. If you get
1830 stuck on a question, you may use a ! shell escape to start a subshell or
1831 execute a command.  Many of the questions will have default answers in square
1832 brackets; typing carriage return will give you the default.
1833
1834 On some of the questions which ask for file or directory names you are allowed
1835 to use the ~name construct to specify the login directory belonging to "name",
1836 even if you don't have a shell which knows about that.  Questions where this is
1837 allowed will be marked "(~name ok)".
1838
1839 EOH
1840         rp=''
1841         dflt='Type carriage return to continue'
1842         . ./myread
1843         cat <<'EOH'
1844
1845 The prompter used in this script allows you to use shell variables and
1846 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1847 in the default answer, as if the default line was a set of arguments given to a
1848 script shell.  This means you may also use $* to repeat the whole default line,
1849 so you do not have to re-type everything to add something to the default.
1850
1851 Everytime there is a substitution, you will have to confirm.  If there is an
1852 error (e.g. an unmatched backtick), the default answer will remain unchanged
1853 and you will be prompted again.
1854
1855 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1856 the questions and use the computed defaults (or the previous answers if there
1857 was already a config.sh file). Type 'Configure -h' for a list of options.
1858 You may also start interactively and then answer '& -d' at any prompt to turn
1859 on the non-interactive behaviour for the remainder of the execution.
1860
1861 EOH
1862         . ./myread
1863         cat <<EOH
1864
1865 Much effort has been expended to ensure that this shell script will run on any
1866 Unix system.  If despite that it blows up on yours, your best bet is to edit
1867 Configure and run it again.  If you can't run Configure for some reason,
1868 you'll have to generate a config.sh file by hand.  Whatever problems you
1869 have, let me (perlbug@perl.org) know how I blew it.
1870
1871 This installation script affects things in two ways:
1872
1873 1) it may do direct variable substitutions on some of the files included
1874    in this kit.
1875 2) it builds a config.h file for inclusion in C programs.  You may edit
1876    any of these files as the need arises after running this script.
1877
1878 If you make a mistake on a question, there is no easy way to back up to it
1879 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1880 files.  Configure will offer to let you do this before it runs the SH files.
1881
1882 EOH
1883         dflt='Type carriage return to continue'
1884         . ./myread
1885         case "$firsttime" in
1886         true) echo $user >>../.config/instruct;;
1887         esac
1888 fi
1889
1890 : find out where common programs are
1891 echo " "
1892 echo "Locating common programs..." >&4
1893 cat <<EOSC >loc
1894 $startsh
1895 case \$# in
1896 0) exit 1;;
1897 esac
1898 thing=\$1
1899 shift
1900 dflt=\$1
1901 shift
1902 for dir in \$*; do
1903         case "\$thing" in
1904         .)
1905         if test -d \$dir/\$thing; then
1906                 echo \$dir
1907                 exit 0
1908         fi
1909         ;;
1910         *)
1911         for thisthing in \$dir/\$thing; do
1912                 : just loop through to pick last item
1913         done
1914         if test -f \$thisthing; then
1915                 echo \$thisthing
1916                 exit 0
1917         elif test -f \$dir/\$thing.exe; then
1918                 if test -n "$DJGPP"; then
1919                         echo \$dir/\$thing.exe
1920                 else
1921                         : on Eunice apparently
1922                         echo \$dir/\$thing
1923                 fi
1924                 exit 0
1925         fi
1926         ;;
1927         esac
1928 done
1929 echo \$dflt
1930 exit 1
1931 EOSC
1932 chmod +x loc
1933 $eunicefix loc
1934 loclist="
1935 awk
1936 cat
1937 comm
1938 cp
1939 echo
1940 expr
1941 grep
1942 ls
1943 make
1944 mkdir
1945 rm
1946 sed
1947 sort
1948 touch
1949 tr
1950 uniq
1951 "
1952 trylist="
1953 Mcc
1954 ar
1955 byacc
1956 cpp
1957 csh
1958 date
1959 egrep
1960 gzip
1961 less
1962 ln
1963 more
1964 nm
1965 nroff
1966 pg
1967 test
1968 uname
1969 zip
1970 "
1971 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1972 pth="$pth /lib /usr/lib"
1973 for file in $loclist; do
1974         eval xxx=\$$file
1975         case "$xxx" in
1976         /*|?:[\\/]*)
1977                 if test -f "$xxx"; then
1978                         : ok
1979                 else
1980                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1981                         xxx=`./loc $file $file $pth`
1982                 fi
1983                 ;;
1984         '') xxx=`./loc $file $file $pth`;;
1985         *) xxx=`./loc $xxx $xxx $pth`;;
1986         esac
1987         eval $file=$xxx
1988         eval _$file=$xxx
1989         case "$xxx" in
1990         /*)
1991                 echo $file is in $xxx.
1992                 ;;
1993         ?:[\\/]*)
1994                 echo $file is in $xxx.
1995                 ;;
1996         *)
1997                 echo "I don't know where '$file' is, and my life depends on it." >&4
1998                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1999                 exit 1
2000                 ;;
2001         esac
2002 done
2003 echo " "
2004 echo "Don't worry if any of the following aren't found..."
2005 say=offhand
2006 for file in $trylist; do
2007         eval xxx=\$$file
2008         case "$xxx" in
2009         /*|?:[\\/]*)
2010                 if test -f "$xxx"; then
2011                         : ok
2012                 else
2013                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2014                         xxx=`./loc $file $file $pth`
2015                 fi
2016                 ;;
2017         '') xxx=`./loc $file $file $pth`;;
2018         *) xxx=`./loc $xxx $xxx $pth`;;
2019         esac
2020         eval $file=$xxx
2021         eval _$file=$xxx
2022         case "$xxx" in
2023         /*)
2024                 echo $file is in $xxx.
2025                 ;;
2026         ?:[\\/]*)
2027                 echo $file is in $xxx.
2028                 ;;
2029         *)
2030                 echo "I don't see $file out there, $say."
2031                 say=either
2032                 ;;
2033         esac
2034 done
2035 case "$egrep" in
2036 egrep)
2037         echo "Substituting grep for egrep."
2038         egrep=$grep
2039         ;;
2040 esac
2041 case "$ln" in
2042 ln)
2043         echo "Substituting cp for ln."
2044         ln=$cp
2045         ;;
2046 esac
2047 case "$test" in
2048 test)
2049         echo "Hopefully test is built into your sh."
2050         ;;
2051 *)
2052         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2053                 echo "Using the test built into your sh."
2054                 test=test
2055                 _test=test
2056         fi
2057         ;;
2058 esac
2059 case "$echo" in
2060 echo)
2061         echo "Hopefully echo is built into your sh."
2062         ;;
2063 '') ;;
2064 *)
2065         echo " "
2066 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2067         $echo $n "hi there$c" >foo1
2068         echo $n "hi there$c" >foo2
2069         if cmp foo1 foo2 >/dev/null 2>&1; then
2070                 echo "They are compatible.  In fact, they may be identical."
2071         else
2072                 case "$n" in
2073                 '-n') n='' c='\c';;
2074                 *) n='-n' c='';;
2075                 esac
2076                 cat <<FOO
2077 They are not compatible!  You are probably running ksh on a non-USG system.
2078 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2079 have echo built in and we may have to run some Bourne shell scripts.  That
2080 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2081
2082 FOO
2083                 $echo $n "The star should be here-->$c"
2084                 $echo "*"
2085         fi
2086         $rm -f foo1 foo2
2087         ;;
2088 esac
2089
2090 cat <<EOS >checkcc
2091 $startsh
2092 EOS
2093 cat <<'EOSC' >>checkcc
2094 case "$cc" in
2095 '') ;;
2096 *)  $rm -f try try.*
2097     $cat >try.c <<EOM
2098 int main(int argc, char *argv[]) {
2099   return 0;
2100 }
2101 EOM
2102     if $cc -o try try.c; then
2103        :
2104     else
2105         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2106         despair=yes
2107         trygcc=yes
2108         case "$cc" in
2109         *gcc*) trygcc=no ;;
2110         esac
2111         case "`$cc -v -c try.c 2>&1`" in
2112         *gcc*) trygcc=no ;;
2113         esac
2114         if $test X"$trygcc" = Xyes; then
2115             if gcc -o try -c try.c; then
2116                 echo " "
2117                 echo "You seem to have a working gcc, though." >&4
2118                 rp="Would you like to use it?"
2119                 dflt=y
2120                 if $test -f myread; then
2121                     . ./myread
2122                 else
2123                     if $test -f UU/myread; then
2124                         . ./UU/myread
2125                     else
2126                         echo "Cannot find myread, sorry.  Aborting." >&2
2127                         exit 1
2128                     fi
2129                 fi  
2130                 case "$ans" in
2131                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2132                 esac
2133             fi
2134         fi
2135         if $test X"$despair" = Xyes; then
2136             echo "You need to find a working C compiler." >&4
2137             echo "I cannot continue any further, aborting." >&4
2138             exit 1
2139         fi
2140     fi
2141     $rm -f try try.*
2142     ;;
2143 esac
2144 EOSC
2145
2146 : determine whether symbolic links are supported
2147 echo " "
2148 $touch blurfl
2149 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2150         echo "Symbolic links are supported." >&4
2151         lns="$ln -s"
2152 else
2153         echo "Symbolic links are NOT supported." >&4
2154         lns="$ln"
2155 fi
2156 $rm -f blurfl sym
2157
2158 : see whether [:lower:] and [:upper:] are supported character classes
2159 echo " "
2160 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2161 ABYZ)
2162         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2163         up='[:upper:]'
2164         low='[:lower:]'
2165         ;;
2166 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2167         # (0xc9 and 0xd1), therefore that is a nice testing point.
2168         if test "X$up" = X -o "X$low" = X; then
2169             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2170             ij) up='[A-Z]'
2171                 low='[a-z]'
2172                 ;;
2173             esac
2174         fi
2175         if test "X$up" = X -o "X$low" = X; then
2176             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2177             ij) up='A-Z'
2178                 low='a-z'
2179                 ;;
2180             esac
2181         fi
2182         if test "X$up" = X -o "X$low" = X; then
2183             case "`echo IJ | od -x 2>/dev/null`" in
2184             *C9D1*|*c9d1*)
2185                 echo "Hey, this might be EBCDIC." >&4
2186                 if test "X$up" = X -o "X$low" = X; then
2187                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2188                     ij) up='[A-IJ-RS-Z]'
2189                         low='[a-ij-rs-z]'
2190                         ;;
2191                     esac
2192                 fi
2193                 if test "X$up" = X -o "X$low" = X; then
2194                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2195                     ij) up='A-IJ-RS-Z'
2196                         low='a-ij-rs-z'
2197                         ;;
2198                     esac
2199                 fi
2200                 ;;
2201             esac
2202         fi
2203 esac
2204 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2205 ij)
2206     echo "Using $up and $low to convert case." >&4
2207     ;;
2208 *)
2209     echo "I don't know how to translate letters from upper to lower case." >&4
2210     echo "Your tr is not acting any way I know of." >&4
2211     exit 1
2212     ;;
2213 esac
2214 : set up the translation script tr, must be called with ./tr of course
2215 cat >tr <<EOSC
2216 $startsh
2217 case "\$1\$2" in
2218 '[A-Z][a-z]') exec $tr '$up' '$low';;
2219 '[a-z][A-Z]') exec $tr '$low' '$up';;
2220 esac
2221 exec $tr "\$@"
2222 EOSC
2223 chmod +x tr
2224 $eunicefix tr
2225
2226 : Try to determine whether config.sh was made on this system
2227 case "$config_sh" in
2228 '')
2229 myuname=`$uname -a 2>/dev/null`
2230 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2231 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2232 # because the A-Z/a-z are not consecutive.
2233 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2234         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2235 newmyuname="$myuname"
2236 dflt=n
2237 case "$knowitall" in
2238 '')
2239         if test -f ../config.sh; then
2240                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2241                         eval "`grep myuname= ../config.sh`"
2242                 fi
2243                 if test "X$myuname" = "X$newmyuname"; then
2244                         dflt=y
2245                 fi
2246         fi
2247         ;;
2248 *) dflt=y;;
2249 esac
2250
2251 : Get old answers from old config file if Configure was run on the
2252 : same system, otherwise use the hints.
2253 hint=default
2254 cd ..
2255 if test -f config.sh; then
2256         echo " "
2257         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2258         . UU/myread
2259         case "$ans" in
2260         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2261         *)  echo "Fetching default answers from your old config.sh file..." >&4
2262                 tmp_n="$n"
2263                 tmp_c="$c"
2264                 tmp_sh="$sh"
2265                 . ./config.sh
2266                 cp config.sh UU
2267                 n="$tmp_n"
2268                 c="$tmp_c"
2269                 : Older versions did not always set $sh.  Catch re-use of such
2270                 : an old config.sh.
2271                 case "$sh" in
2272                 '') sh="$tmp_sh" ;;
2273                 esac
2274                 hint=previous
2275                 ;;
2276         esac
2277 fi
2278 . ./UU/checkcc
2279 if test ! -f config.sh; then
2280         $cat <<EOM
2281
2282 First time through, eh?  I have some defaults handy for some systems
2283 that need some extra help getting the Configure answers right:
2284
2285 EOM
2286         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2287         dflt=''
2288         : Half the following guesses are probably wrong... If you have better
2289         : tests or hints, please send them to perlbug@perl.org
2290         : The metaconfig authors would also appreciate a copy...
2291         $test -f /irix && osname=irix
2292         $test -f /xenix && osname=sco_xenix
2293         $test -f /dynix && osname=dynix
2294         $test -f /dnix && osname=dnix
2295         $test -f /lynx.os && osname=lynxos
2296         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2297         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2298         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2299         $test -f /bin/mips && /bin/mips && osname=mips
2300         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2301                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2302         $test -d /usr/apollo/bin && osname=apollo
2303         $test -f /etc/saf/_sactab && osname=svr4
2304         $test -d /usr/include/minix && osname=minix
2305         if $test -d /MachTen -o -d /MachTen_Folder; then
2306                 osname=machten
2307                 if $test -x /sbin/version; then
2308                         osvers=`/sbin/version | $awk '{print $2}' |
2309                         $sed -e 's/[A-Za-z]$//'`
2310                 elif $test -x /usr/etc/version; then
2311                         osvers=`/usr/etc/version | $awk '{print $2}' |
2312                         $sed -e 's/[A-Za-z]$//'`
2313                 else
2314                         osvers="$2.$3"
2315                 fi
2316         fi
2317
2318         $test -f /sys/posix.dll &&
2319                 $test -f /usr/bin/what &&
2320                 set X `/usr/bin/what /sys/posix.dll` &&
2321                 $test "$3" = UWIN &&
2322                 osname=uwin &&
2323                 osvers="$5"
2324
2325         if $test -f $uname; then
2326                 set X $myuname
2327                 shift
2328
2329                 case "$5" in
2330                 fps*) osname=fps ;;
2331                 mips*)
2332                         case "$4" in
2333                         umips) osname=umips ;;
2334                         *) osname=mips ;;
2335                         esac;;
2336                 [23]100) osname=mips ;;
2337                 next*) osname=next ;;
2338                 i386*)
2339                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2340                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2341                                 osname='sco'
2342                                 osvers=$tmp
2343                         elif $test -f /etc/kconfig; then
2344                                 osname=isc
2345                                 if test "$lns" = "$ln -s"; then
2346                                         osvers=4
2347                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2348                                         osvers=3
2349                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2350                                         osvers=2
2351                                 fi
2352                         fi
2353                         tmp=''
2354                         ;;
2355                 pc*)
2356                         if test -n "$DJGPP"; then
2357                                 osname=dos
2358                                 osvers=djgpp
2359                         fi
2360                         ;;
2361                 esac
2362
2363                 case "$1" in
2364                 aix) osname=aix
2365                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2366                         case "$tmp" in
2367                         'not found') osvers="$4"."$3" ;;
2368                         '<3240'|'<>3240') osvers=3.2.0 ;;
2369                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2370                         '=3250'|'>3250') osvers=3.2.5 ;;
2371                         *) osvers=$tmp;;
2372                         esac
2373                         ;;
2374                 bsd386) osname=bsd386
2375                         osvers=`$uname -r`
2376                         ;;
2377                 cygwin*) osname=cygwin
2378                         osvers="$3"
2379                         ;;
2380                 *dc.osx) osname=dcosx
2381                         osvers="$3"
2382                         ;;
2383                 dnix) osname=dnix
2384                         osvers="$3"
2385                         ;;
2386                 domainos) osname=apollo
2387                         osvers="$3"
2388                         ;;
2389                 dgux) osname=dgux 
2390                         osvers="$3"
2391                         ;;
2392                 dynixptx*) osname=dynixptx
2393                         osvers=`echo "$4"|sed 's/^v//'`
2394                         ;;
2395                 freebsd) osname=freebsd 
2396                         osvers="$3" ;;
2397                 genix) osname=genix ;;
2398                 hp*) osname=hpux 
2399                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2400                         ;;
2401                 irix*) osname=irix
2402                         case "$3" in
2403                         4*) osvers=4 ;;
2404                         5*) osvers=5 ;;
2405                         *)      osvers="$3" ;;
2406                         esac
2407                         ;;
2408                 linux) osname=linux
2409                         case "$3" in
2410                         *)      osvers="$3" ;;
2411                         esac
2412                         ;;
2413                 MiNT) osname=mint
2414                         ;;
2415                 netbsd*) osname=netbsd
2416                         osvers="$3"
2417                         ;;
2418                 news-os) osvers="$3"
2419                         case "$3" in
2420                         4*) osname=newsos4 ;;
2421                         *) osname=newsos ;;
2422                         esac
2423                         ;;
2424                 next*) osname=next ;;
2425                 POSIX-BC | posix-bc ) osname=posix-bc
2426                         osvers="$3"
2427                         ;;
2428                 powerux | power_ux | powermax_os | powermaxos | \
2429                 powerunix | power_unix) osname=powerux
2430                         osvers="$3"
2431                         ;;
2432                 qnx) osname=qnx
2433                         osvers="$4"
2434                         ;;
2435                 solaris) osname=solaris
2436                         case "$3" in
2437                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2438                         *)      osvers="$3" ;;
2439                         esac
2440                         ;;
2441                 sunos) osname=sunos
2442                         case "$3" in
2443                         5*) osname=solaris
2444                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2445                         *)      osvers="$3" ;;
2446                         esac
2447                         ;;
2448                 titanos) osname=titanos
2449                         case "$3" in
2450                         1*) osvers=1 ;;
2451                         2*) osvers=2 ;;
2452                         3*) osvers=3 ;;
2453                         4*) osvers=4 ;;
2454                         *)      osvers="$3" ;;
2455                         esac
2456                         ;;
2457                 ultrix) osname=ultrix
2458                         osvers="$3"
2459                         ;;
2460                 osf1|mls+)      case "$5" in
2461                                 alpha)
2462                                         osname=dec_osf
2463                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2464                                         case "$osvers" in
2465                                         [1-9].[0-9]*) ;;
2466                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2467                                         esac
2468                                         ;;
2469                         hp*)    osname=hp_osf1  ;;
2470                         mips)   osname=mips_osf1 ;;
2471                         esac
2472                         ;;
2473                 unixware) osname=svr5
2474                         osvers="$4"
2475                         ;;
2476                 uts) osname=uts
2477                         osvers="$3"
2478                         ;;
2479                 $2) case "$osname" in
2480                         *isc*) ;;
2481                         *freebsd*) ;;
2482                         svr*)
2483                                 : svr4.x or possibly later
2484                                 case "svr$3" in 
2485                                 ${osname}*)
2486                                         osname=svr$3
2487                                         osvers=$4
2488                                         ;;
2489                                 esac
2490                                 case "$osname" in
2491                                 svr4.0)
2492                                         : Check for ESIX
2493                                         if test -f /stand/boot ; then
2494                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2495                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2496                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2497                                                         if test -n "$isesix"; then
2498                                                                 osname=esix4
2499                                                         fi
2500                                                 fi
2501                                         fi
2502                                         ;;
2503                                 esac
2504                                 ;;
2505                         *)      if test -f /etc/systemid; then
2506                                         osname=sco
2507                                         set `echo $3 | $sed 's/\./ /g'` $4
2508                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2509                                                 osvers=$1.$2.$3
2510                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2511                                                 osvers=$1.$2
2512                                         elif $test -f $src/hints/sco_$1.sh; then
2513                                                 osvers=$1
2514                                         fi
2515                                 else
2516                                         case "$osname" in
2517                                         '') : Still unknown.  Probably a generic Sys V.
2518                                                 osname="sysv"
2519                                                 osvers="$3"
2520                                                 ;;
2521                                         esac
2522                                 fi
2523                                 ;;
2524                         esac
2525                         ;;
2526                 *)      case "$osname" in
2527                         '') : Still unknown.  Probably a generic BSD.
2528                                 osname="$1"
2529                                 osvers="$3"
2530                                 ;;
2531                         esac
2532                         ;;
2533                 esac
2534         else
2535                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2536                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2537                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2538                                 osname=news_os
2539                         fi
2540                         $rm -f UU/kernel.what
2541                 elif test -d c:/.; then
2542                         set X $myuname
2543                         osname=os2
2544                         osvers="$5"
2545                 fi
2546         fi
2547         
2548         : Now look for a hint file osname_osvers, unless one has been
2549         : specified already.
2550         case "$hintfile" in
2551         ''|' ')
2552                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2553                 : Also try without trailing minor version numbers.
2554                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2555                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2556                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2557                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2558                 case "$file" in
2559                 '') dflt=none ;;
2560                 *)  case "$osvers" in
2561                         '') dflt=$file
2562                                 ;;
2563                         *)  if $test -f $src/hints/$file.sh ; then
2564                                         dflt=$file
2565                                 elif $test -f $src/hints/$xfile.sh ; then
2566                                         dflt=$xfile
2567                                 elif $test -f $src/hints/$xxfile.sh ; then
2568                                         dflt=$xxfile
2569                                 elif $test -f $src/hints/$xxxfile.sh ; then
2570                                         dflt=$xxxfile
2571                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2572                                         dflt=$xxxxfile
2573                                 elif $test -f "$src/hints/${osname}.sh" ; then
2574                                         dflt="${osname}"
2575                                 else
2576                                         dflt=none
2577                                 fi
2578                                 ;;
2579                         esac
2580                         ;;
2581                 esac
2582                 if $test -f Policy.sh ; then
2583                         case "$dflt" in
2584                         *Policy*) ;;
2585                         none) dflt="Policy" ;;
2586                         *) dflt="Policy $dflt" ;;
2587                         esac
2588                 fi
2589                 ;;
2590         *)
2591                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2592                 ;;
2593         esac
2594
2595         if $test -f Policy.sh ; then
2596                 $cat <<EOM
2597
2598 There's also a Policy hint file available, which should make the
2599 site-specific (policy) questions easier to answer.
2600 EOM
2601
2602         fi
2603
2604         $cat <<EOM
2605
2606 You may give one or more space-separated answers, or "none" if appropriate.
2607 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2608 is a good thing.  DO NOT give a wrong version or a wrong OS.
2609
2610 EOM
2611
2612         rp="Which of these apply, if any?"
2613         . UU/myread
2614         tans=$ans
2615         for file in $tans; do
2616                 if $test X$file = XPolicy -a -f Policy.sh; then
2617                         . Policy.sh
2618                         $cat Policy.sh >> UU/config.sh
2619                 elif $test -f $src/hints/$file.sh; then
2620                         . $src/hints/$file.sh
2621                         $cat $src/hints/$file.sh >> UU/config.sh
2622                 elif $test X$tans = X -o X$tans = Xnone ; then
2623                         : nothing
2624                 else
2625                         : Give one chance to correct a possible typo.
2626                         echo "$file.sh does not exist"
2627                         dflt=$file
2628                         rp="hint to use instead?"
2629                         . UU/myread
2630                         for file in $ans; do
2631                                 if $test -f "$src/hints/$file.sh"; then
2632                                         . $src/hints/$file.sh
2633                                         $cat $src/hints/$file.sh >> UU/config.sh
2634                                 elif $test X$ans = X -o X$ans = Xnone ; then
2635                                         : nothing
2636                                 else
2637                                         echo "$file.sh does not exist -- ignored."
2638                                 fi
2639                         done
2640                 fi
2641         done
2642
2643         hint=recommended
2644         : Remember our hint file for later.
2645         if $test -f "$src/hints/$file.sh" ; then
2646                 hintfile="$file"
2647         else
2648                 hintfile=''
2649         fi
2650 fi
2651 cd UU
2652 ;;
2653 *)
2654         echo " "
2655         echo "Fetching default answers from $config_sh..." >&4
2656         tmp_n="$n"
2657         tmp_c="$c"
2658         cd ..
2659         cp $config_sh config.sh 2>/dev/null
2660         chmod +w config.sh
2661         . ./config.sh
2662         cd UU
2663         cp ../config.sh .
2664         n="$tmp_n"
2665         c="$tmp_c"
2666         hint=previous
2667         ;;
2668 esac
2669 test "$override" && . ./optdef.sh
2670 myuname="$newmyuname"
2671
2672 : Restore computed paths
2673 for file in $loclist $trylist; do
2674         eval $file="\$_$file"
2675 done
2676
2677 cat << EOM
2678
2679 Configure uses the operating system name and version to set some defaults.
2680 The default value is probably right if the name rings a bell. Otherwise,
2681 since spelling matters for me, either accept the default or answer "none"
2682 to leave it blank.
2683
2684 EOM
2685 case "$osname" in
2686         ''|' ')
2687                 case "$hintfile" in
2688                 ''|' '|none) dflt=none ;;
2689                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2690                 esac
2691                 ;;
2692         *) dflt="$osname" ;;
2693 esac
2694 rp="Operating system name?"
2695 . ./myread
2696 case "$ans" in
2697 none)  osname='' ;;
2698 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2699 esac
2700 echo " "
2701 case "$osvers" in
2702         ''|' ')
2703                 case "$hintfile" in
2704                 ''|' '|none) dflt=none ;;
2705                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2706                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2707                         case "$dflt" in
2708                         ''|' ') dflt=none ;;
2709                         esac
2710                         ;;
2711                 esac
2712                 ;;
2713         *) dflt="$osvers" ;;
2714 esac
2715 rp="Operating system version?"
2716 . ./myread
2717 case "$ans" in
2718 none)  osvers='' ;;
2719 *) osvers="$ans" ;;
2720 esac
2721
2722
2723 . ./posthint.sh
2724
2725 : who configured the system
2726 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2727 cf_by=`(logname) 2>/dev/null`
2728 case "$cf_by" in
2729 "")
2730         cf_by=`(whoami) 2>/dev/null`
2731         case "$cf_by" in
2732         "") cf_by=unknown ;;
2733         esac ;;
2734 esac
2735
2736 : set up the script used to warn in case of inconsistency
2737 cat <<EOS >whoa
2738 $startsh
2739 EOS
2740 cat <<'EOSC' >>whoa
2741 dflt=y
2742 echo " "
2743 echo "*** WHOA THERE!!! ***" >&4
2744 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2745 rp="    Keep the $hint value?"
2746 . ./myread
2747 case "$ans" in
2748 y) td=$was; tu=$was;;
2749 esac
2750 EOSC
2751
2752 : function used to set $1 to $val
2753 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2754 case "$val$was" in
2755 $define$undef) . ./whoa; eval "$var=\$td";;
2756 $undef$define) . ./whoa; eval "$var=\$tu";;
2757 *) eval "$var=$val";;
2758 esac'
2759
2760 case "$usethreads" in
2761 $define|true|[yY]*)     dflt='y';;
2762 *) dflt='n';;
2763 esac
2764 cat <<EOM
2765
2766 Perl can be built to take advantage of threads on some systems.
2767 To do so, Configure can be run with -Dusethreads.
2768
2769 Note that threading is a highly experimental feature, and
2770 some known race conditions still remain.  If you choose to try
2771 it, be very sure to not actually deploy it for production
2772 purposes.  README.threads has more details, and is required
2773 reading if you enable threads.
2774
2775 If this doesn't make any sense to you, just accept the default '$dflt'.
2776 EOM
2777 rp='Build a threading Perl?'
2778 . ./myread
2779 case "$ans" in
2780 y|Y)    val="$define" ;;
2781 *)      val="$undef" ;;
2782 esac
2783 set usethreads
2784 eval $setvar
2785
2786 case "$usethreads" in
2787 $define)
2788         $cat <<EOM
2789
2790 As of 5.5.640, Perl has two different internal threading implementations,
2791 the 5.005 version (5005threads) and an interpreter-based version
2792 (ithreads) that has one interpreter per thread.  Both are very 
2793 experimental.  This arrangement exists to help developers work out
2794 which one is better.
2795
2796 If you're a casual user, you probably don't want interpreter-threads
2797 at this time.  There doesn't yet exist a way to create threads from
2798 within Perl in this model, i.e., "use Thread;" will NOT work.
2799 EOM
2800         : Default to ithreads unless overridden on command line or with
2801         : old config.sh
2802         dflt='y'
2803         case "$use5005threads" in
2804                 $define|true|[yY]*) dflt='n';;
2805         esac
2806         case "$useithreads" in
2807                 $undef|false|[nN]*) dflt='n';;
2808         esac
2809         rp='Use interpreter-based ithreads?'
2810         . ./myread
2811         case "$ans" in
2812         y|Y)    val="$define" ;;
2813         *)      val="$undef" ;;
2814         esac
2815         set useithreads
2816         eval $setvar
2817         : Now set use5005threads to the opposite value.
2818         case "$useithreads" in
2819         $define) val="$undef" ;;
2820         *) val="$define" ;;
2821         esac
2822         set use5005threads
2823         eval $setvar
2824         ;;
2825 *)
2826         useithreads="$undef"
2827         use5005threads="$undef"
2828         ;;
2829 esac
2830
2831 case "$d_oldpthreads" in
2832 '')     : Configure tests would be welcome here.  For now, assume undef.
2833         val="$undef" ;;
2834 *)      val="$d_oldpthreads" ;;
2835 esac
2836 set d_oldpthreads
2837 eval $setvar
2838
2839
2840 case "$usethreads" in
2841 "$define"|true|[yY]*)
2842 : Look for a hint-file generated 'call-back-unit'.  If the
2843 : user has specified that a threading perl is to be built,
2844 : we may need to set or change some other defaults.
2845         if $test -f usethreads.cbu; then
2846                 echo "Your platform has some specific hints for threaded builds, using them..."
2847                 . ./usethreads.cbu
2848         else
2849                 $cat <<EOM
2850 (Your platform doesn't have any specific hints for threaded builds.
2851  Assuming POSIX threads, then.)
2852 EOM
2853         fi
2854         ;;
2855 esac
2856
2857 cat <<EOM
2858
2859 Perl can be built so that multiple Perl interpreters can coexist
2860 within the same Perl executable.
2861 EOM
2862
2863 case "$useithreads" in
2864 $define)
2865         cat <<EOM
2866 This multiple interpreter support is required for interpreter-based threads.
2867 EOM
2868         val="$define"
2869         ;;
2870 *)      case "$usemultiplicity" in
2871         $define|true|[yY]*)     dflt='y';;
2872         *) dflt='n';;
2873         esac
2874         echo " "
2875         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2876         rp='Build Perl for multiplicity?'
2877         . ./myread
2878         case "$ans" in
2879         y|Y)    val="$define" ;;
2880         *)      val="$undef" ;;
2881         esac
2882         ;;
2883 esac
2884 set usemultiplicity
2885 eval $setvar
2886
2887 : make some quick guesses about what we are up against
2888 echo " "
2889 $echo $n "Hmm...  $c"
2890 echo exit 1 >bsd
2891 echo exit 1 >usg
2892 echo exit 1 >v7
2893 echo exit 1 >osf1
2894 echo exit 1 >eunice
2895 echo exit 1 >xenix
2896 echo exit 1 >venix
2897 echo exit 1 >os2
2898 d_bsd="$undef"
2899 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2900 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2901 then
2902         echo "Looks kind of like an OSF/1 system, but we'll see..."
2903         echo exit 0 >osf1
2904 elif test `echo abc | tr a-z A-Z` = Abc ; then
2905         xxx=`./loc addbib blurfl $pth`
2906         if $test -f $xxx; then
2907         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2908                 echo exit 0 >bsd
2909                 echo exit 0 >usg
2910         else
2911                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2912                         echo "Looks kind of like an extended USG system, but we'll see..."
2913                 else
2914                         echo "Looks kind of like a USG system, but we'll see..."
2915                 fi
2916                 echo exit 0 >usg
2917         fi
2918 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2919         echo "Looks kind of like a BSD system, but we'll see..."
2920         d_bsd="$define"
2921         echo exit 0 >bsd
2922 else
2923         echo "Looks kind of like a Version 7 system, but we'll see..."
2924         echo exit 0 >v7
2925 fi
2926 case "$eunicefix" in
2927 *unixtovms*)
2928         $cat <<'EOI'
2929 There is, however, a strange, musty smell in the air that reminds me of
2930 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2931 EOI
2932         echo exit 0 >eunice
2933         d_eunice="$define"
2934 : it so happens the Eunice I know will not run shell scripts in Unix format
2935         ;;
2936 *)
2937         echo " "
2938         echo "Congratulations.  You aren't running Eunice."
2939         d_eunice="$undef"
2940         ;;
2941 esac
2942 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2943 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2944 : semicolon as a patch separator
2945 case "$p_" in
2946 :) ;;
2947 *)
2948         $cat <<'EOI'
2949 I have the feeling something is not exactly right, however...don't tell me...
2950 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2951 (Or you may be running DOS with DJGPP.)
2952 EOI
2953         echo exit 0 >os2
2954         ;;
2955 esac
2956 if test -f /xenix; then
2957         echo "Actually, this looks more like a XENIX system..."
2958         echo exit 0 >xenix
2959         d_xenix="$define"
2960 else
2961         echo " "
2962         echo "It's not Xenix..."
2963         d_xenix="$undef"
2964 fi
2965 chmod +x xenix
2966 $eunicefix xenix
2967 if test -f /venix; then
2968         echo "Actually, this looks more like a VENIX system..."
2969         echo exit 0 >venix
2970 else
2971         echo " "
2972         if ./xenix; then
2973                 : null
2974         else
2975                 echo "Nor is it Venix..."
2976         fi
2977 fi
2978 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2979 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2980 $rm -f foo
2981
2982 case "$cc" in
2983 '') dflt=cc;;
2984 *) dflt="$cc";;
2985 esac
2986 rp="Use which C compiler?"
2987 . ./myread
2988 cc="$ans"
2989 : Look for a hint-file generated 'call-back-unit'.  Now that the
2990 : user has specified the compiler, we may need to set or change some
2991 : other defaults.
2992 if $test -f cc.cbu; then
2993     . ./cc.cbu
2994 fi
2995 . ./checkcc
2996
2997 echo " "
2998 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2999 $cat >gccvers.c <<EOM
3000 #include <stdio.h>
3001 int main() {
3002 #ifdef __GNUC__
3003 #ifdef __VERSION__
3004         printf("%s\n", __VERSION__);
3005 #else
3006         printf("%s\n", "1");
3007 #endif
3008 #endif
3009         exit(0);
3010 }
3011 EOM
3012 if $cc $ldflags -o gccvers gccvers.c; then
3013         gccversion=`./gccvers`
3014         case "$gccversion" in
3015         '') echo "You are not using GNU cc." ;;
3016         *)  echo "You are using GNU cc $gccversion."
3017             ccname=gcc  
3018             ;;
3019         esac
3020 else
3021         echo " "
3022         echo "*** WHOA THERE!!! ***" >&4
3023         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3024         case "$knowitall" in
3025         '')
3026         echo "    You'd better start hunting for one and let me know about it." >&4
3027                 exit 1
3028                 ;;
3029         esac
3030 fi
3031 $rm -f gccvers*
3032 case "$gccversion" in
3033 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3034 esac
3035 case "$gccversion" in
3036 '') gccosandvers='' ;;
3037 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3038    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3039    gccshortvers=''
3040    case "$gccosandvers" in
3041    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3042    $osname$osvers) ;; # looking good
3043    $osname*) cat <<EOM >&4
3044
3045 *** WHOA THERE!!! ***
3046
3047     Your gcc has not been compiled for the exact release of
3048     your operating system ($gccosandvers versus $osname$osvers).
3049
3050     In general it is a good idea to keep gcc synchronized with
3051     the operating system because otherwise serious problems
3052     may ensue when trying to compile software, like Perl.
3053
3054     I'm trying to be optimistic here, though, and will continue.
3055     If later during the configuration and build icky compilation
3056     problems appear (headerfile conflicts being the most common
3057     manifestation), I suggest reinstalling the gcc to match
3058     your operating system release.
3059
3060 EOM
3061       ;;
3062    *) gccosandvers='' ;; # failed to parse, better be silent
3063    esac
3064    ;;
3065 esac
3066 case "$ccname" in
3067 '') ccname="$cc" ;;
3068 esac
3069
3070 : see how we invoke the C preprocessor
3071 echo " "
3072 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3073 cat <<'EOT' >testcpp.c
3074 #define ABC abc
3075 #define XYZ xyz
3076 ABC.XYZ
3077 EOT
3078 cd ..
3079 if test ! -f cppstdin; then
3080         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3081                 # AIX cc -E doesn't show the absolute headerfile
3082                 # locations but we'll cheat by using the -M flag.
3083                 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
3084         else
3085                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3086         fi
3087 else
3088         echo "Keeping your $hint cppstdin wrapper."
3089 fi
3090 chmod 755 cppstdin
3091 wrapper=`pwd`/cppstdin
3092 ok='false'
3093 cd UU
3094
3095 if $test "X$cppstdin" != "X" && \
3096         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3097         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3098 then
3099         echo "You used to use $cppstdin $cppminus so we'll use that again."
3100         case "$cpprun" in
3101         '') echo "But let's see if we can live without a wrapper..." ;;
3102         *)
3103                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3104                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3105                 then
3106                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3107                         ok='true'
3108                 else
3109                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3110                 fi
3111                 ;;
3112         esac
3113 else
3114         case "$cppstdin" in
3115         '') ;;
3116         *)
3117                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3118                 ;;
3119         esac
3120 fi
3121
3122 if $ok; then
3123         : nothing
3124 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3125         $cc -E <testcpp.c >testcpp.out 2>&1; \
3126         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3127         echo "Yup, it does."
3128         x_cpp="$cc -E"
3129         x_minus='';
3130 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3131         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3132         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3133         echo "Yup, it does."
3134         x_cpp="$cc -E"
3135         x_minus='-';
3136 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3137         $cc -P <testcpp.c >testcpp.out 2>&1; \
3138         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3139         echo "Yipee, that works!"
3140         x_cpp="$cc -P"
3141         x_minus='';
3142 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3143         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3144         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3145         echo "At long last!"
3146         x_cpp="$cc -P"
3147         x_minus='-';
3148 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3149         $cpp <testcpp.c >testcpp.out 2>&1; \
3150         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3151         echo "It works!"
3152         x_cpp="$cpp"
3153         x_minus='';
3154 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3155         $cpp - <testcpp.c >testcpp.out 2>&1; \
3156         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3157         echo "Hooray, it works!  I was beginning to wonder."
3158         x_cpp="$cpp"
3159         x_minus='-';
3160 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3161         $wrapper <testcpp.c >testcpp.out 2>&1; \
3162         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3163         x_cpp="$wrapper"
3164         x_minus=''
3165         echo "Eureka!"
3166 else
3167         dflt=''
3168         rp="No dice.  I can't find a C preprocessor.  Name one:"
3169         . ./myread
3170         x_cpp="$ans"
3171         x_minus=''
3172         $x_cpp <testcpp.c >testcpp.out 2>&1
3173         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3174                 echo "OK, that will do." >&4
3175         else
3176 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3177                 exit 1
3178         fi
3179 fi
3180
3181 case "$ok" in
3182 false)
3183         cppstdin="$x_cpp"
3184         cppminus="$x_minus"
3185         cpprun="$x_cpp"
3186         cpplast="$x_minus"
3187         set X $x_cpp
3188         shift
3189         case "$1" in
3190         "$cpp")
3191                 echo "Perhaps can we force $cc -E using a wrapper..."
3192                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3193                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3194                 then
3195                         echo "Yup, we can."
3196                         cppstdin="$wrapper"
3197                         cppminus='';
3198                 else
3199                         echo "Nope, we'll have to live without it..."
3200                 fi
3201                 ;;
3202         esac
3203         case "$cpprun" in
3204         "$wrapper")
3205                 cpprun=''
3206                 cpplast=''
3207                 ;;
3208         esac
3209         ;;
3210 esac
3211
3212 case "$cppstdin" in
3213 "$wrapper"|'cppstdin') ;;
3214 *) $rm -f $wrapper;;
3215 esac
3216 $rm -f testcpp.c testcpp.out
3217
3218 : decide how portable to be.  Allow command line overrides.
3219 case "$d_portable" in
3220 "$undef") ;;
3221 *)      d_portable="$define" ;;
3222 esac
3223
3224 : set up shell script to do ~ expansion
3225 cat >filexp <<EOSS
3226 $startsh
3227 : expand filename
3228 case "\$1" in
3229  ~/*|~)
3230         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3231         ;;
3232  ~*)
3233         if $test -f /bin/csh; then
3234                 /bin/csh -f -c "glob \$1"
3235                 failed=\$?
3236                 echo ""
3237                 exit \$failed
3238         else
3239                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3240                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3241                 if $test ! -d "\$dir"; then
3242                         me=\`basename \$0\`
3243                         echo "\$me: can't locate home directory for: \$name" >&2
3244                         exit 1
3245                 fi
3246                 case "\$1" in
3247                 */*)
3248                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3249                         ;;
3250                 *)
3251                         echo \$dir
3252                         ;;
3253                 esac
3254         fi
3255         ;;
3256 *)
3257         echo \$1
3258         ;;
3259 esac
3260 EOSS
3261 chmod +x filexp
3262 $eunicefix filexp
3263
3264 : now set up to get a file name
3265 cat <<EOS >getfile
3266 $startsh
3267 EOS
3268 cat <<'EOSC' >>getfile
3269 tilde=''
3270 fullpath=''
3271 already=''
3272 skip=''
3273 none_ok=''
3274 exp_file=''
3275 nopath_ok=''
3276 orig_rp="$rp"
3277 orig_dflt="$dflt"
3278 case "$gfpth" in
3279 '') gfpth='.' ;;
3280 esac
3281
3282 case "$fn" in
3283 *\(*)
3284         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3285         fn=`echo $fn | sed 's/(.*)//'`
3286         ;;
3287 esac
3288
3289 case "$fn" in
3290 *:*)
3291         loc_file=`expr $fn : '.*:\(.*\)'`
3292         fn=`expr $fn : '\(.*\):.*'`
3293         ;;
3294 esac
3295
3296 case "$fn" in
3297 *~*) tilde=true;;
3298 esac
3299 case "$fn" in
3300 */*) fullpath=true;;
3301 esac
3302 case "$fn" in
3303 *+*) skip=true;;
3304 esac
3305 case "$fn" in
3306 *n*) none_ok=true;;
3307 esac
3308 case "$fn" in
3309 *e*) exp_file=true;;
3310 esac
3311 case "$fn" in
3312 *p*) nopath_ok=true;;
3313 esac
3314
3315 case "$fn" in
3316 *f*) type='File';;
3317 *d*) type='Directory';;
3318 *l*) type='Locate';;
3319 esac
3320
3321 what="$type"
3322 case "$what" in
3323 Locate) what='File';;
3324 esac
3325
3326 case "$exp_file" in
3327 '')
3328         case "$d_portable" in
3329         "$define") ;;
3330         *) exp_file=true;;
3331         esac
3332         ;;
3333 esac
3334
3335 cd ..
3336 while test "$type"; do
3337         redo=''
3338         rp="$orig_rp"
3339         dflt="$orig_dflt"
3340         case "$tilde" in
3341         true) rp="$rp (~name ok)";;
3342         esac
3343         . UU/myread
3344         if test -f UU/getfile.ok && \
3345                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3346         then
3347                 value="$ans"
3348                 ansexp="$ans"
3349                 break
3350         fi
3351         case "$ans" in
3352         none)
3353                 value=''
3354                 ansexp=''
3355                 case "$none_ok" in
3356                 true) type='';;
3357                 esac
3358                 ;;
3359         *)
3360                 case "$tilde" in
3361                 '') value="$ans"
3362                         ansexp="$ans";;
3363                 *)
3364                         value=`UU/filexp $ans`
3365                         case $? in
3366                         0)
3367                                 if test "$ans" != "$value"; then
3368                                         echo "(That expands to $value on this system.)"
3369                                 fi
3370                                 ;;
3371                         *) value="$ans";;
3372                         esac
3373                         ansexp="$value"
3374                         case "$exp_file" in
3375                         '') value="$ans";;
3376                         esac
3377                         ;;
3378                 esac
3379                 case "$fullpath" in
3380                 true)
3381                         case "$ansexp" in
3382                         /*) value="$ansexp" ;;
3383                         [a-zA-Z]:/*) value="$ansexp" ;;
3384                         *)
3385                                 redo=true
3386                                 case "$already" in
3387                                 true)
3388                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3389                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3390                                         ;;
3391                                 *)
3392                                 echo "Please give a full path name, starting with slash." >&4
3393                                         case "$tilde" in
3394                                         true)
3395                                 echo "Note that using ~name is ok provided it expands well." >&4
3396                                                 already=true
3397                                                 ;;
3398                                         esac
3399                                 esac
3400                                 ;;
3401                         esac
3402                         ;;
3403                 esac
3404                 case "$redo" in
3405                 '')
3406                         case "$type" in
3407                         File)
3408                                 for fp in $gfpth; do
3409                                         if test "X$fp" = X.; then
3410                                             pf="$ansexp"
3411                                         else    
3412                                             pf="$fp/$ansexp"
3413                                         fi
3414                                         if test -f "$pf"; then
3415                                                 type=''
3416                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3417                                         then
3418                                                 echo "($value is not a plain file, but that's ok.)"
3419                                                 type=''
3420                                         fi
3421                                         if test X"$type" = X; then
3422                                             value="$pf"
3423                                             break
3424                                         fi
3425                                 done
3426                                 ;;
3427                         Directory)
3428                                 for fp in $gfpth; do
3429                                         if test "X$fp" = X.; then
3430                                             dir="$ans"
3431                                             direxp="$ansexp"
3432                                         else    
3433                                             dir="$fp/$ansexp"
3434                                             direxp="$fp/$ansexp"
3435                                         fi
3436                                         if test -d "$direxp"; then
3437                                                 type=''
3438                                                 value="$dir"
3439                                                 break
3440                                         fi
3441                                 done
3442                                 ;;
3443                         Locate)
3444                                 if test -d "$ansexp"; then
3445                                         echo "(Looking for $loc_file in directory $value.)"
3446                                         value="$value/$loc_file"
3447                                         ansexp="$ansexp/$loc_file"
3448                                 fi
3449                                 if test -f "$ansexp"; then
3450                                         type=''
3451                                 fi
3452                                 case "$nopath_ok" in
3453                                 true)   case "$value" in
3454                                         */*) ;;
3455                                         *)      echo "Assuming $value will be in people's path."
3456                                                 type=''
3457                                                 ;;
3458                                         esac
3459                                         ;;
3460                                 esac
3461                                 ;;
3462                         esac
3463
3464                         case "$skip" in
3465                         true) type='';
3466                         esac
3467
3468                         case "$type" in
3469                         '') ;;
3470                         *)
3471                                 if test "$fastread" = yes; then
3472                                         dflt=y
3473                                 else
3474                                         dflt=n
3475                                 fi
3476                                 rp="$what $value doesn't exist.  Use that name anyway?"
3477                                 . UU/myread
3478                                 dflt=''
3479                                 case "$ans" in
3480                                 y*) type='';;
3481                                 *) echo " ";;
3482                                 esac
3483                                 ;;
3484                         esac
3485                         ;;
3486                 esac
3487                 ;;
3488         esac
3489 done
3490 cd UU
3491 ans="$value"
3492 rp="$orig_rp"
3493 dflt="$orig_dflt"
3494 rm -f getfile.ok
3495 test "X$gfpthkeep" != Xy && gfpth=""
3496 EOSC
3497
3498 : What should the include directory be ?
3499 echo " "
3500 $echo $n "Hmm...  $c"
3501 dflt='/usr/include'
3502 incpath=''
3503 mips_type=''
3504 if $test -f /bin/mips && /bin/mips; then
3505         echo "Looks like a MIPS system..."
3506         $cat >usr.c <<'EOCP'
3507 #ifdef SYSTYPE_BSD43
3508 /bsd43
3509 #endif
3510 EOCP
3511         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3512                 dflt='/bsd43/usr/include'
3513                 incpath='/bsd43'
3514                 mips_type='BSD 4.3'
3515         else
3516                 mips_type='System V'
3517         fi
3518         $rm -f usr.c usr.out
3519         echo "and you're compiling with the $mips_type compiler and libraries."
3520         xxx_prompt=y
3521         echo "exit 0" >mips
3522 else
3523         echo "Doesn't look like a MIPS system."
3524         xxx_prompt=n
3525         echo "exit 1" >mips
3526 fi
3527 chmod +x mips
3528 $eunicefix mips
3529 case "$usrinc" in
3530 '') ;;
3531 *) dflt="$usrinc";;
3532 esac
3533 case "$xxx_prompt" in
3534 y)      fn=d/
3535         echo " "
3536         rp='Where are the include files you want to use?'
3537         . ./getfile
3538         usrinc="$ans"
3539         ;;
3540 *)      usrinc="$dflt"
3541         ;;
3542 esac
3543
3544 : Set private lib path
3545 case "$plibpth" in
3546 '') if ./mips; then
3547                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3548         fi;;
3549 esac
3550 case "$libpth" in
3551 ' ') dlist='';;
3552 '') dlist="$loclibpth $plibpth $glibpth";;
3553 *) dlist="$libpth";;
3554 esac
3555
3556 : Now check and see which directories actually exist, avoiding duplicates
3557 libpth=''
3558 for xxx in $dlist
3559 do
3560     if $test -d $xxx; then
3561                 case " $libpth " in
3562                 *" $xxx "*) ;;
3563                 *) libpth="$libpth $xxx";;
3564                 esac
3565     fi
3566 done
3567 $cat <<'EOM'
3568
3569 Some systems have incompatible or broken versions of libraries.  Among
3570 the directories listed in the question below, please remove any you
3571 know not to be holding relevant libraries, and add any that are needed.
3572 Say "none" for none.
3573
3574 EOM
3575 case "$libpth" in
3576 '') dflt='none';;
3577 *)
3578         set X $libpth
3579         shift
3580         dflt=${1+"$@"}
3581         ;;
3582 esac
3583 rp="Directories to use for library searches?"
3584 . ./myread
3585 case "$ans" in
3586 none) libpth=' ';;
3587 *) libpth="$ans";;
3588 esac
3589
3590 : compute shared library extension
3591 case "$so" in
3592 '')
3593         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3594                 dflt='sl'
3595         else
3596                 dflt='so'
3597         fi
3598         ;;
3599 *) dflt="$so";;
3600 esac
3601 $cat <<EOM
3602
3603 On some systems, shared libraries may be available.  Answer 'none' if
3604 you want to suppress searching of shared libraries for the remainder
3605 of this configuration.
3606
3607 EOM
3608 rp='What is the file extension used for shared libraries?'
3609 . ./myread
3610 so="$ans"
3611
3612 : Define several unixisms.
3613 : Hints files or command line option can be used to override them.
3614 : The convoluted testing is in case hints files set either the old
3615 : or the new name.
3616 case "$_exe" in
3617 '')     case "$exe_ext" in
3618     '') ;;
3619         *)      _exe="$exe_ext" ;;
3620         esac
3621         ;;
3622 esac
3623 case "$_a" in
3624 '')     case "$lib_ext" in
3625     '') _a='.a';;
3626         *)      _a="$lib_ext" ;;
3627         esac
3628         ;;
3629 esac
3630 case "$_o" in
3631 '') case "$obj_ext" in
3632         '')     _o='.o';;
3633         *)      _o="$obj_ext";;
3634         esac
3635         ;;
3636 esac
3637 case "$p_" in
3638 '') case "$path_sep" in
3639         '')     p_=':';;
3640         *)      p_="$path_sep";;
3641         esac
3642         ;;
3643 esac
3644 exe_ext=$_exe
3645 lib_ext=$_a
3646 obj_ext=$_o
3647 path_sep=$p_
3648
3649 : Which makefile gets called first.  This is used by make depend.
3650 case "$firstmakefile" in
3651 '') firstmakefile='makefile';;
3652 esac
3653
3654 case "$usesocks" in
3655 $define|true|[yY]*)     dflt='y';;
3656 *) dflt='n';;
3657 esac
3658 cat <<EOM
3659
3660 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3661 Configure must be run with -Dusesocks.
3662
3663 If this doesn't make any sense to you, just accept the default '$dflt'.
3664 EOM
3665 rp='Build Perl for SOCKS?'
3666 . ./myread
3667 case "$ans" in
3668 y|Y)    val="$define" ;;     
3669 *)      val="$undef" ;;
3670 esac
3671 set usesocks
3672 eval $setvar
3673
3674 : Looking for optional libraries
3675 echo " "
3676 echo "Checking for optional libraries..." >&4
3677 case "$libs" in
3678 ' '|'') dflt='';;
3679 *) dflt="$libs";;
3680 esac
3681 case "$libswanted" in
3682 '') libswanted='c_s';;
3683 esac
3684 case "$usesocks" in
3685 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3686 esac
3687 libsfound=''
3688 libsfiles=''
3689 libsdirs=''
3690 libspath=''
3691 for thisdir in $libpth $xlibpth; do
3692   test -d $thisdir && libspath="$libspath $thisdir"
3693 done
3694 for thislib in $libswanted; do
3695         for thisdir in $libspath; do
3696             xxx=''
3697             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3698                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3699                 $test -f "$xxx" && eval $libscheck
3700                 $test -f "$xxx" && libstyle=shared
3701             fi
3702             if test ! -f "$xxx"; then
3703                 xxx=$thisdir/lib$thislib.$so
3704                 $test -f "$xxx" && eval $libscheck
3705                 $test -f "$xxx" && libstyle=shared
3706             fi  
3707             if test ! -f "$xxx"; then
3708                 xxx=$thisdir/lib$thislib$_a
3709                 $test -f "$xxx" && eval $libscheck
3710                 $test -f "$xxx" && libstyle=static
3711             fi
3712             if test ! -f "$xxx"; then
3713                 xxx=$thisdir/$thislib$_a
3714                 $test -f "$xxx" && eval $libscheck
3715                 $test -f "$xxx" && libstyle=static
3716             fi
3717             if test ! -f "$xxx"; then
3718                 xxx=$thisdir/lib${thislib}_s$_a
3719                 $test -f "$xxx" && eval $libscheck
3720                 $test -f "$xxx" && libstyle=static
3721                 $test -f "$xxx" && thislib=${thislib}_s
3722             fi
3723             if test ! -f "$xxx"; then
3724                 xxx=$thisdir/Slib$thislib$_a
3725                 $test -f "$xxx" && eval $libscheck
3726                 $test -f "$xxx" && libstyle=static
3727             fi
3728             if $test -f "$xxx"; then
3729                 case "$libstyle" in
3730                 shared) echo "Found -l$thislib (shared)." ;;
3731                 static) echo "Found -l$thislib." ;;
3732                 *)      echo "Found -l$thislib ($libstyle)." ;;
3733                 esac
3734                 case " $dflt " in
3735                 *"-l$thislib "*);;
3736                 *) dflt="$dflt -l$thislib"
3737                    libsfound="$libsfound $xxx"
3738                    yyy=`basename $xxx`
3739                    libsfiles="$libsfiles $yyy"
3740                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3741                    case " $libsdirs " in
3742                    *" $yyy "*) ;;
3743                    *) libsdirs="$libsdirs $yyy" ;;
3744                    esac
3745                    ;;
3746                 esac
3747                 break
3748             fi  
3749         done
3750         if $test ! -f "$xxx"; then
3751             echo "No -l$thislib."
3752         fi
3753 done
3754 set X $dflt
3755 shift
3756 dflt="$*"
3757 case "$libs" in
3758 '') dflt="$dflt";;
3759 *) dflt="$libs";;
3760 esac
3761 case "$dflt" in
3762 ' '|'') dflt='none';;
3763 esac
3764
3765 $cat <<EOM
3766
3767 In order to compile $package on your machine, a number of libraries
3768 are usually needed.  Include any other special libraries here as well.
3769 Say "none" for none.  The default list is almost always right.
3770 EOM
3771
3772 echo " "
3773 rp="What libraries to use?"
3774 . ./myread
3775 case "$ans" in
3776 none) libs=' ';;
3777 *) libs="$ans";;
3778 esac
3779
3780 : determine optimization, if desired, or use for debug flag also
3781 case "$optimize" in
3782 ' '|$undef) dflt='none';;
3783 '') dflt='-O';;
3784 *) dflt="$optimize";;
3785 esac
3786 $cat <<EOH
3787
3788 By default, $package compiles with the -O flag to use the optimizer.
3789 Alternately, you might want to use the symbolic debugger, which uses
3790 the -g flag (on traditional Unix systems).  Either flag can be
3791 specified here.  To use neither flag, specify the word "none".
3792
3793 EOH
3794 rp="What optimizer/debugger flag should be used?"
3795 . ./myread
3796 optimize="$ans"
3797 case "$optimize" in
3798 'none') optimize=" ";;
3799 esac
3800
3801 dflt=''
3802 : We will not override a previous value, but we might want to
3803 : augment a hint file
3804 case "$hint" in
3805 default|recommended)
3806         case "$gccversion" in
3807         1*) dflt='-fpcc-struct-return' ;;
3808         esac
3809         case "$optimize" in
3810         *-g*) dflt="$dflt -DDEBUGGING";;
3811         esac
3812         case "$gccversion" in
3813         2*) if test -d /etc/conf/kconfig.d &&
3814                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3815                 then
3816                         dflt="$dflt -posix"
3817                 fi
3818                 ;;
3819         esac
3820         case "$gccversion" in
3821         1*) ;;
3822         2.[0-8]*) ;;
3823         ?*)     echo " "
3824                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3825                 echo 'int main(void) { return 0; }' > gcctest.c
3826                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3827                         echo "Yes, it does." 2>&1
3828                         case "$ccflags" in
3829                         *strict-aliasing*) 
3830                                 echo "Leaving current flags $ccflags alone." 2>&1
3831                                 ;;
3832                         *) dflt="$dflt -fno-strict-aliasing" ;;
3833                         esac
3834                 else
3835                         echo "Nope, it doesn't, but that's ok." 2>&1
3836                 fi
3837                 ;;
3838         esac
3839         ;;
3840 esac
3841
3842 case "$mips_type" in
3843 *BSD*|'') inclwanted="$locincpth $usrinc";;
3844 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3845 esac
3846 for thisincl in $inclwanted; do
3847         if $test -d $thisincl; then
3848                 if $test x$thisincl != x$usrinc; then
3849                         case "$dflt" in
3850                         *" -I$thisincl "*);;
3851                         *) dflt="$dflt -I$thisincl ";;
3852                         esac
3853                 fi
3854         fi
3855 done
3856
3857 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3858         xxx=true;
3859 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3860         xxx=true;
3861 else
3862         xxx=false;
3863 fi;
3864 if $xxx; then
3865         case "$dflt" in
3866         *$2*);;
3867         *) dflt="$dflt -D$2";;
3868         esac;
3869 fi'
3870
3871 set signal.h LANGUAGE_C; eval $inctest
3872
3873 case "$usesocks" in
3874 $define)
3875         ccflags="$ccflags -DSOCKS"
3876         ;;
3877 esac
3878
3879 case "$hint" in
3880 default|recommended) dflt="$ccflags $dflt" ;;
3881 *) dflt="$ccflags";;
3882 esac
3883
3884 case "$dflt" in
3885 ''|' ') dflt=none;;
3886 esac
3887
3888 $cat <<EOH
3889
3890 Your C compiler may want other flags.  For this question you should include
3891 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3892 but you should NOT include libraries or ld flags like -lwhatever.  If you
3893 want $package to honor its debug switch, you should include -DDEBUGGING here.
3894 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3895
3896 To use no flags, specify the word "none".
3897
3898 EOH
3899 set X $dflt
3900 shift
3901 dflt=${1+"$@"}
3902 rp="Any additional cc flags?"
3903 . ./myread
3904 case "$ans" in
3905 none) ccflags='';;
3906 *) ccflags="$ans";;
3907 esac
3908
3909 : the following weeds options from ccflags that are of no interest to cpp
3910 cppflags="$ccflags"
3911 case "$gccversion" in
3912 1*) cppflags="$cppflags -D__GNUC__"
3913 esac
3914 case "$mips_type" in
3915 '');;
3916 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3917 esac
3918 case "$cppflags" in
3919 '');;
3920 *)
3921         echo " "
3922         echo "Let me guess what the preprocessor flags are..." >&4
3923         set X $cppflags
3924         shift
3925         cppflags=''
3926         $cat >cpp.c <<'EOM'
3927 #define BLURFL foo
3928
3929 BLURFL xx LFRULB
3930 EOM
3931         previous=''
3932         for flag in $*
3933         do
3934                 case "$flag" in
3935                 -*) ftry="$flag";;
3936                 *) ftry="$previous $flag";;
3937                 esac
3938                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3939                         >cpp1.out 2>/dev/null && \
3940                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3941                         >cpp2.out 2>/dev/null && \
3942                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3943                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3944                 then
3945                         cppflags="$cppflags $ftry"
3946                         previous=''
3947                 else
3948                         previous="$flag"
3949                 fi
3950         done
3951         set X $cppflags
3952         shift
3953         cppflags=${1+"$@"}
3954         case "$cppflags" in
3955         *-*)  echo "They appear to be: $cppflags";;
3956         esac
3957         $rm -f cpp.c cpp?.out
3958         ;;
3959 esac
3960
3961 : flags used in final linking phase
3962 case "$ldflags" in
3963 '') if ./venix; then
3964                 dflt='-i -z'
3965         else
3966                 dflt=''
3967         fi
3968         case "$ccflags" in
3969         *-posix*) dflt="$dflt -posix" ;;
3970         esac
3971         ;;
3972 *) dflt="$ldflags";;
3973 esac
3974
3975 : Try to guess additional flags to pick up local libraries.
3976 for thislibdir in $libpth; do
3977         case " $loclibpth " in
3978         *" $thislibdir "*)
3979                 case "$dflt " in 
3980                 *"-L$thislibdir "*) ;;
3981                 *)  dflt="$dflt -L$thislibdir" ;;
3982                 esac
3983                 ;;
3984         esac
3985 done
3986
3987 case "$dflt" in
3988 '') dflt='none' ;;
3989 esac
3990
3991 $cat <<EOH
3992
3993 Your C linker may need flags.  For this question you should
3994 include -L/whatever and any other flags used by the C linker, but you
3995 should NOT include libraries like -lwhatever.
3996
3997 Make sure you include the appropriate -L/path flags if your C linker
3998 does not normally search all of the directories you specified above,
3999 namely
4000         $libpth
4001 To use no flags, specify the word "none".
4002
4003 EOH
4004
4005 rp="Any additional ld flags (NOT including libraries)?"
4006 . ./myread
4007 case "$ans" in
4008 none) ldflags='';;
4009 *) ldflags="$ans";;
4010 esac
4011 rmlist="$rmlist pdp11"
4012
4013 : coherency check
4014 echo " "
4015 echo "Checking your choice of C compiler and flags for coherency..." >&4
4016 $cat > try.c <<'EOF'
4017 #include <stdio.h>
4018 int main() { printf("Ok\n"); exit(0); }
4019 EOF
4020 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4021 shift
4022 $cat >try.msg <<'EOM'
4023 I've tried to compile and run the following simple program:
4024
4025 EOM
4026 $cat try.c >> try.msg
4027
4028 $cat >> try.msg <<EOM
4029
4030 I used the command:
4031
4032         $*
4033         ./try
4034
4035 and I got the following output:
4036
4037 EOM
4038 dflt=y
4039 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4040         if sh -c './try' >>try.msg 2>&1; then
4041                 xxx=`./try`
4042                 case "$xxx" in
4043                 "Ok") dflt=n ;;
4044                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4045                         case " $libs " in
4046                         *" -lsfio "*)
4047                                 cat >> try.msg <<'EOQS'
4048 If $libs contains -lsfio, and sfio is mis-configured, then it
4049 sometimes (apparently) runs and exits with a 0 status, but with no
4050 output!  It may have to do with sfio's use of _exit vs. exit.
4051
4052 EOQS
4053                                 rp="You have a big problem.  Shall I abort Configure"
4054                                 dflt=y
4055                                 ;;
4056                         esac
4057                         ;;
4058                 esac
4059         else
4060                 echo "The program compiled OK, but exited with status $?." >>try.msg
4061                 rp="You have a problem.  Shall I abort Configure"
4062                 dflt=y
4063         fi
4064 else
4065         echo "I can't compile the test program." >>try.msg
4066         rp="You have a BIG problem.  Shall I abort Configure"
4067         dflt=y
4068 fi
4069 case "$dflt" in
4070 y)
4071         $cat try.msg >&4
4072         case "$knowitall" in
4073         '')
4074                 echo "(The supplied flags or libraries might be incorrect.)"
4075                 ;;
4076         *) dflt=n;;
4077         esac
4078         echo " "
4079         . ./myread
4080         case "$ans" in
4081         n*|N*) ;;
4082         *)      echo "Ok.  Stopping Configure." >&4
4083                 exit 1
4084                 ;;
4085         esac
4086         ;;
4087 n) echo "OK, that should do.";;
4088 esac
4089 $rm -f try try.* core
4090
4091 : define an is-a-typedef? function
4092 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4093 case "$inclist" in
4094 "") inclist="sys/types.h";;
4095 esac;
4096 eval "varval=\$$var";
4097 case "$varval" in
4098 "")
4099         $rm -f temp.c;
4100         for inc in $inclist; do
4101                 echo "#include <$inc>" >>temp.c;
4102         done;
4103         echo "#ifdef $type" >> temp.c;
4104         echo "printf(\"We have $type\");" >> temp.c;
4105         echo "#endif" >> temp.c;
4106         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4107         if $contains $type temp.E >/dev/null 2>&1; then
4108                 eval "$var=\$type";
4109         else
4110                 eval "$var=\$def";
4111         fi;
4112         $rm -f temp.?;;
4113 *) eval "$var=\$varval";;
4114 esac'
4115
4116 : define an is-a-typedef? function that prompts if the type is not available.
4117 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4118 case "$inclist" in
4119 "") inclist="sys/types.h";;
4120 esac;
4121 eval "varval=\$$var";
4122 case "$varval" in
4123 "")
4124         $rm -f temp.c;
4125         for inc in $inclist; do
4126                 echo "#include <$inc>" >>temp.c;
4127         done;
4128         echo "#ifdef $type" >> temp.c;
4129         echo "printf(\"We have $type\");" >> temp.c;
4130         echo "#endif" >> temp.c;
4131         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4132         echo " " ;
4133         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4134         if $contains $type temp.E >/dev/null 2>&1; then
4135                 echo "$type found." >&4;
4136                 eval "$var=\$type";
4137         else
4138                 echo "$type NOT found." >&4;
4139                 dflt="$def";
4140                 . ./myread ;
4141                 eval "$var=\$ans";
4142         fi;
4143         $rm -f temp.?;;
4144 *) eval "$var=\$varval";;
4145 esac'
4146
4147 : define a shorthand compile call
4148 compile='
4149 mc_file=$1;
4150 shift;
4151 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4152 : define a shorthand compile call for compilations that should be ok.
4153 compile_ok='
4154 mc_file=$1;
4155 shift;
4156 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4157
4158 : check for lengths of integral types
4159 echo " "
4160 case "$intsize" in
4161 '')
4162         echo "Checking to see how big your integers are..." >&4
4163         $cat >intsize.c <<'EOCP'
4164 #include <stdio.h>
4165 int main()
4166 {
4167         printf("intsize=%d;\n", (int)sizeof(int));
4168         printf("longsize=%d;\n", (int)sizeof(long));
4169         printf("shortsize=%d;\n", (int)sizeof(short));
4170         exit(0);
4171 }
4172 EOCP
4173         set intsize
4174         if eval $compile_ok && ./intsize > /dev/null; then
4175                 eval `./intsize`
4176                 echo "Your integers are $intsize bytes long."
4177                 echo "Your long integers are $longsize bytes long."
4178                 echo "Your short integers are $shortsize bytes long."
4179         else
4180                 $cat >&4 <<EOM
4181 !
4182 Help! I can't compile and run the intsize test program: please enlighten me!
4183 (This is probably a misconfiguration in your system or libraries, and
4184 you really ought to fix it.  Still, I'll try anyway.)
4185 !
4186 EOM
4187                 dflt=4
4188                 rp="What is the size of an integer (in bytes)?"
4189                 . ./myread
4190                 intsize="$ans"
4191                 dflt=$intsize
4192                 rp="What is the size of a long integer (in bytes)?"
4193                 . ./myread
4194                 longsize="$ans"
4195                 dflt=2
4196                 rp="What is the size of a short integer (in bytes)?"
4197                 . ./myread
4198                 shortsize="$ans"
4199         fi
4200         ;;
4201 esac
4202 $rm -f intsize intsize.*
4203
4204 : see what type lseek is declared as in the kernel
4205 rp="What is the type used for lseek's offset on this system?"
4206 set off_t lseektype long stdio.h sys/types.h
4207 eval $typedef_ask
4208
4209 echo " "
4210 echo "Checking to see how big your file offsets are..." >&4
4211 $cat >try.c <<EOCP
4212 #include <sys/types.h>
4213 #include <stdio.h>
4214 int main()
4215 {
4216     printf("%d\n", (int)sizeof($lseektype));
4217     return(0); 
4218 }
4219 EOCP
4220 set try
4221 if eval $compile_ok; then
4222         lseeksize=`./try`
4223         echo "Your file offsets are $lseeksize bytes long."
4224 else
4225         dflt=$longsize
4226         echo " "
4227         echo "(I can't seem to compile the test program.  Guessing...)"
4228         rp="What is the size of your file offsets (in bytes)?"
4229         . ./myread
4230         lseeksize="$ans"
4231 fi
4232 $rm -f try.c try
4233
4234 : see what type file positions are declared as in the library
4235 rp="What is the type for file position used by fsetpos()?"
4236 set fpos_t fpostype long stdio.h sys/types.h
4237 eval $typedef_ask
4238
4239 echo " "
4240 case "$fpostype" in
4241 *_t) zzz="$fpostype"    ;;
4242 *)   zzz="fpos_t"       ;;
4243 esac
4244 echo "Checking the size of $zzz..." >&4 
4245 cat > try.c <<EOCP
4246 #include <sys/types.h>
4247 #include <stdio.h>
4248 int main() {
4249     printf("%d\n", (int)sizeof($fpostype));
4250     exit(0);
4251 }
4252 EOCP
4253 set try
4254 if eval $compile_ok; then
4255         yyy=`./try`
4256         case "$yyy" in
4257         '')     fpossize=4
4258                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4259                 ;;
4260         *)      fpossize=$yyy
4261                 echo "Your $zzz is $fpossize bytes long."
4262                 ;;
4263         esac
4264 else
4265         dflt="$longsize"
4266         echo " " >&4
4267         echo "(I can't compile the test program.  Guessing...)" >&4
4268         rp="What is the size of your file positions (in bytes)?"
4269         . ./myread
4270         fpossize="$ans"
4271 fi
4272
4273
4274
4275 # Backward compatibility (uselfs is deprecated).
4276 case "$uselfs" in
4277 "$define"|true|[yY]*)
4278         cat <<EOM >&4
4279
4280 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4281 EOM
4282         uselargefiles="$define"
4283         ;;
4284 esac                          
4285
4286 case "$lseeksize:$fpossize" in
4287 8:8) cat <<EOM
4288
4289 You can have files larger than 2 gigabytes.
4290 EOM
4291    val="$define" ;;
4292 *)    case "$uselargefiles" in
4293    "$undef"|false|[nN]*) dflt='n' ;;
4294    *)   dflt='y' ;;
4295    esac
4296    cat <<EOM
4297
4298 Perl can be built to understand large files (files larger than 2 gigabytes)
4299 on some systems.  To do so, Configure can be run with -Duselargefiles.
4300
4301 If this doesn't make any sense to you, just accept the default '$dflt'.
4302 EOM
4303    rp='Try to understand large files, if available?'
4304    . ./myread
4305    case "$ans" in
4306    y|Y)         val="$define" ;;
4307    *)           val="$undef"  ;;
4308    esac
4309    ;;
4310 esac
4311 set uselargefiles
4312 eval $setvar
4313 case "$uselargefiles" in
4314 "$define")
4315 : Look for a hint-file generated 'call-back-unit'.  If the
4316 : user has specified that a large files perl is to be built,
4317 : we may need to set or change some other defaults.
4318         if $test -f uselargefiles.cbu; then
4319                 echo "Your platform has some specific hints for large file builds, using them..."
4320                 . ./uselargefiles.cbu
4321                 echo " "
4322                 echo "Rechecking to see how big your file offsets are..." >&4
4323                 $cat >try.c <<EOCP
4324 #include <sys/types.h>
4325 #include <stdio.h>
4326 int main()
4327 {
4328     printf("%d\n", (int)sizeof($lseektype));
4329     return(0); 
4330 }
4331 EOCP
4332                 set try
4333                 if eval $compile_ok; then
4334                         lseeksize=`./try`
4335                         $echo "Your file offsets are now $lseeksize bytes long."
4336                 else
4337                         dflt="$lseeksize"
4338                         echo " "
4339                         echo "(I can't seem to compile the test program.  Guessing...)"
4340                         rp="What is the size of your file offsets (in bytes)?"
4341                         . ./myread
4342                         lseeksize="$ans"
4343                 fi
4344                 case "$fpostype" in
4345                 *_t) zzz="$fpostype"    ;;
4346                 *)   zzz="fpos_t"       ;;
4347                 esac
4348                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4349                 $cat > try.c <<EOCP
4350 #include <sys/types.h>
4351 #include <stdio.h>
4352 int main() {
4353     printf("%d\n", (int)sizeof($fpostype));
4354     exit(0);
4355 }
4356 EOCP
4357                 set try
4358                 if eval $compile_ok; then
4359                         yyy=`./try`
4360                         dflt="$lseeksize"
4361                         case "$yyy" in
4362                         '')     echo " "
4363                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4364                                 ;;
4365                         *)      fpossize=$yyy
4366                                 echo " $fpossize bytes." >&4
4367                                 ;;
4368                         esac
4369                 else
4370                         dflt="$fpossize"
4371                         echo " "
4372                         echo "(I can't compile the test program.  Guessing...)" >&4
4373                         rp="What is the size of your file positions (in bytes)?"
4374                         . ./myread
4375                         fpossize="$ans"
4376                 fi
4377                 $rm -f try.c try
4378         fi
4379         ;;
4380 esac
4381
4382
4383 case "$usemorebits" in
4384 "$define"|true|[yY]*)
4385         use64bitint="$define"
4386         uselongdouble="$define"
4387         usemorebits="$define"
4388         ;;
4389 *)      usemorebits="$undef"
4390         ;;
4391 esac
4392
4393
4394 case "$uselonglong" in
4395 "$define"|true|[yY]*)
4396         cat <<EOM >&4
4397
4398 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4399 EOM
4400         use64bitint="$define"
4401         ;;
4402 esac                          
4403 case "$use64bits" in
4404 "$define"|true|[yY]*)
4405         cat <<EOM >&4
4406
4407 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4408 EOM
4409         use64bitint="$define"
4410         ;;
4411 esac                          
4412 case "$use64bitints" in
4413 "$define"|true|[yY]*)
4414         cat <<EOM >&4
4415
4416 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4417 EOM
4418         use64bitint="$define"
4419         ;;
4420 esac                          
4421 case "$use64bitsint" in
4422 "$define"|true|[yY]*)
4423         cat <<EOM >&4
4424
4425 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4426 EOM
4427         use64bitint="$define"
4428         ;;
4429 esac                          
4430 case "$uselonglongs" in
4431 "$define"|true|[yY]*)
4432         cat <<EOM >&4
4433
4434 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4435 EOM
4436         use64bitint="$define"
4437         ;;
4438 esac                          
4439 case "$use64bitsall" in
4440 "$define"|true|[yY]*)
4441         cat <<EOM >&4
4442
4443 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4444 EOM
4445         use64bitall="$define"
4446         ;;
4447 esac                          
4448
4449 case "$ccflags" in
4450 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4451 esac
4452 case "$use64bitall" in
4453 "$define"|true|[yY]*) use64bitint="$define" ;;
4454 esac
4455
4456 case "$longsize" in
4457 8) cat <<EOM
4458
4459 You have natively 64-bit long integers.
4460 EOM
4461    val="$define"
4462    ;;
4463 *) case "$use64bitint" in
4464    "$define"|true|[yY]*) dflt='y';;
4465    *) dflt='n';;
4466    esac
4467    cat <<EOM
4468
4469 Perl can be built to take advantage of 64-bit integer types
4470 on some systems.  To do so, Configure can be run with -Duse64bitint.
4471 Choosing this option will most probably introduce binary incompatibilities.
4472
4473 If this doesn't make any sense to you, just accept the default '$dflt'.
4474 EOM
4475    rp='Try to use 64-bit integers, if available?'
4476    . ./myread
4477    case "$ans" in
4478    [yY]*) val="$define" ;;
4479    *)     val="$undef"  ;;
4480    esac
4481    ;;
4482 esac
4483 set use64bitint
4484 eval $setvar
4485
4486 case "$use64bitall" in
4487 "$define"|true|[yY]*) dflt='y' ;;
4488 *) case "$longsize" in
4489    8) dflt='y' ;;
4490    *) dflt='n' ;;
4491    esac
4492    ;;
4493 esac    
4494 cat <<EOM
4495
4496 You may also choose to try maximal 64-bitness.  It means using as much
4497 64-bitness as possible on the platform.  This in turn means even more
4498 binary incompatibilities.  On the other hand, your platform may not
4499 have any more 64-bitness available than what you already have chosen.
4500
4501 If this doesn't make any sense to you, just accept the default '$dflt'.
4502 EOM
4503 rp='Try to use maximal 64-bit support, if available?'
4504 . ./myread
4505 case "$ans" in
4506 [yY]*) val="$define" ;;
4507 *)     val="$undef"  ;;
4508 esac
4509 set use64bitall
4510 eval $setvar
4511 case "$use64bitall" in
4512 "$define")
4513         case "$use64bitint" in
4514         "$undef")
4515                 cat <<EOM
4516
4517 Since you have chosen a maximally 64-bit build, I'm also turning on
4518 the use of 64-bit integers.
4519 EOM
4520                 use64bitint="$define" ;;
4521         esac
4522         ;;
4523 esac
4524
4525 case "$use64bitint" in
4526 "$define"|true|[yY]*)
4527 : Look for a hint-file generated 'call-back-unit'.  If the
4528 : user has specified that a 64-bit perl is to be built,
4529 : we may need to set or change some other defaults.
4530         if $test -f use64bitint.cbu; then
4531                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4532                 . ./use64bitint.cbu
4533         fi
4534         case "$longsize" in
4535         4) case "$archname64" in
4536            '') archname64=64int ;;
4537            esac
4538            ;;
4539         esac
4540         ;;
4541 esac
4542
4543 case "$use64bitall" in
4544 "$define"|true|[yY]*)
4545 : Look for a hint-file generated 'call-back-unit'.  If the
4546 : user has specified that a maximally 64-bit perl is to be built,
4547 : we may need to set or change some other defaults.
4548         if $test -f use64bitall.cbu; then
4549                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4550                 . ./use64bitall.cbu
4551         fi
4552         case "$longsize" in
4553         4) case "$archname64" in
4554            ''|64int) archname64=64all ;;
4555            esac
4556            ;;
4557         esac
4558         ;;
4559 esac
4560
4561 echo " "
4562 echo "Checking for GNU C Library..." >&4
4563 cat >gnulibc.c <<EOM
4564 #include <stdio.h>
4565 int main()
4566 {
4567 #ifdef __GLIBC__
4568     exit(0);
4569 #else
4570     exit(1);
4571 #endif
4572 }
4573 EOM
4574 set gnulibc
4575 if eval $compile_ok && ./gnulibc; then
4576         val="$define"
4577         echo "You are using the GNU C Library"
4578 else
4579         val="$undef"
4580         echo "You are not using the GNU C Library"
4581 fi
4582 $rm -f gnulibc*
4583 set d_gnulibc
4584 eval $setvar
4585
4586 : see if nm is to be used to determine whether a symbol is defined or not
4587 case "$usenm" in
4588 '')
4589         dflt=''
4590         case "$d_gnulibc" in
4591         "$define")
4592                 echo " "
4593                 echo "nm probably won't work on the GNU C Library." >&4
4594                 dflt=n
4595                 ;;
4596         esac
4597         case "$dflt" in
4598         '') 
4599                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4600                         echo " "
4601                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4602                         echo "'nm' won't be sufficient on this sytem." >&4
4603                         dflt=n
4604                 fi
4605                 ;;
4606         esac
4607         case "$dflt" in
4608         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4609                 if $test $dflt -gt 20; then
4610                         dflt=y
4611                 else
4612                         dflt=n
4613                 fi
4614                 ;;
4615         esac
4616         ;;
4617 *)
4618         case "$usenm" in
4619         true|$define) dflt=y;;
4620         *) dflt=n;;
4621         esac
4622         ;;
4623 esac
4624 $cat <<EOM
4625
4626 I can use $nm to extract the symbols from your C libraries. This
4627 is a time consuming task which may generate huge output on the disk (up
4628 to 3 megabytes) but that should make the symbols extraction faster. The
4629 alternative is to skip the 'nm' extraction part and to compile a small
4630 test program instead to determine whether each symbol is present. If
4631 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4632 this may be the best solution.
4633
4634 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4635
4636 EOM
4637 rp="Shall I use $nm to extract C symbols from the libraries?"
4638 . ./myread
4639 case "$ans" in
4640 [Nn]*) usenm=false;;
4641 *) usenm=true;;
4642 esac
4643
4644 runnm=$usenm
4645 case "$reuseval" in
4646 true) runnm=false;;
4647 esac
4648
4649 : nm options which may be necessary
4650 case "$nm_opt" in
4651 '') if $test -f /mach_boot; then
4652                 nm_opt=''       # Mach
4653         elif $test -d /usr/ccs/lib; then
4654                 nm_opt='-p'     # Solaris (and SunOS?)
4655         elif $test -f /dgux; then
4656                 nm_opt='-p'     # DG-UX
4657         elif $test -f /lib64/rld; then
4658                 nm_opt='-p'     # 64-bit Irix
4659         else
4660                 nm_opt=''
4661         fi;;
4662 esac
4663
4664 : nm options which may be necessary for shared libraries but illegal
4665 : for archive libraries.  Thank you, Linux.
4666 case "$nm_so_opt" in
4667 '')     case "$myuname" in
4668         *linux*)
4669                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4670                         nm_so_opt='--dynamic'
4671                 fi
4672                 ;;
4673         esac
4674         ;;
4675 esac
4676
4677 case "$runnm" in
4678 true)
4679 : get list of predefined functions in a handy place
4680 echo " "
4681 case "$libc" in
4682 '') libc=unknown
4683         case "$libs" in
4684         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4685         esac
4686         ;;
4687 esac
4688 libnames='';
4689 case "$libs" in
4690 '') ;;
4691 *)  for thislib in $libs; do
4692         case "$thislib" in
4693         -lc|-lc_s)
4694                 : Handle C library specially below.
4695                 ;;
4696         -l*)
4697                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4698                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4699                         :
4700                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4701                         :
4702                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4703                         :
4704                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4705                         :
4706                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4707                         :
4708                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4709                         :
4710                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4711                         :
4712                 else
4713                         try=''
4714                 fi
4715                 libnames="$libnames $try"
4716                 ;;
4717         *) libnames="$libnames $thislib" ;;
4718         esac
4719         done
4720         ;;
4721 esac
4722 xxx=normal
4723 case "$libc" in
4724 unknown)
4725         set /lib/libc.$so
4726         for xxx in $libpth; do
4727                 $test -r $1 || set $xxx/libc.$so
4728                 : The messy sed command sorts on library version numbers.
4729                 $test -r $1 || \
4730                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4731                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4732                                 h
4733                                 s/[0-9][0-9]*/0000&/g
4734                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4735                                 G
4736                                 s/\n/ /' | \
4737                          sort | $sed -e 's/^.* //'`
4738                 eval set \$$#
4739         done
4740         $test -r $1 || set /usr/ccs/lib/libc.$so
4741         $test -r $1 || set /lib/libsys_s$_a
4742         ;;
4743 *)
4744         set blurfl
4745         ;;
4746 esac
4747 if $test -r "$1"; then
4748         echo "Your (shared) C library seems to be in $1."
4749         libc="$1"
4750 elif $test -r /lib/libc && $test -r /lib/clib; then
4751         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4752         xxx=apollo
4753         libc='/lib/clib /lib/libc'
4754         if $test -r /lib/syslib; then
4755                 echo "(Your math library is in /lib/syslib.)"
4756                 libc="$libc /lib/syslib"
4757         fi
4758 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4759         echo "Your C library seems to be in $libc, as you said before."
4760 elif $test -r $incpath/usr/lib/libc$_a; then
4761         libc=$incpath/usr/lib/libc$_a;
4762         echo "Your C library seems to be in $libc.  That's fine."
4763 elif $test -r /lib/libc$_a; then
4764         libc=/lib/libc$_a;
4765         echo "Your C library seems to be in $libc.  You're normal."
4766 else
4767         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4768                 :
4769         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4770                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4771         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4772                 :
4773         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4774                 :
4775         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4776                 :
4777         else
4778                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4779         fi
4780         if $test -r "$tans"; then
4781                 echo "Your C library seems to be in $tans, of all places."
4782                 libc=$tans
4783         else
4784                 libc='blurfl'
4785         fi
4786 fi
4787 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4788         dflt="$libc"
4789         cat <<EOM
4790
4791 If the guess above is wrong (which it might be if you're using a strange
4792 compiler, or your machine supports multiple models), you can override it here.
4793
4794 EOM
4795 else
4796         dflt=''
4797         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4798         cat >&4 <<EOM
4799 I can't seem to find your C library.  I've looked in the following places:
4800
4801 EOM
4802         $sed 's/^/      /' libpath
4803         cat <<EOM
4804
4805 None of these seems to contain your C library. I need to get its name...
4806
4807 EOM
4808 fi
4809 fn=f
4810 rp='Where is your C library?'
4811 . ./getfile
4812 libc="$ans"
4813
4814 echo " "
4815 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4816 set X `cat libnames`
4817 shift
4818 xxx=files
4819 case $# in 1) xxx=file; esac
4820 echo "Extracting names from the following $xxx for later perusal:" >&4
4821 echo " "
4822 $sed 's/^/      /' libnames >&4
4823 echo " "
4824 $echo $n "This may take a while...$c" >&4
4825
4826 for file in $*; do
4827         case $file in
4828         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4829         *) $nm $nm_opt $file 2>/dev/null;;
4830         esac
4831 done >libc.tmp
4832
4833 $echo $n ".$c"
4834 $grep fprintf libc.tmp > libc.ptf
4835 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4836 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4837 xxx='[ADTSIW]'
4838 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4839         eval $xscan;\
4840         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4841                 eval $xrun
4842 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4843         eval $xscan;\
4844         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4845                 eval $xrun
4846 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4847         eval $xscan;\
4848         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4849                 eval $xrun
4850 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4851         eval $xscan;\
4852         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4853                 eval $xrun
4854 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4855         eval $xscan;\
4856         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4857                 eval $xrun
4858 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4859         eval $xscan;\
4860         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4861                 eval $xrun
4862 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4863                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4864         eval $xscan;\
4865         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4866                 eval $xrun
4867 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4868         eval $xscan;\
4869         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4870                 eval $xrun
4871 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4872         eval $xscan;\
4873         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4874                 eval $xrun
4875 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4876         eval $xscan;\
4877         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4878                 eval $xrun
4879 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4880         eval $xscan;\
4881         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4882                 eval $xrun
4883 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4884         eval $xscan;\
4885         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4886                 eval $xrun
4887 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4888         eval $xscan;\
4889         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4890                 eval $xrun
4891 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4892         eval $xscan;\
4893         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4894                 eval $xrun
4895 else
4896         $nm -p $* 2>/dev/null >libc.tmp
4897         $grep fprintf libc.tmp > libc.ptf
4898         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4899                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4900         then
4901                 nm_opt='-p'
4902                 eval $xrun
4903         else
4904                 echo " "
4905                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4906                 com=''
4907                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4908                         for thisname in $libnames $libc; do
4909                                 $ar t $thisname >>libc.tmp
4910                         done
4911                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4912                         echo "Ok." >&4
4913                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4914                         # Repeat libc to extract forwarders to DLL entries too
4915                         for thisname in $libnames $libc; do
4916                                 $ar tv $thisname >>libc.tmp
4917                                 # Revision 50 of EMX has bug in $ar.
4918                                 # it will not extract forwarders to DLL entries
4919                                 # Use emximp which will extract exactly them.
4920                                 emximp -o tmp.imp $thisname \
4921                                     2>/dev/null && \
4922                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4923                                     < tmp.imp >>libc.tmp
4924                                 $rm tmp.imp
4925                         done
4926                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4927                         echo "Ok." >&4
4928                 else
4929                         echo "$ar didn't seem to work right." >&4
4930                         echo "Maybe this is a Cray...trying bld instead..." >&4
4931                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4932                         then
4933                                 for thisname in $libnames; do
4934                                         bld t $libnames | \
4935                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4936                                         $ar t $thisname >>libc.tmp
4937                                 done
4938                                 echo "Ok." >&4
4939                         else
4940                                 echo "That didn't work either.  Giving up." >&4
4941                                 exit 1
4942                         fi
4943                 fi
4944         fi
4945 fi
4946 nm_extract="$com"
4947 if $test -f /lib/syscalls.exp; then
4948         echo " "
4949         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4950         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4951 fi
4952 ;;
4953 esac
4954 $rm -f libnames libpath
4955
4956 : is a C symbol defined?
4957 csym='tlook=$1;
4958 case "$3" in
4959 -v) tf=libc.tmp; tc=""; tdc="";;
4960 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4961 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4962 esac;
4963 tx=yes;
4964 case "$reuseval-$4" in
4965 true-) ;;
4966 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4967 esac;
4968 case "$tx" in
4969 yes)
4970         case "$runnm" in
4971         true)
4972                 if $contains $tlook $tf >/dev/null 2>&1;
4973                 then tval=true;
4974                 else tval=false;
4975                 fi;;
4976         *)
4977                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4978                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4979                 then tval=true;
4980                 else tval=false;
4981                 fi;
4982                 $rm -f t t.c;;
4983         esac;;
4984 *)
4985         case "$tval" in
4986         $define) tval=true;;
4987         *) tval=false;;
4988         esac;;
4989 esac;
4990 eval "$2=$tval"'
4991
4992 : define an is-in-libc? function
4993 inlibc='echo " "; td=$define; tu=$undef;
4994 sym=$1; var=$2; eval "was=\$$2";
4995 tx=yes;
4996 case "$reuseval$was" in
4997 true) ;;
4998 true*) tx=no;;
4999 esac;
5000 case "$tx" in
5001 yes)
5002         set $sym tres -f;
5003         eval $csym;
5004         case "$tres" in
5005         true)
5006                 echo "$sym() found." >&4;
5007                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5008         *)
5009                 echo "$sym() NOT found." >&4;
5010                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5011         esac;;
5012 *)
5013         case "$was" in
5014         $define) echo "$sym() found." >&4;;
5015         *) echo "$sym() NOT found." >&4;;
5016         esac;;
5017 esac'
5018
5019 : see if sqrtl exists
5020 set sqrtl d_sqrtl
5021 eval $inlibc
5022
5023 case "$ccflags" in
5024 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5025 esac
5026
5027 case "$uselongdouble" in
5028 $define|true|[yY]*)     dflt='y';;
5029 *) dflt='n';;
5030 esac
5031 cat <<EOM
5032
5033 Perl can be built to take advantage of long doubles which
5034 (if available) may give more accuracy and range for floating point numbers.
5035
5036 If this doesn't make any sense to you, just accept the default '$dflt'.
5037 EOM
5038 rp='Try to use long doubles if available?'
5039 . ./myread
5040 case "$ans" in
5041 y|Y)    val="$define"   ;;
5042 *)      val="$undef"    ;;
5043 esac
5044 set uselongdouble
5045 eval $setvar
5046
5047 case "$uselongdouble" in
5048 true|[yY]*) uselongdouble="$define" ;;
5049 esac
5050
5051 case "$uselongdouble" in
5052 $define)
5053 : Look for a hint-file generated 'call-back-unit'.  If the
5054 : user has specified that long doubles should be used,
5055 : we may need to set or change some other defaults.
5056         if $test -f uselongdouble.cbu; then
5057                 echo "Your platform has some specific hints for long doubles, using them..."
5058                 . ./uselongdouble.cbu
5059         else
5060                 $cat <<EOM
5061 (Your platform doesn't have any specific hints for long doubles.)
5062 EOM
5063         fi
5064         ;;
5065 esac
5066
5067 case "$uselongdouble:$d_sqrtl" in
5068 $define:$undef)
5069                 $cat <<EOM >&4
5070
5071 *** You requested the use of long doubles but you do not seem to have
5072 *** the mathematic functions for long doubles.  I'm disabling the use
5073 *** of long doubles.
5074
5075 EOM
5076         uselongdouble=$undef
5077         ;;
5078 esac
5079
5080 : check for length of double
5081 echo " "
5082 case "$doublesize" in
5083 '')
5084         echo "Checking to see how big your double precision numbers are..." >&4
5085         $cat >try.c <<'EOCP'
5086 #include <stdio.h>
5087 int main()
5088 {
5089     printf("%d\n", (int)sizeof(double));
5090     exit(0);
5091 }
5092 EOCP
5093         set try
5094         if eval $compile_ok; then
5095                 doublesize=`./try`
5096                 echo "Your double is $doublesize bytes long."
5097         else
5098                 dflt='8'
5099                 echo "(I can't seem to compile the test program.  Guessing...)"
5100                 rp="What is the size of a double precision number (in bytes)?"
5101                 . ./myread
5102                 doublesize="$ans"
5103         fi
5104         ;;
5105 esac
5106 $rm -f try.c try
5107
5108 : check for long doubles
5109 echo " "
5110 echo "Checking to see if you have long double..." >&4
5111 echo 'int main() { long double x = 7.0; }' > try.c
5112 set try
5113 if eval $compile; then
5114         val="$define"
5115         echo "You have long double."
5116 else
5117         val="$undef"
5118         echo "You do not have long double."
5119 fi
5120 $rm try.*
5121 set d_longdbl
5122 eval $setvar
5123
5124 : check for length of long double
5125 case "${d_longdbl}${longdblsize}" in
5126 $define)
5127         echo " "
5128         echo "Checking to see how big your long doubles are..." >&4
5129         $cat >try.c <<'EOCP'
5130 #include <stdio.h>
5131 int main()
5132 {
5133         printf("%d\n", sizeof(long double));
5134 }
5135 EOCP
5136         set try
5137         set try
5138         if eval $compile; then
5139                 longdblsize=`./try$exe_ext`
5140                 echo "Your long doubles are $longdblsize bytes long."
5141         else
5142                 dflt='8'
5143                 echo " "
5144                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5145                 rp="What is the size of a long double (in bytes)?"
5146                 . ./myread
5147                 longdblsize="$ans"
5148         fi
5149         if $test "X$doublesize" = "X$longdblsize"; then
5150                 echo "(That isn't any different from an ordinary double.)"
5151         fi      
5152         ;;
5153 esac
5154 $rm -f try.* try
5155
5156 : determine the architecture name
5157 echo " "
5158 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5159         tarch=`arch`"-$osname"
5160 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5161         if uname -m > tmparch 2>&1 ; then
5162                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5163                         -e 's/$/'"-$osname/" tmparch`
5164         else
5165                 tarch="$osname"
5166         fi
5167         $rm -f tmparch
5168 else
5169         tarch="$osname"
5170 fi
5171 case "$myarchname" in
5172 ''|"$tarch") ;;
5173 *)
5174         echo "(Your architecture name used to be $myarchname.)"
5175         archname=''
5176         ;;
5177 esac
5178 myarchname="$tarch"
5179 case "$archname" in
5180 '') dflt="$tarch";;
5181 *) dflt="$archname";;
5182 esac
5183 rp='What is your architecture name'
5184 . ./myread
5185 archname="$ans"
5186 case "$usethreads" in
5187 $define)
5188         echo "Threads selected." >&4
5189         case "$archname" in
5190         *-thread*) echo "...and architecture name already has -thread." >&4
5191                 ;;
5192         *)      archname="$archname-thread"
5193                 echo "...setting architecture name to $archname." >&4
5194                 ;;
5195         esac
5196         ;;
5197 esac
5198 case "$usemultiplicity" in
5199 $define)
5200         echo "Multiplicity selected." >&4
5201         case "$archname" in
5202         *-multi*) echo "...and architecture name already has -multi." >&4
5203                 ;;
5204         *)      archname="$archname-multi"
5205                 echo "...setting architecture name to $archname." >&4
5206                 ;;
5207         esac
5208         ;;
5209 esac
5210 case "$use64bitint$use64bitall" in
5211 *"$define"*)
5212         case "$archname64" in
5213         '')
5214                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5215                 ;;
5216         *)
5217                 case "$use64bitint" in
5218                 "$define") echo "64 bit integers selected." >&4 ;;
5219                 esac
5220                 case "$use64bitall" in
5221                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5222                 esac
5223                 case "$archname" in
5224                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5225                         ;;
5226                 *)      archname="$archname-$archname64"
5227                         echo "...setting architecture name to $archname." >&4
5228                         ;;
5229                 esac
5230                 ;;
5231         esac
5232 esac
5233 case "$uselongdouble" in
5234 $define)
5235         echo "Long doubles selected." >&4
5236         case "$longdblsize" in
5237         $doublesize)
5238                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5239                 ;;
5240         *)
5241                 case "$archname" in
5242                 *-ld*) echo "...and architecture name already has -ld." >&4
5243                         ;;
5244                 *)      archname="$archname-ld"
5245                         echo "...setting architecture name to $archname." >&4
5246                         ;;
5247                 esac
5248                 ;;
5249         esac
5250         ;;
5251 esac
5252
5253 : determine root of directory hierarchy where package will be installed.
5254 case "$prefix" in
5255 '')
5256         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5257         ;;
5258 *)
5259         dflt="$prefix"
5260         ;;
5261 esac
5262 $cat <<EOM
5263
5264 By default, $package will be installed in $dflt/bin, manual pages
5265 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5266 installation directories. Typically this is something like /usr/local.
5267 If you wish to have binaries under /usr/bin but other parts of the
5268 installation under /usr/local, that's ok: you will be prompted
5269 separately for each of the installation directories, the prefix being
5270 only used to set the defaults.
5271
5272 EOM
5273 fn=d~
5274 rp='Installation prefix to use?'
5275 . ./getfile
5276 oldprefix=''
5277 case "$prefix" in
5278 '') ;;
5279 *)
5280         case "$ans" in
5281         "$prefix") ;;
5282         *) oldprefix="$prefix";;
5283         esac
5284         ;;
5285 esac
5286 prefix="$ans"
5287 prefixexp="$ansexp"
5288
5289 : is AFS running?
5290 echo " "
5291 case "$afs" in
5292 $define|true)   afs=true ;;
5293 $undef|false)   afs=false ;;
5294 *)      if test -d /afs; then
5295                 afs=true
5296         else
5297                 afs=false
5298         fi
5299         ;;
5300 esac
5301 if $afs; then
5302         echo "AFS may be running... I'll be extra cautious then..." >&4
5303 else
5304         echo "AFS does not seem to be running..." >&4
5305 fi
5306
5307 : determine installation prefix for where package is to be installed.
5308 if $afs; then 
5309 $cat <<EOM
5310
5311 Since you are running AFS, I need to distinguish the directory in which
5312 files will reside from the directory in which they are installed (and from
5313 which they are presumably copied to the former directory by occult means).
5314
5315 EOM
5316         case "$installprefix" in
5317         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5318         *) dflt="$installprefix";;
5319         esac
5320 else
5321 $cat <<EOM
5322
5323 In some special cases, particularly when building $package for distribution,
5324 it is convenient to distinguish between the directory in which files should 
5325 be installed from the directory ($prefix) in which they 
5326 will eventually reside.  For most users, these two directories are the same.
5327
5328 EOM
5329         case "$installprefix" in
5330         '') dflt=$prefix ;;
5331         *) dflt=$installprefix;;
5332         esac
5333 fi
5334 fn=d~
5335 rp='What installation prefix should I use for installing files?'
5336 . ./getfile
5337 installprefix="$ans"
5338 installprefixexp="$ansexp"
5339
5340 : set the prefixit variable, to compute a suitable default value
5341 prefixit='case "$3" in
5342 ""|none)
5343         case "$oldprefix" in
5344         "") eval "$1=\"\$$2\"";;
5345         *)
5346                 case "$3" in
5347                 "") eval "$1=";;
5348                 none)
5349                         eval "tp=\"\$$2\"";
5350                         case "$tp" in
5351                         ""|" ") eval "$1=\"\$$2\"";;
5352                         *) eval "$1=";;
5353                         esac;;
5354                 esac;;
5355         esac;;
5356 *)
5357         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5358         case "$tp" in
5359         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5360         /*-$oldprefix/*|\~*-$oldprefix/*)
5361                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5362         *) eval "$1=\"\$$2\"";;
5363         esac;;
5364 esac'
5365
5366
5367 : get the patchlevel
5368 echo " "
5369 echo "Getting the current patchlevel..." >&4
5370 if $test -r $rsrc/patchlevel.h;then
5371         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5372         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5373         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5374         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5375         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5376         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5377 else
5378         revision=0
5379         patchlevel=0
5380         subversion=0
5381         api_revision=0
5382         api_version=0
5383         api_subversion=0
5384 fi
5385 $echo "(You have $package version $patchlevel subversion $subversion.)"
5386 case "$osname" in
5387 dos|vms)
5388         : XXX Should be a Configure test for double-dots in filenames.
5389         version=`echo $revision $patchlevel $subversion | \
5390                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5391         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5392                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5393         ;;
5394 *)
5395         version=`echo $revision $patchlevel $subversion | \
5396                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5397         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5398                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5399         ;;
5400 esac
5401 : Special case the 5.005_xx maintenance series, which used 5.005
5402 : without any subversion label as a subdirectory in $sitelib
5403 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5404         api_versionstring='5.005'
5405 fi
5406
5407 : determine installation style
5408 : For now, try to deduce it from prefix unless it is already set.
5409 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5410 case "$installstyle" in
5411 '')     case "$prefix" in
5412                 *perl*) dflt='lib';;
5413                 *) dflt='lib/perl5' ;;
5414         esac
5415         ;;
5416 *)      dflt="$installstyle" ;;
5417 esac
5418 : Probably not worth prompting for this since we prompt for all
5419 : the directories individually, and the prompt would be too long and
5420 : confusing anyway.
5421 installstyle=$dflt
5422
5423 : determine where private library files go
5424 : Usual default is /usr/local/lib/perl5/$version.
5425 : Also allow things like /opt/perl/lib/$version, since 
5426 : /opt/perl/lib/perl5... would be redundant.
5427 : The default "style" setting is made in installstyle.U
5428 case "$installstyle" in
5429 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5430 *)       set dflt privlib lib/$version ;;
5431 esac
5432 eval $prefixit
5433 $cat <<EOM
5434
5435 There are some auxiliary files for $package that need to be put into a
5436 private library directory that is accessible by everyone.
5437
5438 EOM
5439 fn=d~+
5440 rp='Pathname where the private library files will reside?'
5441 . ./getfile
5442 privlib="$ans"
5443 privlibexp="$ansexp"
5444 : Change installation prefix, if necessary.
5445 if $test X"$prefix" != X"$installprefix"; then
5446         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5447 else
5448         installprivlib="$privlibexp"
5449 fi
5450
5451 : set the prefixup variable, to restore leading tilda escape
5452 prefixup='case "$prefixexp" in
5453 "$prefix") ;;
5454 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5455 esac'
5456
5457 : determine where public architecture dependent libraries go
5458 set archlib archlib
5459 eval $prefixit
5460 : privlib default is /usr/local/lib/$package/$version
5461 : archlib default is /usr/local/lib/$package/$version/$archname
5462 : privlib may have an optional trailing /share.
5463 tdflt=`echo $privlib | $sed 's,/share$,,'`
5464 tdflt=$tdflt/$archname
5465 case "$archlib" in
5466 '')     dflt=$tdflt
5467         ;;
5468 *)      dflt="$archlib"
5469     ;;
5470 esac
5471 $cat <<EOM
5472
5473 $spackage contains architecture-dependent library files.  If you are
5474 sharing libraries in a heterogeneous environment, you might store
5475 these files in a separate location.  Otherwise, you can just include
5476 them with the rest of the public library files.
5477
5478 EOM
5479 fn=d+~
5480 rp='Where do you want to put the public architecture-dependent libraries?'
5481 . ./getfile
5482 archlib="$ans"
5483 archlibexp="$ansexp"
5484 if $test X"$archlib" = X"$privlib"; then
5485         d_archlib="$undef"
5486 else
5487         d_archlib="$define"
5488 fi
5489 : Change installation prefix, if necessary.
5490 if $test X"$prefix" != X"$installprefix"; then
5491         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5492 else
5493         installarchlib="$archlibexp"
5494 fi
5495
5496
5497 : Binary compatibility with 5.005 is not possible for builds
5498 : with advanced features
5499 case "$usethreads$usemultiplicity" in
5500 *define*)
5501         bincompat5005="$undef"
5502         d_bincompat5005="$undef"
5503         ;;
5504 *)      $cat <<EOM
5505
5506 This version of Perl can be compiled for binary compatibility with 5.005.
5507 If you decide to do so, you will be able to continue using most of the
5508 extensions that were compiled for Perl 5.005.
5509
5510 EOM
5511         case "$bincompat5005$d_bincompat5005" in
5512         *"$undef"*) dflt=n ;;
5513         *) dflt=y ;;
5514         esac
5515         rp='Binary compatibility with Perl 5.005?'
5516         . ./myread
5517         case "$ans" in
5518         y*) val="$define" ;;
5519         *)  val="$undef" ;;
5520         esac
5521         set d_bincompat5005
5522         eval $setvar
5523         case "$d_bincompat5005" in
5524         "$define")
5525                 bincompat5005="$define"
5526                 ;;
5527         *)      bincompat5005="$undef"
5528                 d_bincompat5005="$undef"
5529                 ;;
5530         esac
5531         ;;
5532 esac
5533
5534
5535 : see if setuid scripts can be secure
5536 $cat <<EOM
5537
5538 Some kernels have a bug that prevents setuid #! scripts from being
5539 secure.  Some sites have disabled setuid #! scripts because of this.
5540
5541 First let's decide if your kernel supports secure setuid #! scripts.
5542 (If setuid #! scripts would be secure but have been disabled anyway,
5543 don't say that they are secure if asked.)
5544
5545 EOM
5546
5547 val="$undef"
5548 if $test -d /dev/fd; then
5549         echo "#!$ls" >reflect
5550         chmod +x,u+s reflect
5551         ./reflect >flect 2>&1
5552         if $contains "/dev/fd" flect >/dev/null; then
5553                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5554                 val="$define"
5555         else
5556                 $cat <<EOM
5557 If you are not sure if they are secure, I can check but I'll need a
5558 username and password different from the one you are using right now.
5559 If you don't have such a username or don't want me to test, simply
5560 enter 'none'.
5561
5562 EOM
5563                 rp='Other username to test security of setuid scripts with?'
5564                 dflt='none'
5565                 . ./myread
5566                 case "$ans" in
5567                 n|none)
5568                         case "$d_suidsafe" in
5569                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5570                                 dflt=n;;
5571                         "$undef")
5572                                 echo "Well, the $hint value is *not* secure." >&4
5573                                 dflt=n;;
5574                         *)      echo "Well, the $hint value *is* secure." >&4
5575                                 dflt=y;;
5576                         esac
5577                         ;;
5578                 *)
5579                         $rm -f reflect flect
5580                         echo "#!$ls" >reflect
5581                         chmod +x,u+s reflect
5582                         echo >flect
5583                         chmod a+w flect
5584                         echo '"su" will (probably) prompt you for '"$ans's password."
5585                         su $ans -c './reflect >flect'
5586                         if $contains "/dev/fd" flect >/dev/null; then
5587                                 echo "Okay, it looks like setuid scripts are secure." >&4
5588                                 dflt=y
5589                         else
5590                                 echo "I don't think setuid scripts are secure." >&4
5591                                 dflt=n
5592                         fi
5593                         ;;
5594                 esac
5595                 rp='Does your kernel have *secure* setuid scripts?'
5596                 . ./myread
5597                 case "$ans" in
5598                 [yY]*)  val="$define";;
5599                 *)      val="$undef";;
5600                 esac
5601         fi
5602 else
5603         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5604         echo "(That's for file descriptors, not floppy disks.)"
5605         val="$undef"
5606 fi
5607 set d_suidsafe
5608 eval $setvar
5609
5610 $rm -f reflect flect
5611
5612 : now see if they want to do setuid emulation
5613 echo " "
5614 val="$undef"
5615 case "$d_suidsafe" in
5616 "$define")
5617         val="$undef"
5618         echo "No need to emulate SUID scripts since they are secure here." >& 4
5619         ;;
5620 *)
5621         $cat <<EOM
5622 Some systems have disabled setuid scripts, especially systems where
5623 setuid scripts cannot be secure.  On systems where setuid scripts have
5624 been disabled, the setuid/setgid bits on scripts are currently
5625 useless.  It is possible for $package to detect those bits and emulate
5626 setuid/setgid in a secure fashion.  This emulation will only work if
5627 setuid scripts have been disabled in your kernel.
5628
5629 EOM
5630         case "$d_dosuid" in
5631         "$define") dflt=y ;;
5632         *) dflt=n ;;
5633         esac
5634         rp="Do you want to do setuid/setgid emulation?"
5635         . ./myread
5636         case "$ans" in
5637         [yY]*)  val="$define";;
5638         *)      val="$undef";;
5639         esac
5640         ;;
5641 esac
5642 set d_dosuid
5643 eval $setvar
5644
5645 : determine filename position in cpp output
5646 echo " "
5647 echo "Computing filename position in cpp output for #include directives..." >&4
5648 echo '#include <stdio.h>' > foo.c
5649 $cat >fieldn <<EOF
5650 $startsh
5651 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5652 $grep '^[       ]*#.*stdio\.h' | \
5653 while read cline; do
5654         pos=1
5655         set \$cline
5656         while $test \$# -gt 0; do
5657                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5658                         echo "\$pos"
5659                         exit 0
5660                 fi
5661                 shift
5662                 pos=\`expr \$pos + 1\`
5663         done
5664 done
5665 EOF
5666 chmod +x fieldn
5667 fieldn=`./fieldn`
5668 $rm -f foo.c fieldn
5669 case $fieldn in
5670 '') pos='???';;
5671 1) pos=first;;
5672 2) pos=second;;
5673 3) pos=third;;
5674 *) pos="${fieldn}th";;
5675 esac
5676 echo "Your cpp writes the filename in the $pos field of the line."
5677
5678 : locate header file
5679 $cat >findhdr <<EOF
5680 $startsh
5681 wanted=\$1
5682 name=''
5683 for usrincdir in $usrinc
5684 do
5685         if test -f \$usrincdir/\$wanted; then
5686                 echo "\$usrincdir/\$wanted"
5687                 exit 0
5688         fi
5689 done
5690 awkprg='{ print \$$fieldn }'
5691 echo "#include <\$wanted>" > foo\$\$.c
5692 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5693 $grep "^[       ]*#.*\$wanted" | \
5694 while read cline; do
5695         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5696         case "\$name" in
5697         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5698         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5699         *) exit 2;;
5700         esac;
5701 done;
5702 #
5703 # status = 0: grep returned 0 lines, case statement not executed
5704 # status = 1: headerfile found
5705 # status = 2: while loop executed, no headerfile found
5706 #
5707 status=\$?
5708 $rm -f foo\$\$.c;
5709 if test \$status -eq 1; then
5710         exit 0;
5711 fi
5712 exit 1
5713 EOF
5714 chmod +x findhdr
5715
5716 : define an alternate in-header-list? function
5717 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5718 cont=true; xxf="echo \"<\$1> found.\" >&4";
5719 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5720 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5721 esac;
5722 case $# in 4) instead=instead;; *) instead="at last";; esac;
5723 while $test "$cont"; do
5724         xxx=`./findhdr $1`
5725         var=$2; eval "was=\$$2";
5726         if $test "$xxx" && $test -r "$xxx";
5727         then eval $xxf;
5728         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5729                 cont="";
5730         else eval $xxnf;
5731         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5732         set $yyy; shift; shift; yyy=$@;
5733         case $# in 0) cont="";;
5734         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5735                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5736         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5737                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5738         esac;
5739 done;
5740 while $test "$yyy";
5741 do set $yyy; var=$2; eval "was=\$$2";
5742         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5743         set $yyy; shift; shift; yyy=$@;
5744 done'
5745
5746 : see if this is a malloc.h system
5747 set malloc.h i_malloc
5748 eval $inhdr
5749
5750 : see if stdlib is available
5751 set stdlib.h i_stdlib
5752 eval $inhdr
5753
5754 : determine which malloc to compile in
5755 echo " "
5756 case "$usemymalloc" in
5757 ''|[yY]*|true|$define)  dflt='y' ;;
5758 *)      dflt='n' ;;
5759 esac
5760 rp="Do you wish to attempt to use the malloc that comes with $package?"
5761 . ./myread
5762 usemymalloc="$ans"
5763 case "$ans" in
5764 y*|true)
5765         usemymalloc='y'
5766         mallocsrc='malloc.c'
5767         mallocobj="malloc$_o"
5768         d_mymalloc="$define"
5769         case "$libs" in
5770         *-lmalloc*)
5771                 : Remove malloc from list of libraries to use
5772                 echo "Removing unneeded -lmalloc from library list" >&4
5773                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5774                 shift
5775                 libs="$*"
5776                 echo "libs = $libs" >&4
5777                 ;;
5778         esac
5779         ;;
5780 *)
5781         usemymalloc='n'
5782         mallocsrc=''
5783         mallocobj=''
5784         d_mymalloc="$undef"
5785         ;;
5786 esac
5787
5788 : compute the return types of malloc and free
5789 echo " "
5790 $cat >malloc.c <<END
5791 #$i_malloc I_MALLOC
5792 #$i_stdlib I_STDLIB
5793 #include <stdio.h>
5794 #include <sys/types.h>
5795 #ifdef I_MALLOC
5796 #include <malloc.h>
5797 #endif
5798 #ifdef I_STDLIB
5799 #include <stdlib.h>
5800 #endif
5801 #ifdef TRY_MALLOC
5802 void *malloc();
5803 #endif
5804 #ifdef TRY_FREE
5805 void free();
5806 #endif
5807 END
5808 case "$malloctype" in
5809 '')
5810         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5811                 malloctype='void *'
5812         else
5813                 malloctype='char *'
5814         fi
5815         ;;
5816 esac
5817 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5818
5819 case "$freetype" in
5820 '')
5821         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5822                 freetype='void'
5823         else
5824                 freetype='int'
5825         fi
5826         ;;
5827 esac
5828 echo "Your system uses $freetype free(), it would seem." >&4
5829 $rm -f malloc.[co]
5830 $cat <<EOM
5831
5832 After $package is installed, you may wish to install various
5833 add-on modules and utilities.  Typically, these add-ons will
5834 be installed under $prefix with the rest
5835 of this package.  However, you may wish to install such add-ons
5836 elsewhere under a different prefix.
5837
5838 If you do not wish to put everything under a single prefix, that's
5839 ok.  You will be prompted for the individual locations; this siteprefix
5840 is only used to suggest the defaults.
5841
5842 The default should be fine for most people.
5843
5844 EOM
5845 fn=d~+
5846 rp='Installation prefix to use for add-on modules and utilities?'
5847 : XXX Here might be another good place for an installstyle setting.
5848 case "$siteprefix" in
5849 '') dflt=$prefix ;;
5850 *)  dflt=$siteprefix ;;
5851 esac
5852 . ./getfile
5853 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5854 oldsiteprefix=''
5855 case "$siteprefix" in
5856 '') ;;
5857 *)      case "$ans" in
5858         "$prefix") ;;
5859         *) oldsiteprefix="$prefix";;
5860         esac
5861         ;;
5862 esac
5863 siteprefix="$ans"
5864 siteprefixexp="$ansexp"
5865
5866 : determine where site specific libraries go.
5867 : Usual default is /usr/local/lib/perl5/site_perl/$version
5868 : The default "style" setting is made in installstyle.U
5869 : XXX No longer works with Prefixit stuff.
5870 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5871 case "$sitelib" in
5872 '') case "$installstyle" in
5873         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5874         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5875         esac
5876         ;;
5877 *)      dflt="$sitelib"
5878         ;;
5879 esac
5880 $cat <<EOM
5881
5882 The installation process will create a directory for
5883 site-specific extensions and modules.  Most users find it convenient
5884 to place all site-specific files in this directory rather than in the
5885 main distribution directory.
5886
5887 EOM
5888 fn=d~+
5889 rp='Pathname for the site-specific library files?'
5890 . ./getfile
5891 sitelib="$ans"
5892 sitelibexp="$ansexp"
5893 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5894 : Change installation prefix, if necessary.
5895 if $test X"$prefix" != X"$installprefix"; then
5896         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5897 else
5898         installsitelib="$sitelibexp"
5899 fi
5900
5901 : determine where site specific architecture-dependent libraries go.
5902 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5903 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5904 : sitelib may have an optional trailing /share.
5905 case "$sitearch" in
5906 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5907         dflt="$dflt/$archname"
5908         ;;
5909 *)      dflt="$sitearch"
5910         ;;
5911 esac
5912 set sitearch sitearch none
5913 eval $prefixit
5914 $cat <<EOM
5915
5916 The installation process will also create a directory for
5917 architecture-dependent site-specific extensions and modules.
5918
5919 EOM
5920 fn=d~+
5921 rp='Pathname for the site-specific architecture-dependent library files?'
5922 . ./getfile
5923 sitearch="$ans"
5924 sitearchexp="$ansexp"
5925 : Change installation prefix, if necessary.
5926 if $test X"$prefix" != X"$installprefix"; then
5927         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5928 else
5929         installsitearch="$sitearchexp"
5930 fi
5931
5932 $cat <<EOM
5933
5934 The installation process will also create a directory for
5935 vendor-supplied add-ons.  Vendors who supply perl with their system
5936 may find it convenient to place all vendor-supplied files in this
5937 directory rather than in the main distribution directory.  This will
5938 ease upgrades between binary-compatible maintenance versions of perl.
5939
5940 Of course you may also use these directories in whatever way you see
5941 fit.  For example, you might use them to access modules shared over a
5942 company-wide network.
5943
5944 The default answer should be fine for most people.
5945 This causes further questions about vendor add-ons to be skipped
5946 and no vendor-specific directories will be configured for perl.
5947
5948 EOM
5949 rp='Do you want to configure vendor-specific add-on directories?'
5950 case "$usevendorprefix" in
5951 define|true|[yY]*) dflt=y ;;
5952 *)      : User may have set vendorprefix directly on Configure command line.
5953         case "$vendorprefix" in
5954         ''|' ') dflt=n ;;
5955         *)      dflt=y ;;
5956         esac
5957         ;;
5958 esac
5959 . ./myread
5960 case "$ans" in
5961 [yY]*)  fn=d~+
5962         rp='Installation prefix to use for vendor-supplied add-ons?'
5963         case "$vendorprefix" in
5964         '') dflt='' ;;
5965         *)  dflt=$vendorprefix ;;
5966         esac
5967         . ./getfile
5968         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5969         oldvendorprefix=''
5970         case "$vendorprefix" in
5971         '') ;;
5972         *)      case "$ans" in
5973                 "$prefix") ;;
5974                 *) oldvendorprefix="$prefix";;
5975                 esac
5976                 ;;
5977         esac
5978         usevendorprefix="$define"
5979         vendorprefix="$ans"
5980         vendorprefixexp="$ansexp"
5981         ;;
5982 *)      usevendorprefix="$undef"
5983         vendorprefix=''
5984         vendorprefixexp=''
5985         ;;
5986 esac
5987
5988 case "$vendorprefix" in
5989 '')     d_vendorlib="$undef"
5990         vendorlib=''
5991         vendorlibexp=''
5992         ;;
5993 *)      d_vendorlib="$define"
5994         : determine where vendor-supplied modules go.
5995         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5996         case "$vendorlib" in
5997         '')
5998                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5999                 case "$installstyle" in
6000                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6001                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6002                 esac
6003                 ;;
6004         *)      dflt="$vendorlib"
6005                 ;;
6006         esac
6007         fn=d~+
6008         rp='Pathname for the vendor-supplied library files?'
6009         . ./getfile
6010         vendorlib="$ans"
6011         vendorlibexp="$ansexp"
6012         ;;
6013 esac
6014 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6015 : Change installation prefix, if necessary.
6016 if $test X"$prefix" != X"$installprefix"; then
6017         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6018 else
6019         installvendorlib="$vendorlibexp"
6020 fi
6021
6022 case "$vendorprefix" in
6023 '')     d_vendorarch="$undef"
6024         vendorarch=''
6025         vendorarchexp=''
6026         ;;
6027 *)      d_vendorarch="$define"
6028         : determine where vendor-supplied architecture-dependent libraries go.
6029         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6030         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6031         : vendorlib may have an optional trailing /share.
6032         case "$vendorarch" in
6033         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6034                 dflt="$dflt/$archname"
6035                 ;;
6036         *)      dflt="$vendorarch" ;;
6037         esac
6038         fn=d~+
6039         rp='Pathname for vendor-supplied architecture-dependent files?'
6040         . ./getfile
6041         vendorarch="$ans"
6042         vendorarchexp="$ansexp"
6043         ;;
6044 esac
6045 : Change installation prefix, if necessary.
6046 if $test X"$prefix" != X"$installprefix"; then
6047         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6048 else
6049         installvendorarch="$vendorarchexp"
6050 fi
6051
6052 : Final catch-all directories to search
6053 $cat <<EOM
6054
6055 Lastly, you can have perl look in other directories for extensions and
6056 modules in addition to those already specified.
6057 These directories will be searched after 
6058         $sitearch 
6059         $sitelib 
6060 EOM
6061 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6062 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6063 echo ' '
6064 case "$otherlibdirs" in
6065 ''|' ') dflt='none' ;;
6066 *)      dflt="$otherlibdirs" ;;
6067 esac
6068 $cat <<EOM
6069 Enter a colon-separated set of extra paths to include in perl's @INC
6070 search path, or enter 'none' for no extra paths.
6071
6072 EOM
6073
6074 rp='Colon-separated list of additional directories for perl to search?'
6075 . ./myread
6076 case "$ans" in
6077 ' '|''|none)    otherlibdirs=' ' ;;     
6078 *)      otherlibdirs="$ans" ;;
6079 esac
6080 case "$otherlibdirs" in
6081 ' ') val=$undef ;;
6082 *)      val=$define ;;
6083 esac
6084 set d_perl_otherlibdirs
6085 eval $setvar
6086
6087 : Cruising for prototypes
6088 echo " "
6089 echo "Checking out function prototypes..." >&4
6090 $cat >prototype.c <<'EOCP'
6091 int main(int argc, char *argv[]) {
6092         exit(0);}
6093 EOCP
6094 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6095         echo "Your C compiler appears to support function prototypes."
6096         val="$define"
6097 else
6098         echo "Your C compiler doesn't seem to understand function prototypes."
6099         val="$undef"
6100 fi
6101 set prototype
6102 eval $setvar
6103 $rm -f prototype*
6104
6105 case "$prototype" in
6106 "$define") ;;
6107 *)      ansi2knr='ansi2knr'
6108         echo " "
6109         cat <<EOM >&4
6110
6111 $me:  FATAL ERROR:
6112 This version of $package can only be compiled by a compiler that 
6113 understands function prototypes.  Unfortunately, your C compiler 
6114         $cc $ccflags
6115 doesn't seem to understand them.  Sorry about that.
6116
6117 If GNU cc is available for your system, perhaps you could try that instead.  
6118
6119 Eventually, we hope to support building Perl with pre-ANSI compilers.
6120 If you would like to help in that effort, please contact <perlbug@perl.org>.
6121
6122 Aborting Configure now.
6123 EOM
6124         exit 2
6125         ;;
6126 esac
6127
6128 : determine where public executables go
6129 echo " "
6130 set dflt bin bin
6131 eval $prefixit
6132 fn=d~
6133 rp='Pathname where the public executables will reside?'
6134 . ./getfile
6135 if $test "X$ansexp" != "X$binexp"; then
6136         installbin=''
6137 fi
6138 bin="$ans"
6139 binexp="$ansexp"
6140 : Change installation prefix, if necessary.
6141 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6142 if $test X"$prefix" != X"$installprefix"; then
6143         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6144 else
6145         installbin="$binexp"
6146 fi
6147
6148 : Find perl5.005 or later.
6149 echo "Looking for a previously installed perl5.005 or later... "
6150 case "$perl5" in
6151 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6152                 : Check if this perl is recent and can load a simple module
6153                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6154                         perl5=$tdir/perl
6155                         break;
6156                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6157                         perl5=$tdir/perl
6158                         break;
6159                 fi
6160         done
6161         ;;
6162 *)      perl5="$perl5"
6163         ;;
6164 esac
6165 case "$perl5" in
6166 '')     echo "None found.  That's ok.";;
6167 *)      echo "Using $perl5." ;;
6168 esac
6169
6170 : Determine list of previous versions to include in @INC
6171 $cat > getverlist <<EOPL
6172 #!$perl5 -w
6173 use File::Basename;
6174 \$api_versionstring = "$api_versionstring";
6175 \$version = "$version";
6176 \$stem = "$sitelib_stem";
6177 \$archname = "$archname";
6178 EOPL
6179         $cat >> getverlist <<'EOPL'
6180 # Can't have leading @ because metaconfig interprets it as a command!
6181 ;@inc_version_list=();
6182 # XXX Redo to do opendir/readdir? 
6183 if (-d $stem) {
6184     chdir($stem);
6185     ;@candidates = glob("5.*");
6186 }
6187 else {
6188     ;@candidates = ();
6189 }
6190
6191 # XXX ToDo:  These comparisons must be reworked when two-digit
6192 # subversions come along, so that 5.7.10 compares as greater than
6193 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6194 # widespread that we can use the built-in version vectors rather
6195 # than reinventing them here.  For 5.6.0, however, we must
6196 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6197 foreach $d (@candidates) {
6198     if ($d lt $version) {
6199         if ($d ge $api_versionstring) {
6200             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6201         }
6202         elsif ($d ge "5.005") {
6203             unshift(@inc_version_list, grep { -d } $d);
6204         }
6205     }
6206     else {
6207         # Skip newer version.  I.e. don't look in
6208         # 5.7.0 if we're installing 5.6.1.
6209     }
6210 }
6211
6212 if (@inc_version_list) {
6213     print join(' ', @inc_version_list);
6214 }
6215 else {
6216     # Blank space to preserve value for next Configure run.
6217     print " ";
6218 }
6219 EOPL
6220 chmod +x getverlist
6221 case "$inc_version_list" in
6222 '')     if test -x "$perl5"; then
6223                 dflt=`$perl5 getverlist`
6224         else
6225                 dflt='none'
6226         fi
6227         ;;
6228 $undef) dflt='none' ;;
6229 *)  dflt="$inc_version_list" ;;
6230 esac
6231 case "$dflt" in
6232 ''|' ') dflt=none ;;
6233 esac
6234 case "$dflt" in
6235 5.005) case "$bincompat5005" in
6236        $define|true|[yY]*) ;;
6237        *) dflt=none ;;
6238        esac
6239        ;;
6240 esac
6241 $cat <<'EOM'
6242
6243 In order to ease the process of upgrading, this version of perl 
6244 can be configured to use modules built and installed with earlier 
6245 versions of perl that were installed under $prefix.  Specify here
6246 the list of earlier versions that this version of perl should check.
6247 If Configure detected no earlier versions of perl installed under
6248 $prefix, then the list will be empty.  Answer 'none' to tell perl
6249 to not search earlier versions.
6250
6251 The default should almost always be sensible, so if you're not sure,
6252 just accept the default.
6253 EOM
6254
6255 rp='List of earlier versions to include in @INC?'
6256 . ./myread
6257 case "$ans" in
6258 [Nn]one|''|' ') inc_version_list=' ' ;;
6259 *) inc_version_list="$ans" ;;
6260 esac
6261 case "$inc_version_list" in
6262 ''|' ') 
6263         inc_version_list_init='0';;
6264 *)      inc_version_list_init=`echo $inc_version_list |
6265                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6266         ;;
6267 esac
6268 $rm -f getverlist
6269
6270 : determine whether to install the scripts
6271
6272 echo " "
6273 $cat <<EOM
6274 Do you want to install the various scripts accompanying Perl?
6275 Usually you do want this.
6276
6277 EOM
6278 case "$installscripts" in
6279 "$undef"|[nN]*) dflt='n';;
6280 *)              dflt='y';;
6281 esac
6282 rp="Do you want to install the scripts?"
6283 . ./myread
6284 case "$ans" in
6285 [yY]*)  val="$define";;
6286 *)      val="$undef" ;;
6287 esac
6288 set installscripts
6289 eval $setvar
6290
6291 : determine whether to install perl also as /usr/bin/perl
6292
6293 echo " "
6294 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6295         $cat <<EOM
6296 Many scripts expect perl to be installed as /usr/bin/perl.
6297 I can install the perl you are about to compile also as /usr/bin/perl
6298 (in addition to $installbin/perl).
6299 EOM
6300         case "$installusrbinperl" in
6301         "$undef"|[nN]*) dflt='n';;
6302         *)              dflt='y';;
6303         esac
6304         rp="Do you want to install perl as /usr/bin/perl?"
6305         . ./myread
6306         case "$ans" in
6307         [yY]*)  val="$define";;
6308         *)      val="$undef" ;;
6309         esac
6310 else
6311         val="$undef"
6312 fi
6313 set installusrbinperl
6314 eval $setvar
6315
6316 : see if dld is available
6317 set dld.h i_dld
6318 eval $inhdr
6319
6320 : see if dlopen exists
6321 xxx_runnm="$runnm"
6322 runnm=false
6323 set dlopen d_dlopen
6324 eval $inlibc
6325 runnm="$xxx_runnm"
6326
6327 : determine which dynamic loading, if any, to compile in
6328 echo " "
6329 dldir="ext/DynaLoader"
6330 case "$usedl" in
6331 $define|y|true)
6332         dflt='y'
6333         usedl="$define"
6334         ;;
6335 $undef|n|false)
6336         dflt='n'
6337         usedl="$undef"
6338         ;;
6339 *) 
6340         dflt='n'
6341         case "$d_dlopen" in
6342             $define) dflt='y' ;;
6343         esac
6344         case "$i_dld" in
6345             $define) dflt='y' ;;
6346         esac
6347         : Does a dl_xxx.xs file exist for this operating system
6348         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6349         ;;
6350 esac
6351 rp="Do you wish to use dynamic loading?"
6352 . ./myread
6353 usedl="$ans"
6354 case "$ans" in
6355 y*) usedl="$define"
6356         case "$dlsrc" in
6357         '')
6358                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6359                         dflt="$dldir/dl_${osname}.xs"
6360                 elif $test "$d_dlopen" = "$define" ; then
6361                         dflt="$dldir/dl_dlopen.xs"
6362                 elif $test "$i_dld" = "$define" ; then
6363                         dflt="$dldir/dl_dld.xs"
6364                 else
6365                         dflt=''
6366                 fi
6367                 ;;
6368         *)      dflt="$dldir/$dlsrc"
6369                 ;;
6370         esac
6371     echo "The following dynamic loading files are available:"
6372         : Can not go over to $dldir because getfile has path hard-coded in.
6373         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6374         rp="Source file to use for dynamic loading"
6375         fn="fne"
6376         gfpth="$src"
6377         . ./getfile
6378         usedl="$define"
6379         : emulate basename
6380         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6381
6382         $cat << EOM
6383
6384 Some systems may require passing special flags to $cc -c to
6385 compile modules that will be used to create a shared library.
6386 To use no flags, say "none".
6387
6388 EOM
6389     case "$cccdlflags" in
6390     '') case "$gccversion" in
6391                 '') case "$osname" in
6392                         hpux)   dflt='+z' ;;
6393                         next)   dflt='none' ;;
6394                         irix*)  dflt='-KPIC' ;;
6395                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6396                         sunos)  dflt='-pic' ;;
6397                         *)      dflt='none' ;;
6398                     esac
6399                         ;;
6400                 *)  case "$osname" in
6401                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6402                         *)      dflt='-fpic' ;;
6403                     esac ;;
6404             esac ;;
6405         ' ') dflt='none' ;;
6406     *)  dflt="$cccdlflags" ;;
6407     esac
6408     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6409     . ./myread
6410     case "$ans" in
6411     none) cccdlflags=' ' ;;
6412     *) cccdlflags="$ans" ;;
6413     esac
6414
6415     cat << EOM
6416
6417 Some systems use ld to create libraries that can be dynamically loaded,
6418 while other systems (such as those using ELF) use $cc.
6419
6420 EOM
6421         case "$ld" in
6422         '')     $cat >try.c <<'EOM'
6423 /* Test for whether ELF binaries are produced */
6424 #include <fcntl.h>
6425 #include <stdlib.h>
6426 int main() {
6427         char b[4];
6428         int i = open("a.out",O_RDONLY);
6429         if(i == -1) 
6430                 exit(1); /* fail */
6431         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6432                 exit(0); /* succeed (yes, it's ELF) */
6433         else
6434                 exit(1); /* fail */
6435 }
6436 EOM
6437                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6438                         cat <<EOM
6439 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6440 EOM
6441                         dflt="$cc"
6442                 else
6443                         echo "I'll use ld to build dynamic libraries."
6444                         dflt='ld'
6445                 fi
6446                 rm -f try.c a.out
6447                 ;;
6448         *)      dflt="$ld"
6449                 ;;
6450         esac
6451
6452     rp="What command should be used to create dynamic libraries?"
6453     . ./myread
6454         ld="$ans"
6455
6456     cat << EOM
6457
6458 Some systems may require passing special flags to $ld to create a
6459 library that can be dynamically loaded.  If your ld flags include
6460 -L/other/path options to locate libraries outside your loader's normal
6461 search path, you may need to specify those -L options here as well.  To
6462 use no flags, say "none".
6463
6464 EOM
6465     case "$lddlflags" in
6466     '') case "$osname" in
6467                         beos) dflt='-nostart' ;;
6468                         hpux) dflt='-b';
6469                               case "$gccversion" in
6470                               '') dflt="$dflt +vnocompatwarnings" ;;
6471                               esac
6472                               ;;        
6473                         linux|irix*)    dflt='-shared' ;;
6474                         next)  dflt='none' ;;
6475                         solaris) dflt='-G' ;;
6476                         sunos) dflt='-assert nodefinitions' ;;
6477                         svr4*|esix*) dflt="-G $ldflags" ;;
6478                 *)     dflt='none' ;;
6479                         esac
6480                         ;;
6481     *) dflt="$lddlflags" ;;
6482     esac
6483
6484         : Try to guess additional flags to pick up local libraries.
6485         : Be careful not to append to a plain 'none'
6486         case "$dflt" in
6487         none) dflt='' ;;
6488         esac
6489         for thisflag in $ldflags; do
6490                 case "$thisflag" in
6491                 -L*|-R*)
6492                         case " $dflt " in
6493                         *" $thisflag "*) ;;
6494                         *) dflt="$dflt $thisflag" ;;
6495                         esac
6496                         ;;
6497                 esac
6498         done
6499
6500         case "$dflt" in
6501         ''|' ') dflt='none' ;;
6502         esac
6503
6504     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6505     . ./myread
6506     case "$ans" in
6507     none) lddlflags=' ' ;;
6508     *) lddlflags="$ans" ;;
6509     esac
6510
6511         cat <<EOM
6512
6513 Some systems may require passing special flags to $cc to indicate that
6514 the resulting executable will use dynamic linking.  To use no flags,
6515 say "none".
6516
6517 EOM
6518     case "$ccdlflags" in
6519     '') case "$osname" in
6520                 hpux)   dflt='-Wl,-E' ;;
6521                 linux)  dflt='-rdynamic' ;;
6522                 next)   dflt='none' ;;
6523                 sunos)  dflt='none' ;;
6524                 *)      dflt='none' ;;
6525             esac ;;
6526     ' ')  dflt='none' ;;
6527     *)  dflt="$ccdlflags" ;;
6528     esac
6529     rp="Any special flags to pass to $cc to use dynamic linking?"
6530     . ./myread
6531     case "$ans" in
6532     none) ccdlflags=' ' ;;
6533     *) ccdlflags="$ans" ;;
6534     esac
6535     ;;
6536 *)  usedl="$undef"
6537         ld='ld'
6538     dlsrc='dl_none.xs'
6539     lddlflags=''
6540     ccdlflags=''
6541     ;;
6542 esac
6543
6544 also=''
6545 case "$usedl" in
6546 $undef)
6547         # No dynamic loading being used, so don't bother even to prompt.
6548         useshrplib='false'
6549         ;;
6550 *)      case "$useshrplib" in
6551         '')     case "$osname" in
6552                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6553                         dflt=y
6554                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6555                         ;;
6556                 next*)
6557                         case "$osvers" in
6558                         4*)     dflt=y
6559                                 also='Building a shared libperl is needed for MAB support.'
6560                                 ;;
6561                         *)      dflt=n
6562                                 ;;
6563                         esac
6564                         ;;
6565                 *)      dflt=n
6566                         ;;
6567                 esac
6568                 ;;
6569         $define|true|[Yy]*)
6570                 dflt=y
6571                 ;;
6572         *)      dflt=n
6573                 ;;
6574         esac
6575         $cat << EOM
6576
6577 The perl executable is normally obtained by linking perlmain.c with
6578 libperl${_a}, any static extensions (usually just DynaLoader), and
6579 any other libraries needed on this system (such as -lm, etc.).  Since
6580 your system supports dynamic loading, it is probably possible to build
6581 a shared libperl.$so.  If you will have more than one executable linked
6582 to libperl.$so, this will significantly reduce the size of each
6583 executable, but it may have a noticeable affect on performance.  The
6584 default is probably sensible for your system.
6585 $also
6586
6587 EOM
6588         rp="Build a shared libperl.$so (y/n)"
6589         . ./myread
6590         case "$ans" in
6591         true|$define|[Yy]*)
6592                 useshrplib='true'  ;;
6593         *)      useshrplib='false' ;;
6594         esac
6595         ;;
6596 esac
6597
6598 case "$useshrplib" in
6599 true)
6600         case "$libperl" in
6601         '')
6602                 # Figure out a good name for libperl.so.  Since it gets stored in
6603                 # a version-specific architecture-dependent library, the version
6604                 # number isn't really that important, except for making cc/ld happy.
6605                 #
6606                 # A name such as libperl.so.3.1
6607                 majmin="libperl.$so.$patchlevel.$subversion"
6608                 # A name such as libperl.so.301
6609                 majonly=`echo $patchlevel $subversion |
6610                         $awk '{printf "%d%02d", $1, $2}'`
6611                 majonly=libperl.$so.$majonly
6612                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6613                 # rely on figuring it out from the naming of libc.
6614                 case "${osname}${osvers}" in
6615                 next4*)
6616                         dflt=libperl.5.$so
6617                         # XXX How handle the --version stuff for MAB?
6618                         ;;
6619                 linux*)  # ld won't link with a bare -lperl otherwise.
6620                         dflt=libperl.$so
6621                         ;;
6622                 cygwin*) # include version
6623                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6624                         ;;
6625                 *)      # Try to guess based on whether libc has major.minor.
6626                         case "$libc" in
6627                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6628                         *libc.$so.[0-9]*) dflt=$majonly ;;
6629                         *)      dflt=libperl.$so ;;
6630                         esac
6631                         ;;
6632                 esac
6633                 ;;
6634         *)      dflt=$libperl
6635                 ;;
6636         esac
6637         cat << EOM
6638
6639 I need to select a good name for the shared libperl.  If your system uses
6640 library names with major and minor numbers, then you might want something
6641 like $majmin.  Alternatively, if your system uses a single version
6642 number for shared libraries, then you might want to use $majonly.
6643 Or, your system might be quite happy with a simple libperl.$so.
6644
6645 Since the shared libperl will get installed into a version-specific
6646 architecture-dependent directory, the version number of the shared perl
6647 library probably isn't important, so the default should be o.k.
6648
6649 EOM
6650         rp='What name do you want to give to the shared libperl?'
6651         . ./myread
6652         libperl=$ans
6653         echo "Ok, I'll use $libperl"
6654         ;;
6655 *)
6656         libperl="libperl${_a}"
6657         ;;
6658 esac
6659
6660 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6661 case "$shrpdir" in
6662 '') ;;
6663 *)      $cat >&4 <<EOM
6664 WARNING:  Use of the shrpdir variable for the installation location of
6665 the shared $libperl is not supported.  It was never documented and
6666 will not work in this version.  Let me (perlbug@perl.org)
6667 know of any problems this may cause.
6668
6669 EOM
6670         case "$shrpdir" in
6671         "$archlibexp/CORE")
6672                 $cat >&4 <<EOM
6673 But your current setting of $shrpdir is
6674 the default anyway, so it's harmless.
6675 EOM
6676                 ;;
6677         *)
6678                 $cat >&4 <<EOM
6679 Further, your current attempted setting of $shrpdir
6680 conflicts with the value of $archlibexp/CORE
6681 that installperl will use.
6682 EOM
6683                 ;;
6684         esac
6685         ;;
6686 esac
6687
6688 # How will the perl executable find the installed shared $libperl?
6689 # Add $xxx to ccdlflags.
6690 # If we can't figure out a command-line option, use $shrpenv to
6691 # set env LD_RUN_PATH.  The main perl makefile uses this.
6692 shrpdir=$archlibexp/CORE
6693 xxx=''
6694 tmp_shrpenv=''
6695 if "$useshrplib"; then
6696     case "$osname" in 
6697         aix)
6698                 # We'll set it in Makefile.SH...
6699                 ;;
6700         solaris|netbsd)
6701                 xxx="-R $shrpdir"
6702                 ;;
6703         freebsd)
6704                 xxx="-Wl,-R$shrpdir"
6705                 ;;
6706         linux|irix*|dec_osf)
6707                 xxx="-Wl,-rpath,$shrpdir"
6708                 ;;
6709         next)
6710                 # next doesn't like the default...
6711                 ;;
6712         beos)
6713                 # beos doesn't like the default, either.
6714                 ;;
6715         hpux*)
6716                 # hpux doesn't like the default, either.
6717                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6718                 ;;
6719         *)
6720                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6721                 ;;
6722         esac
6723         case "$xxx" in
6724         '') ;;
6725         *)      
6726                 # Only add $xxx if it isn't already in ccdlflags.
6727                 case " $ccdlflags " in
6728                 *" $xxx "*)     ;;
6729                 *)      ccdlflags="$ccdlflags $xxx"
6730                         cat <<EOM >&4
6731
6732 Adding $xxx to the flags
6733 passed to $ld so that the perl executable will find the 
6734 installed shared $libperl.
6735
6736 EOM
6737                         ;;
6738                 esac
6739                 ;;
6740         esac
6741 fi
6742 # Fix ccdlflags in AIX for building external extensions.
6743 # (For building Perl itself bare -bE:perl.exp is needed,
6744 #  Makefile.SH takes care of this.)
6745 case "$osname" in
6746 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6747 esac
6748 # Respect a hint or command-line value.
6749 case "$shrpenv" in
6750 '') shrpenv="$tmp_shrpenv" ;;
6751 esac
6752 case "$ldlibpthname" in
6753 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6754 none)   ldlibpthname='' ;;
6755 esac
6756
6757 : determine where manual pages are on this system
6758 echo " "
6759 case "$sysman" in
6760 '') 
6761         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6762         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6763         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6764         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6765         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6766         sysman=`./loc . /usr/man/man1 $syspath`
6767         ;;
6768 esac
6769 if $test -d "$sysman"; then
6770         echo "System manual is in $sysman." >&4
6771 else
6772         echo "Could not find manual pages in source form." >&4
6773 fi
6774
6775 : determine where manual pages go
6776 set man1dir man1dir none
6777 eval $prefixit
6778 $cat <<EOM
6779
6780 $spackage has manual pages available in source form.
6781 EOM
6782 case "$nroff" in
6783 nroff)
6784         echo "However, you don't have nroff, so they're probably useless to you."
6785         case "$man1dir" in
6786         '') man1dir="none";;
6787         esac;;
6788 esac
6789 echo "If you don't want the manual sources installed, answer 'none'."
6790 case "$man1dir" in
6791 ' ') dflt=none
6792         ;;
6793 '')
6794         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6795         lookpath="$lookpath $prefixexp/man/p_man/man1"
6796         lookpath="$lookpath $prefixexp/man/u_man/man1"
6797         lookpath="$lookpath $prefixexp/man/man.1"
6798         case "$sysman" in
6799         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6800         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6801         esac
6802         set dflt
6803         eval $prefixup
6804         ;;
6805 *)  dflt="$man1dir"
6806         ;;
6807 esac
6808 echo " "
6809 fn=dn+~
6810 rp="Where do the main $spackage manual pages (source) go?"
6811 . ./getfile
6812 if $test "X$man1direxp" != "X$ansexp"; then
6813         installman1dir=''
6814 fi
6815 man1dir="$ans"
6816 man1direxp="$ansexp"
6817 case "$man1dir" in
6818 '')     man1dir=' '
6819         installman1dir='';;
6820 esac
6821
6822 : Change installation prefix, if necessary.
6823 if $test X"$prefix" != X"$installprefix"; then
6824         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6825 else
6826         installman1dir="$man1direxp"
6827 fi
6828
6829 : What suffix to use on installed man pages
6830
6831 case "$man1dir" in
6832 ' ')
6833         man1ext='0'
6834         ;;
6835 *)
6836         rp="What suffix should be used for the main $spackage man pages?"
6837         case "$man1ext" in
6838         '')     case "$man1dir" in
6839                 *1)  dflt=1 ;;
6840                 *1p) dflt=1p ;;
6841                 *1pm) dflt=1pm ;;
6842                 *l) dflt=l;;
6843                 *n) dflt=n;;
6844                 *o) dflt=o;;
6845                 *p) dflt=p;;
6846                 *C) dflt=C;;
6847                 *L) dflt=L;;
6848                 *L1) dflt=L1;;
6849                 *) dflt=1;;
6850                 esac
6851                 ;;
6852         *)      dflt="$man1ext";;
6853         esac
6854         . ./myread
6855         man1ext="$ans"
6856         ;;
6857 esac
6858
6859 : see if we can have long filenames
6860 echo " "
6861 first=123456789abcdef
6862 $rm -f $first
6863 if (echo hi >$first) 2>/dev/null; then
6864         if $test -f 123456789abcde; then
6865                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6866                 val="$undef"
6867         else
6868                 echo 'You can have filenames longer than 14 characters.'>&4
6869                 val="$define"
6870         fi
6871 else
6872         $cat <<'EOM'
6873 You can't have filenames longer than 14 chars.
6874 You can't even think about them!
6875 EOM
6876         val="$undef"
6877 fi 
6878 set d_flexfnam
6879 eval $setvar
6880 $rm -rf 123456789abcde*
6881
6882 : determine where library module manual pages go
6883 set man3dir man3dir none
6884 eval $prefixit
6885 $cat <<EOM
6886
6887 $spackage has manual pages for many of the library modules.
6888 EOM
6889
6890 case "$nroff" in
6891 nroff)
6892         $cat <<'EOM'
6893 However, you don't have nroff, so they're probably useless to you.
6894 EOM
6895         case "$man3dir" in
6896         '') man3dir="none";;
6897         esac;;
6898 esac
6899
6900 case "$d_flexfnam" in
6901 undef)
6902         $cat <<'EOM'
6903 However, your system can't handle the long file names like File::Basename.3. 
6904 EOM
6905         case "$man3dir" in
6906         '') man3dir="none";;
6907         esac;;
6908 esac
6909
6910 echo "If you don't want the manual sources installed, answer 'none'."
6911 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6912 case "$man3dir" in
6913 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6914         if $test -d "$privlib/man/man3"; then
6915                 cat <<EOM >&4
6916
6917 WARNING:  Previous versions of perl installed man3 pages into
6918 $privlib/man/man3.  This version will suggest a 
6919 new default of $dflt.  
6920 EOM
6921                 tdflt=$dflt
6922                 dflt='n'
6923                 rp='Do you wish to preserve the old behavior?(y/n)'
6924                 . ./myread
6925                 case "$ans" in
6926                 y*) dflt="$privlib/man/man3" ;;
6927                 *)  dflt=$tdflt ;;
6928                 esac
6929     fi
6930         ;;
6931 *)      dflt="$man3dir" ;;
6932 esac
6933 case "$dflt" in
6934 ' ') dflt=none ;;
6935 esac
6936 echo " "
6937 fn=dn+~
6938 rp="Where do the $package library man pages (source) go?"
6939 . ./getfile
6940 man3dir="$ans"
6941 man3direxp="$ansexp"
6942 case "$man3dir" in
6943 '')     man3dir=' '
6944         installman3dir='';;
6945 esac
6946
6947 : Change installation prefix, if necessary.
6948 if $test X"$prefix" != X"$installprefix"; then
6949         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6950 else
6951         installman3dir="$man3direxp"
6952 fi
6953
6954 : What suffix to use on installed man pages
6955 case "$man3dir" in
6956 ' ')
6957         man3ext='0'
6958         ;;
6959 *)
6960         rp="What suffix should be used for the $package library man pages?"
6961         case "$man3ext" in
6962         '')     case "$man3dir" in
6963                 *3)  dflt=3 ;;
6964                 *3p) dflt=3p ;;
6965                 *3pm) dflt=3pm ;;
6966                 *l) dflt=l;;
6967                 *n) dflt=n;;
6968                 *o) dflt=o;;
6969                 *p) dflt=p;;
6970                 *C) dflt=C;;
6971                 *L) dflt=L;;
6972                 *L3) dflt=L3;;
6973                 *) dflt=3;;
6974                 esac
6975                 ;;
6976         *)      dflt="$man3ext";;
6977         esac
6978         . ./myread
6979         man3ext="$ans"
6980         ;;
6981 esac
6982
6983 : see if we have to deal with yellow pages, now NIS.
6984 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6985         if $test -f /usr/etc/nibindd; then
6986                 echo " "
6987                 echo "I'm fairly confident you're on a NeXT."
6988                 echo " "
6989                 rp='Do you get the hosts file via NetInfo?'
6990                 dflt=y
6991                 case "$hostcat" in
6992                 nidump*) ;;
6993                 '') ;;
6994                 *) dflt=n;;
6995                 esac
6996                 . ./myread
6997                 case "$ans" in
6998                 y*) hostcat='nidump hosts .';;
6999                 *)      case "$hostcat" in
7000                         nidump*) hostcat='';;
7001                         esac
7002                         ;;
7003                 esac
7004         fi
7005         case "$hostcat" in
7006         nidump*) ;;
7007         *)
7008                 case "$hostcat" in
7009                 *ypcat*) dflt=y;;
7010                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
7011                                 dflt=y
7012                         else
7013                                 dflt=n
7014                         fi;;
7015                 *) dflt=n;;
7016                 esac
7017                 echo " "
7018                 rp='Are you getting the hosts file via yellow pages?'
7019                 . ./myread
7020                 case "$ans" in
7021                 y*) hostcat='ypcat hosts';;
7022                 *) hostcat='cat /etc/hosts';;
7023                 esac
7024                 ;;
7025         esac
7026 fi
7027 case "$hostcat" in
7028 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7029 esac
7030 case "$groupcat" in
7031 '') test -f /etc/group && groupcat='cat /etc/group';;
7032 esac
7033 case "$passcat" in
7034 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7035 esac
7036
7037 : now get the host name
7038 echo " "
7039 echo "Figuring out host name..." >&4
7040 case "$myhostname" in
7041 '') cont=true
7042         echo 'Maybe "hostname" will work...'
7043         if tans=`sh -c hostname 2>&1` ; then
7044                 myhostname=$tans
7045                 phostname=hostname
7046                 cont=''
7047         fi
7048         ;;
7049 *) cont='';;
7050 esac
7051 if $test "$cont"; then
7052         if ./xenix; then
7053                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7054                 if tans=`cat /etc/systemid 2>&1` ; then
7055                         myhostname=$tans
7056                         phostname='cat /etc/systemid'
7057                         echo "Whadyaknow.  Xenix always was a bit strange..."
7058                         cont=''
7059                 fi
7060         elif $test -r /etc/systemid; then
7061                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7062         fi
7063 fi
7064 if $test "$cont"; then
7065         echo 'No, maybe "uuname -l" will work...'
7066         if tans=`sh -c 'uuname -l' 2>&1` ; then
7067                 myhostname=$tans
7068                 phostname='uuname -l'
7069         else
7070                 echo 'Strange.  Maybe "uname -n" will work...'
7071                 if tans=`sh -c 'uname -n' 2>&1` ; then
7072                         myhostname=$tans
7073                         phostname='uname -n'
7074                 else
7075                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7076                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7077                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7078                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7079                         else
7080                                 case "$myhostname" in
7081                                 '') echo "Does this machine have an identity crisis or something?"
7082                                         phostname='';;
7083                                 *)
7084                                         echo "Well, you said $myhostname before..."
7085                                         phostname='echo $myhostname';;
7086                                 esac
7087                         fi
7088                 fi
7089         fi
7090 fi
7091 : you do not want to know about this
7092 set $myhostname
7093 myhostname=$1
7094
7095 : verify guess
7096 if $test "$myhostname" ; then
7097         dflt=y
7098         rp='Your host name appears to be "'$myhostname'".'" Right?"
7099         . ./myread
7100         case "$ans" in
7101         y*) ;;
7102         *) myhostname='';;
7103         esac
7104 fi
7105
7106 : bad guess or no guess
7107 while $test "X$myhostname" = X ; do
7108         dflt=''
7109         rp="Please type the (one word) name of your host:"
7110         . ./myread
7111         myhostname="$ans"
7112 done
7113
7114 : translate upper to lower if necessary
7115 case "$myhostname" in
7116 *[A-Z]*)
7117         echo "(Normalizing case in your host name)"
7118         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7119         ;;
7120 esac
7121
7122 case "$myhostname" in
7123 *.*)
7124         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7125         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7126         echo "(Trimming domain name from host name--host name is now $myhostname)"
7127         ;;
7128 *) case "$mydomain" in
7129         '')
7130                 {
7131                         test "X$hostcat" = "Xypcat hosts" &&
7132                         ypmatch "$myhostname" hosts 2>/dev/null |\
7133                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7134                         $test -s hosts
7135                 } || {
7136                         test "X$hostcat" != "X" &&
7137                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7138                                         /[       ]$myhostname[  . ]/p" > hosts
7139                 }
7140                 tmp_re="[       . ]"
7141                 if $test -f hosts; then
7142                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7143                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7144                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7145                                 hosts | $sort | $uniq | \
7146                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7147                         case `$echo X$dflt` in
7148                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7149                                 dflt=.
7150                                 ;;
7151                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7152                                 ;;
7153                         esac
7154                 else
7155                         echo "(I cannot locate a hosts database anywhere)"
7156                         dflt=.
7157                 fi
7158                 case "$dflt" in
7159                 .)
7160                         tans=`./loc resolv.conf X /etc /usr/etc`
7161                         if $test -f "$tans"; then
7162                                 echo "(Attempting domain name extraction from $tans)"
7163                                 dflt=.`$sed -n -e 's/   / /g' \
7164                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7165                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7166                                 case "$dflt" in
7167                                 .) dflt=.`$sed -n -e 's/        / /g' \
7168                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7169                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7170                                         ;;
7171                                 esac
7172                         fi
7173                         ;;
7174                 esac
7175                 case "$dflt" in
7176                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7177                         dflt=.`sh -c domainname 2>/dev/null`
7178                         case "$dflt" in
7179                         '') dflt='.';;
7180                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7181                         esac
7182                         ;;
7183                 esac
7184                 case "$dflt" in
7185                 .) echo "(Lost all hope -- silly guess then)"
7186                         dflt='.uucp'
7187                         ;;
7188                 esac
7189                 $rm -f hosts
7190                 ;;
7191         *) dflt="$mydomain";;
7192         esac;;
7193 esac
7194 echo " "
7195 rp="What is your domain name?"
7196 . ./myread
7197 tans="$ans"
7198 case "$ans" in
7199 '') ;;
7200 .*) ;;
7201 *) tans=".$tans";;
7202 esac
7203 mydomain="$tans"
7204
7205 : translate upper to lower if necessary
7206 case "$mydomain" in
7207 *[A-Z]*)
7208         echo "(Normalizing case in your domain name)"
7209         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7210         ;;
7211 esac
7212
7213 : a little sanity check here
7214 case "$phostname" in
7215 '') ;;
7216 *)
7217         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7218         $myhostname$mydomain|$myhostname) ;;
7219         *)
7220                 case "$phostname" in
7221                 sed*)
7222                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7223                         ;;
7224                 *)
7225                         echo "(That doesn't agree with your $phostname command, by the way.)"
7226                         ;;
7227                 esac
7228         ;;
7229         esac
7230         ;;
7231 esac
7232
7233 $cat <<EOM
7234
7235 I need to get your e-mail address in Internet format if possible, i.e.
7236 something like user@host.domain. Please answer accurately since I have
7237 no easy means to double check it. The default value provided below
7238 is most probably close to reality but may not be valid from outside
7239 your organization...
7240
7241 EOM
7242 cont=x
7243 while test "$cont"; do
7244         case "$cf_email" in
7245         '') dflt="$cf_by@$myhostname$mydomain";;
7246         *) dflt="$cf_email";;
7247         esac
7248         rp='What is your e-mail address?'
7249         . ./myread
7250         cf_email="$ans"
7251         case "$cf_email" in
7252         *@*.*) cont='' ;;
7253         *)
7254                 rp='Address does not look like an Internet one.  Use it anyway?'
7255                 case "$fastread" in
7256                 yes) dflt=y ;;
7257                 *) dflt=n ;;
7258                 esac
7259                 . ./myread
7260                 case "$ans" in
7261                 y*) cont='' ;;
7262                 *) echo " " ;;
7263                 esac
7264                 ;;
7265         esac
7266 done
7267
7268 $cat <<EOM
7269
7270 If you or somebody else will be maintaining perl at your site, please
7271 fill in the correct e-mail address here so that they may be contacted
7272 if necessary. Currently, the "perlbug" program included with perl
7273 will send mail to this address in addition to perlbug@perl.org. You may
7274 enter "none" for no administrator.
7275
7276 EOM
7277 case "$perladmin" in
7278 '') dflt="$cf_email";;
7279 *) dflt="$perladmin";;
7280 esac
7281 rp='Perl administrator e-mail address'
7282 . ./myread
7283 perladmin="$ans"
7284
7285 : figure out how to guarantee perl startup
7286 case "$startperl" in
7287 '')
7288         case "$sharpbang" in
7289         *!)
7290                 $cat <<EOH
7291
7292 I can use the #! construct to start perl on your system. This will
7293 make startup of perl scripts faster, but may cause problems if you
7294 want to share those scripts and perl is not in a standard place
7295 ($binexp/perl) on all your platforms. The alternative is to force
7296 a shell by starting the script with a single ':' character.
7297
7298 EOH
7299                 dflt="$binexp/perl"
7300                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7301                 . ./myread
7302                 case "$ans" in
7303                 none)   startperl=": # use perl";;
7304                 *)      startperl="#!$ans"
7305                         if $test 30 -lt `echo "$ans" | wc -c`; then
7306                                 $cat >&4 <<EOM
7307
7308 WARNING:  Some systems limit the #! command to 32 characters.
7309 If you experience difficulty running Perl scripts with #!, try
7310 installing Perl in a directory with a shorter pathname.
7311
7312 EOM
7313                         fi ;;
7314                 esac
7315                 ;;
7316         *) startperl=": # use perl"
7317                 ;;
7318         esac
7319         ;;
7320 esac
7321 echo "I'll use $startperl to start perl scripts."
7322
7323 : figure best path for perl in scripts
7324 case "$perlpath" in
7325 '')
7326         perlpath="$binexp/perl"
7327         case "$startperl" in
7328         *!*) ;;
7329         *)
7330                 $cat <<EOH
7331
7332 I will use the "eval 'exec'" idiom to start Perl on your system.
7333 I can use the full path of your Perl binary for this purpose, but
7334 doing so may cause problems if you want to share those scripts and
7335 Perl is not always in a standard place ($binexp/perl).
7336
7337 EOH
7338                 dflt="$binexp/perl"
7339                 rp="What path shall I use in \"eval 'exec'\"?"
7340                 . ./myread
7341                 perlpath="$ans"
7342                 ;;
7343         esac
7344         ;;
7345 esac
7346 case "$startperl" in
7347 *!*)    ;;
7348 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7349 esac
7350
7351 : determine where public executable scripts go
7352 set scriptdir scriptdir
7353 eval $prefixit
7354 case "$scriptdir" in
7355 '')
7356         dflt="$bin"
7357         : guess some guesses
7358         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7359         $test -d /usr/share/bin     && dflt=/usr/share/bin
7360         $test -d /usr/local/script  && dflt=/usr/local/script
7361         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7362         $test -d $prefixexp/script  && dflt=$prefixexp/script
7363         set dflt
7364         eval $prefixup
7365         ;;
7366 *)  dflt="$scriptdir"
7367         ;;
7368 esac
7369 $cat <<EOM
7370  
7371 Some installations have a separate directory just for executable scripts so
7372 that they can mount it across multiple architectures but keep the scripts in
7373 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7374 Or you might just lump your scripts in with all your other executables.
7375  
7376 EOM
7377 fn=d~
7378 rp='Where do you keep publicly executable scripts?'
7379 . ./getfile
7380 if $test "X$ansexp" != "X$scriptdirexp"; then
7381         installscript=''
7382 fi
7383 scriptdir="$ans"
7384 scriptdirexp="$ansexp"
7385 : Change installation prefix, if necessary.
7386 if $test X"$prefix" != X"$installprefix"; then
7387         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7388 else
7389         installscript="$scriptdirexp"
7390 fi
7391
7392 : determine where add-on public executables go
7393 case "$sitebin" in
7394 '')     dflt=$siteprefix/bin ;;
7395 *)      dflt=$sitebin ;;
7396 esac
7397 fn=d~
7398 rp='Pathname where the add-on public executables should be installed?'
7399 . ./getfile
7400 sitebin="$ans"
7401 sitebinexp="$ansexp"
7402 : Change installation prefix, if necessary.
7403 if $test X"$prefix" != X"$installprefix"; then
7404         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7405 else
7406         installsitebin="$sitebinexp"
7407 fi
7408
7409 case "$useperlio" in
7410 $define|true|[yY]*)     dflt='y';;
7411 *) dflt='n';;
7412 esac
7413 cat <<EOM
7414
7415 Previous version of $package used the standard IO mechanisms as defined
7416 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7417 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7418 the default.  This abstraction layer can use AT&T's sfio (if you already
7419 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7420 problems with some extension modules.  Using PerlIO with stdio is safe,
7421 but it is slower than plain stdio and therefore is not the default.
7422
7423 If this doesn't make any sense to you, just accept the default '$dflt'.
7424 EOM
7425 rp='Use the experimental PerlIO abstraction layer?'
7426 . ./myread
7427 case "$ans" in
7428 y|Y) 
7429         val="$define"
7430         ;;     
7431 *)      
7432         echo "Ok, doing things the stdio way"
7433         val="$undef"
7434         ;;
7435 esac
7436 set useperlio
7437 eval $setvar 
7438
7439 case "$vendorprefix" in
7440 '')     d_vendorbin="$undef"
7441         vendorbin=''
7442         vendorbinexp=''
7443         ;;
7444 *)      d_vendorbin="$define"
7445         : determine where vendor-supplied executables go.
7446         case "$vendorbin" in
7447         '') dflt=$vendorprefix/bin ;;
7448         *)      dflt="$vendorbin" ;;
7449         esac
7450         fn=d~+
7451         rp='Pathname for the vendor-supplied executables directory?'
7452         . ./getfile
7453         vendorbin="$ans"
7454         vendorbinexp="$ansexp"
7455         ;;
7456 esac
7457 : Change installation prefix, if necessary.
7458 if $test X"$prefix" != X"$installprefix"; then
7459         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7460 else
7461         installvendorbin="$vendorbinexp"
7462 fi
7463
7464 : see if qgcvt exists
7465 set qgcvt d_qgcvt
7466 eval $inlibc
7467
7468 echo " "
7469
7470 if $test X"$d_longdbl" = X"$define"; then
7471
7472 echo "Checking how to print long doubles..." >&4
7473
7474 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7475         $cat >try.c <<'EOCP'
7476 #include <sys/types.h>
7477 #include <stdio.h>
7478 int main() {
7479   double d = 123.456;
7480   printf("%.3f\n", d);
7481 }
7482 EOCP
7483         set try
7484         if eval $compile; then
7485                 yyy=`./try$exe_ext`
7486                 case "$yyy" in
7487                 123.456)
7488                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7489                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7490                         echo "We will use %f."
7491                         ;;
7492                 esac
7493         fi
7494 fi
7495
7496 if $test X"$sPRIfldbl" = X; then
7497         $cat >try.c <<'EOCP'
7498 #include <sys/types.h>
7499 #include <stdio.h>
7500 int main() {
7501   long double d = 123.456;
7502   printf("%.3llf\n", d);
7503 }
7504 EOCP
7505         set try
7506         if eval $compile; then
7507                 yyy=`./try$exe_ext`
7508                 case "$yyy" in
7509                 123.456)
7510                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7511                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7512                         echo "We will use %llf."
7513                         ;;
7514                 esac
7515         fi
7516 fi
7517
7518 if $test X"$sPRIfldbl" = X; then
7519         $cat >try.c <<'EOCP'
7520 #include <sys/types.h>
7521 #include <stdio.h>
7522 int main() {
7523   long double d = 123.456;
7524   printf("%.3Lf\n", d);
7525 }
7526 EOCP
7527         set try
7528         if eval $compile; then
7529                 yyy=`./try$exe_ext`
7530                 case "$yyy" in
7531                 123.456)
7532                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7533                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7534                         echo "We will use %Lf."
7535                         ;;
7536                 esac
7537         fi
7538 fi
7539
7540 if $test X"$sPRIfldbl" = X; then
7541         $cat >try.c <<'EOCP'
7542 #include <sys/types.h>
7543 #include <stdio.h>
7544 int main() {
7545   long double d = 123.456;
7546   printf("%.3lf\n", d);
7547 }
7548 EOCP
7549         set try
7550         if eval $compile; then
7551                 yyy=`./try$exe_ext`
7552                 case "$yyy" in
7553                 123.456)
7554                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7555                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7556                         echo "We will use %lf."
7557                         ;;
7558                 esac
7559         fi
7560 fi
7561
7562 if $test X"$sPRIfldbl" = X; then
7563         echo "Cannot figure out how to print long doubles." >&4
7564 else
7565         sSCNfldbl=$sPRIfldbl    # expect consistency
7566 fi
7567
7568 $rm -f try try.*
7569
7570 fi # d_longdbl
7571
7572 case "$sPRIfldbl" in
7573 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7574         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7575         d_SCNfldbl="$undef";
7576         ;;
7577 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7578         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7579         d_SCNfldbl="$define";
7580         ;;
7581 esac
7582
7583 : Check how to convert floats to strings.
7584 echo " "
7585 echo "Checking for an efficient way to convert floats to strings."
7586 echo " " > try.c
7587 case "$uselongdouble" in
7588 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7589 esac
7590 case "$d_longdbl" in
7591 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7592 esac
7593 case "$d_PRIgldbl" in
7594 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7595 esac
7596 $cat >>try.c <<EOP
7597 #ifdef TRY_gconvert
7598 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7599 char *myname = "gconvert";
7600 #endif
7601 #ifdef TRY_gcvt
7602 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7603 char *myname = "gcvt";
7604 #endif
7605 #ifdef TRY_qgcvt
7606 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7607 char *myname = "qgcvt";
7608 #define DOUBLETYPE long double
7609 #endif
7610 #ifdef TRY_sprintf
7611 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7612 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7613 #else
7614 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7615 #endif
7616 char *myname = "sprintf";
7617 #endif
7618
7619 #ifndef DOUBLETYPE
7620 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7621 #define DOUBLETYPE long double
7622 #else
7623 #define DOUBLETYPE double
7624 #endif
7625 #endif
7626
7627 #include <stdio.h>
7628
7629 #define I_STDLIB $i_stdlib
7630 #ifdef I_STDLIB
7631 #include <stdlib.h>
7632 #endif
7633
7634 int
7635 checkit(expect, got)
7636 char *expect;
7637 char *got;
7638 {
7639     if (strcmp(expect, got)) {
7640                 printf("%s oddity:  Expected %s, got %s\n",
7641                         myname, expect, got);
7642                 exit(1);
7643         }
7644 }
7645
7646 int main()
7647
7648         char buf[64]; 
7649         buf[63] = '\0';
7650
7651         /* This must be 1st test on (which?) platform */
7652         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7653         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7654         checkit("0.1", buf);
7655
7656         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7657         checkit("1", buf);
7658
7659         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7660         checkit("1.1", buf);
7661
7662         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7663         checkit("1.01", buf);
7664
7665         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7666         checkit("1.001", buf);
7667
7668         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7669         checkit("1.0001", buf);
7670
7671         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7672         checkit("1.00001", buf);
7673
7674         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7675         checkit("1.000001", buf);
7676
7677         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7678         checkit("0", buf);
7679
7680         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7681         checkit("-1", buf);
7682
7683         /* Some Linux gcvt's give 1.e+5 here. */
7684         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7685         checkit("100000", buf);
7686         
7687         /* Some Linux gcvt's give -1.e+5 here. */
7688         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7689         checkit("-100000", buf);
7690
7691         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7692         checkit("123.456", buf);
7693
7694         exit(0);
7695 }
7696 EOP
7697 case "$d_Gconvert" in
7698 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7699 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7700 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7701 *) xxx_list='gconvert gcvt sprintf' ;;
7702 esac
7703
7704 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7705 "$define$define$define")
7706     # for long doubles prefer first qgcvt, then sprintf
7707     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7708     xxx_list="sprintf $xxx_list"
7709     case "$d_qgcvt" in
7710     "$define") xxx_list="qgcvt $xxx_list" ;;
7711     esac
7712     ;;
7713 esac
7714
7715 for xxx_convert in $xxx_list; do
7716         echo "Trying $xxx_convert..."
7717         $rm -f try try$_o
7718         set try -DTRY_$xxx_convert
7719         if eval $compile; then
7720                 echo "$xxx_convert() found." >&4
7721                 if ./try; then
7722                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7723                         break;
7724                 else
7725                         echo "...But $xxx_convert didn't work as I expected."
7726                 fi
7727         else
7728                 echo "$xxx_convert NOT found." >&4
7729         fi
7730 done
7731         
7732 case "$xxx_convert" in
7733 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7734 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7735 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7736 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7737    "$define$define$define")
7738       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7739    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7740    esac
7741    ;;  
7742 esac
7743
7744 : Initialize h_fcntl
7745 h_fcntl=false
7746
7747 : Initialize h_sysfile
7748 h_sysfile=false
7749
7750 : access call always available on UNIX
7751 set access d_access
7752 eval $inlibc
7753
7754 : locate the flags for 'access()'
7755 case "$d_access" in
7756 "$define")
7757         echo " "
7758         $cat >access.c <<'EOCP'
7759 #include <sys/types.h>
7760 #ifdef I_FCNTL
7761 #include <fcntl.h>
7762 #endif
7763 #ifdef I_SYS_FILE
7764 #include <sys/file.h>
7765 #endif
7766 #ifdef I_UNISTD
7767 #include <unistd.h>
7768 #endif
7769 int main() {
7770         exit(R_OK);
7771 }
7772 EOCP
7773         : check sys/file.h first, no particular reason here
7774         if $test `./findhdr sys/file.h` && \
7775                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7776                 h_sysfile=true;
7777                 echo "<sys/file.h> defines the *_OK access constants." >&4
7778         elif $test `./findhdr fcntl.h` && \
7779                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7780                 h_fcntl=true;
7781                 echo "<fcntl.h> defines the *_OK access constants." >&4
7782         elif $test `./findhdr unistd.h` && \
7783                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7784                 echo "<unistd.h> defines the *_OK access constants." >&4
7785         else
7786                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7787         fi
7788         ;;
7789 esac
7790 $rm -f access*
7791
7792 : see if accessx exists
7793 set accessx d_accessx
7794 eval $inlibc
7795
7796 : see if alarm exists
7797 set alarm d_alarm
7798 eval $inlibc
7799
7800 : see if atolf exists
7801 set atolf d_atolf
7802 eval $inlibc
7803
7804 : see if atoll exists
7805 set atoll d_atoll
7806 eval $inlibc
7807
7808 : Look for GNU-cc style attribute checking
7809 echo " "
7810 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7811 $cat >attrib.c <<'EOCP'
7812 #include <stdio.h>
7813 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7814 EOCP
7815 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7816         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7817                 echo "Your C compiler doesn't fully support __attribute__."
7818                 val="$undef"
7819         else
7820                 echo "Your C compiler supports __attribute__."
7821                 val="$define"
7822         fi
7823 else
7824         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7825         val="$undef"
7826 fi
7827 set d_attribut
7828 eval $setvar
7829 $rm -f attrib*
7830
7831 : see if bcmp exists
7832 set bcmp d_bcmp
7833 eval $inlibc
7834
7835 : see if bcopy exists
7836 set bcopy d_bcopy
7837 eval $inlibc
7838
7839 : see if this is a unistd.h system
7840 set unistd.h i_unistd
7841 eval $inhdr
7842
7843 : see if getpgrp exists
7844 set getpgrp d_getpgrp
7845 eval $inlibc
7846
7847 case "$d_getpgrp" in
7848 "$define")
7849         echo " "
7850         echo "Checking to see which flavor of getpgrp is in use..."
7851         $cat >set.c <<EOP
7852 #$i_unistd I_UNISTD
7853 #include <sys/types.h>
7854 #ifdef I_UNISTD
7855 #  include <unistd.h>
7856 #endif
7857 int main()
7858 {
7859         if (getuid() == 0) {
7860                 printf("(I see you are running Configure as super-user...)\n");
7861                 setuid(1);
7862         }
7863 #ifdef TRY_BSD_PGRP
7864         if (getpgrp(1) == 0)
7865                 exit(0);
7866 #else
7867         if (getpgrp() > 0)
7868                 exit(0);
7869 #endif
7870         exit(1);
7871 }
7872 EOP
7873         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7874                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7875                 val="$define"
7876         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7877                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7878                 val="$undef"
7879         else
7880                 echo "I can't seem to compile and run the test program."
7881                 if ./usg; then
7882                         xxx="a USG one, i.e. you use getpgrp()."
7883                 else
7884                         # SVR4 systems can appear rather BSD-ish.
7885                         case "$i_unistd" in
7886                         $undef)
7887                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7888                                 val="$define"
7889                                 ;;
7890                         $define)
7891                                 xxx="probably a USG one, i.e. you use getpgrp()."
7892                                 val="$undef"
7893                                 ;;
7894                         esac
7895                 fi
7896                 echo "Assuming your getpgrp is $xxx" >&4
7897         fi
7898         ;;
7899 *) val="$undef";;
7900 esac
7901 set d_bsdgetpgrp
7902 eval $setvar
7903 $rm -f set set.c
7904
7905 : see if setpgrp exists
7906 set setpgrp d_setpgrp
7907 eval $inlibc
7908
7909 case "$d_setpgrp" in
7910 "$define")
7911         echo " "
7912         echo "Checking to see which flavor of setpgrp is in use..."
7913         $cat >set.c <<EOP
7914 #$i_unistd I_UNISTD
7915 #include <sys/types.h>
7916 #ifdef I_UNISTD
7917 #  include <unistd.h>
7918 #endif
7919 int main()
7920 {
7921         if (getuid() == 0) {
7922                 printf("(I see you are running Configure as super-user...)\n");
7923                 setuid(1);
7924         }
7925 #ifdef TRY_BSD_PGRP
7926         if (-1 == setpgrp(1, 1))
7927                 exit(0);
7928 #else
7929         if (setpgrp() != -1)
7930                 exit(0);
7931 #endif
7932         exit(1);
7933 }
7934 EOP
7935         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7936                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7937                 val="$define"
7938         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7939                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7940                 val="$undef"
7941         else
7942                 echo "(I can't seem to compile and run the test program.)"
7943                 if ./usg; then
7944                         xxx="a USG one, i.e. you use setpgrp()."
7945                 else
7946                         # SVR4 systems can appear rather BSD-ish.
7947                         case "$i_unistd" in
7948                         $undef)
7949                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7950                                 val="$define"
7951                                 ;;
7952                         $define)
7953                                 xxx="probably a USG one, i.e. you use setpgrp()."
7954                                 val="$undef"
7955                                 ;;
7956                         esac
7957                 fi
7958                 echo "Assuming your setpgrp is $xxx" >&4
7959         fi
7960         ;;
7961 *) val="$undef";;
7962 esac
7963 set d_bsdsetpgrp
7964 eval $setvar
7965 $rm -f set set.c
7966 : see if bzero exists
7967 set bzero d_bzero
7968 eval $inlibc
7969
7970 : see if signal is declared as pointer to function returning int or void
7971 echo " "
7972 xxx=`./findhdr signal.h`
7973 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7974 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7975         echo "You have int (*signal())() instead of void." >&4
7976         val="$undef"
7977 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7978         echo "You have void (*signal())()." >&4
7979         val="$define"
7980 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7981         echo "You have int (*signal())() instead of void." >&4
7982         val="$undef"
7983 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7984         echo "You have void (*signal())()." >&4
7985         val="$define"
7986 else
7987         case "$d_voidsig" in
7988         '')
7989         echo "I can't determine whether signal handler returns void or int..." >&4
7990                 dflt=void
7991                 rp="What type does your signal handler return?"
7992                 . ./myread
7993                 case "$ans" in
7994                 v*) val="$define";;
7995                 *) val="$undef";;
7996                 esac;;
7997         "$define")
7998                 echo "As you already told me, signal handler returns void." >&4
7999                 val="$define"
8000                 ;;
8001         *)      echo "As you already told me, signal handler returns int." >&4
8002                 val="$undef"
8003                 ;;
8004         esac
8005 fi
8006 set d_voidsig
8007 eval $setvar
8008 case "$d_voidsig" in
8009 "$define") signal_t="void";;
8010 *) signal_t="int";;
8011 esac
8012 $rm -f $$.tmp
8013
8014 : check for ability to cast large floats to 32-bit ints.
8015 echo " "
8016 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8017 if $test "$intsize" -ge 4; then
8018         xxx=int
8019 else
8020         xxx=long
8021 fi
8022 $cat >try.c <<EOCP
8023 #include <stdio.h>
8024 #include <sys/types.h>
8025 #include <signal.h>
8026 $signal_t blech(s) int s; { exit(3); }
8027 int main()
8028 {
8029         $xxx i32;
8030         double f, g;
8031         int result = 0;
8032         char str[16];
8033         signal(SIGFPE, blech);
8034
8035         /* Don't let compiler optimize the test away.  Store the number 
8036            in a writable string for gcc to pass to sscanf under HP/UX.
8037         */
8038         sprintf(str, "2147483647");
8039         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8040         g = 10 * f;
8041         i32  = ($xxx) g;
8042
8043         /* x86 processors will probably give 0x8000 0000, which is a
8044        sign change.  We don't want that.  We want to mimic SPARC
8045            behavior here, which is to preserve the sign and give
8046            back 0x7fff ffff.
8047         */
8048         if (i32 != ($xxx) f)
8049                 result |= 1;
8050         exit(result);
8051 }
8052 EOCP
8053 set try
8054 if eval $compile_ok; then
8055         ./try
8056         yyy=$?
8057 else
8058         echo "(I can't seem to compile the test program--assuming it can't)"
8059         yyy=1
8060 fi
8061 case "$yyy" in
8062 0)      val="$define"
8063         echo "Yup, it can."
8064         ;;
8065 *)      val="$undef"
8066         echo "Nope, it can't."
8067         ;;
8068 esac
8069 set d_casti32
8070 eval $setvar
8071 $rm -f try try.*
8072
8073 : check for ability to cast negative floats to unsigned
8074 echo " "
8075 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8076 $cat >try.c <<EOCP
8077 #include <stdio.h>
8078 #include <sys/types.h>
8079 #include <signal.h>
8080 $signal_t blech(s) int s; { exit(7); }
8081 $signal_t blech_in_list(s) int s; { exit(4); }
8082 unsigned long dummy_long(p) unsigned long p; { return p; }
8083 unsigned int dummy_int(p) unsigned int p; { return p; }
8084 unsigned short dummy_short(p) unsigned short p; { return p; }
8085 int main()
8086 {
8087         double f;
8088         unsigned long along;
8089         unsigned int aint;
8090         unsigned short ashort;
8091         int result = 0;
8092         char str[16];
8093         
8094         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8095            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8096            optimized the whole file away
8097         */
8098         /* Store the number in a writable string for gcc to pass to 
8099            sscanf under HP/UX.
8100         */
8101         sprintf(str, "-123");
8102         sscanf(str, "%lf", &f);  /* f = -123.; */
8103
8104         signal(SIGFPE, blech);
8105         along = (unsigned long)f;
8106         aint = (unsigned int)f;
8107         ashort = (unsigned short)f;
8108         if (along != (unsigned long)-123)
8109                 result |= 1;
8110         if (aint != (unsigned int)-123)
8111                 result |= 1;
8112         if (ashort != (unsigned short)-123)
8113                 result |= 1;
8114         sprintf(str, "1073741824.");
8115         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8116         f = f + f;
8117         along = 0;
8118         along = (unsigned long)f;
8119         if (along != 0x80000000)
8120                 result |= 2;
8121         f -= 1.;
8122         along = 0;
8123         along = (unsigned long)f;
8124         if (along != 0x7fffffff)
8125                 result |= 1;
8126         f += 2.;
8127         along = 0;
8128         along = (unsigned long)f;
8129         if (along != 0x80000001)
8130                 result |= 2;
8131         if (result)
8132                 exit(result);
8133         signal(SIGFPE, blech_in_list);
8134         sprintf(str, "123.");
8135         sscanf(str, "%lf", &f);  /* f = 123.; */
8136         along = dummy_long((unsigned long)f);
8137         aint = dummy_int((unsigned int)f);
8138         ashort = dummy_short((unsigned short)f);
8139         if (along != (unsigned long)123)
8140                 result |= 4;
8141         if (aint != (unsigned int)123)
8142                 result |= 4;
8143         if (ashort != (unsigned short)123)
8144                 result |= 4;
8145         exit(result);
8146
8147 }
8148 EOCP
8149 set try
8150 if eval $compile_ok; then
8151         ./try
8152         castflags=$?
8153 else
8154         echo "(I can't seem to compile the test program--assuming it can't)"
8155         castflags=7
8156 fi
8157 case "$castflags" in
8158 0)      val="$define"
8159         echo "Yup, it can."
8160         ;;
8161 *)      val="$undef"
8162         echo "Nope, it can't."
8163         ;;
8164 esac
8165 set d_castneg
8166 eval $setvar
8167 $rm -f try.*
8168
8169 : see if vprintf exists
8170 echo " "
8171 if set vprintf val -f d_vprintf; eval $csym; $val; then
8172         echo 'vprintf() found.' >&4
8173         val="$define"
8174         $cat >vprintf.c <<'EOF'
8175 #include <varargs.h>
8176
8177 int main() { xxx("foo"); }
8178
8179 xxx(va_alist)
8180 va_dcl
8181 {
8182         va_list args;
8183         char buf[10];
8184
8185         va_start(args);
8186         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8187 }
8188 EOF
8189         set vprintf
8190         if eval $compile && ./vprintf; then
8191                 echo "Your vsprintf() returns (int)." >&4
8192                 val2="$undef"
8193         else
8194                 echo "Your vsprintf() returns (char*)." >&4
8195                 val2="$define"
8196         fi
8197 else
8198         echo 'vprintf() NOT found.' >&4
8199                 val="$undef"
8200                 val2="$undef"
8201 fi
8202 set d_vprintf
8203 eval $setvar
8204 val=$val2
8205 set d_charvspr
8206 eval $setvar
8207
8208 : see if chown exists
8209 set chown d_chown
8210 eval $inlibc
8211
8212 : see if chroot exists
8213 set chroot d_chroot
8214 eval $inlibc
8215
8216 : see if chsize exists
8217 set chsize d_chsize
8218 eval $inlibc
8219
8220 : check for const keyword
8221 echo " "
8222 echo 'Checking to see if your C compiler knows about "const"...' >&4
8223 $cat >const.c <<'EOCP'
8224 typedef struct spug { int drokk; } spug;
8225 int main()
8226 {
8227         const char *foo;
8228         const spug y;
8229 }
8230 EOCP
8231 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8232         val="$define"
8233         echo "Yup, it does."
8234 else
8235         val="$undef"
8236         echo "Nope, it doesn't."
8237 fi
8238 set d_const
8239 eval $setvar
8240
8241 : see if crypt exists
8242 echo " "
8243 if set crypt val -f d_crypt; eval $csym; $val; then
8244         echo 'crypt() found.' >&4
8245         val="$define"
8246         cryptlib=''
8247 else
8248         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8249         if $test -z "$cryptlib"; then
8250                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8251         else
8252                 cryptlib=-lcrypt
8253         fi
8254         if $test -z "$cryptlib"; then
8255                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8256         else
8257                 cryptlib=-lcrypt
8258         fi
8259         if $test -z "$cryptlib"; then
8260                 cryptlib=`./loc libcrypt$_a "" $libpth`
8261         else
8262                 cryptlib=-lcrypt
8263         fi
8264         if $test -z "$cryptlib"; then
8265                 echo 'crypt() NOT found.' >&4
8266                 val="$undef"
8267         else
8268                 val="$define"
8269         fi
8270 fi
8271 set d_crypt
8272 eval $setvar
8273
8274 : get csh whereabouts
8275 case "$csh" in
8276 'csh') val="$undef" ;;
8277 *) val="$define" ;;
8278 esac
8279 set d_csh
8280 eval $setvar
8281 : Respect a hint or command line value for full_csh.
8282 case "$full_csh" in
8283 '') full_csh=$csh ;;
8284 esac
8285
8286 : see if cuserid exists
8287 set cuserid d_cuserid
8288 eval $inlibc
8289
8290 : see if this is a limits.h system
8291 set limits.h i_limits
8292 eval $inhdr
8293
8294 : see if this is a float.h system
8295 set float.h i_float
8296 eval $inhdr
8297
8298 : See if number of significant digits in a double precision number is known
8299 echo " "
8300 $cat >dbl_dig.c <<EOM
8301 #$i_limits I_LIMITS
8302 #$i_float I_FLOAT
8303 #ifdef I_LIMITS
8304 #include <limits.h>
8305 #endif
8306 #ifdef I_FLOAT
8307 #include <float.h>
8308 #endif
8309 #ifdef DBL_DIG
8310 printf("Contains DBL_DIG");
8311 #endif
8312 EOM
8313 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8314 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8315         echo "DBL_DIG found." >&4
8316         val="$define"
8317 else
8318         echo "DBL_DIG NOT found." >&4
8319         val="$undef"
8320 fi
8321 $rm -f dbl_dig.?
8322 set d_dbl_dig
8323 eval $setvar
8324
8325 : see if difftime exists
8326 set difftime d_difftime
8327 eval $inlibc
8328
8329 : see if this is a dirent system
8330 echo " "
8331 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8332         val="$define"
8333         echo "<dirent.h> found." >&4
8334 else
8335         val="$undef"
8336         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8337                 echo "<sys/dir.h> found." >&4
8338                 echo " "
8339         else
8340                 xinc=`./findhdr sys/ndir.h`
8341         fi
8342         echo "<dirent.h> NOT found." >&4
8343 fi
8344 set i_dirent
8345 eval $setvar
8346
8347 : Look for type of directory structure.
8348 echo " "
8349 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8350
8351 case "$direntrytype" in
8352 ''|' ')
8353         case "$i_dirent" in
8354         $define) guess1='struct dirent' ;;
8355         *) guess1='struct direct'  ;;
8356         esac
8357         ;;
8358 *)      guess1="$direntrytype"
8359         ;;
8360 esac
8361
8362 case "$guess1" in
8363 'struct dirent') guess2='struct direct' ;;
8364 *) guess2='struct dirent' ;;
8365 esac
8366                 
8367 if $contains "$guess1" try.c >/dev/null 2>&1; then
8368         direntrytype="$guess1"
8369         echo "Your directory entries are $direntrytype." >&4
8370 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8371         direntrytype="$guess2"
8372         echo "Your directory entries seem to be $direntrytype." >&4
8373 else
8374         echo "I don't recognize your system's directory entries." >&4
8375         rp="What type is used for directory entries on this system?"
8376         dflt="$guess1"
8377         . ./myread
8378         direntrytype="$ans"
8379 fi
8380 $rm -f try.c
8381
8382
8383 : see if the directory entry stores field length
8384 echo " "
8385 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8386 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8387         echo "Good, your directory entry keeps length information in d_namlen." >&4
8388         val="$define"
8389 else
8390         echo "Your directory entry does not know about the d_namlen field." >&4
8391         val="$undef"
8392 fi
8393 set d_dirnamlen
8394 eval $setvar
8395 $rm -f try.c
8396
8397 : see if dlerror exists
8398 xxx_runnm="$runnm"
8399 runnm=false
8400 set dlerror d_dlerror
8401 eval $inlibc
8402 runnm="$xxx_runnm"
8403
8404 : see if dlfcn is available
8405 set dlfcn.h i_dlfcn
8406 eval $inhdr
8407
8408 case "$usedl" in
8409 $define|y|true)
8410         $cat << EOM
8411
8412 On a few systems, the dynamically loaded modules that perl generates and uses
8413 will need a different extension than shared libs. The default will probably
8414 be appropriate.
8415
8416 EOM
8417         case "$dlext" in
8418         '')     dflt="$so" ;;
8419         *)      dflt="$dlext" ;;
8420         esac
8421         rp='What is the extension of dynamically loaded modules'
8422         . ./myread
8423         dlext="$ans"
8424         ;;
8425 *)
8426         dlext="none"
8427         ;;
8428 esac
8429
8430 : Check if dlsym need a leading underscore
8431 echo " "
8432 val="$undef"
8433
8434 case "$dlsrc" in
8435 dl_dlopen.xs)
8436         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8437         $cat >dyna.c <<'EOM'
8438 fred () { }
8439 EOM
8440
8441 $cat >fred.c<<EOM
8442
8443 #include <stdio.h>
8444 #$i_dlfcn I_DLFCN
8445 #ifdef I_DLFCN
8446 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8447 #else
8448 #include <sys/types.h>
8449 #include <nlist.h>
8450 #include <link.h>
8451 #endif
8452
8453 extern int fred() ;
8454
8455 int main()
8456 {
8457     void * handle ;
8458     void * symbol ;
8459 #ifndef RTLD_LAZY
8460     int mode = 1 ;
8461 #else
8462     int mode = RTLD_LAZY ;
8463 #endif
8464     handle = dlopen("./dyna.$dlext", mode) ;
8465     if (handle == NULL) {
8466         printf ("1\n") ;
8467         fflush (stdout) ;
8468         exit(0);
8469     }
8470     symbol = dlsym(handle, "fred") ;
8471     if (symbol == NULL) {
8472         /* try putting a leading underscore */
8473         symbol = dlsym(handle, "_fred") ;
8474         if (symbol == NULL) {
8475             printf ("2\n") ;
8476             fflush (stdout) ;
8477             exit(0);
8478         }
8479         printf ("3\n") ;
8480     }
8481     else
8482         printf ("4\n") ;
8483     fflush (stdout) ;
8484     exit(0);
8485 }
8486 EOM
8487         : Call the object file tmp-dyna.o in case dlext=o.
8488         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8489                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8490                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8491                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8492                 xxx=`./fred`
8493                 case $xxx in
8494                 1)      echo "Test program failed using dlopen." >&4
8495                         echo "Perhaps you should not use dynamic loading." >&4;;
8496                 2)      echo "Test program failed using dlsym." >&4
8497                         echo "Perhaps you should not use dynamic loading." >&4;;
8498                 3)      echo "dlsym needs a leading underscore" >&4
8499                         val="$define" ;;
8500                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8501                 esac
8502         else
8503                 echo "I can't compile and run the test program." >&4
8504                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8505         fi
8506         ;;
8507 esac
8508                 
8509 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8510
8511 set d_dlsymun
8512 eval $setvar
8513
8514 hasproto='varname=$1; func=$2; shift; shift;
8515 while $test $# -ge 2; do
8516         case "$1" in
8517         $define) echo "#include <$2>";;
8518         esac ;
8519     shift 2;
8520 done > try.c;
8521 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8522 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8523         echo "$func() prototype found.";
8524         val="$define";
8525 else
8526         echo "$func() prototype NOT found.";
8527         val="$undef";
8528 fi;
8529 set $varname;
8530 eval $setvar;
8531 $rm -f try.c tryout.c'
8532
8533 : see if prototype for drand48 is available
8534 echo " "
8535 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8536 eval $hasproto
8537
8538 : see if dup2 exists
8539 set dup2 d_dup2
8540 eval $inlibc
8541
8542 : see if eaccess exists
8543 set eaccess d_eaccess
8544 eval $inlibc
8545
8546 : see if endgrent exists
8547 set endgrent d_endgrent
8548 eval $inlibc
8549
8550 : see if endhostent exists
8551 set endhostent d_endhent
8552 eval $inlibc
8553
8554 : see if endnetent exists
8555 set endnetent d_endnent
8556 eval $inlibc
8557
8558 : see if endprotoent exists
8559 set endprotoent d_endpent
8560 eval $inlibc
8561
8562 : see if endpwent exists
8563 set endpwent d_endpwent
8564 eval $inlibc
8565
8566 : see if endservent exists
8567 set endservent d_endsent
8568 eval $inlibc
8569
8570 : Locate the flags for 'open()'
8571 echo " "
8572 $cat >open3.c <<'EOCP'
8573 #include <sys/types.h>
8574 #ifdef I_FCNTL
8575 #include <fcntl.h>
8576 #endif
8577 #ifdef I_SYS_FILE
8578 #include <sys/file.h>
8579 #endif
8580 int main() {
8581         if(O_RDONLY);
8582 #ifdef O_TRUNC
8583         exit(0);
8584 #else
8585         exit(1);
8586 #endif
8587 }
8588 EOCP
8589 : check sys/file.h first to get FREAD on Sun
8590 if $test `./findhdr sys/file.h` && \
8591                 set open3 -DI_SYS_FILE && eval $compile; then
8592         h_sysfile=true;
8593         echo "<sys/file.h> defines the O_* constants..." >&4
8594         if ./open3; then
8595                 echo "and you have the 3 argument form of open()." >&4
8596                 val="$define"
8597         else
8598                 echo "but not the 3 argument form of open().  Oh, well." >&4
8599                 val="$undef"
8600         fi
8601 elif $test `./findhdr fcntl.h` && \
8602                 set open3 -DI_FCNTL && eval $compile; then
8603         h_fcntl=true;
8604         echo "<fcntl.h> defines the O_* constants..." >&4
8605         if ./open3; then
8606                 echo "and you have the 3 argument form of open()." >&4
8607                 val="$define"
8608         else
8609                 echo "but not the 3 argument form of open().  Oh, well." >&4
8610                 val="$undef"
8611         fi
8612 else
8613         val="$undef"
8614         echo "I can't find the O_* constant definitions!  You got problems." >&4
8615 fi
8616 set d_open3
8617 eval $setvar
8618 $rm -f open3*
8619
8620 : see which of string.h or strings.h is needed
8621 echo " "
8622 strings=`./findhdr string.h`
8623 if $test "$strings" && $test -r "$strings"; then
8624         echo "Using <string.h> instead of <strings.h>." >&4
8625         val="$define"
8626 else
8627         val="$undef"
8628         strings=`./findhdr strings.h`
8629         if $test "$strings" && $test -r "$strings"; then
8630                 echo "Using <strings.h> instead of <string.h>." >&4
8631         else
8632                 echo "No string header found -- You'll surely have problems." >&4
8633         fi
8634 fi
8635 set i_string
8636 eval $setvar
8637 case "$i_string" in
8638 "$undef") strings=`./findhdr strings.h`;;
8639 *)        strings=`./findhdr string.h`;;
8640 esac
8641
8642 : check for non-blocking I/O stuff
8643 case "$h_sysfile" in
8644 true) echo "#include <sys/file.h>" > head.c;;
8645 *)
8646         case "$h_fcntl" in
8647         true) echo "#include <fcntl.h>" > head.c;;
8648         *) echo "#include <sys/fcntl.h>" > head.c;;
8649         esac
8650         ;;
8651 esac
8652 echo " "
8653 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8654 case "$o_nonblock" in
8655 '')
8656         $cat head.c > try.c
8657         $cat >>try.c <<'EOCP'
8658 #include <stdio.h>
8659 int main() {
8660 #ifdef O_NONBLOCK
8661         printf("O_NONBLOCK\n");
8662         exit(0);
8663 #endif
8664 #ifdef O_NDELAY
8665         printf("O_NDELAY\n");
8666         exit(0);
8667 #endif
8668 #ifdef FNDELAY
8669         printf("FNDELAY\n");
8670         exit(0);
8671 #endif
8672         exit(0);
8673 }
8674 EOCP
8675         set try
8676         if eval $compile_ok; then
8677                 o_nonblock=`./try`
8678                 case "$o_nonblock" in
8679                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8680                 *) echo "Seems like we can use $o_nonblock.";;
8681                 esac
8682         else
8683                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8684         fi
8685         ;;
8686 *) echo "Using $hint value $o_nonblock.";;
8687 esac
8688 $rm -f try try.* .out core
8689
8690 echo " "
8691 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8692 case "$eagain" in
8693 '')
8694         $cat head.c > try.c
8695         $cat >>try.c <<EOCP
8696 #include <errno.h>
8697 #include <sys/types.h>
8698 #include <signal.h>
8699 #include <stdio.h> 
8700 #define MY_O_NONBLOCK $o_nonblock
8701 #ifndef errno  /* XXX need better Configure test */
8702 extern int errno;
8703 #endif
8704 #$i_unistd I_UNISTD
8705 #ifdef I_UNISTD
8706 #include <unistd.h>
8707 #endif
8708 #$i_string I_STRING
8709 #ifdef I_STRING
8710 #include <string.h>
8711 #else
8712 #include <strings.h>
8713 #endif
8714 $signal_t blech(x) int x; { exit(3); }
8715 EOCP
8716         $cat >> try.c <<'EOCP'
8717 int main()
8718 {
8719         int pd[2];
8720         int pu[2];
8721         char buf[1];
8722         char string[100];
8723
8724         pipe(pd);       /* Down: child -> parent */
8725         pipe(pu);       /* Up: parent -> child */
8726         if (0 != fork()) {
8727                 int ret;
8728                 close(pd[1]);   /* Parent reads from pd[0] */
8729                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8730                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8731                         exit(1);
8732                 signal(SIGALRM, blech);
8733                 alarm(5);
8734                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8735                         exit(2);
8736                 sprintf(string, "%d\n", ret);
8737                 write(2, string, strlen(string));
8738                 alarm(0);
8739 #ifdef EAGAIN
8740                 if (errno == EAGAIN) {
8741                         printf("EAGAIN\n");
8742                         goto ok;
8743                 }
8744 #endif
8745 #ifdef EWOULDBLOCK
8746                 if (errno == EWOULDBLOCK)
8747                         printf("EWOULDBLOCK\n");
8748 #endif
8749         ok:
8750                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8751                 sleep(2);                               /* Give it time to close our pipe */
8752                 alarm(5);
8753                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8754                 alarm(0);
8755                 sprintf(string, "%d\n", ret);
8756                 write(3, string, strlen(string));
8757                 exit(0);
8758         }
8759
8760         close(pd[0]);                   /* We write to pd[1] */
8761         close(pu[1]);                   /* We read from pu[0] */
8762         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8763         close(pd[1]);                   /* Pipe pd is now fully closed! */
8764         exit(0);                                /* Bye bye, thank you for playing! */
8765 }
8766 EOCP
8767         set try
8768         if eval $compile_ok; then
8769                 echo "$startsh" >mtry
8770                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8771                 chmod +x mtry
8772                 ./mtry >/dev/null 2>&1
8773                 case $? in
8774                 0) eagain=`$cat try.out`;;
8775                 1) echo "Could not perform non-blocking setting!";;
8776                 2) echo "I did a successful read() for something that was not there!";;
8777                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8778                 *) echo "Something terribly wrong happened during testing.";;
8779                 esac
8780                 rd_nodata=`$cat try.ret`
8781                 echo "A read() system call with no data present returns $rd_nodata."
8782                 case "$rd_nodata" in
8783                 0|-1) ;;
8784                 *)
8785                         echo "(That's peculiar, fixing that to be -1.)"
8786                         rd_nodata=-1
8787                         ;;
8788                 esac
8789                 case "$eagain" in
8790                 '')
8791                         echo "Forcing errno EAGAIN on read() with no data available."
8792                         eagain=EAGAIN
8793                         ;;
8794                 *)
8795                         echo "Your read() sets errno to $eagain when no data is available."
8796                         ;;
8797                 esac
8798                 status=`$cat try.err`
8799                 case "$status" in
8800                 0) echo "And it correctly returns 0 to signal EOF.";;
8801                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8802                 *) echo "However, your read() returns '$status' on EOF??";;
8803                 esac
8804                 val="$define"
8805                 if test "$status" = "$rd_nodata"; then
8806                         echo "WARNING: you can't distinguish between EOF and no data!"
8807                         val="$undef"
8808                 fi
8809         else
8810                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8811                 eagain=EAGAIN
8812         fi
8813         set d_eofnblk
8814         eval $setvar
8815         ;;
8816 *)
8817         echo "Using $hint value $eagain."
8818         echo "Your read() returns $rd_nodata when no data is present."
8819         case "$d_eofnblk" in
8820         "$define") echo "And you can see EOF because read() returns 0.";;
8821         "$undef") echo "But you can't see EOF status from read() returned value.";;
8822         *)
8823                 echo "(Assuming you can't see EOF status from read anyway.)"
8824                 d_eofnblk=$undef
8825                 ;;
8826         esac
8827         ;;
8828 esac
8829 $rm -f try try.* .out core head.c mtry
8830
8831 : see if fchmod exists
8832 set fchmod d_fchmod
8833 eval $inlibc
8834
8835 : see if fchown exists
8836 set fchown d_fchown
8837 eval $inlibc
8838
8839 : see if this is an fcntl system
8840 set fcntl d_fcntl
8841 eval $inlibc
8842
8843 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8844 while $test $# -ge 2; do
8845         case "$1" in
8846         $define) echo "#include <$2>";;
8847         esac ;
8848     shift 2;
8849 done > try.c;
8850 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8851 set try;
8852 if eval $compile; then
8853         val="$define";
8854 else
8855         val="$undef";
8856 fi;
8857 set $varname;
8858 eval $setvar;
8859 $rm -f try.c try.o'
8860
8861 socketlib=''
8862 sockethdr=''
8863 : see whether socket exists
8864 echo " "
8865 $echo $n "Hmm... $c" >&4
8866 if set socket val -f d_socket; eval $csym; $val; then
8867         echo "Looks like you have Berkeley networking support." >&4
8868         d_socket="$define"
8869         if set setsockopt val -f; eval $csym; $val; then
8870                 d_oldsock="$undef"
8871         else
8872                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8873                 d_oldsock="$define"
8874         fi
8875 else
8876         if $contains socklib libc.list >/dev/null 2>&1; then
8877                 echo "Looks like you have Berkeley networking support." >&4
8878                 d_socket="$define"
8879                 : we will have to assume that it supports the 4.2 BSD interface
8880                 d_oldsock="$undef"
8881         else
8882                 echo "You don't have Berkeley networking in libc$_a..." >&4
8883                 if test "X$d_socket" = "X$define"; then
8884                    echo "...but you seem to believe that you have sockets." >&4
8885                 else
8886                         for net in net socket
8887                         do
8888                                 if test -f /usr/lib/lib$net$_a; then
8889                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8890                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8891                                         if $contains socket libc.list >/dev/null 2>&1; then
8892                                                 d_socket="$define"
8893                                                 socketlib="-l$net"
8894                                                 case "$net" in
8895                                                 net)
8896                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8897                                                         sockethdr="-I/usr/netinclude"
8898                                                         ;;
8899                                                 esac
8900                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8901                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8902                                                         d_oldsock="$undef"
8903                                                 else
8904                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8905                                                         d_oldsock="$define"
8906                                                 fi
8907                                                 break
8908                                         fi
8909                                 fi
8910                         done
8911                         if test "X$d_socket" != "X$define"; then
8912                            echo "or anywhere else I see." >&4
8913                            d_socket="$undef"
8914                            d_oldsock="$undef"
8915                         fi
8916                 fi
8917         fi
8918 fi
8919
8920 : see if socketpair exists
8921 set socketpair d_sockpair
8922 eval $inlibc
8923
8924
8925 echo " "
8926 echo "Checking the availability of certain socket constants..." >& 4
8927 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8928         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8929         $cat >try.c <<EOF
8930 #include <sys/types.h>
8931 #include <sys/socket.h>
8932 int main() {
8933     int i = $ENUM;
8934 }
8935 EOF
8936         val="$undef"
8937         set try; if eval $compile; then
8938                 val="$define"
8939         fi
8940         set d_${enum}; eval $setvar
8941         $rm -f try.c try
8942 done
8943
8944 : see if sys/select.h has to be included
8945 set sys/select.h i_sysselct
8946 eval $inhdr
8947
8948 : see if we should include time.h, sys/time.h, or both
8949 echo " "
8950 if test "X$timeincl" = X; then
8951         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8952         $echo $n "I'm now running the test program...$c"
8953         $cat >try.c <<'EOCP'
8954 #include <sys/types.h>
8955 #ifdef I_TIME
8956 #include <time.h>
8957 #endif
8958 #ifdef I_SYSTIME
8959 #ifdef SYSTIMEKERNEL
8960 #define KERNEL
8961 #endif
8962 #include <sys/time.h>
8963 #endif
8964 #ifdef I_SYSSELECT
8965 #include <sys/select.h>
8966 #endif
8967 int main()
8968 {
8969         struct tm foo;
8970 #ifdef S_TIMEVAL
8971         struct timeval bar;
8972 #endif
8973 #ifdef S_TIMEZONE
8974         struct timezone tzp;
8975 #endif
8976         if (foo.tm_sec == foo.tm_sec)
8977                 exit(0);
8978 #ifdef S_TIMEVAL
8979         if (bar.tv_sec == bar.tv_sec)
8980                 exit(0);
8981 #endif
8982         exit(1);
8983 }
8984 EOCP
8985         flags=''
8986         for s_timezone in '-DS_TIMEZONE' ''; do
8987         sysselect=''
8988         for s_timeval in '-DS_TIMEVAL' ''; do
8989         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8990         for i_time in '' '-DI_TIME'; do
8991         for i_systime in '-DI_SYSTIME' ''; do
8992                 case "$flags" in
8993                 '') $echo $n ".$c"
8994                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8995                         if eval $compile; then
8996                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8997                                 shift
8998                                 flags="$*"
8999                                 echo " "
9000                                 $echo $n "Succeeded with $flags$c"
9001                         fi
9002                         ;;
9003                 esac
9004         done
9005         done
9006         done
9007         done
9008         done
9009         timeincl=''
9010         echo " "
9011         case "$flags" in
9012         *SYSTIMEKERNEL*) i_systimek="$define"
9013                 timeincl=`./findhdr sys/time.h`
9014                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9015         *) i_systimek="$undef";;
9016         esac
9017         case "$flags" in
9018         *I_TIME*) i_time="$define"
9019                 timeincl=`./findhdr time.h`" $timeincl"
9020                 echo "We'll include <time.h>." >&4;;
9021         *) i_time="$undef";;
9022         esac
9023         case "$flags" in
9024         *I_SYSTIME*) i_systime="$define"
9025                 timeincl=`./findhdr sys/time.h`" $timeincl"
9026                 echo "We'll include <sys/time.h>." >&4;;
9027         *) i_systime="$undef";;
9028         esac
9029         $rm -f try.c try
9030 fi
9031
9032 : check for fd_set items
9033 $cat <<EOM
9034
9035 Checking to see how well your C compiler handles fd_set and friends ...
9036 EOM
9037 $cat >fd_set.c <<EOCP
9038 #$i_systime I_SYS_TIME
9039 #$i_sysselct I_SYS_SELECT
9040 #$d_socket HAS_SOCKET
9041 #include <sys/types.h>
9042 #ifdef HAS_SOCKET
9043 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9044 #endif
9045 #ifdef I_SYS_TIME
9046 #include <sys/time.h>
9047 #endif
9048 #ifdef I_SYS_SELECT
9049 #include <sys/select.h>
9050 #endif
9051 int main() {
9052         fd_set fds;
9053
9054 #ifdef TRYBITS
9055         if(fds.fds_bits);
9056 #endif
9057
9058 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9059         exit(0);
9060 #else
9061         exit(1);
9062 #endif
9063 }
9064 EOCP
9065 set fd_set -DTRYBITS
9066 if eval $compile; then
9067         d_fds_bits="$define"
9068         d_fd_set="$define"
9069         echo "Well, your system knows about the normal fd_set typedef..." >&4
9070         if ./fd_set; then
9071                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9072                 d_fd_macros="$define"
9073         else
9074                 $cat >&4 <<'EOM'
9075 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9076 EOM
9077                 d_fd_macros="$undef"
9078         fi
9079 else
9080         $cat <<'EOM'
9081 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9082 EOM
9083         set fd_set
9084         if eval $compile; then
9085                 d_fds_bits="$undef"
9086                 d_fd_set="$define"
9087                 echo "Well, your system has some sort of fd_set available..." >&4
9088                 if ./fd_set; then
9089                         echo "and you have the normal fd_set macros." >&4
9090                         d_fd_macros="$define"
9091                 else
9092                         $cat <<'EOM'
9093 but not the normal fd_set macros!  Gross!  More work for me...
9094 EOM
9095                         d_fd_macros="$undef"
9096                 fi
9097         else
9098         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9099                 d_fd_set="$undef"
9100                 d_fds_bits="$undef"
9101                 d_fd_macros="$undef"
9102         fi
9103 fi
9104 $rm -f fd_set*
9105
9106 : see if fgetpos exists
9107 set fgetpos d_fgetpos
9108 eval $inlibc
9109
9110 : see if flock exists
9111 set flock d_flock
9112 eval $inlibc
9113
9114 : see if fork exists
9115 set fork d_fork
9116 eval $inlibc
9117
9118 : see if pathconf exists
9119 set pathconf d_pathconf
9120 eval $inlibc
9121
9122 : see if fpathconf exists
9123 set fpathconf d_fpathconf
9124 eval $inlibc
9125
9126
9127 : check for fpos64_t
9128 echo " "
9129 echo "Checking to see if you have fpos64_t..." >&4
9130 $cat >try.c <<EOCP
9131 #include <stdio.h>
9132 int main() { fpos64_t x = 7; }
9133 EOCP
9134 set try
9135 if eval $compile; then
9136         val="$define"
9137         echo "You have fpos64_t."
9138 else
9139         val="$undef"
9140         echo "You do not have fpos64_t."
9141         case "$fpossize" in
9142         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9143         esac
9144 fi
9145 $rm -f try.* try
9146 set d_fpos64_t
9147 eval $setvar
9148
9149 : see if frexpl exists
9150 set frexpl d_frexpl
9151 eval $inlibc
9152
9153 hasstruct='varname=$1; struct=$2; shift; shift;
9154 while $test $# -ge 2; do
9155         case "$1" in
9156         $define) echo "#include <$2>";;
9157         esac ;
9158     shift 2;
9159 done > try.c;
9160 echo "int main () { struct $struct foo; }" >> try.c;
9161 set try;
9162 if eval $compile; then
9163         val="$define";
9164 else
9165         val="$undef";
9166 fi;
9167 set $varname;
9168 eval $setvar;
9169 $rm -f try.c try.o'
9170
9171 : see if this is a sys/param system
9172 set sys/param.h i_sysparam
9173 eval $inhdr
9174
9175 : see if this is a sys/mount.h system
9176 set sys/mount.h i_sysmount
9177 eval $inhdr
9178
9179 : see if sys/types.h has to be included
9180 set sys/types.h i_systypes
9181 eval $inhdr
9182
9183
9184 echo " "
9185 echo "Checking to see if your system supports struct fs_data..." >&4
9186 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9187 eval $hasstruct
9188 case "$d_fs_data_s" in
9189 "$define")      echo "Yes, it does."   ;;
9190 *)              echo "No, it doesn't." ;;
9191 esac
9192
9193 : see if fseeko exists
9194 set fseeko d_fseeko
9195 eval $inlibc
9196 case "$longsize" in
9197 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9198 esac
9199
9200 : see if fsetpos exists
9201 set fsetpos d_fsetpos
9202 eval $inlibc
9203
9204
9205 : see if fstatfs exists
9206 set fstatfs d_fstatfs
9207 eval $inlibc
9208
9209
9210 : see if statvfs exists
9211 set statvfs d_statvfs
9212 eval $inlibc
9213
9214 : see if fstatvfs exists
9215 set fstatvfs d_fstatvfs
9216 eval $inlibc
9217
9218
9219 : see if ftello exists
9220 set ftello d_ftello
9221 eval $inlibc
9222 case "$longsize" in
9223 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9224 esac
9225
9226 : see if getcwd exists
9227 set getcwd d_getcwd
9228 eval $inlibc
9229
9230 : see if getespwnam exists
9231 set getespwnam d_getespwnam
9232 eval $inlibc
9233
9234
9235 : see if getfsstat exists
9236 set getfsstat d_getfsstat
9237 eval $inlibc
9238
9239 : see if getgrent exists
9240 set getgrent d_getgrent
9241 eval $inlibc
9242
9243 : see if gethostbyaddr exists
9244 set gethostbyaddr d_gethbyaddr
9245 eval $inlibc
9246
9247 : see if gethostbyname exists
9248 set gethostbyname d_gethbyname
9249 eval $inlibc
9250
9251 : see if gethostent exists
9252 set gethostent d_gethent
9253 eval $inlibc
9254
9255 : see how we will look up host name
9256 echo " "
9257 call=''
9258 if set gethostname val -f d_gethname; eval $csym; $val; then
9259         echo 'gethostname() found.' >&4
9260         d_gethname="$define"
9261         call=gethostname
9262 fi
9263 if set uname val -f d_uname; eval $csym; $val; then
9264         if ./xenix; then
9265                 $cat <<'EOM'
9266 uname() was found, but you're running xenix, and older versions of xenix
9267 have a broken uname(). If you don't really know whether your xenix is old
9268 enough to have a broken system call, use the default answer.
9269
9270 EOM
9271                 dflt=y
9272                 case "$d_uname" in
9273                 "$define") dflt=n;;
9274                 esac
9275                 rp='Is your uname() broken?'
9276                 . ./myread
9277                 case "$ans" in
9278                 n*) d_uname="$define"; call=uname;;
9279                 esac
9280         else
9281                 echo 'uname() found.' >&4
9282                 d_uname="$define"
9283                 case "$call" in
9284                 '') call=uname ;;
9285                 esac
9286         fi
9287 fi
9288 case "$d_gethname" in
9289 '') d_gethname="$undef";;
9290 esac
9291 case "$d_uname" in
9292 '') d_uname="$undef";;
9293 esac
9294 case "$d_uname$d_gethname" in
9295 *define*)
9296         dflt=n
9297         cat <<EOM
9298  
9299 Every now and then someone has a $call() that lies about the hostname
9300 but can't be fixed for political or economic reasons.  If you wish, I can
9301 pretend $call() isn't there and maybe compute hostname at run-time
9302 thanks to the '$phostname' command.
9303
9304 EOM
9305         rp="Shall I ignore $call() from now on?"
9306         . ./myread
9307         case "$ans" in
9308         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9309         esac;;
9310 esac
9311 case "$phostname" in
9312 '') aphostname='';;
9313 *) case "$aphostname" in
9314         /*) ;;
9315         *) set X $phostname
9316                 shift
9317                 file=$1
9318                 shift
9319                 file=`./loc $file $file $pth`
9320                 aphostname=`echo $file $*`
9321                 ;;
9322         esac
9323         ;;
9324 esac
9325 case "$d_uname$d_gethname" in
9326 *define*) ;;
9327 *)
9328         case "$phostname" in
9329         '')
9330                 echo "There will be no way for $package to get your hostname." >&4;;
9331         *)
9332         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9333                 ;;
9334         esac;;
9335 esac
9336 case "$d_phostname" in
9337 '') d_phostname="$undef";;
9338 esac
9339
9340 : see if this is a netdb.h system
9341 set netdb.h i_netdb
9342 eval $inhdr
9343
9344 : see if prototypes for various gethostxxx netdb.h functions are available
9345 echo " "
9346 set d_gethostprotos gethostent $i_netdb netdb.h
9347 eval $hasproto
9348
9349 : see if getlogin exists
9350 set getlogin d_getlogin
9351 eval $inlibc
9352
9353 : see if getmnt exists
9354 set getmnt d_getmnt
9355 eval $inlibc
9356
9357 : see if getmntent exists
9358 set getmntent d_getmntent
9359 eval $inlibc
9360
9361 : see if getnetbyaddr exists
9362 set getnetbyaddr d_getnbyaddr
9363 eval $inlibc
9364
9365 : see if getnetbyname exists
9366 set getnetbyname d_getnbyname
9367 eval $inlibc
9368
9369 : see if getnetent exists
9370 set getnetent d_getnent
9371 eval $inlibc
9372
9373 : see if prototypes for various getnetxxx netdb.h functions are available
9374 echo " "
9375 set d_getnetprotos getnetent $i_netdb netdb.h
9376 eval $hasproto
9377
9378
9379 : see if getprotobyname exists
9380 set getprotobyname d_getpbyname
9381 eval $inlibc
9382
9383 : see if getprotobynumber exists
9384 set getprotobynumber d_getpbynumber
9385 eval $inlibc
9386
9387 : see if getprotoent exists
9388 set getprotoent d_getpent
9389 eval $inlibc
9390
9391 : see if getpgid exists
9392 set getpgid d_getpgid
9393 eval $inlibc
9394
9395 : see if getpgrp2 exists
9396 set getpgrp2 d_getpgrp2
9397 eval $inlibc
9398
9399 : see if getppid exists
9400 set getppid d_getppid
9401 eval $inlibc
9402
9403 : see if getpriority exists
9404 set getpriority d_getprior
9405 eval $inlibc
9406
9407 : see if prototypes for various getprotoxxx netdb.h functions are available
9408 echo " "
9409 set d_getprotoprotos getprotoent $i_netdb netdb.h
9410 eval $hasproto
9411
9412 : see if getprpwnam exists
9413 set getprpwnam d_getprpwnam
9414 eval $inlibc
9415
9416 : see if getpwent exists
9417 set getpwent d_getpwent
9418 eval $inlibc
9419
9420
9421 : see if getservbyname exists
9422 set getservbyname d_getsbyname
9423 eval $inlibc
9424
9425 : see if getservbyport exists
9426 set getservbyport d_getsbyport
9427 eval $inlibc
9428
9429 : see if getservent exists
9430 set getservent d_getsent
9431 eval $inlibc
9432
9433 : see if prototypes for various getservxxx netdb.h functions are available
9434 echo " "
9435 set d_getservprotos getservent $i_netdb netdb.h
9436 eval $hasproto
9437
9438 : see if getspnam exists
9439 set getspnam d_getspnam
9440 eval $inlibc
9441
9442 : see if gettimeofday or ftime exists
9443 set gettimeofday d_gettimeod
9444 eval $inlibc
9445 case "$d_gettimeod" in
9446 "$undef")
9447         set ftime d_ftime 
9448         eval $inlibc
9449         ;;
9450 *)
9451         val="$undef"; set d_ftime; eval $setvar
9452         ;;
9453 esac
9454 case "$d_gettimeod$d_ftime" in
9455 "$undef$undef")
9456         echo " "
9457         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9458         ;;
9459 esac
9460
9461 : see if this is an grp system
9462 set grp.h i_grp
9463 eval $inhdr
9464
9465 case "$i_grp" in
9466 $define)
9467         xxx=`./findhdr grp.h`
9468         $cppstdin $cppflags $cppminus < $xxx >$$.h
9469
9470         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9471                 val="$define"
9472         else
9473                 val="$undef"
9474         fi
9475         set d_grpasswd
9476         eval $setvar
9477
9478         $rm -f $$.h
9479         ;;
9480 *)
9481         val="$undef";
9482         set d_grpasswd; eval $setvar
9483         ;;
9484 esac
9485
9486 : see if hasmntopt exists
9487 set hasmntopt d_hasmntopt
9488 eval $inlibc
9489
9490 : see if this is a netinet/in.h or sys/in.h system
9491 set netinet/in.h i_niin sys/in.h i_sysin
9492 eval $inhdr
9493
9494 : see if arpa/inet.h has to be included
9495 set arpa/inet.h i_arpainet
9496 eval $inhdr
9497
9498 : see if htonl --and friends-- exists
9499 val=''
9500 set htonl val
9501 eval $inlibc
9502
9503 : Maybe they are macros.
9504 case "$val" in
9505 $undef)
9506         $cat >htonl.c <<EOM
9507 #include <stdio.h>
9508 #include <sys/types.h>
9509 #$i_niin I_NETINET_IN
9510 #$i_sysin I_SYS_IN
9511 #$i_arpainet I_ARPA_INET
9512 #ifdef I_NETINET_IN
9513 #include <netinet/in.h>
9514 #endif
9515 #ifdef I_SYS_IN
9516 #include <sys/in.h>
9517 #endif
9518 #ifdef I_ARPA_INET
9519 #include <arpa/inet.h>
9520 #endif
9521 #ifdef htonl
9522 printf("Defined as a macro.");
9523 #endif
9524 EOM
9525         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9526         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9527                 val="$define"
9528                 echo "But it seems to be defined as a macro." >&4
9529         fi
9530         $rm -f htonl.?
9531         ;;
9532 esac
9533 set d_htonl
9534 eval $setvar
9535
9536 : see if iconv exists
9537 set iconv d_iconv
9538 eval $inlibc
9539
9540 : index or strchr
9541 echo " "
9542 if set index val -f; eval $csym; $val; then
9543         if set strchr val -f d_strchr; eval $csym; $val; then
9544                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9545                         val="$define"
9546                         vali="$undef"
9547                         echo "strchr() found." >&4
9548                 else
9549                         val="$undef"
9550                         vali="$define"
9551                         echo "index() found." >&4
9552                 fi
9553         else
9554                 val="$undef"
9555                 vali="$define"
9556                 echo "index() found." >&4
9557         fi
9558 else
9559         if set strchr val -f d_strchr; eval $csym; $val; then
9560                 val="$define"
9561                 vali="$undef"
9562                 echo "strchr() found." >&4
9563         else
9564                 echo "No index() or strchr() found!" >&4
9565                 val="$undef"
9566                 vali="$undef"
9567         fi
9568 fi
9569 set d_strchr; eval $setvar
9570 val="$vali"
9571 set d_index; eval $setvar
9572
9573 : check whether inet_aton exists
9574 set inet_aton d_inetaton
9575 eval $inlibc
9576
9577 : see if inttypes.h is available
9578 : we want a real compile instead of Inhdr because some systems
9579 : have an inttypes.h which includes non-existent headers
9580 echo " "
9581 $cat >try.c <<EOCP
9582 #include <inttypes.h>
9583 int main() {
9584         static int32_t foo32 = 0x12345678;
9585 }
9586 EOCP
9587 set try
9588 if eval $compile; then
9589         echo "<inttypes.h> found." >&4
9590         val="$define"
9591 else
9592         echo "<inttypes.h> NOT found." >&4
9593         val="$undef"
9594 fi
9595 $rm -f try.c try
9596 set i_inttypes
9597 eval $setvar
9598
9599 : check for int64_t
9600 echo " "
9601 echo "Checking to see if you have int64_t..." >&4
9602 $cat >try.c <<EOCP
9603 #include <sys/types.h>
9604 #$i_inttypes I_INTTYPES
9605 #ifdef I_INTTYPES
9606 #include <inttypes.h>
9607 #endif
9608 int main() { int64_t x = 7; }
9609 EOCP
9610 set try
9611 if eval $compile; then
9612         val="$define"
9613         echo "You have int64_t."
9614 else
9615         val="$undef"
9616         echo "You do not have int64_t."
9617 fi
9618 $rm -f try try.*
9619 set d_int64_t
9620 eval $setvar
9621
9622 : Look for isascii
9623 echo " "
9624 $cat >isascii.c <<'EOCP'
9625 #include <stdio.h>
9626 #include <ctype.h>
9627 int main() {
9628         int c = 'A';
9629         if (isascii(c))
9630                 exit(0);
9631         else
9632                 exit(1);
9633 }
9634 EOCP
9635 set isascii
9636 if eval $compile; then
9637         echo "isascii() found." >&4
9638         val="$define"
9639 else
9640         echo "isascii() NOT found." >&4
9641         val="$undef"
9642 fi
9643 set d_isascii
9644 eval $setvar
9645 $rm -f isascii*
9646
9647 : see if isnan exists
9648 set isnan d_isnan
9649 eval $inlibc
9650
9651 : see if isnanl exists
9652 set isnanl d_isnanl
9653 eval $inlibc
9654
9655 : see if killpg exists
9656 set killpg d_killpg
9657 eval $inlibc
9658
9659 : see if lchown exists
9660 echo " "
9661 $cat > try.c <<'EOCP'
9662 /* System header to define __stub macros and hopefully few prototypes,
9663     which can conflict with char lchown(); below.  */
9664 #include <assert.h>
9665 /* Override any gcc2 internal prototype to avoid an error.  */
9666 /* We use char because int might match the return type of a gcc2
9667    builtin and then its argument prototype would still apply.  */
9668 char lchown();
9669 int main() {
9670     /*  The GNU C library defines this for functions which it implements
9671         to always fail with ENOSYS.  Some functions are actually named
9672         something starting with __ and the normal name is an alias.  */
9673 #if defined (__stub_lchown) || defined (__stub___lchown)
9674 choke me
9675 #else
9676 lchown();
9677 #endif
9678 ; return 0; }
9679 EOCP
9680 set try
9681 if eval $compile; then
9682     $echo "lchown() found." >&4
9683     val="$define"
9684 else
9685     $echo "lchown() NOT found." >&4
9686     val="$undef"
9687 fi
9688 set d_lchown
9689 eval $setvar
9690
9691 : See if number of significant digits in a double precision number is known
9692 echo " "
9693 $cat >ldbl_dig.c <<EOM
9694 #$i_limits I_LIMITS
9695 #$i_float I_FLOAT
9696 #ifdef I_LIMITS
9697 #include <limits.h>
9698 #endif
9699 #ifdef I_FLOAT
9700 #include <float.h>
9701 #endif
9702 #ifdef LDBL_DIG
9703 printf("Contains LDBL_DIG");
9704 #endif
9705 EOM
9706 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9707 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9708         echo "LDBL_DIG found." >&4
9709         val="$define"
9710 else
9711         echo "LDBL_DIG NOT found." >&4
9712         val="$undef"
9713 fi
9714 $rm -f ldbl_dig.?
9715 set d_ldbl_dig
9716 eval $setvar
9717
9718 : see if link exists
9719 set link d_link
9720 eval $inlibc
9721
9722 : see if localeconv exists
9723 set localeconv d_locconv
9724 eval $inlibc
9725
9726 : see if lockf exists
9727 set lockf d_lockf
9728 eval $inlibc
9729
9730 : check for long long
9731 echo " "
9732 echo "Checking to see if you have long long..." >&4
9733 echo 'int main() { long long x = 7; return 0; }' > try.c
9734 set try
9735 if eval $compile; then
9736         val="$define"
9737         echo "You have long long."
9738 else
9739         val="$undef"
9740         echo "You do not have long long."
9741 fi
9742 $rm try.*
9743 set d_longlong
9744 eval $setvar
9745
9746 : check for length of long long
9747 case "${d_longlong}${longlongsize}" in
9748 $define)
9749         echo " "
9750         echo "Checking to see how big your long longs are..." >&4
9751         $cat >try.c <<'EOCP'
9752 #include <stdio.h>
9753 int main()
9754 {
9755     printf("%d\n", (int)sizeof(long long));
9756     return(0);
9757 }
9758 EOCP
9759         set try
9760         if eval $compile_ok; then
9761                 longlongsize=`./try$exe_ext`
9762                 echo "Your long longs are $longlongsize bytes long."
9763         else
9764                 dflt='8'
9765                 echo " "
9766                 echo "(I can't seem to compile the test program.  Guessing...)"
9767                 rp="What is the size of a long long (in bytes)?"
9768                 . ./myread
9769                 longlongsize="$ans"
9770         fi
9771         if $test "X$longsize" = "X$longlongsize"; then
9772                 echo "(That isn't any different from an ordinary long.)"
9773         fi      
9774         ;;
9775 esac
9776 $rm -f try.* try
9777
9778 : see if prototype for lseek is available
9779 echo " "
9780 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9781 eval $hasproto
9782
9783 : see if lstat exists
9784 set lstat d_lstat
9785 eval $inlibc
9786
9787 : see if madvise exists
9788 set madvise d_madvise
9789 eval $inlibc
9790
9791 : see if mblen exists
9792 set mblen d_mblen
9793 eval $inlibc
9794
9795 : see if mbstowcs exists
9796 set mbstowcs d_mbstowcs
9797 eval $inlibc
9798
9799 : see if mbtowc exists
9800 set mbtowc d_mbtowc
9801 eval $inlibc
9802
9803 : see if memchr exists
9804 set memchr d_memchr
9805 eval $inlibc
9806
9807 : see if memcmp exists
9808 set memcmp d_memcmp
9809 eval $inlibc
9810
9811 : see if memcpy exists
9812 set memcpy d_memcpy
9813 eval $inlibc
9814
9815 : see if memmove exists
9816 set memmove d_memmove
9817 eval $inlibc
9818
9819 : see if memset exists
9820 set memset d_memset
9821 eval $inlibc
9822
9823 : see if mkdir exists
9824 set mkdir d_mkdir
9825 eval $inlibc
9826
9827 : see if mkdtemp exists
9828 set mkdtemp d_mkdtemp
9829 eval $inlibc
9830
9831 : see if mkfifo exists
9832 set mkfifo d_mkfifo
9833 eval $inlibc
9834
9835 : see if mkstemp exists
9836 set mkstemp d_mkstemp
9837 eval $inlibc
9838
9839 : see if mkstemps exists
9840 set mkstemps d_mkstemps
9841 eval $inlibc
9842
9843 : see if mktime exists
9844 set mktime d_mktime
9845 eval $inlibc
9846
9847 : see if this is a sys/mman.h system
9848 set sys/mman.h i_sysmman
9849 eval $inhdr
9850
9851 : see if mmap exists
9852 set mmap d_mmap
9853 eval $inlibc
9854 : see what shmat returns
9855 : default to something harmless
9856 mmaptype='void *'
9857 case "$i_sysmman$d_mmap" in
9858 "$define$define")
9859         $cat >mmap.c <<'END'
9860 #include <sys/mman.h>
9861 void *mmap();
9862 END
9863         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9864                 mmaptype='void *'
9865         else
9866                 mmaptype='caddr_t'
9867         fi
9868         echo "and it returns ($mmaptype)." >&4
9869         ;;
9870 esac
9871
9872
9873
9874 : see if modfl exists
9875 set modfl d_modfl
9876 eval $inlibc
9877
9878 : see if mprotect exists
9879 set mprotect d_mprotect
9880 eval $inlibc
9881
9882 : see if msgctl exists
9883 set msgctl d_msgctl
9884 eval $inlibc
9885
9886 : see if msgget exists
9887 set msgget d_msgget
9888 eval $inlibc
9889
9890 : see if msgsnd exists
9891 set msgsnd d_msgsnd
9892 eval $inlibc
9893
9894 : see if msgrcv exists
9895 set msgrcv d_msgrcv
9896 eval $inlibc
9897
9898 : see how much of the 'msg*(2)' library is present.
9899 h_msg=true
9900 echo " "
9901 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9902 *"$undef"*) h_msg=false;;
9903 esac
9904 case "$osname" in
9905 freebsd)
9906     case "`ipcs 2>&1`" in
9907     "SVID messages"*"not configured"*)
9908         echo "Your $osname does not have the msg*(2) configured." >&4
9909         h_msg=false
9910         val="$undef"
9911         set msgctl d_msgctl
9912         eval $setvar
9913         set msgget d_msgget
9914         eval $setvar
9915         set msgsnd d_msgsnd
9916         eval $setvar
9917         set msgrcv d_msgrcv
9918         eval $setvar
9919         ;;
9920     esac
9921     ;;
9922 esac
9923 : we could also check for sys/ipc.h ...
9924 if $h_msg && $test `./findhdr sys/msg.h`; then
9925         echo "You have the full msg*(2) library." >&4
9926         val="$define"
9927 else
9928         echo "You don't have the full msg*(2) library." >&4
9929         val="$undef"
9930 fi
9931 set d_msg
9932 eval $setvar
9933
9934 : see if msync exists
9935 set msync d_msync
9936 eval $inlibc
9937
9938 : see if munmap exists
9939 set munmap d_munmap
9940 eval $inlibc
9941
9942 : see if nice exists
9943 set nice d_nice
9944 eval $inlibc
9945
9946
9947 echo " "
9948 echo "Checking which 64-bit integer type we could use..." >&4
9949
9950 case "$intsize" in
9951 8) val=int
9952    set quadtype
9953    eval $setvar
9954    val='"unsigned int"'
9955    set uquadtype
9956    eval $setvar
9957    quadkind=1
9958    ;;
9959 *) case "$longsize" in
9960    8) val=long
9961       set quadtype
9962       eval $setvar
9963       val='"unsigned long"'
9964       set uquadtype
9965       eval $setvar
9966       quadkind=2
9967       ;;
9968    *) case "$d_longlong:$longlongsize" in
9969       define:8)
9970         val='"long long"'
9971         set quadtype
9972         eval $setvar
9973         val='"unsigned long long"'
9974         set uquadtype
9975         eval $setvar
9976         quadkind=3
9977         ;;
9978       *) case "$d_int64_t" in
9979          define)
9980            val=int64_t
9981            set quadtype
9982            eval $setvar
9983            val=uint64_t
9984            set uquadtype
9985            eval $setvar
9986            quadkind=4
9987            ;;
9988          esac
9989          ;;
9990       esac
9991       ;;
9992    esac
9993    ;;
9994 esac
9995
9996 case "$quadtype" in
9997 '')     echo "Alas, no 64-bit integer types in sight." >&4
9998         d_quad="$undef"
9999         ;;
10000 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10001             verb="will"
10002         else
10003             verb="could"
10004         fi
10005         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10006         d_quad="$define"
10007         ;;
10008 esac
10009
10010 : check for length of character
10011 echo " "
10012 case "$charsize" in
10013 '')
10014         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10015         $cat >try.c <<'EOCP'
10016 #include <stdio.h>
10017 int main()
10018 {
10019     printf("%d\n", (int)sizeof(char));
10020     exit(0);
10021 }
10022 EOCP
10023         set try
10024         if eval $compile_ok; then
10025                 dflt=`./try`
10026         else
10027                 dflt='1'
10028                 echo "(I can't seem to compile the test program.  Guessing...)"
10029         fi
10030         ;;
10031 *)
10032         dflt="$charsize"
10033         ;;
10034 esac
10035 rp="What is the size of a character (in bytes)?"
10036 . ./myread
10037 charsize="$ans"
10038 $rm -f try.c try
10039
10040
10041 echo " "
10042 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10043
10044 case "$use64bitint:$d_quad:$quadtype" in
10045 define:define:?*)
10046         ivtype="$quadtype"
10047         uvtype="$uquadtype"
10048         ivsize=8
10049         uvsize=8
10050         ;;
10051 *)      ivtype="long"
10052         uvtype="unsigned long"
10053         ivsize=$longsize
10054         uvsize=$longsize
10055         ;;
10056 esac
10057
10058 case "$uselongdouble:$d_longdbl" in
10059 define:define)
10060         nvtype="long double"
10061         nvsize=$longdblsize
10062         ;;
10063 *)      nvtype=double
10064         nvsize=$doublesize
10065         ;;
10066 esac
10067
10068 $echo "(IV will be "$ivtype", $ivsize bytes)"
10069 $echo "(UV will be "$uvtype", $uvsize bytes)"
10070 $echo "(NV will be "$nvtype", $nvsize bytes)"
10071
10072 $cat >try.c <<EOCP
10073 #$i_inttypes I_INTTYPES
10074 #ifdef I_INTTYPES
10075 #include <inttypes.h>
10076 #endif
10077 #include <stdio.h>
10078 int main() {
10079 #ifdef INT8
10080    int8_t i =  INT8_MAX;
10081   uint8_t u = UINT8_MAX;
10082   printf("int8_t\n");
10083 #endif
10084 #ifdef INT16
10085    int16_t i =  INT16_MAX;
10086   uint16_t i = UINT16_MAX;
10087   printf("int16_t\n");
10088 #endif
10089 #ifdef INT32
10090    int32_t i =  INT32_MAX;
10091   uint32_t u = UINT32_MAX;
10092   printf("int32_t\n");
10093 #endif
10094 }
10095 EOCP
10096
10097 case "$i8type" in
10098 '')     case "$charsize" in
10099         1)      i8type=char
10100                 u8type="unsigned char"
10101                 i8size=$charsize
10102                 u8size=$charsize
10103                 ;;
10104         esac
10105         ;;
10106 esac
10107 case "$i8type" in
10108 '')     set try -DINT8
10109         if eval $compile; then
10110                 case "`./try$exe_ext`" in
10111                 int8_t) i8type=int8_t
10112                         u8type=uint8_t
10113                         i8size=1
10114                         u8size=1
10115                         ;;
10116                 esac
10117         fi
10118         ;;
10119 esac
10120 case "$i8type" in
10121 '')     if $test $charsize -ge 1; then
10122                 i8type=char
10123                 u8type="unsigned char"
10124                 i8size=$charsize
10125                 u8size=$charsize
10126         fi
10127         ;;
10128 esac
10129
10130 case "$i16type" in
10131 '')     case "$shortsize" in
10132         2)      i16type=short
10133                 u16type="unsigned short"
10134                 i16size=$shortsize
10135                 u16size=$shortsize
10136                 ;;
10137         esac
10138         ;;
10139 esac
10140 case "$i16type" in
10141 '')     set try -DINT16
10142         if eval $compile; then
10143                 case "`./try$exe_ext`" in
10144                 int16_t)
10145                         i16type=int16_t
10146                         u16type=uint16_t
10147                         i16size=2
10148                         u16size=2
10149                         ;;
10150                 esac
10151         fi
10152         ;;
10153 esac
10154 case "$i16type" in
10155 '')     if $test $shortsize -ge 2; then
10156                 i16type=short
10157                 u16type="unsigned short"
10158                 i16size=$shortsize
10159                 u16size=$shortsize
10160         fi
10161         ;;
10162 esac
10163
10164 case "$i32type" in
10165 '')     case "$longsize" in
10166         4)      i32type=long
10167                 u32type="unsigned long"
10168                 i32size=$longsize
10169                 u32size=$longsize
10170                 ;;
10171         *)      case "$intsize" in
10172                 4)      i32type=int
10173                         u32type="unsigned int"
10174                         i32size=$intsize
10175                         u32size=$intsize
10176                         ;;
10177                 esac
10178                 ;;
10179         esac
10180         ;;
10181 esac
10182 case "$i32type" in
10183 '')     set try -DINT32
10184         if eval $compile; then
10185                 case "`./try$exe_ext`" in
10186                 int32_t)
10187                         i32type=int32_t
10188                         u32type=uint32_t
10189                         i32size=4
10190                         u32size=4
10191                         ;;
10192                 esac
10193         fi
10194         ;;
10195 esac
10196 case "$i32type" in
10197 '')     if $test $intsize -ge 4; then
10198                 i32type=int
10199                 u32type="unsigned int"
10200                 i32size=$intsize
10201                 u32size=$intsize
10202         fi
10203         ;;
10204 esac
10205
10206 case "$i64type" in
10207 '')     case "$d_quad:$quadtype" in
10208         define:?*)
10209                 i64type="$quadtype"
10210                 u64type="$uquadtype"
10211                 i64size=8
10212                 u64size=8
10213                 ;;
10214         esac
10215         ;;
10216 esac
10217
10218 $echo "Checking whether your NVs can preserve your UVs..." >&4
10219 $cat <<EOP >try.c
10220 #include <stdio.h>
10221 int main() {
10222     $uvtype k = ($uvtype)~0, l;
10223     $nvtype d;
10224     l = k;
10225     d = ($nvtype)l;
10226     l = ($uvtype)d;
10227     if (l == k)
10228        printf("preserve\n");
10229     exit(0);
10230 }
10231 EOP
10232 set try
10233 if eval $compile; then
10234         case "`./try$exe_ext`" in
10235         preserve) d_nv_preserves_uv="$define" ;;
10236         esac
10237 fi      
10238 case "$d_nv_preserves_uv" in
10239 $define) $echo "Yes, they can."  2>&1 ;;
10240 *)       $echo "No, they can't." 2>&1
10241          d_nv_preserves_uv="$undef"
10242          ;;
10243 esac
10244
10245 $rm -f try.* try
10246
10247 case "$d_nv_preserves_uv" in
10248 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10249 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10250         $cat <<EOP >try.c
10251 #include <stdio.h>
10252 int main() {
10253     $uvtype u = 0;
10254     int     n = 8 * $uvsize;
10255     int     i;
10256     for (i = 0; i < n; i++) {
10257       u = u << 1 | ($uvtype)1;
10258       if (($uvtype)($nvtype)u != u)
10259         break;
10260     }
10261     printf("%d\n", i);
10262     exit(0);
10263 }
10264 EOP
10265         set try
10266         if eval $compile; then
10267                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10268         fi
10269         case "$d_nv_preserves_uv_bits" in
10270         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10271         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10272                 d_nv_preserves_uv_bits="$undef"
10273                 ;;
10274         esac
10275         $rm -f try.* try
10276         ;;
10277 esac
10278
10279
10280 : check for off64_t
10281 echo " "
10282 echo "Checking to see if you have off64_t..." >&4
10283 $cat >try.c <<EOCP
10284 #include <sys/types.h>
10285 #include <unistd.h>
10286 int main() { off64_t x = 7; }
10287 EOCP
10288 set try
10289 if eval $compile; then
10290         val="$define"
10291         echo "You have off64_t."
10292 else
10293         val="$undef"
10294         echo "You do not have off64_t."
10295         case "$lseeksize" in
10296         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10297         esac
10298 fi
10299 $rm -f try.* try
10300 set d_off64_t
10301 eval $setvar
10302
10303 : see if POSIX threads are available
10304 set pthread.h i_pthread
10305 eval $inhdr
10306
10307
10308
10309
10310 : how to create joinable pthreads
10311 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10312         echo " "
10313         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10314         $cat >try.c <<'EOCP'
10315 #include <pthread.h>
10316 int main() {
10317     int detachstate = JOINABLE;
10318 }
10319 EOCP
10320         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10321         if eval $compile; then
10322                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10323                 val="$undef" # Yes, undef.
10324                 set d_old_pthread_create_joinable
10325                 eval $setvar
10326                 val=""
10327                 set old_pthread_create_joinable
10328                 eval $setvar
10329         else
10330                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10331                 if eval $compile; then
10332                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10333                         val="$define"
10334                         set d_old_pthread_create_joinable
10335                         eval $setvar
10336                         val=PTHREAD_CREATE_UNDETACHED
10337                         set old_pthread_create_joinable
10338                         eval $setvar
10339                 else            
10340                         set try -DJOINABLE=__UNDETACHED
10341                         if eval $compile; then
10342                                 echo "You seem to use __UNDETACHED." >&4
10343                                 val="$define"
10344                                 set d_old_pthread_create_joinable
10345                                 eval $setvar
10346                                 val=__UNDETACHED
10347                                 set old_pthread_create_joinable
10348                                 eval $setvar
10349                         else
10350                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10351                                 val="$define"
10352                                 set d_old_pthread_create_joinable
10353                                 eval $setvar
10354                                 val=0
10355                                 set old_pthread_create_joinable
10356                                 eval $setvar
10357                         fi
10358                 fi
10359         fi
10360         $rm -f try try.*
10361 else
10362     d_old_pthread_create_joinable="$undef"
10363     old_pthread_create_joinable=""
10364 fi
10365
10366 : see if pause exists
10367 set pause d_pause
10368 eval $inlibc
10369
10370 : see if pipe exists
10371 set pipe d_pipe
10372 eval $inlibc
10373
10374 : see if poll exists
10375 set poll d_poll
10376 eval $inlibc
10377
10378
10379 : see whether the various POSIXish _yields exist
10380 $cat >try.c <<EOP
10381 #include <pthread.h>
10382 #include <stdio.h>
10383 int main() {
10384 #ifdef SCHED_YIELD
10385         sched_yield();
10386 #else
10387 #ifdef PTHREAD_YIELD
10388         pthread_yield();
10389 #else
10390 #ifdef PTHREAD_YIELD_NULL
10391         pthread_yield(NULL);
10392 #endif
10393 #endif
10394 #endif
10395 }
10396 EOP
10397 : see if sched_yield exists
10398 set try -DSCHED_YIELD
10399 if eval $compile; then
10400     val="$define"
10401     sched_yield='sched_yield()'
10402 else
10403     val="$undef"
10404 fi
10405 case "$usethreads" in
10406 $define)
10407         case "$val" in
10408         $define) echo 'sched_yield() found.' >&4        ;;
10409         *)       echo 'sched_yield() NOT found.' >&4    ;;
10410         esac
10411 esac
10412 set d_sched_yield
10413 eval $setvar
10414
10415 : see if pthread_yield exists
10416 set try -DPTHREAD_YIELD
10417 if eval $compile; then
10418     val="$define"
10419     case "$sched_yield" in
10420     '') sched_yield='pthread_yield()' ;;
10421     esac
10422 else
10423     set try -DPTHREAD_YIELD_NULL
10424     if eval $compile; then
10425         val="$define"
10426         case "$sched_yield" in
10427         '') sched_yield='pthread_yield(NULL)' ;;
10428         esac
10429     else
10430         val="$undef"
10431     fi
10432 fi
10433 case "$usethreads" in
10434 $define)
10435         case "$val" in
10436         $define) echo 'pthread_yield() found.' >&4      ;;
10437         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10438         esac
10439         ;;
10440 esac
10441 set d_pthread_yield
10442 eval $setvar
10443
10444 case "$sched_yield" in
10445 '') sched_yield=undef ;;
10446 esac
10447
10448 $rm -f try try.*
10449
10450 : see if this is a pwd.h system
10451 set pwd.h i_pwd
10452 eval $inhdr
10453
10454 case "$i_pwd" in
10455 $define)
10456         xxx=`./findhdr pwd.h`
10457         $cppstdin $cppflags $cppminus < $xxx >$$.h
10458
10459         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10460                 val="$define"
10461         else
10462                 val="$undef"
10463         fi
10464         set d_pwquota
10465         eval $setvar
10466
10467         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10468                 val="$define"
10469         else
10470                 val="$undef"
10471         fi
10472         set d_pwage
10473         eval $setvar
10474
10475         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10476                 val="$define"
10477         else
10478                 val="$undef"
10479         fi
10480         set d_pwchange
10481         eval $setvar
10482
10483         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10484                 val="$define"
10485         else
10486                 val="$undef"
10487         fi
10488         set d_pwclass
10489         eval $setvar
10490
10491         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10492                 val="$define"
10493         else
10494                 val="$undef"
10495         fi
10496         set d_pwexpire
10497         eval $setvar
10498
10499         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10500                 val="$define"
10501         else
10502                 val="$undef"
10503         fi
10504         set d_pwcomment
10505         eval $setvar
10506
10507         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10508                 val="$define"
10509         else
10510                 val="$undef"
10511         fi
10512         set d_pwgecos
10513         eval $setvar
10514
10515         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10516                 val="$define"
10517         else
10518                 val="$undef"
10519         fi
10520         set d_pwpasswd
10521         eval $setvar
10522
10523         $rm -f $$.h
10524         ;;
10525 *)
10526         val="$undef"; 
10527         set d_pwquota; eval $setvar
10528         set d_pwage; eval $setvar
10529         set d_pwchange; eval $setvar
10530         set d_pwclass; eval $setvar
10531         set d_pwexpire; eval $setvar
10532         set d_pwcomment; eval $setvar
10533         set d_pwgecos; eval $setvar
10534         set d_pwpasswd; eval $setvar
10535         ;;
10536 esac
10537
10538 : see if readdir and friends exist
10539 set readdir d_readdir
10540 eval $inlibc
10541 set seekdir d_seekdir
10542 eval $inlibc
10543 set telldir d_telldir
10544 eval $inlibc
10545 set rewinddir d_rewinddir
10546 eval $inlibc
10547
10548 : see if readlink exists
10549 set readlink d_readlink
10550 eval $inlibc
10551
10552 : see if rename exists
10553 set rename d_rename
10554 eval $inlibc
10555
10556 : see if rmdir exists
10557 set rmdir d_rmdir
10558 eval $inlibc
10559
10560 : see if memory.h is available.
10561 val=''
10562 set memory.h val
10563 eval $inhdr
10564
10565 : See if it conflicts with string.h
10566 case "$val" in
10567 $define)
10568         case "$strings" in
10569         '') ;;
10570         *)
10571                 $cppstdin $cppflags $cppminus < $strings > mem.h
10572                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10573                         echo " "
10574                         echo "We won't be including <memory.h>."
10575                         val="$undef"
10576                 fi
10577                 $rm -f mem.h
10578                 ;;
10579         esac
10580 esac
10581 set i_memory
10582 eval $setvar
10583
10584 : can bcopy handle overlapping blocks?
10585 val="$undef"
10586 case "$d_bcopy" in
10587 "$define")
10588         echo " "
10589         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10590         $cat >try.c <<EOCP
10591 #$i_memory I_MEMORY
10592 #$i_stdlib I_STDLIB
10593 #$i_string I_STRING
10594 #$i_unistd I_UNISTD
10595 EOCP
10596         $cat >>try.c <<'EOCP'
10597 #include <stdio.h>
10598 #ifdef I_MEMORY
10599 #  include <memory.h>
10600 #endif
10601 #ifdef I_STDLIB
10602 #  include <stdlib.h>
10603 #endif
10604 #ifdef I_STRING
10605 #  include <string.h>
10606 #else
10607 #  include <strings.h>
10608 #endif
10609 #ifdef I_UNISTD
10610 #  include <unistd.h>  /* Needed for NetBSD */
10611 #endif
10612 int main()
10613 {
10614 char buf[128], abc[128];
10615 char *b;
10616 int len;
10617 int off;
10618 int align;
10619
10620 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10621
10622 for (align = 7; align >= 0; align--) {
10623         for (len = 36; len; len--) {
10624                 b = buf+align;
10625                 bcopy(abc, b, len);
10626                 for (off = 1; off <= len; off++) {
10627                         bcopy(b, b+off, len);
10628                         bcopy(b+off, b, len);
10629                         if (bcmp(b, abc, len))
10630                                 exit(1);
10631                 }
10632         }
10633 }
10634 exit(0);
10635 }
10636 EOCP
10637         set try
10638         if eval $compile_ok; then
10639                 if ./try 2>/dev/null; then
10640                         echo "Yes, it can."
10641                         val="$define"
10642                 else
10643                         echo "It can't, sorry."
10644                         case "$d_memmove" in
10645                         "$define") echo "But that's Ok since you have memmove()." ;;
10646                         esac
10647                 fi
10648         else
10649                 echo "(I can't compile the test program, so we'll assume not...)"
10650                 case "$d_memmove" in
10651                 "$define") echo "But that's Ok since you have memmove()." ;;
10652                 esac
10653         fi
10654         ;;
10655 esac
10656 $rm -f try.* try core
10657 set d_safebcpy
10658 eval $setvar
10659
10660 : can memcpy handle overlapping blocks?
10661 val="$undef"
10662 case "$d_memcpy" in
10663 "$define")
10664         echo " "
10665         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10666         $cat >try.c <<EOCP
10667 #$i_memory I_MEMORY
10668 #$i_stdlib I_STDLIB
10669 #$i_string I_STRING
10670 #$i_unistd I_UNISTD
10671 EOCP
10672         $cat >>try.c <<'EOCP'
10673 #include <stdio.h>
10674 #ifdef I_MEMORY
10675 #  include <memory.h>
10676 #endif
10677 #ifdef I_STDLIB
10678 #  include <stdlib.h>
10679 #endif
10680 #ifdef I_STRING
10681 #  include <string.h>
10682 #else
10683 #  include <strings.h>
10684 #endif
10685 #ifdef I_UNISTD
10686 #  include <unistd.h>  /* Needed for NetBSD */
10687 #endif
10688 int main()
10689 {
10690 char buf[128], abc[128];
10691 char *b;
10692 int len;
10693 int off;
10694 int align;
10695
10696 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10697    try to store the string in read-only memory. */
10698 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10699
10700 for (align = 7; align >= 0; align--) {
10701         for (len = 36; len; len--) {
10702                 b = buf+align;
10703                 memcpy(b, abc, len);
10704                 for (off = 1; off <= len; off++) {
10705                         memcpy(b+off, b, len);
10706                         memcpy(b, b+off, len);
10707                         if (memcmp(b, abc, len))
10708                                 exit(1);
10709                 }
10710         }
10711 }
10712 exit(0);
10713 }
10714 EOCP
10715         set try
10716         if eval $compile_ok; then
10717                 if ./try 2>/dev/null; then
10718                         echo "Yes, it can."
10719                         val="$define"
10720                 else
10721                         echo "It can't, sorry."
10722                         case "$d_memmove" in
10723                         "$define") echo "But that's Ok since you have memmove()." ;;
10724                         esac
10725                 fi
10726         else
10727                 echo "(I can't compile the test program, so we'll assume not...)"
10728                 case "$d_memmove" in
10729                 "$define") echo "But that's Ok since you have memmove()." ;;
10730                 esac
10731         fi
10732         ;;
10733 esac
10734 $rm -f try.* try core
10735 set d_safemcpy
10736 eval $setvar
10737
10738 : can memcmp be trusted to compare relative magnitude?
10739 val="$undef"
10740 case "$d_memcmp" in
10741 "$define")
10742         echo " "
10743         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10744         $cat >try.c <<EOCP
10745 #$i_memory I_MEMORY
10746 #$i_stdlib I_STDLIB
10747 #$i_string I_STRING
10748 #$i_unistd I_UNISTD
10749 EOCP
10750         $cat >>try.c <<'EOCP'
10751 #include <stdio.h>
10752 #ifdef I_MEMORY
10753 #  include <memory.h>
10754 #endif
10755 #ifdef I_STDLIB
10756 #  include <stdlib.h>
10757 #endif
10758 #ifdef I_STRING
10759 #  include <string.h>
10760 #else
10761 #  include <strings.h>
10762 #endif
10763 #ifdef I_UNISTD
10764 #  include <unistd.h>  /* Needed for NetBSD */
10765 #endif
10766 int main()
10767 {
10768 char a = -1;
10769 char b = 0;
10770 if ((a < b) && memcmp(&a, &b, 1) < 0)
10771         exit(1);
10772 exit(0);
10773 }
10774 EOCP
10775         set try
10776         if eval $compile_ok; then
10777                 if ./try 2>/dev/null; then
10778                         echo "Yes, it can."
10779                         val="$define"
10780                 else
10781                         echo "No, it can't (it uses signed chars)."
10782                 fi
10783         else
10784                 echo "(I can't compile the test program, so we'll assume not...)"
10785         fi
10786         ;;
10787 esac
10788 $rm -f try.* try core
10789 set d_sanemcmp
10790 eval $setvar
10791
10792 : see if select exists
10793 set select d_select
10794 eval $inlibc
10795
10796 : see if semctl exists
10797 set semctl d_semctl
10798 eval $inlibc
10799
10800 : see if semget exists
10801 set semget d_semget
10802 eval $inlibc
10803
10804 : see if semop exists
10805 set semop d_semop
10806 eval $inlibc
10807
10808 : see how much of the 'sem*(2)' library is present.
10809 h_sem=true
10810 echo " "
10811 case "$d_semctl$d_semget$d_semop" in
10812 *"$undef"*) h_sem=false;;
10813 esac
10814 case "$osname" in
10815 freebsd)
10816     case "`ipcs 2>&1`" in
10817     "SVID messages"*"not configured"*)
10818         echo "Your $osname does not have the sem*(2) configured." >&4
10819         h_sem=false
10820         val="$undef"
10821         set semctl d_semctl
10822         eval $setvar
10823         set semget d_semget
10824         eval $setvar
10825         set semop d_semop
10826         eval $setvar
10827         ;;
10828     esac
10829     ;;
10830 esac
10831 : we could also check for sys/ipc.h ...
10832 if $h_sem && $test `./findhdr sys/sem.h`; then
10833         echo "You have the full sem*(2) library." >&4
10834         val="$define"
10835 else
10836         echo "You don't have the full sem*(2) library." >&4
10837         val="$undef"
10838 fi
10839 set d_sem
10840 eval $setvar
10841
10842 : see whether sys/sem.h defines union semun
10843 echo " "
10844 $cat > try.c <<'END'
10845 #include <sys/types.h>
10846 #include <sys/ipc.h>
10847 #include <sys/sem.h>
10848 int main () { union semun semun; semun.buf = 0; }
10849 END
10850 set try
10851 if eval $compile; then
10852     echo "You have union semun in <sys/sem.h>." >&4
10853     val="$define"
10854 else
10855     echo "You do not have union semun in <sys/sem.h>." >&4
10856     val="$undef"
10857 fi
10858 $rm -f try try.c try.h
10859 set d_union_semun
10860 eval $setvar
10861
10862 : see how to do semctl IPC_STAT
10863 case "$d_sem" in
10864 $define)
10865     : see whether semctl IPC_STAT can use union semun
10866     echo " "
10867     $cat > try.h <<END
10868 #ifndef S_IRUSR
10869 #   ifdef S_IREAD
10870 #       define S_IRUSR S_IREAD
10871 #       define S_IWUSR S_IWRITE
10872 #       define S_IXUSR S_IEXEC
10873 #   else
10874 #       define S_IRUSR 0400
10875 #       define S_IWUSR 0200
10876 #       define S_IXUSR 0100
10877 #   endif
10878 #   define S_IRGRP (S_IRUSR>>3)
10879 #   define S_IWGRP (S_IWUSR>>3)
10880 #   define S_IXGRP (S_IXUSR>>3)
10881 #   define S_IROTH (S_IRUSR>>6)
10882 #   define S_IWOTH (S_IWUSR>>6)
10883 #   define S_IXOTH (S_IXUSR>>6)
10884 #endif
10885 #ifndef S_IRWXU
10886 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10887 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10888 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10889 #endif
10890 END
10891
10892     $cat > try.c <<END
10893 #include <sys/types.h>
10894 #include <sys/ipc.h>
10895 #include <sys/sem.h>
10896 #include <sys/stat.h>
10897 #include <stdio.h>
10898 #include <errno.h>
10899 #include "try.h"
10900 #ifndef errno
10901 extern int errno;
10902 #endif
10903 #$d_union_semun HAS_UNION_SEMUN
10904 int main() {
10905     union semun
10906 #ifndef HAS_UNION_SEMUN
10907     {
10908         int val;
10909         struct semid_ds *buf;
10910         unsigned short *array;
10911     }
10912 #endif
10913     arg;
10914     int sem, st;
10915
10916 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10917     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10918     if (sem > -1) {
10919         struct semid_ds argbuf;
10920         arg.buf = &argbuf;
10921 #       ifdef IPC_STAT
10922         st = semctl(sem, 0, IPC_STAT, arg);
10923         if (st == 0)
10924             printf("semun\n");
10925         else
10926 #       endif /* IPC_STAT */
10927             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10928 #       ifdef IPC_RMID
10929         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10930 #       endif /* IPC_RMID */
10931             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10932     } else
10933 #endif /* IPC_PRIVATE && ... */
10934         printf("semget failed: errno = %d\n", errno);
10935   return 0;
10936 }
10937 END
10938     val="$undef"
10939     set try
10940     if eval $compile; then
10941         xxx=`./try`
10942         case "$xxx" in
10943         semun) val="$define" ;;
10944         esac
10945     fi
10946     $rm -f try try.c
10947     set d_semctl_semun
10948     eval $setvar
10949     case "$d_semctl_semun" in
10950     $define)
10951         echo "You can use union semun for semctl IPC_STAT." >&4
10952         also='also'
10953         ;;
10954     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10955         also=''
10956         ;;
10957     esac
10958
10959     : see whether semctl IPC_STAT can use struct semid_ds pointer
10960     $cat > try.c <<'END'
10961 #include <sys/types.h>
10962 #include <sys/ipc.h>
10963 #include <sys/sem.h>
10964 #include <sys/stat.h>
10965 #include "try.h"
10966 #include <stdio.h>
10967 #include <errno.h>
10968 #ifndef errno
10969 extern int errno;
10970 #endif
10971 int main() {
10972     struct semid_ds arg;
10973     int sem, st;
10974
10975 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10976     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10977     if (sem > -1) {
10978 #       ifdef IPC_STAT
10979         st = semctl(sem, 0, IPC_STAT, &arg);
10980         if (st == 0)
10981             printf("semid_ds\n");
10982         else
10983 #       endif /* IPC_STAT */
10984             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10985 #       ifdef IPC_RMID
10986         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10987 #       endif /* IPC_RMID */
10988             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10989     } else
10990 #endif /* IPC_PRIVATE && ... */
10991         printf("semget failed: errno = %d\n", errno);
10992
10993     return 0;
10994 }
10995 END
10996     val="$undef"
10997     set try
10998     if eval $compile; then
10999         xxx=`./try`
11000         case "$xxx" in
11001         semid_ds) val="$define" ;;
11002         esac
11003     fi
11004     $rm -f try try.c
11005     set d_semctl_semid_ds
11006     eval $setvar
11007     case "$d_semctl_semid_ds" in
11008     $define)
11009         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11010         ;;
11011     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11012         ;;
11013     esac
11014     $rm -f try.h
11015     ;;
11016 *)  val="$undef"
11017
11018     # We do not have the full sem*(2) library, so assume we can not
11019     # use either.
11020
11021     set d_semctl_semun
11022     eval $setvar
11023
11024     set d_semctl_semid_ds
11025     eval $setvar
11026     ;;
11027 esac
11028
11029 : see if setegid exists
11030 set setegid d_setegid
11031 eval $inlibc
11032
11033 : see if seteuid exists
11034 set seteuid d_seteuid
11035 eval $inlibc
11036
11037 : see if setgrent exists
11038 set setgrent d_setgrent
11039 eval $inlibc
11040
11041 : see if sethostent exists
11042 set sethostent d_sethent
11043 eval $inlibc
11044
11045 : see if setlinebuf exists
11046 set setlinebuf d_setlinebuf
11047 eval $inlibc
11048
11049 : see if setlocale exists
11050 set setlocale d_setlocale
11051 eval $inlibc
11052
11053 : see if setnetent exists
11054 set setnetent d_setnent
11055 eval $inlibc
11056
11057 : see if setprotoent exists
11058 set setprotoent d_setpent
11059 eval $inlibc
11060
11061 : see if setpgid exists
11062 set setpgid d_setpgid
11063 eval $inlibc
11064
11065 : see if setpgrp2 exists
11066 set setpgrp2 d_setpgrp2
11067 eval $inlibc
11068
11069 : see if setpriority exists
11070 set setpriority d_setprior
11071 eval $inlibc
11072
11073 : see if setproctitle exists
11074 set setproctitle d_setproctitle
11075 eval $inlibc
11076
11077 : see if setpwent exists
11078 set setpwent d_setpwent
11079 eval $inlibc
11080
11081 : see if setregid exists
11082 set setregid d_setregid
11083 eval $inlibc
11084 set setresgid d_setresgid
11085 eval $inlibc
11086
11087 : see if setreuid exists
11088 set setreuid d_setreuid
11089 eval $inlibc
11090 set setresuid d_setresuid
11091 eval $inlibc
11092
11093 : see if setrgid exists
11094 set setrgid d_setrgid
11095 eval $inlibc
11096
11097 : see if setruid exists
11098 set setruid d_setruid
11099 eval $inlibc
11100
11101 : see if setservent exists
11102 set setservent d_setsent
11103 eval $inlibc
11104
11105 : see if setsid exists
11106 set setsid d_setsid
11107 eval $inlibc
11108
11109 : see if setvbuf exists
11110 set setvbuf d_setvbuf
11111 eval $inlibc
11112
11113 : see if sfio.h is available
11114 set sfio.h i_sfio
11115 eval $inhdr
11116
11117
11118 : see if sfio library is available
11119 case "$i_sfio" in
11120 $define)
11121         val=''
11122         set sfreserve val
11123         eval $inlibc
11124         ;;
11125 *)
11126         val="$undef"
11127         ;;
11128 esac
11129 : Ok, but do we want to use it.
11130 case "$val" in
11131 $define)
11132         case "$usesfio" in
11133         true|$define|[yY]*) dflt='y';;
11134         *) dflt='n';;
11135         esac
11136         echo "$package can use the sfio library, but it is experimental."
11137         case "$useperlio" in
11138         "$undef")
11139             echo "For sfio also the PerlIO abstraction layer is needed."
11140             echo "Earlier you said you wouldn't want that."
11141             ;;
11142         esac
11143         rp="You seem to have sfio available, do you want to try using it?"
11144         . ./myread
11145         case "$ans" in
11146         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11147                 useperlio="$define"
11148                 val="$define"
11149                 ;;
11150         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11151                 val="$undef"
11152                 : Remove sfio from list of libraries to use
11153                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11154                 shift
11155                 libs="$*"
11156                 echo "libs = $libs" >&4
11157                 ;;
11158         esac
11159         ;;
11160 *)      case "$usesfio" in
11161         true|$define|[yY]*)
11162                 echo "Sorry, cannot find sfio on this machine." >&4
11163                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11164                 val="$undef"
11165                 ;;
11166         esac
11167         ;;
11168 esac
11169 set d_sfio
11170 eval $setvar
11171 case "$d_sfio" in
11172 $define) usesfio='true';;
11173 *) usesfio='false';;
11174 esac
11175
11176 : see if shmctl exists
11177 set shmctl d_shmctl
11178 eval $inlibc
11179
11180 : see if shmget exists
11181 set shmget d_shmget
11182 eval $inlibc
11183
11184 : see if shmat exists
11185 set shmat d_shmat
11186 eval $inlibc
11187 : see what shmat returns
11188 case "$d_shmat" in
11189 "$define")
11190         $cat >shmat.c <<'END'
11191 #include <sys/shm.h>
11192 void *shmat();
11193 END
11194         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11195                 shmattype='void *'
11196         else
11197                 shmattype='char *'
11198         fi
11199         echo "and it returns ($shmattype)." >&4
11200         : see if a prototype for shmat is available
11201         xxx=`./findhdr sys/shm.h`
11202         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11203         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11204                 val="$define"
11205         else
11206                 val="$undef"
11207         fi
11208         $rm -f shmat.[co]
11209         ;;
11210 *)
11211         val="$undef"
11212         ;;
11213 esac
11214 set d_shmatprototype
11215 eval $setvar
11216
11217 : see if shmdt exists
11218 set shmdt d_shmdt
11219 eval $inlibc
11220
11221 : see how much of the 'shm*(2)' library is present.
11222 h_shm=true
11223 echo " "
11224 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11225 *"$undef"*) h_shm=false;;
11226 esac
11227 case "$osname" in
11228 freebsd)
11229     case "`ipcs 2>&1`" in
11230     "SVID shared memory"*"not configured"*)
11231         echo "Your $osname does not have the shm*(2) configured." >&4
11232         h_shm=false
11233         val="$undef"
11234         set shmctl d_shmctl
11235         evat $setvar
11236         set shmget d_shmget
11237         evat $setvar
11238         set shmat d_shmat
11239         evat $setvar
11240         set shmdt d_shmdt
11241         evat $setvar
11242         ;;
11243     esac
11244     ;;
11245 esac
11246 : we could also check for sys/ipc.h ...
11247 if $h_shm && $test `./findhdr sys/shm.h`; then
11248         echo "You have the full shm*(2) library." >&4
11249         val="$define"
11250 else
11251         echo "You don't have the full shm*(2) library." >&4
11252         val="$undef"
11253 fi
11254 set d_shm
11255 eval $setvar
11256
11257 echo " "
11258 : see if we have sigaction
11259 if set sigaction val -f d_sigaction; eval $csym; $val; then
11260         echo 'sigaction() found.' >&4
11261         $cat > try.c <<'EOP'
11262 #include <stdio.h>
11263 #include <sys/types.h>
11264 #include <signal.h>
11265 int main()
11266 {
11267     struct sigaction act, oact;
11268     act.sa_flags = 0;
11269     oact.sa_handler = 0;
11270     /* so that act and oact are used */
11271     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11272 }
11273 EOP
11274         set try
11275         if eval $compile_ok; then
11276                 val="$define"
11277         else
11278                 echo "But you don't seem to have a useable struct sigaction." >&4
11279                 val="$undef"
11280         fi
11281 else
11282         echo 'sigaction NOT found.' >&4
11283         val="$undef"
11284 fi
11285 set d_sigaction; eval $setvar
11286 $rm -f try try$_o try.c
11287
11288 : see if sigsetjmp exists
11289 echo " "
11290 case "$d_sigsetjmp" in
11291 '')
11292         $cat >try.c <<'EOP'
11293 #include <setjmp.h>
11294 sigjmp_buf env;
11295 int set = 1;
11296 int main()
11297 {
11298         if (sigsetjmp(env,1))
11299                 exit(set);
11300         set = 0;
11301         siglongjmp(env, 1);
11302         exit(1);
11303 }
11304 EOP
11305         set try
11306         if eval $compile; then
11307                 if ./try >/dev/null 2>&1; then
11308                         echo "POSIX sigsetjmp found." >&4
11309                         val="$define"
11310                 else
11311                         $cat >&4 <<EOM
11312 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11313 I'll ignore them.
11314 EOM
11315                         val="$undef"
11316                 fi
11317         else
11318                 echo "sigsetjmp not found." >&4
11319                 val="$undef"
11320         fi
11321         ;;
11322 *) val="$d_sigsetjmp"
11323         case "$d_sigsetjmp" in
11324         $define) echo "POSIX sigsetjmp found." >&4;;
11325         $undef) echo "sigsetjmp not found." >&4;;
11326         esac
11327         ;;
11328 esac
11329 set d_sigsetjmp
11330 eval $setvar
11331 $rm -f try.c try
11332
11333 : see if socks5_init exists
11334 set socks5_init d_socks5_init
11335 eval $inlibc
11336
11337 : see if sys/stat.h is available
11338 set sys/stat.h i_sysstat
11339 eval $inhdr
11340
11341
11342 : see if stat knows about block sizes
11343 echo " "
11344 echo "Checking to see if your struct stat has st_blocks field..." >&4
11345 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11346 eval $hasfield
11347
11348
11349 : see if this is a sys/vfs.h system
11350 set sys/vfs.h i_sysvfs
11351 eval $inhdr
11352
11353
11354 : see if this is a sys/statfs.h system
11355 set sys/statfs.h i_sysstatfs
11356 eval $inhdr
11357
11358
11359 echo " "
11360 echo "Checking to see if your system supports struct statfs..." >&4
11361 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
11362 eval $hasstruct
11363 case "$d_statfs_s" in
11364 "$define")      echo "Yes, it does."   ;;
11365 *)              echo "No, it doesn't." ;;
11366 esac
11367
11368
11369
11370 : see if struct statfs knows about f_flags
11371 case "$d_statfs_s" in
11372 define) 
11373         echo " "
11374         echo "Checking to see if your struct statfs has f_flags field..." >&4
11375         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
11376         eval $hasfield
11377         ;;
11378 *)      val="$undef"
11379         set d_statfs_f_flags
11380         eval $setvar
11381         ;;
11382 esac
11383 case "$d_statfs_f_flags" in
11384 "$define")      echo "Yes, it does."   ;;
11385 *)              echo "No, it doesn't." ;;
11386 esac
11387
11388 : see if _ptr and _cnt from stdio act std
11389 echo " "
11390 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11391         echo "(Looks like you have stdio.h from Linux.)"
11392         case "$stdio_ptr" in
11393         '') stdio_ptr='((fp)->_IO_read_ptr)'
11394                 ptr_lval=$define
11395                 ;;
11396         *)      ptr_lval=$d_stdio_ptr_lval;;
11397         esac
11398         case "$stdio_cnt" in
11399         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11400                 cnt_lval=$undef
11401                 ;;
11402         *)      cnt_lval=$d_stdio_cnt_lval;;
11403         esac
11404         case "$stdio_base" in
11405         '') stdio_base='((fp)->_IO_read_base)';;
11406         esac
11407         case "$stdio_bufsiz" in
11408         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11409         esac
11410 else
11411         case "$stdio_ptr" in
11412         '') stdio_ptr='((fp)->_ptr)'
11413                 ptr_lval=$define
11414                 ;;
11415         *)      ptr_lval=$d_stdio_ptr_lval;;
11416         esac
11417         case "$stdio_cnt" in
11418         '') stdio_cnt='((fp)->_cnt)'
11419                 cnt_lval=$define
11420                 ;;
11421         *)      cnt_lval=$d_stdio_cnt_lval;;
11422         esac
11423         case "$stdio_base" in
11424         '') stdio_base='((fp)->_base)';;
11425         esac
11426         case "$stdio_bufsiz" in
11427         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11428         esac
11429 fi
11430 : test whether _ptr and _cnt really work
11431 echo "Checking how std your stdio is..." >&4
11432 $cat >try.c <<EOP
11433 #include <stdio.h>
11434 #define FILE_ptr(fp)    $stdio_ptr
11435 #define FILE_cnt(fp)    $stdio_cnt
11436 int main() {
11437         FILE *fp = fopen("try.c", "r");
11438         char c = getc(fp);
11439         if (
11440                 18 <= FILE_cnt(fp) &&
11441                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11442         )
11443                 exit(0);
11444         exit(1);
11445 }
11446 EOP
11447 val="$undef"
11448 set try
11449 if eval $compile; then
11450         if ./try; then
11451                 echo "Your stdio acts pretty std."
11452                 val="$define"
11453         else
11454                 echo "Your stdio isn't very std."
11455         fi
11456 else
11457         echo "Your stdio doesn't appear very std."
11458 fi
11459 $rm -f try.c try
11460 set d_stdstdio
11461 eval $setvar
11462
11463 : Can _ptr be used as an lvalue?
11464 case "$d_stdstdio$ptr_lval" in
11465 $define$define) val=$define ;;
11466 *) val=$undef ;;
11467 esac
11468 set d_stdio_ptr_lval
11469 eval $setvar
11470
11471 : Can _cnt be used as an lvalue?
11472 case "$d_stdstdio$cnt_lval" in
11473 $define$define) val=$define ;;
11474 *) val=$undef ;;
11475 esac
11476 set d_stdio_cnt_lval
11477 eval $setvar
11478
11479 : see if _base is also standard
11480 val="$undef"
11481 case "$d_stdstdio" in
11482 $define)
11483         $cat >try.c <<EOP
11484 #include <stdio.h>
11485 #define FILE_base(fp)   $stdio_base
11486 #define FILE_bufsiz(fp) $stdio_bufsiz
11487 int main() {
11488         FILE *fp = fopen("try.c", "r");
11489         char c = getc(fp);
11490         if (
11491                 19 <= FILE_bufsiz(fp) &&
11492                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11493         )
11494                 exit(0);
11495         exit(1);
11496 }
11497 EOP
11498         set try
11499         if eval $compile; then
11500                 if ./try; then
11501                         echo "And its _base field acts std."
11502                         val="$define"
11503                 else
11504                         echo "But its _base field isn't std."
11505                 fi
11506         else
11507                 echo "However, it seems to be lacking the _base field."
11508         fi
11509         $rm -f try.c try
11510         ;;
11511 esac
11512 set d_stdiobase
11513 eval $setvar
11514
11515 $cat >&4 <<EOM
11516 Checking how to access stdio streams by file descriptor number...
11517 EOM
11518 case "$stdio_stream_array" in
11519 '')     $cat >try.c <<EOCP
11520 #include <stdio.h>
11521 int main() {
11522   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11523     printf("yes\n");
11524 }
11525 EOCP
11526         for s in _iob __iob __sF
11527         do
11528                 set try -DSTDIO_STREAM_ARRAY=$s
11529                 if eval $compile; then
11530                         case "`./try$exe_ext`" in
11531                         yes)    stdio_stream_array=$s; break ;;
11532                         esac
11533                 fi
11534         done
11535         $rm -f try.* try$exe_ext
11536 esac
11537 case "$stdio_stream_array" in
11538 '')     $cat >&4 <<EOM
11539 I can't figure out how to access stdio streams by file descriptor number.
11540 EOM
11541         d_stdio_stream_array="$undef"
11542         ;;
11543 *)      $cat >&4 <<EOM
11544 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11545 EOM
11546         d_stdio_stream_array="$define"
11547         ;;
11548 esac
11549
11550 : see if strcoll exists
11551 set strcoll d_strcoll
11552 eval $inlibc
11553
11554 : check for structure copying
11555 echo " "
11556 echo "Checking to see if your C compiler can copy structs..." >&4
11557 $cat >try.c <<'EOCP'
11558 int main()
11559 {
11560         struct blurfl {
11561                 int dyick;
11562         } foo, bar;
11563
11564         foo = bar;
11565 }
11566 EOCP
11567 if $cc -c try.c >/dev/null 2>&1 ; then
11568         val="$define"
11569         echo "Yup, it can."
11570 else
11571         val="$undef"
11572         echo "Nope, it can't."
11573 fi
11574 set d_strctcpy
11575 eval $setvar
11576 $rm -f try.*
11577
11578 : see if strerror and/or sys_errlist[] exist
11579 echo " "
11580 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11581     if set strerror val -f d_strerror; eval $csym; $val; then
11582                 echo 'strerror() found.' >&4
11583                 d_strerror="$define"
11584                 d_strerrm='strerror(e)'
11585                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11586                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11587                         d_syserrlst="$define"
11588                 else
11589                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11590                         d_syserrlst="$undef"
11591                 fi
11592     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11593                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11594                 echo 'strerror() found in string header.' >&4
11595                 d_strerror="$define"
11596                 d_strerrm='strerror(e)'
11597                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11598                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11599                                 d_syserrlst="$define"
11600                 else
11601                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11602                         d_syserrlst="$undef"
11603                 fi
11604     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11605                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11606                 d_strerror="$undef"
11607                 d_syserrlst="$define"
11608                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11609     else
11610                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11611                 d_strerror="$undef"
11612                 d_syserrlst="$undef"
11613                 d_strerrm='"unknown"'
11614     fi
11615 fi
11616
11617 : see if strtod exists
11618 set strtod d_strtod
11619 eval $inlibc
11620
11621 : see if strtol exists
11622 set strtol d_strtol
11623 eval $inlibc
11624
11625 : see if strtold exists
11626 set strtold d_strtold
11627 eval $inlibc
11628
11629 : see if strtoll exists
11630 set strtoll d_strtoll
11631 eval $inlibc
11632
11633 case "$d_longlong-$d_strtoll" in
11634 "$define-$define")
11635         $cat <<EOM
11636 Checking whether your strtoll() works okay...
11637 EOM
11638         $cat >try.c <<'EOCP'
11639 #include <errno.h>
11640 #ifdef __hpux
11641 #define strtoll __strtoll
11642 #endif
11643 #ifdef __EMX__
11644 #define strtoll _strtoll
11645 #endif
11646 #include <stdio.h>
11647 extern long long int strtoll(char *s, char **, int); 
11648 static int bad = 0;
11649 int check(char *s, long long ell, int een) {
11650         long long gll;
11651         errno = 0;
11652         gll = strtoll(s, 0, 10);
11653         if (!((gll == ell) && (errno == een)))
11654                 bad++;
11655 }
11656 int main() {
11657         check(" 1",                                      1LL, 0);
11658         check(" 0",                                      0LL, 0);
11659         check("-1",                                     -1LL, 0);
11660         check("-9223372036854775808", -9223372036854775808LL, 0);
11661         check("-9223372036854775808", -9223372036854775808LL, 0);
11662         check(" 9223372036854775807",  9223372036854775807LL, 0);
11663         check("-9223372036854775808", -9223372036854775808LL, 0);
11664         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11665         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11666         if (!bad)
11667                 printf("ok\n");
11668 }
11669 EOCP
11670         set try
11671         if eval $compile; then
11672                 yyy=`./try`
11673                 case "$yyy" in
11674                 ok) echo "Your strtoll() seems to be working okay." ;;
11675                 *) cat <<EOM >&4
11676 Your strtoll() doesn't seem to be working okay.
11677 EOM
11678                    d_strtoll="$undef"
11679                    ;;
11680                 esac
11681         else
11682                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11683                 d_strtoll="$undef"
11684         fi
11685         ;;
11686 esac
11687
11688 : see if strtoul exists
11689 set strtoul d_strtoul
11690 eval $inlibc
11691
11692 : see if strtoull exists
11693 set strtoull d_strtoull
11694 eval $inlibc
11695
11696 case "$d_longlong-$d_strtoull" in
11697 "$define-$define")
11698         $cat <<EOM
11699 Checking whether your strtoull() works okay...
11700 EOM
11701         $cat >try.c <<'EOCP'
11702 #include <errno.h>
11703 #ifdef __hpux
11704 #define strtoull __strtoull
11705 #endif
11706 #include <stdio.h>
11707 extern unsigned long long int strtoull(char *s, char **, int); 
11708 static int bad = 0;
11709 int check(char *s, long long eull, int een) {
11710         long long gull;
11711         errno = 0;
11712         gull = strtoull(s, 0, 10);
11713         if (!((gull == eull) && (errno == een)))
11714                 bad++;
11715 }
11716 int main() {
11717         check(" 1",                                       1LL, 0);
11718         check(" 0",                                       0LL, 0);
11719         check("18446744073709551615", 18446744073709551615ULL, 0);
11720         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11721         if (!bad)
11722                 printf("ok\n");
11723 }
11724 EOCP
11725         set try
11726         if eval $compile; then
11727                 case "`./try`" in
11728                 ok) echo "Your strtoull() seems to be working okay." ;;
11729                 *) cat <<EOM >&4
11730 Your strtoull() doesn't seem to be working okay.
11731 EOM
11732                    d_strtoull="$undef"
11733                    ;;
11734                 esac
11735         fi
11736         ;;
11737 esac
11738
11739 : see if strtouq exists
11740 set strtouq d_strtouq
11741 eval $inlibc
11742
11743 : see if strxfrm exists
11744 set strxfrm d_strxfrm
11745 eval $inlibc
11746
11747 : see if symlink exists
11748 set symlink d_symlink
11749 eval $inlibc
11750
11751 : see if syscall exists
11752 set syscall d_syscall
11753 eval $inlibc
11754
11755 : see if sysconf exists
11756 set sysconf d_sysconf
11757 eval $inlibc
11758
11759 : see if system exists
11760 set system d_system
11761 eval $inlibc
11762
11763 : see if tcgetpgrp exists
11764 set tcgetpgrp d_tcgetpgrp
11765 eval $inlibc
11766
11767 : see if tcsetpgrp exists
11768 set tcsetpgrp d_tcsetpgrp
11769 eval $inlibc
11770
11771 : see if prototype for telldir is available
11772 echo " "
11773 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11774 eval $hasproto
11775
11776 : see if this is a sys/times.h system
11777 set sys/times.h i_systimes
11778 eval $inhdr
11779
11780 : see if times exists
11781 echo " "
11782 if set times val -f d_times; eval $csym; $val; then
11783         echo 'times() found.' >&4
11784         d_times="$define"
11785         inc=''
11786         case "$i_systimes" in
11787         "$define") inc='sys/times.h';;
11788         esac
11789         rp="What is the type returned by times() on this system?"
11790         set clock_t clocktype long stdio.h sys/types.h $inc
11791         eval $typedef_ask
11792 else
11793         echo 'times() NOT found, hope that will do.' >&4
11794         d_times="$undef"
11795         clocktype='int'
11796 fi
11797
11798 : see if truncate exists
11799 set truncate d_truncate
11800 eval $inlibc
11801
11802 : see if tzname[] exists
11803 echo " "
11804 if set tzname val -a d_tzname; eval $csym; $val; then
11805         val="$define"
11806         echo 'tzname[] found.' >&4
11807 else
11808         val="$undef"
11809         echo 'tzname[] NOT found.' >&4
11810 fi
11811 set d_tzname
11812 eval $setvar
11813
11814 : see if umask exists
11815 set umask d_umask
11816 eval $inlibc
11817
11818 : see if ustat exists
11819 set ustat d_ustat
11820 eval $inlibc
11821
11822 : backward compatibility for d_hvfork
11823 if test X$d_hvfork != X; then
11824         d_vfork="$d_hvfork"
11825         d_hvfork=''
11826 fi
11827 : see if there is a vfork
11828 val=''
11829 set vfork val
11830 eval $inlibc
11831
11832 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11833 : perl on Solaris 2.x, and probably elsewhere.
11834 case "$val" in
11835 $define)
11836         echo " "
11837         case "$usevfork" in
11838         false) dflt='n';;
11839         *) dflt='y';;
11840         esac
11841         cat <<'EOM'
11842  
11843 Perl can only use a vfork() that doesn't suffer from strict
11844 restrictions on calling functions or modifying global data in
11845 the child.  For example, glibc-2.1 contains such a vfork()
11846 that is unsuitable.  If your system provides a proper fork()
11847 call, chances are that you do NOT want perl to use vfork().
11848
11849 EOM
11850         rp="Do you still want to use vfork()?"
11851         . ./myread
11852         case "$ans" in
11853         y|Y) ;;
11854         *)
11855                 echo "Ok, we won't use vfork()."
11856                 val="$undef"
11857                 ;;
11858         esac
11859         ;;
11860 esac
11861 set d_vfork
11862 eval $setvar
11863 case "$d_vfork" in
11864 $define) usevfork='true';;
11865 *) usevfork='false';;
11866 esac
11867
11868 : see if this is an sysdir system
11869 set sys/dir.h i_sysdir
11870 eval $inhdr
11871
11872 : see if this is an sysndir system
11873 set sys/ndir.h i_sysndir
11874 eval $inhdr
11875
11876 : see if closedir exists
11877 set closedir d_closedir
11878 eval $inlibc
11879
11880 case "$d_closedir" in
11881 "$define")
11882         echo " "
11883         echo "Checking whether closedir() returns a status..." >&4
11884         cat > closedir.c <<EOM
11885 #$i_dirent I_DIRENT             /**/
11886 #$i_sysdir I_SYS_DIR            /**/
11887 #$i_sysndir I_SYS_NDIR          /**/
11888 #$i_systypes I_SYS_TYPES        /**/
11889
11890 #if defined(I_SYS_TYPES)
11891 #include <sys/types.h>
11892 #endif
11893 #if defined(I_DIRENT)
11894 #include <dirent.h>
11895 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11896 #include <sys/dir.h>
11897 #endif
11898 #else
11899 #ifdef I_SYS_NDIR
11900 #include <sys/ndir.h>
11901 #else
11902 #ifdef I_SYS_DIR
11903 #ifdef hp9000s500
11904 #include <ndir.h>       /* may be wrong in the future */
11905 #else
11906 #include <sys/dir.h>
11907 #endif
11908 #endif
11909 #endif
11910 #endif 
11911 int main() { return closedir(opendir(".")); }
11912 EOM
11913         set closedir
11914         if eval $compile_ok; then
11915                 if ./closedir > /dev/null 2>&1 ; then
11916                         echo "Yes, it does."
11917                         val="$undef"
11918                 else
11919                         echo "No, it doesn't."
11920                         val="$define"
11921                 fi
11922         else
11923                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11924                 val="$define"
11925         fi
11926         ;;
11927 *)
11928         val="$undef";
11929         ;;
11930 esac
11931 set d_void_closedir
11932 eval $setvar
11933 $rm -f closedir*
11934 : check for volatile keyword
11935 echo " "
11936 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11937 $cat >try.c <<'EOCP'
11938 int main()
11939 {
11940         typedef struct _goo_struct goo_struct;
11941         goo_struct * volatile goo = ((goo_struct *)0);
11942         struct _goo_struct {
11943                 long long_int;
11944                 int reg_int;
11945                 char char_var;
11946         };
11947         typedef unsigned short foo_t;
11948         char *volatile foo;
11949         volatile int bar;
11950         volatile foo_t blech;
11951         foo = foo;
11952 }
11953 EOCP
11954 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11955         val="$define"
11956         echo "Yup, it does."
11957 else
11958         val="$undef"
11959         echo "Nope, it doesn't."
11960 fi
11961 set d_volatile
11962 eval $setvar
11963 $rm -f try.*
11964
11965 : see if there is a wait4
11966 set wait4 d_wait4
11967 eval $inlibc
11968
11969 : see if waitpid exists
11970 set waitpid d_waitpid
11971 eval $inlibc
11972
11973 : see if wcstombs exists
11974 set wcstombs d_wcstombs
11975 eval $inlibc
11976
11977 : see if wctomb exists
11978 set wctomb d_wctomb
11979 eval $inlibc
11980
11981 : preserve RCS keywords in files with variable substitution, grrr
11982 Date='$Date'
11983 Id='$Id'
11984 Log='$Log'
11985 RCSfile='$RCSfile'
11986 Revision='$Revision'
11987
11988 case "$crosscompile" in
11989 ''|[nN]*) crosscompile="$undef" ;;
11990 esac
11991
11992 case "$osname" in
11993 next|rhapsody|darwin) multiarch="$define" ;;
11994 esac
11995 case "$multiarch" in
11996 ''|[nN]*) multiarch="$undef" ;;
11997 esac
11998
11999 : check for alignment requirements
12000 echo " "
12001 case "$crosscompile$multiarch" in
12002 *$define*)
12003         $cat <<EOM
12004 You seem to be either cross-compiling or doing a multiarchitecture build,
12005 skipping the memory alignment check.
12006
12007 EOM
12008         case "$alignbytes" in
12009         '') alignbytes=8 ;;
12010         esac
12011         ;;
12012 *)
12013         case "$alignbytes" in
12014         '') echo "Checking alignment constraints..." >&4
12015                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12016                         $cat >try.c <<'EOCP'
12017 typedef long double NV;
12018 EOCP
12019                 else
12020                         $cat >try.c <<'EOCP'
12021 typedef double NV;
12022 EOCP
12023                 fi
12024                 $cat >>try.c <<'EOCP'
12025 #include <stdio.h>
12026 struct foobar {
12027         char foo;
12028         NV bar;
12029 } try_algn;
12030 int main()
12031 {
12032     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12033     return(0);
12034 }
12035 EOCP
12036                 set try
12037                 if eval $compile_ok; then
12038                         dflt=`./try`
12039                 else
12040                         dflt='8'
12041                         echo "(I can't seem to compile the test program...)"
12042                 fi
12043                 ;;
12044         *) dflt="$alignbytes"
12045                 ;;
12046         esac
12047         rp="Doubles must be aligned on a how-many-byte boundary?"
12048         . ./myread
12049         alignbytes="$ans"
12050         $rm -f try.c try
12051         ;;
12052 esac
12053
12054
12055 : set the base revision
12056 baserev=5.0
12057
12058 : check for ordering of bytes in a long
12059 echo " "
12060 case "$crosscompile$multiarch" in
12061 *$define*)
12062         $cat <<EOM
12063 You seem to be either cross-compiling or doing a multiarchitecture build,
12064 skipping the byteorder check.
12065
12066 EOM
12067         byteorder='0xffff'
12068         ;;
12069 *)
12070         case "$byteorder" in
12071         '')
12072                 $cat <<'EOM'
12073 In the following, larger digits indicate more significance.  A big-endian
12074 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12075 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12076 machines may have weird orders like 3412.  A Cray will report 87654321,
12077 an Alpha will report 12345678. If the test program works the default is
12078 probably right.
12079 I'm now running the test program...
12080 EOM
12081                 $cat >try.c <<'EOCP'
12082 #include <stdio.h>
12083 int main()
12084 {
12085         int i;
12086         union {
12087                 unsigned long l;
12088                 char c[sizeof(long)];
12089         } u;
12090
12091         if (sizeof(long) > 4)
12092                 u.l = (0x08070605L << 32) | 0x04030201L;
12093         else
12094                 u.l = 0x04030201L;
12095         for (i = 0; i < sizeof(long); i++)
12096                 printf("%c", u.c[i]+'0');
12097         printf("\n");
12098         exit(0);
12099 }
12100 EOCP
12101                 xxx_prompt=y
12102                 set try
12103                 if eval $compile && ./try > /dev/null; then
12104                         dflt=`./try`
12105                         case "$dflt" in
12106                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12107                                 echo "(The test program ran ok.)"
12108                                 echo "byteorder=$dflt"
12109                                 xxx_prompt=n
12110                         ;;
12111                         ????|????????) echo "(The test program ran ok.)" ;;
12112                         *) echo "(The test program didn't run right for some reason.)" ;;
12113                         esac
12114                 else
12115                         dflt='4321'
12116                         cat <<'EOM'
12117 (I can't seem to compile the test program.  Guessing big-endian...)
12118 EOM
12119                 fi
12120                 case "$xxx_prompt" in
12121                 y)
12122                         rp="What is the order of bytes in a long?"
12123                         . ./myread
12124                         byteorder="$ans"
12125                         ;;
12126                 *)      byteorder=$dflt
12127                         ;;
12128                 esac
12129                 ;;
12130         esac
12131         $rm -f try.c try
12132         ;;
12133 esac
12134
12135
12136 : how do we catenate cpp tokens here?
12137 echo " "
12138 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12139 $cat >cpp_stuff.c <<'EOCP'
12140 #define RCAT(a,b)a/**/b
12141 #define ACAT(a,b)a ## b
12142 RCAT(Rei,ser)
12143 ACAT(Cir,cus)
12144 EOCP
12145 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12146 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12147         echo "Oh!  Smells like ANSI's been here." >&4
12148         echo "We can catify or stringify, separately or together!"
12149         cpp_stuff=42
12150 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12151         echo "Ah, yes!  The good old days!" >&4
12152         echo "However, in the good old days we don't know how to stringify and"
12153         echo "catify at the same time."
12154         cpp_stuff=1
12155 else
12156         $cat >&4 <<EOM
12157 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12158 to have to edit the values of CAT[2-5] in config.h...
12159 EOM
12160         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12161 fi
12162 $rm -f cpp_stuff.*
12163
12164 : see if this is a db.h system
12165 set db.h i_db
12166 eval $inhdr
12167
12168 case "$i_db" in
12169 $define)
12170         : Check db version.
12171         echo " "
12172         echo "Checking Berkeley DB version ..." >&4
12173         $cat >try.c <<EOCP
12174 #$d_const HASCONST
12175 #ifndef HASCONST
12176 #define const
12177 #endif
12178 #include <sys/types.h>
12179 #include <stdio.h>
12180 #include <db.h>
12181 int main()
12182 {
12183 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12184     int Major, Minor, Patch ;
12185     unsigned long Version ;
12186     (void)db_version(&Major, &Minor, &Patch) ;
12187     printf("You have Berkeley DB Version 2 or greater\n");
12188
12189     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12190                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12191     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12192                 Major, Minor, Patch) ;
12193
12194     /* check that db.h & libdb are compatible */
12195     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12196         printf("db.h and libdb are incompatible\n") ;
12197         exit(3);        
12198     }
12199
12200     printf("db.h and libdb are compatible\n") ;
12201
12202     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12203                 + DB_VERSION_PATCH ;
12204
12205     /* needs to be >= 2.3.4 */
12206     if (Version < 2003004) {
12207     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12208         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12209         exit(2);        
12210     }
12211
12212     exit(0);
12213 #else
12214 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12215     printf("You have Berkeley DB Version 1\n");
12216     exit(0);    /* DB version < 2: the coast is clear. */
12217 #else
12218     exit(1);    /* <db.h> not Berkeley DB? */
12219 #endif
12220 #endif
12221 }
12222 EOCP
12223         set try
12224         if eval $compile_ok && ./try; then
12225                 echo 'Looks OK.' >&4
12226         else
12227                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12228                 i_db=$undef
12229                 case " $libs " in
12230                 *"-ldb "*)
12231                         : Remove db from list of libraries to use
12232                         echo "Removing unusable -ldb from library list" >&4
12233                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12234                         shift
12235                         libs="$*"
12236                         echo "libs = $libs" >&4
12237                         ;;
12238                 esac
12239         fi
12240         $rm -f try.*
12241         ;;
12242 esac
12243
12244 case "$i_db" in
12245 define)
12246         : Check the return type needed for hash 
12247         echo " "
12248         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12249         $cat >try.c <<EOCP
12250 #$d_const HASCONST
12251 #ifndef HASCONST
12252 #define const
12253 #endif
12254 #include <sys/types.h>
12255 #include <db.h>
12256
12257 #ifndef DB_VERSION_MAJOR
12258 u_int32_t hash_cb (ptr, size)
12259 const void *ptr;
12260 size_t size;
12261 {
12262 }
12263 HASHINFO info;
12264 int main()
12265 {
12266         info.hash = hash_cb;
12267 }
12268 #endif
12269 EOCP
12270         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12271                 if $contains warning try.out >>/dev/null 2>&1 ; then
12272                         db_hashtype='int'
12273                 else
12274                         db_hashtype='u_int32_t'
12275                 fi
12276         else
12277                 : XXX Maybe we should just give up here.
12278                 db_hashtype=u_int32_t
12279                 $cat try.out >&4
12280                 echo "Help:  I can't seem to compile the db test program." >&4
12281                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12282         fi
12283         $rm -f try.*
12284         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12285         ;;
12286 *)      db_hashtype=u_int32_t
12287         ;;
12288 esac
12289 case "$i_db" in
12290 define)
12291         : Check the return type needed for prefix 
12292         echo " "
12293         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12294         cat >try.c <<EOCP
12295 #$d_const HASCONST
12296 #ifndef HASCONST
12297 #define const
12298 #endif
12299 #include <sys/types.h>
12300 #include <db.h>
12301
12302 #ifndef DB_VERSION_MAJOR
12303 size_t prefix_cb (key1, key2)
12304 const DBT *key1;
12305 const DBT *key2;
12306 {
12307 }
12308 BTREEINFO info;
12309 int main()
12310 {
12311         info.prefix = prefix_cb;
12312 }
12313 #endif
12314 EOCP
12315         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12316                 if $contains warning try.out >>/dev/null 2>&1 ; then
12317                         db_prefixtype='int'
12318                 else
12319                         db_prefixtype='size_t'
12320                 fi
12321         else
12322                 db_prefixtype='size_t'
12323                 : XXX Maybe we should just give up here.
12324                 $cat try.out >&4
12325                 echo "Help:  I can't seem to compile the db test program." >&4
12326                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12327         fi
12328         $rm -f try.*
12329         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12330         ;;
12331 *)      db_prefixtype='size_t'
12332         ;;
12333 esac
12334
12335 : check for void type
12336 echo " "
12337 echo "Checking to see how well your C compiler groks the void type..." >&4
12338 case "$voidflags" in
12339 '')
12340         $cat >try.c <<'EOCP'
12341 #if TRY & 1
12342 void sub() {
12343 #else
12344 sub() {
12345 #endif
12346         extern void moo();      /* function returning void */
12347         void (*goo)();          /* ptr to func returning void */
12348 #if TRY & 8
12349         void *hue;              /* generic ptr */
12350 #endif
12351 #if TRY & 2
12352         void (*foo[10])();
12353 #endif
12354
12355 #if TRY & 4
12356         if(goo == moo) {
12357                 exit(0);
12358         }
12359 #endif
12360         exit(0);
12361 }
12362 int main() { sub(); }
12363 EOCP
12364         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12365                 voidflags=$defvoidused
12366         echo "Good.  It appears to support void to the level $package wants.">&4
12367                 if $contains warning .out >/dev/null 2>&1; then
12368                         echo "However, you might get some warnings that look like this:"
12369                         $cat .out
12370                 fi
12371         else
12372 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12373                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12374                         echo "It supports 1..."
12375                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12376                                 echo "It also supports 2..."
12377                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12378                                         voidflags=7
12379                                         echo "And it supports 4 but not 8 definitely."
12380                                 else
12381                                         echo "It doesn't support 4..."
12382                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12383                                                 voidflags=11
12384                                                 echo "But it supports 8."
12385                                         else
12386                                                 voidflags=3
12387                                                 echo "Neither does it support 8."
12388                                         fi
12389                                 fi
12390                         else
12391                                 echo "It does not support 2..."
12392                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12393                                         voidflags=13
12394                                         echo "But it supports 4 and 8."
12395                                 else
12396                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12397                                                 voidflags=5
12398                                                 echo "And it supports 4 but has not heard about 8."
12399                                         else
12400                                                 echo "However it supports 8 but not 4."
12401                                         fi
12402                                 fi
12403                         fi
12404                 else
12405                         echo "There is no support at all for void."
12406                         voidflags=0
12407                 fi
12408         fi
12409 esac
12410 case "$voidflags" in
12411 "$defvoidused") ;;
12412 *)      $cat >&4 <<'EOM'
12413   Support flag bits are:
12414     1: basic void declarations.
12415     2: arrays of pointers to functions returning void.
12416     4: operations between pointers to and addresses of void functions.
12417     8: generic void pointers.
12418 EOM
12419         dflt="$voidflags";
12420         rp="Your void support flags add up to what?"
12421         . ./myread
12422         voidflags="$ans"
12423         ;;
12424 esac
12425 $rm -f try.* .out
12426
12427
12428 : How can we generate normalized random numbers ?
12429 echo " "
12430 echo "Looking for a random number function..." >&4
12431 case "$randfunc" in
12432 '')
12433         if set drand48 val -f; eval $csym; $val; then
12434                 dflt="drand48"
12435                 echo "Good, found drand48()." >&4
12436         elif set random val -f; eval $csym; $val; then
12437                 dflt="random"
12438                 echo "OK, found random()." >&4
12439         else
12440                 dflt="rand"
12441                 echo "Yick, looks like I have to use rand()." >&4
12442         fi
12443         echo " "
12444         ;;
12445 *)
12446         dflt="$randfunc"
12447         ;;
12448 esac
12449 cont=true
12450
12451 case "$ccflags" in
12452 *-Dmy_rand=*|*-Dmy_srand=*)
12453         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12454         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12455         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12456         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12457         ;;
12458 esac
12459
12460 while $test "$cont"; do
12461         rp="Use which function to generate random numbers?"
12462         . ./myread
12463         if $test "$ans" = "$dflt"; then
12464                 : null
12465         else
12466                 randbits=''
12467         fi
12468         randfunc="$ans"
12469         if set $ans val -f; eval $csym; $val; then
12470                 cont=''
12471         else
12472                 dflt=y
12473                 rp="I cannot find function $ans. Use that name anyway?"
12474                 . ./myread
12475                 dflt=rand
12476                 case "$ans" in
12477                         [yY]*) cont='';;
12478                 esac
12479         fi
12480         case "$cont" in
12481         '')
12482                 case "$randfunc" in
12483                 drand48)
12484                         drand01="drand48()"
12485                         seedfunc="srand48"
12486                         randbits=48
12487                         randseedtype=long
12488                         ;;
12489                 rand|random)
12490                         case "$randbits" in
12491                         '')
12492 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12493                                 $cat >try.c <<EOCP
12494 #$i_unistd I_UNISTD
12495 #$i_stdlib I_STDLIB
12496 #include <stdio.h>
12497 #ifdef I_UNISTD
12498 #  include <unistd.h>
12499 #endif
12500 #ifdef I_STDLIB
12501 #  include <stdlib.h>
12502 #endif
12503 int main()
12504 {
12505         register int i;
12506         register unsigned long tmp;
12507         register unsigned long max = 0L;
12508
12509         for (i = 1000; i; i--) {
12510                 tmp = (unsigned long) $randfunc();
12511                 if (tmp > max) max = tmp;
12512         }
12513         for (i = 0; max; i++)
12514                 max /= 2;
12515         printf("%d\n",i);
12516 }
12517 EOCP
12518                                 set try
12519                                 if eval $compile_ok; then
12520                                         dflt=`try`
12521                                 else
12522                                         dflt='?'
12523                                         echo "(I can't seem to compile the test program...)"
12524                                 fi
12525                                 ;;
12526                         *)
12527                                 dflt="$randbits"
12528                                 ;;
12529                         esac
12530                         rp="How many bits does your $randfunc() function produce?"
12531                         . ./myread
12532                         randbits="$ans"
12533                         $rm -f try.c try
12534                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12535                         seedfunc="s$randfunc"
12536                         randseedtype=unsigned
12537                         ;;
12538                 *)
12539                         dflt="31"
12540                         rp="How many bits does your $randfunc() function produce?"
12541                         . ./myread
12542                         randbits="$ans"
12543                         seedfunc="s$randfunc"
12544                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12545                         if set $seedfunc val -f; eval $csym; $val; then
12546                                 echo "(Using $seedfunc() to seed random generator)"
12547                         else
12548                                 echo "(Warning: no $seedfunc() to seed random generator)"
12549                                 seedfunc=rand
12550                         fi
12551                         randseedtype=unsigned
12552                         ;;
12553                 esac
12554                 ;;
12555         esac
12556 done
12557
12558 echo " "
12559 echo "Determining whether or not we are on an EBCDIC system..." >&4
12560 $cat >tebcdic.c <<'EOM'
12561 int main()
12562 {
12563   if ('M'==0xd4) return 0;
12564   return 1;
12565 }
12566 EOM
12567
12568 val=$undef
12569 set tebcdic
12570 if eval $compile_ok; then
12571         if ./tebcdic; then
12572                 echo "You seem to speak EBCDIC." >&4
12573                 val="$define"
12574         else
12575                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12576         fi
12577 else
12578         echo "I'm unable to compile the test program." >&4
12579         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12580 fi
12581 $rm -f tebcdic.c tebcdic
12582 set ebcdic
12583 eval $setvar
12584
12585 echo " "
12586 $cat >&4 <<EOM
12587 Checking how to flush all pending stdio output...
12588 EOM
12589 # I only know how to find the first 32 possibly open files on SunOS.
12590 # See also hints/sunos_4_1.sh and util.c  --AD
12591 case "$osname" in
12592 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12593 esac
12594 $cat >>try.c <<EOCP
12595 #include <stdio.h>
12596 #$i_unistd I_UNISTD
12597 #ifdef I_UNISTD
12598 # include <unistd.h>
12599 #endif
12600 #$d_sysconf HAS_SYSCONF
12601 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12602 #ifdef HAS_STDIO_STREAM_ARRAY
12603 # define STDIO_STREAM_ARRAY $stdio_stream_array
12604 #endif
12605 int main() {
12606   FILE* p = fopen("try.out", "w");
12607 #ifdef TRY_FPUTC
12608   fputc('x', p);
12609 #else
12610 # ifdef TRY_FPRINTF
12611   fprintf(p, "x");
12612 # endif
12613 #endif
12614 #ifdef TRY_FFLUSH_NULL
12615   fflush(NULL);
12616 #endif
12617 #ifdef TRY_FFLUSH_ALL
12618   {
12619     long open_max = -1;
12620 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12621     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12622 # else
12623 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12624     open_max = sysconf(_SC_OPEN_MAX);
12625 #  else
12626 #   ifdef FOPEN_MAX
12627     open_max = FOPEN_MAX;
12628 #   else
12629 #    ifdef OPEN_MAX
12630     open_max = OPEN_MAX;
12631 #    else
12632 #     ifdef _NFILE
12633     open_max = _NFILE;
12634 #     endif
12635 #    endif
12636 #   endif
12637 #  endif
12638 # endif 
12639 # ifdef HAS_STDIO_STREAM_ARRAY
12640     if (open_max > 0) {
12641       long i;
12642       for (i = 0; i < open_max; i++)
12643             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12644                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12645                 STDIO_STREAM_ARRAY[i]._flag)
12646                 fflush(&STDIO_STREAM_ARRAY[i]);
12647     }   
12648   }
12649 # endif
12650 #endif
12651   _exit(42);
12652 }
12653 EOCP
12654 : first we have to find out how _not_ to flush
12655 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12656     output=''
12657     set try -DTRY_FPUTC
12658     if eval $compile; then
12659             $rm -f try.out
12660             ./try$exe_ext 2>/dev/null
12661             if $test ! -s try.out -a "X$?" = X42; then
12662                 output=-DTRY_FPUTC
12663             fi
12664     fi
12665     case "$output" in
12666     '')
12667             set try -DTRY_FPRINTF
12668             $rm -f try.out
12669             if eval $compile; then
12670                     $rm -f try.out
12671                     ./try$exe_ext 2>/dev/null
12672                     if $test ! -s try.out -a "X$?" = X42; then
12673                         output=-DTRY_FPRINTF
12674                     fi
12675             fi
12676         ;;
12677     esac
12678 fi
12679 : check for fflush NULL behaviour
12680 case "$fflushNULL" in
12681 '')     set try -DTRY_FFLUSH_NULL $output
12682         if eval $compile; then
12683                 $rm -f try.out
12684                 ./try$exe_ext 2>/dev/null
12685                 code="$?"
12686                 if $test -s try.out -a "X$code" = X42; then
12687                         fflushNULL="`$cat try.out`"
12688                 else
12689                         if $test "X$code" != X42; then
12690                                 $cat >&4 <<EOM
12691 (If this test failed, don't worry, we'll try another method shortly.)
12692 EOM
12693                         fi
12694                 fi
12695         fi
12696         $rm -f core try.core core.try.*
12697         case "$fflushNULL" in
12698         x)      $cat >&4 <<EOM
12699 Your fflush(NULL) works okay for output streams.
12700 Let's see if it clobbers input pipes...
12701 EOM
12702 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12703 # bug that improperly flushes the input end of pipes.  So we avoid the
12704 # autoflush on fork/system/exec support for now. :-(
12705 $cat >tryp.c <<EOCP
12706 #include <stdio.h>
12707 int
12708 main(int argc, char **argv)
12709 {
12710     char buf[1024];
12711     int i;
12712     char *bp = buf;
12713     while (1) {
12714         while ((i = getc(stdin)) != -1
12715                && (*bp++ = i) != '\n'
12716                && bp < &buf[1024])
12717         /* DO NOTHING */ ;
12718         *bp = '\0';
12719         fprintf(stdout, "%s", buf);
12720         fflush(NULL);
12721         if (i == -1)
12722             return 0;
12723         bp = buf;
12724     }
12725 }
12726 EOCP
12727                 fflushNULL="$define"
12728                 set tryp
12729                 if eval $compile; then
12730                     $rm -f tryp.out
12731                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12732                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12733                        $cat >&4 <<EOM
12734 fflush(NULL) seems to behave okay with input streams.
12735 EOM
12736                         fflushNULL="$define"
12737                     else
12738                         $cat >&4 <<EOM
12739 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12740 EOM
12741                         fflushNULL="$undef"
12742                     fi
12743                 fi
12744                 $rm -f core tryp.c tryp.core core.tryp.*
12745                 ;;
12746         '')     $cat >&4 <<EOM
12747 Your fflush(NULL) isn't working (contrary to ANSI C).
12748 EOM
12749                 fflushNULL="$undef"
12750                 ;;
12751         *)      $cat >&4 <<EOM
12752 Cannot figure out whether your fflush(NULL) works or not.
12753 I'm assuming it doesn't (contrary to ANSI C).
12754 EOM
12755                 fflushNULL="$undef"
12756                 ;;
12757         esac
12758         ;;
12759 $define|true|[yY]*)
12760         fflushNULL="$define"
12761         ;;
12762 *)
12763         fflushNULL="$undef"
12764         ;;
12765 esac
12766 : check explicit looping only if NULL did not work, and if the pipe
12767 : bug does not show up on an explicit flush too
12768 case "$fflushNULL" in
12769 "$undef")
12770         $cat >tryp.c <<EOCP
12771 #include <stdio.h>
12772 int
12773 main(int argc, char **argv)
12774 {
12775     char buf[1024];
12776     int i;
12777     char *bp = buf;
12778     while (1) {
12779         while ((i = getc(stdin)) != -1
12780                && (*bp++ = i) != '\n'
12781                && bp < &buf[1024])
12782         /* DO NOTHING */ ;
12783         *bp = '\0';
12784         fprintf(stdout, "%s", buf);
12785         fflush(stdin);
12786         if (i == -1)
12787             return 0;
12788         bp = buf;
12789     }
12790 }
12791 EOCP
12792         set tryp
12793         if eval $compile; then
12794             $rm -f tryp.out
12795             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12796             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12797                $cat >&4 <<EOM
12798 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12799 EOM
12800                 : now check for fflushall behaviour
12801                 case "$fflushall" in
12802                 '')     set try -DTRY_FFLUSH_ALL $output
12803                         if eval $compile; then
12804                                 $cat >&4 <<EOM
12805 (Now testing the other method--but note that this also may fail.)
12806 EOM
12807                                 $rm -f try.out
12808                                 ./try$exe_ext 2>/dev/null
12809                                 if $test -s try.out -a "X$?" = X42; then
12810                                         fflushall="`$cat try.out`"
12811                                 fi
12812                         fi
12813                         $rm -f core try.core core.try.*
12814                         case "$fflushall" in
12815                         x)      $cat >&4 <<EOM
12816 Whew. Flushing explicitly all the stdio streams works.
12817 EOM
12818                                 fflushall="$define"
12819                                 ;;
12820                         '')     $cat >&4 <<EOM
12821 Sigh. Flushing explicitly all the stdio streams doesn't work.
12822 EOM
12823                                 fflushall="$undef"
12824                                 ;;
12825                         *)      $cat >&4 <<EOM
12826 Cannot figure out whether flushing stdio streams explicitly works or not.
12827 I'm assuming it doesn't.
12828 EOM
12829                                 fflushall="$undef"
12830                                 ;;
12831                         esac
12832                         ;;
12833                 "$define"|true|[yY]*)
12834                         fflushall="$define"
12835                         ;;
12836                 *)
12837                         fflushall="$undef"
12838                         ;;
12839                 esac
12840             else
12841                 $cat >&4 <<EOM
12842 All is futile.  Even fflush(stdin) clobbers input pipes!
12843 EOM
12844                 fflushall="$undef"
12845             fi
12846         else
12847             fflushall="$undef"
12848         fi
12849         $rm -f core tryp.c tryp.core core.tryp.*
12850         ;;
12851 *)      fflushall="$undef"
12852         ;;
12853 esac
12854
12855 case "$fflushNULL$fflushall" in
12856 undefundef)
12857         $cat <<EOM
12858 OK, I give up.  I cannot figure out how to flush pending stdio output.
12859 We won't be flushing handles at all before fork/exec/popen.
12860 EOM
12861         ;;
12862 esac
12863 $rm -f try.* try$exe_ext
12864
12865 : Store the full pathname to the ar program for use in the C program
12866 : Respect a hint or command line value for full_ar.
12867 case "$full_ar" in
12868 '') full_ar=$ar ;;
12869 esac
12870
12871 : Store the full pathname to the sed program for use in the C program
12872 full_sed=$sed
12873
12874 : see what type gids are declared as in the kernel
12875 echo " "
12876 echo "Looking for the type for group ids returned by getgid()."
12877 set gid_t gidtype xxx stdio.h sys/types.h
12878 eval $typedef
12879 case "$gidtype" in
12880 xxx)
12881         xxx=`./findhdr sys/user.h`
12882         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12883         case $1 in
12884         unsigned) dflt="$1 $2" ;;
12885         *) dflt="$1" ;;
12886         esac
12887         ;;
12888 *) dflt="$gidtype";;
12889 esac
12890 case "$gidtype" in
12891 gid_t) echo "gid_t found." ;;
12892 *)      rp="What is the type for group ids returned by getgid()?"
12893         . ./myread
12894         gidtype="$ans"
12895         ;;
12896 esac
12897
12898 echo " "
12899 case "$gidtype" in
12900 *_t) zzz="$gidtype"     ;;
12901 *)   zzz="gid"          ;;
12902 esac
12903 echo "Checking the size of $zzz..." >&4 
12904 cat > try.c <<EOCP
12905 #include <sys/types.h>
12906 #include <stdio.h>
12907 int main() {
12908     printf("%d\n", (int)sizeof($gidtype));
12909     exit(0);
12910 }
12911 EOCP
12912 set try
12913 if eval $compile_ok; then
12914         yyy=`./try`
12915         case "$yyy" in
12916         '')     gidsize=4
12917                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12918                 ;;
12919         *)      gidsize=$yyy
12920                 echo "Your $zzz is $gidsize bytes long."
12921                 ;;
12922         esac
12923 else
12924         gidsize=4
12925         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12926 fi
12927
12928
12929 echo " "
12930 case "$gidtype" in
12931 *_t) zzz="$gidtype"     ;;
12932 *)   zzz="gid"          ;;
12933 esac
12934 echo "Checking the sign of $zzz..." >&4 
12935 cat > try.c <<EOCP
12936 #include <sys/types.h>
12937 #include <stdio.h>
12938 int main() {
12939         $gidtype foo = -1;
12940         if (foo < 0)
12941                 printf("-1\n");
12942         else
12943                 printf("1\n");
12944 }
12945 EOCP
12946 set try
12947 if eval $compile; then
12948         yyy=`./try`
12949         case "$yyy" in
12950         '')     gidsign=1
12951                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12952                 ;;
12953         *)      gidsign=$yyy
12954                 case "$gidsign" in
12955                  1) echo "Your $zzz is unsigned." ;;
12956                 -1) echo "Your $zzz is signed."   ;;
12957                 esac
12958                 ;;
12959         esac
12960 else
12961         gidsign=1
12962         echo "(I can't compile the test program--guessing unsigned.)" >&4
12963 fi
12964
12965
12966 echo " "
12967
12968 if $test X"$quadtype" != X; then
12969
12970 echo "Checking how to print 64-bit integers..." >&4
12971
12972 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12973         $cat >try.c <<'EOCP'
12974 #include <sys/types.h>
12975 #include <stdio.h>
12976 int main() {
12977   int q = 12345678901;
12978   printf("%ld\n", q);
12979 }
12980 EOCP
12981         set try
12982         if eval $compile; then
12983                 yyy=`./try$exe_ext`
12984                 case "$yyy" in
12985                 12345678901)
12986                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12987                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
12988                         echo "We will use %d."
12989                         ;;
12990                 esac
12991         fi
12992 fi
12993
12994 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12995         $cat >try.c <<'EOCP'
12996 #include <sys/types.h>
12997 #include <stdio.h>
12998 int main() {
12999   long q = 12345678901;
13000   printf("%ld\n", q);
13001 }
13002 EOCP
13003         set try
13004         if eval $compile; then
13005                 yyy=`./try$exe_ext`
13006                 case "$yyy" in
13007                 12345678901)
13008                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13009                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13010                         echo "We will use %ld."
13011                         ;;
13012                 esac
13013         fi
13014 fi
13015
13016 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13017         $cat >try.c <<'EOCP'
13018 #include <sys/types.h>
13019 #include <inttypes.h>
13020 #include <stdio.h>
13021 int main() {
13022   int64_t q = 12345678901;
13023   printf("%" PRId64 "\n", q);
13024 }
13025 EOCP
13026         set try
13027         if eval $compile; then
13028                 yyy=`./try$exe_ext`
13029                 case "$yyy" in
13030                 12345678901)
13031                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13032                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13033                         echo "We will use the C9X style."
13034                         ;;
13035                 esac
13036         fi
13037 fi
13038
13039 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13040         $cat >try.c <<'EOCP'
13041 #include <sys/types.h>
13042 #include <stdio.h>
13043 int main() {
13044   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13045   printf("%lld\n", q);
13046 }
13047 EOCP
13048         set try
13049         if eval $compile; then
13050                 yyy=`./try$exe_ext`
13051                 case "$yyy" in
13052                 12345678901)
13053                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13054                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13055                         echo "We will use the %lld style."
13056                         ;;
13057                 esac
13058         fi
13059 fi
13060
13061 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13062         $cat >try.c <<EOCP
13063 #include <sys/types.h>
13064 #include <stdio.h>
13065 int main() {
13066   $quadtype q = 12345678901;
13067   printf("%Ld\n", q);
13068 }
13069 EOCP
13070         set try
13071         if eval $compile; then
13072                 yyy=`./try$exe_ext`
13073                 case "$yyy" in
13074                 12345678901)
13075                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13076                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13077                         echo "We will use %Ld."
13078                         ;;
13079                 esac
13080         fi
13081 fi
13082
13083 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13084         $cat >try.c <<EOCP
13085 #include <sys/types.h>
13086 #include <stdio.h>
13087 int main() {
13088   $quadtype q = 12345678901;
13089   printf("%qd\n", q);
13090 }
13091 EOCP
13092         set try
13093         if eval $compile; then
13094                 yyy=`./try$exe_ext`
13095                 case "$yyy" in
13096                 12345678901)
13097                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13098                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13099                         echo "We will use %qd."
13100                         ;;
13101                 esac
13102         fi
13103 fi
13104
13105 if $test X"$sPRId64" = X; then
13106         echo "Cannot figure out how to print 64-bit integers." >&4
13107 fi
13108
13109 $rm -f try try.*
13110
13111 fi
13112
13113 case "$sPRId64" in
13114 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13115         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13116         ;;
13117 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13118         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13119         ;;
13120 esac
13121
13122
13123 echo " "
13124 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13125
13126 if $test X"$ivsize" = X8; then
13127         ivdformat="$sPRId64"
13128         uvuformat="$sPRIu64"
13129         uvoformat="$sPRIo64"
13130         uvxformat="$sPRIx64"
13131         uvXUformat="$sPRIXU64"
13132 else
13133         if $test X"$ivsize" = X"$longsize"; then
13134                 ivdformat='"ld"'
13135                 uvuformat='"lu"'
13136                 uvoformat='"lo"'
13137                 uvxformat='"lx"'
13138                 uvXUformat='"lX"'
13139         else
13140                 if $test X"$ivsize" = X"$intsize"; then
13141                         ivdformat='"d"'
13142                         uvuformat='"u"'
13143                         uvoformat='"o"'
13144                         uvxformat='"x"'
13145                         uvXUformat='"X"'
13146                 else
13147                         : far out
13148                         if $test X"$ivsize" = X"$shortsize"; then
13149                                 ivdformat='"hd"'
13150                                 uvuformat='"hu"'
13151                                 uvoformat='"ho"'
13152                                 uvxformat='"hx"'
13153                                 uvXUformat='"hX"'
13154                         fi
13155                 fi
13156         fi
13157 fi
13158
13159 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13160         nveformat="$sPRIeldbl"
13161         nvfformat="$sPRIfldbl"
13162         nvgformat="$sPRIgldbl"
13163         nvEUformat="$sPRIEUldbl"
13164         nvFUformat="$sPRIFUldbl"
13165         nvGUformat="$sPRIGUldbl"
13166 else
13167         nveformat='"e"'
13168         nvfformat='"f"'
13169         nvgformat='"g"'
13170         nvEUformat='"E"'
13171         nvFUformat='"F"'
13172         nvGUformat='"G"'
13173 fi
13174
13175 case "$ivdformat" in
13176 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13177     exit 1
13178     ;;
13179 esac
13180
13181
13182 echo " "
13183 $echo "Checking the format string to be used for gids..." >&4
13184
13185 case "$gidsign" in
13186 -1)     if $test X"$gidsize" = X"$ivsize"; then
13187                 gidformat="$ivdformat"
13188         else
13189                 if $test X"$gidsize" = X"$longsize"; then
13190                         gidformat='"ld"'
13191                 else
13192                         if $test X"$gidsize" = X"$intsize"; then
13193                                 gidformat='"d"'
13194                         else
13195                                 if $test X"$gidsize" = X"$shortsize"; then
13196                                         gidformat='"hd"'
13197                                 fi
13198                         fi
13199                 fi
13200         fi
13201         ;;
13202 *)      if $test X"$gidsize" = X"$uvsize"; then
13203                 gidformat="$uvuformat"
13204         else
13205                 if $test X"$gidsize" = X"$longsize"; then
13206                         gidformat='"lu"'
13207                 else
13208                         if $test X"$gidsize" = X"$intsize"; then
13209                                 gidformat='"u"'
13210                         else
13211                                 if $test X"$gidsize" = X"$shortsize"; then
13212                                         gidformat='"hu"'
13213                                 fi
13214                         fi
13215                 fi
13216         fi
13217         ;;
13218 esac
13219
13220 : see if getgroups exists
13221 set getgroups d_getgrps
13222 eval $inlibc
13223
13224 : see if setgroups exists
13225 set setgroups d_setgrps
13226 eval $inlibc
13227
13228
13229 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13230 echo " "
13231 case "$d_getgrps$d_setgrps" in
13232 *define*)
13233         case "$groupstype" in
13234         '') dflt="$gidtype" ;;
13235         *)  dflt="$groupstype" ;;
13236         esac
13237         $cat <<EOM
13238 What type of pointer is the second argument to getgroups() and setgroups()?
13239 Usually this is the same as group ids, $gidtype, but not always.
13240
13241 EOM
13242         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13243         . ./myread
13244         groupstype="$ans"
13245         ;;
13246 *)  groupstype="$gidtype";;
13247 esac
13248
13249 echo " "
13250 echo "Checking if your $make program sets \$(MAKE)..." >&4
13251 case "$make_set_make" in
13252 '')
13253         $sed 's/^X //' > testmake.mak << 'EOF'
13254 Xall:
13255 X       @echo 'maketemp="$(MAKE)"'
13256 EOF
13257         case "`$make -f testmake.mak 2>/dev/null`" in
13258         *maketemp=*) make_set_make='#' ;;
13259         *)      make_set_make="MAKE=$make" ;;
13260         esac
13261         $rm -f testmake.mak
13262         ;;
13263 esac
13264 case "$make_set_make" in
13265 '#') echo "Yup, it does.";;
13266 *) echo "Nope, it doesn't.";;
13267 esac
13268
13269 : see what type is used for mode_t
13270 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13271 set mode_t modetype int stdio.h sys/types.h
13272 eval $typedef_ask
13273
13274 : define a fucntion to check prototypes
13275 $cat > protochk <<EOSH
13276 $startsh
13277 cc="$cc"
13278 optimize="$optimize"
13279 ccflags="$ccflags"
13280 prototype="$prototype"
13281 define="$define"
13282 rm=$rm
13283 EOSH
13284
13285 $cat >> protochk <<'EOSH'
13286
13287 $rm -f try.c
13288 foo="$1"
13289 shift
13290 while test $# -ge 2; do
13291         case "$1" in
13292                 $define) echo "#include <$2>" >> try.c ;;
13293                 literal) echo "$2" >> try.c ;;
13294         esac
13295     shift 2
13296 done
13297 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13298 cat >> try.c <<'EOCP'
13299 #ifdef CAN_PROTOTYPE
13300 #define _(args) args
13301 #else
13302 #define _(args) ()
13303 #endif
13304 EOCP
13305 echo "$foo" >> try.c
13306 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13307 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13308 status=$?
13309 $rm -f try.[co]
13310 exit $status
13311 EOSH
13312 chmod +x protochk
13313 $eunicefix protochk
13314
13315 : see what type is used for size_t
13316 rp="What is the type used for the length parameter for string functions?"
13317 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13318 eval $typedef_ask
13319
13320 : check for type of arguments to gethostbyaddr. 
13321 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13322         case "$d_gethbyaddr" in
13323         $define)
13324                 $cat <<EOM
13325
13326 Checking to see what type of arguments are accepted by gethostbyaddr().
13327 EOM
13328                 hdrs="$define sys/types.h
13329                         $d_socket sys/socket.h 
13330                         $i_niin netinet/in.h 
13331                         $i_netdb netdb.h
13332                         $i_unistd unistd.h"
13333                 : The first arg can 'char *' or 'void *'
13334                 : The second arg is some of integral type
13335                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13336                         for yyy in size_t long int; do
13337                                 case "$netdb_host_type" in
13338                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13339                                         if ./protochk "$try" $hdrs; then
13340                                                 echo "Your system accepts $xxx for the first arg."
13341                                                 echo "...and $yyy for the second arg."
13342                                                 netdb_host_type="$xxx"
13343                                                 netdb_hlen_type="$yyy"
13344                                         fi
13345                                         ;;
13346                                 esac
13347                         done
13348                 done
13349                 : In case none of those worked, prompt the user.
13350                 case "$netdb_host_type" in
13351                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13352                         dflt='char *'
13353                         . ./myread
13354                         netdb_host_type=$ans
13355                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13356                         dflt="$sizetype"
13357                         . ./myread
13358                         netdb_hlen_type=$ans
13359                         ;;
13360                 esac
13361                 ;;
13362         *)      : no gethostbyaddr, so pick harmless defaults
13363                 netdb_host_type='char *'
13364                 netdb_hlen_type="$sizetype"
13365                 ;;
13366         esac
13367         # Remove the "const" if needed. -- but then we'll have a 
13368         # prototype clash!
13369         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13370 fi
13371
13372 : check for type of argument to gethostbyname. 
13373 if test "X$netdb_name_type" = X ; then
13374         case "$d_gethbyname" in
13375         $define)
13376                 $cat <<EOM
13377
13378 Checking to see what type of argument is accepted by gethostbyname().
13379 EOM
13380                 hdrs="$define sys/types.h
13381                         $d_socket sys/socket.h 
13382                         $i_niin netinet/in.h 
13383                         $i_netdb netdb.h
13384                         $i_unistd unistd.h"
13385                 for xxx in "const char *" "char *"; do
13386                         case "$netdb_name_type" in
13387                         '')     try="extern struct hostent *gethostbyname($xxx);"
13388                                 if ./protochk "$try" $hdrs; then
13389                                         echo "Your system accepts $xxx."
13390                                         netdb_name_type="$xxx"
13391                                 fi
13392                                 ;;
13393                         esac
13394                 done
13395                 : In case none of those worked, prompt the user.
13396                 case "$netdb_name_type" in
13397                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13398                         dflt='char *'
13399                         . ./myread
13400                         netdb_name_type=$ans
13401                         ;;
13402                 esac
13403                 ;;
13404         *)      : no gethostbyname, so pick harmless default
13405                 netdb_name_type='char *'
13406                 ;;
13407         esac
13408 fi
13409
13410 : check for type of 1st argument to getnetbyaddr. 
13411 if test "X$netdb_net_type" = X ; then
13412         case "$d_getnbyaddr" in
13413         $define)
13414                 $cat <<EOM
13415
13416 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13417 EOM
13418                 hdrs="$define sys/types.h
13419                         $d_socket sys/socket.h 
13420                         $i_niin netinet/in.h 
13421                         $i_netdb netdb.h
13422                         $i_unistd unistd.h"
13423                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13424                         case "$netdb_net_type" in
13425                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13426                                 if ./protochk "$try" $hdrs; then
13427                                         echo "Your system accepts $xxx."
13428                                         netdb_net_type="$xxx"
13429                                 fi
13430                                 ;;
13431                         esac
13432                 done
13433                 : In case none of those worked, prompt the user.
13434                 case "$netdb_net_type" in
13435                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13436                         dflt='long'
13437                         . ./myread
13438                         netdb_net_type=$ans
13439                         ;;
13440                 esac
13441                 ;;
13442         *)      : no getnetbyaddr, so pick harmless default
13443                 netdb_net_type='long'
13444                 ;;
13445         esac
13446 fi
13447 : locate the preferred pager for this system
13448 case "$pager" in
13449 '')
13450         dflt=''
13451         case "$pg" in
13452         /*) dflt=$pg;;
13453         [a-zA-Z]:/*) dflt=$pg;;
13454         esac
13455         case "$more" in
13456         /*) dflt=$more;;
13457         [a-zA-Z]:/*) dflt=$more;;
13458         esac
13459         case "$less" in
13460         /*) dflt=$less;;
13461         [a-zA-Z]:/*) dflt=$less;;
13462         esac
13463         case "$dflt" in
13464         '') dflt=/usr/ucb/more;;
13465         esac
13466         ;;
13467 *) dflt="$pager";;
13468 esac
13469 echo " "
13470 fn=f/
13471 rp='What pager is used on your system?'
13472 . ./getfile
13473 pager="$ans"
13474
13475 : see what type pids are declared as in the kernel
13476 rp="What is the type of process ids on this system?"
13477 set pid_t pidtype int stdio.h sys/types.h
13478 eval $typedef_ask
13479
13480 : Find earliest binary compatible site_perl subdirectory perl can use.
13481 case "$bincompat5005" in
13482 "$define") xs_apiversion='5.005' ;;
13483 *) xs_apiversion=$version ;;   # The current site_perl version.
13484 esac
13485 : Find earliest pure perl site_perl subdirectory perl can use.
13486 : The versioned directories started at 5.005.
13487 pm_apiversion='5.005'
13488
13489 : check for length of pointer
13490 echo " "
13491 case "$ptrsize" in
13492 '')
13493         echo "Checking to see how big your pointers are..." >&4
13494         if test "$voidflags" -gt 7; then
13495                 echo '#define VOID_PTR char *' > try.c
13496         else
13497                 echo '#define VOID_PTR void *' > try.c
13498         fi
13499         $cat >>try.c <<'EOCP'
13500 #include <stdio.h>
13501 int main()
13502 {
13503     printf("%d\n", (int)sizeof(VOID_PTR));
13504     exit(0);
13505 }
13506 EOCP
13507         set try
13508         if eval $compile_ok; then
13509                 ptrsize=`./try`
13510                 echo "Your pointers are $ptrsize bytes long."
13511         else
13512                 dflt='4'
13513                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13514                 rp="What is the size of a pointer (in bytes)?"
13515                 . ./myread
13516                 ptrsize="$ans"
13517         fi
13518         ;;
13519 esac
13520 $rm -f try.c try
13521
13522 : see if ar generates random libraries by itself
13523 echo " "
13524 echo "Checking how to generate random libraries on your machine..." >&4
13525 echo 'int bar1() { return bar2(); }' > bar1.c
13526 echo 'int bar2() { return 2; }' > bar2.c
13527 $cat > foo.c <<'EOP'
13528 int main() { printf("%d\n", bar1()); exit(0); }
13529 EOP
13530 $cc $ccflags -c bar1.c >/dev/null 2>&1
13531 $cc $ccflags -c bar2.c >/dev/null 2>&1
13532 $cc $ccflags -c foo.c >/dev/null 2>&1
13533 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13534 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13535         ./foobar >/dev/null 2>&1; then
13536         echo "$ar appears to generate random libraries itself."
13537         orderlib=false
13538         ranlib=":"
13539 elif $ar ts bar$_a >/dev/null 2>&1 &&
13540         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13541         ./foobar >/dev/null 2>&1; then
13542                 echo "a table of contents needs to be added with '$ar ts'."
13543                 orderlib=false
13544                 ranlib="$ar ts"
13545 else
13546         case "$ranlib" in
13547         :) ranlib='';;
13548         '')
13549                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13550                 $test -f $ranlib || ranlib=''
13551                 ;;
13552         esac
13553         if $test -n "$ranlib"; then
13554                 echo "your system has '$ranlib'; we'll use that."
13555                 orderlib=false
13556         else
13557                 echo "your system doesn't seem to support random libraries"
13558                 echo "so we'll use lorder and tsort to order the libraries."
13559                 orderlib=true
13560                 ranlib=":"
13561         fi
13562 fi
13563 $rm -f foo* bar* 
13564
13565 : check for type of arguments to select. 
13566 case "$selecttype" in
13567 '') case "$d_select" in
13568         $define)
13569                 echo " "
13570                 $cat <<EOM
13571 Checking to see what type of arguments are accepted by select().
13572 EOM
13573                 hdrs="$define sys/types.h
13574                         $i_systime sys/time.h 
13575                         $i_sysselct sys/select.h
13576                         $d_socket sys/socket.h"
13577                 : The first arg can be int, unsigned, or size_t
13578                 : The last arg may or may not be 'const'
13579                 val=''
13580                 : void pointer has been seen but using that
13581                 : breaks the selectminbits test
13582                 for xxx in 'fd_set *' 'int *'; do
13583                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13584                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13585                                         case "$val" in
13586                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13587                                                 if ./protochk "$try" $hdrs; then
13588                                                         echo "Your system accepts $xxx."
13589                                                         val="$xxx"
13590                                                 fi
13591                                                 ;;
13592                                         esac
13593                                 done
13594                         done
13595                 done
13596                 case "$val" in
13597                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13598                         case "$d_fd_set" in
13599                                 $define) dflt="fd_set *" ;;
13600                                 *)              dflt="int *" ;;
13601                         esac
13602                         . ./myread
13603                         val=$ans
13604                         ;;
13605                 esac
13606                 selecttype="$val"
13607                 ;;
13608         *)      : no select, so pick a harmless default
13609                 selecttype='int *'
13610                 ;;
13611         esac
13612         ;;
13613 esac
13614
13615 : check for the select 'width'
13616 case "$selectminbits" in
13617 '') case "$d_select" in
13618         $define)
13619                 $cat <<EOM
13620
13621 Checking to see on how many bits at a time your select() operates...
13622 EOM
13623                 $cat >try.c <<EOCP
13624 #include <sys/types.h>
13625 #$i_time I_TIME
13626 #$i_systime I_SYS_TIME
13627 #$i_systimek I_SYS_TIME_KERNEL
13628 #ifdef I_TIME
13629 #   include <time.h>
13630 #endif
13631 #ifdef I_SYS_TIME
13632 #   ifdef I_SYS_TIME_KERNEL
13633 #       define KERNEL
13634 #   endif
13635 #   include <sys/time.h>
13636 #   ifdef I_SYS_TIME_KERNEL
13637 #       undef KERNEL
13638 #   endif
13639 #endif
13640 #$i_sysselct I_SYS_SELECT
13641 #ifdef I_SYS_SELECT
13642 #include <sys/select.h>
13643 #endif
13644 #$d_socket HAS_SOCKET
13645 #ifdef HAS_SOCKET
13646 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13647 #endif
13648 #include <stdio.h>
13649 $selecttype b;
13650 #define S sizeof(*(b))
13651 #define MINBITS 64
13652 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13653 #define NBITS  (NBYTES * 8)
13654 int main() {
13655     char s[NBYTES];
13656     struct timeval t;
13657     int i;
13658     FILE* fp;
13659     int fd;
13660
13661     fclose(stdin);
13662     fp = fopen("try.c", "r");
13663     if (fp == 0)
13664       exit(1);
13665     fd = fileno(fp);
13666     if (fd < 0)
13667       exit(2);
13668     b = ($selecttype)s;
13669     for (i = 0; i < NBITS; i++)
13670         FD_SET(i, b);
13671     t.tv_sec  = 0;
13672     t.tv_usec = 0;
13673     select(fd + 1, b, 0, 0, &t);
13674     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13675     printf("%d\n", i + 1);
13676     return 0;
13677 }
13678 EOCP
13679                 set try
13680                 if eval $compile_ok; then
13681                         selectminbits=`./try`
13682                         case "$selectminbits" in
13683                         '')     cat >&4 <<EOM
13684 Cannot figure out on how many bits at a time your select() operates.
13685 I'll play safe and guess it is 32 bits.
13686 EOM
13687                                 selectminbits=32
13688                                 bits="32 bits"
13689                                 ;;
13690                         1)      bits="1 bit" ;;
13691                         *)      bits="$selectminbits bits" ;;
13692                         esac
13693                         echo "Your select() operates on $bits at a time." >&4
13694                 else
13695                         rp='What is the minimum number of bits your select() operates on?'
13696                         case "$byteorder" in
13697                         1234|12345678)  dflt=32 ;;
13698                         *)              dflt=1  ;;
13699                         esac
13700                         . ./myread
13701                         val=$ans
13702                         selectminbits="$val"
13703                 fi
13704                 $rm -f try.* try
13705                 ;;
13706         *)      : no select, so pick a harmless default
13707                 selectminbits='32'
13708                 ;;
13709         esac
13710         ;;
13711 esac
13712
13713 : Trace out the files included by signal.h, then look for SIGxxx names.
13714 : Remove SIGARRAYSIZE used by HPUX.
13715 : Remove SIGSTKSIZE used by Linux.
13716 : Remove SIGSTKSZ used by Posix.
13717 : Remove SIGTYP void lines used by OS2.
13718 : Some cpps, like os390, dont give the file name anywhere
13719 if [ "X$fieldn" = X ]; then
13720         : Just make some guesses.  We check them later.
13721         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13722 else
13723         xxx=`echo '#include <signal.h>' |
13724         $cppstdin $cppminus $cppflags 2>/dev/null |
13725         $grep '^[       ]*#.*include' | 
13726         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13727 fi
13728 : Check this list of files to be sure we have parsed the cpp output ok.
13729 : This will also avoid potentially non-existent files, such 
13730 : as ../foo/bar.h
13731 xxxfiles=''
13732 for xx in $xxx /dev/null ; do
13733         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13734 done
13735 : If we have found no files, at least try signal.h
13736 case "$xxxfiles" in
13737 '')     xxxfiles=`./findhdr signal.h` ;;
13738 esac
13739 xxx=`awk '
13740 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13741         print substr($2, 4, 20)
13742 }
13743 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13744         print substr($3, 4, 20)
13745 }' $xxxfiles`
13746 : Append some common names just in case the awk scan failed.
13747 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13748 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13749 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13750 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13751 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13752
13753 : generate a few handy files for later
13754 $cat > signal.c <<'EOCP'
13755 #include <sys/types.h>
13756 #include <signal.h>
13757 #include <stdio.h>
13758 int main() {
13759
13760 /* Strange style to avoid deeply-nested #if/#else/#endif */
13761 #ifndef NSIG
13762 #  ifdef _NSIG
13763 #    define NSIG (_NSIG)
13764 #  endif
13765 #endif
13766
13767 #ifndef NSIG
13768 #  ifdef SIGMAX
13769 #    define NSIG (SIGMAX+1)
13770 #  endif
13771 #endif
13772
13773 #ifndef NSIG
13774 #  ifdef SIG_MAX
13775 #    define NSIG (SIG_MAX+1)
13776 #  endif
13777 #endif
13778
13779 #ifndef NSIG
13780 #  ifdef MAXSIG
13781 #    define NSIG (MAXSIG+1)
13782 #  endif
13783 #endif
13784
13785 #ifndef NSIG
13786 #  ifdef MAX_SIG
13787 #    define NSIG (MAX_SIG+1)
13788 #  endif
13789 #endif
13790
13791 #ifndef NSIG
13792 #  ifdef SIGARRAYSIZE
13793 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13794 #  endif
13795 #endif
13796
13797 #ifndef NSIG
13798 #  ifdef _sys_nsig
13799 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13800 #  endif
13801 #endif
13802
13803 /* Default to some arbitrary number that's big enough to get most
13804    of the common signals.
13805 */
13806 #ifndef NSIG
13807 #    define NSIG 50
13808 #endif
13809
13810 printf("NSIG %d\n", NSIG);
13811
13812 #ifndef JUST_NSIG
13813
13814 EOCP
13815
13816 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13817 {
13818         printf "#ifdef SIG"; printf $1; printf "\n"
13819         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13820         printf $1; printf ");\n"
13821         printf "#endif\n"
13822 }
13823 END {
13824         printf "#endif /* JUST_NSIG */\n";
13825         printf "exit(0);\n}\n";
13826 }
13827 ' >>signal.c
13828 $cat >signal.awk <<'EOP'
13829 BEGIN { ndups = 0 }
13830 $1 ~ /^NSIG$/ { nsig = $2 }
13831 ($1 !~ /^NSIG$/) && (NF == 2) {
13832     if ($2 > maxsig) { maxsig = $2 }
13833     if (sig_name[$2]) {
13834         dup_name[ndups] = $1
13835         dup_num[ndups] = $2
13836         ndups++ 
13837     }
13838     else {
13839         sig_name[$2] = $1
13840         sig_num[$2] = $2
13841     }
13842 }
13843 END { 
13844     if (nsig == 0) {
13845         nsig = maxsig + 1
13846     }
13847     printf("NSIG %d\n", nsig);
13848     for (n = 1; n < nsig; n++) {
13849         if (sig_name[n]) {
13850             printf("%s %d\n", sig_name[n], sig_num[n])
13851         }
13852         else {
13853             printf("NUM%d %d\n", n, n) 
13854         }
13855     }
13856     for (n = 0; n < ndups; n++) {
13857         printf("%s %d\n", dup_name[n], dup_num[n])
13858     }
13859 }
13860 EOP
13861 $cat >signal_cmd <<EOS
13862 $startsh
13863 if $test -s signal.lst; then
13864     echo "Using your existing signal.lst file"
13865         exit 0
13866 fi
13867 xxx="$xxx"
13868 EOS
13869 $cat >>signal_cmd <<'EOS'
13870
13871 set signal
13872 if eval $compile_ok; then
13873         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13874 else
13875         echo "(I can't seem be able to compile the whole test program)" >&4
13876         echo "(I'll try it in little pieces.)" >&4
13877         set signal -DJUST_NSIG
13878         if eval $compile_ok; then
13879                 ./signal$_exe > signal.nsg
13880                 $cat signal.nsg
13881         else
13882                 echo "I can't seem to figure out how many signals you have." >&4
13883                 echo "Guessing 50." >&4
13884                 echo 'NSIG 50' > signal.nsg
13885         fi
13886         : Now look at all the signal names, one at a time.
13887         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13888                 $cat > signal.c <<EOCP
13889 #include <sys/types.h>
13890 #include <signal.h>
13891 #include <stdio.h>
13892 int main() {
13893 printf("$xx %d\n", SIG${xx});
13894 return 0;
13895 }
13896 EOCP
13897                 set signal
13898                 if eval $compile; then
13899                         echo "SIG${xx} found."
13900                         ./signal$_exe  >> signal.ls1
13901                 else
13902                         echo "SIG${xx} NOT found."
13903                 fi
13904         done
13905         if $test -s signal.ls1; then
13906                 $cat signal.nsg signal.ls1 |
13907                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13908         fi
13909
13910 fi
13911 if $test -s signal.lst; then
13912         :
13913 else
13914         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13915         echo 'kill -l' >signal
13916         set X `csh -f <signal`
13917         $rm -f signal
13918         shift
13919         case $# in
13920         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13921         esac
13922         echo $@ | $tr ' ' $trnl | \
13923             $awk '{ printf "%s %d\n", $1, ++s; }
13924                   END { printf "NSIG %d\n", ++s }' >signal.lst
13925 fi
13926 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13927 EOS
13928 chmod a+x signal_cmd
13929 $eunicefix signal_cmd
13930
13931 : generate list of signal names
13932 echo " "
13933 case "$sig_name_init" in
13934 '') doinit=yes ;;
13935 *)  case "$sig_num_init" in
13936     ''|*,*) doinit=yes ;;
13937     esac ;;
13938 esac
13939 case "$doinit" in
13940 yes)
13941         echo "Generating a list of signal names and numbers..." >&4
13942         . ./signal_cmd
13943         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13944         sig_name=`$awk 'BEGIN { printf "ZERO " }
13945                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13946         sig_num=`$awk  'BEGIN { printf "0 " }
13947                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13948         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13949                              !/^NSIG/   { printf "\"%s\", ", $1 }
13950                              END        { printf "0\n" }' signal.lst`
13951         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13952                              !/^NSIG/   { printf "%d, ", $2}
13953                              END        { printf "0\n"}' signal.lst`
13954         ;;
13955 esac
13956 echo "The following $sig_count signals are available:"
13957 echo " "
13958 echo $sig_name | $awk \
13959 'BEGIN { linelen = 0 }
13960 {
13961         for (i = 1; i <= NF; i++) {
13962                 name = "SIG" $i " "
13963                 linelen = linelen + length(name)
13964                 if (linelen > 70) {
13965                         printf "\n"
13966                         linelen = length(name)
13967                 }
13968                 printf "%s", name
13969         }
13970         printf "\n"
13971 }'
13972 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13973
13974 echo " "
13975 case "$sizetype" in
13976 *_t) zzz="$sizetype"    ;;
13977 *)   zzz="filesize"     ;;
13978 esac
13979 echo "Checking the size of $zzz..." >&4 
13980 cat > try.c <<EOCP
13981 #include <sys/types.h>
13982 #include <stdio.h>
13983 int main() {
13984     printf("%d\n", (int)sizeof($sizetype));
13985     exit(0);
13986 }
13987 EOCP
13988 set try
13989 if eval $compile_ok; then
13990         yyy=`./try`
13991         case "$yyy" in
13992         '')     sizesize=4
13993                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13994                 ;;
13995         *)      sizesize=$yyy
13996                 echo "Your $zzz size is $sizesize bytes."
13997                 ;;
13998         esac
13999 else
14000         sizesize=4
14001         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14002 fi
14003
14004
14005 : check for socklen_t
14006 echo " "
14007 echo "Checking to see if you have socklen_t..." >&4
14008 $cat >try.c <<EOCP
14009 #include <sys/types.h>
14010 #$d_socket HAS_SOCKET
14011 #ifdef HAS_SOCKET
14012 #include <sys/socket.h>
14013 #endif
14014 int main() { socklen_t x = 16; }
14015 EOCP
14016 set try
14017 if eval $compile; then
14018         val="$define"
14019         echo "You have socklen_t."
14020 else
14021         val="$undef"
14022         echo "You do not have socklen_t."
14023         case "$sizetype" in
14024         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14025         esac
14026 fi
14027 $rm -f try try.*
14028 set d_socklen_t
14029 eval $setvar
14030
14031 : check for type of the size argument to socket calls
14032 case "$d_socket" in
14033 "$define")
14034         $cat <<EOM
14035
14036 Checking to see what type is the last argument of accept().
14037 EOM
14038         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14039         yyy=''
14040         case "$d_socklen_t" in
14041         "$define") yyy="$yyy socklen_t"
14042         esac
14043         yyy="$yyy $sizetype int long unsigned"
14044         for xxx in $yyy; do
14045                 case "$socksizetype" in
14046                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14047                         if ./protochk "$try" $hdrs; then
14048                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14049                                 socksizetype="$xxx"
14050                         fi
14051                         ;;
14052                 esac
14053         done
14054 : In case none of those worked, prompt the user.
14055         case "$socksizetype" in
14056         '')     rp='What is the type for socket address structure sizes?'
14057                 dflt='int'
14058                 . ./myread
14059                 socksizetype=$ans
14060                 ;;
14061         esac
14062         ;;
14063 *)      : no sockets, so pick relatively harmless default
14064         socksizetype='int'
14065         ;;
14066 esac
14067
14068 : see what type is used for signed size_t
14069 set ssize_t ssizetype int stdio.h sys/types.h
14070 eval $typedef
14071 dflt="$ssizetype"
14072 $cat > ssize.c <<EOM
14073 #include <stdio.h>
14074 #include <sys/types.h>
14075 #define Size_t $sizetype
14076 #define SSize_t $dflt
14077 int main()
14078 {
14079         if (sizeof(Size_t) == sizeof(SSize_t))
14080                 printf("$dflt\n");
14081         else if (sizeof(Size_t) == sizeof(int))
14082                 printf("int\n");
14083         else 
14084                 printf("long\n");
14085         exit(0);
14086 }
14087 EOM
14088 echo " "
14089 set ssize
14090 if eval $compile_ok && ./ssize > /dev/null; then
14091         ssizetype=`./ssize`
14092         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14093 else
14094         $cat >&4 <<EOM
14095 Help! I can't compile and run the ssize_t test program: please enlighten me!
14096 (This is probably a misconfiguration in your system or libraries, and
14097 you really ought to fix it.  Still, I'll try anyway.)
14098
14099 I need a type that is the same size as $sizetype, but is guaranteed to
14100 be signed.  Common values are ssize_t, int and long.
14101
14102 EOM
14103         rp="What signed type is the same size as $sizetype?"
14104         . ./myread
14105         ssizetype="$ans"
14106 fi
14107 $rm -f ssize ssize.*
14108
14109 : see what type of char stdio uses.
14110 echo " "
14111 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14112         echo "Your stdio uses unsigned chars." >&4
14113         stdchar="unsigned char"
14114 else
14115         echo "Your stdio uses signed chars." >&4
14116         stdchar="char"
14117 fi
14118
14119 : see if time exists
14120 echo " "
14121 if test "X$d_time" = X -o X"$timetype" = X; then
14122     if set time val -f d_time; eval $csym; $val; then
14123                 echo 'time() found.' >&4
14124                 val="$define"
14125                 rp="What is the type returned by time() on this system?"
14126                 set time_t timetype long stdio.h sys/types.h
14127                 eval $typedef_ask
14128     else
14129                 echo 'time() not found, hope that will do.' >&4
14130                 val="$undef"
14131                 timetype='int';
14132     fi
14133     set d_time
14134     eval $setvar
14135 fi
14136
14137 : see what type uids are declared as in the kernel
14138 echo " "
14139 echo "Looking for the type for user ids returned by getuid()."
14140 set uid_t uidtype xxx stdio.h sys/types.h
14141 eval $typedef
14142 case "$uidtype" in
14143 xxx)
14144         xxx=`./findhdr sys/user.h`
14145         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14146         case $1 in
14147         unsigned) dflt="$1 $2" ;;
14148         *) dflt="$1" ;;
14149         esac
14150         ;;
14151 *) dflt="$uidtype";;
14152 esac
14153 case "$uidtype" in
14154 uid_t)  echo "uid_t found." ;;
14155 *)      rp="What is the type for user ids returned by getuid()?"
14156         . ./myread
14157         uidtype="$ans"
14158         ;;
14159 esac
14160
14161 echo " "
14162 case "$uidtype" in
14163 *_t) zzz="$uidtype"     ;;
14164 *)   zzz="uid"          ;;
14165 esac
14166 echo "Checking the size of $zzz..." >&4 
14167 cat > try.c <<EOCP
14168 #include <sys/types.h>
14169 #include <stdio.h>
14170 int main() {
14171     printf("%d\n", (int)sizeof($uidtype));
14172     exit(0);
14173 }
14174 EOCP
14175 set try
14176 if eval $compile_ok; then
14177         yyy=`./try`
14178         case "$yyy" in
14179         '')     uidsize=4
14180                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14181                 ;;
14182         *)      uidsize=$yyy
14183                 echo "Your $zzz is $uidsize bytes long."
14184                 ;;
14185         esac
14186 else
14187         uidsize=4
14188         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14189 fi
14190
14191 echo " "
14192 case "$uidtype" in
14193 *_t) zzz="$uidtype"     ;;
14194 *)   zzz="uid"          ;;
14195 esac
14196 echo "Checking the sign of $zzz..." >&4
14197 cat > try.c <<EOCP
14198 #include <sys/types.h>
14199 #include <stdio.h>
14200 int main() {
14201         $uidtype foo = -1;
14202         if (foo < 0)
14203                 printf("-1\n");
14204         else
14205                 printf("1\n");
14206 }
14207 EOCP
14208 set try
14209 if eval $compile; then
14210         yyy=`./try`
14211         case "$yyy" in
14212         '')     uidsign=1
14213                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14214                 ;;
14215         *)      uidsign=$yyy
14216                 case "$uidsign" in
14217                  1) echo "Your $zzz is unsigned." ;;
14218                 -1) echo "Your $zzz is signed."   ;;
14219                 esac
14220                 ;;
14221         esac
14222 else
14223         uidsign=1
14224         echo "(I can't compile the test program--guessing unsigned.)" >&4
14225 fi
14226
14227
14228
14229 echo " "
14230 $echo "Checking the format string to be used for uids..." >&4
14231
14232 case "$uidsign" in
14233 -1)     if $test X"$uidsize" = X"$ivsize"; then
14234                 uidformat="$ivdformat"
14235         else
14236                 if $test X"$uidsize" = X"$longsize"; then
14237                         uidformat='"ld"'
14238                 else
14239                         if $test X"$uidsize" = X"$intsize"; then
14240                                 uidformat='"d"'
14241                         else
14242                                 if $test X"$uidsize" = X"$shortsize"; then
14243                                         uidformat='"hd"'
14244                                 fi
14245                         fi
14246                 fi
14247         fi
14248         ;;
14249 *)      if $test X"$uidsize" = X"$uvsize"; then
14250                 uidformat="$uvuformat"
14251         else
14252                 if $test X"$uidsize" = X"$longsize"; then
14253                         uidformat='"lu"'
14254                 else
14255                         if $test X"$uidsize" = X"$intsize"; then
14256                                 uidformat='"u"'
14257                         else
14258                                 if $test X"$uidsize" = X"$shortsize"; then
14259                                         uidformat='"hu"'
14260                                 fi
14261                         fi
14262                 fi
14263         fi
14264         ;;
14265 esac
14266
14267 : see if dbm.h is available
14268 : see if dbmclose exists
14269 set dbmclose d_dbmclose
14270 eval $inlibc
14271
14272 case "$d_dbmclose" in
14273 $define)
14274         set dbm.h i_dbm
14275         eval $inhdr
14276         case "$i_dbm" in
14277         $define)
14278                 val="$undef"
14279                 set i_rpcsvcdbm
14280                 eval $setvar
14281                 ;;
14282         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14283                 eval $inhdr
14284                 ;;
14285         esac
14286         ;;
14287 *)      echo "We won't be including <dbm.h>"
14288         val="$undef"
14289         set i_dbm
14290         eval $setvar
14291         val="$undef"
14292         set i_rpcsvcdbm
14293         eval $setvar
14294         ;;
14295 esac
14296
14297 : see if this is a sys/file.h system
14298 val=''
14299 set sys/file.h val
14300 eval $inhdr
14301
14302 : do we need to include sys/file.h ?
14303 case "$val" in
14304 "$define")
14305         echo " "
14306         if $h_sysfile; then
14307                 val="$define"
14308                 echo "We'll be including <sys/file.h>." >&4
14309         else
14310                 val="$undef"
14311                 echo "We won't be including <sys/file.h>." >&4
14312         fi
14313         ;;
14314 *)
14315         h_sysfile=false
14316         ;;
14317 esac
14318 set i_sysfile
14319 eval $setvar
14320
14321 : see if fcntl.h is there
14322 val=''
14323 set fcntl.h val
14324 eval $inhdr
14325
14326 : see if we can include fcntl.h
14327 case "$val" in
14328 "$define")
14329         echo " "
14330         if $h_fcntl; then
14331                 val="$define"
14332                 echo "We'll be including <fcntl.h>." >&4
14333         else
14334                 val="$undef"
14335                 if $h_sysfile; then
14336         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14337                 else
14338                         echo "We won't be including <fcntl.h>." >&4
14339                 fi
14340         fi
14341         ;;
14342 *)
14343         h_fcntl=false
14344         val="$undef"
14345         ;;
14346 esac
14347 set i_fcntl
14348 eval $setvar
14349
14350 : see if this is a iconv.h system
14351 set iconv.h i_iconv
14352 eval $inhdr
14353
14354 : see if this is a ieeefp.h system
14355 set ieeefp.h i_ieeefp
14356 eval $inhdr
14357
14358 : see if this is a libutil.h system
14359 set libutil.h i_libutil
14360 eval $inhdr
14361
14362 : see if locale.h is available
14363 set locale.h i_locale
14364 eval $inhdr
14365
14366 : see if mach cthreads are available
14367 if test "X$usethreads" = "X$define"; then
14368         set mach/cthreads.h i_machcthr
14369         eval $inhdr
14370 else
14371         i_machcthr="$undef"
14372 fi
14373
14374
14375
14376 : see if this is a math.h system
14377 set math.h i_math
14378 eval $inhdr
14379
14380 : see if this is a mntent.h system
14381 set mntent.h i_mntent
14382 eval $inhdr
14383
14384 : see if ndbm.h is available
14385 set ndbm.h t_ndbm
14386 eval $inhdr
14387 case "$t_ndbm" in
14388 $define)
14389         : see if dbm_open exists
14390         set dbm_open d_dbm_open
14391         eval $inlibc
14392         case "$d_dbm_open" in
14393         $undef)
14394                 t_ndbm="$undef"
14395                 echo "We won't be including <ndbm.h>"
14396                 ;;
14397         esac
14398         ;;
14399 esac
14400 val="$t_ndbm"
14401 set i_ndbm
14402 eval $setvar
14403
14404 : see if net/errno.h is available
14405 val=''
14406 set net/errno.h val
14407 eval $inhdr
14408
14409 : Unfortunately, it causes problems on some systems.  Arrgh.
14410 case "$val" in
14411 $define)
14412         cat > try.c <<'EOM'
14413 #include <stdio.h>
14414 #include <errno.h>
14415 #include <net/errno.h>
14416 int func()
14417 {
14418         return ENOTSOCK;
14419 }
14420 EOM
14421         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14422                 echo "We'll be including <net/errno.h>." >&4
14423         else
14424                 echo "We won't be including <net/errno.h>." >&4
14425                 val="$undef"
14426         fi
14427         $rm -f try.* try
14428         ;;
14429 esac
14430 set i_neterrno
14431 eval $setvar
14432
14433 : see if netinet/tcp.h is available
14434 set netinet/tcp.h i_netinettcp
14435 eval $inhdr
14436
14437 : see if this is a poll.h system
14438 set poll.h i_poll
14439 eval $inhdr
14440
14441 : see if this is a prot.h system
14442 set prot.h i_prot
14443 eval $inhdr
14444
14445 echo " "
14446 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14447 $cat <<'EOSH' > Cppsym.know
14448 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14449 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14450 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14451 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14452 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14453 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14454 bull c cadmus clipper CMU COFF COMPILER_VERSION
14455 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14456 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14457 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14458 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14459 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14460 H3050R H3050RX hbullx20 hcx host_mips
14461 hp200 hp300 hp700 HP700 hp800 hp9000
14462 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14463 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14464 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14465 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14466 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14467 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14468 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14469 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14470 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14471 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14472 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14473 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14474 MATH_HAS_NO_SIDE_EFFECTS
14475 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14476 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14477 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14478 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14479 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14480 NetBSD news1500 news1700 news1800 news1900 news3700
14481 news700 news800 news900 NeXT NLS ns16000 ns32000
14482 ns32016 ns32332 ns32k nsc32000
14483 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14484 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14485 pc532 pdp11 PGC PIC plexus PORTAR posix
14486 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14487 POSIX_C_SOURCE POSIX_SOURCE POWER
14488 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14489 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14490 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14491 sony sony_news sonyrisc sparc sparclite spectrum
14492 stardent stdc STDC_EXT stratos sun sun3 sun386
14493 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14494 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14495 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14496 sysV68 sysV88 Tek4132 Tek4300 titan
14497 tower tower32 tower32_200 tower32_600 tower32_700
14498 tower32_800 tower32_850 tss
14499 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14500 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14501 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14502 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14503 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14504 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14505 z8000
14506 EOSH
14507 # Maybe put other stuff here too.
14508 cat <<EOSH >>Cppsym.know
14509 $osname
14510 EOSH
14511 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14512 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14513 $cat Cppsym.know > Cppsym.c
14514 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14515 $rm -f Cppsym.a Cppsym.b Cppsym.c
14516 cat <<EOSH > Cppsym
14517 $startsh
14518 if $test \$# -gt 0; then
14519     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14520     if $test -s Cppsym.got; then
14521         $rm -f Cppsym.got
14522         exit 0
14523     fi
14524     $rm -f Cppsym.got
14525     exit 1
14526 else
14527     $tr " " "$trnl" | ./Cppsym.try
14528     exit 0
14529 fi
14530 EOSH
14531 chmod +x Cppsym
14532 $eunicefix Cppsym
14533 cat <<EOSH > Cppsym.try
14534 $startsh
14535 cat <<'EOCP' > try.c
14536 #include <stdio.h>
14537 int main() {
14538 EOCP
14539 $awk \\
14540 EOSH
14541 cat <<'EOSH' >> Cppsym.try
14542 'length($1) > 0 {
14543     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
14544     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
14545     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
14546     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
14547 }'       >> try.c
14548 echo '}' >> try.c
14549 EOSH
14550 cat <<EOSH >> Cppsym.try
14551 ccflags="$ccflags"
14552 case "$osname-$gccversion" in
14553 irix-) ccflags="\$ccflags -woff 1178" ;;
14554 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14555 esac
14556 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14557 EOSH
14558 chmod +x Cppsym.try
14559 $eunicefix Cppsym.try
14560 ./Cppsym < Cppsym.know > Cppsym.true
14561 : now check the C compiler for additional symbols
14562 postprocess_cc_v=''
14563 case "$osname" in
14564 aix) postprocess_cc_v="|$tr , ' '" ;;
14565 esac
14566 $cat >ccsym <<EOS
14567 $startsh
14568 $cat >tmp.c <<EOF
14569 extern int foo;
14570 EOF
14571 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14572 do
14573         case "\$i" in
14574         -D*) echo "\$i" | $sed 's/^-D//';;
14575         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14576         esac
14577 done
14578 $rm -f try.c
14579 EOS
14580 postprocess_cc_v=''
14581 chmod +x ccsym
14582 $eunicefix ccsym
14583 ./ccsym > ccsym1.raw
14584 if $test -s ccsym1.raw; then
14585        $sort ccsym1.raw | $uniq >ccsym.raw
14586 else
14587        mv ccsym1.raw ccsym.raw
14588 fi
14589
14590 $awk '/\=/ { print $0; next }
14591         { print $0"=1" }' ccsym.raw >ccsym.list
14592 $awk '/\=/ { print $0; next }
14593         { print $0"=1" }' Cppsym.true >ccsym.true
14594 $comm -13 ccsym.true ccsym.list >ccsym.own
14595 $comm -12 ccsym.true ccsym.list >ccsym.com
14596 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14597 also=''
14598 if $test -z ccsym.raw; then
14599         echo "Your C compiler doesn't seem to define any symbols!" >&4
14600         echo " "
14601         echo "However, your C preprocessor defines the following symbols:"
14602         $cat Cppsym.true
14603         ccsymbols=''
14604         cppsymbols=`$cat Cppsym.true`
14605         cppsymbols=`echo $cppsymbols`
14606         cppccsymbols="$cppsymbols"
14607 else
14608         if $test -s ccsym.com; then
14609                 echo "Your C compiler and pre-processor define these symbols:"
14610                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14611                 also='also '
14612                 symbols='ones'
14613                 cppccsymbols=`$cat ccsym.com`
14614                 cppccsymbols=`echo $cppccsymbols`
14615                 $test "$silent" || sleep 1
14616         fi
14617         if $test -s ccsym.cpp; then
14618                 $test "$also" && echo " "
14619                 echo "Your C pre-processor ${also}defines the following symbols:"
14620                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14621                 also='further '
14622                 cppsymbols=`$cat ccsym.cpp`
14623                 cppsymbols=`echo $cppsymbols`
14624                 $test "$silent" || sleep 1
14625         fi
14626         if $test -s ccsym.own; then
14627                 $test "$also" && echo " "
14628                 echo "Your C compiler ${also}defines the following cpp symbols:"
14629                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14630                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14631                 ccsymbols=`$cat ccsym.own`
14632                 ccsymbols=`echo $ccsymbols`
14633                 $test "$silent" || sleep 1
14634         fi
14635 fi
14636 $rm -f ccsym* Cppsym.*
14637
14638 : see if this is a termio system
14639 val="$undef"
14640 val2="$undef"
14641 val3="$undef"
14642 if $test `./findhdr termios.h`; then
14643         set tcsetattr i_termios
14644         eval $inlibc
14645         val3="$i_termios"
14646 fi
14647 echo " "
14648 case "$val3" in
14649 "$define") echo "You have POSIX termios.h... good!" >&4;;
14650 *) if ./Cppsym pyr; then
14651                 case "`/bin/universe`" in
14652                 ucb) if $test `./findhdr sgtty.h`; then
14653                                 val2="$define"
14654                                 echo "<sgtty.h> found." >&4
14655                         else
14656                                 echo "System is pyramid with BSD universe."
14657                                 echo "<sgtty.h> not found--you could have problems." >&4
14658                         fi;;
14659                 *) if $test `./findhdr termio.h`; then
14660                                 val="$define"
14661                                 echo "<termio.h> found." >&4
14662                         else
14663                                 echo "System is pyramid with USG universe."
14664                                 echo "<termio.h> not found--you could have problems." >&4
14665                         fi;;
14666                 esac
14667         elif ./usg; then
14668                 if $test `./findhdr termio.h`; then
14669                         echo "<termio.h> found." >&4
14670                         val="$define"
14671                 elif $test `./findhdr sgtty.h`; then
14672                         echo "<sgtty.h> found." >&4
14673                         val2="$define"
14674                 else
14675 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14676                 fi
14677         else
14678                 if $test `./findhdr sgtty.h`; then
14679                         echo "<sgtty.h> found." >&4
14680                         val2="$define"
14681                 elif $test `./findhdr termio.h`; then
14682                         echo "<termio.h> found." >&4
14683                         val="$define"
14684                 else
14685 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14686                 fi
14687         fi;;
14688 esac
14689 set i_termio; eval $setvar
14690 val=$val2; set i_sgtty; eval $setvar
14691 val=$val3; set i_termios; eval $setvar
14692
14693 : see if this is a shadow.h system
14694 set shadow.h i_shadow
14695 eval $inhdr
14696
14697 : see if this is a socks.h system
14698 set socks.h i_socks
14699 eval $inhdr
14700
14701 : see if stdarg is available
14702 echo " "
14703 if $test `./findhdr stdarg.h`; then
14704         echo "<stdarg.h> found." >&4
14705         valstd="$define"
14706 else
14707         echo "<stdarg.h> NOT found." >&4
14708         valstd="$undef"
14709 fi
14710
14711 : see if varags is available
14712 echo " "
14713 if $test `./findhdr varargs.h`; then
14714         echo "<varargs.h> found." >&4
14715 else
14716         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14717 fi
14718
14719 : set up the varargs testing programs
14720 $cat > varargs.c <<EOP
14721 #ifdef I_STDARG
14722 #include <stdarg.h>
14723 #endif
14724 #ifdef I_VARARGS
14725 #include <varargs.h>
14726 #endif
14727
14728 #ifdef I_STDARG
14729 int f(char *p, ...)
14730 #else
14731 int f(va_alist)
14732 va_dcl
14733 #endif
14734 {
14735         va_list ap;
14736 #ifndef I_STDARG
14737         char *p;
14738 #endif
14739 #ifdef I_STDARG
14740         va_start(ap,p);
14741 #else
14742         va_start(ap);
14743         p = va_arg(ap, char *);
14744 #endif
14745         va_end(ap);
14746 }
14747 EOP
14748 $cat > varargs <<EOP
14749 $startsh
14750 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14751         echo "true"
14752 else
14753         echo "false"
14754 fi
14755 $rm -f varargs$_o
14756 EOP
14757 chmod +x varargs
14758
14759 : now check which varargs header should be included
14760 echo " "
14761 i_varhdr=''
14762 case "$valstd" in
14763 "$define")
14764         if `./varargs I_STDARG`; then
14765                 val='stdarg.h'
14766         elif `./varargs I_VARARGS`; then
14767                 val='varargs.h'
14768         fi
14769         ;;
14770 *)
14771         if `./varargs I_VARARGS`; then
14772                 val='varargs.h'
14773         fi
14774         ;;
14775 esac
14776 case "$val" in
14777 '')
14778 echo "I could not find the definition for va_dcl... You have problems..." >&4
14779         val="$undef"; set i_stdarg; eval $setvar
14780         val="$undef"; set i_varargs; eval $setvar
14781         ;;
14782 *) 
14783         set i_varhdr
14784         eval $setvar
14785         case "$i_varhdr" in
14786         stdarg.h)
14787                 val="$define"; set i_stdarg; eval $setvar
14788                 val="$undef"; set i_varargs; eval $setvar
14789                 ;;
14790         varargs.h)
14791                 val="$undef"; set i_stdarg; eval $setvar
14792                 val="$define"; set i_varargs; eval $setvar
14793                 ;;
14794         esac
14795         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14796 esac
14797 $rm -f varargs*
14798
14799 : see if stddef is available
14800 set stddef.h i_stddef
14801 eval $inhdr
14802
14803 : see if this is a sunmath.h system
14804 set sunmath.h i_sunmath
14805 eval $inhdr
14806
14807 : see if sys/access.h is available
14808 set sys/access.h i_sysaccess
14809 eval $inhdr
14810
14811 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14812 set sys/filio.h i_sysfilio
14813 eval $inhdr
14814 echo " "
14815 if $test `./findhdr sys/ioctl.h`; then
14816         val="$define"
14817         echo '<sys/ioctl.h> found.' >&4
14818 else
14819         val="$undef"
14820         if $test $i_sysfilio = "$define"; then
14821             echo '<sys/ioctl.h> NOT found.' >&4
14822         else
14823                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14824                 $test $i_termio = "$define" && xxx="termio.h"
14825                 $test $i_termios = "$define" && xxx="termios.h"
14826 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14827         fi
14828 fi
14829 set i_sysioctl
14830 eval $setvar
14831
14832
14833 : see if this is a syslog.h system
14834 set syslog.h i_syslog
14835 eval $inhdr
14836
14837
14838 : see if this is a sys/mode.h system
14839 set sys/mode.h i_sysmode
14840 eval $inhdr
14841
14842 : see if sys/resource.h has to be included
14843 set sys/resource.h i_sysresrc
14844 eval $inhdr
14845
14846 : see if sys/security.h is available
14847 set sys/security.h i_syssecrt
14848 eval $inhdr
14849
14850 : see if this is a sys/statvfs.h system
14851 set sys/statvfs.h i_sysstatvfs
14852 eval $inhdr
14853
14854 : see if this is a sys/uio.h system
14855 set sys/uio.h i_sysuio
14856 eval $inhdr
14857
14858 : see if this is a sys/un.h system
14859 set sys/un.h i_sysun
14860 eval $inhdr
14861
14862
14863 : see if this is a sys/utsname.h system
14864 set sys/utsname.h i_sysutsname
14865 eval $inhdr
14866
14867 : see if this is a syswait system
14868 set sys/wait.h i_syswait
14869 eval $inhdr
14870
14871 : see if this is a ustat.h system
14872 set ustat.h i_ustat
14873 eval $inhdr
14874
14875 : see if this is an utime system
14876 set utime.h i_utime
14877 eval $inhdr
14878
14879 : see if this is a values.h system
14880 set values.h i_values
14881 eval $inhdr
14882
14883 : see if this is a vfork system
14884 case "$d_vfork" in
14885 "$define")
14886         set vfork.h i_vfork
14887         eval $inhdr
14888         ;;
14889 *)
14890         i_vfork="$undef"
14891         ;;
14892 esac
14893
14894 : see if gdbm.h is available
14895 set gdbm.h t_gdbm
14896 eval $inhdr
14897 case "$t_gdbm" in
14898 $define)
14899         : see if gdbm_open exists
14900         set gdbm_open d_gdbm_open
14901         eval $inlibc
14902         case "$d_gdbm_open" in
14903         $undef)
14904                 t_gdbm="$undef"
14905                 echo "We won't be including <gdbm.h>"
14906                 ;;
14907         esac
14908         ;;
14909 esac
14910 val="$t_gdbm"
14911 set i_gdbm
14912 eval $setvar
14913
14914 echo " "
14915 echo "Looking for extensions..." >&4
14916 : If we are using the old config.sh, known_extensions may contain
14917 : old or inaccurate or duplicate values.
14918 known_extensions=''
14919 nonxs_extensions=''
14920 : We do not use find because it might not be available.
14921 : We do not just use MANIFEST because the user may have dropped
14922 : some additional extensions into the source tree and expect them
14923 : to be built.
14924
14925 : Function to recursively find available extensions, ignoring DynaLoader
14926 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14927 find_extensions='
14928     for xxx in *; do
14929        case "$xxx" in
14930            DynaLoader|dynaload) ;;
14931            *)
14932            if $test -f $xxx/$xxx.xs; then
14933                known_extensions="$known_extensions $1$xxx";
14934            elif $test -f $xxx/Makefile.PL; then
14935                nonxs_extensions="$nonxs_extensions $1$xxx";
14936            else
14937                if $test -d $xxx -a $# -lt 10; then
14938                    set $1$xxx/ $*;
14939                    cd $xxx;
14940                    eval $find_extensions;
14941                    cd ..;
14942                    shift;
14943                fi;
14944            fi
14945            ;;
14946        esac;
14947     done'
14948 tdir=`pwd`
14949 cd $rsrc/ext
14950 set X
14951 shift
14952 eval $find_extensions
14953 set X $nonxs_extensions
14954 shift
14955 nonxs_extensions="$*"
14956 set X $known_extensions
14957 shift
14958 known_extensions="$*"
14959 cd $tdir
14960
14961 : Now see which are supported on this system.
14962 avail_ext=''
14963 for xxx in $known_extensions ; do
14964         case "$xxx" in
14965         DB_File|db_file)
14966                 case "$i_db" in
14967                 $define) avail_ext="$avail_ext $xxx" ;;
14968                 esac
14969                 ;;
14970         GDBM_File|gdbm_fil)
14971                 case "$i_gdbm" in 
14972                 $define) avail_ext="$avail_ext $xxx" ;;
14973                 esac
14974                 ;;
14975         NDBM_File|ndbm_fil)
14976                 case "$i_ndbm" in
14977                 $define)
14978                     case "$osname-$use64bitint" in
14979                     hpux-define)
14980                         case "$libs" in
14981                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14982                         esac
14983                         ;;
14984                     *) avail_ext="$avail_ext $xxx" ;;
14985                     esac
14986                     ;;
14987                 esac
14988                 ;;
14989         ODBM_File|odbm_fil) 
14990                 case "${i_dbm}${i_rpcsvcdbm}" in
14991                 *"${define}"*)
14992                     case "$osname-$use64bitint" in
14993                     hpux-define)
14994                         case "$libs" in
14995                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14996                         esac
14997                         ;;
14998                     *) avail_ext="$avail_ext $xxx" ;;
14999                     esac
15000                     ;;
15001                 esac
15002                 ;;
15003         POSIX|posix)
15004                 case "$useposix" in
15005                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15006                 esac
15007                 ;;
15008         Opcode|opcode)
15009                 case "$useopcode" in
15010                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15011                 esac
15012                 ;;
15013         Socket|socket)
15014                 case "$d_socket" in 
15015                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15016                 esac
15017                 ;;
15018         Sys/Syslog|sys/syslog)
15019                 : XXX syslog requires socket
15020                 case "$d_socket" in 
15021                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15022                 esac
15023                 ;;
15024         Thread|thread)
15025                 case "$usethreads" in 
15026                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15027                 esac
15028                 ;;
15029         IPC/SysV|ipc/sysv)
15030                 : XXX Do we need a useipcsysv variable here
15031                 case "${d_msg}${d_sem}${d_shm}" in 
15032                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15033                 esac
15034                 ;;
15035         *)      avail_ext="$avail_ext $xxx"
15036                 ;;
15037         esac
15038 done
15039
15040 set X $avail_ext
15041 shift
15042 avail_ext="$*"
15043
15044 : Now see which nonxs extensions are supported on this system.
15045 : For now assume all are.
15046 nonxs_ext=''
15047 for xxx in $nonxs_extensions ; do
15048         case "$xxx" in
15049         *)      nonxs_ext="$nonxs_ext $xxx"
15050                 ;;
15051         esac
15052 done
15053
15054 set X $nonxs_ext
15055 shift
15056 nonxs_ext="$*"
15057
15058 case $usedl in
15059 $define)
15060         $cat <<EOM
15061 A number of extensions are supplied with $package.  You may choose to
15062 compile these extensions for dynamic loading (the default), compile
15063 them into the $package executable (static loading), or not include
15064 them at all.  Answer "none" to include no extensions.
15065 Note that DynaLoader is always built and need not be mentioned here.
15066
15067 EOM
15068         case "$dynamic_ext" in
15069         '') dflt="$avail_ext" ;;
15070         *)      dflt="$dynamic_ext"
15071                 # Perhaps we are reusing an old out-of-date config.sh.
15072                 case "$hint" in
15073                 previous)
15074                         if test X"$dynamic_ext" != X"$avail_ext"; then
15075                                 $cat <<EOM
15076 NOTICE:  Your previous config.sh list may be incorrect. 
15077 The extensions now available to you are 
15078         ${avail_ext}
15079 but the default list from your previous config.sh is
15080         ${dynamic_ext} 
15081
15082 EOM
15083                         fi
15084                         ;;
15085                 esac
15086                 ;;
15087         esac
15088         case "$dflt" in
15089         '')     dflt=none;;
15090         esac
15091         rp="What extensions do you wish to load dynamically?"
15092         . ./myread
15093         case "$ans" in
15094         none) dynamic_ext=' ' ;;
15095         *) dynamic_ext="$ans" ;;
15096         esac
15097
15098         case "$static_ext" in
15099         '')
15100                 : Exclude those already listed in dynamic linking
15101                 dflt=''
15102                 for xxx in $avail_ext; do
15103                         case " $dynamic_ext " in
15104                         *" $xxx "*) ;;
15105                         *) dflt="$dflt $xxx" ;;
15106                         esac
15107                 done
15108                 set X $dflt
15109                 shift
15110                 dflt="$*"
15111                 ;;
15112         *)  dflt="$static_ext" 
15113                 ;;
15114         esac
15115
15116         case "$dflt" in
15117         '')     dflt=none;;
15118         esac
15119         rp="What extensions do you wish to load statically?"
15120         . ./myread
15121         case "$ans" in
15122         none) static_ext=' ' ;;
15123         *) static_ext="$ans" ;;
15124         esac
15125         ;;
15126 *)
15127         $cat <<EOM
15128 A number of extensions are supplied with $package.  Answer "none" 
15129 to include no extensions. 
15130 Note that DynaLoader is always built and need not be mentioned here.
15131
15132 EOM
15133         case "$static_ext" in
15134         '') dflt="$avail_ext" ;;
15135         *)      dflt="$static_ext"
15136                 # Perhaps we are reusing an old out-of-date config.sh.
15137                 case "$hint" in
15138                 previous)
15139                         if test X"$static_ext" != X"$avail_ext"; then
15140                                 $cat <<EOM
15141 NOTICE:  Your previous config.sh list may be incorrect. 
15142 The extensions now available to you are 
15143         ${avail_ext}
15144 but the default list from your previous config.sh is
15145         ${static_ext} 
15146
15147 EOM
15148                         fi
15149                         ;;
15150                 esac
15151                 ;;
15152         esac
15153         : Exclude those that are not xs extensions
15154         case "$dflt" in
15155         '')     dflt=none;;
15156         esac
15157         rp="What extensions do you wish to include?"
15158         . ./myread
15159         case "$ans" in
15160         none) static_ext=' ' ;;
15161         *) static_ext="$ans" ;;
15162         esac
15163         ;;
15164 esac
15165
15166 set X $dynamic_ext $static_ext $nonxs_ext
15167 shift
15168 extensions="$*"
15169
15170 : Remove libraries needed only for extensions
15171 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15172 case "$usedl" in
15173 $define|true|[yY]*)
15174         set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15175         shift
15176         perllibs="$*"
15177         ;;
15178 *)      perllibs="$libs"
15179         ;;
15180 esac
15181
15182 : Remove build directory name from cppstdin so it can be used from
15183 : either the present location or the final installed location.
15184 echo " "
15185 : Get out of the UU directory to get correct path name.
15186 cd ..
15187 case "$cppstdin" in
15188 `pwd`/cppstdin)
15189         echo "Stripping down cppstdin path name"
15190         cppstdin=cppstdin
15191         ;;
15192 esac
15193 cd UU
15194
15195 : end of configuration questions
15196 echo " "
15197 echo "End of configuration questions."
15198 echo " "
15199
15200 : back to where it started
15201 if test -d ../UU; then
15202         cd ..
15203 fi
15204
15205 : configuration may be patched via a 'config.over' file
15206 if $test -f config.over; then
15207         echo " "
15208         dflt=y
15209         rp='I see a config.over file.  Do you wish to load it?'
15210         . UU/myread
15211         case "$ans" in
15212         n*) echo "OK, I'll ignore it.";;
15213         *)      . ./config.over
15214                 echo "Configuration override changes have been loaded."
15215                 ;;
15216         esac
15217 fi
15218
15219 : in case they want portability, strip down executable paths
15220 case "$d_portable" in
15221 "$define")
15222         echo " "
15223         echo "Stripping down executable paths..." >&4
15224         for file in $loclist $trylist; do
15225                 eval temp=\$$file
15226                 eval $file=`basename $temp`
15227         done
15228         ;;
15229 esac
15230
15231 : create config.sh file
15232 echo " "
15233 echo "Creating config.sh..." >&4
15234 $spitshell <<EOT >config.sh
15235 $startsh
15236 #
15237 # This file was produced by running the Configure script. It holds all the
15238 # definitions figured out by Configure. Should you modify one of these values,
15239 # do not forget to propagate your changes by running "Configure -der". You may
15240 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15241 #
15242
15243 # Package name      : $package
15244 # Source directory  : $src
15245 # Configuration time: $cf_time
15246 # Configured by     : $cf_by
15247 # Target system     : $myuname
15248
15249 Author='$Author'
15250 Date='$Date'
15251 Header='$Header'
15252 Id='$Id'
15253 Locker='$Locker'
15254 Log='$Log'
15255 Mcc='$Mcc'
15256 RCSfile='$RCSfile'
15257 Revision='$Revision'
15258 Source='$Source'
15259 State='$State'
15260 _a='$_a'
15261 _exe='$_exe'
15262 _o='$_o'
15263 afs='$afs'
15264 alignbytes='$alignbytes'
15265 ansi2knr='$ansi2knr'
15266 aphostname='$aphostname'
15267 api_revision='$api_revision'
15268 api_subversion='$api_subversion'
15269 api_version='$api_version'
15270 api_versionstring='$api_versionstring'
15271 ar='$ar'
15272 archlib='$archlib'
15273 archlibexp='$archlibexp'
15274 archname64='$archname64'
15275 archname='$archname'
15276 archobjs='$archobjs'
15277 awk='$awk'
15278 baserev='$baserev'
15279 bash='$bash'
15280 bin='$bin'
15281 bincompat5005='$bincompat5005'
15282 binexp='$binexp'
15283 bison='$bison'
15284 byacc='$byacc'
15285 byteorder='$byteorder'
15286 c='$c'
15287 castflags='$castflags'
15288 cat='$cat'
15289 cc='$cc'
15290 cccdlflags='$cccdlflags'
15291 ccdlflags='$ccdlflags'
15292 ccflags='$ccflags'
15293 ccflags_uselargefiles='$ccflags_uselargefiles'
15294 ccname='$ccname'
15295 ccsymbols='$ccsymbols'
15296 ccversion='$ccversion'
15297 cf_by='$cf_by'
15298 cf_email='$cf_email'
15299 cf_time='$cf_time'
15300 charsize='$charsize'
15301 chgrp='$chgrp'
15302 chmod='$chmod'
15303 chown='$chown'
15304 clocktype='$clocktype'
15305 comm='$comm'
15306 compress='$compress'
15307 contains='$contains'
15308 cp='$cp'
15309 cpio='$cpio'
15310 cpp='$cpp'
15311 cpp_stuff='$cpp_stuff'
15312 cppccsymbols='$cppccsymbols'
15313 cppflags='$cppflags'
15314 cpplast='$cpplast'
15315 cppminus='$cppminus'
15316 cpprun='$cpprun'
15317 cppstdin='$cppstdin'
15318 cppsymbols='$cppsymbols'
15319 crosscompile='$crosscompile'
15320 cryptlib='$cryptlib'
15321 csh='$csh'
15322 d_Gconvert='$d_Gconvert'
15323 d_PRIEUldbl='$d_PRIEUldbl'
15324 d_PRIFUldbl='$d_PRIFUldbl'
15325 d_PRIGUldbl='$d_PRIGUldbl'
15326 d_PRIXU64='$d_PRIXU64'
15327 d_PRId64='$d_PRId64'
15328 d_PRIeldbl='$d_PRIeldbl'
15329 d_PRIfldbl='$d_PRIfldbl'
15330 d_PRIgldbl='$d_PRIgldbl'
15331 d_PRIi64='$d_PRIi64'
15332 d_PRIo64='$d_PRIo64'
15333 d_PRIu64='$d_PRIu64'
15334 d_PRIx64='$d_PRIx64'
15335 d_SCNfldbl='$d_SCNfldbl'
15336 d_access='$d_access'
15337 d_accessx='$d_accessx'
15338 d_alarm='$d_alarm'
15339 d_archlib='$d_archlib'
15340 d_atolf='$d_atolf'
15341 d_atoll='$d_atoll'
15342 d_attribut='$d_attribut'
15343 d_bcmp='$d_bcmp'
15344 d_bcopy='$d_bcopy'
15345 d_bincompat5005='$d_bincompat5005'
15346 d_bsd='$d_bsd'
15347 d_bsdgetpgrp='$d_bsdgetpgrp'
15348 d_bsdsetpgrp='$d_bsdsetpgrp'
15349 d_bzero='$d_bzero'
15350 d_casti32='$d_casti32'
15351 d_castneg='$d_castneg'
15352 d_charvspr='$d_charvspr'
15353 d_chown='$d_chown'
15354 d_chroot='$d_chroot'
15355 d_chsize='$d_chsize'
15356 d_closedir='$d_closedir'
15357 d_const='$d_const'
15358 d_crypt='$d_crypt'
15359 d_csh='$d_csh'
15360 d_cuserid='$d_cuserid'
15361 d_dbl_dig='$d_dbl_dig'
15362 d_difftime='$d_difftime'
15363 d_dirnamlen='$d_dirnamlen'
15364 d_dlerror='$d_dlerror'
15365 d_dlopen='$d_dlopen'
15366 d_dlsymun='$d_dlsymun'
15367 d_dosuid='$d_dosuid'
15368 d_drand48proto='$d_drand48proto'
15369 d_dup2='$d_dup2'
15370 d_eaccess='$d_eaccess'
15371 d_endgrent='$d_endgrent'
15372 d_endhent='$d_endhent'
15373 d_endnent='$d_endnent'
15374 d_endpent='$d_endpent'
15375 d_endpwent='$d_endpwent'
15376 d_endsent='$d_endsent'
15377 d_eofnblk='$d_eofnblk'
15378 d_eunice='$d_eunice'
15379 d_fchmod='$d_fchmod'
15380 d_fchown='$d_fchown'
15381 d_fcntl='$d_fcntl'
15382 d_fd_macros='$d_fd_macros'
15383 d_fd_set='$d_fd_set'
15384 d_fds_bits='$d_fds_bits'
15385 d_fgetpos='$d_fgetpos'
15386 d_flexfnam='$d_flexfnam'
15387 d_flock='$d_flock'
15388 d_fork='$d_fork'
15389 d_fpathconf='$d_fpathconf'
15390 d_fpos64_t='$d_fpos64_t'
15391 d_frexpl='$d_frexpl'
15392 d_fs_data_s='$d_fs_data_s'
15393 d_fseeko='$d_fseeko'
15394 d_fsetpos='$d_fsetpos'
15395 d_fstatfs='$d_fstatfs'
15396 d_fstatvfs='$d_fstatvfs'
15397 d_ftello='$d_ftello'
15398 d_ftime='$d_ftime'
15399 d_getcwd='$d_getcwd'
15400 d_getespwnam='$d_getespwnam'
15401 d_getfsstat='$d_getfsstat'
15402 d_getgrent='$d_getgrent'
15403 d_getgrps='$d_getgrps'
15404 d_gethbyaddr='$d_gethbyaddr'
15405 d_gethbyname='$d_gethbyname'
15406 d_gethent='$d_gethent'
15407 d_gethname='$d_gethname'
15408 d_gethostprotos='$d_gethostprotos'
15409 d_getlogin='$d_getlogin'
15410 d_getmnt='$d_getmnt'
15411 d_getmntent='$d_getmntent'
15412 d_getnbyaddr='$d_getnbyaddr'
15413 d_getnbyname='$d_getnbyname'
15414 d_getnent='$d_getnent'
15415 d_getnetprotos='$d_getnetprotos'
15416 d_getpbyname='$d_getpbyname'
15417 d_getpbynumber='$d_getpbynumber'
15418 d_getpent='$d_getpent'
15419 d_getpgid='$d_getpgid'
15420 d_getpgrp2='$d_getpgrp2'
15421 d_getpgrp='$d_getpgrp'
15422 d_getppid='$d_getppid'
15423 d_getprior='$d_getprior'
15424 d_getprotoprotos='$d_getprotoprotos'
15425 d_getprpwnam='$d_getprpwnam'
15426 d_getpwent='$d_getpwent'
15427 d_getsbyname='$d_getsbyname'
15428 d_getsbyport='$d_getsbyport'
15429 d_getsent='$d_getsent'
15430 d_getservprotos='$d_getservprotos'
15431 d_getspnam='$d_getspnam'
15432 d_gettimeod='$d_gettimeod'
15433 d_gnulibc='$d_gnulibc'
15434 d_grpasswd='$d_grpasswd'
15435 d_hasmntopt='$d_hasmntopt'
15436 d_htonl='$d_htonl'
15437 d_iconv='$d_iconv'
15438 d_index='$d_index'
15439 d_inetaton='$d_inetaton'
15440 d_int64_t='$d_int64_t'
15441 d_isascii='$d_isascii'
15442 d_isnan='$d_isnan'
15443 d_isnanl='$d_isnanl'
15444 d_killpg='$d_killpg'
15445 d_lchown='$d_lchown'
15446 d_ldbl_dig='$d_ldbl_dig'
15447 d_link='$d_link'
15448 d_locconv='$d_locconv'
15449 d_lockf='$d_lockf'
15450 d_longdbl='$d_longdbl'
15451 d_longlong='$d_longlong'
15452 d_lseekproto='$d_lseekproto'
15453 d_lstat='$d_lstat'
15454 d_madvise='$d_madvise'
15455 d_mblen='$d_mblen'
15456 d_mbstowcs='$d_mbstowcs'
15457 d_mbtowc='$d_mbtowc'
15458 d_memchr='$d_memchr'
15459 d_memcmp='$d_memcmp'
15460 d_memcpy='$d_memcpy'
15461 d_memmove='$d_memmove'
15462 d_memset='$d_memset'
15463 d_mkdir='$d_mkdir'
15464 d_mkdtemp='$d_mkdtemp'
15465 d_mkfifo='$d_mkfifo'
15466 d_mkstemp='$d_mkstemp'
15467 d_mkstemps='$d_mkstemps'
15468 d_mktime='$d_mktime'
15469 d_mmap='$d_mmap'
15470 d_modfl='$d_modfl'
15471 d_mprotect='$d_mprotect'
15472 d_msg='$d_msg'
15473 d_msg_ctrunc='$d_msg_ctrunc'
15474 d_msg_dontroute='$d_msg_dontroute'
15475 d_msg_oob='$d_msg_oob'
15476 d_msg_peek='$d_msg_peek'
15477 d_msg_proxy='$d_msg_proxy'
15478 d_msgctl='$d_msgctl'
15479 d_msgget='$d_msgget'
15480 d_msgrcv='$d_msgrcv'
15481 d_msgsnd='$d_msgsnd'
15482 d_msync='$d_msync'
15483 d_munmap='$d_munmap'
15484 d_mymalloc='$d_mymalloc'
15485 d_nice='$d_nice'
15486 d_nv_preserves_uv='$d_nv_preserves_uv'
15487 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15488 d_off64_t='$d_off64_t'
15489 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15490 d_oldpthreads='$d_oldpthreads'
15491 d_oldsock='$d_oldsock'
15492 d_open3='$d_open3'
15493 d_pathconf='$d_pathconf'
15494 d_pause='$d_pause'
15495 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15496 d_phostname='$d_phostname'
15497 d_pipe='$d_pipe'
15498 d_poll='$d_poll'
15499 d_portable='$d_portable'
15500 d_pthread_yield='$d_pthread_yield'
15501 d_pwage='$d_pwage'
15502 d_pwchange='$d_pwchange'
15503 d_pwclass='$d_pwclass'
15504 d_pwcomment='$d_pwcomment'
15505 d_pwexpire='$d_pwexpire'
15506 d_pwgecos='$d_pwgecos'
15507 d_pwpasswd='$d_pwpasswd'
15508 d_pwquota='$d_pwquota'
15509 d_qgcvt='$d_qgcvt'
15510 d_quad='$d_quad'
15511 d_readdir='$d_readdir'
15512 d_readlink='$d_readlink'
15513 d_rename='$d_rename'
15514 d_rewinddir='$d_rewinddir'
15515 d_rmdir='$d_rmdir'
15516 d_safebcpy='$d_safebcpy'
15517 d_safemcpy='$d_safemcpy'
15518 d_sanemcmp='$d_sanemcmp'
15519 d_sched_yield='$d_sched_yield'
15520 d_scm_rights='$d_scm_rights'
15521 d_seekdir='$d_seekdir'
15522 d_select='$d_select'
15523 d_sem='$d_sem'
15524 d_semctl='$d_semctl'
15525 d_semctl_semid_ds='$d_semctl_semid_ds'
15526 d_semctl_semun='$d_semctl_semun'
15527 d_semget='$d_semget'
15528 d_semop='$d_semop'
15529 d_setegid='$d_setegid'
15530 d_seteuid='$d_seteuid'
15531 d_setgrent='$d_setgrent'
15532 d_setgrps='$d_setgrps'
15533 d_sethent='$d_sethent'
15534 d_setlinebuf='$d_setlinebuf'
15535 d_setlocale='$d_setlocale'
15536 d_setnent='$d_setnent'
15537 d_setpent='$d_setpent'
15538 d_setpgid='$d_setpgid'
15539 d_setpgrp2='$d_setpgrp2'
15540 d_setpgrp='$d_setpgrp'
15541 d_setprior='$d_setprior'
15542 d_setproctitle='$d_setproctitle'
15543 d_setpwent='$d_setpwent'
15544 d_setregid='$d_setregid'
15545 d_setresgid='$d_setresgid'
15546 d_setresuid='$d_setresuid'
15547 d_setreuid='$d_setreuid'
15548 d_setrgid='$d_setrgid'
15549 d_setruid='$d_setruid'
15550 d_setsent='$d_setsent'
15551 d_setsid='$d_setsid'
15552 d_setvbuf='$d_setvbuf'
15553 d_sfio='$d_sfio'
15554 d_shm='$d_shm'
15555 d_shmat='$d_shmat'
15556 d_shmatprototype='$d_shmatprototype'
15557 d_shmctl='$d_shmctl'
15558 d_shmdt='$d_shmdt'
15559 d_shmget='$d_shmget'
15560 d_sigaction='$d_sigaction'
15561 d_sigsetjmp='$d_sigsetjmp'
15562 d_socket='$d_socket'
15563 d_socklen_t='$d_socklen_t'
15564 d_sockpair='$d_sockpair'
15565 d_socks5_init='$d_socks5_init'
15566 d_sqrtl='$d_sqrtl'
15567 d_statblks='$d_statblks'
15568 d_statfs_f_flags='$d_statfs_f_flags'
15569 d_statfs_s='$d_statfs_s'
15570 d_statvfs='$d_statvfs'
15571 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15572 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15573 d_stdio_stream_array='$d_stdio_stream_array'
15574 d_stdiobase='$d_stdiobase'
15575 d_stdstdio='$d_stdstdio'
15576 d_strchr='$d_strchr'
15577 d_strcoll='$d_strcoll'
15578 d_strctcpy='$d_strctcpy'
15579 d_strerrm='$d_strerrm'
15580 d_strerror='$d_strerror'
15581 d_strtod='$d_strtod'
15582 d_strtol='$d_strtol'
15583 d_strtold='$d_strtold'
15584 d_strtoll='$d_strtoll'
15585 d_strtoul='$d_strtoul'
15586 d_strtoull='$d_strtoull'
15587 d_strtouq='$d_strtouq'
15588 d_strxfrm='$d_strxfrm'
15589 d_suidsafe='$d_suidsafe'
15590 d_symlink='$d_symlink'
15591 d_syscall='$d_syscall'
15592 d_sysconf='$d_sysconf'
15593 d_sysernlst='$d_sysernlst'
15594 d_syserrlst='$d_syserrlst'
15595 d_system='$d_system'
15596 d_tcgetpgrp='$d_tcgetpgrp'
15597 d_tcsetpgrp='$d_tcsetpgrp'
15598 d_telldir='$d_telldir'
15599 d_telldirproto='$d_telldirproto'
15600 d_time='$d_time'
15601 d_times='$d_times'
15602 d_truncate='$d_truncate'
15603 d_tzname='$d_tzname'
15604 d_umask='$d_umask'
15605 d_uname='$d_uname'
15606 d_union_semun='$d_union_semun'
15607 d_ustat='$d_ustat'
15608 d_vendorarch='$d_vendorarch'
15609 d_vendorbin='$d_vendorbin'
15610 d_vendorlib='$d_vendorlib'
15611 d_vfork='$d_vfork'
15612 d_void_closedir='$d_void_closedir'
15613 d_voidsig='$d_voidsig'
15614 d_voidtty='$d_voidtty'
15615 d_volatile='$d_volatile'
15616 d_vprintf='$d_vprintf'
15617 d_wait4='$d_wait4'
15618 d_waitpid='$d_waitpid'
15619 d_wcstombs='$d_wcstombs'
15620 d_wctomb='$d_wctomb'
15621 d_xenix='$d_xenix'
15622 date='$date'
15623 db_hashtype='$db_hashtype'
15624 db_prefixtype='$db_prefixtype'
15625 defvoidused='$defvoidused'
15626 direntrytype='$direntrytype'
15627 dlext='$dlext'
15628 dlsrc='$dlsrc'
15629 doublesize='$doublesize'
15630 drand01='$drand01'
15631 dynamic_ext='$dynamic_ext'
15632 eagain='$eagain'
15633 ebcdic='$ebcdic'
15634 echo='$echo'
15635 egrep='$egrep'
15636 emacs='$emacs'
15637 eunicefix='$eunicefix'
15638 exe_ext='$exe_ext'
15639 expr='$expr'
15640 extensions='$extensions'
15641 fflushNULL='$fflushNULL'
15642 fflushall='$fflushall'
15643 find='$find'
15644 firstmakefile='$firstmakefile'
15645 flex='$flex'
15646 fpossize='$fpossize'
15647 fpostype='$fpostype'
15648 freetype='$freetype'
15649 full_ar='$full_ar'
15650 full_csh='$full_csh'
15651 full_sed='$full_sed'
15652 gccosandvers='$gccosandvers'
15653 gccversion='$gccversion'
15654 gidformat='$gidformat'
15655 gidsign='$gidsign'
15656 gidsize='$gidsize'
15657 gidtype='$gidtype'
15658 glibpth='$glibpth'
15659 grep='$grep'
15660 groupcat='$groupcat'
15661 groupstype='$groupstype'
15662 gzip='$gzip'
15663 h_fcntl='$h_fcntl'
15664 h_sysfile='$h_sysfile'
15665 hint='$hint'
15666 hostcat='$hostcat'
15667 i16size='$i16size'
15668 i16type='$i16type'
15669 i32size='$i32size'
15670 i32type='$i32type'
15671 i64size='$i64size'
15672 i64type='$i64type'
15673 i8size='$i8size'
15674 i8type='$i8type'
15675 i_arpainet='$i_arpainet'
15676 i_bsdioctl='$i_bsdioctl'
15677 i_db='$i_db'
15678 i_dbm='$i_dbm'
15679 i_dirent='$i_dirent'
15680 i_dld='$i_dld'
15681 i_dlfcn='$i_dlfcn'
15682 i_fcntl='$i_fcntl'
15683 i_float='$i_float'
15684 i_gdbm='$i_gdbm'
15685 i_grp='$i_grp'
15686 i_iconv='$i_iconv'
15687 i_ieeefp='$i_ieeefp'
15688 i_inttypes='$i_inttypes'
15689 i_libutil='$i_libutil'
15690 i_limits='$i_limits'
15691 i_locale='$i_locale'
15692 i_machcthr='$i_machcthr'
15693 i_malloc='$i_malloc'
15694 i_math='$i_math'
15695 i_memory='$i_memory'
15696 i_mntent='$i_mntent'
15697 i_ndbm='$i_ndbm'
15698 i_netdb='$i_netdb'
15699 i_neterrno='$i_neterrno'
15700 i_netinettcp='$i_netinettcp'
15701 i_niin='$i_niin'
15702 i_poll='$i_poll'
15703 i_prot='$i_prot'
15704 i_pthread='$i_pthread'
15705 i_pwd='$i_pwd'
15706 i_rpcsvcdbm='$i_rpcsvcdbm'
15707 i_sfio='$i_sfio'
15708 i_sgtty='$i_sgtty'
15709 i_shadow='$i_shadow'
15710 i_socks='$i_socks'
15711 i_stdarg='$i_stdarg'
15712 i_stddef='$i_stddef'
15713 i_stdlib='$i_stdlib'
15714 i_string='$i_string'
15715 i_sunmath='$i_sunmath'
15716 i_sysaccess='$i_sysaccess'
15717 i_sysdir='$i_sysdir'
15718 i_sysfile='$i_sysfile'
15719 i_sysfilio='$i_sysfilio'
15720 i_sysin='$i_sysin'
15721 i_sysioctl='$i_sysioctl'
15722 i_syslog='$i_syslog'
15723 i_sysmman='$i_sysmman'
15724 i_sysmode='$i_sysmode'
15725 i_sysmount='$i_sysmount'
15726 i_sysndir='$i_sysndir'
15727 i_sysparam='$i_sysparam'
15728 i_sysresrc='$i_sysresrc'
15729 i_syssecrt='$i_syssecrt'
15730 i_sysselct='$i_sysselct'
15731 i_syssockio='$i_syssockio'
15732 i_sysstat='$i_sysstat'
15733 i_sysstatfs='$i_sysstatfs'
15734 i_sysstatvfs='$i_sysstatvfs'
15735 i_systime='$i_systime'
15736 i_systimek='$i_systimek'
15737 i_systimes='$i_systimes'
15738 i_systypes='$i_systypes'
15739 i_sysuio='$i_sysuio'
15740 i_sysun='$i_sysun'
15741 i_sysutsname='$i_sysutsname'
15742 i_sysvfs='$i_sysvfs'
15743 i_syswait='$i_syswait'
15744 i_termio='$i_termio'
15745 i_termios='$i_termios'
15746 i_time='$i_time'
15747 i_unistd='$i_unistd'
15748 i_ustat='$i_ustat'
15749 i_utime='$i_utime'
15750 i_values='$i_values'
15751 i_varargs='$i_varargs'
15752 i_varhdr='$i_varhdr'
15753 i_vfork='$i_vfork'
15754 ignore_versioned_solibs='$ignore_versioned_solibs'
15755 inc_version_list='$inc_version_list'
15756 inc_version_list_init='$inc_version_list_init'
15757 incpath='$incpath'
15758 inews='$inews'
15759 installarchlib='$installarchlib'
15760 installbin='$installbin'
15761 installman1dir='$installman1dir'
15762 installman3dir='$installman3dir'
15763 installprefix='$installprefix'
15764 installprefixexp='$installprefixexp'
15765 installprivlib='$installprivlib'
15766 installscript='$installscript'
15767 installscripts='$installscripts'
15768 installsitearch='$installsitearch'
15769 installsitebin='$installsitebin'
15770 installsitelib='$installsitelib'
15771 installstyle='$installstyle'
15772 installusrbinperl='$installusrbinperl'
15773 installvendorarch='$installvendorarch'
15774 installvendorbin='$installvendorbin'
15775 installvendorlib='$installvendorlib'
15776 intsize='$intsize'
15777 ivdformat='$ivdformat'
15778 ivsize='$ivsize'
15779 ivtype='$ivtype'
15780 known_extensions='$known_extensions'
15781 ksh='$ksh'
15782 ld='$ld'
15783 lddlflags='$lddlflags'
15784 ldflags='$ldflags'
15785 ldflags_uselargefiles='$ldflags_uselargefiles'
15786 ldlibpthname='$ldlibpthname'
15787 less='$less'
15788 lib_ext='$lib_ext'
15789 libc='$libc'
15790 libperl='$libperl'
15791 libpth='$libpth'
15792 libs='$libs'
15793 libsdirs='$libsdirs'
15794 libsfiles='$libsfiles'
15795 libsfound='$libsfound'
15796 libspath='$libspath'
15797 libswanted='$libswanted'
15798 libswanted_uselargefiles='$libswanted_uselargefiles'
15799 line='$line'
15800 lint='$lint'
15801 lkflags='$lkflags'
15802 ln='$ln'
15803 lns='$lns'
15804 locincpth='$locincpth'
15805 loclibpth='$loclibpth'
15806 longdblsize='$longdblsize'
15807 longlongsize='$longlongsize'
15808 longsize='$longsize'
15809 lp='$lp'
15810 lpr='$lpr'
15811 ls='$ls'
15812 lseeksize='$lseeksize'
15813 lseektype='$lseektype'
15814 mail='$mail'
15815 mailx='$mailx'
15816 make='$make'
15817 make_set_make='$make_set_make'
15818 mallocobj='$mallocobj'
15819 mallocsrc='$mallocsrc'
15820 malloctype='$malloctype'
15821 man1dir='$man1dir'
15822 man1direxp='$man1direxp'
15823 man1ext='$man1ext'
15824 man3dir='$man3dir'
15825 man3direxp='$man3direxp'
15826 man3ext='$man3ext'
15827 mips_type='$mips_type'
15828 mkdir='$mkdir'
15829 mmaptype='$mmaptype'
15830 modetype='$modetype'
15831 more='$more'
15832 multiarch='$multiarch'
15833 mv='$mv'
15834 myarchname='$myarchname'
15835 mydomain='$mydomain'
15836 myhostname='$myhostname'
15837 myuname='$myuname'
15838 n='$n'
15839 netdb_hlen_type='$netdb_hlen_type'
15840 netdb_host_type='$netdb_host_type'
15841 netdb_name_type='$netdb_name_type'
15842 netdb_net_type='$netdb_net_type'
15843 nm='$nm'
15844 nm_opt='$nm_opt'
15845 nm_so_opt='$nm_so_opt'
15846 nonxs_ext='$nonxs_ext'
15847 nroff='$nroff'
15848 nvEUformat='$nvEUformat'
15849 nvFUformat='$nvFUformat'
15850 nvGUformat='$nvGUformat'
15851 nveformat='$nveformat'
15852 nvfformat='$nvfformat'
15853 nvgformat='$nvgformat'
15854 nvsize='$nvsize'
15855 nvtype='$nvtype'
15856 o_nonblock='$o_nonblock'
15857 obj_ext='$obj_ext'
15858 old_pthread_create_joinable='$old_pthread_create_joinable'
15859 optimize='$optimize'
15860 orderlib='$orderlib'
15861 osname='$osname'
15862 osvers='$osvers'
15863 otherlibdirs='$otherlibdirs'
15864 package='$package'
15865 pager='$pager'
15866 passcat='$passcat'
15867 patchlevel='$patchlevel'
15868 path_sep='$path_sep'
15869 perl5='$perl5'
15870 perl='$perl'
15871 perladmin='$perladmin'
15872 perllibs='$perllibs'
15873 perlpath='$perlpath'
15874 pg='$pg'
15875 phostname='$phostname'
15876 pidtype='$pidtype'
15877 plibpth='$plibpth'
15878 pm_apiversion='$pm_apiversion'
15879 pmake='$pmake'
15880 pr='$pr'
15881 prefix='$prefix'
15882 prefixexp='$prefixexp'
15883 privlib='$privlib'
15884 privlibexp='$privlibexp'
15885 prototype='$prototype'
15886 ptrsize='$ptrsize'
15887 quadkind='$quadkind'
15888 quadtype='$quadtype'
15889 randbits='$randbits'
15890 randfunc='$randfunc'
15891 randseedtype='$randseedtype'
15892 ranlib='$ranlib'
15893 rd_nodata='$rd_nodata'
15894 revision='$revision'
15895 rm='$rm'
15896 rmail='$rmail'
15897 runnm='$runnm'
15898 sPRIEUldbl='$sPRIEUldbl'
15899 sPRIFUldbl='$sPRIFUldbl'
15900 sPRIGUldbl='$sPRIGUldbl'
15901 sPRIXU64='$sPRIXU64'
15902 sPRId64='$sPRId64'
15903 sPRIeldbl='$sPRIeldbl'
15904 sPRIfldbl='$sPRIfldbl'
15905 sPRIgldbl='$sPRIgldbl'
15906 sPRIi64='$sPRIi64'
15907 sPRIo64='$sPRIo64'
15908 sPRIu64='$sPRIu64'
15909 sPRIx64='$sPRIx64'
15910 sSCNfldbl='$sSCNfldbl'
15911 sched_yield='$sched_yield'
15912 scriptdir='$scriptdir'
15913 scriptdirexp='$scriptdirexp'
15914 sed='$sed'
15915 seedfunc='$seedfunc'
15916 selectminbits='$selectminbits'
15917 selecttype='$selecttype'
15918 sendmail='$sendmail'
15919 sh='$sh'
15920 shar='$shar'
15921 sharpbang='$sharpbang'
15922 shmattype='$shmattype'
15923 shortsize='$shortsize'
15924 shrpenv='$shrpenv'
15925 shsharp='$shsharp'
15926 sig_count='$sig_count'
15927 sig_name='$sig_name'
15928 sig_name_init='$sig_name_init'
15929 sig_num='$sig_num'
15930 sig_num_init='$sig_num_init'
15931 signal_t='$signal_t'
15932 sitearch='$sitearch'
15933 sitearchexp='$sitearchexp'
15934 sitebin='$sitebin'
15935 sitebinexp='$sitebinexp'
15936 sitelib='$sitelib'
15937 sitelib_stem='$sitelib_stem'
15938 sitelibexp='$sitelibexp'
15939 siteprefix='$siteprefix'
15940 siteprefixexp='$siteprefixexp'
15941 sizesize='$sizesize'
15942 sizetype='$sizetype'
15943 sleep='$sleep'
15944 smail='$smail'
15945 so='$so'
15946 sockethdr='$sockethdr'
15947 socketlib='$socketlib'
15948 socksizetype='$socksizetype'
15949 sort='$sort'
15950 spackage='$spackage'
15951 spitshell='$spitshell'
15952 src='$src'
15953 ssizetype='$ssizetype'
15954 startperl='$startperl'
15955 startsh='$startsh'
15956 static_ext='$static_ext'
15957 stdchar='$stdchar'
15958 stdio_base='$stdio_base'
15959 stdio_bufsiz='$stdio_bufsiz'
15960 stdio_cnt='$stdio_cnt'
15961 stdio_filbuf='$stdio_filbuf'
15962 stdio_ptr='$stdio_ptr'
15963 stdio_stream_array='$stdio_stream_array'
15964 strings='$strings'
15965 submit='$submit'
15966 subversion='$subversion'
15967 sysman='$sysman'
15968 tail='$tail'
15969 tar='$tar'
15970 tbl='$tbl'
15971 tee='$tee'
15972 test='$test'
15973 timeincl='$timeincl'
15974 timetype='$timetype'
15975 touch='$touch'
15976 tr='$tr'
15977 trnl='$trnl'
15978 troff='$troff'
15979 u16size='$u16size'
15980 u16type='$u16type'
15981 u32size='$u32size'
15982 u32type='$u32type'
15983 u64size='$u64size'
15984 u64type='$u64type'
15985 u8size='$u8size'
15986 u8type='$u8type'
15987 uidformat='$uidformat'
15988 uidsign='$uidsign'
15989 uidsize='$uidsize'
15990 uidtype='$uidtype'
15991 uname='$uname'
15992 uniq='$uniq'
15993 uquadtype='$uquadtype'
15994 use5005threads='$use5005threads'
15995 use64bitall='$use64bitall'
15996 use64bitint='$use64bitint'
15997 usedl='$usedl'
15998 useithreads='$useithreads'
15999 uselargefiles='$uselargefiles'
16000 uselongdouble='$uselongdouble'
16001 usemorebits='$usemorebits'
16002 usemultiplicity='$usemultiplicity'
16003 usemymalloc='$usemymalloc'
16004 usenm='$usenm'
16005 useopcode='$useopcode'
16006 useperlio='$useperlio'
16007 useposix='$useposix'
16008 usesfio='$usesfio'
16009 useshrplib='$useshrplib'
16010 usesocks='$usesocks'
16011 usethreads='$usethreads'
16012 usevendorprefix='$usevendorprefix'
16013 usevfork='$usevfork'
16014 usrinc='$usrinc'
16015 uuname='$uuname'
16016 uvXUformat='$uvXUformat'
16017 uvoformat='$uvoformat'
16018 uvsize='$uvsize'
16019 uvtype='$uvtype'
16020 uvuformat='$uvuformat'
16021 uvxformat='$uvxformat'
16022 vendorarch='$vendorarch'
16023 vendorarchexp='$vendorarchexp'
16024 vendorbin='$vendorbin'
16025 vendorbinexp='$vendorbinexp'
16026 vendorlib='$vendorlib'
16027 vendorlib_stem='$vendorlib_stem'
16028 vendorlibexp='$vendorlibexp'
16029 vendorprefix='$vendorprefix'
16030 vendorprefixexp='$vendorprefixexp'
16031 version='$version'
16032 vi='$vi'
16033 voidflags='$voidflags'
16034 xlibpth='$xlibpth'
16035 xs_apiversion='$xs_apiversion'
16036 zcat='$zcat'
16037 zip='$zip'
16038 EOT
16039
16040 : Add in command line options if available
16041 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16042
16043 : add special variables
16044 $test -f $src/patchlevel.h && \
16045 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16046 echo "CONFIGDOTSH=true" >>config.sh
16047
16048 : propagate old symbols
16049 if $test -f UU/config.sh; then
16050         <UU/config.sh sort | uniq >UU/oldconfig.sh
16051         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16052         sort | uniq -u >UU/oldsyms
16053         set X `cat UU/oldsyms`
16054         shift
16055         case $# in
16056         0) ;;
16057         *)
16058                 cat <<EOM
16059 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16060 EOM
16061                 echo "# Variables propagated from previous config.sh file." >>config.sh
16062                 for sym in `cat UU/oldsyms`; do
16063                         echo "    Propagating $hint variable "'$'"$sym..."
16064                         eval 'tmp="$'"${sym}"'"'
16065                         echo "$tmp" | \
16066                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16067                 done
16068                 ;;
16069         esac
16070 fi
16071
16072 : Finish up by extracting the .SH files
16073 case "$alldone" in
16074 exit)
16075         $rm -rf UU
16076         echo "Done."
16077         exit 0
16078         ;;
16079 cont)
16080         ;;
16081 '')
16082         dflt=''
16083         nostick=true
16084         $cat <<EOM
16085
16086 If you'd like to make any changes to the config.sh file before I begin
16087 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16088
16089 EOM
16090         rp="Press return or use a shell escape to edit config.sh:"
16091         . UU/myread
16092         nostick=''
16093         case "$ans" in
16094         '') ;;
16095         *) : in case they cannot read
16096                 sh 1>&4 -c "$ans";;
16097         esac
16098         ;;
16099 esac
16100
16101 : if this fails, just run all the .SH files by hand
16102 . ./config.sh
16103
16104 echo " "
16105 exec 1>&4
16106 . ./UU/extract
16107
16108 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16109         dflt=y
16110         case "$silent" in
16111         true) ;;
16112         *)
16113                 $cat <<EOM
16114
16115 Now you need to generate make dependencies by running "$make depend".
16116 You might prefer to run it in background: "$make depend > makedepend.out &"
16117 It can take a while, so you might not want to run it right now.
16118
16119 EOM
16120                 ;;
16121         esac
16122         rp="Run $make depend now?"
16123         . UU/myread
16124         case "$ans" in
16125         y*)
16126                 $make depend && echo "Now you must run '$make'."
16127                 ;;
16128         *)
16129                 echo "You must run '$make depend' then '$make'."
16130                 ;;
16131         esac
16132 elif test -f [Mm]akefile; then
16133         echo " "
16134         echo "Now you must run a $make."
16135 else
16136         echo "Done."
16137 fi
16138
16139 if $test -f Policy.sh; then
16140     $cat <<EOM
16141
16142 If you compile $package on a different machine or from a different object
16143 directory, copy the Policy.sh file from this object directory to the
16144 new one before you run Configure -- this will help you with most of
16145 the policy defaults.
16146
16147 EOM
16148 fi
16149 if $test -f config.msg; then
16150     echo "Hmm.  I also noted the following information while running:"
16151     echo " "
16152     $cat config.msg >&4
16153     $rm -f config.msg
16154 fi
16155 $rm -f kit*isdone ark*isdone
16156 $rm -rf UU
16157
16158 : End of Configure
16159