This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
integrate changes#7069..7077,7079,7081..7087,7090,7092,7093,
[perl5.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 Wed Oct 11 00:32:36 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 installstyle=''
713 installusrbinperl=''
714 intsize=''
715 longsize=''
716 shortsize=''
717 libc=''
718 ldlibpthname=''
719 libperl=''
720 shrpenv=''
721 useshrplib=''
722 glibpth=''
723 libpth=''
724 loclibpth=''
725 plibpth=''
726 xlibpth=''
727 ignore_versioned_solibs=''
728 libs=''
729 libsdirs=''
730 libsfiles=''
731 libsfound=''
732 libspath=''
733 lns=''
734 d_PRIEUldbl=''
735 d_PRIFUldbl=''
736 d_PRIGUldbl=''
737 d_PRIeldbl=''
738 d_PRIfldbl=''
739 d_PRIgldbl=''
740 d_SCNfldbl=''
741 sPRIEUldbl=''
742 sPRIFUldbl=''
743 sPRIGUldbl=''
744 sPRIeldbl=''
745 sPRIfldbl=''
746 sPRIgldbl=''
747 sSCNfldbl=''
748 lseeksize=''
749 lseektype=''
750 make_set_make=''
751 d_mymalloc=''
752 freetype=''
753 mallocobj=''
754 mallocsrc=''
755 malloctype=''
756 usemymalloc=''
757 installman1dir=''
758 man1dir=''
759 man1direxp=''
760 man1ext=''
761 installman3dir=''
762 man3dir=''
763 man3direxp=''
764 man3ext=''
765 modetype=''
766 multiarch=''
767 mydomain=''
768 myhostname=''
769 phostname=''
770 c=''
771 n=''
772 d_eofnblk=''
773 eagain=''
774 o_nonblock=''
775 rd_nodata=''
776 netdb_hlen_type=''
777 netdb_host_type=''
778 netdb_name_type=''
779 netdb_net_type=''
780 groupcat=''
781 hostcat=''
782 passcat=''
783 orderlib=''
784 ranlib=''
785 d_perl_otherlibdirs=''
786 otherlibdirs=''
787 package=''
788 spackage=''
789 pager=''
790 api_revision=''
791 api_subversion=''
792 api_version=''
793 api_versionstring=''
794 patchlevel=''
795 revision=''
796 subversion=''
797 version=''
798 perl5=''
799 perladmin=''
800 perlpath=''
801 d_nv_preserves_uv=''
802 d_nv_preserves_uv_bits=''
803 i16size=''
804 i16type=''
805 i32size=''
806 i32type=''
807 i64size=''
808 i64type=''
809 i8size=''
810 i8type=''
811 ivsize=''
812 ivtype=''
813 nvsize=''
814 nvtype=''
815 u16size=''
816 u16type=''
817 u32size=''
818 u32type=''
819 u64size=''
820 u64type=''
821 u8size=''
822 u8type=''
823 uvsize=''
824 uvtype=''
825 ivdformat=''
826 nvEUformat=''
827 nvFUformat=''
828 nvGUformat=''
829 nveformat=''
830 nvfformat=''
831 nvgformat=''
832 uvXUformat=''
833 uvoformat=''
834 uvuformat=''
835 uvxformat=''
836 pidtype=''
837 prefix=''
838 prefixexp=''
839 installprivlib=''
840 privlib=''
841 privlibexp=''
842 prototype=''
843 ptrsize=''
844 d_PRIXU64=''
845 d_PRId64=''
846 d_PRIi64=''
847 d_PRIo64=''
848 d_PRIu64=''
849 d_PRIx64=''
850 sPRIXU64=''
851 sPRId64=''
852 sPRIi64=''
853 sPRIo64=''
854 sPRIu64=''
855 sPRIx64=''
856 d_quad=''
857 quadkind=''
858 quadtype=''
859 uquadtype=''
860 drand01=''
861 randbits=''
862 randfunc=''
863 randseedtype=''
864 seedfunc=''
865 installscript=''
866 scriptdir=''
867 scriptdirexp=''
868 selectminbits=''
869 selecttype=''
870 sh=''
871 sig_count=''
872 sig_name=''
873 sig_name_init=''
874 sig_num=''
875 sig_num_init=''
876 installsitearch=''
877 sitearch=''
878 sitearchexp=''
879 installsitebin=''
880 sitebin=''
881 sitebinexp=''
882 installsitelib=''
883 sitelib=''
884 sitelib_stem=''
885 sitelibexp=''
886 siteprefix=''
887 siteprefixexp=''
888 sizesize=''
889 sizetype=''
890 so=''
891 socksizetype=''
892 sharpbang=''
893 shsharp=''
894 spitshell=''
895 src=''
896 ssizetype=''
897 startperl=''
898 startsh=''
899 stdchar=''
900 d_stdio_stream_array=''
901 stdio_stream_array=''
902 sysman=''
903 trnl=''
904 uidformat=''
905 uidsign=''
906 uidsize=''
907 uidtype=''
908 archname64=''
909 use64bitall=''
910 use64bitint=''
911 ccflags_uselargefiles=''
912 ldflags_uselargefiles=''
913 libswanted_uselargefiles=''
914 uselargefiles=''
915 uselongdouble=''
916 usemorebits=''
917 usemultiplicity=''
918 nm_opt=''
919 nm_so_opt=''
920 runnm=''
921 usenm=''
922 useperlio=''
923 usesocks=''
924 d_oldpthreads=''
925 use5005threads=''
926 useithreads=''
927 usethreads=''
928 incpath=''
929 mips_type=''
930 usrinc=''
931 d_vendorarch=''
932 installvendorarch=''
933 vendorarch=''
934 vendorarchexp=''
935 d_vendorbin=''
936 installvendorbin=''
937 vendorbin=''
938 vendorbinexp=''
939 d_vendorlib=''
940 installvendorlib=''
941 vendorlib=''
942 vendorlib_stem=''
943 vendorlibexp=''
944 usevendorprefix=''
945 vendorprefix=''
946 vendorprefixexp=''
947 versiononly=''
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 $ccflags 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             $cat >&4 <<EOM
2137 You need to find a working C compiler.
2138 Either (purchase and) install the C compiler supplied by your OS vendor,
2139 or for a free C compiler try http://gcc.gnu.org/
2140 I cannot continue any further, aborting.
2141 EOM
2142             exit 1
2143         fi
2144     fi
2145     $rm -f try try.*
2146     ;;
2147 esac
2148 EOSC
2149
2150 : determine whether symbolic links are supported
2151 echo " "
2152 $touch blurfl
2153 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2154         echo "Symbolic links are supported." >&4
2155         lns="$ln -s"
2156 else
2157         echo "Symbolic links are NOT supported." >&4
2158         lns="$ln"
2159 fi
2160 $rm -f blurfl sym
2161
2162 : see whether [:lower:] and [:upper:] are supported character classes
2163 echo " "
2164 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2165 ABYZ)
2166         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2167         up='[:upper:]'
2168         low='[:lower:]'
2169         ;;
2170 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2171         # (0xc9 and 0xd1), therefore that is a nice testing point.
2172         if test "X$up" = X -o "X$low" = X; then
2173             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2174             ij) up='[A-Z]'
2175                 low='[a-z]'
2176                 ;;
2177             esac
2178         fi
2179         if test "X$up" = X -o "X$low" = X; then
2180             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2181             ij) up='A-Z'
2182                 low='a-z'
2183                 ;;
2184             esac
2185         fi
2186         if test "X$up" = X -o "X$low" = X; then
2187             case "`echo IJ | od -x 2>/dev/null`" in
2188             *C9D1*|*c9d1*)
2189                 echo "Hey, this might be EBCDIC." >&4
2190                 if test "X$up" = X -o "X$low" = X; then
2191                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2192                     ij) up='[A-IJ-RS-Z]'
2193                         low='[a-ij-rs-z]'
2194                         ;;
2195                     esac
2196                 fi
2197                 if test "X$up" = X -o "X$low" = X; then
2198                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2199                     ij) up='A-IJ-RS-Z'
2200                         low='a-ij-rs-z'
2201                         ;;
2202                     esac
2203                 fi
2204                 ;;
2205             esac
2206         fi
2207 esac
2208 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2209 ij)
2210     echo "Using $up and $low to convert case." >&4
2211     ;;
2212 *)
2213     echo "I don't know how to translate letters from upper to lower case." >&4
2214     echo "Your tr is not acting any way I know of." >&4
2215     exit 1
2216     ;;
2217 esac
2218 : set up the translation script tr, must be called with ./tr of course
2219 cat >tr <<EOSC
2220 $startsh
2221 case "\$1\$2" in
2222 '[A-Z][a-z]') exec $tr '$up' '$low';;
2223 '[a-z][A-Z]') exec $tr '$low' '$up';;
2224 esac
2225 exec $tr "\$@"
2226 EOSC
2227 chmod +x tr
2228 $eunicefix tr
2229
2230 : Try to determine whether config.sh was made on this system
2231 case "$config_sh" in
2232 '')
2233 myuname=`$uname -a 2>/dev/null`
2234 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2235 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2236 # because the A-Z/a-z are not consecutive.
2237 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2238         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2239 newmyuname="$myuname"
2240 dflt=n
2241 case "$knowitall" in
2242 '')
2243         if test -f ../config.sh; then
2244                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2245                         eval "`grep myuname= ../config.sh`"
2246                 fi
2247                 if test "X$myuname" = "X$newmyuname"; then
2248                         dflt=y
2249                 fi
2250         fi
2251         ;;
2252 *) dflt=y;;
2253 esac
2254
2255 : Get old answers from old config file if Configure was run on the
2256 : same system, otherwise use the hints.
2257 hint=default
2258 cd ..
2259 if test -f config.sh; then
2260         echo " "
2261         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2262         . UU/myread
2263         case "$ans" in
2264         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2265         *)  echo "Fetching default answers from your old config.sh file..." >&4
2266                 tmp_n="$n"
2267                 tmp_c="$c"
2268                 tmp_sh="$sh"
2269                 . ./config.sh
2270                 cp config.sh UU
2271                 n="$tmp_n"
2272                 c="$tmp_c"
2273                 : Older versions did not always set $sh.  Catch re-use of such
2274                 : an old config.sh.
2275                 case "$sh" in
2276                 '') sh="$tmp_sh" ;;
2277                 esac
2278                 hint=previous
2279                 ;;
2280         esac
2281 fi
2282 . ./UU/checkcc
2283 if test ! -f config.sh; then
2284         $cat <<EOM
2285
2286 First time through, eh?  I have some defaults handy for some systems
2287 that need some extra help getting the Configure answers right:
2288
2289 EOM
2290         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2291         dflt=''
2292         : Half the following guesses are probably wrong... If you have better
2293         : tests or hints, please send them to perlbug@perl.org
2294         : The metaconfig authors would also appreciate a copy...
2295         $test -f /irix && osname=irix
2296         $test -f /xenix && osname=sco_xenix
2297         $test -f /dynix && osname=dynix
2298         $test -f /dnix && osname=dnix
2299         $test -f /lynx.os && osname=lynxos
2300         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2301         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2302         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2303         $test -f /bin/mips && /bin/mips && osname=mips
2304         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2305                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2306         $test -d /usr/apollo/bin && osname=apollo
2307         $test -f /etc/saf/_sactab && osname=svr4
2308         $test -d /usr/include/minix && osname=minix
2309         if $test -d /MachTen -o -d /MachTen_Folder; then
2310                 osname=machten
2311                 if $test -x /sbin/version; then
2312                         osvers=`/sbin/version | $awk '{print $2}' |
2313                         $sed -e 's/[A-Za-z]$//'`
2314                 elif $test -x /usr/etc/version; then
2315                         osvers=`/usr/etc/version | $awk '{print $2}' |
2316                         $sed -e 's/[A-Za-z]$//'`
2317                 else
2318                         osvers="$2.$3"
2319                 fi
2320         fi
2321
2322         $test -f /sys/posix.dll &&
2323                 $test -f /usr/bin/what &&
2324                 set X `/usr/bin/what /sys/posix.dll` &&
2325                 $test "$3" = UWIN &&
2326                 osname=uwin &&
2327                 osvers="$5"
2328
2329         if $test -f $uname; then
2330                 set X $myuname
2331                 shift
2332
2333                 case "$5" in
2334                 fps*) osname=fps ;;
2335                 mips*)
2336                         case "$4" in
2337                         umips) osname=umips ;;
2338                         *) osname=mips ;;
2339                         esac;;
2340                 [23]100) osname=mips ;;
2341                 next*) osname=next ;;
2342                 i386*)
2343                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2344                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2345                                 osname='sco'
2346                                 osvers=$tmp
2347                         elif $test -f /etc/kconfig; then
2348                                 osname=isc
2349                                 if test "$lns" = "$ln -s"; then
2350                                         osvers=4
2351                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2352                                         osvers=3
2353                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2354                                         osvers=2
2355                                 fi
2356                         fi
2357                         tmp=''
2358                         ;;
2359                 pc*)
2360                         if test -n "$DJGPP"; then
2361                                 osname=dos
2362                                 osvers=djgpp
2363                         fi
2364                         ;;
2365                 esac
2366
2367                 case "$1" in
2368                 aix) osname=aix
2369                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2370                         case "$tmp" in
2371                         'not found') osvers="$4"."$3" ;;
2372                         '<3240'|'<>3240') osvers=3.2.0 ;;
2373                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2374                         '=3250'|'>3250') osvers=3.2.5 ;;
2375                         *) osvers=$tmp;;
2376                         esac
2377                         ;;
2378                 bsd386) osname=bsd386
2379                         osvers=`$uname -r`
2380                         ;;
2381                 cygwin*) osname=cygwin
2382                         osvers="$3"
2383                         ;;
2384                 *dc.osx) osname=dcosx
2385                         osvers="$3"
2386                         ;;
2387                 dnix) osname=dnix
2388                         osvers="$3"
2389                         ;;
2390                 domainos) osname=apollo
2391                         osvers="$3"
2392                         ;;
2393                 dgux) osname=dgux 
2394                         osvers="$3"
2395                         ;;
2396                 dynixptx*) osname=dynixptx
2397                         osvers=`echo "$4"|sed 's/^v//'`
2398                         ;;
2399                 freebsd) osname=freebsd 
2400                         osvers="$3" ;;
2401                 genix) osname=genix ;;
2402                 hp*) osname=hpux 
2403                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2404                         ;;
2405                 irix*) osname=irix
2406                         case "$3" in
2407                         4*) osvers=4 ;;
2408                         5*) osvers=5 ;;
2409                         *)      osvers="$3" ;;
2410                         esac
2411                         ;;
2412                 linux) osname=linux
2413                         case "$3" in
2414                         *)      osvers="$3" ;;
2415                         esac
2416                         ;;
2417                 MiNT) osname=mint
2418                         ;;
2419                 netbsd*) osname=netbsd
2420                         osvers="$3"
2421                         ;;
2422                 news-os) osvers="$3"
2423                         case "$3" in
2424                         4*) osname=newsos4 ;;
2425                         *) osname=newsos ;;
2426                         esac
2427                         ;;
2428                 next*) osname=next ;;
2429                 POSIX-BC | posix-bc ) osname=posix-bc
2430                         osvers="$3"
2431                         ;;
2432                 powerux | power_ux | powermax_os | powermaxos | \
2433                 powerunix | power_unix) osname=powerux
2434                         osvers="$3"
2435                         ;;
2436                 qnx) osname=qnx
2437                         osvers="$4"
2438                         ;;
2439                 solaris) osname=solaris
2440                         case "$3" in
2441                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2442                         *)      osvers="$3" ;;
2443                         esac
2444                         ;;
2445                 sunos) osname=sunos
2446                         case "$3" in
2447                         5*) osname=solaris
2448                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2449                         *)      osvers="$3" ;;
2450                         esac
2451                         ;;
2452                 titanos) osname=titanos
2453                         case "$3" in
2454                         1*) osvers=1 ;;
2455                         2*) osvers=2 ;;
2456                         3*) osvers=3 ;;
2457                         4*) osvers=4 ;;
2458                         *)      osvers="$3" ;;
2459                         esac
2460                         ;;
2461                 ultrix) osname=ultrix
2462                         osvers="$3"
2463                         ;;
2464                 osf1|mls+)      case "$5" in
2465                                 alpha)
2466                                         osname=dec_osf
2467                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
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 -o gccvers $ldflags 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 -o try $optimize $ccflags $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 -o try $optimize $ccflags $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 -o ${mc_file} $optimize $ccflags $ldflags $* ${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 -o ${mc_file} $optimize $ccflags $ldflags $* ${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 -o t $optimize $ccflags $ldflags 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 perl also as /usr/bin/perl
6271
6272 echo " "
6273 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6274         $cat <<EOM
6275 Many scripts expect perl to be installed as /usr/bin/perl.
6276 I can install the perl you are about to compile also as /usr/bin/perl
6277 (in addition to $installbin/perl).
6278 EOM
6279         case "$installusrbinperl" in
6280         "$undef"|[nN]*) dflt='n';;
6281         *)              dflt='y';;
6282         esac
6283         rp="Do you want to install perl as /usr/bin/perl?"
6284         . ./myread
6285         case "$ans" in
6286         [yY]*)  val="$define";;
6287         *)      val="$undef" ;;
6288         esac
6289 else
6290         val="$undef"
6291 fi
6292 set installusrbinperl
6293 eval $setvar
6294
6295 : see if dld is available
6296 set dld.h i_dld
6297 eval $inhdr
6298
6299 : see if dlopen exists
6300 xxx_runnm="$runnm"
6301 runnm=false
6302 set dlopen d_dlopen
6303 eval $inlibc
6304 runnm="$xxx_runnm"
6305
6306 : determine which dynamic loading, if any, to compile in
6307 echo " "
6308 dldir="ext/DynaLoader"
6309 case "$usedl" in
6310 $define|y|true)
6311         dflt='y'
6312         usedl="$define"
6313         ;;
6314 $undef|n|false)
6315         dflt='n'
6316         usedl="$undef"
6317         ;;
6318 *) 
6319         dflt='n'
6320         case "$d_dlopen" in
6321             $define) dflt='y' ;;
6322         esac
6323         case "$i_dld" in
6324             $define) dflt='y' ;;
6325         esac
6326         : Does a dl_xxx.xs file exist for this operating system
6327         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6328         ;;
6329 esac
6330 rp="Do you wish to use dynamic loading?"
6331 . ./myread
6332 usedl="$ans"
6333 case "$ans" in
6334 y*) usedl="$define"
6335         case "$dlsrc" in
6336         '')
6337                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6338                         dflt="$dldir/dl_${osname}.xs"
6339                 elif $test "$d_dlopen" = "$define" ; then
6340                         dflt="$dldir/dl_dlopen.xs"
6341                 elif $test "$i_dld" = "$define" ; then
6342                         dflt="$dldir/dl_dld.xs"
6343                 else
6344                         dflt=''
6345                 fi
6346                 ;;
6347         *)      dflt="$dldir/$dlsrc"
6348                 ;;
6349         esac
6350     echo "The following dynamic loading files are available:"
6351         : Can not go over to $dldir because getfile has path hard-coded in.
6352         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6353         rp="Source file to use for dynamic loading"
6354         fn="fne"
6355         gfpth="$src"
6356         . ./getfile
6357         usedl="$define"
6358         : emulate basename
6359         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6360
6361         $cat << EOM
6362
6363 Some systems may require passing special flags to $cc -c to
6364 compile modules that will be used to create a shared library.
6365 To use no flags, say "none".
6366
6367 EOM
6368     case "$cccdlflags" in
6369     '') case "$gccversion" in
6370                 '') case "$osname" in
6371                         hpux)   dflt='+z' ;;
6372                         next)   dflt='none' ;;
6373                         irix*)  dflt='-KPIC' ;;
6374                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6375                         sunos)  dflt='-pic' ;;
6376                         *)      dflt='none' ;;
6377                     esac
6378                         ;;
6379                 *)  case "$osname" in
6380                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6381                         *)      dflt='-fpic' ;;
6382                     esac ;;
6383             esac ;;
6384         ' ') dflt='none' ;;
6385     *)  dflt="$cccdlflags" ;;
6386     esac
6387     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6388     . ./myread
6389     case "$ans" in
6390     none) cccdlflags=' ' ;;
6391     *) cccdlflags="$ans" ;;
6392     esac
6393
6394     cat << EOM
6395
6396 Some systems use ld to create libraries that can be dynamically loaded,
6397 while other systems (such as those using ELF) use $cc.
6398
6399 EOM
6400         case "$ld" in
6401         '')     $cat >try.c <<'EOM'
6402 /* Test for whether ELF binaries are produced */
6403 #include <fcntl.h>
6404 #include <stdlib.h>
6405 int main() {
6406         char b[4];
6407         int i = open("a.out",O_RDONLY);
6408         if(i == -1) 
6409                 exit(1); /* fail */
6410         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6411                 exit(0); /* succeed (yes, it's ELF) */
6412         else
6413                 exit(1); /* fail */
6414 }
6415 EOM
6416                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6417                         cat <<EOM
6418 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6419 EOM
6420                         dflt="$cc"
6421                 else
6422                         echo "I'll use ld to build dynamic libraries."
6423                         dflt='ld'
6424                 fi
6425                 rm -f try.c a.out
6426                 ;;
6427         *)      dflt="$ld"
6428                 ;;
6429         esac
6430
6431     rp="What command should be used to create dynamic libraries?"
6432     . ./myread
6433         ld="$ans"
6434
6435     cat << EOM
6436
6437 Some systems may require passing special flags to $ld to create a
6438 library that can be dynamically loaded.  If your ld flags include
6439 -L/other/path options to locate libraries outside your loader's normal
6440 search path, you may need to specify those -L options here as well.  To
6441 use no flags, say "none".
6442
6443 EOM
6444     case "$lddlflags" in
6445     '') case "$osname" in
6446                         beos) dflt='-nostart' ;;
6447                         hpux) dflt='-b';
6448                               case "$gccversion" in
6449                               '') dflt="$dflt +vnocompatwarnings" ;;
6450                               esac
6451                               ;;        
6452                         linux|irix*)    dflt='-shared' ;;
6453                         next)  dflt='none' ;;
6454                         solaris) dflt='-G' ;;
6455                         sunos) dflt='-assert nodefinitions' ;;
6456                         svr4*|esix*) dflt="-G $ldflags" ;;
6457                 *)     dflt='none' ;;
6458                         esac
6459                         ;;
6460     *) dflt="$lddlflags" ;;
6461     esac
6462
6463         : Try to guess additional flags to pick up local libraries.
6464         : Be careful not to append to a plain 'none'
6465         case "$dflt" in
6466         none) dflt='' ;;
6467         esac
6468         for thisflag in $ldflags; do
6469                 case "$thisflag" in
6470                 -L*|-R*)
6471                         case " $dflt " in
6472                         *" $thisflag "*) ;;
6473                         *) dflt="$dflt $thisflag" ;;
6474                         esac
6475                         ;;
6476                 esac
6477         done
6478
6479         case "$dflt" in
6480         ''|' ') dflt='none' ;;
6481         esac
6482
6483     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6484     . ./myread
6485     case "$ans" in
6486     none) lddlflags=' ' ;;
6487     *) lddlflags="$ans" ;;
6488     esac
6489
6490         cat <<EOM
6491
6492 Some systems may require passing special flags to $cc to indicate that
6493 the resulting executable will use dynamic linking.  To use no flags,
6494 say "none".
6495
6496 EOM
6497     case "$ccdlflags" in
6498     '') case "$osname" in
6499                 hpux)   dflt='-Wl,-E' ;;
6500                 linux)  dflt='-rdynamic' ;;
6501                 next)   dflt='none' ;;
6502                 sunos)  dflt='none' ;;
6503                 *)      dflt='none' ;;
6504             esac ;;
6505     ' ')  dflt='none' ;;
6506     *)  dflt="$ccdlflags" ;;
6507     esac
6508     rp="Any special flags to pass to $cc to use dynamic linking?"
6509     . ./myread
6510     case "$ans" in
6511     none) ccdlflags=' ' ;;
6512     *) ccdlflags="$ans" ;;
6513     esac
6514     ;;
6515 *)  usedl="$undef"
6516         ld='ld'
6517     dlsrc='dl_none.xs'
6518     lddlflags=''
6519     ccdlflags=''
6520     ;;
6521 esac
6522
6523 also=''
6524 case "$usedl" in
6525 $undef)
6526         # No dynamic loading being used, so don't bother even to prompt.
6527         useshrplib='false'
6528         ;;
6529 *)      case "$useshrplib" in
6530         '')     case "$osname" in
6531                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6532                         dflt=y
6533                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6534                         ;;
6535                 next*)
6536                         case "$osvers" in
6537                         4*)     dflt=y
6538                                 also='Building a shared libperl is needed for MAB support.'
6539                                 ;;
6540                         *)      dflt=n
6541                                 ;;
6542                         esac
6543                         ;;
6544                 *)      dflt=n
6545                         ;;
6546                 esac
6547                 ;;
6548         $define|true|[Yy]*)
6549                 dflt=y
6550                 ;;
6551         *)      dflt=n
6552                 ;;
6553         esac
6554         $cat << EOM
6555
6556 The perl executable is normally obtained by linking perlmain.c with
6557 libperl${_a}, any static extensions (usually just DynaLoader), and
6558 any other libraries needed on this system (such as -lm, etc.).  Since
6559 your system supports dynamic loading, it is probably possible to build
6560 a shared libperl.$so.  If you will have more than one executable linked
6561 to libperl.$so, this will significantly reduce the size of each
6562 executable, but it may have a noticeable affect on performance.  The
6563 default is probably sensible for your system.
6564 $also
6565
6566 EOM
6567         rp="Build a shared libperl.$so (y/n)"
6568         . ./myread
6569         case "$ans" in
6570         true|$define|[Yy]*)
6571                 useshrplib='true'  ;;
6572         *)      useshrplib='false' ;;
6573         esac
6574         ;;
6575 esac
6576
6577 case "$useshrplib" in
6578 true)
6579         case "$libperl" in
6580         '')
6581                 # Figure out a good name for libperl.so.  Since it gets stored in
6582                 # a version-specific architecture-dependent library, the version
6583                 # number isn't really that important, except for making cc/ld happy.
6584                 #
6585                 # A name such as libperl.so.3.1
6586                 majmin="libperl.$so.$patchlevel.$subversion"
6587                 # A name such as libperl.so.301
6588                 majonly=`echo $patchlevel $subversion |
6589                         $awk '{printf "%d%02d", $1, $2}'`
6590                 majonly=libperl.$so.$majonly
6591                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6592                 # rely on figuring it out from the naming of libc.
6593                 case "${osname}${osvers}" in
6594                 next4*)
6595                         dflt=libperl.5.$so
6596                         # XXX How handle the --version stuff for MAB?
6597                         ;;
6598                 linux*)  # ld won't link with a bare -lperl otherwise.
6599                         dflt=libperl.$so
6600                         ;;
6601                 cygwin*) # include version
6602                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6603                         ;;
6604                 *)      # Try to guess based on whether libc has major.minor.
6605                         case "$libc" in
6606                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6607                         *libc.$so.[0-9]*) dflt=$majonly ;;
6608                         *)      dflt=libperl.$so ;;
6609                         esac
6610                         ;;
6611                 esac
6612                 ;;
6613         *)      dflt=$libperl
6614                 ;;
6615         esac
6616         cat << EOM
6617
6618 I need to select a good name for the shared libperl.  If your system uses
6619 library names with major and minor numbers, then you might want something
6620 like $majmin.  Alternatively, if your system uses a single version
6621 number for shared libraries, then you might want to use $majonly.
6622 Or, your system might be quite happy with a simple libperl.$so.
6623
6624 Since the shared libperl will get installed into a version-specific
6625 architecture-dependent directory, the version number of the shared perl
6626 library probably isn't important, so the default should be o.k.
6627
6628 EOM
6629         rp='What name do you want to give to the shared libperl?'
6630         . ./myread
6631         libperl=$ans
6632         echo "Ok, I'll use $libperl"
6633         ;;
6634 *)
6635         libperl="libperl${_a}"
6636         ;;
6637 esac
6638
6639 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6640 case "$shrpdir" in
6641 '') ;;
6642 *)      $cat >&4 <<EOM
6643 WARNING:  Use of the shrpdir variable for the installation location of
6644 the shared $libperl is not supported.  It was never documented and
6645 will not work in this version.  Let me (perlbug@perl.org)
6646 know of any problems this may cause.
6647
6648 EOM
6649         case "$shrpdir" in
6650         "$archlibexp/CORE")
6651                 $cat >&4 <<EOM
6652 But your current setting of $shrpdir is
6653 the default anyway, so it's harmless.
6654 EOM
6655                 ;;
6656         *)
6657                 $cat >&4 <<EOM
6658 Further, your current attempted setting of $shrpdir
6659 conflicts with the value of $archlibexp/CORE
6660 that installperl will use.
6661 EOM
6662                 ;;
6663         esac
6664         ;;
6665 esac
6666
6667 # How will the perl executable find the installed shared $libperl?
6668 # Add $xxx to ccdlflags.
6669 # If we can't figure out a command-line option, use $shrpenv to
6670 # set env LD_RUN_PATH.  The main perl makefile uses this.
6671 shrpdir=$archlibexp/CORE
6672 xxx=''
6673 tmp_shrpenv=''
6674 if "$useshrplib"; then
6675     case "$osname" in 
6676         aix)
6677                 # We'll set it in Makefile.SH...
6678                 ;;
6679         solaris|netbsd)
6680                 xxx="-R $shrpdir"
6681                 ;;
6682         freebsd)
6683                 xxx="-Wl,-R$shrpdir"
6684                 ;;
6685         linux|irix*|dec_osf)
6686                 xxx="-Wl,-rpath,$shrpdir"
6687                 ;;
6688         next)
6689                 # next doesn't like the default...
6690                 ;;
6691         beos)
6692                 # beos doesn't like the default, either.
6693                 ;;
6694         hpux*)
6695                 # hpux doesn't like the default, either.
6696                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6697                 ;;
6698         *)
6699                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6700                 ;;
6701         esac
6702         case "$xxx" in
6703         '') ;;
6704         *)      
6705                 # Only add $xxx if it isn't already in ccdlflags.
6706                 case " $ccdlflags " in
6707                 *" $xxx "*)     ;;
6708                 *)      ccdlflags="$ccdlflags $xxx"
6709                         cat <<EOM >&4
6710
6711 Adding $xxx to the flags
6712 passed to $ld so that the perl executable will find the 
6713 installed shared $libperl.
6714
6715 EOM
6716                         ;;
6717                 esac
6718                 ;;
6719         esac
6720 fi
6721 # Fix ccdlflags in AIX for building external extensions.
6722 # (For building Perl itself bare -bE:perl.exp is needed,
6723 #  Makefile.SH takes care of this.)
6724 case "$osname" in
6725 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6726 esac
6727 # Respect a hint or command-line value.
6728 case "$shrpenv" in
6729 '') shrpenv="$tmp_shrpenv" ;;
6730 esac
6731 case "$ldlibpthname" in
6732 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6733 none)   ldlibpthname='' ;;
6734 esac
6735
6736 : determine where manual pages are on this system
6737 echo " "
6738 case "$sysman" in
6739 '') 
6740         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6741         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6742         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6743         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6744         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6745         sysman=`./loc . /usr/man/man1 $syspath`
6746         ;;
6747 esac
6748 if $test -d "$sysman"; then
6749         echo "System manual is in $sysman." >&4
6750 else
6751         echo "Could not find manual pages in source form." >&4
6752 fi
6753
6754 : determine where manual pages go
6755 set man1dir man1dir none
6756 eval $prefixit
6757 $cat <<EOM
6758
6759 $spackage has manual pages available in source form.
6760 EOM
6761 case "$nroff" in
6762 nroff)
6763         echo "However, you don't have nroff, so they're probably useless to you."
6764         case "$man1dir" in
6765         '') man1dir="none";;
6766         esac;;
6767 esac
6768 echo "If you don't want the manual sources installed, answer 'none'."
6769 case "$man1dir" in
6770 ' ') dflt=none
6771         ;;
6772 '')
6773         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6774         lookpath="$lookpath $prefixexp/man/p_man/man1"
6775         lookpath="$lookpath $prefixexp/man/u_man/man1"
6776         lookpath="$lookpath $prefixexp/man/man.1"
6777         case "$sysman" in
6778         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6779         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6780         esac
6781         set dflt
6782         eval $prefixup
6783         ;;
6784 *)  dflt="$man1dir"
6785         ;;
6786 esac
6787 echo " "
6788 fn=dn+~
6789 rp="Where do the main $spackage manual pages (source) go?"
6790 . ./getfile
6791 if $test "X$man1direxp" != "X$ansexp"; then
6792         installman1dir=''
6793 fi
6794 man1dir="$ans"
6795 man1direxp="$ansexp"
6796 case "$man1dir" in
6797 '')     man1dir=' '
6798         installman1dir='';;
6799 esac
6800
6801 : Change installation prefix, if necessary.
6802 if $test X"$prefix" != X"$installprefix"; then
6803         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6804 else
6805         installman1dir="$man1direxp"
6806 fi
6807
6808 : What suffix to use on installed man pages
6809
6810 case "$man1dir" in
6811 ' ')
6812         man1ext='0'
6813         ;;
6814 *)
6815         rp="What suffix should be used for the main $spackage man pages?"
6816         case "$man1ext" in
6817         '')     case "$man1dir" in
6818                 *1)  dflt=1 ;;
6819                 *1p) dflt=1p ;;
6820                 *1pm) dflt=1pm ;;
6821                 *l) dflt=l;;
6822                 *n) dflt=n;;
6823                 *o) dflt=o;;
6824                 *p) dflt=p;;
6825                 *C) dflt=C;;
6826                 *L) dflt=L;;
6827                 *L1) dflt=L1;;
6828                 *) dflt=1;;
6829                 esac
6830                 ;;
6831         *)      dflt="$man1ext";;
6832         esac
6833         . ./myread
6834         man1ext="$ans"
6835         ;;
6836 esac
6837
6838 : see if we can have long filenames
6839 echo " "
6840 first=123456789abcdef
6841 $rm -f $first
6842 if (echo hi >$first) 2>/dev/null; then
6843         if $test -f 123456789abcde; then
6844                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6845                 val="$undef"
6846         else
6847                 echo 'You can have filenames longer than 14 characters.'>&4
6848                 val="$define"
6849         fi
6850 else
6851         $cat <<'EOM'
6852 You can't have filenames longer than 14 chars.
6853 You can't even think about them!
6854 EOM
6855         val="$undef"
6856 fi 
6857 set d_flexfnam
6858 eval $setvar
6859 $rm -rf 123456789abcde*
6860
6861 : determine where library module manual pages go
6862 set man3dir man3dir none
6863 eval $prefixit
6864 $cat <<EOM
6865
6866 $spackage has manual pages for many of the library modules.
6867 EOM
6868
6869 case "$nroff" in
6870 nroff)
6871         $cat <<'EOM'
6872 However, you don't have nroff, so they're probably useless to you.
6873 EOM
6874         case "$man3dir" in
6875         '') man3dir="none";;
6876         esac;;
6877 esac
6878
6879 case "$d_flexfnam" in
6880 undef)
6881         $cat <<'EOM'
6882 However, your system can't handle the long file names like File::Basename.3. 
6883 EOM
6884         case "$man3dir" in
6885         '') man3dir="none";;
6886         esac;;
6887 esac
6888
6889 echo "If you don't want the manual sources installed, answer 'none'."
6890 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6891 case "$man3dir" in
6892 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6893         if $test -d "$privlib/man/man3"; then
6894                 cat <<EOM >&4
6895
6896 WARNING:  Previous versions of perl installed man3 pages into
6897 $privlib/man/man3.  This version will suggest a 
6898 new default of $dflt.  
6899 EOM
6900                 tdflt=$dflt
6901                 dflt='n'
6902                 rp='Do you wish to preserve the old behavior?(y/n)'
6903                 . ./myread
6904                 case "$ans" in
6905                 y*) dflt="$privlib/man/man3" ;;
6906                 *)  dflt=$tdflt ;;
6907                 esac
6908     fi
6909         ;;
6910 *)      dflt="$man3dir" ;;
6911 esac
6912 case "$dflt" in
6913 ' ') dflt=none ;;
6914 esac
6915 echo " "
6916 fn=dn+~
6917 rp="Where do the $package library man pages (source) go?"
6918 . ./getfile
6919 man3dir="$ans"
6920 man3direxp="$ansexp"
6921 case "$man3dir" in
6922 '')     man3dir=' '
6923         installman3dir='';;
6924 esac
6925
6926 : Change installation prefix, if necessary.
6927 if $test X"$prefix" != X"$installprefix"; then
6928         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6929 else
6930         installman3dir="$man3direxp"
6931 fi
6932
6933 : What suffix to use on installed man pages
6934 case "$man3dir" in
6935 ' ')
6936         man3ext='0'
6937         ;;
6938 *)
6939         rp="What suffix should be used for the $package library man pages?"
6940         case "$man3ext" in
6941         '')     case "$man3dir" in
6942                 *3)  dflt=3 ;;
6943                 *3p) dflt=3p ;;
6944                 *3pm) dflt=3pm ;;
6945                 *l) dflt=l;;
6946                 *n) dflt=n;;
6947                 *o) dflt=o;;
6948                 *p) dflt=p;;
6949                 *C) dflt=C;;
6950                 *L) dflt=L;;
6951                 *L3) dflt=L3;;
6952                 *) dflt=3;;
6953                 esac
6954                 ;;
6955         *)      dflt="$man3ext";;
6956         esac
6957         . ./myread
6958         man3ext="$ans"
6959         ;;
6960 esac
6961
6962 : see if we have to deal with yellow pages, now NIS.
6963 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6964         if $test -f /usr/etc/nibindd; then
6965                 echo " "
6966                 echo "I'm fairly confident you're on a NeXT."
6967                 echo " "
6968                 rp='Do you get the hosts file via NetInfo?'
6969                 dflt=y
6970                 case "$hostcat" in
6971                 nidump*) ;;
6972                 '') ;;
6973                 *) dflt=n;;
6974                 esac
6975                 . ./myread
6976                 case "$ans" in
6977                 y*) hostcat='nidump hosts .';;
6978                 *)      case "$hostcat" in
6979                         nidump*) hostcat='';;
6980                         esac
6981                         ;;
6982                 esac
6983         fi
6984         case "$hostcat" in
6985         nidump*) ;;
6986         *)
6987                 case "$hostcat" in
6988                 *ypcat*) dflt=y;;
6989                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6990                                 dflt=y
6991                         else
6992                                 dflt=n
6993                         fi;;
6994                 *) dflt=n;;
6995                 esac
6996                 echo " "
6997                 rp='Are you getting the hosts file via yellow pages?'
6998                 . ./myread
6999                 case "$ans" in
7000                 y*) hostcat='ypcat hosts';;
7001                 *) hostcat='cat /etc/hosts';;
7002                 esac
7003                 ;;
7004         esac
7005 fi
7006 case "$hostcat" in
7007 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7008 esac
7009 case "$groupcat" in
7010 '') test -f /etc/group && groupcat='cat /etc/group';;
7011 esac
7012 case "$passcat" in
7013 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7014 esac
7015
7016 : now get the host name
7017 echo " "
7018 echo "Figuring out host name..." >&4
7019 case "$myhostname" in
7020 '') cont=true
7021         echo 'Maybe "hostname" will work...'
7022         if tans=`sh -c hostname 2>&1` ; then
7023                 myhostname=$tans
7024                 phostname=hostname
7025                 cont=''
7026         fi
7027         ;;
7028 *) cont='';;
7029 esac
7030 if $test "$cont"; then
7031         if ./xenix; then
7032                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7033                 if tans=`cat /etc/systemid 2>&1` ; then
7034                         myhostname=$tans
7035                         phostname='cat /etc/systemid'
7036                         echo "Whadyaknow.  Xenix always was a bit strange..."
7037                         cont=''
7038                 fi
7039         elif $test -r /etc/systemid; then
7040                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7041         fi
7042 fi
7043 if $test "$cont"; then
7044         echo 'No, maybe "uuname -l" will work...'
7045         if tans=`sh -c 'uuname -l' 2>&1` ; then
7046                 myhostname=$tans
7047                 phostname='uuname -l'
7048         else
7049                 echo 'Strange.  Maybe "uname -n" will work...'
7050                 if tans=`sh -c 'uname -n' 2>&1` ; then
7051                         myhostname=$tans
7052                         phostname='uname -n'
7053                 else
7054                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7055                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7056                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7057                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7058                         else
7059                                 case "$myhostname" in
7060                                 '') echo "Does this machine have an identity crisis or something?"
7061                                         phostname='';;
7062                                 *)
7063                                         echo "Well, you said $myhostname before..."
7064                                         phostname='echo $myhostname';;
7065                                 esac
7066                         fi
7067                 fi
7068         fi
7069 fi
7070 : you do not want to know about this
7071 set $myhostname
7072 myhostname=$1
7073
7074 : verify guess
7075 if $test "$myhostname" ; then
7076         dflt=y
7077         rp='Your host name appears to be "'$myhostname'".'" Right?"
7078         . ./myread
7079         case "$ans" in
7080         y*) ;;
7081         *) myhostname='';;
7082         esac
7083 fi
7084
7085 : bad guess or no guess
7086 while $test "X$myhostname" = X ; do
7087         dflt=''
7088         rp="Please type the (one word) name of your host:"
7089         . ./myread
7090         myhostname="$ans"
7091 done
7092
7093 : translate upper to lower if necessary
7094 case "$myhostname" in
7095 *[A-Z]*)
7096         echo "(Normalizing case in your host name)"
7097         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7098         ;;
7099 esac
7100
7101 case "$myhostname" in
7102 *.*)
7103         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7104         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7105         echo "(Trimming domain name from host name--host name is now $myhostname)"
7106         ;;
7107 *) case "$mydomain" in
7108         '')
7109                 {
7110                         test "X$hostcat" = "Xypcat hosts" &&
7111                         ypmatch "$myhostname" hosts 2>/dev/null |\
7112                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7113                         $test -s hosts
7114                 } || {
7115                         test "X$hostcat" != "X" &&
7116                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7117                                         /[       ]$myhostname[  . ]/p" > hosts
7118                 }
7119                 tmp_re="[       . ]"
7120                 if $test -f hosts; then
7121                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7122                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7123                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7124                                 hosts | $sort | $uniq | \
7125                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7126                         case `$echo X$dflt` in
7127                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7128                                 dflt=.
7129                                 ;;
7130                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7131                                 ;;
7132                         esac
7133                 else
7134                         echo "(I cannot locate a hosts database anywhere)"
7135                         dflt=.
7136                 fi
7137                 case "$dflt" in
7138                 .)
7139                         tans=`./loc resolv.conf X /etc /usr/etc`
7140                         if $test -f "$tans"; then
7141                                 echo "(Attempting domain name extraction from $tans)"
7142                                 dflt=.`$sed -n -e 's/   / /g' \
7143                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7144                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7145                                 case "$dflt" in
7146                                 .) dflt=.`$sed -n -e 's/        / /g' \
7147                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7148                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7149                                         ;;
7150                                 esac
7151                         fi
7152                         ;;
7153                 esac
7154                 case "$dflt" in
7155                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7156                         dflt=.`sh -c domainname 2>/dev/null`
7157                         case "$dflt" in
7158                         '') dflt='.';;
7159                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7160                         esac
7161                         ;;
7162                 esac
7163                 case "$dflt" in
7164                 .) echo "(Lost all hope -- silly guess then)"
7165                         dflt='.uucp'
7166                         ;;
7167                 esac
7168                 $rm -f hosts
7169                 ;;
7170         *) dflt="$mydomain";;
7171         esac;;
7172 esac
7173 echo " "
7174 rp="What is your domain name?"
7175 . ./myread
7176 tans="$ans"
7177 case "$ans" in
7178 '') ;;
7179 .*) ;;
7180 *) tans=".$tans";;
7181 esac
7182 mydomain="$tans"
7183
7184 : translate upper to lower if necessary
7185 case "$mydomain" in
7186 *[A-Z]*)
7187         echo "(Normalizing case in your domain name)"
7188         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7189         ;;
7190 esac
7191
7192 : a little sanity check here
7193 case "$phostname" in
7194 '') ;;
7195 *)
7196         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7197         $myhostname$mydomain|$myhostname) ;;
7198         *)
7199                 case "$phostname" in
7200                 sed*)
7201                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7202                         ;;
7203                 *)
7204                         echo "(That doesn't agree with your $phostname command, by the way.)"
7205                         ;;
7206                 esac
7207         ;;
7208         esac
7209         ;;
7210 esac
7211
7212 $cat <<EOM
7213
7214 I need to get your e-mail address in Internet format if possible, i.e.
7215 something like user@host.domain. Please answer accurately since I have
7216 no easy means to double check it. The default value provided below
7217 is most probably close to reality but may not be valid from outside
7218 your organization...
7219
7220 EOM
7221 cont=x
7222 while test "$cont"; do
7223         case "$cf_email" in
7224         '') dflt="$cf_by@$myhostname$mydomain";;
7225         *) dflt="$cf_email";;
7226         esac
7227         rp='What is your e-mail address?'
7228         . ./myread
7229         cf_email="$ans"
7230         case "$cf_email" in
7231         *@*.*) cont='' ;;
7232         *)
7233                 rp='Address does not look like an Internet one.  Use it anyway?'
7234                 case "$fastread" in
7235                 yes) dflt=y ;;
7236                 *) dflt=n ;;
7237                 esac
7238                 . ./myread
7239                 case "$ans" in
7240                 y*) cont='' ;;
7241                 *) echo " " ;;
7242                 esac
7243                 ;;
7244         esac
7245 done
7246
7247 $cat <<EOM
7248
7249 If you or somebody else will be maintaining perl at your site, please
7250 fill in the correct e-mail address here so that they may be contacted
7251 if necessary. Currently, the "perlbug" program included with perl
7252 will send mail to this address in addition to perlbug@perl.org. You may
7253 enter "none" for no administrator.
7254
7255 EOM
7256 case "$perladmin" in
7257 '') dflt="$cf_email";;
7258 *) dflt="$perladmin";;
7259 esac
7260 rp='Perl administrator e-mail address'
7261 . ./myread
7262 perladmin="$ans"
7263
7264 : figure out how to guarantee perl startup
7265 case "$startperl" in
7266 '')
7267         case "$sharpbang" in
7268         *!)
7269                 $cat <<EOH
7270
7271 I can use the #! construct to start perl on your system. This will
7272 make startup of perl scripts faster, but may cause problems if you
7273 want to share those scripts and perl is not in a standard place
7274 ($binexp/perl) on all your platforms. The alternative is to force
7275 a shell by starting the script with a single ':' character.
7276
7277 EOH
7278                 dflt="$binexp/perl"
7279                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7280                 . ./myread
7281                 case "$ans" in
7282                 none)   startperl=": # use perl";;
7283                 *)      startperl="#!$ans"
7284                         if $test 30 -lt `echo "$ans" | wc -c`; then
7285                                 $cat >&4 <<EOM
7286
7287 WARNING:  Some systems limit the #! command to 32 characters.
7288 If you experience difficulty running Perl scripts with #!, try
7289 installing Perl in a directory with a shorter pathname.
7290
7291 EOM
7292                         fi ;;
7293                 esac
7294                 ;;
7295         *) startperl=": # use perl"
7296                 ;;
7297         esac
7298         ;;
7299 esac
7300 echo "I'll use $startperl to start perl scripts."
7301
7302 : figure best path for perl in scripts
7303 case "$perlpath" in
7304 '')
7305         perlpath="$binexp/perl"
7306         case "$startperl" in
7307         *!*) ;;
7308         *)
7309                 $cat <<EOH
7310
7311 I will use the "eval 'exec'" idiom to start Perl on your system.
7312 I can use the full path of your Perl binary for this purpose, but
7313 doing so may cause problems if you want to share those scripts and
7314 Perl is not always in a standard place ($binexp/perl).
7315
7316 EOH
7317                 dflt="$binexp/perl"
7318                 rp="What path shall I use in \"eval 'exec'\"?"
7319                 . ./myread
7320                 perlpath="$ans"
7321                 ;;
7322         esac
7323         ;;
7324 esac
7325 case "$startperl" in
7326 *!*)    ;;
7327 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7328 esac
7329
7330 : determine where public executable scripts go
7331 set scriptdir scriptdir
7332 eval $prefixit
7333 case "$scriptdir" in
7334 '')
7335         dflt="$bin"
7336         : guess some guesses
7337         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7338         $test -d /usr/share/bin     && dflt=/usr/share/bin
7339         $test -d /usr/local/script  && dflt=/usr/local/script
7340         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7341         $test -d $prefixexp/script  && dflt=$prefixexp/script
7342         set dflt
7343         eval $prefixup
7344         ;;
7345 *)  dflt="$scriptdir"
7346         ;;
7347 esac
7348 $cat <<EOM
7349  
7350 Some installations have a separate directory just for executable scripts so
7351 that they can mount it across multiple architectures but keep the scripts in
7352 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7353 Or you might just lump your scripts in with all your other executables.
7354  
7355 EOM
7356 fn=d~
7357 rp='Where do you keep publicly executable scripts?'
7358 . ./getfile
7359 if $test "X$ansexp" != "X$scriptdirexp"; then
7360         installscript=''
7361 fi
7362 scriptdir="$ans"
7363 scriptdirexp="$ansexp"
7364 : Change installation prefix, if necessary.
7365 if $test X"$prefix" != X"$installprefix"; then
7366         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7367 else
7368         installscript="$scriptdirexp"
7369 fi
7370
7371 : determine where add-on public executables go
7372 case "$sitebin" in
7373 '')     dflt=$siteprefix/bin ;;
7374 *)      dflt=$sitebin ;;
7375 esac
7376 fn=d~
7377 rp='Pathname where the add-on public executables should be installed?'
7378 . ./getfile
7379 sitebin="$ans"
7380 sitebinexp="$ansexp"
7381 : Change installation prefix, if necessary.
7382 if $test X"$prefix" != X"$installprefix"; then
7383         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7384 else
7385         installsitebin="$sitebinexp"
7386 fi
7387
7388 case "$useperlio" in
7389 $define|true|[yY]*)     dflt='y';;
7390 *) dflt='n';;
7391 esac
7392 cat <<EOM
7393
7394 Previous version of $package used the standard IO mechanisms as defined
7395 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7396 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7397 the default.  This abstraction layer can use AT&T's sfio (if you already
7398 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7399 problems with some extension modules.  Using PerlIO with stdio is safe,
7400 but it is slower than plain stdio and therefore is not the default.
7401
7402 If this doesn't make any sense to you, just accept the default '$dflt'.
7403 EOM
7404 rp='Use the experimental PerlIO abstraction layer?'
7405 . ./myread
7406 case "$ans" in
7407 y|Y) 
7408         val="$define"
7409         ;;     
7410 *)      
7411         echo "Ok, doing things the stdio way"
7412         val="$undef"
7413         ;;
7414 esac
7415 set useperlio
7416 eval $setvar 
7417
7418 case "$vendorprefix" in
7419 '')     d_vendorbin="$undef"
7420         vendorbin=''
7421         vendorbinexp=''
7422         ;;
7423 *)      d_vendorbin="$define"
7424         : determine where vendor-supplied executables go.
7425         case "$vendorbin" in
7426         '') dflt=$vendorprefix/bin ;;
7427         *)      dflt="$vendorbin" ;;
7428         esac
7429         fn=d~+
7430         rp='Pathname for the vendor-supplied executables directory?'
7431         . ./getfile
7432         vendorbin="$ans"
7433         vendorbinexp="$ansexp"
7434         ;;
7435 esac
7436 : Change installation prefix, if necessary.
7437 if $test X"$prefix" != X"$installprefix"; then
7438         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7439 else
7440         installvendorbin="$vendorbinexp"
7441 fi
7442
7443 : determine whether to only install version-specific parts.
7444 echo " "
7445 $cat <<EOM
7446 Do you want to install only the version-specific parts of the perl
7447 distribution?  Usually you do *not* want to do this.
7448 EOM
7449 case "$versiononly" in
7450 "$define"|[Yy]*|true) dflt='y' ;;
7451 *) dflt='n';
7452 esac
7453 rp="Do you want to install only the version-specific parts of perl?"
7454 . ./myread
7455 case "$ans" in
7456 [yY]*)  val="$define";;
7457 *)      val="$undef" ;;
7458 esac
7459 set versiononly
7460 eval $setvar
7461
7462 : see if qgcvt exists
7463 set qgcvt d_qgcvt
7464 eval $inlibc
7465
7466 echo " "
7467
7468 if $test X"$d_longdbl" = X"$define"; then
7469
7470 echo "Checking how to print long doubles..." >&4
7471
7472 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7473         $cat >try.c <<'EOCP'
7474 #include <sys/types.h>
7475 #include <stdio.h>
7476 int main() {
7477   double d = 123.456;
7478   printf("%.3f\n", d);
7479 }
7480 EOCP
7481         set try
7482         if eval $compile; then
7483                 yyy=`./try$exe_ext`
7484                 case "$yyy" in
7485                 123.456)
7486                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7487                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7488                         echo "We will use %f."
7489                         ;;
7490                 esac
7491         fi
7492 fi
7493
7494 if $test X"$sPRIfldbl" = X; then
7495         $cat >try.c <<'EOCP'
7496 #include <sys/types.h>
7497 #include <stdio.h>
7498 int main() {
7499   long double d = 123.456;
7500   printf("%.3llf\n", d);
7501 }
7502 EOCP
7503         set try
7504         if eval $compile; then
7505                 yyy=`./try$exe_ext`
7506                 case "$yyy" in
7507                 123.456)
7508                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7509                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7510                         echo "We will use %llf."
7511                         ;;
7512                 esac
7513         fi
7514 fi
7515
7516 if $test X"$sPRIfldbl" = X; then
7517         $cat >try.c <<'EOCP'
7518 #include <sys/types.h>
7519 #include <stdio.h>
7520 int main() {
7521   long double d = 123.456;
7522   printf("%.3Lf\n", d);
7523 }
7524 EOCP
7525         set try
7526         if eval $compile; then
7527                 yyy=`./try$exe_ext`
7528                 case "$yyy" in
7529                 123.456)
7530                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7531                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7532                         echo "We will use %Lf."
7533                         ;;
7534                 esac
7535         fi
7536 fi
7537
7538 if $test X"$sPRIfldbl" = X; then
7539         $cat >try.c <<'EOCP'
7540 #include <sys/types.h>
7541 #include <stdio.h>
7542 int main() {
7543   long double d = 123.456;
7544   printf("%.3lf\n", d);
7545 }
7546 EOCP
7547         set try
7548         if eval $compile; then
7549                 yyy=`./try$exe_ext`
7550                 case "$yyy" in
7551                 123.456)
7552                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7553                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7554                         echo "We will use %lf."
7555                         ;;
7556                 esac
7557         fi
7558 fi
7559
7560 if $test X"$sPRIfldbl" = X; then
7561         echo "Cannot figure out how to print long doubles." >&4
7562 else
7563         sSCNfldbl=$sPRIfldbl    # expect consistency
7564 fi
7565
7566 $rm -f try try.*
7567
7568 fi # d_longdbl
7569
7570 case "$sPRIfldbl" in
7571 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7572         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7573         d_SCNfldbl="$undef";
7574         ;;
7575 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7576         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7577         d_SCNfldbl="$define";
7578         ;;
7579 esac
7580
7581 : Check how to convert floats to strings.
7582 echo " "
7583 echo "Checking for an efficient way to convert floats to strings."
7584 echo " " > try.c
7585 case "$uselongdouble" in
7586 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7587 esac
7588 case "$d_longdbl" in
7589 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7590 esac
7591 case "$d_PRIgldbl" in
7592 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7593 esac
7594 $cat >>try.c <<EOP
7595 #ifdef TRY_gconvert
7596 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7597 char *myname = "gconvert";
7598 #endif
7599 #ifdef TRY_gcvt
7600 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7601 char *myname = "gcvt";
7602 #endif
7603 #ifdef TRY_qgcvt
7604 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7605 char *myname = "qgcvt";
7606 #define DOUBLETYPE long double
7607 #endif
7608 #ifdef TRY_sprintf
7609 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7610 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7611 #else
7612 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7613 #endif
7614 char *myname = "sprintf";
7615 #endif
7616
7617 #ifndef DOUBLETYPE
7618 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7619 #define DOUBLETYPE long double
7620 #else
7621 #define DOUBLETYPE double
7622 #endif
7623 #endif
7624
7625 #include <stdio.h>
7626
7627 #define I_STDLIB $i_stdlib
7628 #ifdef I_STDLIB
7629 #include <stdlib.h>
7630 #endif
7631
7632 int
7633 checkit(expect, got)
7634 char *expect;
7635 char *got;
7636 {
7637     if (strcmp(expect, got)) {
7638                 printf("%s oddity:  Expected %s, got %s\n",
7639                         myname, expect, got);
7640                 exit(1);
7641         }
7642 }
7643
7644 int main()
7645
7646         char buf[64]; 
7647         buf[63] = '\0';
7648
7649         /* This must be 1st test on (which?) platform */
7650         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7651         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7652         checkit("0.1", buf);
7653
7654         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7655         checkit("1", buf);
7656
7657         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7658         checkit("1.1", buf);
7659
7660         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7661         checkit("1.01", buf);
7662
7663         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7664         checkit("1.001", buf);
7665
7666         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7667         checkit("1.0001", buf);
7668
7669         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7670         checkit("1.00001", buf);
7671
7672         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7673         checkit("1.000001", buf);
7674
7675         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7676         checkit("0", buf);
7677
7678         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7679         checkit("-1", buf);
7680
7681         /* Some Linux gcvt's give 1.e+5 here. */
7682         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7683         checkit("100000", buf);
7684         
7685         /* Some Linux gcvt's give -1.e+5 here. */
7686         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7687         checkit("-100000", buf);
7688
7689         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7690         checkit("123.456", buf);
7691
7692         exit(0);
7693 }
7694 EOP
7695 case "$d_Gconvert" in
7696 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7697 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7698 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7699 *) xxx_list='gconvert gcvt sprintf' ;;
7700 esac
7701
7702 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7703 "$define$define$define")
7704     # for long doubles prefer first qgcvt, then sprintf
7705     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7706     xxx_list="sprintf $xxx_list"
7707     case "$d_qgcvt" in
7708     "$define") xxx_list="qgcvt $xxx_list" ;;
7709     esac
7710     ;;
7711 esac
7712
7713 for xxx_convert in $xxx_list; do
7714         echo "Trying $xxx_convert..."
7715         $rm -f try try$_o
7716         set try -DTRY_$xxx_convert
7717         if eval $compile; then
7718                 echo "$xxx_convert() found." >&4
7719                 if ./try; then
7720                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7721                         break;
7722                 else
7723                         echo "...But $xxx_convert didn't work as I expected."
7724                 fi
7725         else
7726                 echo "$xxx_convert NOT found." >&4
7727         fi
7728 done
7729         
7730 case "$xxx_convert" in
7731 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7732 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7733 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7734 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7735    "$define$define$define")
7736       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7737    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7738    esac
7739    ;;  
7740 esac
7741
7742 : Initialize h_fcntl
7743 h_fcntl=false
7744
7745 : Initialize h_sysfile
7746 h_sysfile=false
7747
7748 : access call always available on UNIX
7749 set access d_access
7750 eval $inlibc
7751
7752 : locate the flags for 'access()'
7753 case "$d_access" in
7754 "$define")
7755         echo " "
7756         $cat >access.c <<'EOCP'
7757 #include <sys/types.h>
7758 #ifdef I_FCNTL
7759 #include <fcntl.h>
7760 #endif
7761 #ifdef I_SYS_FILE
7762 #include <sys/file.h>
7763 #endif
7764 #ifdef I_UNISTD
7765 #include <unistd.h>
7766 #endif
7767 int main() {
7768         exit(R_OK);
7769 }
7770 EOCP
7771         : check sys/file.h first, no particular reason here
7772         if $test `./findhdr sys/file.h` && \
7773                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7774                 h_sysfile=true;
7775                 echo "<sys/file.h> defines the *_OK access constants." >&4
7776         elif $test `./findhdr fcntl.h` && \
7777                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7778                 h_fcntl=true;
7779                 echo "<fcntl.h> defines the *_OK access constants." >&4
7780         elif $test `./findhdr unistd.h` && \
7781                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7782                 echo "<unistd.h> defines the *_OK access constants." >&4
7783         else
7784                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7785         fi
7786         ;;
7787 esac
7788 $rm -f access*
7789
7790 : see if accessx exists
7791 set accessx d_accessx
7792 eval $inlibc
7793
7794 : see if alarm exists
7795 set alarm d_alarm
7796 eval $inlibc
7797
7798 : see if atolf exists
7799 set atolf d_atolf
7800 eval $inlibc
7801
7802 : see if atoll exists
7803 set atoll d_atoll
7804 eval $inlibc
7805
7806 : Look for GNU-cc style attribute checking
7807 echo " "
7808 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7809 $cat >attrib.c <<'EOCP'
7810 #include <stdio.h>
7811 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7812 EOCP
7813 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7814         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7815                 echo "Your C compiler doesn't fully support __attribute__."
7816                 val="$undef"
7817         else
7818                 echo "Your C compiler supports __attribute__."
7819                 val="$define"
7820         fi
7821 else
7822         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7823         val="$undef"
7824 fi
7825 set d_attribut
7826 eval $setvar
7827 $rm -f attrib*
7828
7829 : see if bcmp exists
7830 set bcmp d_bcmp
7831 eval $inlibc
7832
7833 : see if bcopy exists
7834 set bcopy d_bcopy
7835 eval $inlibc
7836
7837 : see if this is a unistd.h system
7838 set unistd.h i_unistd
7839 eval $inhdr
7840
7841 : see if getpgrp exists
7842 set getpgrp d_getpgrp
7843 eval $inlibc
7844
7845 case "$d_getpgrp" in
7846 "$define")
7847         echo " "
7848         echo "Checking to see which flavor of getpgrp is in use..."
7849         $cat >set.c <<EOP
7850 #$i_unistd I_UNISTD
7851 #include <sys/types.h>
7852 #ifdef I_UNISTD
7853 #  include <unistd.h>
7854 #endif
7855 int main()
7856 {
7857         if (getuid() == 0) {
7858                 printf("(I see you are running Configure as super-user...)\n");
7859                 setuid(1);
7860         }
7861 #ifdef TRY_BSD_PGRP
7862         if (getpgrp(1) == 0)
7863                 exit(0);
7864 #else
7865         if (getpgrp() > 0)
7866                 exit(0);
7867 #endif
7868         exit(1);
7869 }
7870 EOP
7871         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7872                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7873                 val="$define"
7874         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7875                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7876                 val="$undef"
7877         else
7878                 echo "I can't seem to compile and run the test program."
7879                 if ./usg; then
7880                         xxx="a USG one, i.e. you use getpgrp()."
7881                 else
7882                         # SVR4 systems can appear rather BSD-ish.
7883                         case "$i_unistd" in
7884                         $undef)
7885                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7886                                 val="$define"
7887                                 ;;
7888                         $define)
7889                                 xxx="probably a USG one, i.e. you use getpgrp()."
7890                                 val="$undef"
7891                                 ;;
7892                         esac
7893                 fi
7894                 echo "Assuming your getpgrp is $xxx" >&4
7895         fi
7896         ;;
7897 *) val="$undef";;
7898 esac
7899 set d_bsdgetpgrp
7900 eval $setvar
7901 $rm -f set set.c
7902
7903 : see if setpgrp exists
7904 set setpgrp d_setpgrp
7905 eval $inlibc
7906
7907 case "$d_setpgrp" in
7908 "$define")
7909         echo " "
7910         echo "Checking to see which flavor of setpgrp is in use..."
7911         $cat >set.c <<EOP
7912 #$i_unistd I_UNISTD
7913 #include <sys/types.h>
7914 #ifdef I_UNISTD
7915 #  include <unistd.h>
7916 #endif
7917 int main()
7918 {
7919         if (getuid() == 0) {
7920                 printf("(I see you are running Configure as super-user...)\n");
7921                 setuid(1);
7922         }
7923 #ifdef TRY_BSD_PGRP
7924         if (-1 == setpgrp(1, 1))
7925                 exit(0);
7926 #else
7927         if (setpgrp() != -1)
7928                 exit(0);
7929 #endif
7930         exit(1);
7931 }
7932 EOP
7933         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7934                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7935                 val="$define"
7936         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7937                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7938                 val="$undef"
7939         else
7940                 echo "(I can't seem to compile and run the test program.)"
7941                 if ./usg; then
7942                         xxx="a USG one, i.e. you use setpgrp()."
7943                 else
7944                         # SVR4 systems can appear rather BSD-ish.
7945                         case "$i_unistd" in
7946                         $undef)
7947                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7948                                 val="$define"
7949                                 ;;
7950                         $define)
7951                                 xxx="probably a USG one, i.e. you use setpgrp()."
7952                                 val="$undef"
7953                                 ;;
7954                         esac
7955                 fi
7956                 echo "Assuming your setpgrp is $xxx" >&4
7957         fi
7958         ;;
7959 *) val="$undef";;
7960 esac
7961 set d_bsdsetpgrp
7962 eval $setvar
7963 $rm -f set set.c
7964 : see if bzero exists
7965 set bzero d_bzero
7966 eval $inlibc
7967
7968 : see if signal is declared as pointer to function returning int or void
7969 echo " "
7970 xxx=`./findhdr signal.h`
7971 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7972 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7973         echo "You have int (*signal())() instead of void." >&4
7974         val="$undef"
7975 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7976         echo "You have void (*signal())()." >&4
7977         val="$define"
7978 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7979         echo "You have int (*signal())() instead of void." >&4
7980         val="$undef"
7981 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7982         echo "You have void (*signal())()." >&4
7983         val="$define"
7984 else
7985         case "$d_voidsig" in
7986         '')
7987         echo "I can't determine whether signal handler returns void or int..." >&4
7988                 dflt=void
7989                 rp="What type does your signal handler return?"
7990                 . ./myread
7991                 case "$ans" in
7992                 v*) val="$define";;
7993                 *) val="$undef";;
7994                 esac;;
7995         "$define")
7996                 echo "As you already told me, signal handler returns void." >&4
7997                 val="$define"
7998                 ;;
7999         *)      echo "As you already told me, signal handler returns int." >&4
8000                 val="$undef"
8001                 ;;
8002         esac
8003 fi
8004 set d_voidsig
8005 eval $setvar
8006 case "$d_voidsig" in
8007 "$define") signal_t="void";;
8008 *) signal_t="int";;
8009 esac
8010 $rm -f $$.tmp
8011
8012 : check for ability to cast large floats to 32-bit ints.
8013 echo " "
8014 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8015 if $test "$intsize" -ge 4; then
8016         xxx=int
8017 else
8018         xxx=long
8019 fi
8020 $cat >try.c <<EOCP
8021 #include <stdio.h>
8022 #include <sys/types.h>
8023 #include <signal.h>
8024 $signal_t blech(s) int s; { exit(3); }
8025 int main()
8026 {
8027         $xxx i32;
8028         double f, g;
8029         int result = 0;
8030         char str[16];
8031         signal(SIGFPE, blech);
8032
8033         /* Don't let compiler optimize the test away.  Store the number 
8034            in a writable string for gcc to pass to sscanf under HP/UX.
8035         */
8036         sprintf(str, "2147483647");
8037         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8038         g = 10 * f;
8039         i32  = ($xxx) g;
8040
8041         /* x86 processors will probably give 0x8000 0000, which is a
8042        sign change.  We don't want that.  We want to mimic SPARC
8043            behavior here, which is to preserve the sign and give
8044            back 0x7fff ffff.
8045         */
8046         if (i32 != ($xxx) f)
8047                 result |= 1;
8048         exit(result);
8049 }
8050 EOCP
8051 set try
8052 if eval $compile_ok; then
8053         ./try
8054         yyy=$?
8055 else
8056         echo "(I can't seem to compile the test program--assuming it can't)"
8057         yyy=1
8058 fi
8059 case "$yyy" in
8060 0)      val="$define"
8061         echo "Yup, it can."
8062         ;;
8063 *)      val="$undef"
8064         echo "Nope, it can't."
8065         ;;
8066 esac
8067 set d_casti32
8068 eval $setvar
8069 $rm -f try try.*
8070
8071 : check for ability to cast negative floats to unsigned
8072 echo " "
8073 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8074 $cat >try.c <<EOCP
8075 #include <stdio.h>
8076 #include <sys/types.h>
8077 #include <signal.h>
8078 $signal_t blech(s) int s; { exit(7); }
8079 $signal_t blech_in_list(s) int s; { exit(4); }
8080 unsigned long dummy_long(p) unsigned long p; { return p; }
8081 unsigned int dummy_int(p) unsigned int p; { return p; }
8082 unsigned short dummy_short(p) unsigned short p; { return p; }
8083 int main()
8084 {
8085         double f;
8086         unsigned long along;
8087         unsigned int aint;
8088         unsigned short ashort;
8089         int result = 0;
8090         char str[16];
8091         
8092         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8093            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8094            optimized the whole file away
8095         */
8096         /* Store the number in a writable string for gcc to pass to 
8097            sscanf under HP/UX.
8098         */
8099         sprintf(str, "-123");
8100         sscanf(str, "%lf", &f);  /* f = -123.; */
8101
8102         signal(SIGFPE, blech);
8103         along = (unsigned long)f;
8104         aint = (unsigned int)f;
8105         ashort = (unsigned short)f;
8106         if (along != (unsigned long)-123)
8107                 result |= 1;
8108         if (aint != (unsigned int)-123)
8109                 result |= 1;
8110         if (ashort != (unsigned short)-123)
8111                 result |= 1;
8112         sprintf(str, "1073741824.");
8113         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8114         f = f + f;
8115         along = 0;
8116         along = (unsigned long)f;
8117         if (along != 0x80000000)
8118                 result |= 2;
8119         f -= 1.;
8120         along = 0;
8121         along = (unsigned long)f;
8122         if (along != 0x7fffffff)
8123                 result |= 1;
8124         f += 2.;
8125         along = 0;
8126         along = (unsigned long)f;
8127         if (along != 0x80000001)
8128                 result |= 2;
8129         if (result)
8130                 exit(result);
8131         signal(SIGFPE, blech_in_list);
8132         sprintf(str, "123.");
8133         sscanf(str, "%lf", &f);  /* f = 123.; */
8134         along = dummy_long((unsigned long)f);
8135         aint = dummy_int((unsigned int)f);
8136         ashort = dummy_short((unsigned short)f);
8137         if (along != (unsigned long)123)
8138                 result |= 4;
8139         if (aint != (unsigned int)123)
8140                 result |= 4;
8141         if (ashort != (unsigned short)123)
8142                 result |= 4;
8143         exit(result);
8144
8145 }
8146 EOCP
8147 set try
8148 if eval $compile_ok; then
8149         ./try
8150         castflags=$?
8151 else
8152         echo "(I can't seem to compile the test program--assuming it can't)"
8153         castflags=7
8154 fi
8155 case "$castflags" in
8156 0)      val="$define"
8157         echo "Yup, it can."
8158         ;;
8159 *)      val="$undef"
8160         echo "Nope, it can't."
8161         ;;
8162 esac
8163 set d_castneg
8164 eval $setvar
8165 $rm -f try.*
8166
8167 : see if vprintf exists
8168 echo " "
8169 if set vprintf val -f d_vprintf; eval $csym; $val; then
8170         echo 'vprintf() found.' >&4
8171         val="$define"
8172         $cat >vprintf.c <<'EOF'
8173 #include <varargs.h>
8174
8175 int main() { xxx("foo"); }
8176
8177 xxx(va_alist)
8178 va_dcl
8179 {
8180         va_list args;
8181         char buf[10];
8182
8183         va_start(args);
8184         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8185 }
8186 EOF
8187         set vprintf
8188         if eval $compile && ./vprintf; then
8189                 echo "Your vsprintf() returns (int)." >&4
8190                 val2="$undef"
8191         else
8192                 echo "Your vsprintf() returns (char*)." >&4
8193                 val2="$define"
8194         fi
8195 else
8196         echo 'vprintf() NOT found.' >&4
8197                 val="$undef"
8198                 val2="$undef"
8199 fi
8200 set d_vprintf
8201 eval $setvar
8202 val=$val2
8203 set d_charvspr
8204 eval $setvar
8205
8206 : see if chown exists
8207 set chown d_chown
8208 eval $inlibc
8209
8210 : see if chroot exists
8211 set chroot d_chroot
8212 eval $inlibc
8213
8214 : see if chsize exists
8215 set chsize d_chsize
8216 eval $inlibc
8217
8218 : check for const keyword
8219 echo " "
8220 echo 'Checking to see if your C compiler knows about "const"...' >&4
8221 $cat >const.c <<'EOCP'
8222 typedef struct spug { int drokk; } spug;
8223 int main()
8224 {
8225         const char *foo;
8226         const spug y;
8227 }
8228 EOCP
8229 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8230         val="$define"
8231         echo "Yup, it does."
8232 else
8233         val="$undef"
8234         echo "Nope, it doesn't."
8235 fi
8236 set d_const
8237 eval $setvar
8238
8239 : see if crypt exists
8240 echo " "
8241 if set crypt val -f d_crypt; eval $csym; $val; then
8242         echo 'crypt() found.' >&4
8243         val="$define"
8244         cryptlib=''
8245 else
8246         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8247         if $test -z "$cryptlib"; then
8248                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8249         else
8250                 cryptlib=-lcrypt
8251         fi
8252         if $test -z "$cryptlib"; then
8253                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8254         else
8255                 cryptlib=-lcrypt
8256         fi
8257         if $test -z "$cryptlib"; then
8258                 cryptlib=`./loc libcrypt$_a "" $libpth`
8259         else
8260                 cryptlib=-lcrypt
8261         fi
8262         if $test -z "$cryptlib"; then
8263                 echo 'crypt() NOT found.' >&4
8264                 val="$undef"
8265         else
8266                 val="$define"
8267         fi
8268 fi
8269 set d_crypt
8270 eval $setvar
8271
8272 : get csh whereabouts
8273 case "$csh" in
8274 'csh') val="$undef" ;;
8275 *) val="$define" ;;
8276 esac
8277 set d_csh
8278 eval $setvar
8279 : Respect a hint or command line value for full_csh.
8280 case "$full_csh" in
8281 '') full_csh=$csh ;;
8282 esac
8283
8284 : see if cuserid exists
8285 set cuserid d_cuserid
8286 eval $inlibc
8287
8288 : see if this is a limits.h system
8289 set limits.h i_limits
8290 eval $inhdr
8291
8292 : see if this is a float.h system
8293 set float.h i_float
8294 eval $inhdr
8295
8296 : See if number of significant digits in a double precision number is known
8297 echo " "
8298 $cat >dbl_dig.c <<EOM
8299 #$i_limits I_LIMITS
8300 #$i_float I_FLOAT
8301 #ifdef I_LIMITS
8302 #include <limits.h>
8303 #endif
8304 #ifdef I_FLOAT
8305 #include <float.h>
8306 #endif
8307 #ifdef DBL_DIG
8308 printf("Contains DBL_DIG");
8309 #endif
8310 EOM
8311 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8312 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8313         echo "DBL_DIG found." >&4
8314         val="$define"
8315 else
8316         echo "DBL_DIG NOT found." >&4
8317         val="$undef"
8318 fi
8319 $rm -f dbl_dig.?
8320 set d_dbl_dig
8321 eval $setvar
8322
8323 : see if difftime exists
8324 set difftime d_difftime
8325 eval $inlibc
8326
8327 : see if this is a dirent system
8328 echo " "
8329 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8330         val="$define"
8331         echo "<dirent.h> found." >&4
8332 else
8333         val="$undef"
8334         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8335                 echo "<sys/dir.h> found." >&4
8336                 echo " "
8337         else
8338                 xinc=`./findhdr sys/ndir.h`
8339         fi
8340         echo "<dirent.h> NOT found." >&4
8341 fi
8342 set i_dirent
8343 eval $setvar
8344
8345 : Look for type of directory structure.
8346 echo " "
8347 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8348
8349 case "$direntrytype" in
8350 ''|' ')
8351         case "$i_dirent" in
8352         $define) guess1='struct dirent' ;;
8353         *) guess1='struct direct'  ;;
8354         esac
8355         ;;
8356 *)      guess1="$direntrytype"
8357         ;;
8358 esac
8359
8360 case "$guess1" in
8361 'struct dirent') guess2='struct direct' ;;
8362 *) guess2='struct dirent' ;;
8363 esac
8364                 
8365 if $contains "$guess1" try.c >/dev/null 2>&1; then
8366         direntrytype="$guess1"
8367         echo "Your directory entries are $direntrytype." >&4
8368 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8369         direntrytype="$guess2"
8370         echo "Your directory entries seem to be $direntrytype." >&4
8371 else
8372         echo "I don't recognize your system's directory entries." >&4
8373         rp="What type is used for directory entries on this system?"
8374         dflt="$guess1"
8375         . ./myread
8376         direntrytype="$ans"
8377 fi
8378 $rm -f try.c
8379
8380
8381 : see if the directory entry stores field length
8382 echo " "
8383 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8384 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8385         echo "Good, your directory entry keeps length information in d_namlen." >&4
8386         val="$define"
8387 else
8388         echo "Your directory entry does not know about the d_namlen field." >&4
8389         val="$undef"
8390 fi
8391 set d_dirnamlen
8392 eval $setvar
8393 $rm -f try.c
8394
8395 : see if dlerror exists
8396 xxx_runnm="$runnm"
8397 runnm=false
8398 set dlerror d_dlerror
8399 eval $inlibc
8400 runnm="$xxx_runnm"
8401
8402 : see if dlfcn is available
8403 set dlfcn.h i_dlfcn
8404 eval $inhdr
8405
8406 case "$usedl" in
8407 $define|y|true)
8408         $cat << EOM
8409
8410 On a few systems, the dynamically loaded modules that perl generates and uses
8411 will need a different extension than shared libs. The default will probably
8412 be appropriate.
8413
8414 EOM
8415         case "$dlext" in
8416         '')     dflt="$so" ;;
8417         *)      dflt="$dlext" ;;
8418         esac
8419         rp='What is the extension of dynamically loaded modules'
8420         . ./myread
8421         dlext="$ans"
8422         ;;
8423 *)
8424         dlext="none"
8425         ;;
8426 esac
8427
8428 : Check if dlsym need a leading underscore
8429 echo " "
8430 val="$undef"
8431
8432 case "$dlsrc" in
8433 dl_dlopen.xs)
8434         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8435         $cat >dyna.c <<'EOM'
8436 fred () { }
8437 EOM
8438
8439 $cat >fred.c<<EOM
8440
8441 #include <stdio.h>
8442 #$i_dlfcn I_DLFCN
8443 #ifdef I_DLFCN
8444 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8445 #else
8446 #include <sys/types.h>
8447 #include <nlist.h>
8448 #include <link.h>
8449 #endif
8450
8451 extern int fred() ;
8452
8453 int main()
8454 {
8455     void * handle ;
8456     void * symbol ;
8457 #ifndef RTLD_LAZY
8458     int mode = 1 ;
8459 #else
8460     int mode = RTLD_LAZY ;
8461 #endif
8462     handle = dlopen("./dyna.$dlext", mode) ;
8463     if (handle == NULL) {
8464         printf ("1\n") ;
8465         fflush (stdout) ;
8466         exit(0);
8467     }
8468     symbol = dlsym(handle, "fred") ;
8469     if (symbol == NULL) {
8470         /* try putting a leading underscore */
8471         symbol = dlsym(handle, "_fred") ;
8472         if (symbol == NULL) {
8473             printf ("2\n") ;
8474             fflush (stdout) ;
8475             exit(0);
8476         }
8477         printf ("3\n") ;
8478     }
8479     else
8480         printf ("4\n") ;
8481     fflush (stdout) ;
8482     exit(0);
8483 }
8484 EOM
8485         : Call the object file tmp-dyna.o in case dlext=o.
8486         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8487                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8488                 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
8489                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8490                 xxx=`./fred`
8491                 case $xxx in
8492                 1)      echo "Test program failed using dlopen." >&4
8493                         echo "Perhaps you should not use dynamic loading." >&4;;
8494                 2)      echo "Test program failed using dlsym." >&4
8495                         echo "Perhaps you should not use dynamic loading." >&4;;
8496                 3)      echo "dlsym needs a leading underscore" >&4
8497                         val="$define" ;;
8498                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8499                 esac
8500         else
8501                 echo "I can't compile and run the test program." >&4
8502                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8503         fi
8504         ;;
8505 esac
8506                 
8507 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8508
8509 set d_dlsymun
8510 eval $setvar
8511
8512 hasproto='varname=$1; func=$2; shift; shift;
8513 while $test $# -ge 2; do
8514         case "$1" in
8515         $define) echo "#include <$2>";;
8516         esac ;
8517     shift 2;
8518 done > try.c;
8519 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8520 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8521         echo "$func() prototype found.";
8522         val="$define";
8523 else
8524         echo "$func() prototype NOT found.";
8525         val="$undef";
8526 fi;
8527 set $varname;
8528 eval $setvar;
8529 $rm -f try.c tryout.c'
8530
8531 : see if prototype for drand48 is available
8532 echo " "
8533 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8534 eval $hasproto
8535
8536 : see if dup2 exists
8537 set dup2 d_dup2
8538 eval $inlibc
8539
8540 : see if eaccess exists
8541 set eaccess d_eaccess
8542 eval $inlibc
8543
8544 : see if endgrent exists
8545 set endgrent d_endgrent
8546 eval $inlibc
8547
8548 : see if endhostent exists
8549 set endhostent d_endhent
8550 eval $inlibc
8551
8552 : see if endnetent exists
8553 set endnetent d_endnent
8554 eval $inlibc
8555
8556 : see if endprotoent exists
8557 set endprotoent d_endpent
8558 eval $inlibc
8559
8560 : see if endpwent exists
8561 set endpwent d_endpwent
8562 eval $inlibc
8563
8564 : see if endservent exists
8565 set endservent d_endsent
8566 eval $inlibc
8567
8568 : Locate the flags for 'open()'
8569 echo " "
8570 $cat >open3.c <<'EOCP'
8571 #include <sys/types.h>
8572 #ifdef I_FCNTL
8573 #include <fcntl.h>
8574 #endif
8575 #ifdef I_SYS_FILE
8576 #include <sys/file.h>
8577 #endif
8578 int main() {
8579         if(O_RDONLY);
8580 #ifdef O_TRUNC
8581         exit(0);
8582 #else
8583         exit(1);
8584 #endif
8585 }
8586 EOCP
8587 : check sys/file.h first to get FREAD on Sun
8588 if $test `./findhdr sys/file.h` && \
8589                 set open3 -DI_SYS_FILE && eval $compile; then
8590         h_sysfile=true;
8591         echo "<sys/file.h> defines the O_* constants..." >&4
8592         if ./open3; then
8593                 echo "and you have the 3 argument form of open()." >&4
8594                 val="$define"
8595         else
8596                 echo "but not the 3 argument form of open().  Oh, well." >&4
8597                 val="$undef"
8598         fi
8599 elif $test `./findhdr fcntl.h` && \
8600                 set open3 -DI_FCNTL && eval $compile; then
8601         h_fcntl=true;
8602         echo "<fcntl.h> defines the O_* constants..." >&4
8603         if ./open3; then
8604                 echo "and you have the 3 argument form of open()." >&4
8605                 val="$define"
8606         else
8607                 echo "but not the 3 argument form of open().  Oh, well." >&4
8608                 val="$undef"
8609         fi
8610 else
8611         val="$undef"
8612         echo "I can't find the O_* constant definitions!  You got problems." >&4
8613 fi
8614 set d_open3
8615 eval $setvar
8616 $rm -f open3*
8617
8618 : see which of string.h or strings.h is needed
8619 echo " "
8620 strings=`./findhdr string.h`
8621 if $test "$strings" && $test -r "$strings"; then
8622         echo "Using <string.h> instead of <strings.h>." >&4
8623         val="$define"
8624 else
8625         val="$undef"
8626         strings=`./findhdr strings.h`
8627         if $test "$strings" && $test -r "$strings"; then
8628                 echo "Using <strings.h> instead of <string.h>." >&4
8629         else
8630                 echo "No string header found -- You'll surely have problems." >&4
8631         fi
8632 fi
8633 set i_string
8634 eval $setvar
8635 case "$i_string" in
8636 "$undef") strings=`./findhdr strings.h`;;
8637 *)        strings=`./findhdr string.h`;;
8638 esac
8639
8640 : check for non-blocking I/O stuff
8641 case "$h_sysfile" in
8642 true) echo "#include <sys/file.h>" > head.c;;
8643 *)
8644         case "$h_fcntl" in
8645         true) echo "#include <fcntl.h>" > head.c;;
8646         *) echo "#include <sys/fcntl.h>" > head.c;;
8647         esac
8648         ;;
8649 esac
8650 echo " "
8651 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8652 case "$o_nonblock" in
8653 '')
8654         $cat head.c > try.c
8655         $cat >>try.c <<'EOCP'
8656 #include <stdio.h>
8657 int main() {
8658 #ifdef O_NONBLOCK
8659         printf("O_NONBLOCK\n");
8660         exit(0);
8661 #endif
8662 #ifdef O_NDELAY
8663         printf("O_NDELAY\n");
8664         exit(0);
8665 #endif
8666 #ifdef FNDELAY
8667         printf("FNDELAY\n");
8668         exit(0);
8669 #endif
8670         exit(0);
8671 }
8672 EOCP
8673         set try
8674         if eval $compile_ok; then
8675                 o_nonblock=`./try`
8676                 case "$o_nonblock" in
8677                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8678                 *) echo "Seems like we can use $o_nonblock.";;
8679                 esac
8680         else
8681                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8682         fi
8683         ;;
8684 *) echo "Using $hint value $o_nonblock.";;
8685 esac
8686 $rm -f try try.* .out core
8687
8688 echo " "
8689 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8690 case "$eagain" in
8691 '')
8692         $cat head.c > try.c
8693         $cat >>try.c <<EOCP
8694 #include <errno.h>
8695 #include <sys/types.h>
8696 #include <signal.h>
8697 #include <stdio.h> 
8698 #define MY_O_NONBLOCK $o_nonblock
8699 #ifndef errno  /* XXX need better Configure test */
8700 extern int errno;
8701 #endif
8702 #$i_unistd I_UNISTD
8703 #ifdef I_UNISTD
8704 #include <unistd.h>
8705 #endif
8706 #$i_string I_STRING
8707 #ifdef I_STRING
8708 #include <string.h>
8709 #else
8710 #include <strings.h>
8711 #endif
8712 $signal_t blech(x) int x; { exit(3); }
8713 EOCP
8714         $cat >> try.c <<'EOCP'
8715 int main()
8716 {
8717         int pd[2];
8718         int pu[2];
8719         char buf[1];
8720         char string[100];
8721
8722         pipe(pd);       /* Down: child -> parent */
8723         pipe(pu);       /* Up: parent -> child */
8724         if (0 != fork()) {
8725                 int ret;
8726                 close(pd[1]);   /* Parent reads from pd[0] */
8727                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8728                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8729                         exit(1);
8730                 signal(SIGALRM, blech);
8731                 alarm(5);
8732                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8733                         exit(2);
8734                 sprintf(string, "%d\n", ret);
8735                 write(2, string, strlen(string));
8736                 alarm(0);
8737 #ifdef EAGAIN
8738                 if (errno == EAGAIN) {
8739                         printf("EAGAIN\n");
8740                         goto ok;
8741                 }
8742 #endif
8743 #ifdef EWOULDBLOCK
8744                 if (errno == EWOULDBLOCK)
8745                         printf("EWOULDBLOCK\n");
8746 #endif
8747         ok:
8748                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8749                 sleep(2);                               /* Give it time to close our pipe */
8750                 alarm(5);
8751                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8752                 alarm(0);
8753                 sprintf(string, "%d\n", ret);
8754                 write(3, string, strlen(string));
8755                 exit(0);
8756         }
8757
8758         close(pd[0]);                   /* We write to pd[1] */
8759         close(pu[1]);                   /* We read from pu[0] */
8760         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8761         close(pd[1]);                   /* Pipe pd is now fully closed! */
8762         exit(0);                                /* Bye bye, thank you for playing! */
8763 }
8764 EOCP
8765         set try
8766         if eval $compile_ok; then
8767                 echo "$startsh" >mtry
8768                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8769                 chmod +x mtry
8770                 ./mtry >/dev/null 2>&1
8771                 case $? in
8772                 0) eagain=`$cat try.out`;;
8773                 1) echo "Could not perform non-blocking setting!";;
8774                 2) echo "I did a successful read() for something that was not there!";;
8775                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8776                 *) echo "Something terribly wrong happened during testing.";;
8777                 esac
8778                 rd_nodata=`$cat try.ret`
8779                 echo "A read() system call with no data present returns $rd_nodata."
8780                 case "$rd_nodata" in
8781                 0|-1) ;;
8782                 *)
8783                         echo "(That's peculiar, fixing that to be -1.)"
8784                         rd_nodata=-1
8785                         ;;
8786                 esac
8787                 case "$eagain" in
8788                 '')
8789                         echo "Forcing errno EAGAIN on read() with no data available."
8790                         eagain=EAGAIN
8791                         ;;
8792                 *)
8793                         echo "Your read() sets errno to $eagain when no data is available."
8794                         ;;
8795                 esac
8796                 status=`$cat try.err`
8797                 case "$status" in
8798                 0) echo "And it correctly returns 0 to signal EOF.";;
8799                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8800                 *) echo "However, your read() returns '$status' on EOF??";;
8801                 esac
8802                 val="$define"
8803                 if test "$status" = "$rd_nodata"; then
8804                         echo "WARNING: you can't distinguish between EOF and no data!"
8805                         val="$undef"
8806                 fi
8807         else
8808                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8809                 eagain=EAGAIN
8810         fi
8811         set d_eofnblk
8812         eval $setvar
8813         ;;
8814 *)
8815         echo "Using $hint value $eagain."
8816         echo "Your read() returns $rd_nodata when no data is present."
8817         case "$d_eofnblk" in
8818         "$define") echo "And you can see EOF because read() returns 0.";;
8819         "$undef") echo "But you can't see EOF status from read() returned value.";;
8820         *)
8821                 echo "(Assuming you can't see EOF status from read anyway.)"
8822                 d_eofnblk=$undef
8823                 ;;
8824         esac
8825         ;;
8826 esac
8827 $rm -f try try.* .out core head.c mtry
8828
8829 : see if fchmod exists
8830 set fchmod d_fchmod
8831 eval $inlibc
8832
8833 : see if fchown exists
8834 set fchown d_fchown
8835 eval $inlibc
8836
8837 : see if this is an fcntl system
8838 set fcntl d_fcntl
8839 eval $inlibc
8840
8841 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8842 while $test $# -ge 2; do
8843         case "$1" in
8844         $define) echo "#include <$2>";;
8845         esac ;
8846     shift 2;
8847 done > try.c;
8848 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8849 set try;
8850 if eval $compile; then
8851         val="$define";
8852 else
8853         val="$undef";
8854 fi;
8855 set $varname;
8856 eval $setvar;
8857 $rm -f try.c try.o'
8858
8859 socketlib=''
8860 sockethdr=''
8861 : see whether socket exists
8862 echo " "
8863 $echo $n "Hmm... $c" >&4
8864 if set socket val -f d_socket; eval $csym; $val; then
8865         echo "Looks like you have Berkeley networking support." >&4
8866         d_socket="$define"
8867         if set setsockopt val -f; eval $csym; $val; then
8868                 d_oldsock="$undef"
8869         else
8870                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8871                 d_oldsock="$define"
8872         fi
8873 else
8874         if $contains socklib libc.list >/dev/null 2>&1; then
8875                 echo "Looks like you have Berkeley networking support." >&4
8876                 d_socket="$define"
8877                 : we will have to assume that it supports the 4.2 BSD interface
8878                 d_oldsock="$undef"
8879         else
8880                 echo "You don't have Berkeley networking in libc$_a..." >&4
8881                 if test "X$d_socket" = "X$define"; then
8882                    echo "...but you seem to believe that you have sockets." >&4
8883                 else
8884                         for net in net socket
8885                         do
8886                                 if test -f /usr/lib/lib$net$_a; then
8887                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8888                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8889                                         if $contains socket libc.list >/dev/null 2>&1; then
8890                                                 d_socket="$define"
8891                                                 socketlib="-l$net"
8892                                                 case "$net" in
8893                                                 net)
8894                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8895                                                         sockethdr="-I/usr/netinclude"
8896                                                         ;;
8897                                                 esac
8898                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8899                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8900                                                         d_oldsock="$undef"
8901                                                 else
8902                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8903                                                         d_oldsock="$define"
8904                                                 fi
8905                                                 break
8906                                         fi
8907                                 fi
8908                         done
8909                         if test "X$d_socket" != "X$define"; then
8910                            echo "or anywhere else I see." >&4
8911                            d_socket="$undef"
8912                            d_oldsock="$undef"
8913                         fi
8914                 fi
8915         fi
8916 fi
8917
8918 : see if socketpair exists
8919 set socketpair d_sockpair
8920 eval $inlibc
8921
8922
8923 echo " "
8924 echo "Checking the availability of certain socket constants..." >& 4
8925 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8926         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8927         $cat >try.c <<EOF
8928 #include <sys/types.h>
8929 #include <sys/socket.h>
8930 int main() {
8931     int i = $ENUM;
8932 }
8933 EOF
8934         val="$undef"
8935         set try; if eval $compile; then
8936                 val="$define"
8937         fi
8938         set d_${enum}; eval $setvar
8939         $rm -f try.c try
8940 done
8941
8942 : see if sys/select.h has to be included
8943 set sys/select.h i_sysselct
8944 eval $inhdr
8945
8946 : see if we should include time.h, sys/time.h, or both
8947 echo " "
8948 if test "X$timeincl" = X; then
8949         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8950         $echo $n "I'm now running the test program...$c"
8951         $cat >try.c <<'EOCP'
8952 #include <sys/types.h>
8953 #ifdef I_TIME
8954 #include <time.h>
8955 #endif
8956 #ifdef I_SYSTIME
8957 #ifdef SYSTIMEKERNEL
8958 #define KERNEL
8959 #endif
8960 #include <sys/time.h>
8961 #endif
8962 #ifdef I_SYSSELECT
8963 #include <sys/select.h>
8964 #endif
8965 int main()
8966 {
8967         struct tm foo;
8968 #ifdef S_TIMEVAL
8969         struct timeval bar;
8970 #endif
8971 #ifdef S_TIMEZONE
8972         struct timezone tzp;
8973 #endif
8974         if (foo.tm_sec == foo.tm_sec)
8975                 exit(0);
8976 #ifdef S_TIMEVAL
8977         if (bar.tv_sec == bar.tv_sec)
8978                 exit(0);
8979 #endif
8980         exit(1);
8981 }
8982 EOCP
8983         flags=''
8984         for s_timezone in '-DS_TIMEZONE' ''; do
8985         sysselect=''
8986         for s_timeval in '-DS_TIMEVAL' ''; do
8987         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8988         for i_time in '' '-DI_TIME'; do
8989         for i_systime in '-DI_SYSTIME' ''; do
8990                 case "$flags" in
8991                 '') $echo $n ".$c"
8992                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8993                         if eval $compile; then
8994                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8995                                 shift
8996                                 flags="$*"
8997                                 echo " "
8998                                 $echo $n "Succeeded with $flags$c"
8999                         fi
9000                         ;;
9001                 esac
9002         done
9003         done
9004         done
9005         done
9006         done
9007         timeincl=''
9008         echo " "
9009         case "$flags" in
9010         *SYSTIMEKERNEL*) i_systimek="$define"
9011                 timeincl=`./findhdr sys/time.h`
9012                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9013         *) i_systimek="$undef";;
9014         esac
9015         case "$flags" in
9016         *I_TIME*) i_time="$define"
9017                 timeincl=`./findhdr time.h`" $timeincl"
9018                 echo "We'll include <time.h>." >&4;;
9019         *) i_time="$undef";;
9020         esac
9021         case "$flags" in
9022         *I_SYSTIME*) i_systime="$define"
9023                 timeincl=`./findhdr sys/time.h`" $timeincl"
9024                 echo "We'll include <sys/time.h>." >&4;;
9025         *) i_systime="$undef";;
9026         esac
9027         $rm -f try.c try
9028 fi
9029
9030 : check for fd_set items
9031 $cat <<EOM
9032
9033 Checking to see how well your C compiler handles fd_set and friends ...
9034 EOM
9035 $cat >fd_set.c <<EOCP
9036 #$i_systime I_SYS_TIME
9037 #$i_sysselct I_SYS_SELECT
9038 #$d_socket HAS_SOCKET
9039 #include <sys/types.h>
9040 #ifdef HAS_SOCKET
9041 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9042 #endif
9043 #ifdef I_SYS_TIME
9044 #include <sys/time.h>
9045 #endif
9046 #ifdef I_SYS_SELECT
9047 #include <sys/select.h>
9048 #endif
9049 int main() {
9050         fd_set fds;
9051
9052 #ifdef TRYBITS
9053         if(fds.fds_bits);
9054 #endif
9055
9056 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9057         exit(0);
9058 #else
9059         exit(1);
9060 #endif
9061 }
9062 EOCP
9063 set fd_set -DTRYBITS
9064 if eval $compile; then
9065         d_fds_bits="$define"
9066         d_fd_set="$define"
9067         echo "Well, your system knows about the normal fd_set typedef..." >&4
9068         if ./fd_set; then
9069                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9070                 d_fd_macros="$define"
9071         else
9072                 $cat >&4 <<'EOM'
9073 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9074 EOM
9075                 d_fd_macros="$undef"
9076         fi
9077 else
9078         $cat <<'EOM'
9079 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9080 EOM
9081         set fd_set
9082         if eval $compile; then
9083                 d_fds_bits="$undef"
9084                 d_fd_set="$define"
9085                 echo "Well, your system has some sort of fd_set available..." >&4
9086                 if ./fd_set; then
9087                         echo "and you have the normal fd_set macros." >&4
9088                         d_fd_macros="$define"
9089                 else
9090                         $cat <<'EOM'
9091 but not the normal fd_set macros!  Gross!  More work for me...
9092 EOM
9093                         d_fd_macros="$undef"
9094                 fi
9095         else
9096         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9097                 d_fd_set="$undef"
9098                 d_fds_bits="$undef"
9099                 d_fd_macros="$undef"
9100         fi
9101 fi
9102 $rm -f fd_set*
9103
9104 : see if fgetpos exists
9105 set fgetpos d_fgetpos
9106 eval $inlibc
9107
9108 : see if flock exists
9109 set flock d_flock
9110 eval $inlibc
9111
9112 : see if fork exists
9113 set fork d_fork
9114 eval $inlibc
9115
9116 : see if pathconf exists
9117 set pathconf d_pathconf
9118 eval $inlibc
9119
9120 : see if fpathconf exists
9121 set fpathconf d_fpathconf
9122 eval $inlibc
9123
9124
9125 : check for fpos64_t
9126 echo " "
9127 echo "Checking to see if you have fpos64_t..." >&4
9128 $cat >try.c <<EOCP
9129 #include <stdio.h>
9130 int main() { fpos64_t x = 7; }
9131 EOCP
9132 set try
9133 if eval $compile; then
9134         val="$define"
9135         echo "You have fpos64_t."
9136 else
9137         val="$undef"
9138         echo "You do not have fpos64_t."
9139         case "$fpossize" in
9140         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9141         esac
9142 fi
9143 $rm -f try.* try
9144 set d_fpos64_t
9145 eval $setvar
9146
9147 : see if frexpl exists
9148 set frexpl d_frexpl
9149 eval $inlibc
9150
9151 hasstruct='varname=$1; struct=$2; shift; shift;
9152 while $test $# -ge 2; do
9153         case "$1" in
9154         $define) echo "#include <$2>";;
9155         esac ;
9156     shift 2;
9157 done > try.c;
9158 echo "int main () { struct $struct foo; }" >> try.c;
9159 set try;
9160 if eval $compile; then
9161         val="$define";
9162 else
9163         val="$undef";
9164 fi;
9165 set $varname;
9166 eval $setvar;
9167 $rm -f try.c try.o'
9168
9169 : see if this is a sys/param system
9170 set sys/param.h i_sysparam
9171 eval $inhdr
9172
9173 : see if this is a sys/mount.h system
9174 set sys/mount.h i_sysmount
9175 eval $inhdr
9176
9177 : see if sys/types.h has to be included
9178 set sys/types.h i_systypes
9179 eval $inhdr
9180
9181
9182 echo " "
9183 echo "Checking to see if your system supports struct fs_data..." >&4
9184 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9185 eval $hasstruct
9186 case "$d_fs_data_s" in
9187 "$define")      echo "Yes, it does."   ;;
9188 *)              echo "No, it doesn't." ;;
9189 esac
9190
9191 : see if fseeko exists
9192 set fseeko d_fseeko
9193 eval $inlibc
9194 case "$longsize" in
9195 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9196 esac
9197
9198 : see if fsetpos exists
9199 set fsetpos d_fsetpos
9200 eval $inlibc
9201
9202
9203 : see if fstatfs exists
9204 set fstatfs d_fstatfs
9205 eval $inlibc
9206
9207
9208 : see if statvfs exists
9209 set statvfs d_statvfs
9210 eval $inlibc
9211
9212 : see if fstatvfs exists
9213 set fstatvfs d_fstatvfs
9214 eval $inlibc
9215
9216
9217 : see if ftello exists
9218 set ftello d_ftello
9219 eval $inlibc
9220 case "$longsize" in
9221 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9222 esac
9223
9224 : see if getcwd exists
9225 set getcwd d_getcwd
9226 eval $inlibc
9227
9228 : see if getespwnam exists
9229 set getespwnam d_getespwnam
9230 eval $inlibc
9231
9232
9233 : see if getfsstat exists
9234 set getfsstat d_getfsstat
9235 eval $inlibc
9236
9237 : see if getgrent exists
9238 set getgrent d_getgrent
9239 eval $inlibc
9240
9241 : see if gethostbyaddr exists
9242 set gethostbyaddr d_gethbyaddr
9243 eval $inlibc
9244
9245 : see if gethostbyname exists
9246 set gethostbyname d_gethbyname
9247 eval $inlibc
9248
9249 : see if gethostent exists
9250 set gethostent d_gethent
9251 eval $inlibc
9252
9253 : see how we will look up host name
9254 echo " "
9255 call=''
9256 if set gethostname val -f d_gethname; eval $csym; $val; then
9257         echo 'gethostname() found.' >&4
9258         d_gethname="$define"
9259         call=gethostname
9260 fi
9261 if set uname val -f d_uname; eval $csym; $val; then
9262         if ./xenix; then
9263                 $cat <<'EOM'
9264 uname() was found, but you're running xenix, and older versions of xenix
9265 have a broken uname(). If you don't really know whether your xenix is old
9266 enough to have a broken system call, use the default answer.
9267
9268 EOM
9269                 dflt=y
9270                 case "$d_uname" in
9271                 "$define") dflt=n;;
9272                 esac
9273                 rp='Is your uname() broken?'
9274                 . ./myread
9275                 case "$ans" in
9276                 n*) d_uname="$define"; call=uname;;
9277                 esac
9278         else
9279                 echo 'uname() found.' >&4
9280                 d_uname="$define"
9281                 case "$call" in
9282                 '') call=uname ;;
9283                 esac
9284         fi
9285 fi
9286 case "$d_gethname" in
9287 '') d_gethname="$undef";;
9288 esac
9289 case "$d_uname" in
9290 '') d_uname="$undef";;
9291 esac
9292 case "$d_uname$d_gethname" in
9293 *define*)
9294         dflt=n
9295         cat <<EOM
9296  
9297 Every now and then someone has a $call() that lies about the hostname
9298 but can't be fixed for political or economic reasons.  If you wish, I can
9299 pretend $call() isn't there and maybe compute hostname at run-time
9300 thanks to the '$phostname' command.
9301
9302 EOM
9303         rp="Shall I ignore $call() from now on?"
9304         . ./myread
9305         case "$ans" in
9306         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9307         esac;;
9308 esac
9309 case "$phostname" in
9310 '') aphostname='';;
9311 *) case "$aphostname" in
9312         /*) ;;
9313         *) set X $phostname
9314                 shift
9315                 file=$1
9316                 shift
9317                 file=`./loc $file $file $pth`
9318                 aphostname=`echo $file $*`
9319                 ;;
9320         esac
9321         ;;
9322 esac
9323 case "$d_uname$d_gethname" in
9324 *define*) ;;
9325 *)
9326         case "$phostname" in
9327         '')
9328                 echo "There will be no way for $package to get your hostname." >&4;;
9329         *)
9330         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9331                 ;;
9332         esac;;
9333 esac
9334 case "$d_phostname" in
9335 '') d_phostname="$undef";;
9336 esac
9337
9338 : see if this is a netdb.h system
9339 set netdb.h i_netdb
9340 eval $inhdr
9341
9342 : see if prototypes for various gethostxxx netdb.h functions are available
9343 echo " "
9344 set d_gethostprotos gethostent $i_netdb netdb.h
9345 eval $hasproto
9346
9347 : see if getlogin exists
9348 set getlogin d_getlogin
9349 eval $inlibc
9350
9351 : see if getmnt exists
9352 set getmnt d_getmnt
9353 eval $inlibc
9354
9355 : see if getmntent exists
9356 set getmntent d_getmntent
9357 eval $inlibc
9358
9359 : see if getnetbyaddr exists
9360 set getnetbyaddr d_getnbyaddr
9361 eval $inlibc
9362
9363 : see if getnetbyname exists
9364 set getnetbyname d_getnbyname
9365 eval $inlibc
9366
9367 : see if getnetent exists
9368 set getnetent d_getnent
9369 eval $inlibc
9370
9371 : see if prototypes for various getnetxxx netdb.h functions are available
9372 echo " "
9373 set d_getnetprotos getnetent $i_netdb netdb.h
9374 eval $hasproto
9375
9376
9377 : see if getprotobyname exists
9378 set getprotobyname d_getpbyname
9379 eval $inlibc
9380
9381 : see if getprotobynumber exists
9382 set getprotobynumber d_getpbynumber
9383 eval $inlibc
9384
9385 : see if getprotoent exists
9386 set getprotoent d_getpent
9387 eval $inlibc
9388
9389 : see if getpgid exists
9390 set getpgid d_getpgid
9391 eval $inlibc
9392
9393 : see if getpgrp2 exists
9394 set getpgrp2 d_getpgrp2
9395 eval $inlibc
9396
9397 : see if getppid exists
9398 set getppid d_getppid
9399 eval $inlibc
9400
9401 : see if getpriority exists
9402 set getpriority d_getprior
9403 eval $inlibc
9404
9405 : see if prototypes for various getprotoxxx netdb.h functions are available
9406 echo " "
9407 set d_getprotoprotos getprotoent $i_netdb netdb.h
9408 eval $hasproto
9409
9410 : see if getprpwnam exists
9411 set getprpwnam d_getprpwnam
9412 eval $inlibc
9413
9414 : see if getpwent exists
9415 set getpwent d_getpwent
9416 eval $inlibc
9417
9418
9419 : see if getservbyname exists
9420 set getservbyname d_getsbyname
9421 eval $inlibc
9422
9423 : see if getservbyport exists
9424 set getservbyport d_getsbyport
9425 eval $inlibc
9426
9427 : see if getservent exists
9428 set getservent d_getsent
9429 eval $inlibc
9430
9431 : see if prototypes for various getservxxx netdb.h functions are available
9432 echo " "
9433 set d_getservprotos getservent $i_netdb netdb.h
9434 eval $hasproto
9435
9436 : see if getspnam exists
9437 set getspnam d_getspnam
9438 eval $inlibc
9439
9440 : see if gettimeofday or ftime exists
9441 set gettimeofday d_gettimeod
9442 eval $inlibc
9443 case "$d_gettimeod" in
9444 "$undef")
9445         set ftime d_ftime 
9446         eval $inlibc
9447         ;;
9448 *)
9449         val="$undef"; set d_ftime; eval $setvar
9450         ;;
9451 esac
9452 case "$d_gettimeod$d_ftime" in
9453 "$undef$undef")
9454         echo " "
9455         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9456         ;;
9457 esac
9458
9459 : see if this is an grp system
9460 set grp.h i_grp
9461 eval $inhdr
9462
9463 case "$i_grp" in
9464 $define)
9465         xxx=`./findhdr grp.h`
9466         $cppstdin $cppflags $cppminus < $xxx >$$.h
9467
9468         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9469                 val="$define"
9470         else
9471                 val="$undef"
9472         fi
9473         set d_grpasswd
9474         eval $setvar
9475
9476         $rm -f $$.h
9477         ;;
9478 *)
9479         val="$undef";
9480         set d_grpasswd; eval $setvar
9481         ;;
9482 esac
9483
9484 : see if hasmntopt exists
9485 set hasmntopt d_hasmntopt
9486 eval $inlibc
9487
9488 : see if this is a netinet/in.h or sys/in.h system
9489 set netinet/in.h i_niin sys/in.h i_sysin
9490 eval $inhdr
9491
9492 : see if arpa/inet.h has to be included
9493 set arpa/inet.h i_arpainet
9494 eval $inhdr
9495
9496 : see if htonl --and friends-- exists
9497 val=''
9498 set htonl val
9499 eval $inlibc
9500
9501 : Maybe they are macros.
9502 case "$val" in
9503 $undef)
9504         $cat >htonl.c <<EOM
9505 #include <stdio.h>
9506 #include <sys/types.h>
9507 #$i_niin I_NETINET_IN
9508 #$i_sysin I_SYS_IN
9509 #$i_arpainet I_ARPA_INET
9510 #ifdef I_NETINET_IN
9511 #include <netinet/in.h>
9512 #endif
9513 #ifdef I_SYS_IN
9514 #include <sys/in.h>
9515 #endif
9516 #ifdef I_ARPA_INET
9517 #include <arpa/inet.h>
9518 #endif
9519 #ifdef htonl
9520 printf("Defined as a macro.");
9521 #endif
9522 EOM
9523         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9524         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9525                 val="$define"
9526                 echo "But it seems to be defined as a macro." >&4
9527         fi
9528         $rm -f htonl.?
9529         ;;
9530 esac
9531 set d_htonl
9532 eval $setvar
9533
9534 : see if iconv exists
9535 set iconv d_iconv
9536 eval $inlibc
9537
9538 : index or strchr
9539 echo " "
9540 if set index val -f; eval $csym; $val; then
9541         if set strchr val -f d_strchr; eval $csym; $val; then
9542                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9543                         val="$define"
9544                         vali="$undef"
9545                         echo "strchr() found." >&4
9546                 else
9547                         val="$undef"
9548                         vali="$define"
9549                         echo "index() found." >&4
9550                 fi
9551         else
9552                 val="$undef"
9553                 vali="$define"
9554                 echo "index() found." >&4
9555         fi
9556 else
9557         if set strchr val -f d_strchr; eval $csym; $val; then
9558                 val="$define"
9559                 vali="$undef"
9560                 echo "strchr() found." >&4
9561         else
9562                 echo "No index() or strchr() found!" >&4
9563                 val="$undef"
9564                 vali="$undef"
9565         fi
9566 fi
9567 set d_strchr; eval $setvar
9568 val="$vali"
9569 set d_index; eval $setvar
9570
9571 : check whether inet_aton exists
9572 set inet_aton d_inetaton
9573 eval $inlibc
9574
9575 : see if inttypes.h is available
9576 : we want a real compile instead of Inhdr because some systems
9577 : have an inttypes.h which includes non-existent headers
9578 echo " "
9579 $cat >try.c <<EOCP
9580 #include <inttypes.h>
9581 int main() {
9582         static int32_t foo32 = 0x12345678;
9583 }
9584 EOCP
9585 set try
9586 if eval $compile; then
9587         echo "<inttypes.h> found." >&4
9588         val="$define"
9589 else
9590         echo "<inttypes.h> NOT found." >&4
9591         val="$undef"
9592 fi
9593 $rm -f try.c try
9594 set i_inttypes
9595 eval $setvar
9596
9597 : check for int64_t
9598 echo " "
9599 echo "Checking to see if you have int64_t..." >&4
9600 $cat >try.c <<EOCP
9601 #include <sys/types.h>
9602 #$i_inttypes I_INTTYPES
9603 #ifdef I_INTTYPES
9604 #include <inttypes.h>
9605 #endif
9606 int main() { int64_t x = 7; }
9607 EOCP
9608 set try
9609 if eval $compile; then
9610         val="$define"
9611         echo "You have int64_t."
9612 else
9613         val="$undef"
9614         echo "You do not have int64_t."
9615 fi
9616 $rm -f try try.*
9617 set d_int64_t
9618 eval $setvar
9619
9620 : Look for isascii
9621 echo " "
9622 $cat >isascii.c <<'EOCP'
9623 #include <stdio.h>
9624 #include <ctype.h>
9625 int main() {
9626         int c = 'A';
9627         if (isascii(c))
9628                 exit(0);
9629         else
9630                 exit(1);
9631 }
9632 EOCP
9633 set isascii
9634 if eval $compile; then
9635         echo "isascii() found." >&4
9636         val="$define"
9637 else
9638         echo "isascii() NOT found." >&4
9639         val="$undef"
9640 fi
9641 set d_isascii
9642 eval $setvar
9643 $rm -f isascii*
9644
9645 : see if isnan exists
9646 set isnan d_isnan
9647 eval $inlibc
9648
9649 : see if isnanl exists
9650 set isnanl d_isnanl
9651 eval $inlibc
9652
9653 : see if killpg exists
9654 set killpg d_killpg
9655 eval $inlibc
9656
9657 : see if lchown exists
9658 echo " "
9659 $cat > try.c <<'EOCP'
9660 /* System header to define __stub macros and hopefully few prototypes,
9661     which can conflict with char lchown(); below.  */
9662 #include <assert.h>
9663 /* Override any gcc2 internal prototype to avoid an error.  */
9664 /* We use char because int might match the return type of a gcc2
9665    builtin and then its argument prototype would still apply.  */
9666 char lchown();
9667 int main() {
9668     /*  The GNU C library defines this for functions which it implements
9669         to always fail with ENOSYS.  Some functions are actually named
9670         something starting with __ and the normal name is an alias.  */
9671 #if defined (__stub_lchown) || defined (__stub___lchown)
9672 choke me
9673 #else
9674 lchown();
9675 #endif
9676 ; return 0; }
9677 EOCP
9678 set try
9679 if eval $compile; then
9680     $echo "lchown() found." >&4
9681     val="$define"
9682 else
9683     $echo "lchown() NOT found." >&4
9684     val="$undef"
9685 fi
9686 set d_lchown
9687 eval $setvar
9688
9689 : See if number of significant digits in a double precision number is known
9690 echo " "
9691 $cat >ldbl_dig.c <<EOM
9692 #$i_limits I_LIMITS
9693 #$i_float I_FLOAT
9694 #ifdef I_LIMITS
9695 #include <limits.h>
9696 #endif
9697 #ifdef I_FLOAT
9698 #include <float.h>
9699 #endif
9700 #ifdef LDBL_DIG
9701 printf("Contains LDBL_DIG");
9702 #endif
9703 EOM
9704 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9705 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9706         echo "LDBL_DIG found." >&4
9707         val="$define"
9708 else
9709         echo "LDBL_DIG NOT found." >&4
9710         val="$undef"
9711 fi
9712 $rm -f ldbl_dig.?
9713 set d_ldbl_dig
9714 eval $setvar
9715
9716 : see if link exists
9717 set link d_link
9718 eval $inlibc
9719
9720 : see if localeconv exists
9721 set localeconv d_locconv
9722 eval $inlibc
9723
9724 : see if lockf exists
9725 set lockf d_lockf
9726 eval $inlibc
9727
9728 : check for long long
9729 echo " "
9730 echo "Checking to see if you have long long..." >&4
9731 echo 'int main() { long long x = 7; return 0; }' > try.c
9732 set try
9733 if eval $compile; then
9734         val="$define"
9735         echo "You have long long."
9736 else
9737         val="$undef"
9738         echo "You do not have long long."
9739 fi
9740 $rm try.*
9741 set d_longlong
9742 eval $setvar
9743
9744 : check for length of long long
9745 case "${d_longlong}${longlongsize}" in
9746 $define)
9747         echo " "
9748         echo "Checking to see how big your long longs are..." >&4
9749         $cat >try.c <<'EOCP'
9750 #include <stdio.h>
9751 int main()
9752 {
9753     printf("%d\n", (int)sizeof(long long));
9754     return(0);
9755 }
9756 EOCP
9757         set try
9758         if eval $compile_ok; then
9759                 longlongsize=`./try$exe_ext`
9760                 echo "Your long longs are $longlongsize bytes long."
9761         else
9762                 dflt='8'
9763                 echo " "
9764                 echo "(I can't seem to compile the test program.  Guessing...)"
9765                 rp="What is the size of a long long (in bytes)?"
9766                 . ./myread
9767                 longlongsize="$ans"
9768         fi
9769         if $test "X$longsize" = "X$longlongsize"; then
9770                 echo "(That isn't any different from an ordinary long.)"
9771         fi      
9772         ;;
9773 esac
9774 $rm -f try.* try
9775
9776 : see if prototype for lseek is available
9777 echo " "
9778 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9779 eval $hasproto
9780
9781 : see if lstat exists
9782 set lstat d_lstat
9783 eval $inlibc
9784
9785 : see if madvise exists
9786 set madvise d_madvise
9787 eval $inlibc
9788
9789 : see if mblen exists
9790 set mblen d_mblen
9791 eval $inlibc
9792
9793 : see if mbstowcs exists
9794 set mbstowcs d_mbstowcs
9795 eval $inlibc
9796
9797 : see if mbtowc exists
9798 set mbtowc d_mbtowc
9799 eval $inlibc
9800
9801 : see if memchr exists
9802 set memchr d_memchr
9803 eval $inlibc
9804
9805 : see if memcmp exists
9806 set memcmp d_memcmp
9807 eval $inlibc
9808
9809 : see if memcpy exists
9810 set memcpy d_memcpy
9811 eval $inlibc
9812
9813 : see if memmove exists
9814 set memmove d_memmove
9815 eval $inlibc
9816
9817 : see if memset exists
9818 set memset d_memset
9819 eval $inlibc
9820
9821 : see if mkdir exists
9822 set mkdir d_mkdir
9823 eval $inlibc
9824
9825 : see if mkdtemp exists
9826 set mkdtemp d_mkdtemp
9827 eval $inlibc
9828
9829 : see if mkfifo exists
9830 set mkfifo d_mkfifo
9831 eval $inlibc
9832
9833 : see if mkstemp exists
9834 set mkstemp d_mkstemp
9835 eval $inlibc
9836
9837 : see if mkstemps exists
9838 set mkstemps d_mkstemps
9839 eval $inlibc
9840
9841 : see if mktime exists
9842 set mktime d_mktime
9843 eval $inlibc
9844
9845 : see if this is a sys/mman.h system
9846 set sys/mman.h i_sysmman
9847 eval $inhdr
9848
9849 : see if mmap exists
9850 set mmap d_mmap
9851 eval $inlibc
9852 : see what shmat returns
9853 : default to something harmless
9854 mmaptype='void *'
9855 case "$i_sysmman$d_mmap" in
9856 "$define$define")
9857         $cat >mmap.c <<'END'
9858 #include <sys/mman.h>
9859 void *mmap();
9860 END
9861         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9862                 mmaptype='void *'
9863         else
9864                 mmaptype='caddr_t'
9865         fi
9866         echo "and it returns ($mmaptype)." >&4
9867         ;;
9868 esac
9869
9870
9871
9872 : see if modfl exists
9873 set modfl d_modfl
9874 eval $inlibc
9875
9876 : see if mprotect exists
9877 set mprotect d_mprotect
9878 eval $inlibc
9879
9880 : see if msgctl exists
9881 set msgctl d_msgctl
9882 eval $inlibc
9883
9884 : see if msgget exists
9885 set msgget d_msgget
9886 eval $inlibc
9887
9888 : see if msgsnd exists
9889 set msgsnd d_msgsnd
9890 eval $inlibc
9891
9892 : see if msgrcv exists
9893 set msgrcv d_msgrcv
9894 eval $inlibc
9895
9896 : see how much of the 'msg*(2)' library is present.
9897 h_msg=true
9898 echo " "
9899 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9900 *"$undef"*) h_msg=false;;
9901 esac
9902 case "$osname" in
9903 freebsd)
9904     case "`ipcs 2>&1`" in
9905     "SVID messages"*"not configured"*)
9906         echo "Your $osname does not have the msg*(2) configured." >&4
9907         h_msg=false
9908         val="$undef"
9909         set msgctl d_msgctl
9910         eval $setvar
9911         set msgget d_msgget
9912         eval $setvar
9913         set msgsnd d_msgsnd
9914         eval $setvar
9915         set msgrcv d_msgrcv
9916         eval $setvar
9917         ;;
9918     esac
9919     ;;
9920 esac
9921 : we could also check for sys/ipc.h ...
9922 if $h_msg && $test `./findhdr sys/msg.h`; then
9923         echo "You have the full msg*(2) library." >&4
9924         val="$define"
9925 else
9926         echo "You don't have the full msg*(2) library." >&4
9927         val="$undef"
9928 fi
9929 set d_msg
9930 eval $setvar
9931
9932 : see if msync exists
9933 set msync d_msync
9934 eval $inlibc
9935
9936 : see if munmap exists
9937 set munmap d_munmap
9938 eval $inlibc
9939
9940 : see if nice exists
9941 set nice d_nice
9942 eval $inlibc
9943
9944
9945 echo " "
9946 echo "Checking which 64-bit integer type we could use..." >&4
9947
9948 case "$intsize" in
9949 8) val=int
9950    set quadtype
9951    eval $setvar
9952    val='"unsigned int"'
9953    set uquadtype
9954    eval $setvar
9955    quadkind=1
9956    ;;
9957 *) case "$longsize" in
9958    8) val=long
9959       set quadtype
9960       eval $setvar
9961       val='"unsigned long"'
9962       set uquadtype
9963       eval $setvar
9964       quadkind=2
9965       ;;
9966    *) case "$d_longlong:$longlongsize" in
9967       define:8)
9968         val='"long long"'
9969         set quadtype
9970         eval $setvar
9971         val='"unsigned long long"'
9972         set uquadtype
9973         eval $setvar
9974         quadkind=3
9975         ;;
9976       *) case "$d_int64_t" in
9977          define)
9978            val=int64_t
9979            set quadtype
9980            eval $setvar
9981            val=uint64_t
9982            set uquadtype
9983            eval $setvar
9984            quadkind=4
9985            ;;
9986          esac
9987          ;;
9988       esac
9989       ;;
9990    esac
9991    ;;
9992 esac
9993
9994 case "$quadtype" in
9995 '')     echo "Alas, no 64-bit integer types in sight." >&4
9996         d_quad="$undef"
9997         ;;
9998 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9999             verb="will"
10000         else
10001             verb="could"
10002         fi
10003         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10004         d_quad="$define"
10005         ;;
10006 esac
10007
10008 : check for length of character
10009 echo " "
10010 case "$charsize" in
10011 '')
10012         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10013         $cat >try.c <<'EOCP'
10014 #include <stdio.h>
10015 int main()
10016 {
10017     printf("%d\n", (int)sizeof(char));
10018     exit(0);
10019 }
10020 EOCP
10021         set try
10022         if eval $compile_ok; then
10023                 dflt=`./try`
10024         else
10025                 dflt='1'
10026                 echo "(I can't seem to compile the test program.  Guessing...)"
10027         fi
10028         ;;
10029 *)
10030         dflt="$charsize"
10031         ;;
10032 esac
10033 rp="What is the size of a character (in bytes)?"
10034 . ./myread
10035 charsize="$ans"
10036 $rm -f try.c try
10037
10038
10039 echo " "
10040 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10041
10042 case "$use64bitint:$d_quad:$quadtype" in
10043 define:define:?*)
10044         ivtype="$quadtype"
10045         uvtype="$uquadtype"
10046         ivsize=8
10047         uvsize=8
10048         ;;
10049 *)      ivtype="long"
10050         uvtype="unsigned long"
10051         ivsize=$longsize
10052         uvsize=$longsize
10053         ;;
10054 esac
10055
10056 case "$uselongdouble:$d_longdbl" in
10057 define:define)
10058         nvtype="long double"
10059         nvsize=$longdblsize
10060         ;;
10061 *)      nvtype=double
10062         nvsize=$doublesize
10063         ;;
10064 esac
10065
10066 $echo "(IV will be "$ivtype", $ivsize bytes)"
10067 $echo "(UV will be "$uvtype", $uvsize bytes)"
10068 $echo "(NV will be "$nvtype", $nvsize bytes)"
10069
10070 $cat >try.c <<EOCP
10071 #$i_inttypes I_INTTYPES
10072 #ifdef I_INTTYPES
10073 #include <inttypes.h>
10074 #endif
10075 #include <stdio.h>
10076 int main() {
10077 #ifdef INT8
10078    int8_t i =  INT8_MAX;
10079   uint8_t u = UINT8_MAX;
10080   printf("int8_t\n");
10081 #endif
10082 #ifdef INT16
10083    int16_t i =  INT16_MAX;
10084   uint16_t i = UINT16_MAX;
10085   printf("int16_t\n");
10086 #endif
10087 #ifdef INT32
10088    int32_t i =  INT32_MAX;
10089   uint32_t u = UINT32_MAX;
10090   printf("int32_t\n");
10091 #endif
10092 }
10093 EOCP
10094
10095 case "$i8type" in
10096 '')     case "$charsize" in
10097         1)      i8type=char
10098                 u8type="unsigned char"
10099                 i8size=$charsize
10100                 u8size=$charsize
10101                 ;;
10102         esac
10103         ;;
10104 esac
10105 case "$i8type" in
10106 '')     set try -DINT8
10107         if eval $compile; then
10108                 case "`./try$exe_ext`" in
10109                 int8_t) i8type=int8_t
10110                         u8type=uint8_t
10111                         i8size=1
10112                         u8size=1
10113                         ;;
10114                 esac
10115         fi
10116         ;;
10117 esac
10118 case "$i8type" in
10119 '')     if $test $charsize -ge 1; then
10120                 i8type=char
10121                 u8type="unsigned char"
10122                 i8size=$charsize
10123                 u8size=$charsize
10124         fi
10125         ;;
10126 esac
10127
10128 case "$i16type" in
10129 '')     case "$shortsize" in
10130         2)      i16type=short
10131                 u16type="unsigned short"
10132                 i16size=$shortsize
10133                 u16size=$shortsize
10134                 ;;
10135         esac
10136         ;;
10137 esac
10138 case "$i16type" in
10139 '')     set try -DINT16
10140         if eval $compile; then
10141                 case "`./try$exe_ext`" in
10142                 int16_t)
10143                         i16type=int16_t
10144                         u16type=uint16_t
10145                         i16size=2
10146                         u16size=2
10147                         ;;
10148                 esac
10149         fi
10150         ;;
10151 esac
10152 case "$i16type" in
10153 '')     if $test $shortsize -ge 2; then
10154                 i16type=short
10155                 u16type="unsigned short"
10156                 i16size=$shortsize
10157                 u16size=$shortsize
10158         fi
10159         ;;
10160 esac
10161
10162 case "$i32type" in
10163 '')     case "$longsize" in
10164         4)      i32type=long
10165                 u32type="unsigned long"
10166                 i32size=$longsize
10167                 u32size=$longsize
10168                 ;;
10169         *)      case "$intsize" in
10170                 4)      i32type=int
10171                         u32type="unsigned int"
10172                         i32size=$intsize
10173                         u32size=$intsize
10174                         ;;
10175                 esac
10176                 ;;
10177         esac
10178         ;;
10179 esac
10180 case "$i32type" in
10181 '')     set try -DINT32
10182         if eval $compile; then
10183                 case "`./try$exe_ext`" in
10184                 int32_t)
10185                         i32type=int32_t
10186                         u32type=uint32_t
10187                         i32size=4
10188                         u32size=4
10189                         ;;
10190                 esac
10191         fi
10192         ;;
10193 esac
10194 case "$i32type" in
10195 '')     if $test $intsize -ge 4; then
10196                 i32type=int
10197                 u32type="unsigned int"
10198                 i32size=$intsize
10199                 u32size=$intsize
10200         fi
10201         ;;
10202 esac
10203
10204 case "$i64type" in
10205 '')     case "$d_quad:$quadtype" in
10206         define:?*)
10207                 i64type="$quadtype"
10208                 u64type="$uquadtype"
10209                 i64size=8
10210                 u64size=8
10211                 ;;
10212         esac
10213         ;;
10214 esac
10215
10216 $echo "Checking whether your NVs can preserve your UVs..." >&4
10217 $cat <<EOP >try.c
10218 #include <stdio.h>
10219 int main() {
10220     $uvtype k = ($uvtype)~0, l;
10221     $nvtype d;
10222     l = k;
10223     d = ($nvtype)l;
10224     l = ($uvtype)d;
10225     if (l == k)
10226        printf("preserve\n");
10227     exit(0);
10228 }
10229 EOP
10230 set try
10231 if eval $compile; then
10232         case "`./try$exe_ext`" in
10233         preserve) d_nv_preserves_uv="$define" ;;
10234         esac
10235 fi      
10236 case "$d_nv_preserves_uv" in
10237 $define) $echo "Yes, they can."  2>&1 ;;
10238 *)       $echo "No, they can't." 2>&1
10239          d_nv_preserves_uv="$undef"
10240          ;;
10241 esac
10242
10243 $rm -f try.* try
10244
10245 case "$d_nv_preserves_uv" in
10246 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10247 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10248         $cat <<EOP >try.c
10249 #include <stdio.h>
10250 int main() {
10251     $uvtype u = 0;
10252     int     n = 8 * $uvsize;
10253     int     i;
10254     for (i = 0; i < n; i++) {
10255       u = u << 1 | ($uvtype)1;
10256       if (($uvtype)($nvtype)u != u)
10257         break;
10258     }
10259     printf("%d\n", i);
10260     exit(0);
10261 }
10262 EOP
10263         set try
10264         if eval $compile; then
10265                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10266         fi
10267         case "$d_nv_preserves_uv_bits" in
10268         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10269         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10270                 d_nv_preserves_uv_bits="$undef"
10271                 ;;
10272         esac
10273         $rm -f try.* try
10274         ;;
10275 esac
10276
10277
10278 : check for off64_t
10279 echo " "
10280 echo "Checking to see if you have off64_t..." >&4
10281 $cat >try.c <<EOCP
10282 #include <sys/types.h>
10283 #include <unistd.h>
10284 int main() { off64_t x = 7; }
10285 EOCP
10286 set try
10287 if eval $compile; then
10288         val="$define"
10289         echo "You have off64_t."
10290 else
10291         val="$undef"
10292         echo "You do not have off64_t."
10293         case "$lseeksize" in
10294         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10295         esac
10296 fi
10297 $rm -f try.* try
10298 set d_off64_t
10299 eval $setvar
10300
10301 : see if POSIX threads are available
10302 set pthread.h i_pthread
10303 eval $inhdr
10304
10305
10306
10307
10308 : how to create joinable pthreads
10309 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10310         echo " "
10311         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10312         $cat >try.c <<'EOCP'
10313 #include <pthread.h>
10314 int main() {
10315     int detachstate = JOINABLE;
10316 }
10317 EOCP
10318         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10319         if eval $compile; then
10320                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10321                 val="$undef" # Yes, undef.
10322                 set d_old_pthread_create_joinable
10323                 eval $setvar
10324                 val=""
10325                 set old_pthread_create_joinable
10326                 eval $setvar
10327         else
10328                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10329                 if eval $compile; then
10330                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10331                         val="$define"
10332                         set d_old_pthread_create_joinable
10333                         eval $setvar
10334                         val=PTHREAD_CREATE_UNDETACHED
10335                         set old_pthread_create_joinable
10336                         eval $setvar
10337                 else            
10338                         set try -DJOINABLE=__UNDETACHED
10339                         if eval $compile; then
10340                                 echo "You seem to use __UNDETACHED." >&4
10341                                 val="$define"
10342                                 set d_old_pthread_create_joinable
10343                                 eval $setvar
10344                                 val=__UNDETACHED
10345                                 set old_pthread_create_joinable
10346                                 eval $setvar
10347                         else
10348                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10349                                 val="$define"
10350                                 set d_old_pthread_create_joinable
10351                                 eval $setvar
10352                                 val=0
10353                                 set old_pthread_create_joinable
10354                                 eval $setvar
10355                         fi
10356                 fi
10357         fi
10358         $rm -f try try.*
10359 else
10360     d_old_pthread_create_joinable="$undef"
10361     old_pthread_create_joinable=""
10362 fi
10363
10364 : see if pause exists
10365 set pause d_pause
10366 eval $inlibc
10367
10368 : see if pipe exists
10369 set pipe d_pipe
10370 eval $inlibc
10371
10372 : see if poll exists
10373 set poll d_poll
10374 eval $inlibc
10375
10376
10377 : see whether the various POSIXish _yields exist
10378 $cat >try.c <<EOP
10379 #include <pthread.h>
10380 #include <stdio.h>
10381 int main() {
10382 #ifdef SCHED_YIELD
10383         sched_yield();
10384 #else
10385 #ifdef PTHREAD_YIELD
10386         pthread_yield();
10387 #else
10388 #ifdef PTHREAD_YIELD_NULL
10389         pthread_yield(NULL);
10390 #endif
10391 #endif
10392 #endif
10393 }
10394 EOP
10395 : see if sched_yield exists
10396 set try -DSCHED_YIELD
10397 if eval $compile; then
10398     val="$define"
10399     sched_yield='sched_yield()'
10400 else
10401     val="$undef"
10402 fi
10403 case "$usethreads" in
10404 $define)
10405         case "$val" in
10406         $define) echo 'sched_yield() found.' >&4        ;;
10407         *)       echo 'sched_yield() NOT found.' >&4    ;;
10408         esac
10409 esac
10410 set d_sched_yield
10411 eval $setvar
10412
10413 : see if pthread_yield exists
10414 set try -DPTHREAD_YIELD
10415 if eval $compile; then
10416     val="$define"
10417     case "$sched_yield" in
10418     '') sched_yield='pthread_yield()' ;;
10419     esac
10420 else
10421     set try -DPTHREAD_YIELD_NULL
10422     if eval $compile; then
10423         val="$define"
10424         case "$sched_yield" in
10425         '') sched_yield='pthread_yield(NULL)' ;;
10426         esac
10427     else
10428         val="$undef"
10429     fi
10430 fi
10431 case "$usethreads" in
10432 $define)
10433         case "$val" in
10434         $define) echo 'pthread_yield() found.' >&4      ;;
10435         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10436         esac
10437         ;;
10438 esac
10439 set d_pthread_yield
10440 eval $setvar
10441
10442 case "$sched_yield" in
10443 '') sched_yield=undef ;;
10444 esac
10445
10446 $rm -f try try.*
10447
10448 : see if this is a pwd.h system
10449 set pwd.h i_pwd
10450 eval $inhdr
10451
10452 case "$i_pwd" in
10453 $define)
10454         xxx=`./findhdr pwd.h`
10455         $cppstdin $cppflags $cppminus < $xxx >$$.h
10456
10457         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10458                 val="$define"
10459         else
10460                 val="$undef"
10461         fi
10462         set d_pwquota
10463         eval $setvar
10464
10465         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10466                 val="$define"
10467         else
10468                 val="$undef"
10469         fi
10470         set d_pwage
10471         eval $setvar
10472
10473         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10474                 val="$define"
10475         else
10476                 val="$undef"
10477         fi
10478         set d_pwchange
10479         eval $setvar
10480
10481         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10482                 val="$define"
10483         else
10484                 val="$undef"
10485         fi
10486         set d_pwclass
10487         eval $setvar
10488
10489         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10490                 val="$define"
10491         else
10492                 val="$undef"
10493         fi
10494         set d_pwexpire
10495         eval $setvar
10496
10497         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10498                 val="$define"
10499         else
10500                 val="$undef"
10501         fi
10502         set d_pwcomment
10503         eval $setvar
10504
10505         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10506                 val="$define"
10507         else
10508                 val="$undef"
10509         fi
10510         set d_pwgecos
10511         eval $setvar
10512
10513         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10514                 val="$define"
10515         else
10516                 val="$undef"
10517         fi
10518         set d_pwpasswd
10519         eval $setvar
10520
10521         $rm -f $$.h
10522         ;;
10523 *)
10524         val="$undef"; 
10525         set d_pwquota; eval $setvar
10526         set d_pwage; eval $setvar
10527         set d_pwchange; eval $setvar
10528         set d_pwclass; eval $setvar
10529         set d_pwexpire; eval $setvar
10530         set d_pwcomment; eval $setvar
10531         set d_pwgecos; eval $setvar
10532         set d_pwpasswd; eval $setvar
10533         ;;
10534 esac
10535
10536 : see if readdir and friends exist
10537 set readdir d_readdir
10538 eval $inlibc
10539 set seekdir d_seekdir
10540 eval $inlibc
10541 set telldir d_telldir
10542 eval $inlibc
10543 set rewinddir d_rewinddir
10544 eval $inlibc
10545
10546 : see if readlink exists
10547 set readlink d_readlink
10548 eval $inlibc
10549
10550 : see if rename exists
10551 set rename d_rename
10552 eval $inlibc
10553
10554 : see if rmdir exists
10555 set rmdir d_rmdir
10556 eval $inlibc
10557
10558 : see if memory.h is available.
10559 val=''
10560 set memory.h val
10561 eval $inhdr
10562
10563 : See if it conflicts with string.h
10564 case "$val" in
10565 $define)
10566         case "$strings" in
10567         '') ;;
10568         *)
10569                 $cppstdin $cppflags $cppminus < $strings > mem.h
10570                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10571                         echo " "
10572                         echo "We won't be including <memory.h>."
10573                         val="$undef"
10574                 fi
10575                 $rm -f mem.h
10576                 ;;
10577         esac
10578 esac
10579 set i_memory
10580 eval $setvar
10581
10582 : can bcopy handle overlapping blocks?
10583 val="$undef"
10584 case "$d_bcopy" in
10585 "$define")
10586         echo " "
10587         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10588         $cat >try.c <<EOCP
10589 #$i_memory I_MEMORY
10590 #$i_stdlib I_STDLIB
10591 #$i_string I_STRING
10592 #$i_unistd I_UNISTD
10593 EOCP
10594         $cat >>try.c <<'EOCP'
10595 #include <stdio.h>
10596 #ifdef I_MEMORY
10597 #  include <memory.h>
10598 #endif
10599 #ifdef I_STDLIB
10600 #  include <stdlib.h>
10601 #endif
10602 #ifdef I_STRING
10603 #  include <string.h>
10604 #else
10605 #  include <strings.h>
10606 #endif
10607 #ifdef I_UNISTD
10608 #  include <unistd.h>  /* Needed for NetBSD */
10609 #endif
10610 int main()
10611 {
10612 char buf[128], abc[128];
10613 char *b;
10614 int len;
10615 int off;
10616 int align;
10617
10618 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10619
10620 for (align = 7; align >= 0; align--) {
10621         for (len = 36; len; len--) {
10622                 b = buf+align;
10623                 bcopy(abc, b, len);
10624                 for (off = 1; off <= len; off++) {
10625                         bcopy(b, b+off, len);
10626                         bcopy(b+off, b, len);
10627                         if (bcmp(b, abc, len))
10628                                 exit(1);
10629                 }
10630         }
10631 }
10632 exit(0);
10633 }
10634 EOCP
10635         set try
10636         if eval $compile_ok; then
10637                 if ./try 2>/dev/null; then
10638                         echo "Yes, it can."
10639                         val="$define"
10640                 else
10641                         echo "It can't, sorry."
10642                         case "$d_memmove" in
10643                         "$define") echo "But that's Ok since you have memmove()." ;;
10644                         esac
10645                 fi
10646         else
10647                 echo "(I can't compile the test program, so we'll assume not...)"
10648                 case "$d_memmove" in
10649                 "$define") echo "But that's Ok since you have memmove()." ;;
10650                 esac
10651         fi
10652         ;;
10653 esac
10654 $rm -f try.* try core
10655 set d_safebcpy
10656 eval $setvar
10657
10658 : can memcpy handle overlapping blocks?
10659 val="$undef"
10660 case "$d_memcpy" in
10661 "$define")
10662         echo " "
10663         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10664         $cat >try.c <<EOCP
10665 #$i_memory I_MEMORY
10666 #$i_stdlib I_STDLIB
10667 #$i_string I_STRING
10668 #$i_unistd I_UNISTD
10669 EOCP
10670         $cat >>try.c <<'EOCP'
10671 #include <stdio.h>
10672 #ifdef I_MEMORY
10673 #  include <memory.h>
10674 #endif
10675 #ifdef I_STDLIB
10676 #  include <stdlib.h>
10677 #endif
10678 #ifdef I_STRING
10679 #  include <string.h>
10680 #else
10681 #  include <strings.h>
10682 #endif
10683 #ifdef I_UNISTD
10684 #  include <unistd.h>  /* Needed for NetBSD */
10685 #endif
10686 int main()
10687 {
10688 char buf[128], abc[128];
10689 char *b;
10690 int len;
10691 int off;
10692 int align;
10693
10694 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10695    try to store the string in read-only memory. */
10696 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10697
10698 for (align = 7; align >= 0; align--) {
10699         for (len = 36; len; len--) {
10700                 b = buf+align;
10701                 memcpy(b, abc, len);
10702                 for (off = 1; off <= len; off++) {
10703                         memcpy(b+off, b, len);
10704                         memcpy(b, b+off, len);
10705                         if (memcmp(b, abc, len))
10706                                 exit(1);
10707                 }
10708         }
10709 }
10710 exit(0);
10711 }
10712 EOCP
10713         set try
10714         if eval $compile_ok; then
10715                 if ./try 2>/dev/null; then
10716                         echo "Yes, it can."
10717                         val="$define"
10718                 else
10719                         echo "It can't, sorry."
10720                         case "$d_memmove" in
10721                         "$define") echo "But that's Ok since you have memmove()." ;;
10722                         esac
10723                 fi
10724         else
10725                 echo "(I can't compile the test program, so we'll assume not...)"
10726                 case "$d_memmove" in
10727                 "$define") echo "But that's Ok since you have memmove()." ;;
10728                 esac
10729         fi
10730         ;;
10731 esac
10732 $rm -f try.* try core
10733 set d_safemcpy
10734 eval $setvar
10735
10736 : can memcmp be trusted to compare relative magnitude?
10737 val="$undef"
10738 case "$d_memcmp" in
10739 "$define")
10740         echo " "
10741         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10742         $cat >try.c <<EOCP
10743 #$i_memory I_MEMORY
10744 #$i_stdlib I_STDLIB
10745 #$i_string I_STRING
10746 #$i_unistd I_UNISTD
10747 EOCP
10748         $cat >>try.c <<'EOCP'
10749 #include <stdio.h>
10750 #ifdef I_MEMORY
10751 #  include <memory.h>
10752 #endif
10753 #ifdef I_STDLIB
10754 #  include <stdlib.h>
10755 #endif
10756 #ifdef I_STRING
10757 #  include <string.h>
10758 #else
10759 #  include <strings.h>
10760 #endif
10761 #ifdef I_UNISTD
10762 #  include <unistd.h>  /* Needed for NetBSD */
10763 #endif
10764 int main()
10765 {
10766 char a = -1;
10767 char b = 0;
10768 if ((a < b) && memcmp(&a, &b, 1) < 0)
10769         exit(1);
10770 exit(0);
10771 }
10772 EOCP
10773         set try
10774         if eval $compile_ok; then
10775                 if ./try 2>/dev/null; then
10776                         echo "Yes, it can."
10777                         val="$define"
10778                 else
10779                         echo "No, it can't (it uses signed chars)."
10780                 fi
10781         else
10782                 echo "(I can't compile the test program, so we'll assume not...)"
10783         fi
10784         ;;
10785 esac
10786 $rm -f try.* try core
10787 set d_sanemcmp
10788 eval $setvar
10789
10790 : see if select exists
10791 set select d_select
10792 eval $inlibc
10793
10794 : see if semctl exists
10795 set semctl d_semctl
10796 eval $inlibc
10797
10798 : see if semget exists
10799 set semget d_semget
10800 eval $inlibc
10801
10802 : see if semop exists
10803 set semop d_semop
10804 eval $inlibc
10805
10806 : see how much of the 'sem*(2)' library is present.
10807 h_sem=true
10808 echo " "
10809 case "$d_semctl$d_semget$d_semop" in
10810 *"$undef"*) h_sem=false;;
10811 esac
10812 case "$osname" in
10813 freebsd)
10814     case "`ipcs 2>&1`" in
10815     "SVID messages"*"not configured"*)
10816         echo "Your $osname does not have the sem*(2) configured." >&4
10817         h_sem=false
10818         val="$undef"
10819         set semctl d_semctl
10820         eval $setvar
10821         set semget d_semget
10822         eval $setvar
10823         set semop d_semop
10824         eval $setvar
10825         ;;
10826     esac
10827     ;;
10828 esac
10829 : we could also check for sys/ipc.h ...
10830 if $h_sem && $test `./findhdr sys/sem.h`; then
10831         echo "You have the full sem*(2) library." >&4
10832         val="$define"
10833 else
10834         echo "You don't have the full sem*(2) library." >&4
10835         val="$undef"
10836 fi
10837 set d_sem
10838 eval $setvar
10839
10840 : see whether sys/sem.h defines union semun
10841 echo " "
10842 $cat > try.c <<'END'
10843 #include <sys/types.h>
10844 #include <sys/ipc.h>
10845 #include <sys/sem.h>
10846 int main () { union semun semun; semun.buf = 0; }
10847 END
10848 set try
10849 if eval $compile; then
10850     echo "You have union semun in <sys/sem.h>." >&4
10851     val="$define"
10852 else
10853     echo "You do not have union semun in <sys/sem.h>." >&4
10854     val="$undef"
10855 fi
10856 $rm -f try try.c try.h
10857 set d_union_semun
10858 eval $setvar
10859
10860 : see how to do semctl IPC_STAT
10861 case "$d_sem" in
10862 $define)
10863     : see whether semctl IPC_STAT can use union semun
10864     echo " "
10865     $cat > try.h <<END
10866 #ifndef S_IRUSR
10867 #   ifdef S_IREAD
10868 #       define S_IRUSR S_IREAD
10869 #       define S_IWUSR S_IWRITE
10870 #       define S_IXUSR S_IEXEC
10871 #   else
10872 #       define S_IRUSR 0400
10873 #       define S_IWUSR 0200
10874 #       define S_IXUSR 0100
10875 #   endif
10876 #   define S_IRGRP (S_IRUSR>>3)
10877 #   define S_IWGRP (S_IWUSR>>3)
10878 #   define S_IXGRP (S_IXUSR>>3)
10879 #   define S_IROTH (S_IRUSR>>6)
10880 #   define S_IWOTH (S_IWUSR>>6)
10881 #   define S_IXOTH (S_IXUSR>>6)
10882 #endif
10883 #ifndef S_IRWXU
10884 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10885 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10886 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10887 #endif
10888 END
10889
10890     $cat > try.c <<END
10891 #include <sys/types.h>
10892 #include <sys/ipc.h>
10893 #include <sys/sem.h>
10894 #include <sys/stat.h>
10895 #include <stdio.h>
10896 #include <errno.h>
10897 #include "try.h"
10898 #ifndef errno
10899 extern int errno;
10900 #endif
10901 #$d_union_semun HAS_UNION_SEMUN
10902 int main() {
10903     union semun
10904 #ifndef HAS_UNION_SEMUN
10905     {
10906         int val;
10907         struct semid_ds *buf;
10908         unsigned short *array;
10909     }
10910 #endif
10911     arg;
10912     int sem, st;
10913
10914 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10915     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10916     if (sem > -1) {
10917         struct semid_ds argbuf;
10918         arg.buf = &argbuf;
10919 #       ifdef IPC_STAT
10920         st = semctl(sem, 0, IPC_STAT, arg);
10921         if (st == 0)
10922             printf("semun\n");
10923         else
10924 #       endif /* IPC_STAT */
10925             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10926 #       ifdef IPC_RMID
10927         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10928 #       endif /* IPC_RMID */
10929             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10930     } else
10931 #endif /* IPC_PRIVATE && ... */
10932         printf("semget failed: errno = %d\n", errno);
10933   return 0;
10934 }
10935 END
10936     val="$undef"
10937     set try
10938     if eval $compile; then
10939         xxx=`./try`
10940         case "$xxx" in
10941         semun) val="$define" ;;
10942         esac
10943     fi
10944     $rm -f try try.c
10945     set d_semctl_semun
10946     eval $setvar
10947     case "$d_semctl_semun" in
10948     $define)
10949         echo "You can use union semun for semctl IPC_STAT." >&4
10950         also='also'
10951         ;;
10952     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10953         also=''
10954         ;;
10955     esac
10956
10957     : see whether semctl IPC_STAT can use struct semid_ds pointer
10958     $cat > try.c <<'END'
10959 #include <sys/types.h>
10960 #include <sys/ipc.h>
10961 #include <sys/sem.h>
10962 #include <sys/stat.h>
10963 #include "try.h"
10964 #include <stdio.h>
10965 #include <errno.h>
10966 #ifndef errno
10967 extern int errno;
10968 #endif
10969 int main() {
10970     struct semid_ds arg;
10971     int sem, st;
10972
10973 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10974     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10975     if (sem > -1) {
10976 #       ifdef IPC_STAT
10977         st = semctl(sem, 0, IPC_STAT, &arg);
10978         if (st == 0)
10979             printf("semid_ds\n");
10980         else
10981 #       endif /* IPC_STAT */
10982             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10983 #       ifdef IPC_RMID
10984         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10985 #       endif /* IPC_RMID */
10986             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10987     } else
10988 #endif /* IPC_PRIVATE && ... */
10989         printf("semget failed: errno = %d\n", errno);
10990
10991     return 0;
10992 }
10993 END
10994     val="$undef"
10995     set try
10996     if eval $compile; then
10997         xxx=`./try`
10998         case "$xxx" in
10999         semid_ds) val="$define" ;;
11000         esac
11001     fi
11002     $rm -f try try.c
11003     set d_semctl_semid_ds
11004     eval $setvar
11005     case "$d_semctl_semid_ds" in
11006     $define)
11007         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11008         ;;
11009     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11010         ;;
11011     esac
11012     $rm -f try.h
11013     ;;
11014 *)  val="$undef"
11015
11016     # We do not have the full sem*(2) library, so assume we can not
11017     # use either.
11018
11019     set d_semctl_semun
11020     eval $setvar
11021
11022     set d_semctl_semid_ds
11023     eval $setvar
11024     ;;
11025 esac
11026
11027 : see if setegid exists
11028 set setegid d_setegid
11029 eval $inlibc
11030
11031 : see if seteuid exists
11032 set seteuid d_seteuid
11033 eval $inlibc
11034
11035 : see if setgrent exists
11036 set setgrent d_setgrent
11037 eval $inlibc
11038
11039 : see if sethostent exists
11040 set sethostent d_sethent
11041 eval $inlibc
11042
11043 : see if setlinebuf exists
11044 set setlinebuf d_setlinebuf
11045 eval $inlibc
11046
11047 : see if setlocale exists
11048 set setlocale d_setlocale
11049 eval $inlibc
11050
11051 : see if setnetent exists
11052 set setnetent d_setnent
11053 eval $inlibc
11054
11055 : see if setprotoent exists
11056 set setprotoent d_setpent
11057 eval $inlibc
11058
11059 : see if setpgid exists
11060 set setpgid d_setpgid
11061 eval $inlibc
11062
11063 : see if setpgrp2 exists
11064 set setpgrp2 d_setpgrp2
11065 eval $inlibc
11066
11067 : see if setpriority exists
11068 set setpriority d_setprior
11069 eval $inlibc
11070
11071 : see if setproctitle exists
11072 set setproctitle d_setproctitle
11073 eval $inlibc
11074
11075 : see if setpwent exists
11076 set setpwent d_setpwent
11077 eval $inlibc
11078
11079 : see if setregid exists
11080 set setregid d_setregid
11081 eval $inlibc
11082 set setresgid d_setresgid
11083 eval $inlibc
11084
11085 : see if setreuid exists
11086 set setreuid d_setreuid
11087 eval $inlibc
11088 set setresuid d_setresuid
11089 eval $inlibc
11090
11091 : see if setrgid exists
11092 set setrgid d_setrgid
11093 eval $inlibc
11094
11095 : see if setruid exists
11096 set setruid d_setruid
11097 eval $inlibc
11098
11099 : see if setservent exists
11100 set setservent d_setsent
11101 eval $inlibc
11102
11103 : see if setsid exists
11104 set setsid d_setsid
11105 eval $inlibc
11106
11107 : see if setvbuf exists
11108 set setvbuf d_setvbuf
11109 eval $inlibc
11110
11111 : see if sfio.h is available
11112 set sfio.h i_sfio
11113 eval $inhdr
11114
11115
11116 : see if sfio library is available
11117 case "$i_sfio" in
11118 $define)
11119         val=''
11120         set sfreserve val
11121         eval $inlibc
11122         ;;
11123 *)
11124         val="$undef"
11125         ;;
11126 esac
11127 : Ok, but do we want to use it.
11128 case "$val" in
11129 $define)
11130         case "$usesfio" in
11131         true|$define|[yY]*) dflt='y';;
11132         *) dflt='n';;
11133         esac
11134         echo "$package can use the sfio library, but it is experimental."
11135         case "$useperlio" in
11136         "$undef")
11137             echo "For sfio also the PerlIO abstraction layer is needed."
11138             echo "Earlier you said you wouldn't want that."
11139             ;;
11140         esac
11141         rp="You seem to have sfio available, do you want to try using it?"
11142         . ./myread
11143         case "$ans" in
11144         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11145                 useperlio="$define"
11146                 val="$define"
11147                 ;;
11148         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11149                 val="$undef"
11150                 : Remove sfio from list of libraries to use
11151                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11152                 shift
11153                 libs="$*"
11154                 echo "libs = $libs" >&4
11155                 ;;
11156         esac
11157         ;;
11158 *)      case "$usesfio" in
11159         true|$define|[yY]*)
11160                 echo "Sorry, cannot find sfio on this machine." >&4
11161                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11162                 val="$undef"
11163                 ;;
11164         esac
11165         ;;
11166 esac
11167 set d_sfio
11168 eval $setvar
11169 case "$d_sfio" in
11170 $define) usesfio='true';;
11171 *) usesfio='false';;
11172 esac
11173
11174 : see if shmctl exists
11175 set shmctl d_shmctl
11176 eval $inlibc
11177
11178 : see if shmget exists
11179 set shmget d_shmget
11180 eval $inlibc
11181
11182 : see if shmat exists
11183 set shmat d_shmat
11184 eval $inlibc
11185 : see what shmat returns
11186 case "$d_shmat" in
11187 "$define")
11188         $cat >shmat.c <<'END'
11189 #include <sys/shm.h>
11190 void *shmat();
11191 END
11192         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11193                 shmattype='void *'
11194         else
11195                 shmattype='char *'
11196         fi
11197         echo "and it returns ($shmattype)." >&4
11198         : see if a prototype for shmat is available
11199         xxx=`./findhdr sys/shm.h`
11200         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11201         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11202                 val="$define"
11203         else
11204                 val="$undef"
11205         fi
11206         $rm -f shmat.[co]
11207         ;;
11208 *)
11209         val="$undef"
11210         ;;
11211 esac
11212 set d_shmatprototype
11213 eval $setvar
11214
11215 : see if shmdt exists
11216 set shmdt d_shmdt
11217 eval $inlibc
11218
11219 : see how much of the 'shm*(2)' library is present.
11220 h_shm=true
11221 echo " "
11222 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11223 *"$undef"*) h_shm=false;;
11224 esac
11225 case "$osname" in
11226 freebsd)
11227     case "`ipcs 2>&1`" in
11228     "SVID shared memory"*"not configured"*)
11229         echo "Your $osname does not have the shm*(2) configured." >&4
11230         h_shm=false
11231         val="$undef"
11232         set shmctl d_shmctl
11233         evat $setvar
11234         set shmget d_shmget
11235         evat $setvar
11236         set shmat d_shmat
11237         evat $setvar
11238         set shmdt d_shmdt
11239         evat $setvar
11240         ;;
11241     esac
11242     ;;
11243 esac
11244 : we could also check for sys/ipc.h ...
11245 if $h_shm && $test `./findhdr sys/shm.h`; then
11246         echo "You have the full shm*(2) library." >&4
11247         val="$define"
11248 else
11249         echo "You don't have the full shm*(2) library." >&4
11250         val="$undef"
11251 fi
11252 set d_shm
11253 eval $setvar
11254
11255 echo " "
11256 : see if we have sigaction
11257 if set sigaction val -f d_sigaction; eval $csym; $val; then
11258         echo 'sigaction() found.' >&4
11259         $cat > try.c <<'EOP'
11260 #include <stdio.h>
11261 #include <sys/types.h>
11262 #include <signal.h>
11263 int main()
11264 {
11265     struct sigaction act, oact;
11266     act.sa_flags = 0;
11267     oact.sa_handler = 0;
11268     /* so that act and oact are used */
11269     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11270 }
11271 EOP
11272         set try
11273         if eval $compile_ok; then
11274                 val="$define"
11275         else
11276                 echo "But you don't seem to have a useable struct sigaction." >&4
11277                 val="$undef"
11278         fi
11279 else
11280         echo 'sigaction NOT found.' >&4
11281         val="$undef"
11282 fi
11283 set d_sigaction; eval $setvar
11284 $rm -f try try$_o try.c
11285
11286 : see if sigsetjmp exists
11287 echo " "
11288 case "$d_sigsetjmp" in
11289 '')
11290         $cat >try.c <<'EOP'
11291 #include <setjmp.h>
11292 sigjmp_buf env;
11293 int set = 1;
11294 int main()
11295 {
11296         if (sigsetjmp(env,1))
11297                 exit(set);
11298         set = 0;
11299         siglongjmp(env, 1);
11300         exit(1);
11301 }
11302 EOP
11303         set try
11304         if eval $compile; then
11305                 if ./try >/dev/null 2>&1; then
11306                         echo "POSIX sigsetjmp found." >&4
11307                         val="$define"
11308                 else
11309                         $cat >&4 <<EOM
11310 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11311 I'll ignore them.
11312 EOM
11313                         val="$undef"
11314                 fi
11315         else
11316                 echo "sigsetjmp not found." >&4
11317                 val="$undef"
11318         fi
11319         ;;
11320 *) val="$d_sigsetjmp"
11321         case "$d_sigsetjmp" in
11322         $define) echo "POSIX sigsetjmp found." >&4;;
11323         $undef) echo "sigsetjmp not found." >&4;;
11324         esac
11325         ;;
11326 esac
11327 set d_sigsetjmp
11328 eval $setvar
11329 $rm -f try.c try
11330
11331 : see if socks5_init exists
11332 set socks5_init d_socks5_init
11333 eval $inlibc
11334
11335 : see if sys/stat.h is available
11336 set sys/stat.h i_sysstat
11337 eval $inhdr
11338
11339
11340 : see if stat knows about block sizes
11341 echo " "
11342 echo "Checking to see if your struct stat has st_blocks field..." >&4
11343 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11344 eval $hasfield
11345
11346
11347 : see if this is a sys/vfs.h system
11348 set sys/vfs.h i_sysvfs
11349 eval $inhdr
11350
11351
11352 : see if this is a sys/statfs.h system
11353 set sys/statfs.h i_sysstatfs
11354 eval $inhdr
11355
11356
11357 echo " "
11358 echo "Checking to see if your system supports struct statfs..." >&4
11359 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
11360 eval $hasstruct
11361 case "$d_statfs_s" in
11362 "$define")      echo "Yes, it does."   ;;
11363 *)              echo "No, it doesn't." ;;
11364 esac
11365
11366
11367
11368 : see if struct statfs knows about f_flags
11369 case "$d_statfs_s" in
11370 define) 
11371         echo " "
11372         echo "Checking to see if your struct statfs has f_flags field..." >&4
11373         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
11374         eval $hasfield
11375         ;;
11376 *)      val="$undef"
11377         set d_statfs_f_flags
11378         eval $setvar
11379         ;;
11380 esac
11381 case "$d_statfs_f_flags" in
11382 "$define")      echo "Yes, it does."   ;;
11383 *)              echo "No, it doesn't." ;;
11384 esac
11385
11386 : see if _ptr and _cnt from stdio act std
11387 echo " "
11388 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11389         echo "(Looks like you have stdio.h from Linux.)"
11390         case "$stdio_ptr" in
11391         '') stdio_ptr='((fp)->_IO_read_ptr)'
11392                 ptr_lval=$define
11393                 ;;
11394         *)      ptr_lval=$d_stdio_ptr_lval;;
11395         esac
11396         case "$stdio_cnt" in
11397         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11398                 cnt_lval=$undef
11399                 ;;
11400         *)      cnt_lval=$d_stdio_cnt_lval;;
11401         esac
11402         case "$stdio_base" in
11403         '') stdio_base='((fp)->_IO_read_base)';;
11404         esac
11405         case "$stdio_bufsiz" in
11406         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11407         esac
11408 else
11409         case "$stdio_ptr" in
11410         '') stdio_ptr='((fp)->_ptr)'
11411                 ptr_lval=$define
11412                 ;;
11413         *)      ptr_lval=$d_stdio_ptr_lval;;
11414         esac
11415         case "$stdio_cnt" in
11416         '') stdio_cnt='((fp)->_cnt)'
11417                 cnt_lval=$define
11418                 ;;
11419         *)      cnt_lval=$d_stdio_cnt_lval;;
11420         esac
11421         case "$stdio_base" in
11422         '') stdio_base='((fp)->_base)';;
11423         esac
11424         case "$stdio_bufsiz" in
11425         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11426         esac
11427 fi
11428 : test whether _ptr and _cnt really work
11429 echo "Checking how std your stdio is..." >&4
11430 $cat >try.c <<EOP
11431 #include <stdio.h>
11432 #define FILE_ptr(fp)    $stdio_ptr
11433 #define FILE_cnt(fp)    $stdio_cnt
11434 int main() {
11435         FILE *fp = fopen("try.c", "r");
11436         char c = getc(fp);
11437         if (
11438                 18 <= FILE_cnt(fp) &&
11439                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11440         )
11441                 exit(0);
11442         exit(1);
11443 }
11444 EOP
11445 val="$undef"
11446 set try
11447 if eval $compile; then
11448         if ./try; then
11449                 echo "Your stdio acts pretty std."
11450                 val="$define"
11451         else
11452                 echo "Your stdio isn't very std."
11453         fi
11454 else
11455         echo "Your stdio doesn't appear very std."
11456 fi
11457 $rm -f try.c try
11458 set d_stdstdio
11459 eval $setvar
11460
11461 : Can _ptr be used as an lvalue?
11462 case "$d_stdstdio$ptr_lval" in
11463 $define$define) val=$define ;;
11464 *) val=$undef ;;
11465 esac
11466 set d_stdio_ptr_lval
11467 eval $setvar
11468
11469 : Can _cnt be used as an lvalue?
11470 case "$d_stdstdio$cnt_lval" in
11471 $define$define) val=$define ;;
11472 *) val=$undef ;;
11473 esac
11474 set d_stdio_cnt_lval
11475 eval $setvar
11476
11477 : see if _base is also standard
11478 val="$undef"
11479 case "$d_stdstdio" in
11480 $define)
11481         $cat >try.c <<EOP
11482 #include <stdio.h>
11483 #define FILE_base(fp)   $stdio_base
11484 #define FILE_bufsiz(fp) $stdio_bufsiz
11485 int main() {
11486         FILE *fp = fopen("try.c", "r");
11487         char c = getc(fp);
11488         if (
11489                 19 <= FILE_bufsiz(fp) &&
11490                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11491         )
11492                 exit(0);
11493         exit(1);
11494 }
11495 EOP
11496         set try
11497         if eval $compile; then
11498                 if ./try; then
11499                         echo "And its _base field acts std."
11500                         val="$define"
11501                 else
11502                         echo "But its _base field isn't std."
11503                 fi
11504         else
11505                 echo "However, it seems to be lacking the _base field."
11506         fi
11507         $rm -f try.c try
11508         ;;
11509 esac
11510 set d_stdiobase
11511 eval $setvar
11512
11513 $cat >&4 <<EOM
11514 Checking how to access stdio streams by file descriptor number...
11515 EOM
11516 case "$stdio_stream_array" in
11517 '')     $cat >try.c <<EOCP
11518 #include <stdio.h>
11519 int main() {
11520   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11521     printf("yes\n");
11522 }
11523 EOCP
11524         for s in _iob __iob __sF
11525         do
11526                 set try -DSTDIO_STREAM_ARRAY=$s
11527                 if eval $compile; then
11528                         case "`./try$exe_ext`" in
11529                         yes)    stdio_stream_array=$s; break ;;
11530                         esac
11531                 fi
11532         done
11533         $rm -f try.* try$exe_ext
11534 esac
11535 case "$stdio_stream_array" in
11536 '')     $cat >&4 <<EOM
11537 I can't figure out how to access stdio streams by file descriptor number.
11538 EOM
11539         d_stdio_stream_array="$undef"
11540         ;;
11541 *)      $cat >&4 <<EOM
11542 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11543 EOM
11544         d_stdio_stream_array="$define"
11545         ;;
11546 esac
11547
11548 : see if strcoll exists
11549 set strcoll d_strcoll
11550 eval $inlibc
11551
11552 : check for structure copying
11553 echo " "
11554 echo "Checking to see if your C compiler can copy structs..." >&4
11555 $cat >try.c <<'EOCP'
11556 int main()
11557 {
11558         struct blurfl {
11559                 int dyick;
11560         } foo, bar;
11561
11562         foo = bar;
11563 }
11564 EOCP
11565 if $cc -c try.c >/dev/null 2>&1 ; then
11566         val="$define"
11567         echo "Yup, it can."
11568 else
11569         val="$undef"
11570         echo "Nope, it can't."
11571 fi
11572 set d_strctcpy
11573 eval $setvar
11574 $rm -f try.*
11575
11576 : see if strerror and/or sys_errlist[] exist
11577 echo " "
11578 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11579     if set strerror val -f d_strerror; eval $csym; $val; then
11580                 echo 'strerror() found.' >&4
11581                 d_strerror="$define"
11582                 d_strerrm='strerror(e)'
11583                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11584                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11585                         d_syserrlst="$define"
11586                 else
11587                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11588                         d_syserrlst="$undef"
11589                 fi
11590     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11591                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11592                 echo 'strerror() found in string header.' >&4
11593                 d_strerror="$define"
11594                 d_strerrm='strerror(e)'
11595                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11596                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11597                                 d_syserrlst="$define"
11598                 else
11599                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11600                         d_syserrlst="$undef"
11601                 fi
11602     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11603                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11604                 d_strerror="$undef"
11605                 d_syserrlst="$define"
11606                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11607     else
11608                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11609                 d_strerror="$undef"
11610                 d_syserrlst="$undef"
11611                 d_strerrm='"unknown"'
11612     fi
11613 fi
11614
11615 : see if strtod exists
11616 set strtod d_strtod
11617 eval $inlibc
11618
11619 : see if strtol exists
11620 set strtol d_strtol
11621 eval $inlibc
11622
11623 : see if strtold exists
11624 set strtold d_strtold
11625 eval $inlibc
11626
11627 : see if strtoll exists
11628 set strtoll d_strtoll
11629 eval $inlibc
11630
11631 case "$d_longlong-$d_strtoll" in
11632 "$define-$define")
11633         $cat <<EOM
11634 Checking whether your strtoll() works okay...
11635 EOM
11636         $cat >try.c <<'EOCP'
11637 #include <errno.h>
11638 #ifdef __hpux
11639 #define strtoll __strtoll
11640 #endif
11641 #ifdef __EMX__
11642 #define strtoll _strtoll
11643 #endif
11644 #include <stdio.h>
11645 extern long long int strtoll(char *s, char **, int); 
11646 static int bad = 0;
11647 int check(char *s, long long ell, int een) {
11648         long long gll;
11649         errno = 0;
11650         gll = strtoll(s, 0, 10);
11651         if (!((gll == ell) && (errno == een)))
11652                 bad++;
11653 }
11654 int main() {
11655         check(" 1",                                      1LL, 0);
11656         check(" 0",                                      0LL, 0);
11657         check("-1",                                     -1LL, 0);
11658         check("-9223372036854775808", -9223372036854775808LL, 0);
11659         check("-9223372036854775808", -9223372036854775808LL, 0);
11660         check(" 9223372036854775807",  9223372036854775807LL, 0);
11661         check("-9223372036854775808", -9223372036854775808LL, 0);
11662         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11663         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11664         if (!bad)
11665                 printf("ok\n");
11666 }
11667 EOCP
11668         set try
11669         if eval $compile; then
11670                 yyy=`./try`
11671                 case "$yyy" in
11672                 ok) echo "Your strtoll() seems to be working okay." ;;
11673                 *) cat <<EOM >&4
11674 Your strtoll() doesn't seem to be working okay.
11675 EOM
11676                    d_strtoll="$undef"
11677                    ;;
11678                 esac
11679         else
11680                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11681                 d_strtoll="$undef"
11682         fi
11683         ;;
11684 esac
11685
11686 : see if strtoul exists
11687 set strtoul d_strtoul
11688 eval $inlibc
11689
11690 : see if strtoull exists
11691 set strtoull d_strtoull
11692 eval $inlibc
11693
11694 case "$d_longlong-$d_strtoull" in
11695 "$define-$define")
11696         $cat <<EOM
11697 Checking whether your strtoull() works okay...
11698 EOM
11699         $cat >try.c <<'EOCP'
11700 #include <errno.h>
11701 #ifdef __hpux
11702 #define strtoull __strtoull
11703 #endif
11704 #include <stdio.h>
11705 extern unsigned long long int strtoull(char *s, char **, int); 
11706 static int bad = 0;
11707 int check(char *s, long long eull, int een) {
11708         long long gull;
11709         errno = 0;
11710         gull = strtoull(s, 0, 10);
11711         if (!((gull == eull) && (errno == een)))
11712                 bad++;
11713 }
11714 int main() {
11715         check(" 1",                                       1LL, 0);
11716         check(" 0",                                       0LL, 0);
11717         check("18446744073709551615", 18446744073709551615ULL, 0);
11718         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11719         if (!bad)
11720                 printf("ok\n");
11721 }
11722 EOCP
11723         set try
11724         if eval $compile; then
11725                 case "`./try`" in
11726                 ok) echo "Your strtoull() seems to be working okay." ;;
11727                 *) cat <<EOM >&4
11728 Your strtoull() doesn't seem to be working okay.
11729 EOM
11730                    d_strtoull="$undef"
11731                    ;;
11732                 esac
11733         fi
11734         ;;
11735 esac
11736
11737 : see if strtouq exists
11738 set strtouq d_strtouq
11739 eval $inlibc
11740
11741 : see if strxfrm exists
11742 set strxfrm d_strxfrm
11743 eval $inlibc
11744
11745 : see if symlink exists
11746 set symlink d_symlink
11747 eval $inlibc
11748
11749 : see if syscall exists
11750 set syscall d_syscall
11751 eval $inlibc
11752
11753 : see if sysconf exists
11754 set sysconf d_sysconf
11755 eval $inlibc
11756
11757 : see if system exists
11758 set system d_system
11759 eval $inlibc
11760
11761 : see if tcgetpgrp exists
11762 set tcgetpgrp d_tcgetpgrp
11763 eval $inlibc
11764
11765 : see if tcsetpgrp exists
11766 set tcsetpgrp d_tcsetpgrp
11767 eval $inlibc
11768
11769 : see if prototype for telldir is available
11770 echo " "
11771 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11772 eval $hasproto
11773
11774 : see if this is a sys/times.h system
11775 set sys/times.h i_systimes
11776 eval $inhdr
11777
11778 : see if times exists
11779 echo " "
11780 if set times val -f d_times; eval $csym; $val; then
11781         echo 'times() found.' >&4
11782         d_times="$define"
11783         inc=''
11784         case "$i_systimes" in
11785         "$define") inc='sys/times.h';;
11786         esac
11787         rp="What is the type returned by times() on this system?"
11788         set clock_t clocktype long stdio.h sys/types.h $inc
11789         eval $typedef_ask
11790 else
11791         echo 'times() NOT found, hope that will do.' >&4
11792         d_times="$undef"
11793         clocktype='int'
11794 fi
11795
11796 : see if truncate exists
11797 set truncate d_truncate
11798 eval $inlibc
11799
11800 : see if tzname[] exists
11801 echo " "
11802 if set tzname val -a d_tzname; eval $csym; $val; then
11803         val="$define"
11804         echo 'tzname[] found.' >&4
11805 else
11806         val="$undef"
11807         echo 'tzname[] NOT found.' >&4
11808 fi
11809 set d_tzname
11810 eval $setvar
11811
11812 : see if umask exists
11813 set umask d_umask
11814 eval $inlibc
11815
11816 : see if ustat exists
11817 set ustat d_ustat
11818 eval $inlibc
11819
11820 : backward compatibility for d_hvfork
11821 if test X$d_hvfork != X; then
11822         d_vfork="$d_hvfork"
11823         d_hvfork=''
11824 fi
11825 : see if there is a vfork
11826 val=''
11827 set vfork val
11828 eval $inlibc
11829
11830 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11831 : perl on Solaris 2.x, and probably elsewhere.
11832 case "$val" in
11833 $define)
11834         echo " "
11835         case "$usevfork" in
11836         false) dflt='n';;
11837         *) dflt='y';;
11838         esac
11839         cat <<'EOM'
11840  
11841 Perl can only use a vfork() that doesn't suffer from strict
11842 restrictions on calling functions or modifying global data in
11843 the child.  For example, glibc-2.1 contains such a vfork()
11844 that is unsuitable.  If your system provides a proper fork()
11845 call, chances are that you do NOT want perl to use vfork().
11846
11847 EOM
11848         rp="Do you still want to use vfork()?"
11849         . ./myread
11850         case "$ans" in
11851         y|Y) ;;
11852         *)
11853                 echo "Ok, we won't use vfork()."
11854                 val="$undef"
11855                 ;;
11856         esac
11857         ;;
11858 esac
11859 set d_vfork
11860 eval $setvar
11861 case "$d_vfork" in
11862 $define) usevfork='true';;
11863 *) usevfork='false';;
11864 esac
11865
11866 : see if this is an sysdir system
11867 set sys/dir.h i_sysdir
11868 eval $inhdr
11869
11870 : see if this is an sysndir system
11871 set sys/ndir.h i_sysndir
11872 eval $inhdr
11873
11874 : see if closedir exists
11875 set closedir d_closedir
11876 eval $inlibc
11877
11878 case "$d_closedir" in
11879 "$define")
11880         echo " "
11881         echo "Checking whether closedir() returns a status..." >&4
11882         cat > closedir.c <<EOM
11883 #$i_dirent I_DIRENT             /**/
11884 #$i_sysdir I_SYS_DIR            /**/
11885 #$i_sysndir I_SYS_NDIR          /**/
11886 #$i_systypes I_SYS_TYPES        /**/
11887
11888 #if defined(I_SYS_TYPES)
11889 #include <sys/types.h>
11890 #endif
11891 #if defined(I_DIRENT)
11892 #include <dirent.h>
11893 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11894 #include <sys/dir.h>
11895 #endif
11896 #else
11897 #ifdef I_SYS_NDIR
11898 #include <sys/ndir.h>
11899 #else
11900 #ifdef I_SYS_DIR
11901 #ifdef hp9000s500
11902 #include <ndir.h>       /* may be wrong in the future */
11903 #else
11904 #include <sys/dir.h>
11905 #endif
11906 #endif
11907 #endif
11908 #endif 
11909 int main() { return closedir(opendir(".")); }
11910 EOM
11911         set closedir
11912         if eval $compile_ok; then
11913                 if ./closedir > /dev/null 2>&1 ; then
11914                         echo "Yes, it does."
11915                         val="$undef"
11916                 else
11917                         echo "No, it doesn't."
11918                         val="$define"
11919                 fi
11920         else
11921                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11922                 val="$define"
11923         fi
11924         ;;
11925 *)
11926         val="$undef";
11927         ;;
11928 esac
11929 set d_void_closedir
11930 eval $setvar
11931 $rm -f closedir*
11932 : check for volatile keyword
11933 echo " "
11934 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11935 $cat >try.c <<'EOCP'
11936 int main()
11937 {
11938         typedef struct _goo_struct goo_struct;
11939         goo_struct * volatile goo = ((goo_struct *)0);
11940         struct _goo_struct {
11941                 long long_int;
11942                 int reg_int;
11943                 char char_var;
11944         };
11945         typedef unsigned short foo_t;
11946         char *volatile foo;
11947         volatile int bar;
11948         volatile foo_t blech;
11949         foo = foo;
11950 }
11951 EOCP
11952 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11953         val="$define"
11954         echo "Yup, it does."
11955 else
11956         val="$undef"
11957         echo "Nope, it doesn't."
11958 fi
11959 set d_volatile
11960 eval $setvar
11961 $rm -f try.*
11962
11963 : see if there is a wait4
11964 set wait4 d_wait4
11965 eval $inlibc
11966
11967 : see if waitpid exists
11968 set waitpid d_waitpid
11969 eval $inlibc
11970
11971 : see if wcstombs exists
11972 set wcstombs d_wcstombs
11973 eval $inlibc
11974
11975 : see if wctomb exists
11976 set wctomb d_wctomb
11977 eval $inlibc
11978
11979 : preserve RCS keywords in files with variable substitution, grrr
11980 Date='$Date'
11981 Id='$Id'
11982 Log='$Log'
11983 RCSfile='$RCSfile'
11984 Revision='$Revision'
11985
11986 case "$crosscompile" in
11987 ''|[nN]*) crosscompile="$undef" ;;
11988 esac
11989
11990 case "$osname" in
11991 next|rhapsody|darwin) multiarch="$define" ;;
11992 esac
11993 case "$multiarch" in
11994 ''|[nN]*) multiarch="$undef" ;;
11995 esac
11996
11997 : check for alignment requirements
11998 echo " "
11999 case "$crosscompile$multiarch" in
12000 *$define*)
12001         $cat <<EOM
12002 You seem to be either cross-compiling or doing a multiarchitecture build,
12003 skipping the memory alignment check.
12004
12005 EOM
12006         case "$alignbytes" in
12007         '') alignbytes=8 ;;
12008         esac
12009         ;;
12010 *)
12011         case "$alignbytes" in
12012         '') echo "Checking alignment constraints..." >&4
12013                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12014                         $cat >try.c <<'EOCP'
12015 typedef long double NV;
12016 EOCP
12017                 else
12018                         $cat >try.c <<'EOCP'
12019 typedef double NV;
12020 EOCP
12021                 fi
12022                 $cat >>try.c <<'EOCP'
12023 #include <stdio.h>
12024 struct foobar {
12025         char foo;
12026         NV bar;
12027 } try_algn;
12028 int main()
12029 {
12030     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12031     return(0);
12032 }
12033 EOCP
12034                 set try
12035                 if eval $compile_ok; then
12036                         dflt=`./try`
12037                 else
12038                         dflt='8'
12039                         echo "(I can't seem to compile the test program...)"
12040                 fi
12041                 ;;
12042         *) dflt="$alignbytes"
12043                 ;;
12044         esac
12045         rp="Doubles must be aligned on a how-many-byte boundary?"
12046         . ./myread
12047         alignbytes="$ans"
12048         $rm -f try.c try
12049         ;;
12050 esac
12051
12052
12053 : set the base revision
12054 baserev=5.0
12055
12056 : check for ordering of bytes in a long
12057 echo " "
12058 case "$crosscompile$multiarch" in
12059 *$define*)
12060         $cat <<EOM
12061 You seem to be either cross-compiling or doing a multiarchitecture build,
12062 skipping the byteorder check.
12063
12064 EOM
12065         byteorder='0xffff'
12066         ;;
12067 *)
12068         case "$byteorder" in
12069         '')
12070                 $cat <<'EOM'
12071 In the following, larger digits indicate more significance.  A big-endian
12072 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12073 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12074 machines may have weird orders like 3412.  A Cray will report 87654321,
12075 an Alpha will report 12345678. If the test program works the default is
12076 probably right.
12077 I'm now running the test program...
12078 EOM
12079                 $cat >try.c <<'EOCP'
12080 #include <stdio.h>
12081 int main()
12082 {
12083         int i;
12084         union {
12085                 unsigned long l;
12086                 char c[sizeof(long)];
12087         } u;
12088
12089         if (sizeof(long) > 4)
12090                 u.l = (0x08070605L << 32) | 0x04030201L;
12091         else
12092                 u.l = 0x04030201L;
12093         for (i = 0; i < sizeof(long); i++)
12094                 printf("%c", u.c[i]+'0');
12095         printf("\n");
12096         exit(0);
12097 }
12098 EOCP
12099                 xxx_prompt=y
12100                 set try
12101                 if eval $compile && ./try > /dev/null; then
12102                         dflt=`./try`
12103                         case "$dflt" in
12104                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12105                                 echo "(The test program ran ok.)"
12106                                 echo "byteorder=$dflt"
12107                                 xxx_prompt=n
12108                         ;;
12109                         ????|????????) echo "(The test program ran ok.)" ;;
12110                         *) echo "(The test program didn't run right for some reason.)" ;;
12111                         esac
12112                 else
12113                         dflt='4321'
12114                         cat <<'EOM'
12115 (I can't seem to compile the test program.  Guessing big-endian...)
12116 EOM
12117                 fi
12118                 case "$xxx_prompt" in
12119                 y)
12120                         rp="What is the order of bytes in a long?"
12121                         . ./myread
12122                         byteorder="$ans"
12123                         ;;
12124                 *)      byteorder=$dflt
12125                         ;;
12126                 esac
12127                 ;;
12128         esac
12129         $rm -f try.c try
12130         ;;
12131 esac
12132
12133
12134 : how do we catenate cpp tokens here?
12135 echo " "
12136 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12137 $cat >cpp_stuff.c <<'EOCP'
12138 #define RCAT(a,b)a/**/b
12139 #define ACAT(a,b)a ## b
12140 RCAT(Rei,ser)
12141 ACAT(Cir,cus)
12142 EOCP
12143 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12144 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12145         echo "Oh!  Smells like ANSI's been here." >&4
12146         echo "We can catify or stringify, separately or together!"
12147         cpp_stuff=42
12148 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12149         echo "Ah, yes!  The good old days!" >&4
12150         echo "However, in the good old days we don't know how to stringify and"
12151         echo "catify at the same time."
12152         cpp_stuff=1
12153 else
12154         $cat >&4 <<EOM
12155 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12156 to have to edit the values of CAT[2-5] in config.h...
12157 EOM
12158         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12159 fi
12160 $rm -f cpp_stuff.*
12161
12162 : see if this is a db.h system
12163 set db.h i_db
12164 eval $inhdr
12165
12166 case "$i_db" in
12167 $define)
12168         : Check db version.
12169         echo " "
12170         echo "Checking Berkeley DB version ..." >&4
12171         $cat >try.c <<EOCP
12172 #$d_const HASCONST
12173 #ifndef HASCONST
12174 #define const
12175 #endif
12176 #include <sys/types.h>
12177 #include <stdio.h>
12178 #include <db.h>
12179 int main()
12180 {
12181 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12182     int Major, Minor, Patch ;
12183     unsigned long Version ;
12184     (void)db_version(&Major, &Minor, &Patch) ;
12185     printf("You have Berkeley DB Version 2 or greater\n");
12186
12187     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12188                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12189     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12190                 Major, Minor, Patch) ;
12191
12192     /* check that db.h & libdb are compatible */
12193     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12194         printf("db.h and libdb are incompatible\n") ;
12195         exit(3);        
12196     }
12197
12198     printf("db.h and libdb are compatible\n") ;
12199
12200     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12201                 + DB_VERSION_PATCH ;
12202
12203     /* needs to be >= 2.3.4 */
12204     if (Version < 2003004) {
12205     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12206         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12207         exit(2);        
12208     }
12209
12210     exit(0);
12211 #else
12212 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12213     printf("You have Berkeley DB Version 1\n");
12214     exit(0);    /* DB version < 2: the coast is clear. */
12215 #else
12216     exit(1);    /* <db.h> not Berkeley DB? */
12217 #endif
12218 #endif
12219 }
12220 EOCP
12221         set try
12222         if eval $compile_ok && ./try; then
12223                 echo 'Looks OK.' >&4
12224         else
12225                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12226                 i_db=$undef
12227                 case " $libs " in
12228                 *"-ldb "*)
12229                         : Remove db from list of libraries to use
12230                         echo "Removing unusable -ldb from library list" >&4
12231                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12232                         shift
12233                         libs="$*"
12234                         echo "libs = $libs" >&4
12235                         ;;
12236                 esac
12237         fi
12238         $rm -f try.*
12239         ;;
12240 esac
12241
12242 case "$i_db" in
12243 define)
12244         : Check the return type needed for hash 
12245         echo " "
12246         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12247         $cat >try.c <<EOCP
12248 #$d_const HASCONST
12249 #ifndef HASCONST
12250 #define const
12251 #endif
12252 #include <sys/types.h>
12253 #include <db.h>
12254
12255 #ifndef DB_VERSION_MAJOR
12256 u_int32_t hash_cb (ptr, size)
12257 const void *ptr;
12258 size_t size;
12259 {
12260 }
12261 HASHINFO info;
12262 int main()
12263 {
12264         info.hash = hash_cb;
12265 }
12266 #endif
12267 EOCP
12268         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12269                 if $contains warning try.out >>/dev/null 2>&1 ; then
12270                         db_hashtype='int'
12271                 else
12272                         db_hashtype='u_int32_t'
12273                 fi
12274         else
12275                 : XXX Maybe we should just give up here.
12276                 db_hashtype=u_int32_t
12277                 $cat try.out >&4
12278                 echo "Help:  I can't seem to compile the db test program." >&4
12279                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12280         fi
12281         $rm -f try.*
12282         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12283         ;;
12284 *)      db_hashtype=u_int32_t
12285         ;;
12286 esac
12287 case "$i_db" in
12288 define)
12289         : Check the return type needed for prefix 
12290         echo " "
12291         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12292         cat >try.c <<EOCP
12293 #$d_const HASCONST
12294 #ifndef HASCONST
12295 #define const
12296 #endif
12297 #include <sys/types.h>
12298 #include <db.h>
12299
12300 #ifndef DB_VERSION_MAJOR
12301 size_t prefix_cb (key1, key2)
12302 const DBT *key1;
12303 const DBT *key2;
12304 {
12305 }
12306 BTREEINFO info;
12307 int main()
12308 {
12309         info.prefix = prefix_cb;
12310 }
12311 #endif
12312 EOCP
12313         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12314                 if $contains warning try.out >>/dev/null 2>&1 ; then
12315                         db_prefixtype='int'
12316                 else
12317                         db_prefixtype='size_t'
12318                 fi
12319         else
12320                 db_prefixtype='size_t'
12321                 : XXX Maybe we should just give up here.
12322                 $cat try.out >&4
12323                 echo "Help:  I can't seem to compile the db test program." >&4
12324                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12325         fi
12326         $rm -f try.*
12327         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12328         ;;
12329 *)      db_prefixtype='size_t'
12330         ;;
12331 esac
12332
12333 : check for void type
12334 echo " "
12335 echo "Checking to see how well your C compiler groks the void type..." >&4
12336 case "$voidflags" in
12337 '')
12338         $cat >try.c <<'EOCP'
12339 #if TRY & 1
12340 void sub() {
12341 #else
12342 sub() {
12343 #endif
12344         extern void moo();      /* function returning void */
12345         void (*goo)();          /* ptr to func returning void */
12346 #if TRY & 8
12347         void *hue;              /* generic ptr */
12348 #endif
12349 #if TRY & 2
12350         void (*foo[10])();
12351 #endif
12352
12353 #if TRY & 4
12354         if(goo == moo) {
12355                 exit(0);
12356         }
12357 #endif
12358         exit(0);
12359 }
12360 int main() { sub(); }
12361 EOCP
12362         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12363                 voidflags=$defvoidused
12364         echo "Good.  It appears to support void to the level $package wants.">&4
12365                 if $contains warning .out >/dev/null 2>&1; then
12366                         echo "However, you might get some warnings that look like this:"
12367                         $cat .out
12368                 fi
12369         else
12370 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12371                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12372                         echo "It supports 1..."
12373                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12374                                 echo "It also supports 2..."
12375                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12376                                         voidflags=7
12377                                         echo "And it supports 4 but not 8 definitely."
12378                                 else
12379                                         echo "It doesn't support 4..."
12380                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12381                                                 voidflags=11
12382                                                 echo "But it supports 8."
12383                                         else
12384                                                 voidflags=3
12385                                                 echo "Neither does it support 8."
12386                                         fi
12387                                 fi
12388                         else
12389                                 echo "It does not support 2..."
12390                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12391                                         voidflags=13
12392                                         echo "But it supports 4 and 8."
12393                                 else
12394                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12395                                                 voidflags=5
12396                                                 echo "And it supports 4 but has not heard about 8."
12397                                         else
12398                                                 echo "However it supports 8 but not 4."
12399                                         fi
12400                                 fi
12401                         fi
12402                 else
12403                         echo "There is no support at all for void."
12404                         voidflags=0
12405                 fi
12406         fi
12407 esac
12408 case "$voidflags" in
12409 "$defvoidused") ;;
12410 *)      $cat >&4 <<'EOM'
12411   Support flag bits are:
12412     1: basic void declarations.
12413     2: arrays of pointers to functions returning void.
12414     4: operations between pointers to and addresses of void functions.
12415     8: generic void pointers.
12416 EOM
12417         dflt="$voidflags";
12418         rp="Your void support flags add up to what?"
12419         . ./myread
12420         voidflags="$ans"
12421         ;;
12422 esac
12423 $rm -f try.* .out
12424
12425
12426 : How can we generate normalized random numbers ?
12427 echo " "
12428 echo "Looking for a random number function..." >&4
12429 case "$randfunc" in
12430 '')
12431         if set drand48 val -f; eval $csym; $val; then
12432                 dflt="drand48"
12433                 echo "Good, found drand48()." >&4
12434         elif set random val -f; eval $csym; $val; then
12435                 dflt="random"
12436                 echo "OK, found random()." >&4
12437         else
12438                 dflt="rand"
12439                 echo "Yick, looks like I have to use rand()." >&4
12440         fi
12441         echo " "
12442         ;;
12443 *)
12444         dflt="$randfunc"
12445         ;;
12446 esac
12447 cont=true
12448
12449 case "$ccflags" in
12450 *-Dmy_rand=*|*-Dmy_srand=*)
12451         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12452         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12453         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12454         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12455         ;;
12456 esac
12457
12458 while $test "$cont"; do
12459         rp="Use which function to generate random numbers?"
12460         . ./myread
12461         if $test "$ans" = "$dflt"; then
12462                 : null
12463         else
12464                 randbits=''
12465         fi
12466         randfunc="$ans"
12467         if set $ans val -f; eval $csym; $val; then
12468                 cont=''
12469         else
12470                 dflt=y
12471                 rp="I cannot find function $ans. Use that name anyway?"
12472                 . ./myread
12473                 dflt=rand
12474                 case "$ans" in
12475                         [yY]*) cont='';;
12476                 esac
12477         fi
12478         case "$cont" in
12479         '')
12480                 case "$randfunc" in
12481                 drand48)
12482                         drand01="drand48()"
12483                         seedfunc="srand48"
12484                         randbits=48
12485                         randseedtype=long
12486                         ;;
12487                 rand|random)
12488                         case "$randbits" in
12489                         '')
12490 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12491                                 $cat >try.c <<EOCP
12492 #$i_unistd I_UNISTD
12493 #$i_stdlib I_STDLIB
12494 #include <stdio.h>
12495 #ifdef I_UNISTD
12496 #  include <unistd.h>
12497 #endif
12498 #ifdef I_STDLIB
12499 #  include <stdlib.h>
12500 #endif
12501 int main()
12502 {
12503         register int i;
12504         register unsigned long tmp;
12505         register unsigned long max = 0L;
12506
12507         for (i = 1000; i; i--) {
12508                 tmp = (unsigned long) $randfunc();
12509                 if (tmp > max) max = tmp;
12510         }
12511         for (i = 0; max; i++)
12512                 max /= 2;
12513         printf("%d\n",i);
12514 }
12515 EOCP
12516                                 set try
12517                                 if eval $compile_ok; then
12518                                         dflt=`try`
12519                                 else
12520                                         dflt='?'
12521                                         echo "(I can't seem to compile the test program...)"
12522                                 fi
12523                                 ;;
12524                         *)
12525                                 dflt="$randbits"
12526                                 ;;
12527                         esac
12528                         rp="How many bits does your $randfunc() function produce?"
12529                         . ./myread
12530                         randbits="$ans"
12531                         $rm -f try.c try
12532                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12533                         seedfunc="s$randfunc"
12534                         randseedtype=unsigned
12535                         ;;
12536                 *)
12537                         dflt="31"
12538                         rp="How many bits does your $randfunc() function produce?"
12539                         . ./myread
12540                         randbits="$ans"
12541                         seedfunc="s$randfunc"
12542                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12543                         if set $seedfunc val -f; eval $csym; $val; then
12544                                 echo "(Using $seedfunc() to seed random generator)"
12545                         else
12546                                 echo "(Warning: no $seedfunc() to seed random generator)"
12547                                 seedfunc=rand
12548                         fi
12549                         randseedtype=unsigned
12550                         ;;
12551                 esac
12552                 ;;
12553         esac
12554 done
12555
12556 echo " "
12557 echo "Determining whether or not we are on an EBCDIC system..." >&4
12558 $cat >tebcdic.c <<'EOM'
12559 int main()
12560 {
12561   if ('M'==0xd4) return 0;
12562   return 1;
12563 }
12564 EOM
12565
12566 val=$undef
12567 set tebcdic
12568 if eval $compile_ok; then
12569         if ./tebcdic; then
12570                 echo "You seem to speak EBCDIC." >&4
12571                 val="$define"
12572         else
12573                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12574         fi
12575 else
12576         echo "I'm unable to compile the test program." >&4
12577         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12578 fi
12579 $rm -f tebcdic.c tebcdic
12580 set ebcdic
12581 eval $setvar
12582
12583 echo " "
12584 $cat >&4 <<EOM
12585 Checking how to flush all pending stdio output...
12586 EOM
12587 # I only know how to find the first 32 possibly open files on SunOS.
12588 # See also hints/sunos_4_1.sh and util.c  --AD
12589 case "$osname" in
12590 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12591 esac
12592 $cat >>try.c <<EOCP
12593 #include <stdio.h>
12594 #$i_unistd I_UNISTD
12595 #ifdef I_UNISTD
12596 # include <unistd.h>
12597 #endif
12598 #$d_sysconf HAS_SYSCONF
12599 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12600 #ifdef HAS_STDIO_STREAM_ARRAY
12601 # define STDIO_STREAM_ARRAY $stdio_stream_array
12602 #endif
12603 int main() {
12604   FILE* p = fopen("try.out", "w");
12605 #ifdef TRY_FPUTC
12606   fputc('x', p);
12607 #else
12608 # ifdef TRY_FPRINTF
12609   fprintf(p, "x");
12610 # endif
12611 #endif
12612 #ifdef TRY_FFLUSH_NULL
12613   fflush(NULL);
12614 #endif
12615 #ifdef TRY_FFLUSH_ALL
12616   {
12617     long open_max = -1;
12618 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12619     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12620 # else
12621 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12622     open_max = sysconf(_SC_OPEN_MAX);
12623 #  else
12624 #   ifdef FOPEN_MAX
12625     open_max = FOPEN_MAX;
12626 #   else
12627 #    ifdef OPEN_MAX
12628     open_max = OPEN_MAX;
12629 #    else
12630 #     ifdef _NFILE
12631     open_max = _NFILE;
12632 #     endif
12633 #    endif
12634 #   endif
12635 #  endif
12636 # endif 
12637 # ifdef HAS_STDIO_STREAM_ARRAY
12638     if (open_max > 0) {
12639       long i;
12640       for (i = 0; i < open_max; i++)
12641             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12642                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12643                 STDIO_STREAM_ARRAY[i]._flag)
12644                 fflush(&STDIO_STREAM_ARRAY[i]);
12645     }   
12646   }
12647 # endif
12648 #endif
12649   _exit(42);
12650 }
12651 EOCP
12652 : first we have to find out how _not_ to flush
12653 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12654     output=''
12655     set try -DTRY_FPUTC
12656     if eval $compile; then
12657             $rm -f try.out
12658             ./try$exe_ext 2>/dev/null
12659             if $test ! -s try.out -a "X$?" = X42; then
12660                 output=-DTRY_FPUTC
12661             fi
12662     fi
12663     case "$output" in
12664     '')
12665             set try -DTRY_FPRINTF
12666             $rm -f try.out
12667             if eval $compile; then
12668                     $rm -f try.out
12669                     ./try$exe_ext 2>/dev/null
12670                     if $test ! -s try.out -a "X$?" = X42; then
12671                         output=-DTRY_FPRINTF
12672                     fi
12673             fi
12674         ;;
12675     esac
12676 fi
12677 : check for fflush NULL behaviour
12678 case "$fflushNULL" in
12679 '')     set try -DTRY_FFLUSH_NULL $output
12680         if eval $compile; then
12681                 $rm -f try.out
12682                 ./try$exe_ext 2>/dev/null
12683                 code="$?"
12684                 if $test -s try.out -a "X$code" = X42; then
12685                         fflushNULL="`$cat try.out`"
12686                 else
12687                         if $test "X$code" != X42; then
12688                                 $cat >&4 <<EOM
12689 (If this test failed, don't worry, we'll try another method shortly.)
12690 EOM
12691                         fi
12692                 fi
12693         fi
12694         $rm -f core try.core core.try.*
12695         case "$fflushNULL" in
12696         x)      $cat >&4 <<EOM
12697 Your fflush(NULL) works okay for output streams.
12698 Let's see if it clobbers input pipes...
12699 EOM
12700 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12701 # bug that improperly flushes the input end of pipes.  So we avoid the
12702 # autoflush on fork/system/exec support for now. :-(
12703 $cat >tryp.c <<EOCP
12704 #include <stdio.h>
12705 int
12706 main(int argc, char **argv)
12707 {
12708     char buf[1024];
12709     int i;
12710     char *bp = buf;
12711     while (1) {
12712         while ((i = getc(stdin)) != -1
12713                && (*bp++ = i) != '\n'
12714                && bp < &buf[1024])
12715         /* DO NOTHING */ ;
12716         *bp = '\0';
12717         fprintf(stdout, "%s", buf);
12718         fflush(NULL);
12719         if (i == -1)
12720             return 0;
12721         bp = buf;
12722     }
12723 }
12724 EOCP
12725                 fflushNULL="$define"
12726                 set tryp
12727                 if eval $compile; then
12728                     $rm -f tryp.out
12729                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12730                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12731                        $cat >&4 <<EOM
12732 fflush(NULL) seems to behave okay with input streams.
12733 EOM
12734                         fflushNULL="$define"
12735                     else
12736                         $cat >&4 <<EOM
12737 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12738 EOM
12739                         fflushNULL="$undef"
12740                     fi
12741                 fi
12742                 $rm -f core tryp.c tryp.core core.tryp.*
12743                 ;;
12744         '')     $cat >&4 <<EOM
12745 Your fflush(NULL) isn't working (contrary to ANSI C).
12746 EOM
12747                 fflushNULL="$undef"
12748                 ;;
12749         *)      $cat >&4 <<EOM
12750 Cannot figure out whether your fflush(NULL) works or not.
12751 I'm assuming it doesn't (contrary to ANSI C).
12752 EOM
12753                 fflushNULL="$undef"
12754                 ;;
12755         esac
12756         ;;
12757 $define|true|[yY]*)
12758         fflushNULL="$define"
12759         ;;
12760 *)
12761         fflushNULL="$undef"
12762         ;;
12763 esac
12764 : check explicit looping only if NULL did not work, and if the pipe
12765 : bug does not show up on an explicit flush too
12766 case "$fflushNULL" in
12767 "$undef")
12768         $cat >tryp.c <<EOCP
12769 #include <stdio.h>
12770 int
12771 main(int argc, char **argv)
12772 {
12773     char buf[1024];
12774     int i;
12775     char *bp = buf;
12776     while (1) {
12777         while ((i = getc(stdin)) != -1
12778                && (*bp++ = i) != '\n'
12779                && bp < &buf[1024])
12780         /* DO NOTHING */ ;
12781         *bp = '\0';
12782         fprintf(stdout, "%s", buf);
12783         fflush(stdin);
12784         if (i == -1)
12785             return 0;
12786         bp = buf;
12787     }
12788 }
12789 EOCP
12790         set tryp
12791         if eval $compile; then
12792             $rm -f tryp.out
12793             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12794             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12795                $cat >&4 <<EOM
12796 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12797 EOM
12798                 : now check for fflushall behaviour
12799                 case "$fflushall" in
12800                 '')     set try -DTRY_FFLUSH_ALL $output
12801                         if eval $compile; then
12802                                 $cat >&4 <<EOM
12803 (Now testing the other method--but note that this also may fail.)
12804 EOM
12805                                 $rm -f try.out
12806                                 ./try$exe_ext 2>/dev/null
12807                                 if $test -s try.out -a "X$?" = X42; then
12808                                         fflushall="`$cat try.out`"
12809                                 fi
12810                         fi
12811                         $rm -f core try.core core.try.*
12812                         case "$fflushall" in
12813                         x)      $cat >&4 <<EOM
12814 Whew. Flushing explicitly all the stdio streams works.
12815 EOM
12816                                 fflushall="$define"
12817                                 ;;
12818                         '')     $cat >&4 <<EOM
12819 Sigh. Flushing explicitly all the stdio streams doesn't work.
12820 EOM
12821                                 fflushall="$undef"
12822                                 ;;
12823                         *)      $cat >&4 <<EOM
12824 Cannot figure out whether flushing stdio streams explicitly works or not.
12825 I'm assuming it doesn't.
12826 EOM
12827                                 fflushall="$undef"
12828                                 ;;
12829                         esac
12830                         ;;
12831                 "$define"|true|[yY]*)
12832                         fflushall="$define"
12833                         ;;
12834                 *)
12835                         fflushall="$undef"
12836                         ;;
12837                 esac
12838             else
12839                 $cat >&4 <<EOM
12840 All is futile.  Even fflush(stdin) clobbers input pipes!
12841 EOM
12842                 fflushall="$undef"
12843             fi
12844         else
12845             fflushall="$undef"
12846         fi
12847         $rm -f core tryp.c tryp.core core.tryp.*
12848         ;;
12849 *)      fflushall="$undef"
12850         ;;
12851 esac
12852
12853 case "$fflushNULL$fflushall" in
12854 undefundef)
12855         $cat <<EOM
12856 OK, I give up.  I cannot figure out how to flush pending stdio output.
12857 We won't be flushing handles at all before fork/exec/popen.
12858 EOM
12859         ;;
12860 esac
12861 $rm -f try.* try$exe_ext
12862
12863 : Store the full pathname to the ar program for use in the C program
12864 : Respect a hint or command line value for full_ar.
12865 case "$full_ar" in
12866 '') full_ar=$ar ;;
12867 esac
12868
12869 : Store the full pathname to the sed program for use in the C program
12870 full_sed=$sed
12871
12872 : see what type gids are declared as in the kernel
12873 echo " "
12874 echo "Looking for the type for group ids returned by getgid()."
12875 set gid_t gidtype xxx stdio.h sys/types.h
12876 eval $typedef
12877 case "$gidtype" in
12878 xxx)
12879         xxx=`./findhdr sys/user.h`
12880         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12881         case $1 in
12882         unsigned) dflt="$1 $2" ;;
12883         *) dflt="$1" ;;
12884         esac
12885         ;;
12886 *) dflt="$gidtype";;
12887 esac
12888 case "$gidtype" in
12889 gid_t) echo "gid_t found." ;;
12890 *)      rp="What is the type for group ids returned by getgid()?"
12891         . ./myread
12892         gidtype="$ans"
12893         ;;
12894 esac
12895
12896 echo " "
12897 case "$gidtype" in
12898 *_t) zzz="$gidtype"     ;;
12899 *)   zzz="gid"          ;;
12900 esac
12901 echo "Checking the size of $zzz..." >&4 
12902 cat > try.c <<EOCP
12903 #include <sys/types.h>
12904 #include <stdio.h>
12905 int main() {
12906     printf("%d\n", (int)sizeof($gidtype));
12907     exit(0);
12908 }
12909 EOCP
12910 set try
12911 if eval $compile_ok; then
12912         yyy=`./try`
12913         case "$yyy" in
12914         '')     gidsize=4
12915                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12916                 ;;
12917         *)      gidsize=$yyy
12918                 echo "Your $zzz is $gidsize bytes long."
12919                 ;;
12920         esac
12921 else
12922         gidsize=4
12923         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12924 fi
12925
12926
12927 echo " "
12928 case "$gidtype" in
12929 *_t) zzz="$gidtype"     ;;
12930 *)   zzz="gid"          ;;
12931 esac
12932 echo "Checking the sign of $zzz..." >&4 
12933 cat > try.c <<EOCP
12934 #include <sys/types.h>
12935 #include <stdio.h>
12936 int main() {
12937         $gidtype foo = -1;
12938         if (foo < 0)
12939                 printf("-1\n");
12940         else
12941                 printf("1\n");
12942 }
12943 EOCP
12944 set try
12945 if eval $compile; then
12946         yyy=`./try`
12947         case "$yyy" in
12948         '')     gidsign=1
12949                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12950                 ;;
12951         *)      gidsign=$yyy
12952                 case "$gidsign" in
12953                  1) echo "Your $zzz is unsigned." ;;
12954                 -1) echo "Your $zzz is signed."   ;;
12955                 esac
12956                 ;;
12957         esac
12958 else
12959         gidsign=1
12960         echo "(I can't compile the test program--guessing unsigned.)" >&4
12961 fi
12962
12963
12964 echo " "
12965
12966 if $test X"$quadtype" != X; then
12967
12968 echo "Checking how to print 64-bit integers..." >&4
12969
12970 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12971         $cat >try.c <<'EOCP'
12972 #include <sys/types.h>
12973 #include <stdio.h>
12974 int main() {
12975   int q = 12345678901;
12976   printf("%ld\n", q);
12977 }
12978 EOCP
12979         set try
12980         if eval $compile; then
12981                 yyy=`./try$exe_ext`
12982                 case "$yyy" in
12983                 12345678901)
12984                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12985                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
12986                         echo "We will use %d."
12987                         ;;
12988                 esac
12989         fi
12990 fi
12991
12992 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12993         $cat >try.c <<'EOCP'
12994 #include <sys/types.h>
12995 #include <stdio.h>
12996 int main() {
12997   long q = 12345678901;
12998   printf("%ld\n", q);
12999 }
13000 EOCP
13001         set try
13002         if eval $compile; then
13003                 yyy=`./try$exe_ext`
13004                 case "$yyy" in
13005                 12345678901)
13006                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13007                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13008                         echo "We will use %ld."
13009                         ;;
13010                 esac
13011         fi
13012 fi
13013
13014 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13015         $cat >try.c <<'EOCP'
13016 #include <sys/types.h>
13017 #include <inttypes.h>
13018 #include <stdio.h>
13019 int main() {
13020   int64_t q = 12345678901;
13021   printf("%" PRId64 "\n", q);
13022 }
13023 EOCP
13024         set try
13025         if eval $compile; then
13026                 yyy=`./try$exe_ext`
13027                 case "$yyy" in
13028                 12345678901)
13029                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13030                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13031                         echo "We will use the C9X style."
13032                         ;;
13033                 esac
13034         fi
13035 fi
13036
13037 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13038         $cat >try.c <<'EOCP'
13039 #include <sys/types.h>
13040 #include <stdio.h>
13041 int main() {
13042   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13043   printf("%lld\n", q);
13044 }
13045 EOCP
13046         set try
13047         if eval $compile; then
13048                 yyy=`./try$exe_ext`
13049                 case "$yyy" in
13050                 12345678901)
13051                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13052                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13053                         echo "We will use the %lld style."
13054                         ;;
13055                 esac
13056         fi
13057 fi
13058
13059 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13060         $cat >try.c <<EOCP
13061 #include <sys/types.h>
13062 #include <stdio.h>
13063 int main() {
13064   $quadtype q = 12345678901;
13065   printf("%Ld\n", q);
13066 }
13067 EOCP
13068         set try
13069         if eval $compile; then
13070                 yyy=`./try$exe_ext`
13071                 case "$yyy" in
13072                 12345678901)
13073                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13074                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13075                         echo "We will use %Ld."
13076                         ;;
13077                 esac
13078         fi
13079 fi
13080
13081 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13082         $cat >try.c <<EOCP
13083 #include <sys/types.h>
13084 #include <stdio.h>
13085 int main() {
13086   $quadtype q = 12345678901;
13087   printf("%qd\n", q);
13088 }
13089 EOCP
13090         set try
13091         if eval $compile; then
13092                 yyy=`./try$exe_ext`
13093                 case "$yyy" in
13094                 12345678901)
13095                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13096                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13097                         echo "We will use %qd."
13098                         ;;
13099                 esac
13100         fi
13101 fi
13102
13103 if $test X"$sPRId64" = X; then
13104         echo "Cannot figure out how to print 64-bit integers." >&4
13105 fi
13106
13107 $rm -f try try.*
13108
13109 fi
13110
13111 case "$sPRId64" in
13112 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13113         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13114         ;;
13115 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13116         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13117         ;;
13118 esac
13119
13120
13121 echo " "
13122 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13123
13124 if $test X"$ivsize" = X8; then
13125         ivdformat="$sPRId64"
13126         uvuformat="$sPRIu64"
13127         uvoformat="$sPRIo64"
13128         uvxformat="$sPRIx64"
13129         uvXUformat="$sPRIXU64"
13130 else
13131         if $test X"$ivsize" = X"$longsize"; then
13132                 ivdformat='"ld"'
13133                 uvuformat='"lu"'
13134                 uvoformat='"lo"'
13135                 uvxformat='"lx"'
13136                 uvXUformat='"lX"'
13137         else
13138                 if $test X"$ivsize" = X"$intsize"; then
13139                         ivdformat='"d"'
13140                         uvuformat='"u"'
13141                         uvoformat='"o"'
13142                         uvxformat='"x"'
13143                         uvXUformat='"X"'
13144                 else
13145                         : far out
13146                         if $test X"$ivsize" = X"$shortsize"; then
13147                                 ivdformat='"hd"'
13148                                 uvuformat='"hu"'
13149                                 uvoformat='"ho"'
13150                                 uvxformat='"hx"'
13151                                 uvXUformat='"hX"'
13152                         fi
13153                 fi
13154         fi
13155 fi
13156
13157 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13158         nveformat="$sPRIeldbl"
13159         nvfformat="$sPRIfldbl"
13160         nvgformat="$sPRIgldbl"
13161         nvEUformat="$sPRIEUldbl"
13162         nvFUformat="$sPRIFUldbl"
13163         nvGUformat="$sPRIGUldbl"
13164 else
13165         nveformat='"e"'
13166         nvfformat='"f"'
13167         nvgformat='"g"'
13168         nvEUformat='"E"'
13169         nvFUformat='"F"'
13170         nvGUformat='"G"'
13171 fi
13172
13173 case "$ivdformat" in
13174 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13175     exit 1
13176     ;;
13177 esac
13178
13179
13180 echo " "
13181 $echo "Checking the format string to be used for gids..." >&4
13182
13183 case "$gidsign" in
13184 -1)     if $test X"$gidsize" = X"$ivsize"; then
13185                 gidformat="$ivdformat"
13186         else
13187                 if $test X"$gidsize" = X"$longsize"; then
13188                         gidformat='"ld"'
13189                 else
13190                         if $test X"$gidsize" = X"$intsize"; then
13191                                 gidformat='"d"'
13192                         else
13193                                 if $test X"$gidsize" = X"$shortsize"; then
13194                                         gidformat='"hd"'
13195                                 fi
13196                         fi
13197                 fi
13198         fi
13199         ;;
13200 *)      if $test X"$gidsize" = X"$uvsize"; then
13201                 gidformat="$uvuformat"
13202         else
13203                 if $test X"$gidsize" = X"$longsize"; then
13204                         gidformat='"lu"'
13205                 else
13206                         if $test X"$gidsize" = X"$intsize"; then
13207                                 gidformat='"u"'
13208                         else
13209                                 if $test X"$gidsize" = X"$shortsize"; then
13210                                         gidformat='"hu"'
13211                                 fi
13212                         fi
13213                 fi
13214         fi
13215         ;;
13216 esac
13217
13218 : see if getgroups exists
13219 set getgroups d_getgrps
13220 eval $inlibc
13221
13222 : see if setgroups exists
13223 set setgroups d_setgrps
13224 eval $inlibc
13225
13226
13227 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13228 echo " "
13229 case "$d_getgrps$d_setgrps" in
13230 *define*)
13231         case "$groupstype" in
13232         '') dflt="$gidtype" ;;
13233         *)  dflt="$groupstype" ;;
13234         esac
13235         $cat <<EOM
13236 What type of pointer is the second argument to getgroups() and setgroups()?
13237 Usually this is the same as group ids, $gidtype, but not always.
13238
13239 EOM
13240         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13241         . ./myread
13242         groupstype="$ans"
13243         ;;
13244 *)  groupstype="$gidtype";;
13245 esac
13246
13247 echo " "
13248 echo "Checking if your $make program sets \$(MAKE)..." >&4
13249 case "$make_set_make" in
13250 '')
13251         $sed 's/^X //' > testmake.mak << 'EOF'
13252 Xall:
13253 X       @echo 'maketemp="$(MAKE)"'
13254 EOF
13255         case "`$make -f testmake.mak 2>/dev/null`" in
13256         *maketemp=*) make_set_make='#' ;;
13257         *)      make_set_make="MAKE=$make" ;;
13258         esac
13259         $rm -f testmake.mak
13260         ;;
13261 esac
13262 case "$make_set_make" in
13263 '#') echo "Yup, it does.";;
13264 *) echo "Nope, it doesn't.";;
13265 esac
13266
13267 : see what type is used for mode_t
13268 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13269 set mode_t modetype int stdio.h sys/types.h
13270 eval $typedef_ask
13271
13272 : define a fucntion to check prototypes
13273 $cat > protochk <<EOSH
13274 $startsh
13275 cc="$cc"
13276 optimize="$optimize"
13277 ccflags="$ccflags"
13278 prototype="$prototype"
13279 define="$define"
13280 rm=$rm
13281 EOSH
13282
13283 $cat >> protochk <<'EOSH'
13284
13285 $rm -f try.c
13286 foo="$1"
13287 shift
13288 while test $# -ge 2; do
13289         case "$1" in
13290                 $define) echo "#include <$2>" >> try.c ;;
13291                 literal) echo "$2" >> try.c ;;
13292         esac
13293     shift 2
13294 done
13295 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13296 cat >> try.c <<'EOCP'
13297 #ifdef CAN_PROTOTYPE
13298 #define _(args) args
13299 #else
13300 #define _(args) ()
13301 #endif
13302 EOCP
13303 echo "$foo" >> try.c
13304 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13305 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13306 status=$?
13307 $rm -f try.[co]
13308 exit $status
13309 EOSH
13310 chmod +x protochk
13311 $eunicefix protochk
13312
13313 : see what type is used for size_t
13314 rp="What is the type used for the length parameter for string functions?"
13315 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13316 eval $typedef_ask
13317
13318 : check for type of arguments to gethostbyaddr. 
13319 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13320         case "$d_gethbyaddr" in
13321         $define)
13322                 $cat <<EOM
13323
13324 Checking to see what type of arguments are accepted by gethostbyaddr().
13325 EOM
13326                 hdrs="$define sys/types.h
13327                         $d_socket sys/socket.h 
13328                         $i_niin netinet/in.h 
13329                         $i_netdb netdb.h
13330                         $i_unistd unistd.h"
13331                 : The first arg can 'char *' or 'void *'
13332                 : The second arg is some of integral type
13333                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13334                         for yyy in size_t long int; do
13335                                 case "$netdb_host_type" in
13336                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13337                                         if ./protochk "$try" $hdrs; then
13338                                                 echo "Your system accepts $xxx for the first arg."
13339                                                 echo "...and $yyy for the second arg."
13340                                                 netdb_host_type="$xxx"
13341                                                 netdb_hlen_type="$yyy"
13342                                         fi
13343                                         ;;
13344                                 esac
13345                         done
13346                 done
13347                 : In case none of those worked, prompt the user.
13348                 case "$netdb_host_type" in
13349                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13350                         dflt='char *'
13351                         . ./myread
13352                         netdb_host_type=$ans
13353                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13354                         dflt="$sizetype"
13355                         . ./myread
13356                         netdb_hlen_type=$ans
13357                         ;;
13358                 esac
13359                 ;;
13360         *)      : no gethostbyaddr, so pick harmless defaults
13361                 netdb_host_type='char *'
13362                 netdb_hlen_type="$sizetype"
13363                 ;;
13364         esac
13365         # Remove the "const" if needed. -- but then we'll have a 
13366         # prototype clash!
13367         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13368 fi
13369
13370 : check for type of argument to gethostbyname. 
13371 if test "X$netdb_name_type" = X ; then
13372         case "$d_gethbyname" in
13373         $define)
13374                 $cat <<EOM
13375
13376 Checking to see what type of argument is accepted by gethostbyname().
13377 EOM
13378                 hdrs="$define sys/types.h
13379                         $d_socket sys/socket.h 
13380                         $i_niin netinet/in.h 
13381                         $i_netdb netdb.h
13382                         $i_unistd unistd.h"
13383                 for xxx in "const char *" "char *"; do
13384                         case "$netdb_name_type" in
13385                         '')     try="extern struct hostent *gethostbyname($xxx);"
13386                                 if ./protochk "$try" $hdrs; then
13387                                         echo "Your system accepts $xxx."
13388                                         netdb_name_type="$xxx"
13389                                 fi
13390                                 ;;
13391                         esac
13392                 done
13393                 : In case none of those worked, prompt the user.
13394                 case "$netdb_name_type" in
13395                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13396                         dflt='char *'
13397                         . ./myread
13398                         netdb_name_type=$ans
13399                         ;;
13400                 esac
13401                 ;;
13402         *)      : no gethostbyname, so pick harmless default
13403                 netdb_name_type='char *'
13404                 ;;
13405         esac
13406 fi
13407
13408 : check for type of 1st argument to getnetbyaddr. 
13409 if test "X$netdb_net_type" = X ; then
13410         case "$d_getnbyaddr" in
13411         $define)
13412                 $cat <<EOM
13413
13414 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13415 EOM
13416                 hdrs="$define sys/types.h
13417                         $d_socket sys/socket.h 
13418                         $i_niin netinet/in.h 
13419                         $i_netdb netdb.h
13420                         $i_unistd unistd.h"
13421                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13422                         case "$netdb_net_type" in
13423                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13424                                 if ./protochk "$try" $hdrs; then
13425                                         echo "Your system accepts $xxx."
13426                                         netdb_net_type="$xxx"
13427                                 fi
13428                                 ;;
13429                         esac
13430                 done
13431                 : In case none of those worked, prompt the user.
13432                 case "$netdb_net_type" in
13433                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13434                         dflt='long'
13435                         . ./myread
13436                         netdb_net_type=$ans
13437                         ;;
13438                 esac
13439                 ;;
13440         *)      : no getnetbyaddr, so pick harmless default
13441                 netdb_net_type='long'
13442                 ;;
13443         esac
13444 fi
13445 : locate the preferred pager for this system
13446 case "$pager" in
13447 '')
13448         dflt=''
13449         case "$pg" in
13450         /*) dflt=$pg;;
13451         [a-zA-Z]:/*) dflt=$pg;;
13452         esac
13453         case "$more" in
13454         /*) dflt=$more;;
13455         [a-zA-Z]:/*) dflt=$more;;
13456         esac
13457         case "$less" in
13458         /*) dflt=$less;;
13459         [a-zA-Z]:/*) dflt=$less;;
13460         esac
13461         case "$dflt" in
13462         '') dflt=/usr/ucb/more;;
13463         esac
13464         ;;
13465 *) dflt="$pager";;
13466 esac
13467 echo " "
13468 fn=f/
13469 rp='What pager is used on your system?'
13470 . ./getfile
13471 pager="$ans"
13472
13473 : see what type pids are declared as in the kernel
13474 rp="What is the type of process ids on this system?"
13475 set pid_t pidtype int stdio.h sys/types.h
13476 eval $typedef_ask
13477
13478 : Find earliest binary compatible site_perl subdirectory perl can use.
13479 case "$bincompat5005" in
13480 "$define") xs_apiversion='5.005' ;;
13481 *) xs_apiversion=$version ;;   # The current site_perl version.
13482 esac
13483 : Find earliest pure perl site_perl subdirectory perl can use.
13484 : The versioned directories started at 5.005.
13485 pm_apiversion='5.005'
13486
13487 : check for length of pointer
13488 echo " "
13489 case "$ptrsize" in
13490 '')
13491         echo "Checking to see how big your pointers are..." >&4
13492         if test "$voidflags" -gt 7; then
13493                 echo '#define VOID_PTR char *' > try.c
13494         else
13495                 echo '#define VOID_PTR void *' > try.c
13496         fi
13497         $cat >>try.c <<'EOCP'
13498 #include <stdio.h>
13499 int main()
13500 {
13501     printf("%d\n", (int)sizeof(VOID_PTR));
13502     exit(0);
13503 }
13504 EOCP
13505         set try
13506         if eval $compile_ok; then
13507                 ptrsize=`./try`
13508                 echo "Your pointers are $ptrsize bytes long."
13509         else
13510                 dflt='4'
13511                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13512                 rp="What is the size of a pointer (in bytes)?"
13513                 . ./myread
13514                 ptrsize="$ans"
13515         fi
13516         ;;
13517 esac
13518 $rm -f try.c try
13519
13520 : see if ar generates random libraries by itself
13521 echo " "
13522 echo "Checking how to generate random libraries on your machine..." >&4
13523 echo 'int bar1() { return bar2(); }' > bar1.c
13524 echo 'int bar2() { return 2; }' > bar2.c
13525 $cat > foo.c <<'EOP'
13526 int main() { printf("%d\n", bar1()); exit(0); }
13527 EOP
13528 $cc $ccflags -c bar1.c >/dev/null 2>&1
13529 $cc $ccflags -c bar2.c >/dev/null 2>&1
13530 $cc $ccflags -c foo.c >/dev/null 2>&1
13531 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13532 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13533         ./foobar >/dev/null 2>&1; then
13534         echo "$ar appears to generate random libraries itself."
13535         orderlib=false
13536         ranlib=":"
13537 elif $ar ts bar$_a >/dev/null 2>&1 &&
13538         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13539         ./foobar >/dev/null 2>&1; then
13540                 echo "a table of contents needs to be added with '$ar ts'."
13541                 orderlib=false
13542                 ranlib="$ar ts"
13543 else
13544         case "$ranlib" in
13545         :) ranlib='';;
13546         '')
13547                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13548                 $test -f $ranlib || ranlib=''
13549                 ;;
13550         esac
13551         if $test -n "$ranlib"; then
13552                 echo "your system has '$ranlib'; we'll use that."
13553                 orderlib=false
13554         else
13555                 echo "your system doesn't seem to support random libraries"
13556                 echo "so we'll use lorder and tsort to order the libraries."
13557                 orderlib=true
13558                 ranlib=":"
13559         fi
13560 fi
13561 $rm -f foo* bar* 
13562
13563 : check for type of arguments to select. 
13564 case "$selecttype" in
13565 '') case "$d_select" in
13566         $define)
13567                 echo " "
13568                 $cat <<EOM
13569 Checking to see what type of arguments are accepted by select().
13570 EOM
13571                 hdrs="$define sys/types.h
13572                         $i_systime sys/time.h 
13573                         $i_sysselct sys/select.h
13574                         $d_socket sys/socket.h"
13575                 : The first arg can be int, unsigned, or size_t
13576                 : The last arg may or may not be 'const'
13577                 val=''
13578                 : void pointer has been seen but using that
13579                 : breaks the selectminbits test
13580                 for xxx in 'fd_set *' 'int *'; do
13581                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13582                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13583                                         case "$val" in
13584                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13585                                                 if ./protochk "$try" $hdrs; then
13586                                                         echo "Your system accepts $xxx."
13587                                                         val="$xxx"
13588                                                 fi
13589                                                 ;;
13590                                         esac
13591                                 done
13592                         done
13593                 done
13594                 case "$val" in
13595                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13596                         case "$d_fd_set" in
13597                                 $define) dflt="fd_set *" ;;
13598                                 *)              dflt="int *" ;;
13599                         esac
13600                         . ./myread
13601                         val=$ans
13602                         ;;
13603                 esac
13604                 selecttype="$val"
13605                 ;;
13606         *)      : no select, so pick a harmless default
13607                 selecttype='int *'
13608                 ;;
13609         esac
13610         ;;
13611 esac
13612
13613 : check for the select 'width'
13614 case "$selectminbits" in
13615 '') case "$d_select" in
13616         $define)
13617                 $cat <<EOM
13618
13619 Checking to see on how many bits at a time your select() operates...
13620 EOM
13621                 $cat >try.c <<EOCP
13622 #include <sys/types.h>
13623 #$i_time I_TIME
13624 #$i_systime I_SYS_TIME
13625 #$i_systimek I_SYS_TIME_KERNEL
13626 #ifdef I_TIME
13627 #   include <time.h>
13628 #endif
13629 #ifdef I_SYS_TIME
13630 #   ifdef I_SYS_TIME_KERNEL
13631 #       define KERNEL
13632 #   endif
13633 #   include <sys/time.h>
13634 #   ifdef I_SYS_TIME_KERNEL
13635 #       undef KERNEL
13636 #   endif
13637 #endif
13638 #$i_sysselct I_SYS_SELECT
13639 #ifdef I_SYS_SELECT
13640 #include <sys/select.h>
13641 #endif
13642 #$d_socket HAS_SOCKET
13643 #ifdef HAS_SOCKET
13644 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13645 #endif
13646 #include <stdio.h>
13647 $selecttype b;
13648 #define S sizeof(*(b))
13649 #define MINBITS 64
13650 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13651 #define NBITS  (NBYTES * 8)
13652 int main() {
13653     char s[NBYTES];
13654     struct timeval t;
13655     int i;
13656     FILE* fp;
13657     int fd;
13658
13659     fclose(stdin);
13660     fp = fopen("try.c", "r");
13661     if (fp == 0)
13662       exit(1);
13663     fd = fileno(fp);
13664     if (fd < 0)
13665       exit(2);
13666     b = ($selecttype)s;
13667     for (i = 0; i < NBITS; i++)
13668         FD_SET(i, b);
13669     t.tv_sec  = 0;
13670     t.tv_usec = 0;
13671     select(fd + 1, b, 0, 0, &t);
13672     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13673     printf("%d\n", i + 1);
13674     return 0;
13675 }
13676 EOCP
13677                 set try
13678                 if eval $compile_ok; then
13679                         selectminbits=`./try`
13680                         case "$selectminbits" in
13681                         '')     cat >&4 <<EOM
13682 Cannot figure out on how many bits at a time your select() operates.
13683 I'll play safe and guess it is 32 bits.
13684 EOM
13685                                 selectminbits=32
13686                                 bits="32 bits"
13687                                 ;;
13688                         1)      bits="1 bit" ;;
13689                         *)      bits="$selectminbits bits" ;;
13690                         esac
13691                         echo "Your select() operates on $bits at a time." >&4
13692                 else
13693                         rp='What is the minimum number of bits your select() operates on?'
13694                         case "$byteorder" in
13695                         1234|12345678)  dflt=32 ;;
13696                         *)              dflt=1  ;;
13697                         esac
13698                         . ./myread
13699                         val=$ans
13700                         selectminbits="$val"
13701                 fi
13702                 $rm -f try.* try
13703                 ;;
13704         *)      : no select, so pick a harmless default
13705                 selectminbits='32'
13706                 ;;
13707         esac
13708         ;;
13709 esac
13710
13711 : Trace out the files included by signal.h, then look for SIGxxx names.
13712 : Remove SIGARRAYSIZE used by HPUX.
13713 : Remove SIGSTKSIZE used by Linux.
13714 : Remove SIGSTKSZ used by Posix.
13715 : Remove SIGTYP void lines used by OS2.
13716 : Some cpps, like os390, dont give the file name anywhere
13717 if [ "X$fieldn" = X ]; then
13718         : Just make some guesses.  We check them later.
13719         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13720 else
13721         xxx=`echo '#include <signal.h>' |
13722         $cppstdin $cppminus $cppflags 2>/dev/null |
13723         $grep '^[       ]*#.*include' | 
13724         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13725 fi
13726 : Check this list of files to be sure we have parsed the cpp output ok.
13727 : This will also avoid potentially non-existent files, such 
13728 : as ../foo/bar.h
13729 xxxfiles=''
13730 for xx in $xxx /dev/null ; do
13731         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13732 done
13733 : If we have found no files, at least try signal.h
13734 case "$xxxfiles" in
13735 '')     xxxfiles=`./findhdr signal.h` ;;
13736 esac
13737 xxx=`awk '
13738 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13739         print substr($2, 4, 20)
13740 }
13741 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13742         print substr($3, 4, 20)
13743 }' $xxxfiles`
13744 : Append some common names just in case the awk scan failed.
13745 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13746 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13747 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13748 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13749 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13750
13751 : generate a few handy files for later
13752 $cat > signal.c <<'EOCP'
13753 #include <sys/types.h>
13754 #include <signal.h>
13755 #include <stdio.h>
13756 int main() {
13757
13758 /* Strange style to avoid deeply-nested #if/#else/#endif */
13759 #ifndef NSIG
13760 #  ifdef _NSIG
13761 #    define NSIG (_NSIG)
13762 #  endif
13763 #endif
13764
13765 #ifndef NSIG
13766 #  ifdef SIGMAX
13767 #    define NSIG (SIGMAX+1)
13768 #  endif
13769 #endif
13770
13771 #ifndef NSIG
13772 #  ifdef SIG_MAX
13773 #    define NSIG (SIG_MAX+1)
13774 #  endif
13775 #endif
13776
13777 #ifndef NSIG
13778 #  ifdef MAXSIG
13779 #    define NSIG (MAXSIG+1)
13780 #  endif
13781 #endif
13782
13783 #ifndef NSIG
13784 #  ifdef MAX_SIG
13785 #    define NSIG (MAX_SIG+1)
13786 #  endif
13787 #endif
13788
13789 #ifndef NSIG
13790 #  ifdef SIGARRAYSIZE
13791 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13792 #  endif
13793 #endif
13794
13795 #ifndef NSIG
13796 #  ifdef _sys_nsig
13797 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13798 #  endif
13799 #endif
13800
13801 /* Default to some arbitrary number that's big enough to get most
13802    of the common signals.
13803 */
13804 #ifndef NSIG
13805 #    define NSIG 50
13806 #endif
13807
13808 printf("NSIG %d\n", NSIG);
13809
13810 #ifndef JUST_NSIG
13811
13812 EOCP
13813
13814 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13815 {
13816         printf "#ifdef SIG"; printf $1; printf "\n"
13817         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13818         printf $1; printf ");\n"
13819         printf "#endif\n"
13820 }
13821 END {
13822         printf "#endif /* JUST_NSIG */\n";
13823         printf "exit(0);\n}\n";
13824 }
13825 ' >>signal.c
13826 $cat >signal.awk <<'EOP'
13827 BEGIN { ndups = 0 }
13828 $1 ~ /^NSIG$/ { nsig = $2 }
13829 ($1 !~ /^NSIG$/) && (NF == 2) {
13830     if ($2 > maxsig) { maxsig = $2 }
13831     if (sig_name[$2]) {
13832         dup_name[ndups] = $1
13833         dup_num[ndups] = $2
13834         ndups++ 
13835     }
13836     else {
13837         sig_name[$2] = $1
13838         sig_num[$2] = $2
13839     }
13840 }
13841 END { 
13842     if (nsig == 0) {
13843         nsig = maxsig + 1
13844     }
13845     printf("NSIG %d\n", nsig);
13846     for (n = 1; n < nsig; n++) {
13847         if (sig_name[n]) {
13848             printf("%s %d\n", sig_name[n], sig_num[n])
13849         }
13850         else {
13851             printf("NUM%d %d\n", n, n) 
13852         }
13853     }
13854     for (n = 0; n < ndups; n++) {
13855         printf("%s %d\n", dup_name[n], dup_num[n])
13856     }
13857 }
13858 EOP
13859 $cat >signal_cmd <<EOS
13860 $startsh
13861 if $test -s signal.lst; then
13862     echo "Using your existing signal.lst file"
13863         exit 0
13864 fi
13865 xxx="$xxx"
13866 EOS
13867 $cat >>signal_cmd <<'EOS'
13868
13869 set signal
13870 if eval $compile_ok; then
13871         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13872 else
13873         echo "(I can't seem be able to compile the whole test program)" >&4
13874         echo "(I'll try it in little pieces.)" >&4
13875         set signal -DJUST_NSIG
13876         if eval $compile_ok; then
13877                 ./signal$_exe > signal.nsg
13878                 $cat signal.nsg
13879         else
13880                 echo "I can't seem to figure out how many signals you have." >&4
13881                 echo "Guessing 50." >&4
13882                 echo 'NSIG 50' > signal.nsg
13883         fi
13884         : Now look at all the signal names, one at a time.
13885         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13886                 $cat > signal.c <<EOCP
13887 #include <sys/types.h>
13888 #include <signal.h>
13889 #include <stdio.h>
13890 int main() {
13891 printf("$xx %d\n", SIG${xx});
13892 return 0;
13893 }
13894 EOCP
13895                 set signal
13896                 if eval $compile; then
13897                         echo "SIG${xx} found."
13898                         ./signal$_exe  >> signal.ls1
13899                 else
13900                         echo "SIG${xx} NOT found."
13901                 fi
13902         done
13903         if $test -s signal.ls1; then
13904                 $cat signal.nsg signal.ls1 |
13905                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13906         fi
13907
13908 fi
13909 if $test -s signal.lst; then
13910         :
13911 else
13912         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13913         echo 'kill -l' >signal
13914         set X `csh -f <signal`
13915         $rm -f signal
13916         shift
13917         case $# in
13918         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13919         esac
13920         echo $@ | $tr ' ' $trnl | \
13921             $awk '{ printf "%s %d\n", $1, ++s; }
13922                   END { printf "NSIG %d\n", ++s }' >signal.lst
13923 fi
13924 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13925 EOS
13926 chmod a+x signal_cmd
13927 $eunicefix signal_cmd
13928
13929 : generate list of signal names
13930 echo " "
13931 case "$sig_name_init" in
13932 '') doinit=yes ;;
13933 *)  case "$sig_num_init" in
13934     ''|*,*) doinit=yes ;;
13935     esac ;;
13936 esac
13937 case "$doinit" in
13938 yes)
13939         echo "Generating a list of signal names and numbers..." >&4
13940         . ./signal_cmd
13941         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13942         sig_name=`$awk 'BEGIN { printf "ZERO " }
13943                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13944         sig_num=`$awk  'BEGIN { printf "0 " }
13945                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13946         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13947                              !/^NSIG/   { printf "\"%s\", ", $1 }
13948                              END        { printf "0\n" }' signal.lst`
13949         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13950                              !/^NSIG/   { printf "%d, ", $2}
13951                              END        { printf "0\n"}' signal.lst`
13952         ;;
13953 esac
13954 echo "The following $sig_count signals are available:"
13955 echo " "
13956 echo $sig_name | $awk \
13957 'BEGIN { linelen = 0 }
13958 {
13959         for (i = 1; i <= NF; i++) {
13960                 name = "SIG" $i " "
13961                 linelen = linelen + length(name)
13962                 if (linelen > 70) {
13963                         printf "\n"
13964                         linelen = length(name)
13965                 }
13966                 printf "%s", name
13967         }
13968         printf "\n"
13969 }'
13970 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13971
13972 echo " "
13973 case "$sizetype" in
13974 *_t) zzz="$sizetype"    ;;
13975 *)   zzz="filesize"     ;;
13976 esac
13977 echo "Checking the size of $zzz..." >&4 
13978 cat > try.c <<EOCP
13979 #include <sys/types.h>
13980 #include <stdio.h>
13981 int main() {
13982     printf("%d\n", (int)sizeof($sizetype));
13983     exit(0);
13984 }
13985 EOCP
13986 set try
13987 if eval $compile_ok; then
13988         yyy=`./try`
13989         case "$yyy" in
13990         '')     sizesize=4
13991                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13992                 ;;
13993         *)      sizesize=$yyy
13994                 echo "Your $zzz size is $sizesize bytes."
13995                 ;;
13996         esac
13997 else
13998         sizesize=4
13999         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14000 fi
14001
14002
14003 : check for socklen_t
14004 echo " "
14005 echo "Checking to see if you have socklen_t..." >&4
14006 $cat >try.c <<EOCP
14007 #include <sys/types.h>
14008 #$d_socket HAS_SOCKET
14009 #ifdef HAS_SOCKET
14010 #include <sys/socket.h>
14011 #endif
14012 int main() { socklen_t x = 16; }
14013 EOCP
14014 set try
14015 if eval $compile; then
14016         val="$define"
14017         echo "You have socklen_t."
14018 else
14019         val="$undef"
14020         echo "You do not have socklen_t."
14021         case "$sizetype" in
14022         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14023         esac
14024 fi
14025 $rm -f try try.*
14026 set d_socklen_t
14027 eval $setvar
14028
14029 : check for type of the size argument to socket calls
14030 case "$d_socket" in
14031 "$define")
14032         $cat <<EOM
14033
14034 Checking to see what type is the last argument of accept().
14035 EOM
14036         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14037         yyy=''
14038         case "$d_socklen_t" in
14039         "$define") yyy="$yyy socklen_t"
14040         esac
14041         yyy="$yyy $sizetype int long unsigned"
14042         for xxx in $yyy; do
14043                 case "$socksizetype" in
14044                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14045                         if ./protochk "$try" $hdrs; then
14046                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14047                                 socksizetype="$xxx"
14048                         fi
14049                         ;;
14050                 esac
14051         done
14052 : In case none of those worked, prompt the user.
14053         case "$socksizetype" in
14054         '')     rp='What is the type for socket address structure sizes?'
14055                 dflt='int'
14056                 . ./myread
14057                 socksizetype=$ans
14058                 ;;
14059         esac
14060         ;;
14061 *)      : no sockets, so pick relatively harmless default
14062         socksizetype='int'
14063         ;;
14064 esac
14065
14066 : see what type is used for signed size_t
14067 set ssize_t ssizetype int stdio.h sys/types.h
14068 eval $typedef
14069 dflt="$ssizetype"
14070 $cat > ssize.c <<EOM
14071 #include <stdio.h>
14072 #include <sys/types.h>
14073 #define Size_t $sizetype
14074 #define SSize_t $dflt
14075 int main()
14076 {
14077         if (sizeof(Size_t) == sizeof(SSize_t))
14078                 printf("$dflt\n");
14079         else if (sizeof(Size_t) == sizeof(int))
14080                 printf("int\n");
14081         else 
14082                 printf("long\n");
14083         exit(0);
14084 }
14085 EOM
14086 echo " "
14087 set ssize
14088 if eval $compile_ok && ./ssize > /dev/null; then
14089         ssizetype=`./ssize`
14090         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14091 else
14092         $cat >&4 <<EOM
14093 Help! I can't compile and run the ssize_t test program: please enlighten me!
14094 (This is probably a misconfiguration in your system or libraries, and
14095 you really ought to fix it.  Still, I'll try anyway.)
14096
14097 I need a type that is the same size as $sizetype, but is guaranteed to
14098 be signed.  Common values are ssize_t, int and long.
14099
14100 EOM
14101         rp="What signed type is the same size as $sizetype?"
14102         . ./myread
14103         ssizetype="$ans"
14104 fi
14105 $rm -f ssize ssize.*
14106
14107 : see what type of char stdio uses.
14108 echo " "
14109 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14110         echo "Your stdio uses unsigned chars." >&4
14111         stdchar="unsigned char"
14112 else
14113         echo "Your stdio uses signed chars." >&4
14114         stdchar="char"
14115 fi
14116
14117 : see if time exists
14118 echo " "
14119 if test "X$d_time" = X -o X"$timetype" = X; then
14120     if set time val -f d_time; eval $csym; $val; then
14121                 echo 'time() found.' >&4
14122                 val="$define"
14123                 rp="What is the type returned by time() on this system?"
14124                 set time_t timetype long stdio.h sys/types.h
14125                 eval $typedef_ask
14126     else
14127                 echo 'time() not found, hope that will do.' >&4
14128                 val="$undef"
14129                 timetype='int';
14130     fi
14131     set d_time
14132     eval $setvar
14133 fi
14134
14135 : see what type uids are declared as in the kernel
14136 echo " "
14137 echo "Looking for the type for user ids returned by getuid()."
14138 set uid_t uidtype xxx stdio.h sys/types.h
14139 eval $typedef
14140 case "$uidtype" in
14141 xxx)
14142         xxx=`./findhdr sys/user.h`
14143         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14144         case $1 in
14145         unsigned) dflt="$1 $2" ;;
14146         *) dflt="$1" ;;
14147         esac
14148         ;;
14149 *) dflt="$uidtype";;
14150 esac
14151 case "$uidtype" in
14152 uid_t)  echo "uid_t found." ;;
14153 *)      rp="What is the type for user ids returned by getuid()?"
14154         . ./myread
14155         uidtype="$ans"
14156         ;;
14157 esac
14158
14159 echo " "
14160 case "$uidtype" in
14161 *_t) zzz="$uidtype"     ;;
14162 *)   zzz="uid"          ;;
14163 esac
14164 echo "Checking the size of $zzz..." >&4 
14165 cat > try.c <<EOCP
14166 #include <sys/types.h>
14167 #include <stdio.h>
14168 int main() {
14169     printf("%d\n", (int)sizeof($uidtype));
14170     exit(0);
14171 }
14172 EOCP
14173 set try
14174 if eval $compile_ok; then
14175         yyy=`./try`
14176         case "$yyy" in
14177         '')     uidsize=4
14178                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14179                 ;;
14180         *)      uidsize=$yyy
14181                 echo "Your $zzz is $uidsize bytes long."
14182                 ;;
14183         esac
14184 else
14185         uidsize=4
14186         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14187 fi
14188
14189 echo " "
14190 case "$uidtype" in
14191 *_t) zzz="$uidtype"     ;;
14192 *)   zzz="uid"          ;;
14193 esac
14194 echo "Checking the sign of $zzz..." >&4
14195 cat > try.c <<EOCP
14196 #include <sys/types.h>
14197 #include <stdio.h>
14198 int main() {
14199         $uidtype foo = -1;
14200         if (foo < 0)
14201                 printf("-1\n");
14202         else
14203                 printf("1\n");
14204 }
14205 EOCP
14206 set try
14207 if eval $compile; then
14208         yyy=`./try`
14209         case "$yyy" in
14210         '')     uidsign=1
14211                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14212                 ;;
14213         *)      uidsign=$yyy
14214                 case "$uidsign" in
14215                  1) echo "Your $zzz is unsigned." ;;
14216                 -1) echo "Your $zzz is signed."   ;;
14217                 esac
14218                 ;;
14219         esac
14220 else
14221         uidsign=1
14222         echo "(I can't compile the test program--guessing unsigned.)" >&4
14223 fi
14224
14225
14226
14227 echo " "
14228 $echo "Checking the format string to be used for uids..." >&4
14229
14230 case "$uidsign" in
14231 -1)     if $test X"$uidsize" = X"$ivsize"; then
14232                 uidformat="$ivdformat"
14233         else
14234                 if $test X"$uidsize" = X"$longsize"; then
14235                         uidformat='"ld"'
14236                 else
14237                         if $test X"$uidsize" = X"$intsize"; then
14238                                 uidformat='"d"'
14239                         else
14240                                 if $test X"$uidsize" = X"$shortsize"; then
14241                                         uidformat='"hd"'
14242                                 fi
14243                         fi
14244                 fi
14245         fi
14246         ;;
14247 *)      if $test X"$uidsize" = X"$uvsize"; then
14248                 uidformat="$uvuformat"
14249         else
14250                 if $test X"$uidsize" = X"$longsize"; then
14251                         uidformat='"lu"'
14252                 else
14253                         if $test X"$uidsize" = X"$intsize"; then
14254                                 uidformat='"u"'
14255                         else
14256                                 if $test X"$uidsize" = X"$shortsize"; then
14257                                         uidformat='"hu"'
14258                                 fi
14259                         fi
14260                 fi
14261         fi
14262         ;;
14263 esac
14264
14265 : see if dbm.h is available
14266 : see if dbmclose exists
14267 set dbmclose d_dbmclose
14268 eval $inlibc
14269
14270 case "$d_dbmclose" in
14271 $define)
14272         set dbm.h i_dbm
14273         eval $inhdr
14274         case "$i_dbm" in
14275         $define)
14276                 val="$undef"
14277                 set i_rpcsvcdbm
14278                 eval $setvar
14279                 ;;
14280         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14281                 eval $inhdr
14282                 ;;
14283         esac
14284         ;;
14285 *)      echo "We won't be including <dbm.h>"
14286         val="$undef"
14287         set i_dbm
14288         eval $setvar
14289         val="$undef"
14290         set i_rpcsvcdbm
14291         eval $setvar
14292         ;;
14293 esac
14294
14295 : see if this is a sys/file.h system
14296 val=''
14297 set sys/file.h val
14298 eval $inhdr
14299
14300 : do we need to include sys/file.h ?
14301 case "$val" in
14302 "$define")
14303         echo " "
14304         if $h_sysfile; then
14305                 val="$define"
14306                 echo "We'll be including <sys/file.h>." >&4
14307         else
14308                 val="$undef"
14309                 echo "We won't be including <sys/file.h>." >&4
14310         fi
14311         ;;
14312 *)
14313         h_sysfile=false
14314         ;;
14315 esac
14316 set i_sysfile
14317 eval $setvar
14318
14319 : see if fcntl.h is there
14320 val=''
14321 set fcntl.h val
14322 eval $inhdr
14323
14324 : see if we can include fcntl.h
14325 case "$val" in
14326 "$define")
14327         echo " "
14328         if $h_fcntl; then
14329                 val="$define"
14330                 echo "We'll be including <fcntl.h>." >&4
14331         else
14332                 val="$undef"
14333                 if $h_sysfile; then
14334         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14335                 else
14336                         echo "We won't be including <fcntl.h>." >&4
14337                 fi
14338         fi
14339         ;;
14340 *)
14341         h_fcntl=false
14342         val="$undef"
14343         ;;
14344 esac
14345 set i_fcntl
14346 eval $setvar
14347
14348 : see if this is a iconv.h system
14349 set iconv.h i_iconv
14350 eval $inhdr
14351
14352 : see if this is a ieeefp.h system
14353 set ieeefp.h i_ieeefp
14354 eval $inhdr
14355
14356 : see if this is a libutil.h system
14357 set libutil.h i_libutil
14358 eval $inhdr
14359
14360 : see if locale.h is available
14361 set locale.h i_locale
14362 eval $inhdr
14363
14364 : see if mach cthreads are available
14365 if test "X$usethreads" = "X$define"; then
14366         set mach/cthreads.h i_machcthr
14367         eval $inhdr
14368 else
14369         i_machcthr="$undef"
14370 fi
14371
14372
14373
14374 : see if this is a math.h system
14375 set math.h i_math
14376 eval $inhdr
14377
14378 : see if this is a mntent.h system
14379 set mntent.h i_mntent
14380 eval $inhdr
14381
14382 : see if ndbm.h is available
14383 set ndbm.h t_ndbm
14384 eval $inhdr
14385 case "$t_ndbm" in
14386 $define)
14387         : see if dbm_open exists
14388         set dbm_open d_dbm_open
14389         eval $inlibc
14390         case "$d_dbm_open" in
14391         $undef)
14392                 t_ndbm="$undef"
14393                 echo "We won't be including <ndbm.h>"
14394                 ;;
14395         esac
14396         ;;
14397 esac
14398 val="$t_ndbm"
14399 set i_ndbm
14400 eval $setvar
14401
14402 : see if net/errno.h is available
14403 val=''
14404 set net/errno.h val
14405 eval $inhdr
14406
14407 : Unfortunately, it causes problems on some systems.  Arrgh.
14408 case "$val" in
14409 $define)
14410         cat > try.c <<'EOM'
14411 #include <stdio.h>
14412 #include <errno.h>
14413 #include <net/errno.h>
14414 int func()
14415 {
14416         return ENOTSOCK;
14417 }
14418 EOM
14419         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14420                 echo "We'll be including <net/errno.h>." >&4
14421         else
14422                 echo "We won't be including <net/errno.h>." >&4
14423                 val="$undef"
14424         fi
14425         $rm -f try.* try
14426         ;;
14427 esac
14428 set i_neterrno
14429 eval $setvar
14430
14431 : see if netinet/tcp.h is available
14432 set netinet/tcp.h i_netinettcp
14433 eval $inhdr
14434
14435 : see if this is a poll.h system
14436 set poll.h i_poll
14437 eval $inhdr
14438
14439 : see if this is a prot.h system
14440 set prot.h i_prot
14441 eval $inhdr
14442
14443 echo " "
14444 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14445 $cat <<'EOSH' > Cppsym.know
14446 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14447 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14448 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14449 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14450 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14451 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14452 bull c cadmus clipper CMU COFF COMPILER_VERSION
14453 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14454 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14455 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14456 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14457 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14458 H3050R H3050RX hbullx20 hcx host_mips
14459 hp200 hp300 hp700 HP700 hp800 hp9000
14460 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14461 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14462 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14463 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14464 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14465 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14466 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14467 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14468 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14469 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14470 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14471 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14472 MATH_HAS_NO_SIDE_EFFECTS
14473 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14474 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14475 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14476 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14477 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14478 NetBSD news1500 news1700 news1800 news1900 news3700
14479 news700 news800 news900 NeXT NLS ns16000 ns32000
14480 ns32016 ns32332 ns32k nsc32000
14481 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14482 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14483 pc532 pdp11 PGC PIC plexus PORTAR posix
14484 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14485 POSIX_C_SOURCE POSIX_SOURCE POWER
14486 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14487 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14488 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14489 sony sony_news sonyrisc sparc sparclite spectrum
14490 stardent stdc STDC_EXT stratos sun sun3 sun386
14491 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14492 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14493 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14494 sysV68 sysV88 Tek4132 Tek4300 titan
14495 tower tower32 tower32_200 tower32_600 tower32_700
14496 tower32_800 tower32_850 tss
14497 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14498 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14499 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14500 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14501 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14502 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14503 z8000
14504 EOSH
14505 # Maybe put other stuff here too.
14506 cat <<EOSH >>Cppsym.know
14507 $osname
14508 EOSH
14509 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14510 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14511 $cat Cppsym.know > Cppsym.c
14512 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14513 $rm -f Cppsym.a Cppsym.b Cppsym.c
14514 cat <<EOSH > Cppsym
14515 $startsh
14516 if $test \$# -gt 0; then
14517     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14518     if $test -s Cppsym.got; then
14519         $rm -f Cppsym.got
14520         exit 0
14521     fi
14522     $rm -f Cppsym.got
14523     exit 1
14524 else
14525     $tr " " "$trnl" | ./Cppsym.try
14526     exit 0
14527 fi
14528 EOSH
14529 chmod +x Cppsym
14530 $eunicefix Cppsym
14531 cat <<EOSH > Cppsym.try
14532 $startsh
14533 cat <<'EOCP' > try.c
14534 #include <stdio.h>
14535 int main() {
14536 EOCP
14537 $awk \\
14538 EOSH
14539 cat <<'EOSH' >> Cppsym.try
14540 'length($1) > 0 {
14541     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
14542     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
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 }'       >> try.c
14546 echo '}' >> try.c
14547 EOSH
14548 cat <<EOSH >> Cppsym.try
14549 ccflags="$ccflags"
14550 case "$osname-$gccversion" in
14551 irix-) ccflags="\$ccflags -woff 1178" ;;
14552 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14553 esac
14554 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
14555 EOSH
14556 chmod +x Cppsym.try
14557 $eunicefix Cppsym.try
14558 ./Cppsym < Cppsym.know > Cppsym.true
14559 : now check the C compiler for additional symbols
14560 postprocess_cc_v=''
14561 case "$osname" in
14562 aix) postprocess_cc_v="|$tr , ' '" ;;
14563 esac
14564 $cat >ccsym <<EOS
14565 $startsh
14566 $cat >tmp.c <<EOF
14567 extern int foo;
14568 EOF
14569 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14570 do
14571         case "\$i" in
14572         -D*) echo "\$i" | $sed 's/^-D//';;
14573         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14574         esac
14575 done
14576 $rm -f try.c
14577 EOS
14578 postprocess_cc_v=''
14579 chmod +x ccsym
14580 $eunicefix ccsym
14581 ./ccsym > ccsym1.raw
14582 if $test -s ccsym1.raw; then
14583        $sort ccsym1.raw | $uniq >ccsym.raw
14584 else
14585        mv ccsym1.raw ccsym.raw
14586 fi
14587
14588 $awk '/\=/ { print $0; next }
14589         { print $0"=1" }' ccsym.raw >ccsym.list
14590 $awk '/\=/ { print $0; next }
14591         { print $0"=1" }' Cppsym.true >ccsym.true
14592 $comm -13 ccsym.true ccsym.list >ccsym.own
14593 $comm -12 ccsym.true ccsym.list >ccsym.com
14594 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14595 also=''
14596 if $test -z ccsym.raw; then
14597         echo "Your C compiler doesn't seem to define any symbols!" >&4
14598         echo " "
14599         echo "However, your C preprocessor defines the following symbols:"
14600         $cat Cppsym.true
14601         ccsymbols=''
14602         cppsymbols=`$cat Cppsym.true`
14603         cppsymbols=`echo $cppsymbols`
14604         cppccsymbols="$cppsymbols"
14605 else
14606         if $test -s ccsym.com; then
14607                 echo "Your C compiler and pre-processor define these symbols:"
14608                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14609                 also='also '
14610                 symbols='ones'
14611                 cppccsymbols=`$cat ccsym.com`
14612                 cppccsymbols=`echo $cppccsymbols`
14613                 $test "$silent" || sleep 1
14614         fi
14615         if $test -s ccsym.cpp; then
14616                 $test "$also" && echo " "
14617                 echo "Your C pre-processor ${also}defines the following symbols:"
14618                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14619                 also='further '
14620                 cppsymbols=`$cat ccsym.cpp`
14621                 cppsymbols=`echo $cppsymbols`
14622                 $test "$silent" || sleep 1
14623         fi
14624         if $test -s ccsym.own; then
14625                 $test "$also" && echo " "
14626                 echo "Your C compiler ${also}defines the following cpp symbols:"
14627                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14628                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14629                 ccsymbols=`$cat ccsym.own`
14630                 ccsymbols=`echo $ccsymbols`
14631                 $test "$silent" || sleep 1
14632         fi
14633 fi
14634 $rm -f ccsym* Cppsym.*
14635
14636 : see if this is a termio system
14637 val="$undef"
14638 val2="$undef"
14639 val3="$undef"
14640 if $test `./findhdr termios.h`; then
14641         set tcsetattr i_termios
14642         eval $inlibc
14643         val3="$i_termios"
14644 fi
14645 echo " "
14646 case "$val3" in
14647 "$define") echo "You have POSIX termios.h... good!" >&4;;
14648 *) if ./Cppsym pyr; then
14649                 case "`/bin/universe`" in
14650                 ucb) if $test `./findhdr sgtty.h`; then
14651                                 val2="$define"
14652                                 echo "<sgtty.h> found." >&4
14653                         else
14654                                 echo "System is pyramid with BSD universe."
14655                                 echo "<sgtty.h> not found--you could have problems." >&4
14656                         fi;;
14657                 *) if $test `./findhdr termio.h`; then
14658                                 val="$define"
14659                                 echo "<termio.h> found." >&4
14660                         else
14661                                 echo "System is pyramid with USG universe."
14662                                 echo "<termio.h> not found--you could have problems." >&4
14663                         fi;;
14664                 esac
14665         elif ./usg; then
14666                 if $test `./findhdr termio.h`; then
14667                         echo "<termio.h> found." >&4
14668                         val="$define"
14669                 elif $test `./findhdr sgtty.h`; then
14670                         echo "<sgtty.h> found." >&4
14671                         val2="$define"
14672                 else
14673 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14674                 fi
14675         else
14676                 if $test `./findhdr sgtty.h`; then
14677                         echo "<sgtty.h> found." >&4
14678                         val2="$define"
14679                 elif $test `./findhdr termio.h`; then
14680                         echo "<termio.h> found." >&4
14681                         val="$define"
14682                 else
14683 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14684                 fi
14685         fi;;
14686 esac
14687 set i_termio; eval $setvar
14688 val=$val2; set i_sgtty; eval $setvar
14689 val=$val3; set i_termios; eval $setvar
14690
14691 : see if this is a shadow.h system
14692 set shadow.h i_shadow
14693 eval $inhdr
14694
14695 : see if this is a socks.h system
14696 set socks.h i_socks
14697 eval $inhdr
14698
14699 : see if stdarg is available
14700 echo " "
14701 if $test `./findhdr stdarg.h`; then
14702         echo "<stdarg.h> found." >&4
14703         valstd="$define"
14704 else
14705         echo "<stdarg.h> NOT found." >&4
14706         valstd="$undef"
14707 fi
14708
14709 : see if varags is available
14710 echo " "
14711 if $test `./findhdr varargs.h`; then
14712         echo "<varargs.h> found." >&4
14713 else
14714         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14715 fi
14716
14717 : set up the varargs testing programs
14718 $cat > varargs.c <<EOP
14719 #ifdef I_STDARG
14720 #include <stdarg.h>
14721 #endif
14722 #ifdef I_VARARGS
14723 #include <varargs.h>
14724 #endif
14725
14726 #ifdef I_STDARG
14727 int f(char *p, ...)
14728 #else
14729 int f(va_alist)
14730 va_dcl
14731 #endif
14732 {
14733         va_list ap;
14734 #ifndef I_STDARG
14735         char *p;
14736 #endif
14737 #ifdef I_STDARG
14738         va_start(ap,p);
14739 #else
14740         va_start(ap);
14741         p = va_arg(ap, char *);
14742 #endif
14743         va_end(ap);
14744 }
14745 EOP
14746 $cat > varargs <<EOP
14747 $startsh
14748 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14749         echo "true"
14750 else
14751         echo "false"
14752 fi
14753 $rm -f varargs$_o
14754 EOP
14755 chmod +x varargs
14756
14757 : now check which varargs header should be included
14758 echo " "
14759 i_varhdr=''
14760 case "$valstd" in
14761 "$define")
14762         if `./varargs I_STDARG`; then
14763                 val='stdarg.h'
14764         elif `./varargs I_VARARGS`; then
14765                 val='varargs.h'
14766         fi
14767         ;;
14768 *)
14769         if `./varargs I_VARARGS`; then
14770                 val='varargs.h'
14771         fi
14772         ;;
14773 esac
14774 case "$val" in
14775 '')
14776 echo "I could not find the definition for va_dcl... You have problems..." >&4
14777         val="$undef"; set i_stdarg; eval $setvar
14778         val="$undef"; set i_varargs; eval $setvar
14779         ;;
14780 *) 
14781         set i_varhdr
14782         eval $setvar
14783         case "$i_varhdr" in
14784         stdarg.h)
14785                 val="$define"; set i_stdarg; eval $setvar
14786                 val="$undef"; set i_varargs; eval $setvar
14787                 ;;
14788         varargs.h)
14789                 val="$undef"; set i_stdarg; eval $setvar
14790                 val="$define"; set i_varargs; eval $setvar
14791                 ;;
14792         esac
14793         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14794 esac
14795 $rm -f varargs*
14796
14797 : see if stddef is available
14798 set stddef.h i_stddef
14799 eval $inhdr
14800
14801 : see if this is a sunmath.h system
14802 set sunmath.h i_sunmath
14803 eval $inhdr
14804
14805 : see if sys/access.h is available
14806 set sys/access.h i_sysaccess
14807 eval $inhdr
14808
14809 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14810 set sys/filio.h i_sysfilio
14811 eval $inhdr
14812 echo " "
14813 if $test `./findhdr sys/ioctl.h`; then
14814         val="$define"
14815         echo '<sys/ioctl.h> found.' >&4
14816 else
14817         val="$undef"
14818         if $test $i_sysfilio = "$define"; then
14819             echo '<sys/ioctl.h> NOT found.' >&4
14820         else
14821                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14822                 $test $i_termio = "$define" && xxx="termio.h"
14823                 $test $i_termios = "$define" && xxx="termios.h"
14824 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14825         fi
14826 fi
14827 set i_sysioctl
14828 eval $setvar
14829
14830
14831 : see if this is a syslog.h system
14832 set syslog.h i_syslog
14833 eval $inhdr
14834
14835
14836 : see if this is a sys/mode.h system
14837 set sys/mode.h i_sysmode
14838 eval $inhdr
14839
14840 : see if sys/resource.h has to be included
14841 set sys/resource.h i_sysresrc
14842 eval $inhdr
14843
14844 : see if sys/security.h is available
14845 set sys/security.h i_syssecrt
14846 eval $inhdr
14847
14848 : see if this is a sys/statvfs.h system
14849 set sys/statvfs.h i_sysstatvfs
14850 eval $inhdr
14851
14852 : see if this is a sys/uio.h system
14853 set sys/uio.h i_sysuio
14854 eval $inhdr
14855
14856 : see if this is a sys/un.h system
14857 set sys/un.h i_sysun
14858 eval $inhdr
14859
14860
14861 : see if this is a sys/utsname.h system
14862 set sys/utsname.h i_sysutsname
14863 eval $inhdr
14864
14865 : see if this is a syswait system
14866 set sys/wait.h i_syswait
14867 eval $inhdr
14868
14869 : see if this is a ustat.h system
14870 set ustat.h i_ustat
14871 eval $inhdr
14872
14873 : see if this is an utime system
14874 set utime.h i_utime
14875 eval $inhdr
14876
14877 : see if this is a values.h system
14878 set values.h i_values
14879 eval $inhdr
14880
14881 : see if this is a vfork system
14882 case "$d_vfork" in
14883 "$define")
14884         set vfork.h i_vfork
14885         eval $inhdr
14886         ;;
14887 *)
14888         i_vfork="$undef"
14889         ;;
14890 esac
14891
14892 : see if gdbm.h is available
14893 set gdbm.h t_gdbm
14894 eval $inhdr
14895 case "$t_gdbm" in
14896 $define)
14897         : see if gdbm_open exists
14898         set gdbm_open d_gdbm_open
14899         eval $inlibc
14900         case "$d_gdbm_open" in
14901         $undef)
14902                 t_gdbm="$undef"
14903                 echo "We won't be including <gdbm.h>"
14904                 ;;
14905         esac
14906         ;;
14907 esac
14908 val="$t_gdbm"
14909 set i_gdbm
14910 eval $setvar
14911
14912 echo " "
14913 echo "Looking for extensions..." >&4
14914 : If we are using the old config.sh, known_extensions may contain
14915 : old or inaccurate or duplicate values.
14916 known_extensions=''
14917 nonxs_extensions=''
14918 : We do not use find because it might not be available.
14919 : We do not just use MANIFEST because the user may have dropped
14920 : some additional extensions into the source tree and expect them
14921 : to be built.
14922
14923 : Function to recursively find available extensions, ignoring DynaLoader
14924 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14925 find_extensions='
14926     for xxx in *; do
14927        case "$xxx" in
14928            DynaLoader|dynaload) ;;
14929            *)
14930            if $test -f $xxx/$xxx.xs; then
14931                known_extensions="$known_extensions $1$xxx";
14932            elif $test -f $xxx/Makefile.PL; then
14933                nonxs_extensions="$nonxs_extensions $1$xxx";
14934            else
14935                if $test -d $xxx -a $# -lt 10; then
14936                    set $1$xxx/ $*;
14937                    cd $xxx;
14938                    eval $find_extensions;
14939                    cd ..;
14940                    shift;
14941                fi;
14942            fi
14943            ;;
14944        esac;
14945     done'
14946 tdir=`pwd`
14947 cd $rsrc/ext
14948 set X
14949 shift
14950 eval $find_extensions
14951 set X $nonxs_extensions
14952 shift
14953 nonxs_extensions="$*"
14954 set X $known_extensions
14955 shift
14956 known_extensions="$*"
14957 cd $tdir
14958
14959 : Now see which are supported on this system.
14960 avail_ext=''
14961 for xxx in $known_extensions ; do
14962         case "$xxx" in
14963         DB_File|db_file)
14964                 case "$i_db" in
14965                 $define) avail_ext="$avail_ext $xxx" ;;
14966                 esac
14967                 ;;
14968         GDBM_File|gdbm_fil)
14969                 case "$i_gdbm" in 
14970                 $define) avail_ext="$avail_ext $xxx" ;;
14971                 esac
14972                 ;;
14973         NDBM_File|ndbm_fil)
14974                 case "$i_ndbm" in
14975                 $define)
14976                     case "$osname-$use64bitint" in
14977                     hpux-define)
14978                         case "$libs" in
14979                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14980                         esac
14981                         ;;
14982                     *) avail_ext="$avail_ext $xxx" ;;
14983                     esac
14984                     ;;
14985                 esac
14986                 ;;
14987         ODBM_File|odbm_fil) 
14988                 case "${i_dbm}${i_rpcsvcdbm}" in
14989                 *"${define}"*)
14990                     case "$osname-$use64bitint" in
14991                     hpux-define)
14992                         case "$libs" in
14993                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14994                         esac
14995                         ;;
14996                     *) avail_ext="$avail_ext $xxx" ;;
14997                     esac
14998                     ;;
14999                 esac
15000                 ;;
15001         POSIX|posix)
15002                 case "$useposix" in
15003                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15004                 esac
15005                 ;;
15006         Opcode|opcode)
15007                 case "$useopcode" in
15008                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15009                 esac
15010                 ;;
15011         Socket|socket)
15012                 case "$d_socket" in 
15013                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15014                 esac
15015                 ;;
15016         Sys/Syslog|sys/syslog)
15017                 : XXX syslog requires socket
15018                 case "$d_socket" in 
15019                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15020                 esac
15021                 ;;
15022         Thread|thread)
15023                 case "$usethreads" in 
15024                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15025                 esac
15026                 ;;
15027         IPC/SysV|ipc/sysv)
15028                 : XXX Do we need a useipcsysv variable here
15029                 case "${d_msg}${d_sem}${d_shm}" in 
15030                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15031                 esac
15032                 ;;
15033         *)      avail_ext="$avail_ext $xxx"
15034                 ;;
15035         esac
15036 done
15037
15038 set X $avail_ext
15039 shift
15040 avail_ext="$*"
15041
15042 : Now see which nonxs extensions are supported on this system.
15043 : For now assume all are.
15044 nonxs_ext=''
15045 for xxx in $nonxs_extensions ; do
15046         case "$xxx" in
15047         *)      nonxs_ext="$nonxs_ext $xxx"
15048                 ;;
15049         esac
15050 done
15051
15052 set X $nonxs_ext
15053 shift
15054 nonxs_ext="$*"
15055
15056 case $usedl in
15057 $define)
15058         $cat <<EOM
15059 A number of extensions are supplied with $package.  You may choose to
15060 compile these extensions for dynamic loading (the default), compile
15061 them into the $package executable (static loading), or not include
15062 them at all.  Answer "none" to include no extensions.
15063 Note that DynaLoader is always built and need not be mentioned here.
15064
15065 EOM
15066         case "$dynamic_ext" in
15067         '') dflt="$avail_ext" ;;
15068         *)      dflt="$dynamic_ext"
15069                 # Perhaps we are reusing an old out-of-date config.sh.
15070                 case "$hint" in
15071                 previous)
15072                         if test X"$dynamic_ext" != X"$avail_ext"; then
15073                                 $cat <<EOM
15074 NOTICE:  Your previous config.sh list may be incorrect. 
15075 The extensions now available to you are 
15076         ${avail_ext}
15077 but the default list from your previous config.sh is
15078         ${dynamic_ext} 
15079
15080 EOM
15081                         fi
15082                         ;;
15083                 esac
15084                 ;;
15085         esac
15086         case "$dflt" in
15087         '')     dflt=none;;
15088         esac
15089         rp="What extensions do you wish to load dynamically?"
15090         . ./myread
15091         case "$ans" in
15092         none) dynamic_ext=' ' ;;
15093         *) dynamic_ext="$ans" ;;
15094         esac
15095
15096         case "$static_ext" in
15097         '')
15098                 : Exclude those already listed in dynamic linking
15099                 dflt=''
15100                 for xxx in $avail_ext; do
15101                         case " $dynamic_ext " in
15102                         *" $xxx "*) ;;
15103                         *) dflt="$dflt $xxx" ;;
15104                         esac
15105                 done
15106                 set X $dflt
15107                 shift
15108                 dflt="$*"
15109                 ;;
15110         *)  dflt="$static_ext" 
15111                 ;;
15112         esac
15113
15114         case "$dflt" in
15115         '')     dflt=none;;
15116         esac
15117         rp="What extensions do you wish to load statically?"
15118         . ./myread
15119         case "$ans" in
15120         none) static_ext=' ' ;;
15121         *) static_ext="$ans" ;;
15122         esac
15123         ;;
15124 *)
15125         $cat <<EOM
15126 A number of extensions are supplied with $package.  Answer "none" 
15127 to include no extensions. 
15128 Note that DynaLoader is always built and need not be mentioned here.
15129
15130 EOM
15131         case "$static_ext" in
15132         '') dflt="$avail_ext" ;;
15133         *)      dflt="$static_ext"
15134                 # Perhaps we are reusing an old out-of-date config.sh.
15135                 case "$hint" in
15136                 previous)
15137                         if test X"$static_ext" != X"$avail_ext"; then
15138                                 $cat <<EOM
15139 NOTICE:  Your previous config.sh list may be incorrect. 
15140 The extensions now available to you are 
15141         ${avail_ext}
15142 but the default list from your previous config.sh is
15143         ${static_ext} 
15144
15145 EOM
15146                         fi
15147                         ;;
15148                 esac
15149                 ;;
15150         esac
15151         : Exclude those that are not xs extensions
15152         case "$dflt" in
15153         '')     dflt=none;;
15154         esac
15155         rp="What extensions do you wish to include?"
15156         . ./myread
15157         case "$ans" in
15158         none) static_ext=' ' ;;
15159         *) static_ext="$ans" ;;
15160         esac
15161         ;;
15162 esac
15163
15164 set X $dynamic_ext $static_ext $nonxs_ext
15165 shift
15166 extensions="$*"
15167
15168 : Remove libraries needed only for extensions
15169 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15170 case "$usedl" in
15171 $define|true|[yY]*)
15172         set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15173         shift
15174         perllibs="$*"
15175         ;;
15176 *)      perllibs="$libs"
15177         ;;
15178 esac
15179
15180 : Remove build directory name from cppstdin so it can be used from
15181 : either the present location or the final installed location.
15182 echo " "
15183 : Get out of the UU directory to get correct path name.
15184 cd ..
15185 case "$cppstdin" in
15186 `pwd`/cppstdin)
15187         echo "Stripping down cppstdin path name"
15188         cppstdin=cppstdin
15189         ;;
15190 esac
15191 cd UU
15192
15193 : end of configuration questions
15194 echo " "
15195 echo "End of configuration questions."
15196 echo " "
15197
15198 : back to where it started
15199 if test -d ../UU; then
15200         cd ..
15201 fi
15202
15203 : configuration may be patched via a 'config.over' file
15204 if $test -f config.over; then
15205         echo " "
15206         dflt=y
15207         rp='I see a config.over file.  Do you wish to load it?'
15208         . UU/myread
15209         case "$ans" in
15210         n*) echo "OK, I'll ignore it.";;
15211         *)      . ./config.over
15212                 echo "Configuration override changes have been loaded."
15213                 ;;
15214         esac
15215 fi
15216
15217 : in case they want portability, strip down executable paths
15218 case "$d_portable" in
15219 "$define")
15220         echo " "
15221         echo "Stripping down executable paths..." >&4
15222         for file in $loclist $trylist; do
15223                 eval temp=\$$file
15224                 eval $file=`basename $temp`
15225         done
15226         ;;
15227 esac
15228
15229 : create config.sh file
15230 echo " "
15231 echo "Creating config.sh..." >&4
15232 $spitshell <<EOT >config.sh
15233 $startsh
15234 #
15235 # This file was produced by running the Configure script. It holds all the
15236 # definitions figured out by Configure. Should you modify one of these values,
15237 # do not forget to propagate your changes by running "Configure -der". You may
15238 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15239 #
15240
15241 # Package name      : $package
15242 # Source directory  : $src
15243 # Configuration time: $cf_time
15244 # Configured by     : $cf_by
15245 # Target system     : $myuname
15246
15247 Author='$Author'
15248 Date='$Date'
15249 Header='$Header'
15250 Id='$Id'
15251 Locker='$Locker'
15252 Log='$Log'
15253 Mcc='$Mcc'
15254 RCSfile='$RCSfile'
15255 Revision='$Revision'
15256 Source='$Source'
15257 State='$State'
15258 _a='$_a'
15259 _exe='$_exe'
15260 _o='$_o'
15261 afs='$afs'
15262 alignbytes='$alignbytes'
15263 ansi2knr='$ansi2knr'
15264 aphostname='$aphostname'
15265 api_revision='$api_revision'
15266 api_subversion='$api_subversion'
15267 api_version='$api_version'
15268 api_versionstring='$api_versionstring'
15269 ar='$ar'
15270 archlib='$archlib'
15271 archlibexp='$archlibexp'
15272 archname64='$archname64'
15273 archname='$archname'
15274 archobjs='$archobjs'
15275 awk='$awk'
15276 baserev='$baserev'
15277 bash='$bash'
15278 bin='$bin'
15279 bincompat5005='$bincompat5005'
15280 binexp='$binexp'
15281 bison='$bison'
15282 byacc='$byacc'
15283 byteorder='$byteorder'
15284 c='$c'
15285 castflags='$castflags'
15286 cat='$cat'
15287 cc='$cc'
15288 cccdlflags='$cccdlflags'
15289 ccdlflags='$ccdlflags'
15290 ccflags='$ccflags'
15291 ccflags_uselargefiles='$ccflags_uselargefiles'
15292 ccname='$ccname'
15293 ccsymbols='$ccsymbols'
15294 ccversion='$ccversion'
15295 cf_by='$cf_by'
15296 cf_email='$cf_email'
15297 cf_time='$cf_time'
15298 charsize='$charsize'
15299 chgrp='$chgrp'
15300 chmod='$chmod'
15301 chown='$chown'
15302 clocktype='$clocktype'
15303 comm='$comm'
15304 compress='$compress'
15305 contains='$contains'
15306 cp='$cp'
15307 cpio='$cpio'
15308 cpp='$cpp'
15309 cpp_stuff='$cpp_stuff'
15310 cppccsymbols='$cppccsymbols'
15311 cppflags='$cppflags'
15312 cpplast='$cpplast'
15313 cppminus='$cppminus'
15314 cpprun='$cpprun'
15315 cppstdin='$cppstdin'
15316 cppsymbols='$cppsymbols'
15317 crosscompile='$crosscompile'
15318 cryptlib='$cryptlib'
15319 csh='$csh'
15320 d_Gconvert='$d_Gconvert'
15321 d_PRIEUldbl='$d_PRIEUldbl'
15322 d_PRIFUldbl='$d_PRIFUldbl'
15323 d_PRIGUldbl='$d_PRIGUldbl'
15324 d_PRIXU64='$d_PRIXU64'
15325 d_PRId64='$d_PRId64'
15326 d_PRIeldbl='$d_PRIeldbl'
15327 d_PRIfldbl='$d_PRIfldbl'
15328 d_PRIgldbl='$d_PRIgldbl'
15329 d_PRIi64='$d_PRIi64'
15330 d_PRIo64='$d_PRIo64'
15331 d_PRIu64='$d_PRIu64'
15332 d_PRIx64='$d_PRIx64'
15333 d_SCNfldbl='$d_SCNfldbl'
15334 d_access='$d_access'
15335 d_accessx='$d_accessx'
15336 d_alarm='$d_alarm'
15337 d_archlib='$d_archlib'
15338 d_atolf='$d_atolf'
15339 d_atoll='$d_atoll'
15340 d_attribut='$d_attribut'
15341 d_bcmp='$d_bcmp'
15342 d_bcopy='$d_bcopy'
15343 d_bincompat5005='$d_bincompat5005'
15344 d_bsd='$d_bsd'
15345 d_bsdgetpgrp='$d_bsdgetpgrp'
15346 d_bsdsetpgrp='$d_bsdsetpgrp'
15347 d_bzero='$d_bzero'
15348 d_casti32='$d_casti32'
15349 d_castneg='$d_castneg'
15350 d_charvspr='$d_charvspr'
15351 d_chown='$d_chown'
15352 d_chroot='$d_chroot'
15353 d_chsize='$d_chsize'
15354 d_closedir='$d_closedir'
15355 d_const='$d_const'
15356 d_crypt='$d_crypt'
15357 d_csh='$d_csh'
15358 d_cuserid='$d_cuserid'
15359 d_dbl_dig='$d_dbl_dig'
15360 d_difftime='$d_difftime'
15361 d_dirnamlen='$d_dirnamlen'
15362 d_dlerror='$d_dlerror'
15363 d_dlopen='$d_dlopen'
15364 d_dlsymun='$d_dlsymun'
15365 d_dosuid='$d_dosuid'
15366 d_drand48proto='$d_drand48proto'
15367 d_dup2='$d_dup2'
15368 d_eaccess='$d_eaccess'
15369 d_endgrent='$d_endgrent'
15370 d_endhent='$d_endhent'
15371 d_endnent='$d_endnent'
15372 d_endpent='$d_endpent'
15373 d_endpwent='$d_endpwent'
15374 d_endsent='$d_endsent'
15375 d_eofnblk='$d_eofnblk'
15376 d_eunice='$d_eunice'
15377 d_fchmod='$d_fchmod'
15378 d_fchown='$d_fchown'
15379 d_fcntl='$d_fcntl'
15380 d_fd_macros='$d_fd_macros'
15381 d_fd_set='$d_fd_set'
15382 d_fds_bits='$d_fds_bits'
15383 d_fgetpos='$d_fgetpos'
15384 d_flexfnam='$d_flexfnam'
15385 d_flock='$d_flock'
15386 d_fork='$d_fork'
15387 d_fpathconf='$d_fpathconf'
15388 d_fpos64_t='$d_fpos64_t'
15389 d_frexpl='$d_frexpl'
15390 d_fs_data_s='$d_fs_data_s'
15391 d_fseeko='$d_fseeko'
15392 d_fsetpos='$d_fsetpos'
15393 d_fstatfs='$d_fstatfs'
15394 d_fstatvfs='$d_fstatvfs'
15395 d_ftello='$d_ftello'
15396 d_ftime='$d_ftime'
15397 d_getcwd='$d_getcwd'
15398 d_getespwnam='$d_getespwnam'
15399 d_getfsstat='$d_getfsstat'
15400 d_getgrent='$d_getgrent'
15401 d_getgrps='$d_getgrps'
15402 d_gethbyaddr='$d_gethbyaddr'
15403 d_gethbyname='$d_gethbyname'
15404 d_gethent='$d_gethent'
15405 d_gethname='$d_gethname'
15406 d_gethostprotos='$d_gethostprotos'
15407 d_getlogin='$d_getlogin'
15408 d_getmnt='$d_getmnt'
15409 d_getmntent='$d_getmntent'
15410 d_getnbyaddr='$d_getnbyaddr'
15411 d_getnbyname='$d_getnbyname'
15412 d_getnent='$d_getnent'
15413 d_getnetprotos='$d_getnetprotos'
15414 d_getpbyname='$d_getpbyname'
15415 d_getpbynumber='$d_getpbynumber'
15416 d_getpent='$d_getpent'
15417 d_getpgid='$d_getpgid'
15418 d_getpgrp2='$d_getpgrp2'
15419 d_getpgrp='$d_getpgrp'
15420 d_getppid='$d_getppid'
15421 d_getprior='$d_getprior'
15422 d_getprotoprotos='$d_getprotoprotos'
15423 d_getprpwnam='$d_getprpwnam'
15424 d_getpwent='$d_getpwent'
15425 d_getsbyname='$d_getsbyname'
15426 d_getsbyport='$d_getsbyport'
15427 d_getsent='$d_getsent'
15428 d_getservprotos='$d_getservprotos'
15429 d_getspnam='$d_getspnam'
15430 d_gettimeod='$d_gettimeod'
15431 d_gnulibc='$d_gnulibc'
15432 d_grpasswd='$d_grpasswd'
15433 d_hasmntopt='$d_hasmntopt'
15434 d_htonl='$d_htonl'
15435 d_iconv='$d_iconv'
15436 d_index='$d_index'
15437 d_inetaton='$d_inetaton'
15438 d_int64_t='$d_int64_t'
15439 d_isascii='$d_isascii'
15440 d_isnan='$d_isnan'
15441 d_isnanl='$d_isnanl'
15442 d_killpg='$d_killpg'
15443 d_lchown='$d_lchown'
15444 d_ldbl_dig='$d_ldbl_dig'
15445 d_link='$d_link'
15446 d_locconv='$d_locconv'
15447 d_lockf='$d_lockf'
15448 d_longdbl='$d_longdbl'
15449 d_longlong='$d_longlong'
15450 d_lseekproto='$d_lseekproto'
15451 d_lstat='$d_lstat'
15452 d_madvise='$d_madvise'
15453 d_mblen='$d_mblen'
15454 d_mbstowcs='$d_mbstowcs'
15455 d_mbtowc='$d_mbtowc'
15456 d_memchr='$d_memchr'
15457 d_memcmp='$d_memcmp'
15458 d_memcpy='$d_memcpy'
15459 d_memmove='$d_memmove'
15460 d_memset='$d_memset'
15461 d_mkdir='$d_mkdir'
15462 d_mkdtemp='$d_mkdtemp'
15463 d_mkfifo='$d_mkfifo'
15464 d_mkstemp='$d_mkstemp'
15465 d_mkstemps='$d_mkstemps'
15466 d_mktime='$d_mktime'
15467 d_mmap='$d_mmap'
15468 d_modfl='$d_modfl'
15469 d_mprotect='$d_mprotect'
15470 d_msg='$d_msg'
15471 d_msg_ctrunc='$d_msg_ctrunc'
15472 d_msg_dontroute='$d_msg_dontroute'
15473 d_msg_oob='$d_msg_oob'
15474 d_msg_peek='$d_msg_peek'
15475 d_msg_proxy='$d_msg_proxy'
15476 d_msgctl='$d_msgctl'
15477 d_msgget='$d_msgget'
15478 d_msgrcv='$d_msgrcv'
15479 d_msgsnd='$d_msgsnd'
15480 d_msync='$d_msync'
15481 d_munmap='$d_munmap'
15482 d_mymalloc='$d_mymalloc'
15483 d_nice='$d_nice'
15484 d_nv_preserves_uv='$d_nv_preserves_uv'
15485 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15486 d_off64_t='$d_off64_t'
15487 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15488 d_oldpthreads='$d_oldpthreads'
15489 d_oldsock='$d_oldsock'
15490 d_open3='$d_open3'
15491 d_pathconf='$d_pathconf'
15492 d_pause='$d_pause'
15493 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15494 d_phostname='$d_phostname'
15495 d_pipe='$d_pipe'
15496 d_poll='$d_poll'
15497 d_portable='$d_portable'
15498 d_pthread_yield='$d_pthread_yield'
15499 d_pwage='$d_pwage'
15500 d_pwchange='$d_pwchange'
15501 d_pwclass='$d_pwclass'
15502 d_pwcomment='$d_pwcomment'
15503 d_pwexpire='$d_pwexpire'
15504 d_pwgecos='$d_pwgecos'
15505 d_pwpasswd='$d_pwpasswd'
15506 d_pwquota='$d_pwquota'
15507 d_qgcvt='$d_qgcvt'
15508 d_quad='$d_quad'
15509 d_readdir='$d_readdir'
15510 d_readlink='$d_readlink'
15511 d_rename='$d_rename'
15512 d_rewinddir='$d_rewinddir'
15513 d_rmdir='$d_rmdir'
15514 d_safebcpy='$d_safebcpy'
15515 d_safemcpy='$d_safemcpy'
15516 d_sanemcmp='$d_sanemcmp'
15517 d_sched_yield='$d_sched_yield'
15518 d_scm_rights='$d_scm_rights'
15519 d_seekdir='$d_seekdir'
15520 d_select='$d_select'
15521 d_sem='$d_sem'
15522 d_semctl='$d_semctl'
15523 d_semctl_semid_ds='$d_semctl_semid_ds'
15524 d_semctl_semun='$d_semctl_semun'
15525 d_semget='$d_semget'
15526 d_semop='$d_semop'
15527 d_setegid='$d_setegid'
15528 d_seteuid='$d_seteuid'
15529 d_setgrent='$d_setgrent'
15530 d_setgrps='$d_setgrps'
15531 d_sethent='$d_sethent'
15532 d_setlinebuf='$d_setlinebuf'
15533 d_setlocale='$d_setlocale'
15534 d_setnent='$d_setnent'
15535 d_setpent='$d_setpent'
15536 d_setpgid='$d_setpgid'
15537 d_setpgrp2='$d_setpgrp2'
15538 d_setpgrp='$d_setpgrp'
15539 d_setprior='$d_setprior'
15540 d_setproctitle='$d_setproctitle'
15541 d_setpwent='$d_setpwent'
15542 d_setregid='$d_setregid'
15543 d_setresgid='$d_setresgid'
15544 d_setresuid='$d_setresuid'
15545 d_setreuid='$d_setreuid'
15546 d_setrgid='$d_setrgid'
15547 d_setruid='$d_setruid'
15548 d_setsent='$d_setsent'
15549 d_setsid='$d_setsid'
15550 d_setvbuf='$d_setvbuf'
15551 d_sfio='$d_sfio'
15552 d_shm='$d_shm'
15553 d_shmat='$d_shmat'
15554 d_shmatprototype='$d_shmatprototype'
15555 d_shmctl='$d_shmctl'
15556 d_shmdt='$d_shmdt'
15557 d_shmget='$d_shmget'
15558 d_sigaction='$d_sigaction'
15559 d_sigsetjmp='$d_sigsetjmp'
15560 d_socket='$d_socket'
15561 d_socklen_t='$d_socklen_t'
15562 d_sockpair='$d_sockpair'
15563 d_socks5_init='$d_socks5_init'
15564 d_sqrtl='$d_sqrtl'
15565 d_statblks='$d_statblks'
15566 d_statfs_f_flags='$d_statfs_f_flags'
15567 d_statfs_s='$d_statfs_s'
15568 d_statvfs='$d_statvfs'
15569 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15570 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15571 d_stdio_stream_array='$d_stdio_stream_array'
15572 d_stdiobase='$d_stdiobase'
15573 d_stdstdio='$d_stdstdio'
15574 d_strchr='$d_strchr'
15575 d_strcoll='$d_strcoll'
15576 d_strctcpy='$d_strctcpy'
15577 d_strerrm='$d_strerrm'
15578 d_strerror='$d_strerror'
15579 d_strtod='$d_strtod'
15580 d_strtol='$d_strtol'
15581 d_strtold='$d_strtold'
15582 d_strtoll='$d_strtoll'
15583 d_strtoul='$d_strtoul'
15584 d_strtoull='$d_strtoull'
15585 d_strtouq='$d_strtouq'
15586 d_strxfrm='$d_strxfrm'
15587 d_suidsafe='$d_suidsafe'
15588 d_symlink='$d_symlink'
15589 d_syscall='$d_syscall'
15590 d_sysconf='$d_sysconf'
15591 d_sysernlst='$d_sysernlst'
15592 d_syserrlst='$d_syserrlst'
15593 d_system='$d_system'
15594 d_tcgetpgrp='$d_tcgetpgrp'
15595 d_tcsetpgrp='$d_tcsetpgrp'
15596 d_telldir='$d_telldir'
15597 d_telldirproto='$d_telldirproto'
15598 d_time='$d_time'
15599 d_times='$d_times'
15600 d_truncate='$d_truncate'
15601 d_tzname='$d_tzname'
15602 d_umask='$d_umask'
15603 d_uname='$d_uname'
15604 d_union_semun='$d_union_semun'
15605 d_ustat='$d_ustat'
15606 d_vendorarch='$d_vendorarch'
15607 d_vendorbin='$d_vendorbin'
15608 d_vendorlib='$d_vendorlib'
15609 d_vfork='$d_vfork'
15610 d_void_closedir='$d_void_closedir'
15611 d_voidsig='$d_voidsig'
15612 d_voidtty='$d_voidtty'
15613 d_volatile='$d_volatile'
15614 d_vprintf='$d_vprintf'
15615 d_wait4='$d_wait4'
15616 d_waitpid='$d_waitpid'
15617 d_wcstombs='$d_wcstombs'
15618 d_wctomb='$d_wctomb'
15619 d_xenix='$d_xenix'
15620 date='$date'
15621 db_hashtype='$db_hashtype'
15622 db_prefixtype='$db_prefixtype'
15623 defvoidused='$defvoidused'
15624 direntrytype='$direntrytype'
15625 dlext='$dlext'
15626 dlsrc='$dlsrc'
15627 doublesize='$doublesize'
15628 drand01='$drand01'
15629 dynamic_ext='$dynamic_ext'
15630 eagain='$eagain'
15631 ebcdic='$ebcdic'
15632 echo='$echo'
15633 egrep='$egrep'
15634 emacs='$emacs'
15635 eunicefix='$eunicefix'
15636 exe_ext='$exe_ext'
15637 expr='$expr'
15638 extensions='$extensions'
15639 fflushNULL='$fflushNULL'
15640 fflushall='$fflushall'
15641 find='$find'
15642 firstmakefile='$firstmakefile'
15643 flex='$flex'
15644 fpossize='$fpossize'
15645 fpostype='$fpostype'
15646 freetype='$freetype'
15647 full_ar='$full_ar'
15648 full_csh='$full_csh'
15649 full_sed='$full_sed'
15650 gccosandvers='$gccosandvers'
15651 gccversion='$gccversion'
15652 gidformat='$gidformat'
15653 gidsign='$gidsign'
15654 gidsize='$gidsize'
15655 gidtype='$gidtype'
15656 glibpth='$glibpth'
15657 grep='$grep'
15658 groupcat='$groupcat'
15659 groupstype='$groupstype'
15660 gzip='$gzip'
15661 h_fcntl='$h_fcntl'
15662 h_sysfile='$h_sysfile'
15663 hint='$hint'
15664 hostcat='$hostcat'
15665 i16size='$i16size'
15666 i16type='$i16type'
15667 i32size='$i32size'
15668 i32type='$i32type'
15669 i64size='$i64size'
15670 i64type='$i64type'
15671 i8size='$i8size'
15672 i8type='$i8type'
15673 i_arpainet='$i_arpainet'
15674 i_bsdioctl='$i_bsdioctl'
15675 i_db='$i_db'
15676 i_dbm='$i_dbm'
15677 i_dirent='$i_dirent'
15678 i_dld='$i_dld'
15679 i_dlfcn='$i_dlfcn'
15680 i_fcntl='$i_fcntl'
15681 i_float='$i_float'
15682 i_gdbm='$i_gdbm'
15683 i_grp='$i_grp'
15684 i_iconv='$i_iconv'
15685 i_ieeefp='$i_ieeefp'
15686 i_inttypes='$i_inttypes'
15687 i_libutil='$i_libutil'
15688 i_limits='$i_limits'
15689 i_locale='$i_locale'
15690 i_machcthr='$i_machcthr'
15691 i_malloc='$i_malloc'
15692 i_math='$i_math'
15693 i_memory='$i_memory'
15694 i_mntent='$i_mntent'
15695 i_ndbm='$i_ndbm'
15696 i_netdb='$i_netdb'
15697 i_neterrno='$i_neterrno'
15698 i_netinettcp='$i_netinettcp'
15699 i_niin='$i_niin'
15700 i_poll='$i_poll'
15701 i_prot='$i_prot'
15702 i_pthread='$i_pthread'
15703 i_pwd='$i_pwd'
15704 i_rpcsvcdbm='$i_rpcsvcdbm'
15705 i_sfio='$i_sfio'
15706 i_sgtty='$i_sgtty'
15707 i_shadow='$i_shadow'
15708 i_socks='$i_socks'
15709 i_stdarg='$i_stdarg'
15710 i_stddef='$i_stddef'
15711 i_stdlib='$i_stdlib'
15712 i_string='$i_string'
15713 i_sunmath='$i_sunmath'
15714 i_sysaccess='$i_sysaccess'
15715 i_sysdir='$i_sysdir'
15716 i_sysfile='$i_sysfile'
15717 i_sysfilio='$i_sysfilio'
15718 i_sysin='$i_sysin'
15719 i_sysioctl='$i_sysioctl'
15720 i_syslog='$i_syslog'
15721 i_sysmman='$i_sysmman'
15722 i_sysmode='$i_sysmode'
15723 i_sysmount='$i_sysmount'
15724 i_sysndir='$i_sysndir'
15725 i_sysparam='$i_sysparam'
15726 i_sysresrc='$i_sysresrc'
15727 i_syssecrt='$i_syssecrt'
15728 i_sysselct='$i_sysselct'
15729 i_syssockio='$i_syssockio'
15730 i_sysstat='$i_sysstat'
15731 i_sysstatfs='$i_sysstatfs'
15732 i_sysstatvfs='$i_sysstatvfs'
15733 i_systime='$i_systime'
15734 i_systimek='$i_systimek'
15735 i_systimes='$i_systimes'
15736 i_systypes='$i_systypes'
15737 i_sysuio='$i_sysuio'
15738 i_sysun='$i_sysun'
15739 i_sysutsname='$i_sysutsname'
15740 i_sysvfs='$i_sysvfs'
15741 i_syswait='$i_syswait'
15742 i_termio='$i_termio'
15743 i_termios='$i_termios'
15744 i_time='$i_time'
15745 i_unistd='$i_unistd'
15746 i_ustat='$i_ustat'
15747 i_utime='$i_utime'
15748 i_values='$i_values'
15749 i_varargs='$i_varargs'
15750 i_varhdr='$i_varhdr'
15751 i_vfork='$i_vfork'
15752 ignore_versioned_solibs='$ignore_versioned_solibs'
15753 inc_version_list='$inc_version_list'
15754 inc_version_list_init='$inc_version_list_init'
15755 incpath='$incpath'
15756 inews='$inews'
15757 installarchlib='$installarchlib'
15758 installbin='$installbin'
15759 installman1dir='$installman1dir'
15760 installman3dir='$installman3dir'
15761 installprefix='$installprefix'
15762 installprefixexp='$installprefixexp'
15763 installprivlib='$installprivlib'
15764 installscript='$installscript'
15765 installsitearch='$installsitearch'
15766 installsitebin='$installsitebin'
15767 installsitelib='$installsitelib'
15768 installstyle='$installstyle'
15769 installusrbinperl='$installusrbinperl'
15770 installvendorarch='$installvendorarch'
15771 installvendorbin='$installvendorbin'
15772 installvendorlib='$installvendorlib'
15773 intsize='$intsize'
15774 ivdformat='$ivdformat'
15775 ivsize='$ivsize'
15776 ivtype='$ivtype'
15777 known_extensions='$known_extensions'
15778 ksh='$ksh'
15779 ld='$ld'
15780 lddlflags='$lddlflags'
15781 ldflags='$ldflags'
15782 ldflags_uselargefiles='$ldflags_uselargefiles'
15783 ldlibpthname='$ldlibpthname'
15784 less='$less'
15785 lib_ext='$lib_ext'
15786 libc='$libc'
15787 libperl='$libperl'
15788 libpth='$libpth'
15789 libs='$libs'
15790 libsdirs='$libsdirs'
15791 libsfiles='$libsfiles'
15792 libsfound='$libsfound'
15793 libspath='$libspath'
15794 libswanted='$libswanted'
15795 libswanted_uselargefiles='$libswanted_uselargefiles'
15796 line='$line'
15797 lint='$lint'
15798 lkflags='$lkflags'
15799 ln='$ln'
15800 lns='$lns'
15801 locincpth='$locincpth'
15802 loclibpth='$loclibpth'
15803 longdblsize='$longdblsize'
15804 longlongsize='$longlongsize'
15805 longsize='$longsize'
15806 lp='$lp'
15807 lpr='$lpr'
15808 ls='$ls'
15809 lseeksize='$lseeksize'
15810 lseektype='$lseektype'
15811 mail='$mail'
15812 mailx='$mailx'
15813 make='$make'
15814 make_set_make='$make_set_make'
15815 mallocobj='$mallocobj'
15816 mallocsrc='$mallocsrc'
15817 malloctype='$malloctype'
15818 man1dir='$man1dir'
15819 man1direxp='$man1direxp'
15820 man1ext='$man1ext'
15821 man3dir='$man3dir'
15822 man3direxp='$man3direxp'
15823 man3ext='$man3ext'
15824 mips_type='$mips_type'
15825 mkdir='$mkdir'
15826 mmaptype='$mmaptype'
15827 modetype='$modetype'
15828 more='$more'
15829 multiarch='$multiarch'
15830 mv='$mv'
15831 myarchname='$myarchname'
15832 mydomain='$mydomain'
15833 myhostname='$myhostname'
15834 myuname='$myuname'
15835 n='$n'
15836 netdb_hlen_type='$netdb_hlen_type'
15837 netdb_host_type='$netdb_host_type'
15838 netdb_name_type='$netdb_name_type'
15839 netdb_net_type='$netdb_net_type'
15840 nm='$nm'
15841 nm_opt='$nm_opt'
15842 nm_so_opt='$nm_so_opt'
15843 nonxs_ext='$nonxs_ext'
15844 nroff='$nroff'
15845 nvEUformat='$nvEUformat'
15846 nvFUformat='$nvFUformat'
15847 nvGUformat='$nvGUformat'
15848 nveformat='$nveformat'
15849 nvfformat='$nvfformat'
15850 nvgformat='$nvgformat'
15851 nvsize='$nvsize'
15852 nvtype='$nvtype'
15853 o_nonblock='$o_nonblock'
15854 obj_ext='$obj_ext'
15855 old_pthread_create_joinable='$old_pthread_create_joinable'
15856 optimize='$optimize'
15857 orderlib='$orderlib'
15858 osname='$osname'
15859 osvers='$osvers'
15860 otherlibdirs='$otherlibdirs'
15861 package='$package'
15862 pager='$pager'
15863 passcat='$passcat'
15864 patchlevel='$patchlevel'
15865 path_sep='$path_sep'
15866 perl5='$perl5'
15867 perl='$perl'
15868 perladmin='$perladmin'
15869 perllibs='$perllibs'
15870 perlpath='$perlpath'
15871 pg='$pg'
15872 phostname='$phostname'
15873 pidtype='$pidtype'
15874 plibpth='$plibpth'
15875 pm_apiversion='$pm_apiversion'
15876 pmake='$pmake'
15877 pr='$pr'
15878 prefix='$prefix'
15879 prefixexp='$prefixexp'
15880 privlib='$privlib'
15881 privlibexp='$privlibexp'
15882 prototype='$prototype'
15883 ptrsize='$ptrsize'
15884 quadkind='$quadkind'
15885 quadtype='$quadtype'
15886 randbits='$randbits'
15887 randfunc='$randfunc'
15888 randseedtype='$randseedtype'
15889 ranlib='$ranlib'
15890 rd_nodata='$rd_nodata'
15891 revision='$revision'
15892 rm='$rm'
15893 rmail='$rmail'
15894 runnm='$runnm'
15895 sPRIEUldbl='$sPRIEUldbl'
15896 sPRIFUldbl='$sPRIFUldbl'
15897 sPRIGUldbl='$sPRIGUldbl'
15898 sPRIXU64='$sPRIXU64'
15899 sPRId64='$sPRId64'
15900 sPRIeldbl='$sPRIeldbl'
15901 sPRIfldbl='$sPRIfldbl'
15902 sPRIgldbl='$sPRIgldbl'
15903 sPRIi64='$sPRIi64'
15904 sPRIo64='$sPRIo64'
15905 sPRIu64='$sPRIu64'
15906 sPRIx64='$sPRIx64'
15907 sSCNfldbl='$sSCNfldbl'
15908 sched_yield='$sched_yield'
15909 scriptdir='$scriptdir'
15910 scriptdirexp='$scriptdirexp'
15911 sed='$sed'
15912 seedfunc='$seedfunc'
15913 selectminbits='$selectminbits'
15914 selecttype='$selecttype'
15915 sendmail='$sendmail'
15916 sh='$sh'
15917 shar='$shar'
15918 sharpbang='$sharpbang'
15919 shmattype='$shmattype'
15920 shortsize='$shortsize'
15921 shrpenv='$shrpenv'
15922 shsharp='$shsharp'
15923 sig_count='$sig_count'
15924 sig_name='$sig_name'
15925 sig_name_init='$sig_name_init'
15926 sig_num='$sig_num'
15927 sig_num_init='$sig_num_init'
15928 signal_t='$signal_t'
15929 sitearch='$sitearch'
15930 sitearchexp='$sitearchexp'
15931 sitebin='$sitebin'
15932 sitebinexp='$sitebinexp'
15933 sitelib='$sitelib'
15934 sitelib_stem='$sitelib_stem'
15935 sitelibexp='$sitelibexp'
15936 siteprefix='$siteprefix'
15937 siteprefixexp='$siteprefixexp'
15938 sizesize='$sizesize'
15939 sizetype='$sizetype'
15940 sleep='$sleep'
15941 smail='$smail'
15942 so='$so'
15943 sockethdr='$sockethdr'
15944 socketlib='$socketlib'
15945 socksizetype='$socksizetype'
15946 sort='$sort'
15947 spackage='$spackage'
15948 spitshell='$spitshell'
15949 src='$src'
15950 ssizetype='$ssizetype'
15951 startperl='$startperl'
15952 startsh='$startsh'
15953 static_ext='$static_ext'
15954 stdchar='$stdchar'
15955 stdio_base='$stdio_base'
15956 stdio_bufsiz='$stdio_bufsiz'
15957 stdio_cnt='$stdio_cnt'
15958 stdio_filbuf='$stdio_filbuf'
15959 stdio_ptr='$stdio_ptr'
15960 stdio_stream_array='$stdio_stream_array'
15961 strings='$strings'
15962 submit='$submit'
15963 subversion='$subversion'
15964 sysman='$sysman'
15965 tail='$tail'
15966 tar='$tar'
15967 tbl='$tbl'
15968 tee='$tee'
15969 test='$test'
15970 timeincl='$timeincl'
15971 timetype='$timetype'
15972 touch='$touch'
15973 tr='$tr'
15974 trnl='$trnl'
15975 troff='$troff'
15976 u16size='$u16size'
15977 u16type='$u16type'
15978 u32size='$u32size'
15979 u32type='$u32type'
15980 u64size='$u64size'
15981 u64type='$u64type'
15982 u8size='$u8size'
15983 u8type='$u8type'
15984 uidformat='$uidformat'
15985 uidsign='$uidsign'
15986 uidsize='$uidsize'
15987 uidtype='$uidtype'
15988 uname='$uname'
15989 uniq='$uniq'
15990 uquadtype='$uquadtype'
15991 use5005threads='$use5005threads'
15992 use64bitall='$use64bitall'
15993 use64bitint='$use64bitint'
15994 usedl='$usedl'
15995 useithreads='$useithreads'
15996 uselargefiles='$uselargefiles'
15997 uselongdouble='$uselongdouble'
15998 usemorebits='$usemorebits'
15999 usemultiplicity='$usemultiplicity'
16000 usemymalloc='$usemymalloc'
16001 usenm='$usenm'
16002 useopcode='$useopcode'
16003 useperlio='$useperlio'
16004 useposix='$useposix'
16005 usesfio='$usesfio'
16006 useshrplib='$useshrplib'
16007 usesocks='$usesocks'
16008 usethreads='$usethreads'
16009 usevendorprefix='$usevendorprefix'
16010 usevfork='$usevfork'
16011 usrinc='$usrinc'
16012 uuname='$uuname'
16013 uvXUformat='$uvXUformat'
16014 uvoformat='$uvoformat'
16015 uvsize='$uvsize'
16016 uvtype='$uvtype'
16017 uvuformat='$uvuformat'
16018 uvxformat='$uvxformat'
16019 vendorarch='$vendorarch'
16020 vendorarchexp='$vendorarchexp'
16021 vendorbin='$vendorbin'
16022 vendorbinexp='$vendorbinexp'
16023 vendorlib='$vendorlib'
16024 vendorlib_stem='$vendorlib_stem'
16025 vendorlibexp='$vendorlibexp'
16026 vendorprefix='$vendorprefix'
16027 vendorprefixexp='$vendorprefixexp'
16028 version='$version'
16029 versiononly='$versiononly'
16030 vi='$vi'
16031 voidflags='$voidflags'
16032 xlibpth='$xlibpth'
16033 xs_apiversion='$xs_apiversion'
16034 zcat='$zcat'
16035 zip='$zip'
16036 EOT
16037
16038 : Add in command line options if available
16039 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16040
16041 : add special variables
16042 $test -f $src/patchlevel.h && \
16043 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16044 echo "CONFIGDOTSH=true" >>config.sh
16045
16046 : propagate old symbols
16047 if $test -f UU/config.sh; then
16048         <UU/config.sh sort | uniq >UU/oldconfig.sh
16049         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16050         sort | uniq -u >UU/oldsyms
16051         set X `cat UU/oldsyms`
16052         shift
16053         case $# in
16054         0) ;;
16055         *)
16056                 cat <<EOM
16057 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16058 EOM
16059                 echo "# Variables propagated from previous config.sh file." >>config.sh
16060                 for sym in `cat UU/oldsyms`; do
16061                         echo "    Propagating $hint variable "'$'"$sym..."
16062                         eval 'tmp="$'"${sym}"'"'
16063                         echo "$tmp" | \
16064                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16065                 done
16066                 ;;
16067         esac
16068 fi
16069
16070 : Finish up by extracting the .SH files
16071 case "$alldone" in
16072 exit)
16073         $rm -rf UU
16074         echo "Done."
16075         exit 0
16076         ;;
16077 cont)
16078         ;;
16079 '')
16080         dflt=''
16081         nostick=true
16082         $cat <<EOM
16083
16084 If you'd like to make any changes to the config.sh file before I begin
16085 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16086
16087 EOM
16088         rp="Press return or use a shell escape to edit config.sh:"
16089         . UU/myread
16090         nostick=''
16091         case "$ans" in
16092         '') ;;
16093         *) : in case they cannot read
16094                 sh 1>&4 -c "$ans";;
16095         esac
16096         ;;
16097 esac
16098
16099 : if this fails, just run all the .SH files by hand
16100 . ./config.sh
16101
16102 echo " "
16103 exec 1>&4
16104 . ./UU/extract
16105
16106 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16107         dflt=y
16108         case "$silent" in
16109         true) ;;
16110         *)
16111                 $cat <<EOM
16112
16113 Now you need to generate make dependencies by running "$make depend".
16114 You might prefer to run it in background: "$make depend > makedepend.out &"
16115 It can take a while, so you might not want to run it right now.
16116
16117 EOM
16118                 ;;
16119         esac
16120         rp="Run $make depend now?"
16121         . UU/myread
16122         case "$ans" in
16123         y*)
16124                 $make depend && echo "Now you must run '$make'."
16125                 ;;
16126         *)
16127                 echo "You must run '$make depend' then '$make'."
16128                 ;;
16129         esac
16130 elif test -f [Mm]akefile; then
16131         echo " "
16132         echo "Now you must run a $make."
16133 else
16134         echo "Done."
16135 fi
16136
16137 if $test -f Policy.sh; then
16138     $cat <<EOM
16139
16140 If you compile $package on a different machine or from a different object
16141 directory, copy the Policy.sh file from this object directory to the
16142 new one before you run Configure -- this will help you with most of
16143 the policy defaults.
16144
16145 EOM
16146 fi
16147 if $test -f config.msg; then
16148     echo "Hmm.  I also noted the following information while running:"
16149     echo " "
16150     $cat config.msg >&4
16151     $rm -f config.msg
16152 fi
16153 $rm -f kit*isdone ark*isdone
16154 $rm -rf UU
16155
16156 : End of Configure
16157