The entry for #7503 was missing.
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Wed Nov  1 16:26:50 EET 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_stdio_ptr_lval_nochange_cnt=''
540 d_stdio_ptr_lval_sets_cnt=''
541 d_stdiobase=''
542 d_stdstdio=''
543 stdio_base=''
544 stdio_bufsiz=''
545 stdio_cnt=''
546 stdio_filbuf=''
547 stdio_ptr=''
548 d_index=''
549 d_strchr=''
550 d_strcoll=''
551 d_strctcpy=''
552 d_strerrm=''
553 d_strerror=''
554 d_sysernlst=''
555 d_syserrlst=''
556 d_strtod=''
557 d_strtol=''
558 d_strtold=''
559 d_strtoll=''
560 d_strtoul=''
561 d_strtoull=''
562 d_strtouq=''
563 d_strxfrm=''
564 d_symlink=''
565 d_syscall=''
566 d_sysconf=''
567 d_system=''
568 d_tcgetpgrp=''
569 d_tcsetpgrp=''
570 d_telldirproto=''
571 d_time=''
572 timetype=''
573 clocktype=''
574 d_times=''
575 d_truncate=''
576 d_tzname=''
577 d_umask=''
578 d_semctl_semid_ds=''
579 d_semctl_semun=''
580 d_union_semun=''
581 d_ustat=''
582 d_vfork=''
583 usevfork=''
584 d_voidsig=''
585 signal_t=''
586 d_volatile=''
587 d_charvspr=''
588 d_vprintf=''
589 d_wait4=''
590 d_waitpid=''
591 d_wcstombs=''
592 d_wctomb=''
593 dlext=''
594 cccdlflags=''
595 ccdlflags=''
596 dlsrc=''
597 ld=''
598 lddlflags=''
599 usedl=''
600 doublesize=''
601 ebcdic=''
602 fflushNULL=''
603 fflushall=''
604 fpossize=''
605 fpostype=''
606 gccosandvers=''
607 gccversion=''
608 gidformat=''
609 gidsign=''
610 gidsize=''
611 gidtype=''
612 groupstype=''
613 h_fcntl=''
614 h_sysfile=''
615 i_arpainet=''
616 db_hashtype=''
617 db_prefixtype=''
618 i_db=''
619 i_dbm=''
620 i_rpcsvcdbm=''
621 d_dirnamlen=''
622 direntrytype=''
623 i_dirent=''
624 i_dld=''
625 i_dlfcn=''
626 i_fcntl=''
627 i_float=''
628 i_gdbm=''
629 d_grpasswd=''
630 i_grp=''
631 i_iconv=''
632 i_ieeefp=''
633 i_inttypes=''
634 i_libutil=''
635 i_limits=''
636 i_locale=''
637 i_machcthr=''
638 i_malloc=''
639 i_math=''
640 i_memory=''
641 i_mntent=''
642 i_ndbm=''
643 i_netdb=''
644 i_neterrno=''
645 i_netinettcp=''
646 i_niin=''
647 i_sysin=''
648 i_poll=''
649 i_prot=''
650 i_pthread=''
651 d_pwage=''
652 d_pwchange=''
653 d_pwclass=''
654 d_pwcomment=''
655 d_pwexpire=''
656 d_pwgecos=''
657 d_pwpasswd=''
658 d_pwquota=''
659 i_pwd=''
660 i_sfio=''
661 i_shadow=''
662 i_socks=''
663 i_stddef=''
664 i_stdlib=''
665 i_string=''
666 strings=''
667 i_sunmath=''
668 i_sysaccess=''
669 i_sysdir=''
670 i_sysfile=''
671 d_voidtty=''
672 i_bsdioctl=''
673 i_sysfilio=''
674 i_sysioctl=''
675 i_syssockio=''
676 i_syslog=''
677 i_sysmman=''
678 i_sysmode=''
679 i_sysmount=''
680 i_sysndir=''
681 i_sysparam=''
682 i_sysresrc=''
683 i_syssecrt=''
684 i_sysselct=''
685 i_sysstat=''
686 i_sysstatfs=''
687 i_sysstatvfs=''
688 i_systimes=''
689 i_systypes=''
690 i_sysuio=''
691 i_sysun=''
692 i_sysutsname=''
693 i_sysvfs=''
694 i_syswait=''
695 i_sgtty=''
696 i_termio=''
697 i_termios=''
698 i_systime=''
699 i_systimek=''
700 i_time=''
701 timeincl=''
702 i_unistd=''
703 i_ustat=''
704 i_utime=''
705 i_values=''
706 i_stdarg=''
707 i_varargs=''
708 i_varhdr=''
709 i_vfork=''
710 inc_version_list=''
711 inc_version_list_init=''
712 installprefix=''
713 installprefixexp=''
714 installstyle=''
715 installusrbinperl=''
716 intsize=''
717 longsize=''
718 shortsize=''
719 libc=''
720 ldlibpthname=''
721 libperl=''
722 shrpenv=''
723 useshrplib=''
724 glibpth=''
725 libpth=''
726 loclibpth=''
727 plibpth=''
728 xlibpth=''
729 ignore_versioned_solibs=''
730 libs=''
731 libsdirs=''
732 libsfiles=''
733 libsfound=''
734 libspath=''
735 lns=''
736 d_PRIEUldbl=''
737 d_PRIFUldbl=''
738 d_PRIGUldbl=''
739 d_PRIeldbl=''
740 d_PRIfldbl=''
741 d_PRIgldbl=''
742 d_SCNfldbl=''
743 sPRIEUldbl=''
744 sPRIFUldbl=''
745 sPRIGUldbl=''
746 sPRIeldbl=''
747 sPRIfldbl=''
748 sPRIgldbl=''
749 sSCNfldbl=''
750 lseeksize=''
751 lseektype=''
752 make_set_make=''
753 d_mymalloc=''
754 freetype=''
755 mallocobj=''
756 mallocsrc=''
757 malloctype=''
758 usemymalloc=''
759 installman1dir=''
760 man1dir=''
761 man1direxp=''
762 man1ext=''
763 installman3dir=''
764 man3dir=''
765 man3direxp=''
766 man3ext=''
767 modetype=''
768 multiarch=''
769 mydomain=''
770 myhostname=''
771 phostname=''
772 c=''
773 n=''
774 d_eofnblk=''
775 eagain=''
776 o_nonblock=''
777 rd_nodata=''
778 netdb_hlen_type=''
779 netdb_host_type=''
780 netdb_name_type=''
781 netdb_net_type=''
782 groupcat=''
783 hostcat=''
784 passcat=''
785 orderlib=''
786 ranlib=''
787 d_perl_otherlibdirs=''
788 otherlibdirs=''
789 package=''
790 spackage=''
791 pager=''
792 api_revision=''
793 api_subversion=''
794 api_version=''
795 api_versionstring=''
796 patchlevel=''
797 revision=''
798 subversion=''
799 version=''
800 perl5=''
801 perladmin=''
802 perlpath=''
803 d_nv_preserves_uv=''
804 d_nv_preserves_uv_bits=''
805 i16size=''
806 i16type=''
807 i32size=''
808 i32type=''
809 i64size=''
810 i64type=''
811 i8size=''
812 i8type=''
813 ivsize=''
814 ivtype=''
815 nvsize=''
816 nvtype=''
817 u16size=''
818 u16type=''
819 u32size=''
820 u32type=''
821 u64size=''
822 u64type=''
823 u8size=''
824 u8type=''
825 uvsize=''
826 uvtype=''
827 ivdformat=''
828 nvEUformat=''
829 nvFUformat=''
830 nvGUformat=''
831 nveformat=''
832 nvfformat=''
833 nvgformat=''
834 uvXUformat=''
835 uvoformat=''
836 uvuformat=''
837 uvxformat=''
838 pidtype=''
839 prefix=''
840 prefixexp=''
841 installprivlib=''
842 privlib=''
843 privlibexp=''
844 prototype=''
845 ptrsize=''
846 d_PRIXU64=''
847 d_PRId64=''
848 d_PRIi64=''
849 d_PRIo64=''
850 d_PRIu64=''
851 d_PRIx64=''
852 sPRIXU64=''
853 sPRId64=''
854 sPRIi64=''
855 sPRIo64=''
856 sPRIu64=''
857 sPRIx64=''
858 d_quad=''
859 quadkind=''
860 quadtype=''
861 uquadtype=''
862 drand01=''
863 randbits=''
864 randfunc=''
865 randseedtype=''
866 seedfunc=''
867 installscript=''
868 scriptdir=''
869 scriptdirexp=''
870 selectminbits=''
871 selecttype=''
872 sh=''
873 sig_count=''
874 sig_name=''
875 sig_name_init=''
876 sig_num=''
877 sig_num_init=''
878 installsitearch=''
879 sitearch=''
880 sitearchexp=''
881 installsitebin=''
882 sitebin=''
883 sitebinexp=''
884 installsitelib=''
885 sitelib=''
886 sitelib_stem=''
887 sitelibexp=''
888 siteprefix=''
889 siteprefixexp=''
890 sizesize=''
891 sizetype=''
892 so=''
893 socksizetype=''
894 sharpbang=''
895 shsharp=''
896 spitshell=''
897 src=''
898 ssizetype=''
899 startperl=''
900 startsh=''
901 stdchar=''
902 d_stdio_stream_array=''
903 stdio_stream_array=''
904 sysman=''
905 trnl=''
906 uidformat=''
907 uidsign=''
908 uidsize=''
909 uidtype=''
910 archname64=''
911 use64bitall=''
912 use64bitint=''
913 ccflags_uselargefiles=''
914 ldflags_uselargefiles=''
915 libswanted_uselargefiles=''
916 uselargefiles=''
917 uselongdouble=''
918 usemorebits=''
919 usemultiplicity=''
920 nm_opt=''
921 nm_so_opt=''
922 runnm=''
923 usenm=''
924 useperlio=''
925 usesocks=''
926 d_oldpthreads=''
927 use5005threads=''
928 useithreads=''
929 usethreads=''
930 incpath=''
931 mips_type=''
932 usrinc=''
933 d_vendorarch=''
934 installvendorarch=''
935 vendorarch=''
936 vendorarchexp=''
937 d_vendorbin=''
938 installvendorbin=''
939 vendorbin=''
940 vendorbinexp=''
941 d_vendorlib=''
942 installvendorlib=''
943 vendorlib=''
944 vendorlib_stem=''
945 vendorlibexp=''
946 usevendorprefix=''
947 vendorprefix=''
948 vendorprefixexp=''
949 versiononly=''
950 defvoidused=''
951 voidflags=''
952 pm_apiversion=''
953 xs_apiversion=''
954 CONFIG=''
955
956 define='define'
957 undef='undef'
958 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
959 rmlist=''
960
961 : We must find out about Eunice early
962 eunicefix=':'
963 if test -f /etc/unixtovms; then
964         eunicefix=/etc/unixtovms
965 fi
966 if test -f /etc/unixtovms.exe; then
967         eunicefix=/etc/unixtovms.exe
968 fi
969
970 i_whoami=''
971 ccname=''
972 ccversion=''
973 perllibs=''
974 : set useposix=false in your hint file to disable the POSIX extension.
975 useposix=true
976 : set useopcode=false in your hint file to disable the Opcode extension.
977 useopcode=true
978 : Trailing extension.  Override this in a hint file, if needed.
979 _exe=''
980 : Extra object files, if any, needed on this platform.
981 archobjs=''
982 archname=''
983 : Possible local include directories to search.
984 : Set locincpth to "" in a hint file to defeat local include searches.
985 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
986 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
987 :
988 : no include file wanted by default
989 inclwanted=''
990
991 groupstype=''
992 : change the next line if compiling for Xenix/286 on Xenix/386
993 xlibpth='/usr/lib/386 /lib/386'
994 : Possible local library directories to search.
995 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
996 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
997
998 : general looking path for locating libraries
999 glibpth="/lib /usr/lib $xlibpth"
1000 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1001 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1002 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1003
1004 : Private path used by Configure to find libraries.  Its value
1005 : is prepended to libpth. This variable takes care of special
1006 : machines, like the mips.  Usually, it should be empty.
1007 plibpth=''
1008
1009 : default library list
1010 libswanted=''
1011 : some systems want to use only the non-versioned libso:s
1012 ignore_versioned_solibs=''
1013 archname64=''
1014 ccflags_uselargefiles=''
1015 ldflags_uselargefiles=''
1016 libswanted_uselargefiles=''
1017 : set usemultiplicity on the Configure command line to enable multiplicity.
1018 : set usesocks on the Configure command line to enable socks.
1019 : set usethreads on the Configure command line to enable threads.
1020 : full support for void wanted by default
1021 defvoidused=15
1022
1023 : List of libraries we want.
1024 : If anyone needs -lnet, put it in a hint file.
1025 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1026 libswanted="$libswanted dld ld sun m c cposix posix"
1027 libswanted="$libswanted ndir dir crypt sec"
1028 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1029 : We probably want to search /usr/shlib before most other libraries.
1030 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1031 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1032 glibpth="/usr/shlib $glibpth"
1033 : Do not use vfork unless overridden by a hint file.
1034 usevfork=false
1035
1036 : Find the basic shell for Bourne shell scripts
1037 case "$sh" in
1038 '')
1039         case "$SYSTYPE" in
1040         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1041         *) xxx='/bin/sh';;
1042         esac
1043         if test -f "$xxx"; then
1044                 sh="$xxx"
1045         else
1046                 : Build up a list and do a single loop so we can 'break' out.
1047                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1048                 for xxx in sh bash ksh pdksh ash; do
1049                         for p in $pth; do
1050                                 try="$try ${p}/${xxx}"
1051                         done
1052                 done
1053                 for xxx in $try; do
1054                         if test -f "$xxx"; then
1055                                 sh="$xxx";
1056                                 break
1057                         elif test -f "$xxx.exe"; then
1058                                 sh="$xxx";
1059                                 break
1060                         fi
1061                 done
1062         fi
1063         ;;
1064 esac
1065
1066 case "$sh" in
1067 '')     cat <<EOM >&2
1068 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1069
1070 Usually it's in /bin/sh.  How did you even get this far?
1071 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1072 we'll try to straighten this all out.
1073 EOM
1074         exit 1
1075         ;;
1076 esac
1077
1078 : see if sh knows # comments
1079 if `$sh -c '#' >/dev/null 2>&1`; then
1080         shsharp=true
1081         spitshell=cat
1082         xcat=/bin/cat
1083         test -f $xcat || xcat=/usr/bin/cat
1084         echo "#!$xcat" >try
1085         $eunicefix try
1086         chmod +x try
1087         ./try > today
1088         if test -s today; then
1089                 sharpbang='#!'
1090         else
1091                 echo "#! $xcat" > try
1092                 $eunicefix try
1093                 chmod +x try
1094                 ./try > today
1095                 if test -s today; then
1096                         sharpbang='#! '
1097                 else
1098                         sharpbang=': use '
1099                 fi
1100         fi
1101 else
1102         echo " "
1103         echo "Your $sh doesn't grok # comments--I will strip them later on."
1104         shsharp=false
1105         cd ..
1106         echo "exec grep -v '^[  ]*#'" >spitshell
1107         chmod +x spitshell
1108         $eunicefix spitshell
1109         spitshell=`pwd`/spitshell
1110         cd UU
1111         echo "I presume that if # doesn't work, #! won't work either!"
1112         sharpbang=': use '
1113 fi
1114 rm -f try today
1115
1116 : figure out how to guarantee sh startup
1117 case "$startsh" in
1118 '') startsh=${sharpbang}${sh} ;;
1119 *)
1120 esac
1121 cat >try <<EOSS
1122 $startsh
1123 set abc
1124 test "$?abc" != 1
1125 EOSS
1126
1127 chmod +x try
1128 $eunicefix try
1129 if ./try; then
1130         : echo "Yup, it does."
1131 else
1132         echo "Hmm... '$startsh' does not guarantee sh startup..."
1133         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1134 fi
1135 rm -f try
1136
1137
1138 : Save command line options in file UU/cmdline.opt for later use in
1139 : generating config.sh.
1140 cat > cmdline.opt <<EOSH
1141 # Configure command line arguments.
1142 config_arg0='$0'
1143 config_args='$*'
1144 config_argc=$#
1145 EOSH
1146 argn=1
1147 for arg in "$@"; do
1148         cat >>cmdline.opt <<EOSH
1149 config_arg$argn='$arg'
1150 EOSH
1151         argn=`expr $argn + 1`
1152 done
1153
1154 : produce awk script to parse command line options
1155 cat >options.awk <<'EOF'
1156 BEGIN {
1157         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1158
1159         len = length(optstr);
1160         for (i = 1; i <= len; i++) {
1161                 c = substr(optstr, i, 1);
1162                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1163                 if (a == ":") {
1164                         arg[c] = 1;
1165                         i++;
1166                 }
1167                 opt[c] = 1;
1168         }
1169 }
1170 {
1171         expect = 0;
1172         str = $0;
1173         if (substr(str, 1, 1) != "-") {
1174                 printf("'%s'\n", str);
1175                 next;
1176         }
1177         len = length($0);
1178         for (i = 2; i <= len; i++) {
1179                 c = substr(str, i, 1);
1180                 if (!opt[c]) {
1181                         printf("-%s\n", substr(str, i));
1182                         next;
1183                 }
1184                 printf("-%s\n", c);
1185                 if (arg[c]) {
1186                         if (i < len)
1187                                 printf("'%s'\n", substr(str, i + 1));
1188                         else
1189                                 expect = 1;
1190                         next;
1191                 }
1192         }
1193 }
1194 END {
1195         if (expect)
1196                 print "?";
1197 }
1198 EOF
1199
1200 : process the command line options
1201 set X `for arg in "$@"; do echo "X$arg"; done |
1202         sed -e s/X// | awk -f options.awk`
1203 eval "set $*"
1204 shift
1205 rm -f options.awk
1206
1207 : set up default values
1208 fastread=''
1209 reuseval=false
1210 config_sh=''
1211 alldone=''
1212 error=''
1213 silent=''
1214 extractsh=''
1215 override=''
1216 knowitall=''
1217 rm -f optdef.sh posthint.sh
1218 cat >optdef.sh <<EOS
1219 $startsh
1220 EOS
1221
1222
1223 : option parsing
1224 while test $# -gt 0; do
1225         case "$1" in
1226         -d) shift; fastread=yes;;
1227         -e) shift; alldone=cont;;
1228         -f)
1229                 shift
1230                 cd ..
1231                 if test -r "$1"; then
1232                         config_sh="$1"
1233                 else
1234                         echo "$me: cannot read config file $1." >&2
1235                         error=true
1236                 fi
1237                 cd UU
1238                 shift;;
1239         -h) shift; error=true;;
1240         -r) shift; reuseval=true;;
1241         -s) shift; silent=true; realsilent=true;;
1242         -E) shift; alldone=exit;;
1243         -K) shift; knowitall=true;;
1244         -O) shift; override=true;;
1245         -S) shift; silent=true; extractsh=true;;
1246         -D)
1247                 shift
1248                 case "$1" in
1249                 *=)
1250                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1251                         echo "$me: ignoring -D $1" >&2
1252                         ;;
1253                 *=*) echo "$1" | \
1254                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1255                 *) echo "$1='define'" >> optdef.sh;;
1256                 esac
1257                 shift
1258                 ;;
1259         -U)
1260                 shift
1261                 case "$1" in
1262                 *=) echo "$1" >> optdef.sh;;
1263                 *=*)
1264                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1265                         echo "$me: ignoring -U $1" >&2
1266                         ;;
1267                 *) echo "$1='undef'" >> optdef.sh;;
1268                 esac
1269                 shift
1270                 ;;
1271         -A)
1272             shift
1273             xxx=''
1274             yyy="$1"
1275             zzz=''
1276             uuu=undef
1277             case "$yyy" in
1278             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1279                  case "$zzz" in
1280                  *:*) zzz='' ;;
1281                  *)   xxx=append
1282                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1283                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1284                  esac
1285                  ;;
1286             esac
1287             case "$xxx" in
1288             '')  case "$yyy" in
1289                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1290                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1291                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1292                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1293                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1294                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1295                  esac
1296                  ;;       
1297             esac
1298             case "$xxx" in
1299             append)
1300                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1301             clear)
1302                 echo "$yyy=''"                  >> posthint.sh ;;
1303             define)
1304                 case "$zzz" in
1305                 '') zzz=define ;;
1306                 esac
1307                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1308             eval)
1309                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1310             prepend)
1311                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1312             undef)
1313                 case "$zzz" in
1314                 '') zzz="$uuu" ;;
1315                 esac
1316                 echo "$yyy=$zzz"                >> posthint.sh ;;
1317             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1318             esac
1319             shift
1320             ;;
1321         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1322             exit 0;;
1323         --) break;;
1324         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1325         *) break;;
1326         esac
1327 done
1328
1329 case "$error" in
1330 true)
1331         cat >&2 <<EOM
1332 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1333                  [-U symbol] [-U symbol=] [-A command:symbol...]
1334   -d : use defaults for all answers.
1335   -e : go on without questioning past the production of config.sh.
1336   -f : specify an alternate default configuration file.
1337   -h : print this help message and exit (with an error status).
1338   -r : reuse C symbols value if possible (skips costly nm extraction).
1339   -s : silent mode, only echoes questions and essential information.
1340   -D : define symbol to have some value:
1341          -D symbol         symbol gets the value 'define'
1342          -D symbol=value   symbol gets the value 'value'
1343   -E : stop at the end of questions, after having produced config.sh.
1344   -K : do not use unless you know what you are doing.
1345   -O : let -D and -U override definitions from loaded configuration file.
1346   -S : perform variable substitutions on all .SH files (can mix with -f)
1347   -U : undefine symbol:
1348          -U symbol    symbol gets the value 'undef'
1349          -U symbol=   symbol gets completely empty
1350   -A : manipulate symbol after the platform specific hints have been applied:
1351          -A symbol=value                append " "value to symbol
1352          -A append:symbol=value         append value to symbol
1353          -A define:symbol=value         define symbol to have value
1354          -A clear:symbol                define symbol to be ''
1355          -A define:symbol               define symbol to be 'define'
1356          -A eval:symbol=value           define symbol to be eval of value
1357          -A prepend:symbol=value        prepend value to symbol
1358          -A undef:symbol                define symbol to be 'undef'
1359          -A undef:symbol=               define symbol to be ''
1360   -V : print version number and exit (with a zero status).
1361 EOM
1362         exit 1
1363         ;;
1364 esac
1365
1366 : Sanity checks
1367 case "$fastread$alldone" in
1368 yescont|yesexit) ;;
1369 *)
1370         case "$extractsh" in
1371         true) ;;
1372         *)
1373                 if test ! -t 0; then
1374                         echo "Say 'sh Configure', not 'sh <Configure'"
1375                         exit 1
1376                 fi
1377                 ;;
1378         esac
1379         ;;
1380 esac
1381
1382 exec 4>&1
1383 case "$silent" in
1384 true) exec 1>/dev/null;;
1385 esac
1386
1387 : run the defines and the undefines, if any, but leave the file out there...
1388 touch optdef.sh
1389 . ./optdef.sh
1390 : create the posthint manipulation script and leave the file out there...
1391 touch posthint.sh
1392
1393 : set package name
1394 package=perl5
1395 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1396 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1397 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1398 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1399 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1400 esac
1401
1402 : Some greps do not return status, grrr.
1403 echo "grimblepritz" >grimble
1404 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1405         contains=contains
1406 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1407         contains=grep
1408 else
1409         contains=contains
1410 fi
1411 rm -f grimble
1412 : the following should work in any shell
1413 case "$contains" in
1414 contains*)
1415         echo " "
1416         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1417         cat >contains <<'EOSS'
1418 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1419 EOSS
1420 chmod +x contains
1421 esac
1422
1423 : Find the path to the source tree
1424 case "$src" in
1425 '') case "$0" in
1426     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1427          case "$src" in
1428          /*)    ;;
1429          *)     src=`cd ../$src && pwd` ;;
1430          esac
1431          ;;
1432     *)   src='.';;
1433     esac;;
1434 esac
1435 case "$src" in
1436 '')     src=/
1437         rsrc=/
1438         ;;
1439 /*) rsrc="$src";;
1440 *) rsrc="../$src";;
1441 esac
1442 if test -f $rsrc/Configure && \
1443         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1444 then
1445    : found it, so we are ok.
1446 else
1447         rsrc=''
1448         for src in . .. ../.. ../../.. ../../../..; do
1449                 if test -f ../$src/Configure && \
1450                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1451                 then
1452                         rsrc=../$src
1453                         break
1454                 fi
1455         done
1456 fi
1457 case "$rsrc" in
1458 '')
1459         cat <<EOM >&4
1460
1461 Sorry, I can't seem to locate the source dir for $package.  Please start
1462 Configure with an explicit path -- i.e. /some/path/Configure.
1463
1464 EOM
1465         exit 1
1466         ;;
1467 ../.)   rsrc='..';;
1468 *)
1469         echo " "
1470         echo "Sources for $package found in \"$src\"." >&4
1471         ;;
1472 esac
1473
1474 : script used to extract .SH files with variable substitutions
1475 cat >extract <<'EOS'
1476 CONFIGDOTSH=true
1477 echo "Doing variable substitutions on .SH files..."
1478 if test -f $src/MANIFEST; then
1479         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1480 else
1481         echo "(Looking for .SH files under the source directory.)"
1482         set x `(cd $src; find . -name "*.SH" -print)`
1483 fi
1484 shift
1485 case $# in
1486 0) set x `(cd $src; echo *.SH)`; shift;;
1487 esac
1488 if test ! -f $src/$1; then
1489         shift
1490 fi
1491 mkdir_p='
1492 name=$1;
1493 create="";
1494 while test $name; do
1495         if test ! -d "$name"; then
1496                 create="$name $create";
1497                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1498                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1499         else
1500                 name="";
1501         fi;
1502 done;
1503 for file in $create; do
1504         mkdir $file;
1505 done
1506 '
1507 for file in $*; do
1508         case "$src" in
1509         ".")
1510                 case "$file" in
1511                 */*)
1512                         dir=`expr X$file : 'X\(.*\)/'`
1513                         file=`expr X$file : 'X.*/\(.*\)'`
1514                         (cd $dir && . ./$file)
1515                         ;;
1516                 *)
1517                         . ./$file
1518                         ;;
1519                 esac
1520                 ;;
1521         *)
1522                 case "$file" in
1523                 */*)
1524                         dir=`expr X$file : 'X\(.*\)/'`
1525                         file=`expr X$file : 'X.*/\(.*\)'`
1526                         (set x $dir; shift; eval $mkdir_p)
1527                         sh <$src/$dir/$file
1528                         ;;
1529                 *)
1530                         sh <$src/$file
1531                         ;;
1532                 esac
1533                 ;;
1534         esac
1535 done
1536 if test -f $src/config_h.SH; then
1537         if test ! -f config.h; then
1538         : oops, they left it out of MANIFEST, probably, so do it anyway.
1539         . $src/config_h.SH
1540         fi
1541 fi
1542 EOS
1543
1544 : extract files and exit if asked to do so
1545 case "$extractsh" in
1546 true)
1547         case "$realsilent" in
1548         true) ;;
1549         *) exec 1>&4;;
1550         esac
1551         case "$config_sh" in
1552         '') config_sh='config.sh';;
1553         esac
1554         echo " "
1555         echo "Fetching answers from $config_sh..."
1556         cd ..
1557         . $config_sh
1558         test "$override" && . ./optdef.sh
1559         echo " "
1560         . UU/extract
1561         rm -rf UU
1562         echo "Done."
1563         exit 0
1564         ;;
1565 esac
1566
1567 : Eunice requires " " instead of "", can you believe it
1568 echo " "
1569 : Here we go...
1570 echo "Beginning of configuration questions for $package."
1571
1572 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1573
1574 : first determine how to suppress newline on echo command
1575 echo " "
1576 echo "Checking echo to see how to suppress newlines..."
1577 (echo "hi there\c" ; echo " ") >.echotmp
1578 if $contains c .echotmp >/dev/null 2>&1 ; then
1579         echo "...using -n."
1580         n='-n'
1581         c=''
1582 else
1583         cat <<'EOM'
1584 ...using \c
1585 EOM
1586         n=''
1587         c='\c'
1588 fi
1589 echo $n "The star should be here-->$c"
1590 echo '*'
1591 rm -f .echotmp
1592
1593 : Now test for existence of everything in MANIFEST
1594 echo " "
1595 if test -f $rsrc/MANIFEST; then
1596         echo "First let's make sure your kit is complete.  Checking..." >&4
1597         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1598         rm -f missing
1599         tmppwd=`pwd`
1600         for filelist in x??; do
1601                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1602         done
1603         if test -s missing; then
1604                 cat missing >&4
1605                 cat >&4 <<'EOM'
1606
1607 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1608
1609 You have the option of continuing the configuration process, despite the
1610 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1611 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1612 and contact the author (perlbug@perl.org).
1613
1614 EOM
1615                 echo $n "Continue? [n] $c" >&4
1616                 read ans
1617                 case "$ans" in
1618                 y*)
1619                         echo "Continuing..." >&4
1620                         rm -f missing
1621                         ;;
1622                 *)
1623                         echo "ABORTING..." >&4
1624                         kill $$
1625                         ;;
1626                 esac
1627         else
1628                 echo "Looks good..."
1629         fi
1630 else
1631         echo "There is no MANIFEST file.  I hope your kit is complete !"
1632 fi
1633 rm -f missing x??
1634
1635 echo " "
1636 : Find the appropriate value for a newline for tr
1637 if test -n "$DJGPP"; then
1638        trnl='\012'
1639 fi
1640 if test X"$trnl" = X; then
1641         case "`echo foo|tr '\n' x 2>/dev/null`" in
1642         foox) trnl='\n' ;;
1643         esac
1644 fi
1645 if test X"$trnl" = X; then
1646         case "`echo foo|tr '\012' x 2>/dev/null`" in
1647         foox) trnl='\012' ;;
1648         esac
1649 fi
1650 if test X"$trnl" = X; then
1651         cat <<EOM >&2
1652
1653 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1654
1655 EOM
1656         exit 1
1657 fi
1658
1659 : compute the number of columns on the terminal for proper question formatting
1660 case "$COLUMNS" in
1661 '') COLUMNS='80';;
1662 esac
1663
1664 : set up the echo used in my read
1665 myecho="case \"\$xxxm\" in
1666 '') echo $n \"\$rp $c\" >&4;;
1667 *) case \"\$rp\" in
1668         '') echo $n \"[\$xxxm] $c\";;
1669         *)
1670                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1671                         echo \"\$rp\" >&4
1672                         echo $n \"[\$xxxm] $c\" >&4
1673                 else
1674                         echo $n \"\$rp [\$xxxm] $c\" >&4
1675                 fi
1676                 ;;
1677         esac;;
1678 esac"
1679
1680 : now set up to do reads with possible shell escape and default assignment
1681 cat <<EOSC >myread
1682 $startsh
1683 xxxm=\$dflt
1684 $myecho
1685 ans='!'
1686 case "\$fastread" in
1687 yes) case "\$dflt" in
1688         '') ;;
1689         *) ans='';
1690                 case "\$silent-\$rp" in
1691                 true-) ;;
1692                 *) echo " " >&4;;
1693                 esac;;
1694         esac;;
1695 *) case "\$silent" in
1696         true) case "\$rp" in
1697                 '') ans='';;
1698                 esac;;
1699         esac;;
1700 esac
1701 while expr "X\$ans" : "X!" >/dev/null; do
1702         read answ
1703         set x \$xxxm
1704         shift
1705         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1706         case  "\$answ" in
1707         "!")
1708                 sh 1>&4
1709                 echo " "
1710                 $myecho
1711                 ;;
1712         !*)
1713                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1714                 shift
1715                 sh 1>&4 -c "\$*"
1716                 echo " "
1717                 $myecho
1718                 ;;
1719         "\$ans")
1720                 case "\$ans" in
1721                 \\&*)
1722                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1723                         shift
1724                         case "\$1" in
1725                         -d)
1726                                 fastread=yes
1727                                 echo "(OK, I'll run with -d after this question.)" >&4
1728                                 ;;
1729                         -*)
1730                                 echo "*** Sorry, \$1 not supported yet." >&4
1731                                 ;;
1732                         esac
1733                         $myecho
1734                         ans=!
1735                         ;;
1736                 esac;;
1737         *)
1738                 case "\$aok" in
1739                 y)
1740                         echo "*** Substitution done -- please confirm."
1741                         xxxm="\$ans"
1742                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1743                         xxxm="\$ans"
1744                         ans=!
1745                         ;;
1746                 *)
1747                         echo "*** Error -- try again."
1748                         ans=!
1749                         ;;
1750                 esac
1751                 $myecho
1752                 ;;
1753         esac
1754         case "\$ans\$xxxm\$nostick" in
1755         '')
1756                 ans=!
1757                 $myecho
1758                 ;;
1759         esac
1760 done
1761 case "\$ans" in
1762 '') ans="\$xxxm";;
1763 esac
1764 EOSC
1765
1766 : create .config dir to save info across Configure sessions
1767 test -d ../.config || mkdir ../.config
1768 cat >../.config/README <<EOF
1769 This directory created by Configure to save information that should
1770 persist across sessions for $package.
1771
1772 You may safely delete it if you wish.
1773 EOF
1774
1775 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1776 case "$usedevel" in
1777 $define|true|[yY]*) ;;
1778 *) case "$xversion" in
1779    *[13579])
1780         cat >&4 <<EOH
1781 *** WHOA THERE!!! ***
1782
1783     This is an UNSTABLE DEVELOPMENT release.
1784     The version of this $package distribution is $xversion, that is, odd,
1785     (as opposed to even) and that signifies a development release.
1786     If you want a maintenance release, you want an even-numbered version.
1787
1788     Do ***NOT*** install this into production use.
1789     Data corruption and crashes are possible.
1790
1791     It is most seriously suggested that you do not continue any further
1792     unless you want to help in developing and debugging Perl.
1793
1794 EOH
1795         rp='Do you really want to continue?'
1796         dflt='n'
1797         . ./myread
1798         case "$ans" in
1799         [yY]) echo >&4 "Okay, continuing." ;;
1800         *) echo >&4 "Okay, bye."
1801            exit 1
1802            ;;
1803         esac
1804         ;;
1805     esac
1806     ;;
1807 esac
1808
1809 : general instructions
1810 needman=true
1811 firsttime=true
1812 user=`(logname) 2>/dev/null`
1813 case "$user" in
1814 '') user=`whoami 2>&1`;;
1815 esac
1816 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1817         firsttime=false
1818         echo " "
1819         rp='Would you like to see the instructions?'
1820         dflt=n
1821         . ./myread
1822         case "$ans" in
1823         [yY]*) ;;
1824         *) needman=false;;
1825         esac
1826 fi
1827 if $needman; then
1828         cat <<EOH
1829
1830 This installation shell script will examine your system and ask you questions
1831 to determine how the perl5 package should be installed. If you get
1832 stuck on a question, you may use a ! shell escape to start a subshell or
1833 execute a command.  Many of the questions will have default answers in square
1834 brackets; typing carriage return will give you the default.
1835
1836 On some of the questions which ask for file or directory names you are allowed
1837 to use the ~name construct to specify the login directory belonging to "name",
1838 even if you don't have a shell which knows about that.  Questions where this is
1839 allowed will be marked "(~name ok)".
1840
1841 EOH
1842         rp=''
1843         dflt='Type carriage return to continue'
1844         . ./myread
1845         cat <<'EOH'
1846
1847 The prompter used in this script allows you to use shell variables and
1848 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1849 in the default answer, as if the default line was a set of arguments given to a
1850 script shell.  This means you may also use $* to repeat the whole default line,
1851 so you do not have to re-type everything to add something to the default.
1852
1853 Everytime there is a substitution, you will have to confirm.  If there is an
1854 error (e.g. an unmatched backtick), the default answer will remain unchanged
1855 and you will be prompted again.
1856
1857 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1858 the questions and use the computed defaults (or the previous answers if there
1859 was already a config.sh file). Type 'Configure -h' for a list of options.
1860 You may also start interactively and then answer '& -d' at any prompt to turn
1861 on the non-interactive behaviour for the remainder of the execution.
1862
1863 EOH
1864         . ./myread
1865         cat <<EOH
1866
1867 Much effort has been expended to ensure that this shell script will run on any
1868 Unix system.  If despite that it blows up on yours, your best bet is to edit
1869 Configure and run it again.  If you can't run Configure for some reason,
1870 you'll have to generate a config.sh file by hand.  Whatever problems you
1871 have, let me (perlbug@perl.org) know how I blew it.
1872
1873 This installation script affects things in two ways:
1874
1875 1) it may do direct variable substitutions on some of the files included
1876    in this kit.
1877 2) it builds a config.h file for inclusion in C programs.  You may edit
1878    any of these files as the need arises after running this script.
1879
1880 If you make a mistake on a question, there is no easy way to back up to it
1881 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1882 files.  Configure will offer to let you do this before it runs the SH files.
1883
1884 EOH
1885         dflt='Type carriage return to continue'
1886         . ./myread
1887         case "$firsttime" in
1888         true) echo $user >>../.config/instruct;;
1889         esac
1890 fi
1891
1892 : find out where common programs are
1893 echo " "
1894 echo "Locating common programs..." >&4
1895 cat <<EOSC >loc
1896 $startsh
1897 case \$# in
1898 0) exit 1;;
1899 esac
1900 thing=\$1
1901 shift
1902 dflt=\$1
1903 shift
1904 for dir in \$*; do
1905         case "\$thing" in
1906         .)
1907         if test -d \$dir/\$thing; then
1908                 echo \$dir
1909                 exit 0
1910         fi
1911         ;;
1912         *)
1913         for thisthing in \$dir/\$thing; do
1914                 : just loop through to pick last item
1915         done
1916         if test -f \$thisthing; then
1917                 echo \$thisthing
1918                 exit 0
1919         elif test -f \$dir/\$thing.exe; then
1920                 if test -n "$DJGPP"; then
1921                         echo \$dir/\$thing.exe
1922                 else
1923                         : on Eunice apparently
1924                         echo \$dir/\$thing
1925                 fi
1926                 exit 0
1927         fi
1928         ;;
1929         esac
1930 done
1931 echo \$dflt
1932 exit 1
1933 EOSC
1934 chmod +x loc
1935 $eunicefix loc
1936 loclist="
1937 awk
1938 cat
1939 comm
1940 cp
1941 echo
1942 expr
1943 grep
1944 ls
1945 make
1946 mkdir
1947 rm
1948 sed
1949 sort
1950 touch
1951 tr
1952 uniq
1953 "
1954 trylist="
1955 Mcc
1956 ar
1957 byacc
1958 cpp
1959 csh
1960 date
1961 egrep
1962 gzip
1963 less
1964 ln
1965 more
1966 nm
1967 nroff
1968 pg
1969 test
1970 uname
1971 zip
1972 "
1973 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1974 pth="$pth /lib /usr/lib"
1975 for file in $loclist; do
1976         eval xxx=\$$file
1977         case "$xxx" in
1978         /*|?:[\\/]*)
1979                 if test -f "$xxx"; then
1980                         : ok
1981                 else
1982                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1983                         xxx=`./loc $file $file $pth`
1984                 fi
1985                 ;;
1986         '') xxx=`./loc $file $file $pth`;;
1987         *) xxx=`./loc $xxx $xxx $pth`;;
1988         esac
1989         eval $file=$xxx
1990         eval _$file=$xxx
1991         case "$xxx" in
1992         /*)
1993                 echo $file is in $xxx.
1994                 ;;
1995         ?:[\\/]*)
1996                 echo $file is in $xxx.
1997                 ;;
1998         *)
1999                 echo "I don't know where '$file' is, and my life depends on it." >&4
2000                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2001                 exit 1
2002                 ;;
2003         esac
2004 done
2005 echo " "
2006 echo "Don't worry if any of the following aren't found..."
2007 say=offhand
2008 for file in $trylist; do
2009         eval xxx=\$$file
2010         case "$xxx" in
2011         /*|?:[\\/]*)
2012                 if test -f "$xxx"; then
2013                         : ok
2014                 else
2015                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2016                         xxx=`./loc $file $file $pth`
2017                 fi
2018                 ;;
2019         '') xxx=`./loc $file $file $pth`;;
2020         *) xxx=`./loc $xxx $xxx $pth`;;
2021         esac
2022         eval $file=$xxx
2023         eval _$file=$xxx
2024         case "$xxx" in
2025         /*)
2026                 echo $file is in $xxx.
2027                 ;;
2028         ?:[\\/]*)
2029                 echo $file is in $xxx.
2030                 ;;
2031         *)
2032                 echo "I don't see $file out there, $say."
2033                 say=either
2034                 ;;
2035         esac
2036 done
2037 case "$egrep" in
2038 egrep)
2039         echo "Substituting grep for egrep."
2040         egrep=$grep
2041         ;;
2042 esac
2043 case "$ln" in
2044 ln)
2045         echo "Substituting cp for ln."
2046         ln=$cp
2047         ;;
2048 esac
2049 case "$test" in
2050 test)
2051         echo "Hopefully test is built into your sh."
2052         ;;
2053 *)
2054         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2055                 echo "Using the test built into your sh."
2056                 test=test
2057                 _test=test
2058         fi
2059         ;;
2060 esac
2061 case "$echo" in
2062 echo)
2063         echo "Hopefully echo is built into your sh."
2064         ;;
2065 '') ;;
2066 *)
2067         echo " "
2068 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2069         $echo $n "hi there$c" >foo1
2070         echo $n "hi there$c" >foo2
2071         if cmp foo1 foo2 >/dev/null 2>&1; then
2072                 echo "They are compatible.  In fact, they may be identical."
2073         else
2074                 case "$n" in
2075                 '-n') n='' c='\c';;
2076                 *) n='-n' c='';;
2077                 esac
2078                 cat <<FOO
2079 They are not compatible!  You are probably running ksh on a non-USG system.
2080 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2081 have echo built in and we may have to run some Bourne shell scripts.  That
2082 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2083
2084 FOO
2085                 $echo $n "The star should be here-->$c"
2086                 $echo "*"
2087         fi
2088         $rm -f foo1 foo2
2089         ;;
2090 esac
2091
2092 cat <<EOS >checkcc
2093 $startsh
2094 EOS
2095 cat <<'EOSC' >>checkcc
2096 case "$cc" in
2097 '') ;;
2098 *)  $rm -f try try.*
2099     $cat >try.c <<EOM
2100 int main(int argc, char *argv[]) {
2101   return 0;
2102 }
2103 EOM
2104     if $cc -o try $ccflags try.c; then
2105        :
2106     else
2107         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2108         despair=yes
2109         trygcc=yes
2110         case "$cc" in
2111         *gcc*) trygcc=no ;;
2112         esac
2113         case "`$cc -v -c try.c 2>&1`" in
2114         *gcc*) trygcc=no ;;
2115         esac
2116         if $test X"$trygcc" = Xyes; then
2117             if gcc -o try -c try.c; then
2118                 echo " "
2119                 echo "You seem to have a working gcc, though." >&4
2120                 rp="Would you like to use it?"
2121                 dflt=y
2122                 if $test -f myread; then
2123                     . ./myread
2124                 else
2125                     if $test -f UU/myread; then
2126                         . ./UU/myread
2127                     else
2128                         echo "Cannot find myread, sorry.  Aborting." >&2
2129                         exit 1
2130                     fi
2131                 fi  
2132                 case "$ans" in
2133                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2134                 esac
2135             fi
2136         fi
2137         if $test X"$despair" = Xyes; then
2138             $cat >&4 <<EOM
2139 You need to find a working C compiler.
2140 Either (purchase and) install the C compiler supplied by your OS vendor,
2141 or for a free C compiler try http://gcc.gnu.org/
2142 I cannot continue any further, aborting.
2143 EOM
2144             exit 1
2145         fi
2146     fi
2147     $rm -f try try.*
2148     ;;
2149 esac
2150 EOSC
2151
2152 : determine whether symbolic links are supported
2153 echo " "
2154 $touch blurfl
2155 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2156         echo "Symbolic links are supported." >&4
2157         lns="$ln -s"
2158 else
2159         echo "Symbolic links are NOT supported." >&4
2160         lns="$ln"
2161 fi
2162 $rm -f blurfl sym
2163
2164 : see whether [:lower:] and [:upper:] are supported character classes
2165 echo " "
2166 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2167 ABYZ)
2168         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2169         up='[:upper:]'
2170         low='[:lower:]'
2171         ;;
2172 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2173         # (0xc9 and 0xd1), therefore that is a nice testing point.
2174         if test "X$up" = X -o "X$low" = X; then
2175             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2176             ij) up='[A-Z]'
2177                 low='[a-z]'
2178                 ;;
2179             esac
2180         fi
2181         if test "X$up" = X -o "X$low" = X; then
2182             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2183             ij) up='A-Z'
2184                 low='a-z'
2185                 ;;
2186             esac
2187         fi
2188         if test "X$up" = X -o "X$low" = X; then
2189             case "`echo IJ | od -x 2>/dev/null`" in
2190             *C9D1*|*c9d1*)
2191                 echo "Hey, this might be EBCDIC." >&4
2192                 if test "X$up" = X -o "X$low" = X; then
2193                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2194                     ij) up='[A-IJ-RS-Z]'
2195                         low='[a-ij-rs-z]'
2196                         ;;
2197                     esac
2198                 fi
2199                 if test "X$up" = X -o "X$low" = X; then
2200                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2201                     ij) up='A-IJ-RS-Z'
2202                         low='a-ij-rs-z'
2203                         ;;
2204                     esac
2205                 fi
2206                 ;;
2207             esac
2208         fi
2209 esac
2210 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2211 ij)
2212     echo "Using $up and $low to convert case." >&4
2213     ;;
2214 *)
2215     echo "I don't know how to translate letters from upper to lower case." >&4
2216     echo "Your tr is not acting any way I know of." >&4
2217     exit 1
2218     ;;
2219 esac
2220 : set up the translation script tr, must be called with ./tr of course
2221 cat >tr <<EOSC
2222 $startsh
2223 case "\$1\$2" in
2224 '[A-Z][a-z]') exec $tr '$up' '$low';;
2225 '[a-z][A-Z]') exec $tr '$low' '$up';;
2226 esac
2227 exec $tr "\$@"
2228 EOSC
2229 chmod +x tr
2230 $eunicefix tr
2231
2232 : Try to determine whether config.sh was made on this system
2233 case "$config_sh" in
2234 '')
2235 myuname=`$uname -a 2>/dev/null`
2236 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2237 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2238 # because the A-Z/a-z are not consecutive.
2239 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2240         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2241 newmyuname="$myuname"
2242 dflt=n
2243 case "$knowitall" in
2244 '')
2245         if test -f ../config.sh; then
2246                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2247                         eval "`grep myuname= ../config.sh`"
2248                 fi
2249                 if test "X$myuname" = "X$newmyuname"; then
2250                         dflt=y
2251                 fi
2252         fi
2253         ;;
2254 *) dflt=y;;
2255 esac
2256
2257 : Get old answers from old config file if Configure was run on the
2258 : same system, otherwise use the hints.
2259 hint=default
2260 cd ..
2261 if test -f config.sh; then
2262         echo " "
2263         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2264         . UU/myread
2265         case "$ans" in
2266         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2267         *)  echo "Fetching default answers from your old config.sh file..." >&4
2268                 tmp_n="$n"
2269                 tmp_c="$c"
2270                 tmp_sh="$sh"
2271                 . ./config.sh
2272                 cp config.sh UU
2273                 n="$tmp_n"
2274                 c="$tmp_c"
2275                 : Older versions did not always set $sh.  Catch re-use of such
2276                 : an old config.sh.
2277                 case "$sh" in
2278                 '') sh="$tmp_sh" ;;
2279                 esac
2280                 hint=previous
2281                 ;;
2282         esac
2283 fi
2284 . ./UU/checkcc
2285 if test ! -f config.sh; then
2286         $cat <<EOM
2287
2288 First time through, eh?  I have some defaults handy for some systems
2289 that need some extra help getting the Configure answers right:
2290
2291 EOM
2292         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2293         dflt=''
2294         : Half the following guesses are probably wrong... If you have better
2295         : tests or hints, please send them to perlbug@perl.org
2296         : The metaconfig authors would also appreciate a copy...
2297         $test -f /irix && osname=irix
2298         $test -f /xenix && osname=sco_xenix
2299         $test -f /dynix && osname=dynix
2300         $test -f /dnix && osname=dnix
2301         $test -f /lynx.os && osname=lynxos
2302         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2303         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2304         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2305         $test -f /bin/mips && /bin/mips && osname=mips
2306         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2307                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2308         $test -d /usr/apollo/bin && osname=apollo
2309         $test -f /etc/saf/_sactab && osname=svr4
2310         $test -d /usr/include/minix && osname=minix
2311         if $test -d /MachTen -o -d /MachTen_Folder; then
2312                 osname=machten
2313                 if $test -x /sbin/version; then
2314                         osvers=`/sbin/version | $awk '{print $2}' |
2315                         $sed -e 's/[A-Za-z]$//'`
2316                 elif $test -x /usr/etc/version; then
2317                         osvers=`/usr/etc/version | $awk '{print $2}' |
2318                         $sed -e 's/[A-Za-z]$//'`
2319                 else
2320                         osvers="$2.$3"
2321                 fi
2322         fi
2323
2324         $test -f /sys/posix.dll &&
2325                 $test -f /usr/bin/what &&
2326                 set X `/usr/bin/what /sys/posix.dll` &&
2327                 $test "$3" = UWIN &&
2328                 osname=uwin &&
2329                 osvers="$5"
2330
2331         if $test -f $uname; then
2332                 set X $myuname
2333                 shift
2334
2335                 case "$5" in
2336                 fps*) osname=fps ;;
2337                 mips*)
2338                         case "$4" in
2339                         umips) osname=umips ;;
2340                         *) osname=mips ;;
2341                         esac;;
2342                 [23]100) osname=mips ;;
2343                 next*) osname=next ;;
2344                 i386*)
2345                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2346                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2347                                 osname='sco'
2348                                 osvers=$tmp
2349                         elif $test -f /etc/kconfig; then
2350                                 osname=isc
2351                                 if test "$lns" = "$ln -s"; then
2352                                         osvers=4
2353                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2354                                         osvers=3
2355                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2356                                         osvers=2
2357                                 fi
2358                         fi
2359                         tmp=''
2360                         ;;
2361                 pc*)
2362                         if test -n "$DJGPP"; then
2363                                 osname=dos
2364                                 osvers=djgpp
2365                         fi
2366                         ;;
2367                 esac
2368
2369                 case "$1" in
2370                 aix) osname=aix
2371                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2372                         case "$tmp" in
2373                         'not found') osvers="$4"."$3" ;;
2374                         '<3240'|'<>3240') osvers=3.2.0 ;;
2375                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2376                         '=3250'|'>3250') osvers=3.2.5 ;;
2377                         *) osvers=$tmp;;
2378                         esac
2379                         ;;
2380                 bsd386) osname=bsd386
2381                         osvers=`$uname -r`
2382                         ;;
2383                 cygwin*) osname=cygwin
2384                         osvers="$3"
2385                         ;;
2386                 *dc.osx) osname=dcosx
2387                         osvers="$3"
2388                         ;;
2389                 dnix) osname=dnix
2390                         osvers="$3"
2391                         ;;
2392                 domainos) osname=apollo
2393                         osvers="$3"
2394                         ;;
2395                 dgux) osname=dgux 
2396                         osvers="$3"
2397                         ;;
2398                 dynixptx*) osname=dynixptx
2399                         osvers=`echo "$4"|sed 's/^v//'`
2400                         ;;
2401                 freebsd) osname=freebsd 
2402                         osvers="$3" ;;
2403                 genix) osname=genix ;;
2404                 hp*) osname=hpux 
2405                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2406                         ;;
2407                 irix*) osname=irix
2408                         case "$3" in
2409                         4*) osvers=4 ;;
2410                         5*) osvers=5 ;;
2411                         *)      osvers="$3" ;;
2412                         esac
2413                         ;;
2414                 linux) osname=linux
2415                         case "$3" in
2416                         *)      osvers="$3" ;;
2417                         esac
2418                         ;;
2419                 MiNT) osname=mint
2420                         ;;
2421                 netbsd*) osname=netbsd
2422                         osvers="$3"
2423                         ;;
2424                 news-os) osvers="$3"
2425                         case "$3" in
2426                         4*) osname=newsos4 ;;
2427                         *) osname=newsos ;;
2428                         esac
2429                         ;;
2430                 next*) osname=next ;;
2431                 nonstop-ux) osname=nonstopux ;;
2432                 POSIX-BC | posix-bc ) osname=posix-bc
2433                         osvers="$3"
2434                         ;;
2435                 powerux | power_ux | powermax_os | powermaxos | \
2436                 powerunix | power_unix) osname=powerux
2437                         osvers="$3"
2438                         ;;
2439                 qnx) osname=qnx
2440                         osvers="$4"
2441                         ;;
2442                 solaris) osname=solaris
2443                         case "$3" in
2444                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2445                         *)      osvers="$3" ;;
2446                         esac
2447                         ;;
2448                 sunos) osname=sunos
2449                         case "$3" in
2450                         5*) osname=solaris
2451                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2452                         *)      osvers="$3" ;;
2453                         esac
2454                         ;;
2455                 titanos) osname=titanos
2456                         case "$3" in
2457                         1*) osvers=1 ;;
2458                         2*) osvers=2 ;;
2459                         3*) osvers=3 ;;
2460                         4*) osvers=4 ;;
2461                         *)      osvers="$3" ;;
2462                         esac
2463                         ;;
2464                 ultrix) osname=ultrix
2465                         osvers="$3"
2466                         ;;
2467                 osf1|mls+)      case "$5" in
2468                                 alpha)
2469                                         osname=dec_osf
2470                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2471                                         case "$osvers" in
2472                                         [1-9].[0-9]*) ;;
2473                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2474                                         esac
2475                                         ;;
2476                         hp*)    osname=hp_osf1  ;;
2477                         mips)   osname=mips_osf1 ;;
2478                         esac
2479                         ;;
2480                 unixware) osname=svr5
2481                         osvers="$4"
2482                         ;;
2483                 uts) osname=uts
2484                         osvers="$3"
2485                         ;;
2486                 $2) case "$osname" in
2487                         *isc*) ;;
2488                         *freebsd*) ;;
2489                         svr*)
2490                                 : svr4.x or possibly later
2491                                 case "svr$3" in 
2492                                 ${osname}*)
2493                                         osname=svr$3
2494                                         osvers=$4
2495                                         ;;
2496                                 esac
2497                                 case "$osname" in
2498                                 svr4.0)
2499                                         : Check for ESIX
2500                                         if test -f /stand/boot ; then
2501                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2502                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2503                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2504                                                         if test -n "$isesix"; then
2505                                                                 osname=esix4
2506                                                         fi
2507                                                 fi
2508                                         fi
2509                                         ;;
2510                                 esac
2511                                 ;;
2512                         *)      if test -f /etc/systemid; then
2513                                         osname=sco
2514                                         set `echo $3 | $sed 's/\./ /g'` $4
2515                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2516                                                 osvers=$1.$2.$3
2517                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2518                                                 osvers=$1.$2
2519                                         elif $test -f $src/hints/sco_$1.sh; then
2520                                                 osvers=$1
2521                                         fi
2522                                 else
2523                                         case "$osname" in
2524                                         '') : Still unknown.  Probably a generic Sys V.
2525                                                 osname="sysv"
2526                                                 osvers="$3"
2527                                                 ;;
2528                                         esac
2529                                 fi
2530                                 ;;
2531                         esac
2532                         ;;
2533                 *)      case "$osname" in
2534                         '') : Still unknown.  Probably a generic BSD.
2535                                 osname="$1"
2536                                 osvers="$3"
2537                                 ;;
2538                         esac
2539                         ;;
2540                 esac
2541         else
2542                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2543                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2544                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2545                                 osname=news_os
2546                         fi
2547                         $rm -f UU/kernel.what
2548                 elif test -d c:/.; then
2549                         set X $myuname
2550                         osname=os2
2551                         osvers="$5"
2552                 fi
2553         fi
2554         
2555         : Now look for a hint file osname_osvers, unless one has been
2556         : specified already.
2557         case "$hintfile" in
2558         ''|' ')
2559                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2560                 : Also try without trailing minor version numbers.
2561                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2562                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2563                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2564                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2565                 case "$file" in
2566                 '') dflt=none ;;
2567                 *)  case "$osvers" in
2568                         '') dflt=$file
2569                                 ;;
2570                         *)  if $test -f $src/hints/$file.sh ; then
2571                                         dflt=$file
2572                                 elif $test -f $src/hints/$xfile.sh ; then
2573                                         dflt=$xfile
2574                                 elif $test -f $src/hints/$xxfile.sh ; then
2575                                         dflt=$xxfile
2576                                 elif $test -f $src/hints/$xxxfile.sh ; then
2577                                         dflt=$xxxfile
2578                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2579                                         dflt=$xxxxfile
2580                                 elif $test -f "$src/hints/${osname}.sh" ; then
2581                                         dflt="${osname}"
2582                                 else
2583                                         dflt=none
2584                                 fi
2585                                 ;;
2586                         esac
2587                         ;;
2588                 esac
2589                 if $test -f Policy.sh ; then
2590                         case "$dflt" in
2591                         *Policy*) ;;
2592                         none) dflt="Policy" ;;
2593                         *) dflt="Policy $dflt" ;;
2594                         esac
2595                 fi
2596                 ;;
2597         *)
2598                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2599                 ;;
2600         esac
2601
2602         if $test -f Policy.sh ; then
2603                 $cat <<EOM
2604
2605 There's also a Policy hint file available, which should make the
2606 site-specific (policy) questions easier to answer.
2607 EOM
2608
2609         fi
2610
2611         $cat <<EOM
2612
2613 You may give one or more space-separated answers, or "none" if appropriate.
2614 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2615 is a good thing.  DO NOT give a wrong version or a wrong OS.
2616
2617 EOM
2618
2619         rp="Which of these apply, if any?"
2620         . UU/myread
2621         tans=$ans
2622         for file in $tans; do
2623                 if $test X$file = XPolicy -a -f Policy.sh; then
2624                         . Policy.sh
2625                         $cat Policy.sh >> UU/config.sh
2626                 elif $test -f $src/hints/$file.sh; then
2627                         . $src/hints/$file.sh
2628                         $cat $src/hints/$file.sh >> UU/config.sh
2629                 elif $test X$tans = X -o X$tans = Xnone ; then
2630                         : nothing
2631                 else
2632                         : Give one chance to correct a possible typo.
2633                         echo "$file.sh does not exist"
2634                         dflt=$file
2635                         rp="hint to use instead?"
2636                         . UU/myread
2637                         for file in $ans; do
2638                                 if $test -f "$src/hints/$file.sh"; then
2639                                         . $src/hints/$file.sh
2640                                         $cat $src/hints/$file.sh >> UU/config.sh
2641                                 elif $test X$ans = X -o X$ans = Xnone ; then
2642                                         : nothing
2643                                 else
2644                                         echo "$file.sh does not exist -- ignored."
2645                                 fi
2646                         done
2647                 fi
2648         done
2649
2650         hint=recommended
2651         : Remember our hint file for later.
2652         if $test -f "$src/hints/$file.sh" ; then
2653                 hintfile="$file"
2654         else
2655                 hintfile=''
2656         fi
2657 fi
2658 cd UU
2659 ;;
2660 *)
2661         echo " "
2662         echo "Fetching default answers from $config_sh..." >&4
2663         tmp_n="$n"
2664         tmp_c="$c"
2665         cd ..
2666         cp $config_sh config.sh 2>/dev/null
2667         chmod +w config.sh
2668         . ./config.sh
2669         cd UU
2670         cp ../config.sh .
2671         n="$tmp_n"
2672         c="$tmp_c"
2673         hint=previous
2674         ;;
2675 esac
2676 test "$override" && . ./optdef.sh
2677 myuname="$newmyuname"
2678
2679 : Restore computed paths
2680 for file in $loclist $trylist; do
2681         eval $file="\$_$file"
2682 done
2683
2684 cat << EOM
2685
2686 Configure uses the operating system name and version to set some defaults.
2687 The default value is probably right if the name rings a bell. Otherwise,
2688 since spelling matters for me, either accept the default or answer "none"
2689 to leave it blank.
2690
2691 EOM
2692 case "$osname" in
2693         ''|' ')
2694                 case "$hintfile" in
2695                 ''|' '|none) dflt=none ;;
2696                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2697                 esac
2698                 ;;
2699         *) dflt="$osname" ;;
2700 esac
2701 rp="Operating system name?"
2702 . ./myread
2703 case "$ans" in
2704 none)  osname='' ;;
2705 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2706 esac
2707 echo " "
2708 case "$osvers" in
2709         ''|' ')
2710                 case "$hintfile" in
2711                 ''|' '|none) dflt=none ;;
2712                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2713                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2714                         case "$dflt" in
2715                         ''|' ') dflt=none ;;
2716                         esac
2717                         ;;
2718                 esac
2719                 ;;
2720         *) dflt="$osvers" ;;
2721 esac
2722 rp="Operating system version?"
2723 . ./myread
2724 case "$ans" in
2725 none)  osvers='' ;;
2726 *) osvers="$ans" ;;
2727 esac
2728
2729
2730 . ./posthint.sh
2731
2732 : who configured the system
2733 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2734 cf_by=`(logname) 2>/dev/null`
2735 case "$cf_by" in
2736 "")
2737         cf_by=`(whoami) 2>/dev/null`
2738         case "$cf_by" in
2739         "") cf_by=unknown ;;
2740         esac ;;
2741 esac
2742
2743 : set up the script used to warn in case of inconsistency
2744 cat <<EOS >whoa
2745 $startsh
2746 EOS
2747 cat <<'EOSC' >>whoa
2748 dflt=y
2749 echo " "
2750 echo "*** WHOA THERE!!! ***" >&4
2751 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2752 rp="    Keep the $hint value?"
2753 . ./myread
2754 case "$ans" in
2755 y) td=$was; tu=$was;;
2756 esac
2757 EOSC
2758
2759 : function used to set $1 to $val
2760 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2761 case "$val$was" in
2762 $define$undef) . ./whoa; eval "$var=\$td";;
2763 $undef$define) . ./whoa; eval "$var=\$tu";;
2764 *) eval "$var=$val";;
2765 esac'
2766
2767 case "$usethreads" in
2768 $define|true|[yY]*)     dflt='y';;
2769 *) dflt='n';;
2770 esac
2771 cat <<EOM
2772
2773 Perl can be built to take advantage of threads on some systems.
2774 To do so, Configure can be run with -Dusethreads.
2775
2776 Note that threading is a highly experimental feature, and
2777 some known race conditions still remain.  If you choose to try
2778 it, be very sure to not actually deploy it for production
2779 purposes.  README.threads has more details, and is required
2780 reading if you enable threads.
2781
2782 If this doesn't make any sense to you, just accept the default '$dflt'.
2783 EOM
2784 rp='Build a threading Perl?'
2785 . ./myread
2786 case "$ans" in
2787 y|Y)    val="$define" ;;
2788 *)      val="$undef" ;;
2789 esac
2790 set usethreads
2791 eval $setvar
2792
2793 case "$usethreads" in
2794 $define)
2795         $cat <<EOM
2796
2797 As of 5.5.640, Perl has two different internal threading implementations,
2798 the 5.005 version (5005threads) and an interpreter-based version
2799 (ithreads) that has one interpreter per thread.  Both are very 
2800 experimental.  This arrangement exists to help developers work out
2801 which one is better.
2802
2803 If you're a casual user, you probably don't want interpreter-threads
2804 at this time.  There doesn't yet exist a way to create threads from
2805 within Perl in this model, i.e., "use Thread;" will NOT work.
2806 EOM
2807         : Default to ithreads unless overridden on command line or with
2808         : old config.sh
2809         dflt='y'
2810         case "$use5005threads" in
2811                 $define|true|[yY]*) dflt='n';;
2812         esac
2813         case "$useithreads" in
2814                 $undef|false|[nN]*) dflt='n';;
2815         esac
2816         rp='Use interpreter-based ithreads?'
2817         . ./myread
2818         case "$ans" in
2819         y|Y)    val="$define" ;;
2820         *)      val="$undef" ;;
2821         esac
2822         set useithreads
2823         eval $setvar
2824         : Now set use5005threads to the opposite value.
2825         case "$useithreads" in
2826         $define) val="$undef" ;;
2827         *) val="$define" ;;
2828         esac
2829         set use5005threads
2830         eval $setvar
2831         ;;
2832 *)
2833         useithreads="$undef"
2834         use5005threads="$undef"
2835         ;;
2836 esac
2837
2838 case "$d_oldpthreads" in
2839 '')     : Configure tests would be welcome here.  For now, assume undef.
2840         val="$undef" ;;
2841 *)      val="$d_oldpthreads" ;;
2842 esac
2843 set d_oldpthreads
2844 eval $setvar
2845
2846
2847 case "$usethreads" in
2848 "$define"|true|[yY]*)
2849 : Look for a hint-file generated 'call-back-unit'.  If the
2850 : user has specified that a threading perl is to be built,
2851 : we may need to set or change some other defaults.
2852         if $test -f usethreads.cbu; then
2853                 echo "Your platform has some specific hints for threaded builds, using them..."
2854                 . ./usethreads.cbu
2855         else
2856                 $cat <<EOM
2857 (Your platform doesn't have any specific hints for threaded builds.
2858  Assuming POSIX threads, then.)
2859 EOM
2860         fi
2861         ;;
2862 esac
2863
2864 cat <<EOM
2865
2866 Perl can be built so that multiple Perl interpreters can coexist
2867 within the same Perl executable.
2868 EOM
2869
2870 case "$useithreads" in
2871 $define)
2872         cat <<EOM
2873 This multiple interpreter support is required for interpreter-based threads.
2874 EOM
2875         val="$define"
2876         ;;
2877 *)      case "$usemultiplicity" in
2878         $define|true|[yY]*)     dflt='y';;
2879         *) dflt='n';;
2880         esac
2881         echo " "
2882         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2883         rp='Build Perl for multiplicity?'
2884         . ./myread
2885         case "$ans" in
2886         y|Y)    val="$define" ;;
2887         *)      val="$undef" ;;
2888         esac
2889         ;;
2890 esac
2891 set usemultiplicity
2892 eval $setvar
2893
2894 : make some quick guesses about what we are up against
2895 echo " "
2896 $echo $n "Hmm...  $c"
2897 echo exit 1 >bsd
2898 echo exit 1 >usg
2899 echo exit 1 >v7
2900 echo exit 1 >osf1
2901 echo exit 1 >eunice
2902 echo exit 1 >xenix
2903 echo exit 1 >venix
2904 echo exit 1 >os2
2905 d_bsd="$undef"
2906 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2907 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2908 then
2909         echo "Looks kind of like an OSF/1 system, but we'll see..."
2910         echo exit 0 >osf1
2911 elif test `echo abc | $tr a-z A-Z` = Abc ; then
2912         xxx=`./loc addbib blurfl $pth`
2913         if $test -f $xxx; then
2914         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2915                 echo exit 0 >bsd
2916                 echo exit 0 >usg
2917         else
2918                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2919                         echo "Looks kind of like an extended USG system, but we'll see..."
2920                 else
2921                         echo "Looks kind of like a USG system, but we'll see..."
2922                 fi
2923                 echo exit 0 >usg
2924         fi
2925 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2926         echo "Looks kind of like a BSD system, but we'll see..."
2927         d_bsd="$define"
2928         echo exit 0 >bsd
2929 else
2930         echo "Looks kind of like a Version 7 system, but we'll see..."
2931         echo exit 0 >v7
2932 fi
2933 case "$eunicefix" in
2934 *unixtovms*)
2935         $cat <<'EOI'
2936 There is, however, a strange, musty smell in the air that reminds me of
2937 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2938 EOI
2939         echo exit 0 >eunice
2940         d_eunice="$define"
2941 : it so happens the Eunice I know will not run shell scripts in Unix format
2942         ;;
2943 *)
2944         echo " "
2945         echo "Congratulations.  You aren't running Eunice."
2946         d_eunice="$undef"
2947         ;;
2948 esac
2949 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2950 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2951 : semicolon as a patch separator
2952 case "$p_" in
2953 :) ;;
2954 *)
2955         $cat <<'EOI'
2956 I have the feeling something is not exactly right, however...don't tell me...
2957 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2958 (Or you may be running DOS with DJGPP.)
2959 EOI
2960         echo exit 0 >os2
2961         ;;
2962 esac
2963 if test -f /xenix; then
2964         echo "Actually, this looks more like a XENIX system..."
2965         echo exit 0 >xenix
2966         d_xenix="$define"
2967 else
2968         echo " "
2969         echo "It's not Xenix..."
2970         d_xenix="$undef"
2971 fi
2972 chmod +x xenix
2973 $eunicefix xenix
2974 if test -f /venix; then
2975         echo "Actually, this looks more like a VENIX system..."
2976         echo exit 0 >venix
2977 else
2978         echo " "
2979         if ./xenix; then
2980                 : null
2981         else
2982                 echo "Nor is it Venix..."
2983         fi
2984 fi
2985 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2986 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2987 $rm -f foo
2988
2989 case "$cc" in
2990 '') dflt=cc;;
2991 *) dflt="$cc";;
2992 esac
2993 rp="Use which C compiler?"
2994 . ./myread
2995 cc="$ans"
2996 : Look for a hint-file generated 'call-back-unit'.  Now that the
2997 : user has specified the compiler, we may need to set or change some
2998 : other defaults.
2999 if $test -f cc.cbu; then
3000     . ./cc.cbu
3001 fi
3002 . ./checkcc
3003
3004 echo " "
3005 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3006 $cat >gccvers.c <<EOM
3007 #include <stdio.h>
3008 int main() {
3009 #ifdef __GNUC__
3010 #ifdef __VERSION__
3011         printf("%s\n", __VERSION__);
3012 #else
3013         printf("%s\n", "1");
3014 #endif
3015 #endif
3016         exit(0);
3017 }
3018 EOM
3019 if $cc -o gccvers $ldflags gccvers.c; then
3020         gccversion=`./gccvers`
3021         case "$gccversion" in
3022         '') echo "You are not using GNU cc." ;;
3023         *)  echo "You are using GNU cc $gccversion."
3024             ccname=gcc  
3025             ;;
3026         esac
3027 else
3028         echo " "
3029         echo "*** WHOA THERE!!! ***" >&4
3030         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3031         case "$knowitall" in
3032         '')
3033         echo "    You'd better start hunting for one and let me know about it." >&4
3034                 exit 1
3035                 ;;
3036         esac
3037 fi
3038 $rm -f gccvers*
3039 case "$gccversion" in
3040 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3041 esac
3042 case "$gccversion" in
3043 '') gccosandvers='' ;;
3044 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3045    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3046    gccshortvers=''
3047    case "$gccosandvers" in
3048    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3049    $osname$osvers) ;; # looking good
3050    $osname*) cat <<EOM >&4
3051
3052 *** WHOA THERE!!! ***
3053
3054     Your gcc has not been compiled for the exact release of
3055     your operating system ($gccosandvers versus $osname$osvers).
3056
3057     In general it is a good idea to keep gcc synchronized with
3058     the operating system because otherwise serious problems
3059     may ensue when trying to compile software, like Perl.
3060
3061     I'm trying to be optimistic here, though, and will continue.
3062     If later during the configuration and build icky compilation
3063     problems appear (headerfile conflicts being the most common
3064     manifestation), I suggest reinstalling the gcc to match
3065     your operating system release.
3066
3067 EOM
3068       ;;
3069    *) gccosandvers='' ;; # failed to parse, better be silent
3070    esac
3071    ;;
3072 esac
3073 case "$ccname" in
3074 '') ccname="$cc" ;;
3075 esac
3076
3077 : see how we invoke the C preprocessor
3078 echo " "
3079 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3080 cat <<'EOT' >testcpp.c
3081 #define ABC abc
3082 #define XYZ xyz
3083 ABC.XYZ
3084 EOT
3085 cd ..
3086 if test ! -f cppstdin; then
3087         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3088                 # AIX cc -E doesn't show the absolute headerfile
3089                 # locations but we'll cheat by using the -M flag.
3090                 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
3091         else
3092                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3093         fi
3094 else
3095         echo "Keeping your $hint cppstdin wrapper."
3096 fi
3097 chmod 755 cppstdin
3098 wrapper=`pwd`/cppstdin
3099 ok='false'
3100 cd UU
3101
3102 if $test "X$cppstdin" != "X" && \
3103         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3104         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3105 then
3106         echo "You used to use $cppstdin $cppminus so we'll use that again."
3107         case "$cpprun" in
3108         '') echo "But let's see if we can live without a wrapper..." ;;
3109         *)
3110                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3111                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3112                 then
3113                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3114                         ok='true'
3115                 else
3116                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3117                 fi
3118                 ;;
3119         esac
3120 else
3121         case "$cppstdin" in
3122         '') ;;
3123         *)
3124                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3125                 ;;
3126         esac
3127 fi
3128
3129 if $ok; then
3130         : nothing
3131 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3132         $cc -E <testcpp.c >testcpp.out 2>&1; \
3133         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3134         echo "Yup, it does."
3135         x_cpp="$cc -E"
3136         x_minus='';
3137 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3138         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3139         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3140         echo "Yup, it does."
3141         x_cpp="$cc -E"
3142         x_minus='-';
3143 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3144         $cc -P <testcpp.c >testcpp.out 2>&1; \
3145         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3146         echo "Yipee, that works!"
3147         x_cpp="$cc -P"
3148         x_minus='';
3149 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3150         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3151         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3152         echo "At long last!"
3153         x_cpp="$cc -P"
3154         x_minus='-';
3155 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3156         $cpp <testcpp.c >testcpp.out 2>&1; \
3157         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3158         echo "It works!"
3159         x_cpp="$cpp"
3160         x_minus='';
3161 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3162         $cpp - <testcpp.c >testcpp.out 2>&1; \
3163         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3164         echo "Hooray, it works!  I was beginning to wonder."
3165         x_cpp="$cpp"
3166         x_minus='-';
3167 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3168         $wrapper <testcpp.c >testcpp.out 2>&1; \
3169         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3170         x_cpp="$wrapper"
3171         x_minus=''
3172         echo "Eureka!"
3173 else
3174         dflt=''
3175         rp="No dice.  I can't find a C preprocessor.  Name one:"
3176         . ./myread
3177         x_cpp="$ans"
3178         x_minus=''
3179         $x_cpp <testcpp.c >testcpp.out 2>&1
3180         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3181                 echo "OK, that will do." >&4
3182         else
3183 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3184                 exit 1
3185         fi
3186 fi
3187
3188 case "$ok" in
3189 false)
3190         cppstdin="$x_cpp"
3191         cppminus="$x_minus"
3192         cpprun="$x_cpp"
3193         cpplast="$x_minus"
3194         set X $x_cpp
3195         shift
3196         case "$1" in
3197         "$cpp")
3198                 echo "Perhaps can we force $cc -E using a wrapper..."
3199                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3200                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3201                 then
3202                         echo "Yup, we can."
3203                         cppstdin="$wrapper"
3204                         cppminus='';
3205                 else
3206                         echo "Nope, we'll have to live without it..."
3207                 fi
3208                 ;;
3209         esac
3210         case "$cpprun" in
3211         "$wrapper")
3212                 cpprun=''
3213                 cpplast=''
3214                 ;;
3215         esac
3216         ;;
3217 esac
3218
3219 case "$cppstdin" in
3220 "$wrapper"|'cppstdin') ;;
3221 *) $rm -f $wrapper;;
3222 esac
3223 $rm -f testcpp.c testcpp.out
3224
3225 : decide how portable to be.  Allow command line overrides.
3226 case "$d_portable" in
3227 "$undef") ;;
3228 *)      d_portable="$define" ;;
3229 esac
3230
3231 : set up shell script to do ~ expansion
3232 cat >filexp <<EOSS
3233 $startsh
3234 : expand filename
3235 case "\$1" in
3236  ~/*|~)
3237         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3238         ;;
3239  ~*)
3240         if $test -f /bin/csh; then
3241                 /bin/csh -f -c "glob \$1"
3242                 failed=\$?
3243                 echo ""
3244                 exit \$failed
3245         else
3246                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3247                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3248                 if $test ! -d "\$dir"; then
3249                         me=\`basename \$0\`
3250                         echo "\$me: can't locate home directory for: \$name" >&2
3251                         exit 1
3252                 fi
3253                 case "\$1" in
3254                 */*)
3255                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3256                         ;;
3257                 *)
3258                         echo \$dir
3259                         ;;
3260                 esac
3261         fi
3262         ;;
3263 *)
3264         echo \$1
3265         ;;
3266 esac
3267 EOSS
3268 chmod +x filexp
3269 $eunicefix filexp
3270
3271 : now set up to get a file name
3272 cat <<EOS >getfile
3273 $startsh
3274 EOS
3275 cat <<'EOSC' >>getfile
3276 tilde=''
3277 fullpath=''
3278 already=''
3279 skip=''
3280 none_ok=''
3281 exp_file=''
3282 nopath_ok=''
3283 orig_rp="$rp"
3284 orig_dflt="$dflt"
3285 case "$gfpth" in
3286 '') gfpth='.' ;;
3287 esac
3288
3289 case "$fn" in
3290 *\(*)
3291         expr $fn : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3292         fn=`echo $fn | sed 's/(.*)//'`
3293         ;;
3294 esac
3295
3296 case "$fn" in
3297 *:*)
3298         loc_file=`expr $fn : '.*:\(.*\)'`
3299         fn=`expr $fn : '\(.*\):.*'`
3300         ;;
3301 esac
3302
3303 case "$fn" in
3304 *~*) tilde=true;;
3305 esac
3306 case "$fn" in
3307 */*) fullpath=true;;
3308 esac
3309 case "$fn" in
3310 *+*) skip=true;;
3311 esac
3312 case "$fn" in
3313 *n*) none_ok=true;;
3314 esac
3315 case "$fn" in
3316 *e*) exp_file=true;;
3317 esac
3318 case "$fn" in
3319 *p*) nopath_ok=true;;
3320 esac
3321
3322 case "$fn" in
3323 *f*) type='File';;
3324 *d*) type='Directory';;
3325 *l*) type='Locate';;
3326 esac
3327
3328 what="$type"
3329 case "$what" in
3330 Locate) what='File';;
3331 esac
3332
3333 case "$exp_file" in
3334 '')
3335         case "$d_portable" in
3336         "$define") ;;
3337         *) exp_file=true;;
3338         esac
3339         ;;
3340 esac
3341
3342 cd ..
3343 while test "$type"; do
3344         redo=''
3345         rp="$orig_rp"
3346         dflt="$orig_dflt"
3347         case "$tilde" in
3348         true) rp="$rp (~name ok)";;
3349         esac
3350         . UU/myread
3351         if test -f UU/getfile.ok && \
3352                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3353         then
3354                 value="$ans"
3355                 ansexp="$ans"
3356                 break
3357         fi
3358         case "$ans" in
3359         none)
3360                 value=''
3361                 ansexp=''
3362                 case "$none_ok" in
3363                 true) type='';;
3364                 esac
3365                 ;;
3366         *)
3367                 case "$tilde" in
3368                 '') value="$ans"
3369                         ansexp="$ans";;
3370                 *)
3371                         value=`UU/filexp $ans`
3372                         case $? in
3373                         0)
3374                                 if test "$ans" != "$value"; then
3375                                         echo "(That expands to $value on this system.)"
3376                                 fi
3377                                 ;;
3378                         *) value="$ans";;
3379                         esac
3380                         ansexp="$value"
3381                         case "$exp_file" in
3382                         '') value="$ans";;
3383                         esac
3384                         ;;
3385                 esac
3386                 case "$fullpath" in
3387                 true)
3388                         case "$ansexp" in
3389                         /*) value="$ansexp" ;;
3390                         [a-zA-Z]:/*) value="$ansexp" ;;
3391                         *)
3392                                 redo=true
3393                                 case "$already" in
3394                                 true)
3395                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3396                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3397                                         ;;
3398                                 *)
3399                                 echo "Please give a full path name, starting with slash." >&4
3400                                         case "$tilde" in
3401                                         true)
3402                                 echo "Note that using ~name is ok provided it expands well." >&4
3403                                                 already=true
3404                                                 ;;
3405                                         esac
3406                                 esac
3407                                 ;;
3408                         esac
3409                         ;;
3410                 esac
3411                 case "$redo" in
3412                 '')
3413                         case "$type" in
3414                         File)
3415                                 for fp in $gfpth; do
3416                                         if test "X$fp" = X.; then
3417                                             pf="$ansexp"
3418                                         else    
3419                                             pf="$fp/$ansexp"
3420                                         fi
3421                                         if test -f "$pf"; then
3422                                                 type=''
3423                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3424                                         then
3425                                                 echo "($value is not a plain file, but that's ok.)"
3426                                                 type=''
3427                                         fi
3428                                         if test X"$type" = X; then
3429                                             value="$pf"
3430                                             break
3431                                         fi
3432                                 done
3433                                 ;;
3434                         Directory)
3435                                 for fp in $gfpth; do
3436                                         if test "X$fp" = X.; then
3437                                             dir="$ans"
3438                                             direxp="$ansexp"
3439                                         else    
3440                                             dir="$fp/$ansexp"
3441                                             direxp="$fp/$ansexp"
3442                                         fi
3443                                         if test -d "$direxp"; then
3444                                                 type=''
3445                                                 value="$dir"
3446                                                 break
3447                                         fi
3448                                 done
3449                                 ;;
3450                         Locate)
3451                                 if test -d "$ansexp"; then
3452                                         echo "(Looking for $loc_file in directory $value.)"
3453                                         value="$value/$loc_file"
3454                                         ansexp="$ansexp/$loc_file"
3455                                 fi
3456                                 if test -f "$ansexp"; then
3457                                         type=''
3458                                 fi
3459                                 case "$nopath_ok" in
3460                                 true)   case "$value" in
3461                                         */*) ;;
3462                                         *)      echo "Assuming $value will be in people's path."
3463                                                 type=''
3464                                                 ;;
3465                                         esac
3466                                         ;;
3467                                 esac
3468                                 ;;
3469                         esac
3470
3471                         case "$skip" in
3472                         true) type='';
3473                         esac
3474
3475                         case "$type" in
3476                         '') ;;
3477                         *)
3478                                 if test "$fastread" = yes; then
3479                                         dflt=y
3480                                 else
3481                                         dflt=n
3482                                 fi
3483                                 rp="$what $value doesn't exist.  Use that name anyway?"
3484                                 . UU/myread
3485                                 dflt=''
3486                                 case "$ans" in
3487                                 y*) type='';;
3488                                 *) echo " ";;
3489                                 esac
3490                                 ;;
3491                         esac
3492                         ;;
3493                 esac
3494                 ;;
3495         esac
3496 done
3497 cd UU
3498 ans="$value"
3499 rp="$orig_rp"
3500 dflt="$orig_dflt"
3501 rm -f getfile.ok
3502 test "X$gfpthkeep" != Xy && gfpth=""
3503 EOSC
3504
3505 : What should the include directory be ?
3506 echo " "
3507 $echo $n "Hmm...  $c"
3508 dflt='/usr/include'
3509 incpath=''
3510 mips_type=''
3511 if $test -f /bin/mips && /bin/mips; then
3512         echo "Looks like a MIPS system..."
3513         $cat >usr.c <<'EOCP'
3514 #ifdef SYSTYPE_BSD43
3515 /bsd43
3516 #endif
3517 EOCP
3518         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3519                 dflt='/bsd43/usr/include'
3520                 incpath='/bsd43'
3521                 mips_type='BSD 4.3'
3522         else
3523                 mips_type='System V'
3524         fi
3525         $rm -f usr.c usr.out
3526         echo "and you're compiling with the $mips_type compiler and libraries."
3527         xxx_prompt=y
3528         echo "exit 0" >mips
3529 else
3530         echo "Doesn't look like a MIPS system."
3531         xxx_prompt=n
3532         echo "exit 1" >mips
3533 fi
3534 chmod +x mips
3535 $eunicefix mips
3536 case "$usrinc" in
3537 '') ;;
3538 *) dflt="$usrinc";;
3539 esac
3540 case "$xxx_prompt" in
3541 y)      fn=d/
3542         echo " "
3543         rp='Where are the include files you want to use?'
3544         . ./getfile
3545         usrinc="$ans"
3546         ;;
3547 *)      usrinc="$dflt"
3548         ;;
3549 esac
3550
3551 : Set private lib path
3552 case "$plibpth" in
3553 '') if ./mips; then
3554                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3555         fi;;
3556 esac
3557 case "$libpth" in
3558 ' ') dlist='';;
3559 '') dlist="$loclibpth $plibpth $glibpth";;
3560 *) dlist="$libpth";;
3561 esac
3562
3563 : Now check and see which directories actually exist, avoiding duplicates
3564 libpth=''
3565 for xxx in $dlist
3566 do
3567     if $test -d $xxx; then
3568                 case " $libpth " in
3569                 *" $xxx "*) ;;
3570                 *) libpth="$libpth $xxx";;
3571                 esac
3572     fi
3573 done
3574 $cat <<'EOM'
3575
3576 Some systems have incompatible or broken versions of libraries.  Among
3577 the directories listed in the question below, please remove any you
3578 know not to be holding relevant libraries, and add any that are needed.
3579 Say "none" for none.
3580
3581 EOM
3582 case "$libpth" in
3583 '') dflt='none';;
3584 *)
3585         set X $libpth
3586         shift
3587         dflt=${1+"$@"}
3588         ;;
3589 esac
3590 rp="Directories to use for library searches?"
3591 . ./myread
3592 case "$ans" in
3593 none) libpth=' ';;
3594 *) libpth="$ans";;
3595 esac
3596
3597 : compute shared library extension
3598 case "$so" in
3599 '')
3600         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3601                 dflt='sl'
3602         else
3603                 dflt='so'
3604         fi
3605         ;;
3606 *) dflt="$so";;
3607 esac
3608 $cat <<EOM
3609
3610 On some systems, shared libraries may be available.  Answer 'none' if
3611 you want to suppress searching of shared libraries for the remainder
3612 of this configuration.
3613
3614 EOM
3615 rp='What is the file extension used for shared libraries?'
3616 . ./myread
3617 so="$ans"
3618
3619 : Define several unixisms.
3620 : Hints files or command line option can be used to override them.
3621 : The convoluted testing is in case hints files set either the old
3622 : or the new name.
3623 case "$_exe" in
3624 '')     case "$exe_ext" in
3625     '') ;;
3626         *)      _exe="$exe_ext" ;;
3627         esac
3628         ;;
3629 esac
3630 case "$_a" in
3631 '')     case "$lib_ext" in
3632     '') _a='.a';;
3633         *)      _a="$lib_ext" ;;
3634         esac
3635         ;;
3636 esac
3637 case "$_o" in
3638 '') case "$obj_ext" in
3639         '')     _o='.o';;
3640         *)      _o="$obj_ext";;
3641         esac
3642         ;;
3643 esac
3644 case "$p_" in
3645 '') case "$path_sep" in
3646         '')     p_=':';;
3647         *)      p_="$path_sep";;
3648         esac
3649         ;;
3650 esac
3651 exe_ext=$_exe
3652 lib_ext=$_a
3653 obj_ext=$_o
3654 path_sep=$p_
3655
3656 : Which makefile gets called first.  This is used by make depend.
3657 case "$firstmakefile" in
3658 '') firstmakefile='makefile';;
3659 esac
3660
3661 case "$usesocks" in
3662 $define|true|[yY]*)     dflt='y';;
3663 *) dflt='n';;
3664 esac
3665 cat <<EOM
3666
3667 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3668 Configure must be run with -Dusesocks.
3669
3670 If this doesn't make any sense to you, just accept the default '$dflt'.
3671 EOM
3672 rp='Build Perl for SOCKS?'
3673 . ./myread
3674 case "$ans" in
3675 y|Y)    val="$define" ;;     
3676 *)      val="$undef" ;;
3677 esac
3678 set usesocks
3679 eval $setvar
3680
3681 : Looking for optional libraries
3682 echo " "
3683 echo "Checking for optional libraries..." >&4
3684 case "$libs" in
3685 ' '|'') dflt='';;
3686 *) dflt="$libs";;
3687 esac
3688 case "$libswanted" in
3689 '') libswanted='c_s';;
3690 esac
3691 case "$usesocks" in
3692 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3693 esac
3694 libsfound=''
3695 libsfiles=''
3696 libsdirs=''
3697 libspath=''
3698 for thisdir in $libpth $xlibpth; do
3699   test -d $thisdir && libspath="$libspath $thisdir"
3700 done
3701 for thislib in $libswanted; do
3702         for thisdir in $libspath; do
3703             xxx=''
3704             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3705                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3706                 $test -f "$xxx" && eval $libscheck
3707                 $test -f "$xxx" && libstyle=shared
3708             fi
3709             if test ! -f "$xxx"; then
3710                 xxx=$thisdir/lib$thislib.$so
3711                 $test -f "$xxx" && eval $libscheck
3712                 $test -f "$xxx" && libstyle=shared
3713             fi  
3714             if test ! -f "$xxx"; then
3715                 xxx=$thisdir/lib$thislib$_a
3716                 $test -f "$xxx" && eval $libscheck
3717                 $test -f "$xxx" && libstyle=static
3718             fi
3719             if test ! -f "$xxx"; then
3720                 xxx=$thisdir/$thislib$_a
3721                 $test -f "$xxx" && eval $libscheck
3722                 $test -f "$xxx" && libstyle=static
3723             fi
3724             if test ! -f "$xxx"; then
3725                 xxx=$thisdir/lib${thislib}_s$_a
3726                 $test -f "$xxx" && eval $libscheck
3727                 $test -f "$xxx" && libstyle=static
3728                 $test -f "$xxx" && thislib=${thislib}_s
3729             fi
3730             if test ! -f "$xxx"; then
3731                 xxx=$thisdir/Slib$thislib$_a
3732                 $test -f "$xxx" && eval $libscheck
3733                 $test -f "$xxx" && libstyle=static
3734             fi
3735             if $test -f "$xxx"; then
3736                 case "$libstyle" in
3737                 shared) echo "Found -l$thislib (shared)." ;;
3738                 static) echo "Found -l$thislib." ;;
3739                 *)      echo "Found -l$thislib ($libstyle)." ;;
3740                 esac
3741                 case " $dflt " in
3742                 *"-l$thislib "*);;
3743                 *) dflt="$dflt -l$thislib"
3744                    libsfound="$libsfound $xxx"
3745                    yyy=`basename $xxx`
3746                    libsfiles="$libsfiles $yyy"
3747                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3748                    case " $libsdirs " in
3749                    *" $yyy "*) ;;
3750                    *) libsdirs="$libsdirs $yyy" ;;
3751                    esac
3752                    ;;
3753                 esac
3754                 break
3755             fi  
3756         done
3757         if $test ! -f "$xxx"; then
3758             echo "No -l$thislib."
3759         fi
3760 done
3761 set X $dflt
3762 shift
3763 dflt="$*"
3764 case "$libs" in
3765 '') dflt="$dflt";;
3766 *) dflt="$libs";;
3767 esac
3768 case "$dflt" in
3769 ' '|'') dflt='none';;
3770 esac
3771
3772 $cat <<EOM
3773
3774 In order to compile $package on your machine, a number of libraries
3775 are usually needed.  Include any other special libraries here as well.
3776 Say "none" for none.  The default list is almost always right.
3777 EOM
3778
3779 echo " "
3780 rp="What libraries to use?"
3781 . ./myread
3782 case "$ans" in
3783 none) libs=' ';;
3784 *) libs="$ans";;
3785 esac
3786
3787 : determine optimization, if desired, or use for debug flag also
3788 case "$optimize" in
3789 ' '|$undef) dflt='none';;
3790 '') dflt='-O';;
3791 *) dflt="$optimize";;
3792 esac
3793 $cat <<EOH
3794
3795 By default, $package compiles with the -O flag to use the optimizer.
3796 Alternately, you might want to use the symbolic debugger, which uses
3797 the -g flag (on traditional Unix systems).  Either flag can be
3798 specified here.  To use neither flag, specify the word "none".
3799
3800 EOH
3801 rp="What optimizer/debugger flag should be used?"
3802 . ./myread
3803 optimize="$ans"
3804 case "$optimize" in
3805 'none') optimize=" ";;
3806 esac
3807
3808 dflt=''
3809 : We will not override a previous value, but we might want to
3810 : augment a hint file
3811 case "$hint" in
3812 default|recommended)
3813         case "$gccversion" in
3814         1*) dflt='-fpcc-struct-return' ;;
3815         esac
3816         case "$optimize" in
3817         *-g*) dflt="$dflt -DDEBUGGING";;
3818         esac
3819         case "$gccversion" in
3820         2*) if test -d /etc/conf/kconfig.d &&
3821                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3822                 then
3823                         dflt="$dflt -posix"
3824                 fi
3825                 ;;
3826         esac
3827         case "$gccversion" in
3828         1*) ;;
3829         2.[0-8]*) ;;
3830         ?*)     echo " "
3831                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3832                 echo 'int main(void) { return 0; }' > gcctest.c
3833                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3834                         echo "Yes, it does." 2>&1
3835                         case "$ccflags" in
3836                         *strict-aliasing*) 
3837                                 echo "Leaving current flags $ccflags alone." 2>&1
3838                                 ;;
3839                         *) dflt="$dflt -fno-strict-aliasing" ;;
3840                         esac
3841                 else
3842                         echo "Nope, it doesn't, but that's ok." 2>&1
3843                 fi
3844                 ;;
3845         esac
3846         ;;
3847 esac
3848
3849 case "$mips_type" in
3850 *BSD*|'') inclwanted="$locincpth $usrinc";;
3851 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3852 esac
3853 for thisincl in $inclwanted; do
3854         if $test -d $thisincl; then
3855                 if $test x$thisincl != x$usrinc; then
3856                         case "$dflt" in
3857                         *" -I$thisincl "*);;
3858                         *) dflt="$dflt -I$thisincl ";;
3859                         esac
3860                 fi
3861         fi
3862 done
3863
3864 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3865         xxx=true;
3866 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3867         xxx=true;
3868 else
3869         xxx=false;
3870 fi;
3871 if $xxx; then
3872         case "$dflt" in
3873         *$2*);;
3874         *) dflt="$dflt -D$2";;
3875         esac;
3876 fi'
3877
3878 set signal.h LANGUAGE_C; eval $inctest
3879
3880 case "$usesocks" in
3881 $define)
3882         ccflags="$ccflags -DSOCKS"
3883         ;;
3884 esac
3885
3886 case "$hint" in
3887 default|recommended) dflt="$ccflags $dflt" ;;
3888 *) dflt="$ccflags";;
3889 esac
3890
3891 case "$dflt" in
3892 ''|' ') dflt=none;;
3893 esac
3894
3895 $cat <<EOH
3896
3897 Your C compiler may want other flags.  For this question you should include
3898 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3899 but you should NOT include libraries or ld flags like -lwhatever.  If you
3900 want $package to honor its debug switch, you should include -DDEBUGGING here.
3901 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3902
3903 To use no flags, specify the word "none".
3904
3905 EOH
3906 set X $dflt
3907 shift
3908 dflt=${1+"$@"}
3909 rp="Any additional cc flags?"
3910 . ./myread
3911 case "$ans" in
3912 none) ccflags='';;
3913 *) ccflags="$ans";;
3914 esac
3915
3916 : the following weeds options from ccflags that are of no interest to cpp
3917 cppflags="$ccflags"
3918 case "$gccversion" in
3919 1*) cppflags="$cppflags -D__GNUC__"
3920 esac
3921 case "$mips_type" in
3922 '');;
3923 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3924 esac
3925 case "$cppflags" in
3926 '');;
3927 *)
3928         echo " "
3929         echo "Let me guess what the preprocessor flags are..." >&4
3930         set X $cppflags
3931         shift
3932         cppflags=''
3933         $cat >cpp.c <<'EOM'
3934 #define BLURFL foo
3935
3936 BLURFL xx LFRULB
3937 EOM
3938         previous=''
3939         for flag in $*
3940         do
3941                 case "$flag" in
3942                 -*) ftry="$flag";;
3943                 *) ftry="$previous $flag";;
3944                 esac
3945                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3946                         >cpp1.out 2>/dev/null && \
3947                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3948                         >cpp2.out 2>/dev/null && \
3949                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3950                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3951                 then
3952                         cppflags="$cppflags $ftry"
3953                         previous=''
3954                 else
3955                         previous="$flag"
3956                 fi
3957         done
3958         set X $cppflags
3959         shift
3960         cppflags=${1+"$@"}
3961         case "$cppflags" in
3962         *-*)  echo "They appear to be: $cppflags";;
3963         esac
3964         $rm -f cpp.c cpp?.out
3965         ;;
3966 esac
3967
3968 : flags used in final linking phase
3969 case "$ldflags" in
3970 '') if ./venix; then
3971                 dflt='-i -z'
3972         else
3973                 dflt=''
3974         fi
3975         case "$ccflags" in
3976         *-posix*) dflt="$dflt -posix" ;;
3977         esac
3978         ;;
3979 *) dflt="$ldflags";;
3980 esac
3981
3982 : Try to guess additional flags to pick up local libraries.
3983 for thislibdir in $libpth; do
3984         case " $loclibpth " in
3985         *" $thislibdir "*)
3986                 case "$dflt " in 
3987                 *"-L$thislibdir "*) ;;
3988                 *)  dflt="$dflt -L$thislibdir" ;;
3989                 esac
3990                 ;;
3991         esac
3992 done
3993
3994 case "$dflt" in
3995 '') dflt='none' ;;
3996 esac
3997
3998 $cat <<EOH
3999
4000 Your C linker may need flags.  For this question you should
4001 include -L/whatever and any other flags used by the C linker, but you
4002 should NOT include libraries like -lwhatever.
4003
4004 Make sure you include the appropriate -L/path flags if your C linker
4005 does not normally search all of the directories you specified above,
4006 namely
4007         $libpth
4008 To use no flags, specify the word "none".
4009
4010 EOH
4011
4012 rp="Any additional ld flags (NOT including libraries)?"
4013 . ./myread
4014 case "$ans" in
4015 none) ldflags='';;
4016 *) ldflags="$ans";;
4017 esac
4018 rmlist="$rmlist pdp11"
4019
4020 : coherency check
4021 echo " "
4022 echo "Checking your choice of C compiler and flags for coherency..." >&4
4023 $cat > try.c <<'EOF'
4024 #include <stdio.h>
4025 int main() { printf("Ok\n"); exit(0); }
4026 EOF
4027 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
4028 shift
4029 $cat >try.msg <<'EOM'
4030 I've tried to compile and run the following simple program:
4031
4032 EOM
4033 $cat try.c >> try.msg
4034
4035 $cat >> try.msg <<EOM
4036
4037 I used the command:
4038
4039         $*
4040         ./try
4041
4042 and I got the following output:
4043
4044 EOM
4045 dflt=y
4046 if sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
4047         if sh -c './try' >>try.msg 2>&1; then
4048                 xxx=`./try`
4049                 case "$xxx" in
4050                 "Ok") dflt=n ;;
4051                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4052                         case " $libs " in
4053                         *" -lsfio "*)
4054                                 cat >> try.msg <<'EOQS'
4055 If $libs contains -lsfio, and sfio is mis-configured, then it
4056 sometimes (apparently) runs and exits with a 0 status, but with no
4057 output!  It may have to do with sfio's use of _exit vs. exit.
4058
4059 EOQS
4060                                 rp="You have a big problem.  Shall I abort Configure"
4061                                 dflt=y
4062                                 ;;
4063                         esac
4064                         ;;
4065                 esac
4066         else
4067                 echo "The program compiled OK, but exited with status $?." >>try.msg
4068                 rp="You have a problem.  Shall I abort Configure"
4069                 dflt=y
4070         fi
4071 else
4072         echo "I can't compile the test program." >>try.msg
4073         rp="You have a BIG problem.  Shall I abort Configure"
4074         dflt=y
4075 fi
4076 case "$dflt" in
4077 y)
4078         $cat try.msg >&4
4079         case "$knowitall" in
4080         '')
4081                 echo "(The supplied flags or libraries might be incorrect.)"
4082                 ;;
4083         *) dflt=n;;
4084         esac
4085         echo " "
4086         . ./myread
4087         case "$ans" in
4088         n*|N*) ;;
4089         *)      echo "Ok.  Stopping Configure." >&4
4090                 exit 1
4091                 ;;
4092         esac
4093         ;;
4094 n) echo "OK, that should do.";;
4095 esac
4096 $rm -f try try.* core
4097
4098 : define an is-a-typedef? function
4099 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4100 case "$inclist" in
4101 "") inclist="sys/types.h";;
4102 esac;
4103 eval "varval=\$$var";
4104 case "$varval" in
4105 "")
4106         $rm -f temp.c;
4107         for inc in $inclist; do
4108                 echo "#include <$inc>" >>temp.c;
4109         done;
4110         echo "#ifdef $type" >> temp.c;
4111         echo "printf(\"We have $type\");" >> temp.c;
4112         echo "#endif" >> temp.c;
4113         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4114         if $contains $type temp.E >/dev/null 2>&1; then
4115                 eval "$var=\$type";
4116         else
4117                 eval "$var=\$def";
4118         fi;
4119         $rm -f temp.?;;
4120 *) eval "$var=\$varval";;
4121 esac'
4122
4123 : define an is-a-typedef? function that prompts if the type is not available.
4124 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4125 case "$inclist" in
4126 "") inclist="sys/types.h";;
4127 esac;
4128 eval "varval=\$$var";
4129 case "$varval" in
4130 "")
4131         $rm -f temp.c;
4132         for inc in $inclist; do
4133                 echo "#include <$inc>" >>temp.c;
4134         done;
4135         echo "#ifdef $type" >> temp.c;
4136         echo "printf(\"We have $type\");" >> temp.c;
4137         echo "#endif" >> temp.c;
4138         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4139         echo " " ;
4140         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4141         if $contains $type temp.E >/dev/null 2>&1; then
4142                 echo "$type found." >&4;
4143                 eval "$var=\$type";
4144         else
4145                 echo "$type NOT found." >&4;
4146                 dflt="$def";
4147                 . ./myread ;
4148                 eval "$var=\$ans";
4149         fi;
4150         $rm -f temp.?;;
4151 *) eval "$var=\$varval";;
4152 esac'
4153
4154 : define a shorthand compile call
4155 compile='
4156 mc_file=$1;
4157 shift;
4158 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
4159 : define a shorthand compile call for compilations that should be ok.
4160 compile_ok='
4161 mc_file=$1;
4162 shift;
4163 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
4164
4165 : check for lengths of integral types
4166 echo " "
4167 case "$intsize" in
4168 '')
4169         echo "Checking to see how big your integers are..." >&4
4170         $cat >intsize.c <<'EOCP'
4171 #include <stdio.h>
4172 int main()
4173 {
4174         printf("intsize=%d;\n", (int)sizeof(int));
4175         printf("longsize=%d;\n", (int)sizeof(long));
4176         printf("shortsize=%d;\n", (int)sizeof(short));
4177         exit(0);
4178 }
4179 EOCP
4180         set intsize
4181         if eval $compile_ok && ./intsize > /dev/null; then
4182                 eval `./intsize`
4183                 echo "Your integers are $intsize bytes long."
4184                 echo "Your long integers are $longsize bytes long."
4185                 echo "Your short integers are $shortsize bytes long."
4186         else
4187                 $cat >&4 <<EOM
4188 !
4189 Help! I can't compile and run the intsize test program: please enlighten me!
4190 (This is probably a misconfiguration in your system or libraries, and
4191 you really ought to fix it.  Still, I'll try anyway.)
4192 !
4193 EOM
4194                 dflt=4
4195                 rp="What is the size of an integer (in bytes)?"
4196                 . ./myread
4197                 intsize="$ans"
4198                 dflt=$intsize
4199                 rp="What is the size of a long integer (in bytes)?"
4200                 . ./myread
4201                 longsize="$ans"
4202                 dflt=2
4203                 rp="What is the size of a short integer (in bytes)?"
4204                 . ./myread
4205                 shortsize="$ans"
4206         fi
4207         ;;
4208 esac
4209 $rm -f intsize intsize.*
4210
4211 : see what type lseek is declared as in the kernel
4212 rp="What is the type used for lseek's offset on this system?"
4213 set off_t lseektype long stdio.h sys/types.h
4214 eval $typedef_ask
4215
4216 echo " "
4217 echo "Checking to see how big your file offsets are..." >&4
4218 $cat >try.c <<EOCP
4219 #include <sys/types.h>
4220 #include <stdio.h>
4221 int main()
4222 {
4223     printf("%d\n", (int)sizeof($lseektype));
4224     return(0); 
4225 }
4226 EOCP
4227 set try
4228 if eval $compile_ok; then
4229         lseeksize=`./try`
4230         echo "Your file offsets are $lseeksize bytes long."
4231 else
4232         dflt=$longsize
4233         echo " "
4234         echo "(I can't seem to compile the test program.  Guessing...)"
4235         rp="What is the size of your file offsets (in bytes)?"
4236         . ./myread
4237         lseeksize="$ans"
4238 fi
4239 $rm -f try.c try
4240
4241 : see what type file positions are declared as in the library
4242 rp="What is the type for file position used by fsetpos()?"
4243 set fpos_t fpostype long stdio.h sys/types.h
4244 eval $typedef_ask
4245
4246 echo " "
4247 case "$fpostype" in
4248 *_t) zzz="$fpostype"    ;;
4249 *)   zzz="fpos_t"       ;;
4250 esac
4251 echo "Checking the size of $zzz..." >&4 
4252 cat > try.c <<EOCP
4253 #include <sys/types.h>
4254 #include <stdio.h>
4255 int main() {
4256     printf("%d\n", (int)sizeof($fpostype));
4257     exit(0);
4258 }
4259 EOCP
4260 set try
4261 if eval $compile_ok; then
4262         yyy=`./try`
4263         case "$yyy" in
4264         '')     fpossize=4
4265                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4266                 ;;
4267         *)      fpossize=$yyy
4268                 echo "Your $zzz is $fpossize bytes long."
4269                 ;;
4270         esac
4271 else
4272         dflt="$longsize"
4273         echo " " >&4
4274         echo "(I can't compile the test program.  Guessing...)" >&4
4275         rp="What is the size of your file positions (in bytes)?"
4276         . ./myread
4277         fpossize="$ans"
4278 fi
4279
4280
4281
4282 # Backward compatibility (uselfs is deprecated).
4283 case "$uselfs" in
4284 "$define"|true|[yY]*)
4285         cat <<EOM >&4
4286
4287 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4288 EOM
4289         uselargefiles="$define"
4290         ;;
4291 esac                          
4292
4293 case "$lseeksize:$fpossize" in
4294 8:8) cat <<EOM
4295
4296 You can have files larger than 2 gigabytes.
4297 EOM
4298    val="$define" ;;
4299 *)    case "$uselargefiles" in
4300    "$undef"|false|[nN]*) dflt='n' ;;
4301    *)   dflt='y' ;;
4302    esac
4303    cat <<EOM
4304
4305 Perl can be built to understand large files (files larger than 2 gigabytes)
4306 on some systems.  To do so, Configure can be run with -Duselargefiles.
4307
4308 If this doesn't make any sense to you, just accept the default '$dflt'.
4309 EOM
4310    rp='Try to understand large files, if available?'
4311    . ./myread
4312    case "$ans" in
4313    y|Y)         val="$define" ;;
4314    *)           val="$undef"  ;;
4315    esac
4316    ;;
4317 esac
4318 set uselargefiles
4319 eval $setvar
4320 case "$uselargefiles" in
4321 "$define")
4322 : Look for a hint-file generated 'call-back-unit'.  If the
4323 : user has specified that a large files perl is to be built,
4324 : we may need to set or change some other defaults.
4325         if $test -f uselargefiles.cbu; then
4326                 echo "Your platform has some specific hints for large file builds, using them..."
4327                 . ./uselargefiles.cbu
4328                 echo " "
4329                 echo "Rechecking to see how big your file offsets are..." >&4
4330                 $cat >try.c <<EOCP
4331 #include <sys/types.h>
4332 #include <stdio.h>
4333 int main()
4334 {
4335     printf("%d\n", (int)sizeof($lseektype));
4336     return(0); 
4337 }
4338 EOCP
4339                 set try
4340                 if eval $compile_ok; then
4341                         lseeksize=`./try`
4342                         $echo "Your file offsets are now $lseeksize bytes long."
4343                 else
4344                         dflt="$lseeksize"
4345                         echo " "
4346                         echo "(I can't seem to compile the test program.  Guessing...)"
4347                         rp="What is the size of your file offsets (in bytes)?"
4348                         . ./myread
4349                         lseeksize="$ans"
4350                 fi
4351                 case "$fpostype" in
4352                 *_t) zzz="$fpostype"    ;;
4353                 *)   zzz="fpos_t"       ;;
4354                 esac
4355                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4356                 $cat > try.c <<EOCP
4357 #include <sys/types.h>
4358 #include <stdio.h>
4359 int main() {
4360     printf("%d\n", (int)sizeof($fpostype));
4361     exit(0);
4362 }
4363 EOCP
4364                 set try
4365                 if eval $compile_ok; then
4366                         yyy=`./try`
4367                         dflt="$lseeksize"
4368                         case "$yyy" in
4369                         '')     echo " "
4370                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4371                                 ;;
4372                         *)      fpossize=$yyy
4373                                 echo " $fpossize bytes." >&4
4374                                 ;;
4375                         esac
4376                 else
4377                         dflt="$fpossize"
4378                         echo " "
4379                         echo "(I can't compile the test program.  Guessing...)" >&4
4380                         rp="What is the size of your file positions (in bytes)?"
4381                         . ./myread
4382                         fpossize="$ans"
4383                 fi
4384                 $rm -f try.c try
4385         fi
4386         ;;
4387 esac
4388
4389
4390 case "$usemorebits" in
4391 "$define"|true|[yY]*)
4392         use64bitint="$define"
4393         uselongdouble="$define"
4394         usemorebits="$define"
4395         ;;
4396 *)      usemorebits="$undef"
4397         ;;
4398 esac
4399
4400
4401 case "$uselonglong" in
4402 "$define"|true|[yY]*)
4403         cat <<EOM >&4
4404
4405 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4406 EOM
4407         use64bitint="$define"
4408         ;;
4409 esac                          
4410 case "$use64bits" in
4411 "$define"|true|[yY]*)
4412         cat <<EOM >&4
4413
4414 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4415 EOM
4416         use64bitint="$define"
4417         ;;
4418 esac                          
4419 case "$use64bitints" in
4420 "$define"|true|[yY]*)
4421         cat <<EOM >&4
4422
4423 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4424 EOM
4425         use64bitint="$define"
4426         ;;
4427 esac                          
4428 case "$use64bitsint" in
4429 "$define"|true|[yY]*)
4430         cat <<EOM >&4
4431
4432 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4433 EOM
4434         use64bitint="$define"
4435         ;;
4436 esac                          
4437 case "$uselonglongs" in
4438 "$define"|true|[yY]*)
4439         cat <<EOM >&4
4440
4441 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4442 EOM
4443         use64bitint="$define"
4444         ;;
4445 esac                          
4446 case "$use64bitsall" in
4447 "$define"|true|[yY]*)
4448         cat <<EOM >&4
4449
4450 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4451 EOM
4452         use64bitall="$define"
4453         ;;
4454 esac                          
4455
4456 case "$ccflags" in
4457 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4458 esac
4459 case "$use64bitall" in
4460 "$define"|true|[yY]*) use64bitint="$define" ;;
4461 esac
4462
4463 case "$longsize" in
4464 8) cat <<EOM
4465
4466 You have natively 64-bit long integers.
4467 EOM
4468    val="$define"
4469    ;;
4470 *) case "$use64bitint" in
4471    "$define"|true|[yY]*) dflt='y';;
4472    *) dflt='n';;
4473    esac
4474    cat <<EOM
4475
4476 Perl can be built to take advantage of 64-bit integer types
4477 on some systems.  To do so, Configure can be run with -Duse64bitint.
4478 Choosing this option will most probably introduce binary incompatibilities.
4479
4480 If this doesn't make any sense to you, just accept the default '$dflt'.
4481 EOM
4482    rp='Try to use 64-bit integers, if available?'
4483    . ./myread
4484    case "$ans" in
4485    [yY]*) val="$define" ;;
4486    *)     val="$undef"  ;;
4487    esac
4488    ;;
4489 esac
4490 set use64bitint
4491 eval $setvar
4492
4493 case "$use64bitall" in
4494 "$define"|true|[yY]*) dflt='y' ;;
4495 *) case "$longsize" in
4496    8) dflt='y' ;;
4497    *) dflt='n' ;;
4498    esac
4499    ;;
4500 esac    
4501 cat <<EOM
4502
4503 You may also choose to try maximal 64-bitness.  It means using as much
4504 64-bitness as possible on the platform.  This in turn means even more
4505 binary incompatibilities.  On the other hand, your platform may not
4506 have any more 64-bitness available than what you already have chosen.
4507
4508 If this doesn't make any sense to you, just accept the default '$dflt'.
4509 EOM
4510 rp='Try to use maximal 64-bit support, if available?'
4511 . ./myread
4512 case "$ans" in
4513 [yY]*) val="$define" ;;
4514 *)     val="$undef"  ;;
4515 esac
4516 set use64bitall
4517 eval $setvar
4518 case "$use64bitall" in
4519 "$define")
4520         case "$use64bitint" in
4521         "$undef")
4522                 cat <<EOM
4523
4524 Since you have chosen a maximally 64-bit build, I'm also turning on
4525 the use of 64-bit integers.
4526 EOM
4527                 use64bitint="$define" ;;
4528         esac
4529         ;;
4530 esac
4531
4532 case "$use64bitint" in
4533 "$define"|true|[yY]*)
4534 : Look for a hint-file generated 'call-back-unit'.  If the
4535 : user has specified that a 64-bit perl is to be built,
4536 : we may need to set or change some other defaults.
4537         if $test -f use64bitint.cbu; then
4538                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4539                 . ./use64bitint.cbu
4540         fi
4541         case "$longsize" in
4542         4) case "$archname64" in
4543            '') archname64=64int ;;
4544            esac
4545            ;;
4546         esac
4547         ;;
4548 esac
4549
4550 case "$use64bitall" in
4551 "$define"|true|[yY]*)
4552 : Look for a hint-file generated 'call-back-unit'.  If the
4553 : user has specified that a maximally 64-bit perl is to be built,
4554 : we may need to set or change some other defaults.
4555         if $test -f use64bitall.cbu; then
4556                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4557                 . ./use64bitall.cbu
4558         fi
4559         case "$longsize" in
4560         4) case "$archname64" in
4561            ''|64int) archname64=64all ;;
4562            esac
4563            ;;
4564         esac
4565         ;;
4566 esac
4567
4568 echo " "
4569 echo "Checking for GNU C Library..." >&4
4570 cat >gnulibc.c <<EOM
4571 #include <stdio.h>
4572 int main()
4573 {
4574 #ifdef __GLIBC__
4575     exit(0);
4576 #else
4577     exit(1);
4578 #endif
4579 }
4580 EOM
4581 set gnulibc
4582 if eval $compile_ok && ./gnulibc; then
4583         val="$define"
4584         echo "You are using the GNU C Library"
4585 else
4586         val="$undef"
4587         echo "You are not using the GNU C Library"
4588 fi
4589 $rm -f gnulibc*
4590 set d_gnulibc
4591 eval $setvar
4592
4593 : see if nm is to be used to determine whether a symbol is defined or not
4594 case "$usenm" in
4595 '')
4596         dflt=''
4597         case "$d_gnulibc" in
4598         "$define")
4599                 echo " "
4600                 echo "nm probably won't work on the GNU C Library." >&4
4601                 dflt=n
4602                 ;;
4603         esac
4604         case "$dflt" in
4605         '') 
4606                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4607                         echo " "
4608                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4609                         echo "'nm' won't be sufficient on this sytem." >&4
4610                         dflt=n
4611                 fi
4612                 ;;
4613         esac
4614         case "$dflt" in
4615         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4616                 if $test $dflt -gt 20; then
4617                         dflt=y
4618                 else
4619                         dflt=n
4620                 fi
4621                 ;;
4622         esac
4623         ;;
4624 *)
4625         case "$usenm" in
4626         true|$define) dflt=y;;
4627         *) dflt=n;;
4628         esac
4629         ;;
4630 esac
4631 $cat <<EOM
4632
4633 I can use $nm to extract the symbols from your C libraries. This
4634 is a time consuming task which may generate huge output on the disk (up
4635 to 3 megabytes) but that should make the symbols extraction faster. The
4636 alternative is to skip the 'nm' extraction part and to compile a small
4637 test program instead to determine whether each symbol is present. If
4638 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4639 this may be the best solution.
4640
4641 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4642
4643 EOM
4644 rp="Shall I use $nm to extract C symbols from the libraries?"
4645 . ./myread
4646 case "$ans" in
4647 [Nn]*) usenm=false;;
4648 *) usenm=true;;
4649 esac
4650
4651 runnm=$usenm
4652 case "$reuseval" in
4653 true) runnm=false;;
4654 esac
4655
4656 : nm options which may be necessary
4657 case "$nm_opt" in
4658 '') if $test -f /mach_boot; then
4659                 nm_opt=''       # Mach
4660         elif $test -d /usr/ccs/lib; then
4661                 nm_opt='-p'     # Solaris (and SunOS?)
4662         elif $test -f /dgux; then
4663                 nm_opt='-p'     # DG-UX
4664         elif $test -f /lib64/rld; then
4665                 nm_opt='-p'     # 64-bit Irix
4666         else
4667                 nm_opt=''
4668         fi;;
4669 esac
4670
4671 : nm options which may be necessary for shared libraries but illegal
4672 : for archive libraries.  Thank you, Linux.
4673 case "$nm_so_opt" in
4674 '')     case "$myuname" in
4675         *linux*)
4676                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4677                         nm_so_opt='--dynamic'
4678                 fi
4679                 ;;
4680         esac
4681         ;;
4682 esac
4683
4684 case "$runnm" in
4685 true)
4686 : get list of predefined functions in a handy place
4687 echo " "
4688 case "$libc" in
4689 '') libc=unknown
4690         case "$libs" in
4691         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4692         esac
4693         ;;
4694 esac
4695 libnames='';
4696 case "$libs" in
4697 '') ;;
4698 *)  for thislib in $libs; do
4699         case "$thislib" in
4700         -lc|-lc_s)
4701                 : Handle C library specially below.
4702                 ;;
4703         -l*)
4704                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4705                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4706                         :
4707                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4708                         :
4709                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4710                         :
4711                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4712                         :
4713                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4714                         :
4715                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4716                         :
4717                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4718                         :
4719                 else
4720                         try=''
4721                 fi
4722                 libnames="$libnames $try"
4723                 ;;
4724         *) libnames="$libnames $thislib" ;;
4725         esac
4726         done
4727         ;;
4728 esac
4729 xxx=normal
4730 case "$libc" in
4731 unknown)
4732         set /lib/libc.$so
4733         for xxx in $libpth; do
4734                 $test -r $1 || set $xxx/libc.$so
4735                 : The messy sed command sorts on library version numbers.
4736                 $test -r $1 || \
4737                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4738                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4739                                 h
4740                                 s/[0-9][0-9]*/0000&/g
4741                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4742                                 G
4743                                 s/\n/ /' | \
4744                          $sort | $sed -e 's/^.* //'`
4745                 eval set \$$#
4746         done
4747         $test -r $1 || set /usr/ccs/lib/libc.$so
4748         $test -r $1 || set /lib/libsys_s$_a
4749         ;;
4750 *)
4751         set blurfl
4752         ;;
4753 esac
4754 if $test -r "$1"; then
4755         echo "Your (shared) C library seems to be in $1."
4756         libc="$1"
4757 elif $test -r /lib/libc && $test -r /lib/clib; then
4758         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4759         xxx=apollo
4760         libc='/lib/clib /lib/libc'
4761         if $test -r /lib/syslib; then
4762                 echo "(Your math library is in /lib/syslib.)"
4763                 libc="$libc /lib/syslib"
4764         fi
4765 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4766         echo "Your C library seems to be in $libc, as you said before."
4767 elif $test -r $incpath/usr/lib/libc$_a; then
4768         libc=$incpath/usr/lib/libc$_a;
4769         echo "Your C library seems to be in $libc.  That's fine."
4770 elif $test -r /lib/libc$_a; then
4771         libc=/lib/libc$_a;
4772         echo "Your C library seems to be in $libc.  You're normal."
4773 else
4774         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4775                 :
4776         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4777                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4778         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4779                 :
4780         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4781                 :
4782         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4783                 :
4784         else
4785                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4786         fi
4787         if $test -r "$tans"; then
4788                 echo "Your C library seems to be in $tans, of all places."
4789                 libc=$tans
4790         else
4791                 libc='blurfl'
4792         fi
4793 fi
4794 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4795         dflt="$libc"
4796         cat <<EOM
4797
4798 If the guess above is wrong (which it might be if you're using a strange
4799 compiler, or your machine supports multiple models), you can override it here.
4800
4801 EOM
4802 else
4803         dflt=''
4804         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
4805         cat >&4 <<EOM
4806 I can't seem to find your C library.  I've looked in the following places:
4807
4808 EOM
4809         $sed 's/^/      /' libpath
4810         cat <<EOM
4811
4812 None of these seems to contain your C library. I need to get its name...
4813
4814 EOM
4815 fi
4816 fn=f
4817 rp='Where is your C library?'
4818 . ./getfile
4819 libc="$ans"
4820
4821 echo " "
4822 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
4823 set X `cat libnames`
4824 shift
4825 xxx=files
4826 case $# in 1) xxx=file; esac
4827 echo "Extracting names from the following $xxx for later perusal:" >&4
4828 echo " "
4829 $sed 's/^/      /' libnames >&4
4830 echo " "
4831 $echo $n "This may take a while...$c" >&4
4832
4833 for file in $*; do
4834         case $file in
4835         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4836         *) $nm $nm_opt $file 2>/dev/null;;
4837         esac
4838 done >libc.tmp
4839
4840 $echo $n ".$c"
4841 $grep fprintf libc.tmp > libc.ptf
4842 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4843 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4844 xxx='[ADTSIW]'
4845 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4846         eval $xscan;\
4847         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4848                 eval $xrun
4849 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4850         eval $xscan;\
4851         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4852                 eval $xrun
4853 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4854         eval $xscan;\
4855         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4856                 eval $xrun
4857 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4858         eval $xscan;\
4859         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4860                 eval $xrun
4861 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4862         eval $xscan;\
4863         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4864                 eval $xrun
4865 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4866         eval $xscan;\
4867         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4868                 eval $xrun
4869 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4870                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4871         eval $xscan;\
4872         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4873                 eval $xrun
4874 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4875         eval $xscan;\
4876         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4877                 eval $xrun
4878 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4879         eval $xscan;\
4880         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4881                 eval $xrun
4882 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4883         eval $xscan;\
4884         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4885                 eval $xrun
4886 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4887         eval $xscan;\
4888         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4889                 eval $xrun
4890 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4891         eval $xscan;\
4892         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4893                 eval $xrun
4894 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4895         eval $xscan;\
4896         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4897                 eval $xrun
4898 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4899         eval $xscan;\
4900         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4901                 eval $xrun
4902 else
4903         $nm -p $* 2>/dev/null >libc.tmp
4904         $grep fprintf libc.tmp > libc.ptf
4905         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4906                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4907         then
4908                 nm_opt='-p'
4909                 eval $xrun
4910         else
4911                 echo " "
4912                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4913                 com=''
4914                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4915                         for thisname in $libnames $libc; do
4916                                 $ar t $thisname >>libc.tmp
4917                         done
4918                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4919                         echo "Ok." >&4
4920                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4921                         # Repeat libc to extract forwarders to DLL entries too
4922                         for thisname in $libnames $libc; do
4923                                 $ar tv $thisname >>libc.tmp
4924                                 # Revision 50 of EMX has bug in $ar.
4925                                 # it will not extract forwarders to DLL entries
4926                                 # Use emximp which will extract exactly them.
4927                                 emximp -o tmp.imp $thisname \
4928                                     2>/dev/null && \
4929                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4930                                     < tmp.imp >>libc.tmp
4931                                 $rm tmp.imp
4932                         done
4933                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4934                         echo "Ok." >&4
4935                 else
4936                         echo "$ar didn't seem to work right." >&4
4937                         echo "Maybe this is a Cray...trying bld instead..." >&4
4938                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4939                         then
4940                                 for thisname in $libnames; do
4941                                         bld t $libnames | \
4942                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4943                                         $ar t $thisname >>libc.tmp
4944                                 done
4945                                 echo "Ok." >&4
4946                         else
4947                                 echo "That didn't work either.  Giving up." >&4
4948                                 exit 1
4949                         fi
4950                 fi
4951         fi
4952 fi
4953 nm_extract="$com"
4954 if $test -f /lib/syscalls.exp; then
4955         echo " "
4956         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4957         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4958 fi
4959 ;;
4960 esac
4961 $rm -f libnames libpath
4962
4963 : is a C symbol defined?
4964 csym='tlook=$1;
4965 case "$3" in
4966 -v) tf=libc.tmp; tc=""; tdc="";;
4967 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4968 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4969 esac;
4970 tx=yes;
4971 case "$reuseval-$4" in
4972 true-) ;;
4973 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4974 esac;
4975 case "$tx" in
4976 yes)
4977         case "$runnm" in
4978         true)
4979                 if $contains $tlook $tf >/dev/null 2>&1;
4980                 then tval=true;
4981                 else tval=false;
4982                 fi;;
4983         *)
4984                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4985                 if $cc -o t $optimize $ccflags $ldflags t.c $libs >/dev/null 2>&1;
4986                 then tval=true;
4987                 else tval=false;
4988                 fi;
4989                 $rm -f t t.c;;
4990         esac;;
4991 *)
4992         case "$tval" in
4993         $define) tval=true;;
4994         *) tval=false;;
4995         esac;;
4996 esac;
4997 eval "$2=$tval"'
4998
4999 : define an is-in-libc? function
5000 inlibc='echo " "; td=$define; tu=$undef;
5001 sym=$1; var=$2; eval "was=\$$2";
5002 tx=yes;
5003 case "$reuseval$was" in
5004 true) ;;
5005 true*) tx=no;;
5006 esac;
5007 case "$tx" in
5008 yes)
5009         set $sym tres -f;
5010         eval $csym;
5011         case "$tres" in
5012         true)
5013                 echo "$sym() found." >&4;
5014                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5015         *)
5016                 echo "$sym() NOT found." >&4;
5017                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5018         esac;;
5019 *)
5020         case "$was" in
5021         $define) echo "$sym() found." >&4;;
5022         *) echo "$sym() NOT found." >&4;;
5023         esac;;
5024 esac'
5025
5026 : see if sqrtl exists
5027 set sqrtl d_sqrtl
5028 eval $inlibc
5029
5030 case "$ccflags" in
5031 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5032 esac
5033
5034 case "$uselongdouble" in
5035 $define|true|[yY]*)     dflt='y';;
5036 *) dflt='n';;
5037 esac
5038 cat <<EOM
5039
5040 Perl can be built to take advantage of long doubles which
5041 (if available) may give more accuracy and range for floating point numbers.
5042
5043 If this doesn't make any sense to you, just accept the default '$dflt'.
5044 EOM
5045 rp='Try to use long doubles if available?'
5046 . ./myread
5047 case "$ans" in
5048 y|Y)    val="$define"   ;;
5049 *)      val="$undef"    ;;
5050 esac
5051 set uselongdouble
5052 eval $setvar
5053
5054 case "$uselongdouble" in
5055 true|[yY]*) uselongdouble="$define" ;;
5056 esac
5057
5058 case "$uselongdouble" in
5059 $define)
5060 : Look for a hint-file generated 'call-back-unit'.  If the
5061 : user has specified that long doubles should be used,
5062 : we may need to set or change some other defaults.
5063         if $test -f uselongdouble.cbu; then
5064                 echo "Your platform has some specific hints for long doubles, using them..."
5065                 . ./uselongdouble.cbu
5066         else
5067                 $cat <<EOM
5068 (Your platform doesn't have any specific hints for long doubles.)
5069 EOM
5070         fi
5071         ;;
5072 esac
5073
5074 case "$uselongdouble:$d_sqrtl" in
5075 $define:$undef)
5076                 $cat <<EOM >&4
5077
5078 *** You requested the use of long doubles but you do not seem to have
5079 *** the mathematic functions for long doubles.  I'm disabling the use
5080 *** of long doubles.
5081
5082 EOM
5083         uselongdouble=$undef
5084         ;;
5085 esac
5086
5087 : check for length of double
5088 echo " "
5089 case "$doublesize" in
5090 '')
5091         echo "Checking to see how big your double precision numbers are..." >&4
5092         $cat >try.c <<'EOCP'
5093 #include <stdio.h>
5094 int main()
5095 {
5096     printf("%d\n", (int)sizeof(double));
5097     exit(0);
5098 }
5099 EOCP
5100         set try
5101         if eval $compile_ok; then
5102                 doublesize=`./try`
5103                 echo "Your double is $doublesize bytes long."
5104         else
5105                 dflt='8'
5106                 echo "(I can't seem to compile the test program.  Guessing...)"
5107                 rp="What is the size of a double precision number (in bytes)?"
5108                 . ./myread
5109                 doublesize="$ans"
5110         fi
5111         ;;
5112 esac
5113 $rm -f try.c try
5114
5115 : check for long doubles
5116 echo " "
5117 echo "Checking to see if you have long double..." >&4
5118 echo 'int main() { long double x = 7.0; }' > try.c
5119 set try
5120 if eval $compile; then
5121         val="$define"
5122         echo "You have long double."
5123 else
5124         val="$undef"
5125         echo "You do not have long double."
5126 fi
5127 $rm try.*
5128 set d_longdbl
5129 eval $setvar
5130
5131 : check for length of long double
5132 case "${d_longdbl}${longdblsize}" in
5133 $define)
5134         echo " "
5135         echo "Checking to see how big your long doubles are..." >&4
5136         $cat >try.c <<'EOCP'
5137 #include <stdio.h>
5138 int main()
5139 {
5140         printf("%d\n", sizeof(long double));
5141 }
5142 EOCP
5143         set try
5144         set try
5145         if eval $compile; then
5146                 longdblsize=`./try$exe_ext`
5147                 echo "Your long doubles are $longdblsize bytes long."
5148         else
5149                 dflt='8'
5150                 echo " "
5151                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5152                 rp="What is the size of a long double (in bytes)?"
5153                 . ./myread
5154                 longdblsize="$ans"
5155         fi
5156         if $test "X$doublesize" = "X$longdblsize"; then
5157                 echo "(That isn't any different from an ordinary double.)"
5158         fi      
5159         ;;
5160 esac
5161 $rm -f try.* try
5162
5163 : determine the architecture name
5164 echo " "
5165 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5166         tarch=`arch`"-$osname"
5167 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5168         if uname -m > tmparch 2>&1 ; then
5169                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5170                         -e 's/$/'"-$osname/" tmparch`
5171         else
5172                 tarch="$osname"
5173         fi
5174         $rm -f tmparch
5175 else
5176         tarch="$osname"
5177 fi
5178 case "$myarchname" in
5179 ''|"$tarch") ;;
5180 *)
5181         echo "(Your architecture name used to be $myarchname.)"
5182         archname=''
5183         ;;
5184 esac
5185 myarchname="$tarch"
5186 case "$archname" in
5187 '') dflt="$tarch";;
5188 *) dflt="$archname";;
5189 esac
5190 rp='What is your architecture name'
5191 . ./myread
5192 archname="$ans"
5193 case "$usethreads" in
5194 $define)
5195         echo "Threads selected." >&4
5196         case "$archname" in
5197         *-thread*) echo "...and architecture name already has -thread." >&4
5198                 ;;
5199         *)      archname="$archname-thread"
5200                 echo "...setting architecture name to $archname." >&4
5201                 ;;
5202         esac
5203         ;;
5204 esac
5205 case "$usemultiplicity" in
5206 $define)
5207         echo "Multiplicity selected." >&4
5208         case "$archname" in
5209         *-multi*) echo "...and architecture name already has -multi." >&4
5210                 ;;
5211         *)      archname="$archname-multi"
5212                 echo "...setting architecture name to $archname." >&4
5213                 ;;
5214         esac
5215         ;;
5216 esac
5217 case "$use64bitint$use64bitall" in
5218 *"$define"*)
5219         case "$archname64" in
5220         '')
5221                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5222                 ;;
5223         *)
5224                 case "$use64bitint" in
5225                 "$define") echo "64 bit integers selected." >&4 ;;
5226                 esac
5227                 case "$use64bitall" in
5228                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5229                 esac
5230                 case "$archname" in
5231                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5232                         ;;
5233                 *)      archname="$archname-$archname64"
5234                         echo "...setting architecture name to $archname." >&4
5235                         ;;
5236                 esac
5237                 ;;
5238         esac
5239 esac
5240 case "$uselongdouble" in
5241 $define)
5242         echo "Long doubles selected." >&4
5243         case "$longdblsize" in
5244         $doublesize)
5245                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5246                 ;;
5247         *)
5248                 case "$archname" in
5249                 *-ld*) echo "...and architecture name already has -ld." >&4
5250                         ;;
5251                 *)      archname="$archname-ld"
5252                         echo "...setting architecture name to $archname." >&4
5253                         ;;
5254                 esac
5255                 ;;
5256         esac
5257         ;;
5258 esac
5259
5260 : determine root of directory hierarchy where package will be installed.
5261 case "$prefix" in
5262 '')
5263         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5264         ;;
5265 *)
5266         dflt="$prefix"
5267         ;;
5268 esac
5269 $cat <<EOM
5270
5271 By default, $package will be installed in $dflt/bin, manual pages
5272 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5273 installation directories. Typically this is something like /usr/local.
5274 If you wish to have binaries under /usr/bin but other parts of the
5275 installation under /usr/local, that's ok: you will be prompted
5276 separately for each of the installation directories, the prefix being
5277 only used to set the defaults.
5278
5279 EOM
5280 fn=d~
5281 rp='Installation prefix to use?'
5282 . ./getfile
5283 oldprefix=''
5284 case "$prefix" in
5285 '') ;;
5286 *)
5287         case "$ans" in
5288         "$prefix") ;;
5289         *) oldprefix="$prefix";;
5290         esac
5291         ;;
5292 esac
5293 prefix="$ans"
5294 prefixexp="$ansexp"
5295
5296 : is AFS running?
5297 echo " "
5298 case "$afs" in
5299 $define|true)   afs=true ;;
5300 $undef|false)   afs=false ;;
5301 *)      if test -d /afs; then
5302                 afs=true
5303         else
5304                 afs=false
5305         fi
5306         ;;
5307 esac
5308 if $afs; then
5309         echo "AFS may be running... I'll be extra cautious then..." >&4
5310 else
5311         echo "AFS does not seem to be running..." >&4
5312 fi
5313
5314 : determine installation prefix for where package is to be installed.
5315 if $afs; then 
5316 $cat <<EOM
5317
5318 Since you are running AFS, I need to distinguish the directory in which
5319 files will reside from the directory in which they are installed (and from
5320 which they are presumably copied to the former directory by occult means).
5321
5322 EOM
5323         case "$installprefix" in
5324         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5325         *) dflt="$installprefix";;
5326         esac
5327 else
5328 $cat <<EOM
5329
5330 In some special cases, particularly when building $package for distribution,
5331 it is convenient to distinguish between the directory in which files should 
5332 be installed from the directory ($prefix) in which they 
5333 will eventually reside.  For most users, these two directories are the same.
5334
5335 EOM
5336         case "$installprefix" in
5337         '') dflt=$prefix ;;
5338         *) dflt=$installprefix;;
5339         esac
5340 fi
5341 fn=d~
5342 rp='What installation prefix should I use for installing files?'
5343 . ./getfile
5344 installprefix="$ans"
5345 installprefixexp="$ansexp"
5346
5347 : set the prefixit variable, to compute a suitable default value
5348 prefixit='case "$3" in
5349 ""|none)
5350         case "$oldprefix" in
5351         "") eval "$1=\"\$$2\"";;
5352         *)
5353                 case "$3" in
5354                 "") eval "$1=";;
5355                 none)
5356                         eval "tp=\"\$$2\"";
5357                         case "$tp" in
5358                         ""|" ") eval "$1=\"\$$2\"";;
5359                         *) eval "$1=";;
5360                         esac;;
5361                 esac;;
5362         esac;;
5363 *)
5364         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5365         case "$tp" in
5366         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5367         /*-$oldprefix/*|\~*-$oldprefix/*)
5368                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5369         *) eval "$1=\"\$$2\"";;
5370         esac;;
5371 esac'
5372
5373
5374 : get the patchlevel
5375 echo " "
5376 echo "Getting the current patchlevel..." >&4
5377 if $test -r $rsrc/patchlevel.h;then
5378         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5379         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5380         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5381         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5382         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5383         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5384 else
5385         revision=0
5386         patchlevel=0
5387         subversion=0
5388         api_revision=0
5389         api_version=0
5390         api_subversion=0
5391 fi
5392 $echo "(You have $package version $patchlevel subversion $subversion.)"
5393 case "$osname" in
5394 dos|vms)
5395         : XXX Should be a Configure test for double-dots in filenames.
5396         version=`echo $revision $patchlevel $subversion | \
5397                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5398         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5399                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5400         ;;
5401 *)
5402         version=`echo $revision $patchlevel $subversion | \
5403                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5404         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5405                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5406         ;;
5407 esac
5408 : Special case the 5.005_xx maintenance series, which used 5.005
5409 : without any subversion label as a subdirectory in $sitelib
5410 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5411         api_versionstring='5.005'
5412 fi
5413
5414 : determine installation style
5415 : For now, try to deduce it from prefix unless it is already set.
5416 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5417 case "$installstyle" in
5418 '')     case "$prefix" in
5419                 *perl*) dflt='lib';;
5420                 *) dflt='lib/perl5' ;;
5421         esac
5422         ;;
5423 *)      dflt="$installstyle" ;;
5424 esac
5425 : Probably not worth prompting for this since we prompt for all
5426 : the directories individually, and the prompt would be too long and
5427 : confusing anyway.
5428 installstyle=$dflt
5429
5430 : determine where private library files go
5431 : Usual default is /usr/local/lib/perl5/$version.
5432 : Also allow things like /opt/perl/lib/$version, since 
5433 : /opt/perl/lib/perl5... would be redundant.
5434 : The default "style" setting is made in installstyle.U
5435 case "$installstyle" in
5436 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5437 *)       set dflt privlib lib/$version ;;
5438 esac
5439 eval $prefixit
5440 $cat <<EOM
5441
5442 There are some auxiliary files for $package that need to be put into a
5443 private library directory that is accessible by everyone.
5444
5445 EOM
5446 fn=d~+
5447 rp='Pathname where the private library files will reside?'
5448 . ./getfile
5449 privlib="$ans"
5450 privlibexp="$ansexp"
5451 : Change installation prefix, if necessary.
5452 if $test X"$prefix" != X"$installprefix"; then
5453         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5454 else
5455         installprivlib="$privlibexp"
5456 fi
5457
5458 : set the prefixup variable, to restore leading tilda escape
5459 prefixup='case "$prefixexp" in
5460 "$prefix") ;;
5461 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5462 esac'
5463
5464 : determine where public architecture dependent libraries go
5465 set archlib archlib
5466 eval $prefixit
5467 : privlib default is /usr/local/lib/$package/$version
5468 : archlib default is /usr/local/lib/$package/$version/$archname
5469 : privlib may have an optional trailing /share.
5470 tdflt=`echo $privlib | $sed 's,/share$,,'`
5471 tdflt=$tdflt/$archname
5472 case "$archlib" in
5473 '')     dflt=$tdflt
5474         ;;
5475 *)      dflt="$archlib"
5476     ;;
5477 esac
5478 $cat <<EOM
5479
5480 $spackage contains architecture-dependent library files.  If you are
5481 sharing libraries in a heterogeneous environment, you might store
5482 these files in a separate location.  Otherwise, you can just include
5483 them with the rest of the public library files.
5484
5485 EOM
5486 fn=d+~
5487 rp='Where do you want to put the public architecture-dependent libraries?'
5488 . ./getfile
5489 archlib="$ans"
5490 archlibexp="$ansexp"
5491 if $test X"$archlib" = X"$privlib"; then
5492         d_archlib="$undef"
5493 else
5494         d_archlib="$define"
5495 fi
5496 : Change installation prefix, if necessary.
5497 if $test X"$prefix" != X"$installprefix"; then
5498         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5499 else
5500         installarchlib="$archlibexp"
5501 fi
5502
5503
5504 : Binary compatibility with 5.005 is not possible for builds
5505 : with advanced features
5506 case "$usethreads$usemultiplicity" in
5507 *define*)
5508         bincompat5005="$undef"
5509         d_bincompat5005="$undef"
5510         ;;
5511 *)      $cat <<EOM
5512
5513 This version of Perl can be compiled for binary compatibility with 5.005.
5514 If you decide to do so, you will be able to continue using most of the
5515 extensions that were compiled for Perl 5.005.
5516
5517 EOM
5518         case "$bincompat5005$d_bincompat5005" in
5519         *"$undef"*) dflt=n ;;
5520         *) dflt=y ;;
5521         esac
5522         rp='Binary compatibility with Perl 5.005?'
5523         . ./myread
5524         case "$ans" in
5525         y*) val="$define" ;;
5526         *)  val="$undef" ;;
5527         esac
5528         set d_bincompat5005
5529         eval $setvar
5530         case "$d_bincompat5005" in
5531         "$define")
5532                 bincompat5005="$define"
5533                 ;;
5534         *)      bincompat5005="$undef"
5535                 d_bincompat5005="$undef"
5536                 ;;
5537         esac
5538         ;;
5539 esac
5540
5541
5542 : see if setuid scripts can be secure
5543 $cat <<EOM
5544
5545 Some kernels have a bug that prevents setuid #! scripts from being
5546 secure.  Some sites have disabled setuid #! scripts because of this.
5547
5548 First let's decide if your kernel supports secure setuid #! scripts.
5549 (If setuid #! scripts would be secure but have been disabled anyway,
5550 don't say that they are secure if asked.)
5551
5552 EOM
5553
5554 val="$undef"
5555 if $test -d /dev/fd; then
5556         echo "#!$ls" >reflect
5557         chmod +x,u+s reflect
5558         ./reflect >flect 2>&1
5559         if $contains "/dev/fd" flect >/dev/null; then
5560                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5561                 val="$define"
5562         else
5563                 $cat <<EOM
5564 If you are not sure if they are secure, I can check but I'll need a
5565 username and password different from the one you are using right now.
5566 If you don't have such a username or don't want me to test, simply
5567 enter 'none'.
5568
5569 EOM
5570                 rp='Other username to test security of setuid scripts with?'
5571                 dflt='none'
5572                 . ./myread
5573                 case "$ans" in
5574                 n|none)
5575                         case "$d_suidsafe" in
5576                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5577                                 dflt=n;;
5578                         "$undef")
5579                                 echo "Well, the $hint value is *not* secure." >&4
5580                                 dflt=n;;
5581                         *)      echo "Well, the $hint value *is* secure." >&4
5582                                 dflt=y;;
5583                         esac
5584                         ;;
5585                 *)
5586                         $rm -f reflect flect
5587                         echo "#!$ls" >reflect
5588                         chmod +x,u+s reflect
5589                         echo >flect
5590                         chmod a+w flect
5591                         echo '"su" will (probably) prompt you for '"$ans's password."
5592                         su $ans -c './reflect >flect'
5593                         if $contains "/dev/fd" flect >/dev/null; then
5594                                 echo "Okay, it looks like setuid scripts are secure." >&4
5595                                 dflt=y
5596                         else
5597                                 echo "I don't think setuid scripts are secure." >&4
5598                                 dflt=n
5599                         fi
5600                         ;;
5601                 esac
5602                 rp='Does your kernel have *secure* setuid scripts?'
5603                 . ./myread
5604                 case "$ans" in
5605                 [yY]*)  val="$define";;
5606                 *)      val="$undef";;
5607                 esac
5608         fi
5609 else
5610         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5611         echo "(That's for file descriptors, not floppy disks.)"
5612         val="$undef"
5613 fi
5614 set d_suidsafe
5615 eval $setvar
5616
5617 $rm -f reflect flect
5618
5619 : now see if they want to do setuid emulation
5620 echo " "
5621 val="$undef"
5622 case "$d_suidsafe" in
5623 "$define")
5624         val="$undef"
5625         echo "No need to emulate SUID scripts since they are secure here." >& 4
5626         ;;
5627 *)
5628         $cat <<EOM
5629 Some systems have disabled setuid scripts, especially systems where
5630 setuid scripts cannot be secure.  On systems where setuid scripts have
5631 been disabled, the setuid/setgid bits on scripts are currently
5632 useless.  It is possible for $package to detect those bits and emulate
5633 setuid/setgid in a secure fashion.  This emulation will only work if
5634 setuid scripts have been disabled in your kernel.
5635
5636 EOM
5637         case "$d_dosuid" in
5638         "$define") dflt=y ;;
5639         *) dflt=n ;;
5640         esac
5641         rp="Do you want to do setuid/setgid emulation?"
5642         . ./myread
5643         case "$ans" in
5644         [yY]*)  val="$define";;
5645         *)      val="$undef";;
5646         esac
5647         ;;
5648 esac
5649 set d_dosuid
5650 eval $setvar
5651
5652 : determine filename position in cpp output
5653 echo " "
5654 echo "Computing filename position in cpp output for #include directives..." >&4
5655 echo '#include <stdio.h>' > foo.c
5656 $cat >fieldn <<EOF
5657 $startsh
5658 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5659 $grep '^[       ]*#.*stdio\.h' | \
5660 while read cline; do
5661         pos=1
5662         set \$cline
5663         while $test \$# -gt 0; do
5664                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5665                         echo "\$pos"
5666                         exit 0
5667                 fi
5668                 shift
5669                 pos=\`expr \$pos + 1\`
5670         done
5671 done
5672 EOF
5673 chmod +x fieldn
5674 fieldn=`./fieldn`
5675 $rm -f foo.c fieldn
5676 case $fieldn in
5677 '') pos='???';;
5678 1) pos=first;;
5679 2) pos=second;;
5680 3) pos=third;;
5681 *) pos="${fieldn}th";;
5682 esac
5683 echo "Your cpp writes the filename in the $pos field of the line."
5684
5685 : locate header file
5686 $cat >findhdr <<EOF
5687 $startsh
5688 wanted=\$1
5689 name=''
5690 for usrincdir in $usrinc
5691 do
5692         if test -f \$usrincdir/\$wanted; then
5693                 echo "\$usrincdir/\$wanted"
5694                 exit 0
5695         fi
5696 done
5697 awkprg='{ print \$$fieldn }'
5698 echo "#include <\$wanted>" > foo\$\$.c
5699 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5700 $grep "^[       ]*#.*\$wanted" | \
5701 while read cline; do
5702         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5703         case "\$name" in
5704         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5705         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5706         *) exit 2;;
5707         esac;
5708 done;
5709 #
5710 # status = 0: grep returned 0 lines, case statement not executed
5711 # status = 1: headerfile found
5712 # status = 2: while loop executed, no headerfile found
5713 #
5714 status=\$?
5715 $rm -f foo\$\$.c;
5716 if test \$status -eq 1; then
5717         exit 0;
5718 fi
5719 exit 1
5720 EOF
5721 chmod +x findhdr
5722
5723 : define an alternate in-header-list? function
5724 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5725 cont=true; xxf="echo \"<\$1> found.\" >&4";
5726 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5727 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5728 esac;
5729 case $# in 4) instead=instead;; *) instead="at last";; esac;
5730 while $test "$cont"; do
5731         xxx=`./findhdr $1`
5732         var=$2; eval "was=\$$2";
5733         if $test "$xxx" && $test -r "$xxx";
5734         then eval $xxf;
5735         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5736                 cont="";
5737         else eval $xxnf;
5738         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5739         set $yyy; shift; shift; yyy=$@;
5740         case $# in 0) cont="";;
5741         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5742                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5743         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5744                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5745         esac;
5746 done;
5747 while $test "$yyy";
5748 do set $yyy; var=$2; eval "was=\$$2";
5749         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5750         set $yyy; shift; shift; yyy=$@;
5751 done'
5752
5753 : see if this is a malloc.h system
5754 set malloc.h i_malloc
5755 eval $inhdr
5756
5757 : see if stdlib is available
5758 set stdlib.h i_stdlib
5759 eval $inhdr
5760
5761 : determine which malloc to compile in
5762 echo " "
5763 case "$usemymalloc" in
5764 ''|[yY]*|true|$define)  dflt='y' ;;
5765 *)      dflt='n' ;;
5766 esac
5767 rp="Do you wish to attempt to use the malloc that comes with $package?"
5768 . ./myread
5769 usemymalloc="$ans"
5770 case "$ans" in
5771 y*|true)
5772         usemymalloc='y'
5773         mallocsrc='malloc.c'
5774         mallocobj="malloc$_o"
5775         d_mymalloc="$define"
5776         case "$libs" in
5777         *-lmalloc*)
5778                 : Remove malloc from list of libraries to use
5779                 echo "Removing unneeded -lmalloc from library list" >&4
5780                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5781                 shift
5782                 libs="$*"
5783                 echo "libs = $libs" >&4
5784                 ;;
5785         esac
5786         ;;
5787 *)
5788         usemymalloc='n'
5789         mallocsrc=''
5790         mallocobj=''
5791         d_mymalloc="$undef"
5792         ;;
5793 esac
5794
5795 : compute the return types of malloc and free
5796 echo " "
5797 $cat >malloc.c <<END
5798 #$i_malloc I_MALLOC
5799 #$i_stdlib I_STDLIB
5800 #include <stdio.h>
5801 #include <sys/types.h>
5802 #ifdef I_MALLOC
5803 #include <malloc.h>
5804 #endif
5805 #ifdef I_STDLIB
5806 #include <stdlib.h>
5807 #endif
5808 #ifdef TRY_MALLOC
5809 void *malloc();
5810 #endif
5811 #ifdef TRY_FREE
5812 void free();
5813 #endif
5814 END
5815 case "$malloctype" in
5816 '')
5817         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5818                 malloctype='void *'
5819         else
5820                 malloctype='char *'
5821         fi
5822         ;;
5823 esac
5824 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5825
5826 case "$freetype" in
5827 '')
5828         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5829                 freetype='void'
5830         else
5831                 freetype='int'
5832         fi
5833         ;;
5834 esac
5835 echo "Your system uses $freetype free(), it would seem." >&4
5836 $rm -f malloc.[co]
5837 $cat <<EOM
5838
5839 After $package is installed, you may wish to install various
5840 add-on modules and utilities.  Typically, these add-ons will
5841 be installed under $prefix with the rest
5842 of this package.  However, you may wish to install such add-ons
5843 elsewhere under a different prefix.
5844
5845 If you do not wish to put everything under a single prefix, that's
5846 ok.  You will be prompted for the individual locations; this siteprefix
5847 is only used to suggest the defaults.
5848
5849 The default should be fine for most people.
5850
5851 EOM
5852 fn=d~+
5853 rp='Installation prefix to use for add-on modules and utilities?'
5854 : XXX Here might be another good place for an installstyle setting.
5855 case "$siteprefix" in
5856 '') dflt=$prefix ;;
5857 *)  dflt=$siteprefix ;;
5858 esac
5859 . ./getfile
5860 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5861 oldsiteprefix=''
5862 case "$siteprefix" in
5863 '') ;;
5864 *)      case "$ans" in
5865         "$prefix") ;;
5866         *) oldsiteprefix="$prefix";;
5867         esac
5868         ;;
5869 esac
5870 siteprefix="$ans"
5871 siteprefixexp="$ansexp"
5872
5873 : determine where site specific libraries go.
5874 : Usual default is /usr/local/lib/perl5/site_perl/$version
5875 : The default "style" setting is made in installstyle.U
5876 : XXX No longer works with Prefixit stuff.
5877 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5878 case "$sitelib" in
5879 '') case "$installstyle" in
5880         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5881         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5882         esac
5883         ;;
5884 *)      dflt="$sitelib"
5885         ;;
5886 esac
5887 $cat <<EOM
5888
5889 The installation process will create a directory for
5890 site-specific extensions and modules.  Most users find it convenient
5891 to place all site-specific files in this directory rather than in the
5892 main distribution directory.
5893
5894 EOM
5895 fn=d~+
5896 rp='Pathname for the site-specific library files?'
5897 . ./getfile
5898 sitelib="$ans"
5899 sitelibexp="$ansexp"
5900 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5901 : Change installation prefix, if necessary.
5902 if $test X"$prefix" != X"$installprefix"; then
5903         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5904 else
5905         installsitelib="$sitelibexp"
5906 fi
5907
5908 : determine where site specific architecture-dependent libraries go.
5909 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5910 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5911 : sitelib may have an optional trailing /share.
5912 case "$sitearch" in
5913 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5914         dflt="$dflt/$archname"
5915         ;;
5916 *)      dflt="$sitearch"
5917         ;;
5918 esac
5919 set sitearch sitearch none
5920 eval $prefixit
5921 $cat <<EOM
5922
5923 The installation process will also create a directory for
5924 architecture-dependent site-specific extensions and modules.
5925
5926 EOM
5927 fn=d~+
5928 rp='Pathname for the site-specific architecture-dependent library files?'
5929 . ./getfile
5930 sitearch="$ans"
5931 sitearchexp="$ansexp"
5932 : Change installation prefix, if necessary.
5933 if $test X"$prefix" != X"$installprefix"; then
5934         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5935 else
5936         installsitearch="$sitearchexp"
5937 fi
5938
5939 $cat <<EOM
5940
5941 The installation process will also create a directory for
5942 vendor-supplied add-ons.  Vendors who supply perl with their system
5943 may find it convenient to place all vendor-supplied files in this
5944 directory rather than in the main distribution directory.  This will
5945 ease upgrades between binary-compatible maintenance versions of perl.
5946
5947 Of course you may also use these directories in whatever way you see
5948 fit.  For example, you might use them to access modules shared over a
5949 company-wide network.
5950
5951 The default answer should be fine for most people.
5952 This causes further questions about vendor add-ons to be skipped
5953 and no vendor-specific directories will be configured for perl.
5954
5955 EOM
5956 rp='Do you want to configure vendor-specific add-on directories?'
5957 case "$usevendorprefix" in
5958 define|true|[yY]*) dflt=y ;;
5959 *)      : User may have set vendorprefix directly on Configure command line.
5960         case "$vendorprefix" in
5961         ''|' ') dflt=n ;;
5962         *)      dflt=y ;;
5963         esac
5964         ;;
5965 esac
5966 . ./myread
5967 case "$ans" in
5968 [yY]*)  fn=d~+
5969         rp='Installation prefix to use for vendor-supplied add-ons?'
5970         case "$vendorprefix" in
5971         '') dflt='' ;;
5972         *)  dflt=$vendorprefix ;;
5973         esac
5974         . ./getfile
5975         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5976         oldvendorprefix=''
5977         case "$vendorprefix" in
5978         '') ;;
5979         *)      case "$ans" in
5980                 "$prefix") ;;
5981                 *) oldvendorprefix="$prefix";;
5982                 esac
5983                 ;;
5984         esac
5985         usevendorprefix="$define"
5986         vendorprefix="$ans"
5987         vendorprefixexp="$ansexp"
5988         ;;
5989 *)      usevendorprefix="$undef"
5990         vendorprefix=''
5991         vendorprefixexp=''
5992         ;;
5993 esac
5994
5995 case "$vendorprefix" in
5996 '')     d_vendorlib="$undef"
5997         vendorlib=''
5998         vendorlibexp=''
5999         ;;
6000 *)      d_vendorlib="$define"
6001         : determine where vendor-supplied modules go.
6002         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
6003         case "$vendorlib" in
6004         '')
6005                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6006                 case "$installstyle" in
6007                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6008                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6009                 esac
6010                 ;;
6011         *)      dflt="$vendorlib"
6012                 ;;
6013         esac
6014         fn=d~+
6015         rp='Pathname for the vendor-supplied library files?'
6016         . ./getfile
6017         vendorlib="$ans"
6018         vendorlibexp="$ansexp"
6019         ;;
6020 esac
6021 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6022 : Change installation prefix, if necessary.
6023 if $test X"$prefix" != X"$installprefix"; then
6024         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6025 else
6026         installvendorlib="$vendorlibexp"
6027 fi
6028
6029 case "$vendorprefix" in
6030 '')     d_vendorarch="$undef"
6031         vendorarch=''
6032         vendorarchexp=''
6033         ;;
6034 *)      d_vendorarch="$define"
6035         : determine where vendor-supplied architecture-dependent libraries go.
6036         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6037         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6038         : vendorlib may have an optional trailing /share.
6039         case "$vendorarch" in
6040         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6041                 dflt="$dflt/$archname"
6042                 ;;
6043         *)      dflt="$vendorarch" ;;
6044         esac
6045         fn=d~+
6046         rp='Pathname for vendor-supplied architecture-dependent files?'
6047         . ./getfile
6048         vendorarch="$ans"
6049         vendorarchexp="$ansexp"
6050         ;;
6051 esac
6052 : Change installation prefix, if necessary.
6053 if $test X"$prefix" != X"$installprefix"; then
6054         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6055 else
6056         installvendorarch="$vendorarchexp"
6057 fi
6058
6059 : Final catch-all directories to search
6060 $cat <<EOM
6061
6062 Lastly, you can have perl look in other directories for extensions and
6063 modules in addition to those already specified.
6064 These directories will be searched after 
6065         $sitearch 
6066         $sitelib 
6067 EOM
6068 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6069 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6070 echo ' '
6071 case "$otherlibdirs" in
6072 ''|' ') dflt='none' ;;
6073 *)      dflt="$otherlibdirs" ;;
6074 esac
6075 $cat <<EOM
6076 Enter a colon-separated set of extra paths to include in perl's @INC
6077 search path, or enter 'none' for no extra paths.
6078
6079 EOM
6080
6081 rp='Colon-separated list of additional directories for perl to search?'
6082 . ./myread
6083 case "$ans" in
6084 ' '|''|none)    otherlibdirs=' ' ;;     
6085 *)      otherlibdirs="$ans" ;;
6086 esac
6087 case "$otherlibdirs" in
6088 ' ') val=$undef ;;
6089 *)      val=$define ;;
6090 esac
6091 set d_perl_otherlibdirs
6092 eval $setvar
6093
6094 : Cruising for prototypes
6095 echo " "
6096 echo "Checking out function prototypes..." >&4
6097 $cat >prototype.c <<'EOCP'
6098 int main(int argc, char *argv[]) {
6099         exit(0);}
6100 EOCP
6101 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6102         echo "Your C compiler appears to support function prototypes."
6103         val="$define"
6104 else
6105         echo "Your C compiler doesn't seem to understand function prototypes."
6106         val="$undef"
6107 fi
6108 set prototype
6109 eval $setvar
6110 $rm -f prototype*
6111
6112 case "$prototype" in
6113 "$define") ;;
6114 *)      ansi2knr='ansi2knr'
6115         echo " "
6116         cat <<EOM >&4
6117
6118 $me:  FATAL ERROR:
6119 This version of $package can only be compiled by a compiler that 
6120 understands function prototypes.  Unfortunately, your C compiler 
6121         $cc $ccflags
6122 doesn't seem to understand them.  Sorry about that.
6123
6124 If GNU cc is available for your system, perhaps you could try that instead.  
6125
6126 Eventually, we hope to support building Perl with pre-ANSI compilers.
6127 If you would like to help in that effort, please contact <perlbug@perl.org>.
6128
6129 Aborting Configure now.
6130 EOM
6131         exit 2
6132         ;;
6133 esac
6134
6135 : determine where public executables go
6136 echo " "
6137 set dflt bin bin
6138 eval $prefixit
6139 fn=d~
6140 rp='Pathname where the public executables will reside?'
6141 . ./getfile
6142 if $test "X$ansexp" != "X$binexp"; then
6143         installbin=''
6144 fi
6145 bin="$ans"
6146 binexp="$ansexp"
6147 : Change installation prefix, if necessary.
6148 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6149 if $test X"$prefix" != X"$installprefix"; then
6150         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6151 else
6152         installbin="$binexp"
6153 fi
6154
6155 : Find perl5.005 or later.
6156 echo "Looking for a previously installed perl5.005 or later... "
6157 case "$perl5" in
6158 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6159                 : Check if this perl is recent and can load a simple module
6160                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6161                         perl5=$tdir/perl
6162                         break;
6163                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6164                         perl5=$tdir/perl
6165                         break;
6166                 fi
6167         done
6168         ;;
6169 *)      perl5="$perl5"
6170         ;;
6171 esac
6172 case "$perl5" in
6173 '')     echo "None found.  That's ok.";;
6174 *)      echo "Using $perl5." ;;
6175 esac
6176
6177 : Determine list of previous versions to include in @INC
6178 $cat > getverlist <<EOPL
6179 #!$perl5 -w
6180 use File::Basename;
6181 \$api_versionstring = "$api_versionstring";
6182 \$version = "$version";
6183 \$stem = "$sitelib_stem";
6184 \$archname = "$archname";
6185 EOPL
6186         $cat >> getverlist <<'EOPL'
6187 # Can't have leading @ because metaconfig interprets it as a command!
6188 ;@inc_version_list=();
6189 # XXX Redo to do opendir/readdir? 
6190 if (-d $stem) {
6191     chdir($stem);
6192     ;@candidates = glob("5.*");
6193 }
6194 else {
6195     ;@candidates = ();
6196 }
6197
6198 # XXX ToDo:  These comparisons must be reworked when two-digit
6199 # subversions come along, so that 5.7.10 compares as greater than
6200 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6201 # widespread that we can use the built-in version vectors rather
6202 # than reinventing them here.  For 5.6.0, however, we must
6203 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6204 foreach $d (@candidates) {
6205     if ($d lt $version) {
6206         if ($d ge $api_versionstring) {
6207             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6208         }
6209         elsif ($d ge "5.005") {
6210             unshift(@inc_version_list, grep { -d } $d);
6211         }
6212     }
6213     else {
6214         # Skip newer version.  I.e. don't look in
6215         # 5.7.0 if we're installing 5.6.1.
6216     }
6217 }
6218
6219 if (@inc_version_list) {
6220     print join(' ', @inc_version_list);
6221 }
6222 else {
6223     # Blank space to preserve value for next Configure run.
6224     print " ";
6225 }
6226 EOPL
6227 chmod +x getverlist
6228 case "$inc_version_list" in
6229 '')     if test -x "$perl5"; then
6230                 dflt=`$perl5 getverlist`
6231         else
6232                 dflt='none'
6233         fi
6234         ;;
6235 $undef) dflt='none' ;;
6236 *)  dflt="$inc_version_list" ;;
6237 esac
6238 case "$dflt" in
6239 ''|' ') dflt=none ;;
6240 esac
6241 case "$dflt" in
6242 5.005) case "$bincompat5005" in
6243        $define|true|[yY]*) ;;
6244        *) dflt=none ;;
6245        esac
6246        ;;
6247 esac
6248 $cat <<'EOM'
6249
6250 In order to ease the process of upgrading, this version of perl 
6251 can be configured to use modules built and installed with earlier 
6252 versions of perl that were installed under $prefix.  Specify here
6253 the list of earlier versions that this version of perl should check.
6254 If Configure detected no earlier versions of perl installed under
6255 $prefix, then the list will be empty.  Answer 'none' to tell perl
6256 to not search earlier versions.
6257
6258 The default should almost always be sensible, so if you're not sure,
6259 just accept the default.
6260 EOM
6261
6262 rp='List of earlier versions to include in @INC?'
6263 . ./myread
6264 case "$ans" in
6265 [Nn]one|''|' ') inc_version_list=' ' ;;
6266 *) inc_version_list="$ans" ;;
6267 esac
6268 case "$inc_version_list" in
6269 ''|' ') 
6270         inc_version_list_init='0';;
6271 *)      inc_version_list_init=`echo $inc_version_list |
6272                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6273         ;;
6274 esac
6275 $rm -f getverlist
6276
6277 : determine whether to install perl also as /usr/bin/perl
6278
6279 echo " "
6280 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6281         $cat <<EOM
6282 Many scripts expect perl to be installed as /usr/bin/perl.
6283 I can install the perl you are about to compile also as /usr/bin/perl
6284 (in addition to $installbin/perl).
6285 EOM
6286         case "$installusrbinperl" in
6287         "$undef"|[nN]*) dflt='n';;
6288         *)              dflt='y';;
6289         esac
6290         rp="Do you want to install perl as /usr/bin/perl?"
6291         . ./myread
6292         case "$ans" in
6293         [yY]*)  val="$define";;
6294         *)      val="$undef" ;;
6295         esac
6296 else
6297         val="$undef"
6298 fi
6299 set installusrbinperl
6300 eval $setvar
6301
6302 : see if dld is available
6303 set dld.h i_dld
6304 eval $inhdr
6305
6306 : see if dlopen exists
6307 xxx_runnm="$runnm"
6308 runnm=false
6309 set dlopen d_dlopen
6310 eval $inlibc
6311 runnm="$xxx_runnm"
6312
6313 : determine which dynamic loading, if any, to compile in
6314 echo " "
6315 dldir="ext/DynaLoader"
6316 case "$usedl" in
6317 $define|y|true)
6318         dflt='y'
6319         usedl="$define"
6320         ;;
6321 $undef|n|false)
6322         dflt='n'
6323         usedl="$undef"
6324         ;;
6325 *) 
6326         dflt='n'
6327         case "$d_dlopen" in
6328             $define) dflt='y' ;;
6329         esac
6330         case "$i_dld" in
6331             $define) dflt='y' ;;
6332         esac
6333         : Does a dl_xxx.xs file exist for this operating system
6334         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6335         ;;
6336 esac
6337 rp="Do you wish to use dynamic loading?"
6338 . ./myread
6339 usedl="$ans"
6340 case "$ans" in
6341 y*) usedl="$define"
6342         case "$dlsrc" in
6343         '')
6344                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6345                         dflt="$dldir/dl_${osname}.xs"
6346                 elif $test "$d_dlopen" = "$define" ; then
6347                         dflt="$dldir/dl_dlopen.xs"
6348                 elif $test "$i_dld" = "$define" ; then
6349                         dflt="$dldir/dl_dld.xs"
6350                 else
6351                         dflt=''
6352                 fi
6353                 ;;
6354         *)      dflt="$dldir/$dlsrc"
6355                 ;;
6356         esac
6357     echo "The following dynamic loading files are available:"
6358         : Can not go over to $dldir because getfile has path hard-coded in.
6359         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6360         rp="Source file to use for dynamic loading"
6361         fn="fne"
6362         gfpth="$src"
6363         . ./getfile
6364         usedl="$define"
6365         : emulate basename
6366         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6367
6368         $cat << EOM
6369
6370 Some systems may require passing special flags to $cc -c to
6371 compile modules that will be used to create a shared library.
6372 To use no flags, say "none".
6373
6374 EOM
6375     case "$cccdlflags" in
6376     '') case "$gccversion" in
6377                 '') case "$osname" in
6378                         hpux)   dflt='+z' ;;
6379                         next)   dflt='none' ;;
6380                         irix*)  dflt='-KPIC' ;;
6381                         svr4*|esix*|solaris|nonstopux) dflt='-KPIC' ;;
6382                         sunos)  dflt='-pic' ;;
6383                         *)      dflt='none' ;;
6384                     esac
6385                         ;;
6386                 *)  case "$osname" in
6387                         svr4*|esix*|solaris|nonstopux) dflt='-fPIC' ;;
6388                         *)      dflt='-fpic' ;;
6389                     esac ;;
6390             esac ;;
6391         ' ') dflt='none' ;;
6392     *)  dflt="$cccdlflags" ;;
6393     esac
6394     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6395     . ./myread
6396     case "$ans" in
6397     none) cccdlflags=' ' ;;
6398     *) cccdlflags="$ans" ;;
6399     esac
6400
6401     cat << EOM
6402
6403 Some systems use ld to create libraries that can be dynamically loaded,
6404 while other systems (such as those using ELF) use $cc.
6405
6406 EOM
6407         case "$ld" in
6408         '')     $cat >try.c <<'EOM'
6409 /* Test for whether ELF binaries are produced */
6410 #include <fcntl.h>
6411 #include <stdlib.h>
6412 int main() {
6413         char b[4];
6414         int i = open("a.out",O_RDONLY);
6415         if(i == -1) 
6416                 exit(1); /* fail */
6417         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6418                 exit(0); /* succeed (yes, it's ELF) */
6419         else
6420                 exit(1); /* fail */
6421 }
6422 EOM
6423                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6424                         cat <<EOM
6425 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6426 EOM
6427                         dflt="$cc"
6428                 else
6429                         echo "I'll use ld to build dynamic libraries."
6430                         dflt='ld'
6431                 fi
6432                 rm -f try.c a.out
6433                 ;;
6434         *)      dflt="$ld"
6435                 ;;
6436         esac
6437
6438     rp="What command should be used to create dynamic libraries?"
6439     . ./myread
6440         ld="$ans"
6441
6442     cat << EOM
6443
6444 Some systems may require passing special flags to $ld to create a
6445 library that can be dynamically loaded.  If your ld flags include
6446 -L/other/path options to locate libraries outside your loader's normal
6447 search path, you may need to specify those -L options here as well.  To
6448 use no flags, say "none".
6449
6450 EOM
6451     case "$lddlflags" in
6452     '') case "$osname" in
6453                         beos) dflt='-nostart' ;;
6454                         hpux) dflt='-b';
6455                               case "$gccversion" in
6456                               '') dflt="$dflt +vnocompatwarnings" ;;
6457                               esac
6458                               ;;        
6459                         linux|irix*)    dflt='-shared' ;;
6460                         next)  dflt='none' ;;
6461                         solaris) dflt='-G' ;;
6462                         sunos) dflt='-assert nodefinitions' ;;
6463                         svr4*|esix*|nonstopux) dflt="-G $ldflags" ;;
6464                 *)     dflt='none' ;;
6465                         esac
6466                         ;;
6467     *) dflt="$lddlflags" ;;
6468     esac
6469
6470         : Try to guess additional flags to pick up local libraries.
6471         : Be careful not to append to a plain 'none'
6472         case "$dflt" in
6473         none) dflt='' ;;
6474         esac
6475         for thisflag in $ldflags; do
6476                 case "$thisflag" in
6477                 -L*|-R*)
6478                         case " $dflt " in
6479                         *" $thisflag "*) ;;
6480                         *) dflt="$dflt $thisflag" ;;
6481                         esac
6482                         ;;
6483                 esac
6484         done
6485
6486         case "$dflt" in
6487         ''|' ') dflt='none' ;;
6488         esac
6489
6490     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6491     . ./myread
6492     case "$ans" in
6493     none) lddlflags=' ' ;;
6494     *) lddlflags="$ans" ;;
6495     esac
6496
6497         cat <<EOM
6498
6499 Some systems may require passing special flags to $cc to indicate that
6500 the resulting executable will use dynamic linking.  To use no flags,
6501 say "none".
6502
6503 EOM
6504     case "$ccdlflags" in
6505     '') case "$osname" in
6506                 hpux)   dflt='-Wl,-E' ;;
6507                 linux)  dflt='-rdynamic' ;;
6508                 next)   dflt='none' ;;
6509                 sunos)  dflt='none' ;;
6510                 *)      dflt='none' ;;
6511             esac ;;
6512     ' ')  dflt='none' ;;
6513     *)  dflt="$ccdlflags" ;;
6514     esac
6515     rp="Any special flags to pass to $cc to use dynamic linking?"
6516     . ./myread
6517     case "$ans" in
6518     none) ccdlflags=' ' ;;
6519     *) ccdlflags="$ans" ;;
6520     esac
6521     ;;
6522 *)  usedl="$undef"
6523         ld='ld'
6524     dlsrc='dl_none.xs'
6525     lddlflags=''
6526     ccdlflags=''
6527     ;;
6528 esac
6529
6530 also=''
6531 case "$usedl" in
6532 $undef)
6533         # No dynamic loading being used, so don't bother even to prompt.
6534         useshrplib='false'
6535         ;;
6536 *)      case "$useshrplib" in
6537         '')     case "$osname" in
6538                 svr4*|nonstopux|dgux|dynixptx|esix|powerux|beos|cygwin*)
6539                         dflt=y
6540                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6541                         ;;
6542                 next*)
6543                         case "$osvers" in
6544                         4*)     dflt=y
6545                                 also='Building a shared libperl is needed for MAB support.'
6546                                 ;;
6547                         *)      dflt=n
6548                                 ;;
6549                         esac
6550                         ;;
6551                 *)      dflt=n
6552                         ;;
6553                 esac
6554                 ;;
6555         $define|true|[Yy]*)
6556                 dflt=y
6557                 ;;
6558         *)      dflt=n
6559                 ;;
6560         esac
6561         $cat << EOM
6562
6563 The perl executable is normally obtained by linking perlmain.c with
6564 libperl${_a}, any static extensions (usually just DynaLoader), and
6565 any other libraries needed on this system (such as -lm, etc.).  Since
6566 your system supports dynamic loading, it is probably possible to build
6567 a shared libperl.$so.  If you will have more than one executable linked
6568 to libperl.$so, this will significantly reduce the size of each
6569 executable, but it may have a noticeable affect on performance.  The
6570 default is probably sensible for your system.
6571 $also
6572
6573 EOM
6574         rp="Build a shared libperl.$so (y/n)"
6575         . ./myread
6576         case "$ans" in
6577         true|$define|[Yy]*)
6578                 useshrplib='true'  ;;
6579         *)      useshrplib='false' ;;
6580         esac
6581         ;;
6582 esac
6583
6584 case "$useshrplib" in
6585 true)
6586         case "$libperl" in
6587         '')
6588                 # Figure out a good name for libperl.so.  Since it gets stored in
6589                 # a version-specific architecture-dependent library, the version
6590                 # number isn't really that important, except for making cc/ld happy.
6591                 #
6592                 # A name such as libperl.so.3.1
6593                 majmin="libperl.$so.$patchlevel.$subversion"
6594                 # A name such as libperl.so.301
6595                 majonly=`echo $patchlevel $subversion |
6596                         $awk '{printf "%d%02d", $1, $2}'`
6597                 majonly=libperl.$so.$majonly
6598                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6599                 # rely on figuring it out from the naming of libc.
6600                 case "${osname}${osvers}" in
6601                 next4*)
6602                         dflt=libperl.5.$so
6603                         # XXX How handle the --version stuff for MAB?
6604                         ;;
6605                 linux*)  # ld won't link with a bare -lperl otherwise.
6606                         dflt=libperl.$so
6607                         ;;
6608                 cygwin*) # include version
6609                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6610                         ;;
6611                 *)      # Try to guess based on whether libc has major.minor.
6612                         case "$libc" in
6613                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6614                         *libc.$so.[0-9]*) dflt=$majonly ;;
6615                         *)      dflt=libperl.$so ;;
6616                         esac
6617                         ;;
6618                 esac
6619                 ;;
6620         *)      dflt=$libperl
6621                 ;;
6622         esac
6623         cat << EOM
6624
6625 I need to select a good name for the shared libperl.  If your system uses
6626 library names with major and minor numbers, then you might want something
6627 like $majmin.  Alternatively, if your system uses a single version
6628 number for shared libraries, then you might want to use $majonly.
6629 Or, your system might be quite happy with a simple libperl.$so.
6630
6631 Since the shared libperl will get installed into a version-specific
6632 architecture-dependent directory, the version number of the shared perl
6633 library probably isn't important, so the default should be o.k.
6634
6635 EOM
6636         rp='What name do you want to give to the shared libperl?'
6637         . ./myread
6638         libperl=$ans
6639         echo "Ok, I'll use $libperl"
6640         ;;
6641 *)
6642         libperl="libperl${_a}"
6643         ;;
6644 esac
6645
6646 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6647 case "$shrpdir" in
6648 '') ;;
6649 *)      $cat >&4 <<EOM
6650 WARNING:  Use of the shrpdir variable for the installation location of
6651 the shared $libperl is not supported.  It was never documented and
6652 will not work in this version.  Let me (perlbug@perl.org)
6653 know of any problems this may cause.
6654
6655 EOM
6656         case "$shrpdir" in
6657         "$archlibexp/CORE")
6658                 $cat >&4 <<EOM
6659 But your current setting of $shrpdir is
6660 the default anyway, so it's harmless.
6661 EOM
6662                 ;;
6663         *)
6664                 $cat >&4 <<EOM
6665 Further, your current attempted setting of $shrpdir
6666 conflicts with the value of $archlibexp/CORE
6667 that installperl will use.
6668 EOM
6669                 ;;
6670         esac
6671         ;;
6672 esac
6673
6674 # How will the perl executable find the installed shared $libperl?
6675 # Add $xxx to ccdlflags.
6676 # If we can't figure out a command-line option, use $shrpenv to
6677 # set env LD_RUN_PATH.  The main perl makefile uses this.
6678 shrpdir=$archlibexp/CORE
6679 xxx=''
6680 tmp_shrpenv=''
6681 if "$useshrplib"; then
6682     case "$osname" in 
6683         aix)
6684                 # We'll set it in Makefile.SH...
6685                 ;;
6686         solaris|netbsd)
6687                 xxx="-R $shrpdir"
6688                 ;;
6689         freebsd)
6690                 xxx="-Wl,-R$shrpdir"
6691                 ;;
6692         linux|irix*|dec_osf)
6693                 xxx="-Wl,-rpath,$shrpdir"
6694                 ;;
6695         next)
6696                 # next doesn't like the default...
6697                 ;;
6698         beos)
6699                 # beos doesn't like the default, either.
6700                 ;;
6701         hpux*)
6702                 # hpux doesn't like the default, either.
6703                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6704                 ;;
6705         *)
6706                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6707                 ;;
6708         esac
6709         case "$xxx" in
6710         '') ;;
6711         *)      
6712                 # Only add $xxx if it isn't already in ccdlflags.
6713                 case " $ccdlflags " in
6714                 *" $xxx "*)     ;;
6715                 *)      ccdlflags="$ccdlflags $xxx"
6716                         cat <<EOM >&4
6717
6718 Adding $xxx to the flags
6719 passed to $ld so that the perl executable will find the 
6720 installed shared $libperl.
6721
6722 EOM
6723                         ;;
6724                 esac
6725                 ;;
6726         esac
6727 fi
6728 # Fix ccdlflags in AIX for building external extensions.
6729 # (For building Perl itself bare -bE:perl.exp is needed,
6730 #  Makefile.SH takes care of this.)
6731 case "$osname" in
6732 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6733 esac
6734 # Respect a hint or command-line value.
6735 case "$shrpenv" in
6736 '') shrpenv="$tmp_shrpenv" ;;
6737 esac
6738 case "$ldlibpthname" in
6739 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6740 none)   ldlibpthname='' ;;
6741 esac
6742
6743 : determine where manual pages are on this system
6744 echo " "
6745 case "$sysman" in
6746 '') 
6747         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6748         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6749         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6750         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6751         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6752         sysman=`./loc . /usr/man/man1 $syspath`
6753         ;;
6754 esac
6755 if $test -d "$sysman"; then
6756         echo "System manual is in $sysman." >&4
6757 else
6758         echo "Could not find manual pages in source form." >&4
6759 fi
6760
6761 : determine where manual pages go
6762 set man1dir man1dir none
6763 eval $prefixit
6764 $cat <<EOM
6765
6766 $spackage has manual pages available in source form.
6767 EOM
6768 case "$nroff" in
6769 nroff)
6770         echo "However, you don't have nroff, so they're probably useless to you."
6771         case "$man1dir" in
6772         '') man1dir="none";;
6773         esac;;
6774 esac
6775 echo "If you don't want the manual sources installed, answer 'none'."
6776 case "$man1dir" in
6777 ' ') dflt=none
6778         ;;
6779 '')
6780         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6781         lookpath="$lookpath $prefixexp/man/p_man/man1"
6782         lookpath="$lookpath $prefixexp/man/u_man/man1"
6783         lookpath="$lookpath $prefixexp/man/man.1"
6784         case "$sysman" in
6785         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6786         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6787         esac
6788         set dflt
6789         eval $prefixup
6790         ;;
6791 *)  dflt="$man1dir"
6792         ;;
6793 esac
6794 echo " "
6795 fn=dn+~
6796 rp="Where do the main $spackage manual pages (source) go?"
6797 . ./getfile
6798 if $test "X$man1direxp" != "X$ansexp"; then
6799         installman1dir=''
6800 fi
6801 man1dir="$ans"
6802 man1direxp="$ansexp"
6803 case "$man1dir" in
6804 '')     man1dir=' '
6805         installman1dir='';;
6806 esac
6807
6808 : Change installation prefix, if necessary.
6809 if $test X"$prefix" != X"$installprefix"; then
6810         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6811 else
6812         installman1dir="$man1direxp"
6813 fi
6814
6815 : What suffix to use on installed man pages
6816
6817 case "$man1dir" in
6818 ' ')
6819         man1ext='0'
6820         ;;
6821 *)
6822         rp="What suffix should be used for the main $spackage man pages?"
6823         case "$man1ext" in
6824         '')     case "$man1dir" in
6825                 *1)  dflt=1 ;;
6826                 *1p) dflt=1p ;;
6827                 *1pm) dflt=1pm ;;
6828                 *l) dflt=l;;
6829                 *n) dflt=n;;
6830                 *o) dflt=o;;
6831                 *p) dflt=p;;
6832                 *C) dflt=C;;
6833                 *L) dflt=L;;
6834                 *L1) dflt=L1;;
6835                 *) dflt=1;;
6836                 esac
6837                 ;;
6838         *)      dflt="$man1ext";;
6839         esac
6840         . ./myread
6841         man1ext="$ans"
6842         ;;
6843 esac
6844
6845 : see if we can have long filenames
6846 echo " "
6847 first=123456789abcdef
6848 $rm -f $first
6849 if (echo hi >$first) 2>/dev/null; then
6850         if $test -f 123456789abcde; then
6851                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6852                 val="$undef"
6853         else
6854                 echo 'You can have filenames longer than 14 characters.'>&4
6855                 val="$define"
6856         fi
6857 else
6858         $cat <<'EOM'
6859 You can't have filenames longer than 14 chars.
6860 You can't even think about them!
6861 EOM
6862         val="$undef"
6863 fi 
6864 set d_flexfnam
6865 eval $setvar
6866 $rm -rf 123456789abcde*
6867
6868 : determine where library module manual pages go
6869 set man3dir man3dir none
6870 eval $prefixit
6871 $cat <<EOM
6872
6873 $spackage has manual pages for many of the library modules.
6874 EOM
6875
6876 case "$nroff" in
6877 nroff)
6878         $cat <<'EOM'
6879 However, you don't have nroff, so they're probably useless to you.
6880 EOM
6881         case "$man3dir" in
6882         '') man3dir="none";;
6883         esac;;
6884 esac
6885
6886 case "$d_flexfnam" in
6887 undef)
6888         $cat <<'EOM'
6889 However, your system can't handle the long file names like File::Basename.3. 
6890 EOM
6891         case "$man3dir" in
6892         '') man3dir="none";;
6893         esac;;
6894 esac
6895
6896 echo "If you don't want the manual sources installed, answer 'none'."
6897 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6898 case "$man3dir" in
6899 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6900         if $test -d "$privlib/man/man3"; then
6901                 cat <<EOM >&4
6902
6903 WARNING:  Previous versions of perl installed man3 pages into
6904 $privlib/man/man3.  This version will suggest a 
6905 new default of $dflt.  
6906 EOM
6907                 tdflt=$dflt
6908                 dflt='n'
6909                 rp='Do you wish to preserve the old behavior?(y/n)'
6910                 . ./myread
6911                 case "$ans" in
6912                 y*) dflt="$privlib/man/man3" ;;
6913                 *)  dflt=$tdflt ;;
6914                 esac
6915     fi
6916         ;;
6917 *)      dflt="$man3dir" ;;
6918 esac
6919 case "$dflt" in
6920 ' ') dflt=none ;;
6921 esac
6922 echo " "
6923 fn=dn+~
6924 rp="Where do the $package library man pages (source) go?"
6925 . ./getfile
6926 man3dir="$ans"
6927 man3direxp="$ansexp"
6928 case "$man3dir" in
6929 '')     man3dir=' '
6930         installman3dir='';;
6931 esac
6932
6933 : Change installation prefix, if necessary.
6934 if $test X"$prefix" != X"$installprefix"; then
6935         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6936 else
6937         installman3dir="$man3direxp"
6938 fi
6939
6940 : What suffix to use on installed man pages
6941 case "$man3dir" in
6942 ' ')
6943         man3ext='0'
6944         ;;
6945 *)
6946         rp="What suffix should be used for the $package library man pages?"
6947         case "$man3ext" in
6948         '')     case "$man3dir" in
6949                 *3)  dflt=3 ;;
6950                 *3p) dflt=3p ;;
6951                 *3pm) dflt=3pm ;;
6952                 *l) dflt=l;;
6953                 *n) dflt=n;;
6954                 *o) dflt=o;;
6955                 *p) dflt=p;;
6956                 *C) dflt=C;;
6957                 *L) dflt=L;;
6958                 *L3) dflt=L3;;
6959                 *) dflt=3;;
6960                 esac
6961                 ;;
6962         *)      dflt="$man3ext";;
6963         esac
6964         . ./myread
6965         man3ext="$ans"
6966         ;;
6967 esac
6968
6969 : see if we have to deal with yellow pages, now NIS.
6970 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6971         if $test -f /usr/etc/nibindd; then
6972                 echo " "
6973                 echo "I'm fairly confident you're on a NeXT."
6974                 echo " "
6975                 rp='Do you get the hosts file via NetInfo?'
6976                 dflt=y
6977                 case "$hostcat" in
6978                 nidump*) ;;
6979                 '') ;;
6980                 *) dflt=n;;
6981                 esac
6982                 . ./myread
6983                 case "$ans" in
6984                 y*) hostcat='nidump hosts .';;
6985                 *)      case "$hostcat" in
6986                         nidump*) hostcat='';;
6987                         esac
6988                         ;;
6989                 esac
6990         fi
6991         case "$hostcat" in
6992         nidump*) ;;
6993         *)
6994                 case "$hostcat" in
6995                 *ypcat*) dflt=y;;
6996                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6997                                 dflt=y
6998                         else
6999                                 dflt=n
7000                         fi;;
7001                 *) dflt=n;;
7002                 esac
7003                 echo " "
7004                 rp='Are you getting the hosts file via yellow pages?'
7005                 . ./myread
7006                 case "$ans" in
7007                 y*) hostcat='ypcat hosts';;
7008                 *) hostcat='cat /etc/hosts';;
7009                 esac
7010                 ;;
7011         esac
7012 fi
7013 case "$hostcat" in
7014 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7015 esac
7016 case "$groupcat" in
7017 '') test -f /etc/group && groupcat='cat /etc/group';;
7018 esac
7019 case "$passcat" in
7020 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7021 esac
7022
7023 : now get the host name
7024 echo " "
7025 echo "Figuring out host name..." >&4
7026 case "$myhostname" in
7027 '') cont=true
7028         echo 'Maybe "hostname" will work...'
7029         if tans=`sh -c hostname 2>&1` ; then
7030                 myhostname=$tans
7031                 phostname=hostname
7032                 cont=''
7033         fi
7034         ;;
7035 *) cont='';;
7036 esac
7037 if $test "$cont"; then
7038         if ./xenix; then
7039                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7040                 if tans=`cat /etc/systemid 2>&1` ; then
7041                         myhostname=$tans
7042                         phostname='cat /etc/systemid'
7043                         echo "Whadyaknow.  Xenix always was a bit strange..."
7044                         cont=''
7045                 fi
7046         elif $test -r /etc/systemid; then
7047                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7048         fi
7049 fi
7050 if $test "$cont"; then
7051         echo 'No, maybe "uuname -l" will work...'
7052         if tans=`sh -c 'uuname -l' 2>&1` ; then
7053                 myhostname=$tans
7054                 phostname='uuname -l'
7055         else
7056                 echo 'Strange.  Maybe "uname -n" will work...'
7057                 if tans=`sh -c 'uname -n' 2>&1` ; then
7058                         myhostname=$tans
7059                         phostname='uname -n'
7060                 else
7061                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7062                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7063                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7064                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7065                         else
7066                                 case "$myhostname" in
7067                                 '') echo "Does this machine have an identity crisis or something?"
7068                                         phostname='';;
7069                                 *)
7070                                         echo "Well, you said $myhostname before..."
7071                                         phostname='echo $myhostname';;
7072                                 esac
7073                         fi
7074                 fi
7075         fi
7076 fi
7077 : you do not want to know about this
7078 set $myhostname
7079 myhostname=$1
7080
7081 : verify guess
7082 if $test "$myhostname" ; then
7083         dflt=y
7084         rp='Your host name appears to be "'$myhostname'".'" Right?"
7085         . ./myread
7086         case "$ans" in
7087         y*) ;;
7088         *) myhostname='';;
7089         esac
7090 fi
7091
7092 : bad guess or no guess
7093 while $test "X$myhostname" = X ; do
7094         dflt=''
7095         rp="Please type the (one word) name of your host:"
7096         . ./myread
7097         myhostname="$ans"
7098 done
7099
7100 : translate upper to lower if necessary
7101 case "$myhostname" in
7102 *[A-Z]*)
7103         echo "(Normalizing case in your host name)"
7104         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7105         ;;
7106 esac
7107
7108 case "$myhostname" in
7109 *.*)
7110         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7111         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7112         echo "(Trimming domain name from host name--host name is now $myhostname)"
7113         ;;
7114 *) case "$mydomain" in
7115         '')
7116                 {
7117                         test "X$hostcat" = "Xypcat hosts" &&
7118                         ypmatch "$myhostname" hosts 2>/dev/null |\
7119                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7120                         $test -s hosts
7121                 } || {
7122                         test "X$hostcat" != "X" &&
7123                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7124                                         /[       ]$myhostname[  . ]/p" > hosts
7125                 }
7126                 tmp_re="[       . ]"
7127                 if $test -f hosts; then
7128                         $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7129                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7130                         dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7131                                 hosts | $sort | $uniq | \
7132                                 $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7133                         case `$echo X$dflt` in
7134                         X*\ *)  echo "(Several hosts in the database matched hostname)"
7135                                 dflt=.
7136                                 ;;
7137                         X.) echo "(You do not have fully-qualified names in the hosts database)"
7138                                 ;;
7139                         esac
7140                 else
7141                         echo "(I cannot locate a hosts database anywhere)"
7142                         dflt=.
7143                 fi
7144                 case "$dflt" in
7145                 .)
7146                         tans=`./loc resolv.conf X /etc /usr/etc`
7147                         if $test -f "$tans"; then
7148                                 echo "(Attempting domain name extraction from $tans)"
7149                                 dflt=.`$sed -n -e 's/   / /g' \
7150                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7151                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7152                                 case "$dflt" in
7153                                 .) dflt=.`$sed -n -e 's/        / /g' \
7154                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7155                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7156                                         ;;
7157                                 esac
7158                         fi
7159                         ;;
7160                 esac
7161                 case "$dflt" in
7162                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7163                         dflt=.`sh -c domainname 2>/dev/null`
7164                         case "$dflt" in
7165                         '') dflt='.';;
7166                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7167                         esac
7168                         ;;
7169                 esac
7170                 case "$dflt" in
7171                 .) echo "(Lost all hope -- silly guess then)"
7172                         dflt='.uucp'
7173                         ;;
7174                 esac
7175                 $rm -f hosts
7176                 ;;
7177         *) dflt="$mydomain";;
7178         esac;;
7179 esac
7180 echo " "
7181 rp="What is your domain name?"
7182 . ./myread
7183 tans="$ans"
7184 case "$ans" in
7185 '') ;;
7186 .*) ;;
7187 *) tans=".$tans";;
7188 esac
7189 mydomain="$tans"
7190
7191 : translate upper to lower if necessary
7192 case "$mydomain" in
7193 *[A-Z]*)
7194         echo "(Normalizing case in your domain name)"
7195         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7196         ;;
7197 esac
7198
7199 : a little sanity check here
7200 case "$phostname" in
7201 '') ;;
7202 *)
7203         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7204         $myhostname$mydomain|$myhostname) ;;
7205         *)
7206                 case "$phostname" in
7207                 sed*)
7208                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7209                         ;;
7210                 *)
7211                         echo "(That doesn't agree with your $phostname command, by the way.)"
7212                         ;;
7213                 esac
7214         ;;
7215         esac
7216         ;;
7217 esac
7218
7219 $cat <<EOM
7220
7221 I need to get your e-mail address in Internet format if possible, i.e.
7222 something like user@host.domain. Please answer accurately since I have
7223 no easy means to double check it. The default value provided below
7224 is most probably close to reality but may not be valid from outside
7225 your organization...
7226
7227 EOM
7228 cont=x
7229 while test "$cont"; do
7230         case "$cf_email" in
7231         '') dflt="$cf_by@$myhostname$mydomain";;
7232         *) dflt="$cf_email";;
7233         esac
7234         rp='What is your e-mail address?'
7235         . ./myread
7236         cf_email="$ans"
7237         case "$cf_email" in
7238         *@*.*) cont='' ;;
7239         *)
7240                 rp='Address does not look like an Internet one.  Use it anyway?'
7241                 case "$fastread" in
7242                 yes) dflt=y ;;
7243                 *) dflt=n ;;
7244                 esac
7245                 . ./myread
7246                 case "$ans" in
7247                 y*) cont='' ;;
7248                 *) echo " " ;;
7249                 esac
7250                 ;;
7251         esac
7252 done
7253
7254 $cat <<EOM
7255
7256 If you or somebody else will be maintaining perl at your site, please
7257 fill in the correct e-mail address here so that they may be contacted
7258 if necessary. Currently, the "perlbug" program included with perl
7259 will send mail to this address in addition to perlbug@perl.org. You may
7260 enter "none" for no administrator.
7261
7262 EOM
7263 case "$perladmin" in
7264 '') dflt="$cf_email";;
7265 *) dflt="$perladmin";;
7266 esac
7267 rp='Perl administrator e-mail address'
7268 . ./myread
7269 perladmin="$ans"
7270
7271 : determine whether to only install version-specific parts.
7272 echo " "
7273 $cat <<EOM
7274 Do you want to install only the version-specific parts of the perl
7275 distribution?  Usually you do *not* want to do this.
7276 EOM
7277 case "$versiononly" in
7278 "$define"|[Yy]*|true) dflt='y' ;;
7279 *) dflt='n';
7280 esac
7281 rp="Do you want to install only the version-specific parts of perl?"
7282 . ./myread
7283 case "$ans" in
7284 [yY]*)  val="$define";;
7285 *)      val="$undef" ;;
7286 esac
7287 set versiononly
7288 eval $setvar
7289
7290 : figure out how to guarantee perl startup
7291 case "$startperl" in
7292 '')
7293         case "$sharpbang" in
7294         *!)
7295                 $cat <<EOH
7296
7297 I can use the #! construct to start perl on your system. This will
7298 make startup of perl scripts faster, but may cause problems if you
7299 want to share those scripts and perl is not in a standard place
7300 ($binexp/perl) on all your platforms. The alternative is to force
7301 a shell by starting the script with a single ':' character.
7302
7303 EOH
7304                 case "$versiononly" in
7305                 "$define")      dflt="$binexp/perl$version";;  
7306                 *)              dflt="$binexp/perl";;
7307                 esac
7308                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7309                 . ./myread
7310                 case "$ans" in
7311                 none)   startperl=": # use perl";;
7312                 *)      startperl="#!$ans"
7313                         if $test 30 -lt `echo "$ans" | wc -c`; then
7314                                 $cat >&4 <<EOM
7315
7316 WARNING:  Some systems limit the #! command to 32 characters.
7317 If you experience difficulty running Perl scripts with #!, try
7318 installing Perl in a directory with a shorter pathname.
7319
7320 EOM
7321                         fi ;;
7322                 esac
7323                 ;;
7324         *) startperl=": # use perl"
7325                 ;;
7326         esac
7327         ;;
7328 esac
7329 echo "I'll use $startperl to start perl scripts."
7330
7331 : figure best path for perl in scripts
7332 case "$perlpath" in
7333 '')
7334         perlpath="$binexp/perl"
7335         case "$startperl" in
7336         *!*) ;;
7337         *)
7338                 $cat <<EOH
7339
7340 I will use the "eval 'exec'" idiom to start Perl on your system.
7341 I can use the full path of your Perl binary for this purpose, but
7342 doing so may cause problems if you want to share those scripts and
7343 Perl is not always in a standard place ($binexp/perl).
7344
7345 EOH
7346                 dflt="$binexp/perl"
7347                 rp="What path shall I use in \"eval 'exec'\"?"
7348                 . ./myread
7349                 perlpath="$ans"
7350                 ;;
7351         esac
7352         ;;
7353 esac
7354 case "$startperl" in
7355 *!*)    ;;
7356 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7357 esac
7358
7359 : determine where public executable scripts go
7360 set scriptdir scriptdir
7361 eval $prefixit
7362 case "$scriptdir" in
7363 '')
7364         dflt="$bin"
7365         : guess some guesses
7366         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7367         $test -d /usr/share/bin     && dflt=/usr/share/bin
7368         $test -d /usr/local/script  && dflt=/usr/local/script
7369         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7370         $test -d $prefixexp/script  && dflt=$prefixexp/script
7371         set dflt
7372         eval $prefixup
7373         ;;
7374 *)  dflt="$scriptdir"
7375         ;;
7376 esac
7377 $cat <<EOM
7378  
7379 Some installations have a separate directory just for executable scripts so
7380 that they can mount it across multiple architectures but keep the scripts in
7381 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7382 Or you might just lump your scripts in with all your other executables.
7383  
7384 EOM
7385 fn=d~
7386 rp='Where do you keep publicly executable scripts?'
7387 . ./getfile
7388 if $test "X$ansexp" != "X$scriptdirexp"; then
7389         installscript=''
7390 fi
7391 scriptdir="$ans"
7392 scriptdirexp="$ansexp"
7393 : Change installation prefix, if necessary.
7394 if $test X"$prefix" != X"$installprefix"; then
7395         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7396 else
7397         installscript="$scriptdirexp"
7398 fi
7399
7400 : determine where add-on public executables go
7401 case "$sitebin" in
7402 '')     dflt=$siteprefix/bin ;;
7403 *)      dflt=$sitebin ;;
7404 esac
7405 fn=d~
7406 rp='Pathname where the add-on public executables should be installed?'
7407 . ./getfile
7408 sitebin="$ans"
7409 sitebinexp="$ansexp"
7410 : Change installation prefix, if necessary.
7411 if $test X"$prefix" != X"$installprefix"; then
7412         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7413 else
7414         installsitebin="$sitebinexp"
7415 fi
7416
7417 case "$useperlio" in
7418 $define|true|[yY]*)     dflt='y';;
7419 *) dflt='n';;
7420 esac
7421 cat <<EOM
7422
7423 Previous version of $package used the standard IO mechanisms as defined
7424 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7425 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7426 the default.  This abstraction layer can use AT&T's sfio (if you already
7427 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7428 problems with some extension modules.  Using PerlIO with stdio is safe,
7429 but it is slower than plain stdio and therefore is not the default.
7430
7431 If this doesn't make any sense to you, just accept the default '$dflt'.
7432 EOM
7433 rp='Use the experimental PerlIO abstraction layer?'
7434 . ./myread
7435 case "$ans" in
7436 y|Y) 
7437         val="$define"
7438         ;;     
7439 *)      
7440         echo "Ok, doing things the stdio way"
7441         val="$undef"
7442         ;;
7443 esac
7444 set useperlio
7445 eval $setvar 
7446
7447 case "$vendorprefix" in
7448 '')     d_vendorbin="$undef"
7449         vendorbin=''
7450         vendorbinexp=''
7451         ;;
7452 *)      d_vendorbin="$define"
7453         : determine where vendor-supplied executables go.
7454         case "$vendorbin" in
7455         '') dflt=$vendorprefix/bin ;;
7456         *)      dflt="$vendorbin" ;;
7457         esac
7458         fn=d~+
7459         rp='Pathname for the vendor-supplied executables directory?'
7460         . ./getfile
7461         vendorbin="$ans"
7462         vendorbinexp="$ansexp"
7463         ;;
7464 esac
7465 : Change installation prefix, if necessary.
7466 if $test X"$prefix" != X"$installprefix"; then
7467         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7468 else
7469         installvendorbin="$vendorbinexp"
7470 fi
7471
7472 : see if qgcvt exists
7473 set qgcvt d_qgcvt
7474 eval $inlibc
7475
7476 echo " "
7477
7478 if $test X"$d_longdbl" = X"$define"; then
7479
7480 echo "Checking how to print long doubles..." >&4
7481
7482 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7483         $cat >try.c <<'EOCP'
7484 #include <sys/types.h>
7485 #include <stdio.h>
7486 int main() {
7487   double d = 123.456;
7488   printf("%.3f\n", d);
7489 }
7490 EOCP
7491         set try
7492         if eval $compile; then
7493                 yyy=`./try$exe_ext`
7494                 case "$yyy" in
7495                 123.456)
7496                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7497                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7498                         echo "We will use %f."
7499                         ;;
7500                 esac
7501         fi
7502 fi
7503
7504 if $test X"$sPRIfldbl" = X; then
7505         $cat >try.c <<'EOCP'
7506 #include <sys/types.h>
7507 #include <stdio.h>
7508 int main() {
7509   long double d = 123.456;
7510   printf("%.3llf\n", d);
7511 }
7512 EOCP
7513         set try
7514         if eval $compile; then
7515                 yyy=`./try$exe_ext`
7516                 case "$yyy" in
7517                 123.456)
7518                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7519                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7520                         echo "We will use %llf."
7521                         ;;
7522                 esac
7523         fi
7524 fi
7525
7526 if $test X"$sPRIfldbl" = X; then
7527         $cat >try.c <<'EOCP'
7528 #include <sys/types.h>
7529 #include <stdio.h>
7530 int main() {
7531   long double d = 123.456;
7532   printf("%.3Lf\n", d);
7533 }
7534 EOCP
7535         set try
7536         if eval $compile; then
7537                 yyy=`./try$exe_ext`
7538                 case "$yyy" in
7539                 123.456)
7540                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7541                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7542                         echo "We will use %Lf."
7543                         ;;
7544                 esac
7545         fi
7546 fi
7547
7548 if $test X"$sPRIfldbl" = X; then
7549         $cat >try.c <<'EOCP'
7550 #include <sys/types.h>
7551 #include <stdio.h>
7552 int main() {
7553   long double d = 123.456;
7554   printf("%.3lf\n", d);
7555 }
7556 EOCP
7557         set try
7558         if eval $compile; then
7559                 yyy=`./try$exe_ext`
7560                 case "$yyy" in
7561                 123.456)
7562                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7563                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7564                         echo "We will use %lf."
7565                         ;;
7566                 esac
7567         fi
7568 fi
7569
7570 if $test X"$sPRIfldbl" = X; then
7571         echo "Cannot figure out how to print long doubles." >&4
7572 else
7573         sSCNfldbl=$sPRIfldbl    # expect consistency
7574 fi
7575
7576 $rm -f try try.*
7577
7578 fi # d_longdbl
7579
7580 case "$sPRIfldbl" in
7581 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7582         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7583         d_SCNfldbl="$undef";
7584         ;;
7585 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7586         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7587         d_SCNfldbl="$define";
7588         ;;
7589 esac
7590
7591 : Check how to convert floats to strings.
7592 echo " "
7593 echo "Checking for an efficient way to convert floats to strings."
7594 echo " " > try.c
7595 case "$uselongdouble" in
7596 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7597 esac
7598 case "$d_longdbl" in
7599 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7600 esac
7601 case "$d_PRIgldbl" in
7602 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7603 esac
7604 $cat >>try.c <<EOP
7605 #ifdef TRY_gconvert
7606 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7607 char *myname = "gconvert";
7608 #endif
7609 #ifdef TRY_gcvt
7610 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7611 char *myname = "gcvt";
7612 #endif
7613 #ifdef TRY_qgcvt
7614 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7615 char *myname = "qgcvt";
7616 #define DOUBLETYPE long double
7617 #endif
7618 #ifdef TRY_sprintf
7619 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7620 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7621 #else
7622 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7623 #endif
7624 char *myname = "sprintf";
7625 #endif
7626
7627 #ifndef DOUBLETYPE
7628 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7629 #define DOUBLETYPE long double
7630 #else
7631 #define DOUBLETYPE double
7632 #endif
7633 #endif
7634
7635 #include <stdio.h>
7636
7637 #define I_STDLIB $i_stdlib
7638 #ifdef I_STDLIB
7639 #include <stdlib.h>
7640 #endif
7641
7642 int
7643 checkit(expect, got)
7644 char *expect;
7645 char *got;
7646 {
7647     if (strcmp(expect, got)) {
7648                 printf("%s oddity:  Expected %s, got %s\n",
7649                         myname, expect, got);
7650                 exit(1);
7651         }
7652 }
7653
7654 int main()
7655
7656         char buf[64]; 
7657         buf[63] = '\0';
7658
7659         /* This must be 1st test on (which?) platform */
7660         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7661         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7662         checkit("0.1", buf);
7663
7664         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7665         checkit("1", buf);
7666
7667         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7668         checkit("1.1", buf);
7669
7670         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7671         checkit("1.01", buf);
7672
7673         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7674         checkit("1.001", buf);
7675
7676         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7677         checkit("1.0001", buf);
7678
7679         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7680         checkit("1.00001", buf);
7681
7682         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7683         checkit("1.000001", buf);
7684
7685         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7686         checkit("0", buf);
7687
7688         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7689         checkit("-1", buf);
7690
7691         /* Some Linux gcvt's give 1.e+5 here. */
7692         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7693         checkit("100000", buf);
7694         
7695         /* Some Linux gcvt's give -1.e+5 here. */
7696         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7697         checkit("-100000", buf);
7698
7699         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7700         checkit("123.456", buf);
7701
7702         exit(0);
7703 }
7704 EOP
7705 case "$d_Gconvert" in
7706 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7707 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7708 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7709 *) xxx_list='gconvert gcvt sprintf' ;;
7710 esac
7711
7712 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7713 "$define$define$define")
7714     # for long doubles prefer first qgcvt, then sprintf
7715     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7716     xxx_list="sprintf $xxx_list"
7717     case "$d_qgcvt" in
7718     "$define") xxx_list="qgcvt $xxx_list" ;;
7719     esac
7720     ;;
7721 esac
7722
7723 for xxx_convert in $xxx_list; do
7724         echo "Trying $xxx_convert..."
7725         $rm -f try try$_o
7726         set try -DTRY_$xxx_convert
7727         if eval $compile; then
7728                 echo "$xxx_convert() found." >&4
7729                 if ./try; then
7730                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7731                         break;
7732                 else
7733                         echo "...But $xxx_convert didn't work as I expected."
7734                 fi
7735         else
7736                 echo "$xxx_convert NOT found." >&4
7737         fi
7738 done
7739         
7740 case "$xxx_convert" in
7741 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7742 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7743 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7744 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7745    "$define$define$define")
7746       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7747    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7748    esac
7749    ;;  
7750 esac
7751
7752 : Initialize h_fcntl
7753 h_fcntl=false
7754
7755 : Initialize h_sysfile
7756 h_sysfile=false
7757
7758 : access call always available on UNIX
7759 set access d_access
7760 eval $inlibc
7761
7762 : locate the flags for 'access()'
7763 case "$d_access" in
7764 "$define")
7765         echo " "
7766         $cat >access.c <<'EOCP'
7767 #include <sys/types.h>
7768 #ifdef I_FCNTL
7769 #include <fcntl.h>
7770 #endif
7771 #ifdef I_SYS_FILE
7772 #include <sys/file.h>
7773 #endif
7774 #ifdef I_UNISTD
7775 #include <unistd.h>
7776 #endif
7777 int main() {
7778         exit(R_OK);
7779 }
7780 EOCP
7781         : check sys/file.h first, no particular reason here
7782         if $test `./findhdr sys/file.h` && \
7783                 $cc -o access $cppflags -DI_SYS_FILE access.c >/dev/null 2>&1 ; then
7784                 h_sysfile=true;
7785                 echo "<sys/file.h> defines the *_OK access constants." >&4
7786         elif $test `./findhdr fcntl.h` && \
7787                 $cc -o access $cppflags -DI_FCNTL access.c >/dev/null 2>&1 ; then
7788                 h_fcntl=true;
7789                 echo "<fcntl.h> defines the *_OK access constants." >&4
7790         elif $test `./findhdr unistd.h` && \
7791                 $cc -o access $cppflags -DI_UNISTD access.c >/dev/null 2>&1 ; then
7792                 echo "<unistd.h> defines the *_OK access constants." >&4
7793         else
7794                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7795         fi
7796         ;;
7797 esac
7798 $rm -f access*
7799
7800 : see if accessx exists
7801 set accessx d_accessx
7802 eval $inlibc
7803
7804 : see if alarm exists
7805 set alarm d_alarm
7806 eval $inlibc
7807
7808 : see if atolf exists
7809 set atolf d_atolf
7810 eval $inlibc
7811
7812 : see if atoll exists
7813 set atoll d_atoll
7814 eval $inlibc
7815
7816 : Look for GNU-cc style attribute checking
7817 echo " "
7818 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7819 $cat >attrib.c <<'EOCP'
7820 #include <stdio.h>
7821 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7822 EOCP
7823 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7824         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7825                 echo "Your C compiler doesn't fully support __attribute__."
7826                 val="$undef"
7827         else
7828                 echo "Your C compiler supports __attribute__."
7829                 val="$define"
7830         fi
7831 else
7832         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7833         val="$undef"
7834 fi
7835 set d_attribut
7836 eval $setvar
7837 $rm -f attrib*
7838
7839 : see if bcmp exists
7840 set bcmp d_bcmp
7841 eval $inlibc
7842
7843 : see if bcopy exists
7844 set bcopy d_bcopy
7845 eval $inlibc
7846
7847 : see if this is a unistd.h system
7848 set unistd.h i_unistd
7849 eval $inhdr
7850
7851 : see if getpgrp exists
7852 set getpgrp d_getpgrp
7853 eval $inlibc
7854
7855 case "$d_getpgrp" in
7856 "$define")
7857         echo " "
7858         echo "Checking to see which flavor of getpgrp is in use..."
7859         $cat >set.c <<EOP
7860 #$i_unistd I_UNISTD
7861 #include <sys/types.h>
7862 #ifdef I_UNISTD
7863 #  include <unistd.h>
7864 #endif
7865 int main()
7866 {
7867         if (getuid() == 0) {
7868                 printf("(I see you are running Configure as super-user...)\n");
7869                 setuid(1);
7870         }
7871 #ifdef TRY_BSD_PGRP
7872         if (getpgrp(1) == 0)
7873                 exit(0);
7874 #else
7875         if (getpgrp() > 0)
7876                 exit(0);
7877 #endif
7878         exit(1);
7879 }
7880 EOP
7881         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7882                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7883                 val="$define"
7884         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7885                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7886                 val="$undef"
7887         else
7888                 echo "I can't seem to compile and run the test program."
7889                 if ./usg; then
7890                         xxx="a USG one, i.e. you use getpgrp()."
7891                 else
7892                         # SVR4 systems can appear rather BSD-ish.
7893                         case "$i_unistd" in
7894                         $undef)
7895                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7896                                 val="$define"
7897                                 ;;
7898                         $define)
7899                                 xxx="probably a USG one, i.e. you use getpgrp()."
7900                                 val="$undef"
7901                                 ;;
7902                         esac
7903                 fi
7904                 echo "Assuming your getpgrp is $xxx" >&4
7905         fi
7906         ;;
7907 *) val="$undef";;
7908 esac
7909 set d_bsdgetpgrp
7910 eval $setvar
7911 $rm -f set set.c
7912
7913 : see if setpgrp exists
7914 set setpgrp d_setpgrp
7915 eval $inlibc
7916
7917 case "$d_setpgrp" in
7918 "$define")
7919         echo " "
7920         echo "Checking to see which flavor of setpgrp is in use..."
7921         $cat >set.c <<EOP
7922 #$i_unistd I_UNISTD
7923 #include <sys/types.h>
7924 #ifdef I_UNISTD
7925 #  include <unistd.h>
7926 #endif
7927 int main()
7928 {
7929         if (getuid() == 0) {
7930                 printf("(I see you are running Configure as super-user...)\n");
7931                 setuid(1);
7932         }
7933 #ifdef TRY_BSD_PGRP
7934         if (-1 == setpgrp(1, 1))
7935                 exit(0);
7936 #else
7937         if (setpgrp() != -1)
7938                 exit(0);
7939 #endif
7940         exit(1);
7941 }
7942 EOP
7943         if $cc -o set -DTRY_BSD_PGRP $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7944                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7945                 val="$define"
7946         elif $cc -o set $ccflags $ldflags set.c $libs >/dev/null 2>&1 && ./set; then
7947                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7948                 val="$undef"
7949         else
7950                 echo "(I can't seem to compile and run the test program.)"
7951                 if ./usg; then
7952                         xxx="a USG one, i.e. you use setpgrp()."
7953                 else
7954                         # SVR4 systems can appear rather BSD-ish.
7955                         case "$i_unistd" in
7956                         $undef)
7957                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7958                                 val="$define"
7959                                 ;;
7960                         $define)
7961                                 xxx="probably a USG one, i.e. you use setpgrp()."
7962                                 val="$undef"
7963                                 ;;
7964                         esac
7965                 fi
7966                 echo "Assuming your setpgrp is $xxx" >&4
7967         fi
7968         ;;
7969 *) val="$undef";;
7970 esac
7971 set d_bsdsetpgrp
7972 eval $setvar
7973 $rm -f set set.c
7974 : see if bzero exists
7975 set bzero d_bzero
7976 eval $inlibc
7977
7978 : see if signal is declared as pointer to function returning int or void
7979 echo " "
7980 xxx=`./findhdr signal.h`
7981 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7982 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7983         echo "You have int (*signal())() instead of void." >&4
7984         val="$undef"
7985 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7986         echo "You have void (*signal())()." >&4
7987         val="$define"
7988 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7989         echo "You have int (*signal())() instead of void." >&4
7990         val="$undef"
7991 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7992         echo "You have void (*signal())()." >&4
7993         val="$define"
7994 else
7995         case "$d_voidsig" in
7996         '')
7997         echo "I can't determine whether signal handler returns void or int..." >&4
7998                 dflt=void
7999                 rp="What type does your signal handler return?"
8000                 . ./myread
8001                 case "$ans" in
8002                 v*) val="$define";;
8003                 *) val="$undef";;
8004                 esac;;
8005         "$define")
8006                 echo "As you already told me, signal handler returns void." >&4
8007                 val="$define"
8008                 ;;
8009         *)      echo "As you already told me, signal handler returns int." >&4
8010                 val="$undef"
8011                 ;;
8012         esac
8013 fi
8014 set d_voidsig
8015 eval $setvar
8016 case "$d_voidsig" in
8017 "$define") signal_t="void";;
8018 *) signal_t="int";;
8019 esac
8020 $rm -f $$.tmp
8021
8022 : check for ability to cast large floats to 32-bit ints.
8023 echo " "
8024 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
8025 if $test "$intsize" -ge 4; then
8026         xxx=int
8027 else
8028         xxx=long
8029 fi
8030 $cat >try.c <<EOCP
8031 #include <stdio.h>
8032 #include <sys/types.h>
8033 #include <signal.h>
8034 $signal_t blech(s) int s; { exit(3); }
8035 int main()
8036 {
8037         $xxx i32;
8038         double f, g;
8039         int result = 0;
8040         char str[16];
8041         signal(SIGFPE, blech);
8042
8043         /* Don't let compiler optimize the test away.  Store the number 
8044            in a writable string for gcc to pass to sscanf under HP/UX.
8045         */
8046         sprintf(str, "2147483647");
8047         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8048         g = 10 * f;
8049         i32  = ($xxx) g;
8050
8051         /* x86 processors will probably give 0x8000 0000, which is a
8052        sign change.  We don't want that.  We want to mimic SPARC
8053            behavior here, which is to preserve the sign and give
8054            back 0x7fff ffff.
8055         */
8056         if (i32 != ($xxx) f)
8057                 result |= 1;
8058         exit(result);
8059 }
8060 EOCP
8061 set try
8062 if eval $compile_ok; then
8063         ./try
8064         yyy=$?
8065 else
8066         echo "(I can't seem to compile the test program--assuming it can't)"
8067         yyy=1
8068 fi
8069 case "$yyy" in
8070 0)      val="$define"
8071         echo "Yup, it can."
8072         ;;
8073 *)      val="$undef"
8074         echo "Nope, it can't."
8075         ;;
8076 esac
8077 set d_casti32
8078 eval $setvar
8079 $rm -f try try.*
8080
8081 : check for ability to cast negative floats to unsigned
8082 echo " "
8083 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8084 $cat >try.c <<EOCP
8085 #include <stdio.h>
8086 #include <sys/types.h>
8087 #include <signal.h>
8088 $signal_t blech(s) int s; { exit(7); }
8089 $signal_t blech_in_list(s) int s; { exit(4); }
8090 unsigned long dummy_long(p) unsigned long p; { return p; }
8091 unsigned int dummy_int(p) unsigned int p; { return p; }
8092 unsigned short dummy_short(p) unsigned short p; { return p; }
8093 int main()
8094 {
8095         double f;
8096         unsigned long along;
8097         unsigned int aint;
8098         unsigned short ashort;
8099         int result = 0;
8100         char str[16];
8101         
8102         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8103            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8104            optimized the whole file away
8105         */
8106         /* Store the number in a writable string for gcc to pass to 
8107            sscanf under HP/UX.
8108         */
8109         sprintf(str, "-123");
8110         sscanf(str, "%lf", &f);  /* f = -123.; */
8111
8112         signal(SIGFPE, blech);
8113         along = (unsigned long)f;
8114         aint = (unsigned int)f;
8115         ashort = (unsigned short)f;
8116         if (along != (unsigned long)-123)
8117                 result |= 1;
8118         if (aint != (unsigned int)-123)
8119                 result |= 1;
8120         if (ashort != (unsigned short)-123)
8121                 result |= 1;
8122         sprintf(str, "1073741824.");
8123         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8124         f = f + f;
8125         along = 0;
8126         along = (unsigned long)f;
8127         if (along != 0x80000000)
8128                 result |= 2;
8129         f -= 1.;
8130         along = 0;
8131         along = (unsigned long)f;
8132         if (along != 0x7fffffff)
8133                 result |= 1;
8134         f += 2.;
8135         along = 0;
8136         along = (unsigned long)f;
8137         if (along != 0x80000001)
8138                 result |= 2;
8139         if (result)
8140                 exit(result);
8141         signal(SIGFPE, blech_in_list);
8142         sprintf(str, "123.");
8143         sscanf(str, "%lf", &f);  /* f = 123.; */
8144         along = dummy_long((unsigned long)f);
8145         aint = dummy_int((unsigned int)f);
8146         ashort = dummy_short((unsigned short)f);
8147         if (along != (unsigned long)123)
8148                 result |= 4;
8149         if (aint != (unsigned int)123)
8150                 result |= 4;
8151         if (ashort != (unsigned short)123)
8152                 result |= 4;
8153         exit(result);
8154
8155 }
8156 EOCP
8157 set try
8158 if eval $compile_ok; then
8159         ./try
8160         castflags=$?
8161 else
8162         echo "(I can't seem to compile the test program--assuming it can't)"
8163         castflags=7
8164 fi
8165 case "$castflags" in
8166 0)      val="$define"
8167         echo "Yup, it can."
8168         ;;
8169 *)      val="$undef"
8170         echo "Nope, it can't."
8171         ;;
8172 esac
8173 set d_castneg
8174 eval $setvar
8175 $rm -f try.*
8176
8177 : see if vprintf exists
8178 echo " "
8179 if set vprintf val -f d_vprintf; eval $csym; $val; then
8180         echo 'vprintf() found.' >&4
8181         val="$define"
8182         $cat >vprintf.c <<'EOF'
8183 #include <varargs.h>
8184
8185 int main() { xxx("foo"); }
8186
8187 xxx(va_alist)
8188 va_dcl
8189 {
8190         va_list args;
8191         char buf[10];
8192
8193         va_start(args);
8194         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8195 }
8196 EOF
8197         set vprintf
8198         if eval $compile && ./vprintf; then
8199                 echo "Your vsprintf() returns (int)." >&4
8200                 val2="$undef"
8201         else
8202                 echo "Your vsprintf() returns (char*)." >&4
8203                 val2="$define"
8204         fi
8205 else
8206         echo 'vprintf() NOT found.' >&4
8207                 val="$undef"
8208                 val2="$undef"
8209 fi
8210 set d_vprintf
8211 eval $setvar
8212 val=$val2
8213 set d_charvspr
8214 eval $setvar
8215
8216 : see if chown exists
8217 set chown d_chown
8218 eval $inlibc
8219
8220 : see if chroot exists
8221 set chroot d_chroot
8222 eval $inlibc
8223
8224 : see if chsize exists
8225 set chsize d_chsize
8226 eval $inlibc
8227
8228 : check for const keyword
8229 echo " "
8230 echo 'Checking to see if your C compiler knows about "const"...' >&4
8231 $cat >const.c <<'EOCP'
8232 typedef struct spug { int drokk; } spug;
8233 int main()
8234 {
8235         const char *foo;
8236         const spug y;
8237 }
8238 EOCP
8239 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8240         val="$define"
8241         echo "Yup, it does."
8242 else
8243         val="$undef"
8244         echo "Nope, it doesn't."
8245 fi
8246 set d_const
8247 eval $setvar
8248
8249 : see if crypt exists
8250 echo " "
8251 if set crypt val -f d_crypt; eval $csym; $val; then
8252         echo 'crypt() found.' >&4
8253         val="$define"
8254         cryptlib=''
8255 else
8256         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8257         if $test -z "$cryptlib"; then
8258                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8259         else
8260                 cryptlib=-lcrypt
8261         fi
8262         if $test -z "$cryptlib"; then
8263                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8264         else
8265                 cryptlib=-lcrypt
8266         fi
8267         if $test -z "$cryptlib"; then
8268                 cryptlib=`./loc libcrypt$_a "" $libpth`
8269         else
8270                 cryptlib=-lcrypt
8271         fi
8272         if $test -z "$cryptlib"; then
8273                 echo 'crypt() NOT found.' >&4
8274                 val="$undef"
8275         else
8276                 val="$define"
8277         fi
8278 fi
8279 set d_crypt
8280 eval $setvar
8281
8282 : get csh whereabouts
8283 case "$csh" in
8284 'csh') val="$undef" ;;
8285 *) val="$define" ;;
8286 esac
8287 set d_csh
8288 eval $setvar
8289 : Respect a hint or command line value for full_csh.
8290 case "$full_csh" in
8291 '') full_csh=$csh ;;
8292 esac
8293
8294 : see if cuserid exists
8295 set cuserid d_cuserid
8296 eval $inlibc
8297
8298 : see if this is a limits.h system
8299 set limits.h i_limits
8300 eval $inhdr
8301
8302 : see if this is a float.h system
8303 set float.h i_float
8304 eval $inhdr
8305
8306 : See if number of significant digits in a double precision number is known
8307 echo " "
8308 $cat >dbl_dig.c <<EOM
8309 #$i_limits I_LIMITS
8310 #$i_float I_FLOAT
8311 #ifdef I_LIMITS
8312 #include <limits.h>
8313 #endif
8314 #ifdef I_FLOAT
8315 #include <float.h>
8316 #endif
8317 #ifdef DBL_DIG
8318 printf("Contains DBL_DIG");
8319 #endif
8320 EOM
8321 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8322 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8323         echo "DBL_DIG found." >&4
8324         val="$define"
8325 else
8326         echo "DBL_DIG NOT found." >&4
8327         val="$undef"
8328 fi
8329 $rm -f dbl_dig.?
8330 set d_dbl_dig
8331 eval $setvar
8332
8333 : see if difftime exists
8334 set difftime d_difftime
8335 eval $inlibc
8336
8337 : see if this is a dirent system
8338 echo " "
8339 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8340         val="$define"
8341         echo "<dirent.h> found." >&4
8342 else
8343         val="$undef"
8344         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8345                 echo "<sys/dir.h> found." >&4
8346                 echo " "
8347         else
8348                 xinc=`./findhdr sys/ndir.h`
8349         fi
8350         echo "<dirent.h> NOT found." >&4
8351 fi
8352 set i_dirent
8353 eval $setvar
8354
8355 : Look for type of directory structure.
8356 echo " "
8357 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8358
8359 case "$direntrytype" in
8360 ''|' ')
8361         case "$i_dirent" in
8362         $define) guess1='struct dirent' ;;
8363         *) guess1='struct direct'  ;;
8364         esac
8365         ;;
8366 *)      guess1="$direntrytype"
8367         ;;
8368 esac
8369
8370 case "$guess1" in
8371 'struct dirent') guess2='struct direct' ;;
8372 *) guess2='struct dirent' ;;
8373 esac
8374                 
8375 if $contains "$guess1" try.c >/dev/null 2>&1; then
8376         direntrytype="$guess1"
8377         echo "Your directory entries are $direntrytype." >&4
8378 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8379         direntrytype="$guess2"
8380         echo "Your directory entries seem to be $direntrytype." >&4
8381 else
8382         echo "I don't recognize your system's directory entries." >&4
8383         rp="What type is used for directory entries on this system?"
8384         dflt="$guess1"
8385         . ./myread
8386         direntrytype="$ans"
8387 fi
8388 $rm -f try.c
8389
8390
8391 : see if the directory entry stores field length
8392 echo " "
8393 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8394 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8395         echo "Good, your directory entry keeps length information in d_namlen." >&4
8396         val="$define"
8397 else
8398         echo "Your directory entry does not know about the d_namlen field." >&4
8399         val="$undef"
8400 fi
8401 set d_dirnamlen
8402 eval $setvar
8403 $rm -f try.c
8404
8405 : see if dlerror exists
8406 xxx_runnm="$runnm"
8407 runnm=false
8408 set dlerror d_dlerror
8409 eval $inlibc
8410 runnm="$xxx_runnm"
8411
8412 : see if dlfcn is available
8413 set dlfcn.h i_dlfcn
8414 eval $inhdr
8415
8416 case "$usedl" in
8417 $define|y|true)
8418         $cat << EOM
8419
8420 On a few systems, the dynamically loaded modules that perl generates and uses
8421 will need a different extension than shared libs. The default will probably
8422 be appropriate.
8423
8424 EOM
8425         case "$dlext" in
8426         '')     dflt="$so" ;;
8427         *)      dflt="$dlext" ;;
8428         esac
8429         rp='What is the extension of dynamically loaded modules'
8430         . ./myread
8431         dlext="$ans"
8432         ;;
8433 *)
8434         dlext="none"
8435         ;;
8436 esac
8437
8438 : Check if dlsym need a leading underscore
8439 echo " "
8440 val="$undef"
8441
8442 case "$dlsrc" in
8443 dl_dlopen.xs)
8444         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8445         $cat >dyna.c <<'EOM'
8446 fred () { }
8447 EOM
8448
8449 $cat >fred.c<<EOM
8450
8451 #include <stdio.h>
8452 #$i_dlfcn I_DLFCN
8453 #ifdef I_DLFCN
8454 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8455 #else
8456 #include <sys/types.h>
8457 #include <nlist.h>
8458 #include <link.h>
8459 #endif
8460
8461 extern int fred() ;
8462
8463 int main()
8464 {
8465     void * handle ;
8466     void * symbol ;
8467 #ifndef RTLD_LAZY
8468     int mode = 1 ;
8469 #else
8470     int mode = RTLD_LAZY ;
8471 #endif
8472     handle = dlopen("./dyna.$dlext", mode) ;
8473     if (handle == NULL) {
8474         printf ("1\n") ;
8475         fflush (stdout) ;
8476         exit(0);
8477     }
8478     symbol = dlsym(handle, "fred") ;
8479     if (symbol == NULL) {
8480         /* try putting a leading underscore */
8481         symbol = dlsym(handle, "_fred") ;
8482         if (symbol == NULL) {
8483             printf ("2\n") ;
8484             fflush (stdout) ;
8485             exit(0);
8486         }
8487         printf ("3\n") ;
8488     }
8489     else
8490         printf ("4\n") ;
8491     fflush (stdout) ;
8492     exit(0);
8493 }
8494 EOM
8495         : Call the object file tmp-dyna.o in case dlext=o.
8496         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8497                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8498                 $ld -o dyna.$dlext $lddlflags tmp-dyna${_o} > /dev/null 2>&1 && 
8499                 $cc -o fred $ccflags $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8500                 xxx=`./fred`
8501                 case $xxx in
8502                 1)      echo "Test program failed using dlopen." >&4
8503                         echo "Perhaps you should not use dynamic loading." >&4;;
8504                 2)      echo "Test program failed using dlsym." >&4
8505                         echo "Perhaps you should not use dynamic loading." >&4;;
8506                 3)      echo "dlsym needs a leading underscore" >&4
8507                         val="$define" ;;
8508                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8509                 esac
8510         else
8511                 echo "I can't compile and run the test program." >&4
8512                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8513         fi
8514         ;;
8515 esac
8516                 
8517 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8518
8519 set d_dlsymun
8520 eval $setvar
8521
8522 hasproto='varname=$1; func=$2; shift; shift;
8523 while $test $# -ge 2; do
8524         case "$1" in
8525         $define) echo "#include <$2>";;
8526         esac ;
8527     shift 2;
8528 done > try.c;
8529 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8530 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8531         echo "$func() prototype found.";
8532         val="$define";
8533 else
8534         echo "$func() prototype NOT found.";
8535         val="$undef";
8536 fi;
8537 set $varname;
8538 eval $setvar;
8539 $rm -f try.c tryout.c'
8540
8541 : see if prototype for drand48 is available
8542 echo " "
8543 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8544 eval $hasproto
8545
8546 : see if dup2 exists
8547 set dup2 d_dup2
8548 eval $inlibc
8549
8550 : see if eaccess exists
8551 set eaccess d_eaccess
8552 eval $inlibc
8553
8554 : see if endgrent exists
8555 set endgrent d_endgrent
8556 eval $inlibc
8557
8558 : see if endhostent exists
8559 set endhostent d_endhent
8560 eval $inlibc
8561
8562 : see if endnetent exists
8563 set endnetent d_endnent
8564 eval $inlibc
8565
8566 : see if endprotoent exists
8567 set endprotoent d_endpent
8568 eval $inlibc
8569
8570 : see if endpwent exists
8571 set endpwent d_endpwent
8572 eval $inlibc
8573
8574 : see if endservent exists
8575 set endservent d_endsent
8576 eval $inlibc
8577
8578 : Locate the flags for 'open()'
8579 echo " "
8580 $cat >open3.c <<'EOCP'
8581 #include <sys/types.h>
8582 #ifdef I_FCNTL
8583 #include <fcntl.h>
8584 #endif
8585 #ifdef I_SYS_FILE
8586 #include <sys/file.h>
8587 #endif
8588 int main() {
8589         if(O_RDONLY);
8590 #ifdef O_TRUNC
8591         exit(0);
8592 #else
8593         exit(1);
8594 #endif
8595 }
8596 EOCP
8597 : check sys/file.h first to get FREAD on Sun
8598 if $test `./findhdr sys/file.h` && \
8599                 set open3 -DI_SYS_FILE && eval $compile; then
8600         h_sysfile=true;
8601         echo "<sys/file.h> defines the O_* constants..." >&4
8602         if ./open3; then
8603                 echo "and you have the 3 argument form of open()." >&4
8604                 val="$define"
8605         else
8606                 echo "but not the 3 argument form of open().  Oh, well." >&4
8607                 val="$undef"
8608         fi
8609 elif $test `./findhdr fcntl.h` && \
8610                 set open3 -DI_FCNTL && eval $compile; then
8611         h_fcntl=true;
8612         echo "<fcntl.h> defines the O_* constants..." >&4
8613         if ./open3; then
8614                 echo "and you have the 3 argument form of open()." >&4
8615                 val="$define"
8616         else
8617                 echo "but not the 3 argument form of open().  Oh, well." >&4
8618                 val="$undef"
8619         fi
8620 else
8621         val="$undef"
8622         echo "I can't find the O_* constant definitions!  You got problems." >&4
8623 fi
8624 set d_open3
8625 eval $setvar
8626 $rm -f open3*
8627
8628 : see which of string.h or strings.h is needed
8629 echo " "
8630 strings=`./findhdr string.h`
8631 if $test "$strings" && $test -r "$strings"; then
8632         echo "Using <string.h> instead of <strings.h>." >&4
8633         val="$define"
8634 else
8635         val="$undef"
8636         strings=`./findhdr strings.h`
8637         if $test "$strings" && $test -r "$strings"; then
8638                 echo "Using <strings.h> instead of <string.h>." >&4
8639         else
8640                 echo "No string header found -- You'll surely have problems." >&4
8641         fi
8642 fi
8643 set i_string
8644 eval $setvar
8645 case "$i_string" in
8646 "$undef") strings=`./findhdr strings.h`;;
8647 *)        strings=`./findhdr string.h`;;
8648 esac
8649
8650 : check for non-blocking I/O stuff
8651 case "$h_sysfile" in
8652 true) echo "#include <sys/file.h>" > head.c;;
8653 *)
8654         case "$h_fcntl" in
8655         true) echo "#include <fcntl.h>" > head.c;;
8656         *) echo "#include <sys/fcntl.h>" > head.c;;
8657         esac
8658         ;;
8659 esac
8660 echo " "
8661 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8662 case "$o_nonblock" in
8663 '')
8664         $cat head.c > try.c
8665         $cat >>try.c <<'EOCP'
8666 #include <stdio.h>
8667 int main() {
8668 #ifdef O_NONBLOCK
8669         printf("O_NONBLOCK\n");
8670         exit(0);
8671 #endif
8672 #ifdef O_NDELAY
8673         printf("O_NDELAY\n");
8674         exit(0);
8675 #endif
8676 #ifdef FNDELAY
8677         printf("FNDELAY\n");
8678         exit(0);
8679 #endif
8680         exit(0);
8681 }
8682 EOCP
8683         set try
8684         if eval $compile_ok; then
8685                 o_nonblock=`./try`
8686                 case "$o_nonblock" in
8687                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8688                 *) echo "Seems like we can use $o_nonblock.";;
8689                 esac
8690         else
8691                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8692         fi
8693         ;;
8694 *) echo "Using $hint value $o_nonblock.";;
8695 esac
8696 $rm -f try try.* .out core
8697
8698 echo " "
8699 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8700 case "$eagain" in
8701 '')
8702         $cat head.c > try.c
8703         $cat >>try.c <<EOCP
8704 #include <errno.h>
8705 #include <sys/types.h>
8706 #include <signal.h>
8707 #include <stdio.h> 
8708 #define MY_O_NONBLOCK $o_nonblock
8709 #ifndef errno  /* XXX need better Configure test */
8710 extern int errno;
8711 #endif
8712 #$i_unistd I_UNISTD
8713 #ifdef I_UNISTD
8714 #include <unistd.h>
8715 #endif
8716 #$i_string I_STRING
8717 #ifdef I_STRING
8718 #include <string.h>
8719 #else
8720 #include <strings.h>
8721 #endif
8722 $signal_t blech(x) int x; { exit(3); }
8723 EOCP
8724         $cat >> try.c <<'EOCP'
8725 int main()
8726 {
8727         int pd[2];
8728         int pu[2];
8729         char buf[1];
8730         char string[100];
8731
8732         pipe(pd);       /* Down: child -> parent */
8733         pipe(pu);       /* Up: parent -> child */
8734         if (0 != fork()) {
8735                 int ret;
8736                 close(pd[1]);   /* Parent reads from pd[0] */
8737                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8738                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8739                         exit(1);
8740                 signal(SIGALRM, blech);
8741                 alarm(5);
8742                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8743                         exit(2);
8744                 sprintf(string, "%d\n", ret);
8745                 write(2, string, strlen(string));
8746                 alarm(0);
8747 #ifdef EAGAIN
8748                 if (errno == EAGAIN) {
8749                         printf("EAGAIN\n");
8750                         goto ok;
8751                 }
8752 #endif
8753 #ifdef EWOULDBLOCK
8754                 if (errno == EWOULDBLOCK)
8755                         printf("EWOULDBLOCK\n");
8756 #endif
8757         ok:
8758                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8759                 sleep(2);                               /* Give it time to close our pipe */
8760                 alarm(5);
8761                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8762                 alarm(0);
8763                 sprintf(string, "%d\n", ret);
8764                 write(3, string, strlen(string));
8765                 exit(0);
8766         }
8767
8768         close(pd[0]);                   /* We write to pd[1] */
8769         close(pu[1]);                   /* We read from pu[0] */
8770         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8771         close(pd[1]);                   /* Pipe pd is now fully closed! */
8772         exit(0);                                /* Bye bye, thank you for playing! */
8773 }
8774 EOCP
8775         set try
8776         if eval $compile_ok; then
8777                 echo "$startsh" >mtry
8778                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8779                 chmod +x mtry
8780                 ./mtry >/dev/null 2>&1
8781                 case $? in
8782                 0) eagain=`$cat try.out`;;
8783                 1) echo "Could not perform non-blocking setting!";;
8784                 2) echo "I did a successful read() for something that was not there!";;
8785                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8786                 *) echo "Something terribly wrong happened during testing.";;
8787                 esac
8788                 rd_nodata=`$cat try.ret`
8789                 echo "A read() system call with no data present returns $rd_nodata."
8790                 case "$rd_nodata" in
8791                 0|-1) ;;
8792                 *)
8793                         echo "(That's peculiar, fixing that to be -1.)"
8794                         rd_nodata=-1
8795                         ;;
8796                 esac
8797                 case "$eagain" in
8798                 '')
8799                         echo "Forcing errno EAGAIN on read() with no data available."
8800                         eagain=EAGAIN
8801                         ;;
8802                 *)
8803                         echo "Your read() sets errno to $eagain when no data is available."
8804                         ;;
8805                 esac
8806                 status=`$cat try.err`
8807                 case "$status" in
8808                 0) echo "And it correctly returns 0 to signal EOF.";;
8809                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8810                 *) echo "However, your read() returns '$status' on EOF??";;
8811                 esac
8812                 val="$define"
8813                 if test "$status" = "$rd_nodata"; then
8814                         echo "WARNING: you can't distinguish between EOF and no data!"
8815                         val="$undef"
8816                 fi
8817         else
8818                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8819                 eagain=EAGAIN
8820         fi
8821         set d_eofnblk
8822         eval $setvar
8823         ;;
8824 *)
8825         echo "Using $hint value $eagain."
8826         echo "Your read() returns $rd_nodata when no data is present."
8827         case "$d_eofnblk" in
8828         "$define") echo "And you can see EOF because read() returns 0.";;
8829         "$undef") echo "But you can't see EOF status from read() returned value.";;
8830         *)
8831                 echo "(Assuming you can't see EOF status from read anyway.)"
8832                 d_eofnblk=$undef
8833                 ;;
8834         esac
8835         ;;
8836 esac
8837 $rm -f try try.* .out core head.c mtry
8838
8839 : see if fchmod exists
8840 set fchmod d_fchmod
8841 eval $inlibc
8842
8843 : see if fchown exists
8844 set fchown d_fchown
8845 eval $inlibc
8846
8847 : see if this is an fcntl system
8848 set fcntl d_fcntl
8849 eval $inlibc
8850
8851 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8852 while $test $# -ge 2; do
8853         case "$1" in
8854         $define) echo "#include <$2>";;
8855         esac ;
8856     shift 2;
8857 done > try.c;
8858 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8859 set try;
8860 if eval $compile; then
8861         val="$define";
8862 else
8863         val="$undef";
8864 fi;
8865 set $varname;
8866 eval $setvar;
8867 $rm -f try.c try.o'
8868
8869 socketlib=''
8870 sockethdr=''
8871 : see whether socket exists
8872 echo " "
8873 $echo $n "Hmm... $c" >&4
8874 if set socket val -f d_socket; eval $csym; $val; then
8875         echo "Looks like you have Berkeley networking support." >&4
8876         d_socket="$define"
8877         if set setsockopt val -f; eval $csym; $val; then
8878                 d_oldsock="$undef"
8879         else
8880                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8881                 d_oldsock="$define"
8882         fi
8883 else
8884         if $contains socklib libc.list >/dev/null 2>&1; then
8885                 echo "Looks like you have Berkeley networking support." >&4
8886                 d_socket="$define"
8887                 : we will have to assume that it supports the 4.2 BSD interface
8888                 d_oldsock="$undef"
8889         else
8890                 echo "You don't have Berkeley networking in libc$_a..." >&4
8891                 if test "X$d_socket" = "X$define"; then
8892                    echo "...but you seem to believe that you have sockets." >&4
8893                 else
8894                         for net in net socket
8895                         do
8896                                 if test -f /usr/lib/lib$net$_a; then
8897                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8898                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8899                                         if $contains socket libc.list >/dev/null 2>&1; then
8900                                                 d_socket="$define"
8901                                                 socketlib="-l$net"
8902                                                 case "$net" in
8903                                                 net)
8904                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8905                                                         sockethdr="-I/usr/netinclude"
8906                                                         ;;
8907                                                 esac
8908                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8909                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8910                                                         d_oldsock="$undef"
8911                                                 else
8912                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8913                                                         d_oldsock="$define"
8914                                                 fi
8915                                                 break
8916                                         fi
8917                                 fi
8918                         done
8919                         if test "X$d_socket" != "X$define"; then
8920                            echo "or anywhere else I see." >&4
8921                            d_socket="$undef"
8922                            d_oldsock="$undef"
8923                         fi
8924                 fi
8925         fi
8926 fi
8927
8928 : see if socketpair exists
8929 set socketpair d_sockpair
8930 eval $inlibc
8931
8932
8933 echo " "
8934 echo "Checking the availability of certain socket constants..." >& 4
8935 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8936         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8937         $cat >try.c <<EOF
8938 #include <sys/types.h>
8939 #include <sys/socket.h>
8940 int main() {
8941     int i = $ENUM;
8942 }
8943 EOF
8944         val="$undef"
8945         set try; if eval $compile; then
8946                 val="$define"
8947         fi
8948         set d_${enum}; eval $setvar
8949         $rm -f try.c try
8950 done
8951
8952 : see if sys/select.h has to be included
8953 set sys/select.h i_sysselct
8954 eval $inhdr
8955
8956 : see if we should include time.h, sys/time.h, or both
8957 echo " "
8958 if test "X$timeincl" = X; then
8959         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8960         $echo $n "I'm now running the test program...$c"
8961         $cat >try.c <<'EOCP'
8962 #include <sys/types.h>
8963 #ifdef I_TIME
8964 #include <time.h>
8965 #endif
8966 #ifdef I_SYSTIME
8967 #ifdef SYSTIMEKERNEL
8968 #define KERNEL
8969 #endif
8970 #include <sys/time.h>
8971 #endif
8972 #ifdef I_SYSSELECT
8973 #include <sys/select.h>
8974 #endif
8975 int main()
8976 {
8977         struct tm foo;
8978 #ifdef S_TIMEVAL
8979         struct timeval bar;
8980 #endif
8981 #ifdef S_TIMEZONE
8982         struct timezone tzp;
8983 #endif
8984         if (foo.tm_sec == foo.tm_sec)
8985                 exit(0);
8986 #ifdef S_TIMEVAL
8987         if (bar.tv_sec == bar.tv_sec)
8988                 exit(0);
8989 #endif
8990         exit(1);
8991 }
8992 EOCP
8993         flags=''
8994         for s_timezone in '-DS_TIMEZONE' ''; do
8995         sysselect=''
8996         for s_timeval in '-DS_TIMEVAL' ''; do
8997         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8998         for i_time in '' '-DI_TIME'; do
8999         for i_systime in '-DI_SYSTIME' ''; do
9000                 case "$flags" in
9001                 '') $echo $n ".$c"
9002                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
9003                         if eval $compile; then
9004                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
9005                                 shift
9006                                 flags="$*"
9007                                 echo " "
9008                                 $echo $n "Succeeded with $flags$c"
9009                         fi
9010                         ;;
9011                 esac
9012         done
9013         done
9014         done
9015         done
9016         done
9017         timeincl=''
9018         echo " "
9019         case "$flags" in
9020         *SYSTIMEKERNEL*) i_systimek="$define"
9021                 timeincl=`./findhdr sys/time.h`
9022                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
9023         *) i_systimek="$undef";;
9024         esac
9025         case "$flags" in
9026         *I_TIME*) i_time="$define"
9027                 timeincl=`./findhdr time.h`" $timeincl"
9028                 echo "We'll include <time.h>." >&4;;
9029         *) i_time="$undef";;
9030         esac
9031         case "$flags" in
9032         *I_SYSTIME*) i_systime="$define"
9033                 timeincl=`./findhdr sys/time.h`" $timeincl"
9034                 echo "We'll include <sys/time.h>." >&4;;
9035         *) i_systime="$undef";;
9036         esac
9037         $rm -f try.c try
9038 fi
9039
9040 : check for fd_set items
9041 $cat <<EOM
9042
9043 Checking to see how well your C compiler handles fd_set and friends ...
9044 EOM
9045 $cat >fd_set.c <<EOCP
9046 #$i_systime I_SYS_TIME
9047 #$i_sysselct I_SYS_SELECT
9048 #$d_socket HAS_SOCKET
9049 #include <sys/types.h>
9050 #ifdef HAS_SOCKET
9051 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9052 #endif
9053 #ifdef I_SYS_TIME
9054 #include <sys/time.h>
9055 #endif
9056 #ifdef I_SYS_SELECT
9057 #include <sys/select.h>
9058 #endif
9059 int main() {
9060         fd_set fds;
9061
9062 #ifdef TRYBITS
9063         if(fds.fds_bits);
9064 #endif
9065
9066 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9067         exit(0);
9068 #else
9069         exit(1);
9070 #endif
9071 }
9072 EOCP
9073 set fd_set -DTRYBITS
9074 if eval $compile; then
9075         d_fds_bits="$define"
9076         d_fd_set="$define"
9077         echo "Well, your system knows about the normal fd_set typedef..." >&4
9078         if ./fd_set; then
9079                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9080                 d_fd_macros="$define"
9081         else
9082                 $cat >&4 <<'EOM'
9083 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9084 EOM
9085                 d_fd_macros="$undef"
9086         fi
9087 else
9088         $cat <<'EOM'
9089 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9090 EOM
9091         set fd_set
9092         if eval $compile; then
9093                 d_fds_bits="$undef"
9094                 d_fd_set="$define"
9095                 echo "Well, your system has some sort of fd_set available..." >&4
9096                 if ./fd_set; then
9097                         echo "and you have the normal fd_set macros." >&4
9098                         d_fd_macros="$define"
9099                 else
9100                         $cat <<'EOM'
9101 but not the normal fd_set macros!  Gross!  More work for me...
9102 EOM
9103                         d_fd_macros="$undef"
9104                 fi
9105         else
9106         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9107                 d_fd_set="$undef"
9108                 d_fds_bits="$undef"
9109                 d_fd_macros="$undef"
9110         fi
9111 fi
9112 $rm -f fd_set*
9113
9114 : see if fgetpos exists
9115 set fgetpos d_fgetpos
9116 eval $inlibc
9117
9118 : see if flock exists
9119 set flock d_flock
9120 eval $inlibc
9121
9122 : see if fork exists
9123 set fork d_fork
9124 eval $inlibc
9125
9126 : see if pathconf exists
9127 set pathconf d_pathconf
9128 eval $inlibc
9129
9130 : see if fpathconf exists
9131 set fpathconf d_fpathconf
9132 eval $inlibc
9133
9134
9135 : check for fpos64_t
9136 echo " "
9137 echo "Checking to see if you have fpos64_t..." >&4
9138 $cat >try.c <<EOCP
9139 #include <stdio.h>
9140 int main() { fpos64_t x = 7; }
9141 EOCP
9142 set try
9143 if eval $compile; then
9144         val="$define"
9145         echo "You have fpos64_t."
9146 else
9147         val="$undef"
9148         echo "You do not have fpos64_t."
9149         case "$fpossize" in
9150         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9151         esac
9152 fi
9153 $rm -f try.* try
9154 set d_fpos64_t
9155 eval $setvar
9156
9157 : see if frexpl exists
9158 set frexpl d_frexpl
9159 eval $inlibc
9160
9161 hasstruct='varname=$1; struct=$2; shift; shift;
9162 while $test $# -ge 2; do
9163         case "$1" in
9164         $define) echo "#include <$2>";;
9165         esac ;
9166     shift 2;
9167 done > try.c;
9168 echo "int main () { struct $struct foo; }" >> try.c;
9169 set try;
9170 if eval $compile; then
9171         val="$define";
9172 else
9173         val="$undef";
9174 fi;
9175 set $varname;
9176 eval $setvar;
9177 $rm -f try.c try.o'
9178
9179 : see if this is a sys/param system
9180 set sys/param.h i_sysparam
9181 eval $inhdr
9182
9183 : see if this is a sys/mount.h system
9184 set sys/mount.h i_sysmount
9185 eval $inhdr
9186
9187 : see if sys/types.h has to be included
9188 set sys/types.h i_systypes
9189 eval $inhdr
9190
9191
9192 echo " "
9193 echo "Checking to see if your system supports struct fs_data..." >&4
9194 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9195 eval $hasstruct
9196 case "$d_fs_data_s" in
9197 "$define")      echo "Yes, it does."   ;;
9198 *)              echo "No, it doesn't." ;;
9199 esac
9200
9201 : see if fseeko exists
9202 set fseeko d_fseeko
9203 eval $inlibc
9204 case "$longsize" in
9205 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9206 esac
9207
9208 : see if fsetpos exists
9209 set fsetpos d_fsetpos
9210 eval $inlibc
9211
9212
9213 : see if fstatfs exists
9214 set fstatfs d_fstatfs
9215 eval $inlibc
9216
9217
9218 : see if statvfs exists
9219 set statvfs d_statvfs
9220 eval $inlibc
9221
9222 : see if fstatvfs exists
9223 set fstatvfs d_fstatvfs
9224 eval $inlibc
9225
9226
9227 : see if ftello exists
9228 set ftello d_ftello
9229 eval $inlibc
9230 case "$longsize" in
9231 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9232 esac
9233
9234 : see if getcwd exists
9235 set getcwd d_getcwd
9236 eval $inlibc
9237
9238 : see if getespwnam exists
9239 set getespwnam d_getespwnam
9240 eval $inlibc
9241
9242
9243 : see if getfsstat exists
9244 set getfsstat d_getfsstat
9245 eval $inlibc
9246
9247 : see if getgrent exists
9248 set getgrent d_getgrent
9249 eval $inlibc
9250
9251 : see if gethostbyaddr exists
9252 set gethostbyaddr d_gethbyaddr
9253 eval $inlibc
9254
9255 : see if gethostbyname exists
9256 set gethostbyname d_gethbyname
9257 eval $inlibc
9258
9259 : see if gethostent exists
9260 set gethostent d_gethent
9261 eval $inlibc
9262
9263 : see how we will look up host name
9264 echo " "
9265 call=''
9266 if set gethostname val -f d_gethname; eval $csym; $val; then
9267         echo 'gethostname() found.' >&4
9268         d_gethname="$define"
9269         call=gethostname
9270 fi
9271 if set uname val -f d_uname; eval $csym; $val; then
9272         if ./xenix; then
9273                 $cat <<'EOM'
9274 uname() was found, but you're running xenix, and older versions of xenix
9275 have a broken uname(). If you don't really know whether your xenix is old
9276 enough to have a broken system call, use the default answer.
9277
9278 EOM
9279                 dflt=y
9280                 case "$d_uname" in
9281                 "$define") dflt=n;;
9282                 esac
9283                 rp='Is your uname() broken?'
9284                 . ./myread
9285                 case "$ans" in
9286                 n*) d_uname="$define"; call=uname;;
9287                 esac
9288         else
9289                 echo 'uname() found.' >&4
9290                 d_uname="$define"
9291                 case "$call" in
9292                 '') call=uname ;;
9293                 esac
9294         fi
9295 fi
9296 case "$d_gethname" in
9297 '') d_gethname="$undef";;
9298 esac
9299 case "$d_uname" in
9300 '') d_uname="$undef";;
9301 esac
9302 case "$d_uname$d_gethname" in
9303 *define*)
9304         dflt=n
9305         cat <<EOM
9306  
9307 Every now and then someone has a $call() that lies about the hostname
9308 but can't be fixed for political or economic reasons.  If you wish, I can
9309 pretend $call() isn't there and maybe compute hostname at run-time
9310 thanks to the '$phostname' command.
9311
9312 EOM
9313         rp="Shall I ignore $call() from now on?"
9314         . ./myread
9315         case "$ans" in
9316         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9317         esac;;
9318 esac
9319 case "$phostname" in
9320 '') aphostname='';;
9321 *) case "$aphostname" in
9322         /*) ;;
9323         *) set X $phostname
9324                 shift
9325                 file=$1
9326                 shift
9327                 file=`./loc $file $file $pth`
9328                 aphostname=`echo $file $*`
9329                 ;;
9330         esac
9331         ;;
9332 esac
9333 case "$d_uname$d_gethname" in
9334 *define*) ;;
9335 *)
9336         case "$phostname" in
9337         '')
9338                 echo "There will be no way for $package to get your hostname." >&4;;
9339         *)
9340         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9341                 ;;
9342         esac;;
9343 esac
9344 case "$d_phostname" in
9345 '') d_phostname="$undef";;
9346 esac
9347
9348 : see if this is a netdb.h system
9349 set netdb.h i_netdb
9350 eval $inhdr
9351
9352 : see if prototypes for various gethostxxx netdb.h functions are available
9353 echo " "
9354 set d_gethostprotos gethostent $i_netdb netdb.h
9355 eval $hasproto
9356
9357 : see if getlogin exists
9358 set getlogin d_getlogin
9359 eval $inlibc
9360
9361 : see if getmnt exists
9362 set getmnt d_getmnt
9363 eval $inlibc
9364
9365 : see if getmntent exists
9366 set getmntent d_getmntent
9367 eval $inlibc
9368
9369 : see if getnetbyaddr exists
9370 set getnetbyaddr d_getnbyaddr
9371 eval $inlibc
9372
9373 : see if getnetbyname exists
9374 set getnetbyname d_getnbyname
9375 eval $inlibc
9376
9377 : see if getnetent exists
9378 set getnetent d_getnent
9379 eval $inlibc
9380
9381 : see if prototypes for various getnetxxx netdb.h functions are available
9382 echo " "
9383 set d_getnetprotos getnetent $i_netdb netdb.h
9384 eval $hasproto
9385
9386
9387 : see if getprotobyname exists
9388 set getprotobyname d_getpbyname
9389 eval $inlibc
9390
9391 : see if getprotobynumber exists
9392 set getprotobynumber d_getpbynumber
9393 eval $inlibc
9394
9395 : see if getprotoent exists
9396 set getprotoent d_getpent
9397 eval $inlibc
9398
9399 : see if getpgid exists
9400 set getpgid d_getpgid
9401 eval $inlibc
9402
9403 : see if getpgrp2 exists
9404 set getpgrp2 d_getpgrp2
9405 eval $inlibc
9406
9407 : see if getppid exists
9408 set getppid d_getppid
9409 eval $inlibc
9410
9411 : see if getpriority exists
9412 set getpriority d_getprior
9413 eval $inlibc
9414
9415 : see if prototypes for various getprotoxxx netdb.h functions are available
9416 echo " "
9417 set d_getprotoprotos getprotoent $i_netdb netdb.h
9418 eval $hasproto
9419
9420 : see if getprpwnam exists
9421 set getprpwnam d_getprpwnam
9422 eval $inlibc
9423
9424 : see if getpwent exists
9425 set getpwent d_getpwent
9426 eval $inlibc
9427
9428
9429 : see if getservbyname exists
9430 set getservbyname d_getsbyname
9431 eval $inlibc
9432
9433 : see if getservbyport exists
9434 set getservbyport d_getsbyport
9435 eval $inlibc
9436
9437 : see if getservent exists
9438 set getservent d_getsent
9439 eval $inlibc
9440
9441 : see if prototypes for various getservxxx netdb.h functions are available
9442 echo " "
9443 set d_getservprotos getservent $i_netdb netdb.h
9444 eval $hasproto
9445
9446 : see if getspnam exists
9447 set getspnam d_getspnam
9448 eval $inlibc
9449
9450 : see if gettimeofday or ftime exists
9451 set gettimeofday d_gettimeod
9452 eval $inlibc
9453 case "$d_gettimeod" in
9454 "$undef")
9455         set ftime d_ftime 
9456         eval $inlibc
9457         ;;
9458 *)
9459         val="$undef"; set d_ftime; eval $setvar
9460         ;;
9461 esac
9462 case "$d_gettimeod$d_ftime" in
9463 "$undef$undef")
9464         echo " "
9465         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9466         ;;
9467 esac
9468
9469 : see if this is an grp system
9470 set grp.h i_grp
9471 eval $inhdr
9472
9473 case "$i_grp" in
9474 $define)
9475         xxx=`./findhdr grp.h`
9476         $cppstdin $cppflags $cppminus < $xxx >$$.h
9477
9478         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9479                 val="$define"
9480         else
9481                 val="$undef"
9482         fi
9483         set d_grpasswd
9484         eval $setvar
9485
9486         $rm -f $$.h
9487         ;;
9488 *)
9489         val="$undef";
9490         set d_grpasswd; eval $setvar
9491         ;;
9492 esac
9493
9494 : see if hasmntopt exists
9495 set hasmntopt d_hasmntopt
9496 eval $inlibc
9497
9498 : see if this is a netinet/in.h or sys/in.h system
9499 set netinet/in.h i_niin sys/in.h i_sysin
9500 eval $inhdr
9501
9502 : see if arpa/inet.h has to be included
9503 set arpa/inet.h i_arpainet
9504 eval $inhdr
9505
9506 : see if htonl --and friends-- exists
9507 val=''
9508 set htonl val
9509 eval $inlibc
9510
9511 : Maybe they are macros.
9512 case "$val" in
9513 $undef)
9514         $cat >htonl.c <<EOM
9515 #include <stdio.h>
9516 #include <sys/types.h>
9517 #$i_niin I_NETINET_IN
9518 #$i_sysin I_SYS_IN
9519 #$i_arpainet I_ARPA_INET
9520 #ifdef I_NETINET_IN
9521 #include <netinet/in.h>
9522 #endif
9523 #ifdef I_SYS_IN
9524 #include <sys/in.h>
9525 #endif
9526 #ifdef I_ARPA_INET
9527 #include <arpa/inet.h>
9528 #endif
9529 #ifdef htonl
9530 printf("Defined as a macro.");
9531 #endif
9532 EOM
9533         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9534         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9535                 val="$define"
9536                 echo "But it seems to be defined as a macro." >&4
9537         fi
9538         $rm -f htonl.?
9539         ;;
9540 esac
9541 set d_htonl
9542 eval $setvar
9543
9544 : see if iconv exists
9545 set iconv d_iconv
9546 eval $inlibc
9547
9548 : index or strchr
9549 echo " "
9550 if set index val -f; eval $csym; $val; then
9551         if set strchr val -f d_strchr; eval $csym; $val; then
9552                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9553                         val="$define"
9554                         vali="$undef"
9555                         echo "strchr() found." >&4
9556                 else
9557                         val="$undef"
9558                         vali="$define"
9559                         echo "index() found." >&4
9560                 fi
9561         else
9562                 val="$undef"
9563                 vali="$define"
9564                 echo "index() found." >&4
9565         fi
9566 else
9567         if set strchr val -f d_strchr; eval $csym; $val; then
9568                 val="$define"
9569                 vali="$undef"
9570                 echo "strchr() found." >&4
9571         else
9572                 echo "No index() or strchr() found!" >&4
9573                 val="$undef"
9574                 vali="$undef"
9575         fi
9576 fi
9577 set d_strchr; eval $setvar
9578 val="$vali"
9579 set d_index; eval $setvar
9580
9581 : check whether inet_aton exists
9582 set inet_aton d_inetaton
9583 eval $inlibc
9584
9585 : see if inttypes.h is available
9586 : we want a real compile instead of Inhdr because some systems
9587 : have an inttypes.h which includes non-existent headers
9588 echo " "
9589 $cat >try.c <<EOCP
9590 #include <inttypes.h>
9591 int main() {
9592         static int32_t foo32 = 0x12345678;
9593 }
9594 EOCP
9595 set try
9596 if eval $compile; then
9597         echo "<inttypes.h> found." >&4
9598         val="$define"
9599 else
9600         echo "<inttypes.h> NOT found." >&4
9601         val="$undef"
9602 fi
9603 $rm -f try.c try
9604 set i_inttypes
9605 eval $setvar
9606
9607 : check for int64_t
9608 echo " "
9609 echo "Checking to see if you have int64_t..." >&4
9610 $cat >try.c <<EOCP
9611 #include <sys/types.h>
9612 #$i_inttypes I_INTTYPES
9613 #ifdef I_INTTYPES
9614 #include <inttypes.h>
9615 #endif
9616 int main() { int64_t x = 7; }
9617 EOCP
9618 set try
9619 if eval $compile; then
9620         val="$define"
9621         echo "You have int64_t."
9622 else
9623         val="$undef"
9624         echo "You do not have int64_t."
9625 fi
9626 $rm -f try try.*
9627 set d_int64_t
9628 eval $setvar
9629
9630 : Look for isascii
9631 echo " "
9632 $cat >isascii.c <<'EOCP'
9633 #include <stdio.h>
9634 #include <ctype.h>
9635 int main() {
9636         int c = 'A';
9637         if (isascii(c))
9638                 exit(0);
9639         else
9640                 exit(1);
9641 }
9642 EOCP
9643 set isascii
9644 if eval $compile; then
9645         echo "isascii() found." >&4
9646         val="$define"
9647 else
9648         echo "isascii() NOT found." >&4
9649         val="$undef"
9650 fi
9651 set d_isascii
9652 eval $setvar
9653 $rm -f isascii*
9654
9655 : see if isnan exists
9656 set isnan d_isnan
9657 eval $inlibc
9658
9659 : see if isnanl exists
9660 set isnanl d_isnanl
9661 eval $inlibc
9662
9663 : see if killpg exists
9664 set killpg d_killpg
9665 eval $inlibc
9666
9667 : see if lchown exists
9668 echo " "
9669 $cat > try.c <<'EOCP'
9670 /* System header to define __stub macros and hopefully few prototypes,
9671     which can conflict with char lchown(); below.  */
9672 #include <assert.h>
9673 /* Override any gcc2 internal prototype to avoid an error.  */
9674 /* We use char because int might match the return type of a gcc2
9675    builtin and then its argument prototype would still apply.  */
9676 char lchown();
9677 int main() {
9678     /*  The GNU C library defines this for functions which it implements
9679         to always fail with ENOSYS.  Some functions are actually named
9680         something starting with __ and the normal name is an alias.  */
9681 #if defined (__stub_lchown) || defined (__stub___lchown)
9682 choke me
9683 #else
9684 lchown();
9685 #endif
9686 ; return 0; }
9687 EOCP
9688 set try
9689 if eval $compile; then
9690     $echo "lchown() found." >&4
9691     val="$define"
9692 else
9693     $echo "lchown() NOT found." >&4
9694     val="$undef"
9695 fi
9696 set d_lchown
9697 eval $setvar
9698
9699 : See if number of significant digits in a double precision number is known
9700 echo " "
9701 $cat >ldbl_dig.c <<EOM
9702 #$i_limits I_LIMITS
9703 #$i_float I_FLOAT
9704 #ifdef I_LIMITS
9705 #include <limits.h>
9706 #endif
9707 #ifdef I_FLOAT
9708 #include <float.h>
9709 #endif
9710 #ifdef LDBL_DIG
9711 printf("Contains LDBL_DIG");
9712 #endif
9713 EOM
9714 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9715 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9716         echo "LDBL_DIG found." >&4
9717         val="$define"
9718 else
9719         echo "LDBL_DIG NOT found." >&4
9720         val="$undef"
9721 fi
9722 $rm -f ldbl_dig.?
9723 set d_ldbl_dig
9724 eval $setvar
9725
9726 : see if link exists
9727 set link d_link
9728 eval $inlibc
9729
9730 : see if localeconv exists
9731 set localeconv d_locconv
9732 eval $inlibc
9733
9734 : see if lockf exists
9735 set lockf d_lockf
9736 eval $inlibc
9737
9738 : check for long long
9739 echo " "
9740 echo "Checking to see if you have long long..." >&4
9741 echo 'int main() { long long x = 7; return 0; }' > try.c
9742 set try
9743 if eval $compile; then
9744         val="$define"
9745         echo "You have long long."
9746 else
9747         val="$undef"
9748         echo "You do not have long long."
9749 fi
9750 $rm try.*
9751 set d_longlong
9752 eval $setvar
9753
9754 : check for length of long long
9755 case "${d_longlong}${longlongsize}" in
9756 $define)
9757         echo " "
9758         echo "Checking to see how big your long longs are..." >&4
9759         $cat >try.c <<'EOCP'
9760 #include <stdio.h>
9761 int main()
9762 {
9763     printf("%d\n", (int)sizeof(long long));
9764     return(0);
9765 }
9766 EOCP
9767         set try
9768         if eval $compile_ok; then
9769                 longlongsize=`./try$exe_ext`
9770                 echo "Your long longs are $longlongsize bytes long."
9771         else
9772                 dflt='8'
9773                 echo " "
9774                 echo "(I can't seem to compile the test program.  Guessing...)"
9775                 rp="What is the size of a long long (in bytes)?"
9776                 . ./myread
9777                 longlongsize="$ans"
9778         fi
9779         if $test "X$longsize" = "X$longlongsize"; then
9780                 echo "(That isn't any different from an ordinary long.)"
9781         fi      
9782         ;;
9783 esac
9784 $rm -f try.* try
9785
9786 : see if prototype for lseek is available
9787 echo " "
9788 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9789 eval $hasproto
9790
9791 : see if lstat exists
9792 set lstat d_lstat
9793 eval $inlibc
9794
9795 : see if madvise exists
9796 set madvise d_madvise
9797 eval $inlibc
9798
9799 : see if mblen exists
9800 set mblen d_mblen
9801 eval $inlibc
9802
9803 : see if mbstowcs exists
9804 set mbstowcs d_mbstowcs
9805 eval $inlibc
9806
9807 : see if mbtowc exists
9808 set mbtowc d_mbtowc
9809 eval $inlibc
9810
9811 : see if memchr exists
9812 set memchr d_memchr
9813 eval $inlibc
9814
9815 : see if memcmp exists
9816 set memcmp d_memcmp
9817 eval $inlibc
9818
9819 : see if memcpy exists
9820 set memcpy d_memcpy
9821 eval $inlibc
9822
9823 : see if memmove exists
9824 set memmove d_memmove
9825 eval $inlibc
9826
9827 : see if memset exists
9828 set memset d_memset
9829 eval $inlibc
9830
9831 : see if mkdir exists
9832 set mkdir d_mkdir
9833 eval $inlibc
9834
9835 : see if mkdtemp exists
9836 set mkdtemp d_mkdtemp
9837 eval $inlibc
9838
9839 : see if mkfifo exists
9840 set mkfifo d_mkfifo
9841 eval $inlibc
9842
9843 : see if mkstemp exists
9844 set mkstemp d_mkstemp
9845 eval $inlibc
9846
9847 : see if mkstemps exists
9848 set mkstemps d_mkstemps
9849 eval $inlibc
9850
9851 : see if mktime exists
9852 set mktime d_mktime
9853 eval $inlibc
9854
9855 : see if this is a sys/mman.h system
9856 set sys/mman.h i_sysmman
9857 eval $inhdr
9858
9859 : see if mmap exists
9860 set mmap d_mmap
9861 eval $inlibc
9862 : see what shmat returns
9863 : default to something harmless
9864 mmaptype='void *'
9865 case "$i_sysmman$d_mmap" in
9866 "$define$define")
9867         $cat >mmap.c <<'END'
9868 #include <sys/mman.h>
9869 void *mmap();
9870 END
9871         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9872                 mmaptype='void *'
9873         else
9874                 mmaptype='caddr_t'
9875         fi
9876         echo "and it returns ($mmaptype)." >&4
9877         ;;
9878 esac
9879
9880
9881
9882 : see if modfl exists
9883 set modfl d_modfl
9884 eval $inlibc
9885
9886 : see if mprotect exists
9887 set mprotect d_mprotect
9888 eval $inlibc
9889
9890 : see if msgctl exists
9891 set msgctl d_msgctl
9892 eval $inlibc
9893
9894 : see if msgget exists
9895 set msgget d_msgget
9896 eval $inlibc
9897
9898 : see if msgsnd exists
9899 set msgsnd d_msgsnd
9900 eval $inlibc
9901
9902 : see if msgrcv exists
9903 set msgrcv d_msgrcv
9904 eval $inlibc
9905
9906 : see how much of the 'msg*(2)' library is present.
9907 h_msg=true
9908 echo " "
9909 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9910 *"$undef"*) h_msg=false;;
9911 esac
9912 case "$osname" in
9913 freebsd)
9914     case "`ipcs 2>&1`" in
9915     "SVID messages"*"not configured"*)
9916         echo "Your $osname does not have the msg*(2) configured." >&4
9917         h_msg=false
9918         val="$undef"
9919         set msgctl d_msgctl
9920         eval $setvar
9921         set msgget d_msgget
9922         eval $setvar
9923         set msgsnd d_msgsnd
9924         eval $setvar
9925         set msgrcv d_msgrcv
9926         eval $setvar
9927         ;;
9928     esac
9929     ;;
9930 esac
9931 : we could also check for sys/ipc.h ...
9932 if $h_msg && $test `./findhdr sys/msg.h`; then
9933         echo "You have the full msg*(2) library." >&4
9934         val="$define"
9935 else
9936         echo "You don't have the full msg*(2) library." >&4
9937         val="$undef"
9938 fi
9939 set d_msg
9940 eval $setvar
9941
9942 : see if msync exists
9943 set msync d_msync
9944 eval $inlibc
9945
9946 : see if munmap exists
9947 set munmap d_munmap
9948 eval $inlibc
9949
9950 : see if nice exists
9951 set nice d_nice
9952 eval $inlibc
9953
9954
9955 echo " "
9956 echo "Checking which 64-bit integer type we could use..." >&4
9957
9958 case "$intsize" in
9959 8) val=int
9960    set quadtype
9961    eval $setvar
9962    val='"unsigned int"'
9963    set uquadtype
9964    eval $setvar
9965    quadkind=1
9966    ;;
9967 *) case "$longsize" in
9968    8) val=long
9969       set quadtype
9970       eval $setvar
9971       val='"unsigned long"'
9972       set uquadtype
9973       eval $setvar
9974       quadkind=2
9975       ;;
9976    *) case "$d_longlong:$longlongsize" in
9977       define:8)
9978         val='"long long"'
9979         set quadtype
9980         eval $setvar
9981         val='"unsigned long long"'
9982         set uquadtype
9983         eval $setvar
9984         quadkind=3
9985         ;;
9986       *) case "$d_int64_t" in
9987          define)
9988            val=int64_t
9989            set quadtype
9990            eval $setvar
9991            val=uint64_t
9992            set uquadtype
9993            eval $setvar
9994            quadkind=4
9995            ;;
9996          esac
9997          ;;
9998       esac
9999       ;;
10000    esac
10001    ;;
10002 esac
10003
10004 case "$quadtype" in
10005 '')     echo "Alas, no 64-bit integer types in sight." >&4
10006         d_quad="$undef"
10007         ;;
10008 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
10009             verb="will"
10010         else
10011             verb="could"
10012         fi
10013         echo "We $verb use '$quadtype' for 64-bit integers." >&4
10014         d_quad="$define"
10015         ;;
10016 esac
10017
10018 : check for length of character
10019 echo " "
10020 case "$charsize" in
10021 '')
10022         echo "Checking to see how big your characters are (hey, you never know)..." >&4
10023         $cat >try.c <<'EOCP'
10024 #include <stdio.h>
10025 int main()
10026 {
10027     printf("%d\n", (int)sizeof(char));
10028     exit(0);
10029 }
10030 EOCP
10031         set try
10032         if eval $compile_ok; then
10033                 dflt=`./try`
10034         else
10035                 dflt='1'
10036                 echo "(I can't seem to compile the test program.  Guessing...)"
10037         fi
10038         ;;
10039 *)
10040         dflt="$charsize"
10041         ;;
10042 esac
10043 rp="What is the size of a character (in bytes)?"
10044 . ./myread
10045 charsize="$ans"
10046 $rm -f try.c try
10047
10048
10049 echo " "
10050 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10051
10052 case "$use64bitint:$d_quad:$quadtype" in
10053 define:define:?*)
10054         ivtype="$quadtype"
10055         uvtype="$uquadtype"
10056         ivsize=8
10057         uvsize=8
10058         ;;
10059 *)      ivtype="long"
10060         uvtype="unsigned long"
10061         ivsize=$longsize
10062         uvsize=$longsize
10063         ;;
10064 esac
10065
10066 case "$uselongdouble:$d_longdbl" in
10067 define:define)
10068         nvtype="long double"
10069         nvsize=$longdblsize
10070         ;;
10071 *)      nvtype=double
10072         nvsize=$doublesize
10073         ;;
10074 esac
10075
10076 $echo "(IV will be "$ivtype", $ivsize bytes)"
10077 $echo "(UV will be "$uvtype", $uvsize bytes)"
10078 $echo "(NV will be "$nvtype", $nvsize bytes)"
10079
10080 $cat >try.c <<EOCP
10081 #$i_inttypes I_INTTYPES
10082 #ifdef I_INTTYPES
10083 #include <inttypes.h>
10084 #endif
10085 #include <stdio.h>
10086 int main() {
10087 #ifdef INT8
10088    int8_t i =  INT8_MAX;
10089   uint8_t u = UINT8_MAX;
10090   printf("int8_t\n");
10091 #endif
10092 #ifdef INT16
10093    int16_t i =  INT16_MAX;
10094   uint16_t i = UINT16_MAX;
10095   printf("int16_t\n");
10096 #endif
10097 #ifdef INT32
10098    int32_t i =  INT32_MAX;
10099   uint32_t u = UINT32_MAX;
10100   printf("int32_t\n");
10101 #endif
10102 }
10103 EOCP
10104
10105 case "$i8type" in
10106 '')     case "$charsize" in
10107         1)      i8type=char
10108                 u8type="unsigned char"
10109                 i8size=$charsize
10110                 u8size=$charsize
10111                 ;;
10112         esac
10113         ;;
10114 esac
10115 case "$i8type" in
10116 '')     set try -DINT8
10117         if eval $compile; then
10118                 case "`./try$exe_ext`" in
10119                 int8_t) i8type=int8_t
10120                         u8type=uint8_t
10121                         i8size=1
10122                         u8size=1
10123                         ;;
10124                 esac
10125         fi
10126         ;;
10127 esac
10128 case "$i8type" in
10129 '')     if $test $charsize -ge 1; then
10130                 i8type=char
10131                 u8type="unsigned char"
10132                 i8size=$charsize
10133                 u8size=$charsize
10134         fi
10135         ;;
10136 esac
10137
10138 case "$i16type" in
10139 '')     case "$shortsize" in
10140         2)      i16type=short
10141                 u16type="unsigned short"
10142                 i16size=$shortsize
10143                 u16size=$shortsize
10144                 ;;
10145         esac
10146         ;;
10147 esac
10148 case "$i16type" in
10149 '')     set try -DINT16
10150         if eval $compile; then
10151                 case "`./try$exe_ext`" in
10152                 int16_t)
10153                         i16type=int16_t
10154                         u16type=uint16_t
10155                         i16size=2
10156                         u16size=2
10157                         ;;
10158                 esac
10159         fi
10160         ;;
10161 esac
10162 case "$i16type" in
10163 '')     if $test $shortsize -ge 2; then
10164                 i16type=short
10165                 u16type="unsigned short"
10166                 i16size=$shortsize
10167                 u16size=$shortsize
10168         fi
10169         ;;
10170 esac
10171
10172 case "$i32type" in
10173 '')     case "$longsize" in
10174         4)      i32type=long
10175                 u32type="unsigned long"
10176                 i32size=$longsize
10177                 u32size=$longsize
10178                 ;;
10179         *)      case "$intsize" in
10180                 4)      i32type=int
10181                         u32type="unsigned int"
10182                         i32size=$intsize
10183                         u32size=$intsize
10184                         ;;
10185                 esac
10186                 ;;
10187         esac
10188         ;;
10189 esac
10190 case "$i32type" in
10191 '')     set try -DINT32
10192         if eval $compile; then
10193                 case "`./try$exe_ext`" in
10194                 int32_t)
10195                         i32type=int32_t
10196                         u32type=uint32_t
10197                         i32size=4
10198                         u32size=4
10199                         ;;
10200                 esac
10201         fi
10202         ;;
10203 esac
10204 case "$i32type" in
10205 '')     if $test $intsize -ge 4; then
10206                 i32type=int
10207                 u32type="unsigned int"
10208                 i32size=$intsize
10209                 u32size=$intsize
10210         fi
10211         ;;
10212 esac
10213
10214 case "$i64type" in
10215 '')     case "$d_quad:$quadtype" in
10216         define:?*)
10217                 i64type="$quadtype"
10218                 u64type="$uquadtype"
10219                 i64size=8
10220                 u64size=8
10221                 ;;
10222         esac
10223         ;;
10224 esac
10225
10226 $echo "Checking whether your NVs can preserve your UVs..." >&4
10227 $cat <<EOP >try.c
10228 #include <stdio.h>
10229 int main() {
10230     $uvtype k = ($uvtype)~0, l;
10231     $nvtype d;
10232     l = k;
10233     d = ($nvtype)l;
10234     l = ($uvtype)d;
10235     if (l == k)
10236        printf("preserve\n");
10237     exit(0);
10238 }
10239 EOP
10240 set try
10241 if eval $compile; then
10242         case "`./try$exe_ext`" in
10243         preserve) d_nv_preserves_uv="$define" ;;
10244         esac
10245 fi      
10246 case "$d_nv_preserves_uv" in
10247 $define) $echo "Yes, they can."  2>&1 ;;
10248 *)       $echo "No, they can't." 2>&1
10249          d_nv_preserves_uv="$undef"
10250          ;;
10251 esac
10252
10253 $rm -f try.* try
10254
10255 case "$d_nv_preserves_uv" in
10256 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10257 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10258         $cat <<EOP >try.c
10259 #include <stdio.h>
10260 int main() {
10261     $uvtype u = 0;
10262     int     n = 8 * $uvsize;
10263     int     i;
10264     for (i = 0; i < n; i++) {
10265       u = u << 1 | ($uvtype)1;
10266       if (($uvtype)($nvtype)u != u)
10267         break;
10268     }
10269     printf("%d\n", i);
10270     exit(0);
10271 }
10272 EOP
10273         set try
10274         if eval $compile; then
10275                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10276         fi
10277         case "$d_nv_preserves_uv_bits" in
10278         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10279         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10280                 d_nv_preserves_uv_bits="$undef"
10281                 ;;
10282         esac
10283         $rm -f try.* try
10284         ;;
10285 esac
10286
10287
10288 : check for off64_t
10289 echo " "
10290 echo "Checking to see if you have off64_t..." >&4
10291 $cat >try.c <<EOCP
10292 #include <sys/types.h>
10293 #include <unistd.h>
10294 int main() { off64_t x = 7; }
10295 EOCP
10296 set try
10297 if eval $compile; then
10298         val="$define"
10299         echo "You have off64_t."
10300 else
10301         val="$undef"
10302         echo "You do not have off64_t."
10303         case "$lseeksize" in
10304         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10305         esac
10306 fi
10307 $rm -f try.* try
10308 set d_off64_t
10309 eval $setvar
10310
10311 : see if POSIX threads are available
10312 set pthread.h i_pthread
10313 eval $inhdr
10314
10315
10316
10317
10318 : how to create joinable pthreads
10319 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10320         echo " "
10321         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10322         $cat >try.c <<'EOCP'
10323 #include <pthread.h>
10324 int main() {
10325     int detachstate = JOINABLE;
10326 }
10327 EOCP
10328         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10329         if eval $compile; then
10330                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10331                 val="$undef" # Yes, undef.
10332                 set d_old_pthread_create_joinable
10333                 eval $setvar
10334                 val=""
10335                 set old_pthread_create_joinable
10336                 eval $setvar
10337         else
10338                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10339                 if eval $compile; then
10340                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10341                         val="$define"
10342                         set d_old_pthread_create_joinable
10343                         eval $setvar
10344                         val=PTHREAD_CREATE_UNDETACHED
10345                         set old_pthread_create_joinable
10346                         eval $setvar
10347                 else            
10348                         set try -DJOINABLE=__UNDETACHED
10349                         if eval $compile; then
10350                                 echo "You seem to use __UNDETACHED." >&4
10351                                 val="$define"
10352                                 set d_old_pthread_create_joinable
10353                                 eval $setvar
10354                                 val=__UNDETACHED
10355                                 set old_pthread_create_joinable
10356                                 eval $setvar
10357                         else
10358                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10359                                 val="$define"
10360                                 set d_old_pthread_create_joinable
10361                                 eval $setvar
10362                                 val=0
10363                                 set old_pthread_create_joinable
10364                                 eval $setvar
10365                         fi
10366                 fi
10367         fi
10368         $rm -f try try.*
10369 else
10370     d_old_pthread_create_joinable="$undef"
10371     old_pthread_create_joinable=""
10372 fi
10373
10374 : see if pause exists
10375 set pause d_pause
10376 eval $inlibc
10377
10378 : see if pipe exists
10379 set pipe d_pipe
10380 eval $inlibc
10381
10382 : see if poll exists
10383 set poll d_poll
10384 eval $inlibc
10385
10386
10387 : see whether the various POSIXish _yields exist
10388 $cat >try.c <<EOP
10389 #include <pthread.h>
10390 #include <stdio.h>
10391 int main() {
10392 #ifdef SCHED_YIELD
10393         sched_yield();
10394 #else
10395 #ifdef PTHREAD_YIELD
10396         pthread_yield();
10397 #else
10398 #ifdef PTHREAD_YIELD_NULL
10399         pthread_yield(NULL);
10400 #endif
10401 #endif
10402 #endif
10403 }
10404 EOP
10405 : see if sched_yield exists
10406 set try -DSCHED_YIELD
10407 if eval $compile; then
10408     val="$define"
10409     sched_yield='sched_yield()'
10410 else
10411     val="$undef"
10412 fi
10413 case "$usethreads" in
10414 $define)
10415         case "$val" in
10416         $define) echo 'sched_yield() found.' >&4        ;;
10417         *)       echo 'sched_yield() NOT found.' >&4    ;;
10418         esac
10419 esac
10420 set d_sched_yield
10421 eval $setvar
10422
10423 : see if pthread_yield exists
10424 set try -DPTHREAD_YIELD
10425 if eval $compile; then
10426     val="$define"
10427     case "$sched_yield" in
10428     '') sched_yield='pthread_yield()' ;;
10429     esac
10430 else
10431     set try -DPTHREAD_YIELD_NULL
10432     if eval $compile; then
10433         val="$define"
10434         case "$sched_yield" in
10435         '') sched_yield='pthread_yield(NULL)' ;;
10436         esac
10437     else
10438         val="$undef"
10439     fi
10440 fi
10441 case "$usethreads" in
10442 $define)
10443         case "$val" in
10444         $define) echo 'pthread_yield() found.' >&4      ;;
10445         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10446         esac
10447         ;;
10448 esac
10449 set d_pthread_yield
10450 eval $setvar
10451
10452 case "$sched_yield" in
10453 '') sched_yield=undef ;;
10454 esac
10455
10456 $rm -f try try.*
10457
10458 : see if this is a pwd.h system
10459 set pwd.h i_pwd
10460 eval $inhdr
10461
10462 case "$i_pwd" in
10463 $define)
10464         xxx=`./findhdr pwd.h`
10465         $cppstdin $cppflags $cppminus < $xxx >$$.h
10466
10467         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10468                 val="$define"
10469         else
10470                 val="$undef"
10471         fi
10472         set d_pwquota
10473         eval $setvar
10474
10475         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10476                 val="$define"
10477         else
10478                 val="$undef"
10479         fi
10480         set d_pwage
10481         eval $setvar
10482
10483         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10484                 val="$define"
10485         else
10486                 val="$undef"
10487         fi
10488         set d_pwchange
10489         eval $setvar
10490
10491         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10492                 val="$define"
10493         else
10494                 val="$undef"
10495         fi
10496         set d_pwclass
10497         eval $setvar
10498
10499         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10500                 val="$define"
10501         else
10502                 val="$undef"
10503         fi
10504         set d_pwexpire
10505         eval $setvar
10506
10507         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10508                 val="$define"
10509         else
10510                 val="$undef"
10511         fi
10512         set d_pwcomment
10513         eval $setvar
10514
10515         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10516                 val="$define"
10517         else
10518                 val="$undef"
10519         fi
10520         set d_pwgecos
10521         eval $setvar
10522
10523         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10524                 val="$define"
10525         else
10526                 val="$undef"
10527         fi
10528         set d_pwpasswd
10529         eval $setvar
10530
10531         $rm -f $$.h
10532         ;;
10533 *)
10534         val="$undef"; 
10535         set d_pwquota; eval $setvar
10536         set d_pwage; eval $setvar
10537         set d_pwchange; eval $setvar
10538         set d_pwclass; eval $setvar
10539         set d_pwexpire; eval $setvar
10540         set d_pwcomment; eval $setvar
10541         set d_pwgecos; eval $setvar
10542         set d_pwpasswd; eval $setvar
10543         ;;
10544 esac
10545
10546 : see if readdir and friends exist
10547 set readdir d_readdir
10548 eval $inlibc
10549 set seekdir d_seekdir
10550 eval $inlibc
10551 set telldir d_telldir
10552 eval $inlibc
10553 set rewinddir d_rewinddir
10554 eval $inlibc
10555
10556 : see if readlink exists
10557 set readlink d_readlink
10558 eval $inlibc
10559
10560 : see if rename exists
10561 set rename d_rename
10562 eval $inlibc
10563
10564 : see if rmdir exists
10565 set rmdir d_rmdir
10566 eval $inlibc
10567
10568 : see if memory.h is available.
10569 val=''
10570 set memory.h val
10571 eval $inhdr
10572
10573 : See if it conflicts with string.h
10574 case "$val" in
10575 $define)
10576         case "$strings" in
10577         '') ;;
10578         *)
10579                 $cppstdin $cppflags $cppminus < $strings > mem.h
10580                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10581                         echo " "
10582                         echo "We won't be including <memory.h>."
10583                         val="$undef"
10584                 fi
10585                 $rm -f mem.h
10586                 ;;
10587         esac
10588 esac
10589 set i_memory
10590 eval $setvar
10591
10592 : can bcopy handle overlapping blocks?
10593 val="$undef"
10594 case "$d_bcopy" in
10595 "$define")
10596         echo " "
10597         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10598         $cat >try.c <<EOCP
10599 #$i_memory I_MEMORY
10600 #$i_stdlib I_STDLIB
10601 #$i_string I_STRING
10602 #$i_unistd I_UNISTD
10603 EOCP
10604         $cat >>try.c <<'EOCP'
10605 #include <stdio.h>
10606 #ifdef I_MEMORY
10607 #  include <memory.h>
10608 #endif
10609 #ifdef I_STDLIB
10610 #  include <stdlib.h>
10611 #endif
10612 #ifdef I_STRING
10613 #  include <string.h>
10614 #else
10615 #  include <strings.h>
10616 #endif
10617 #ifdef I_UNISTD
10618 #  include <unistd.h>  /* Needed for NetBSD */
10619 #endif
10620 int main()
10621 {
10622 char buf[128], abc[128];
10623 char *b;
10624 int len;
10625 int off;
10626 int align;
10627
10628 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10629
10630 for (align = 7; align >= 0; align--) {
10631         for (len = 36; len; len--) {
10632                 b = buf+align;
10633                 bcopy(abc, b, len);
10634                 for (off = 1; off <= len; off++) {
10635                         bcopy(b, b+off, len);
10636                         bcopy(b+off, b, len);
10637                         if (bcmp(b, abc, len))
10638                                 exit(1);
10639                 }
10640         }
10641 }
10642 exit(0);
10643 }
10644 EOCP
10645         set try
10646         if eval $compile_ok; then
10647                 if ./try 2>/dev/null; then
10648                         echo "Yes, it can."
10649                         val="$define"
10650                 else
10651                         echo "It can't, sorry."
10652                         case "$d_memmove" in
10653                         "$define") echo "But that's Ok since you have memmove()." ;;
10654                         esac
10655                 fi
10656         else
10657                 echo "(I can't compile the test program, so we'll assume not...)"
10658                 case "$d_memmove" in
10659                 "$define") echo "But that's Ok since you have memmove()." ;;
10660                 esac
10661         fi
10662         ;;
10663 esac
10664 $rm -f try.* try core
10665 set d_safebcpy
10666 eval $setvar
10667
10668 : can memcpy handle overlapping blocks?
10669 val="$undef"
10670 case "$d_memcpy" in
10671 "$define")
10672         echo " "
10673         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10674         $cat >try.c <<EOCP
10675 #$i_memory I_MEMORY
10676 #$i_stdlib I_STDLIB
10677 #$i_string I_STRING
10678 #$i_unistd I_UNISTD
10679 EOCP
10680         $cat >>try.c <<'EOCP'
10681 #include <stdio.h>
10682 #ifdef I_MEMORY
10683 #  include <memory.h>
10684 #endif
10685 #ifdef I_STDLIB
10686 #  include <stdlib.h>
10687 #endif
10688 #ifdef I_STRING
10689 #  include <string.h>
10690 #else
10691 #  include <strings.h>
10692 #endif
10693 #ifdef I_UNISTD
10694 #  include <unistd.h>  /* Needed for NetBSD */
10695 #endif
10696 int main()
10697 {
10698 char buf[128], abc[128];
10699 char *b;
10700 int len;
10701 int off;
10702 int align;
10703
10704 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10705    try to store the string in read-only memory. */
10706 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10707
10708 for (align = 7; align >= 0; align--) {
10709         for (len = 36; len; len--) {
10710                 b = buf+align;
10711                 memcpy(b, abc, len);
10712                 for (off = 1; off <= len; off++) {
10713                         memcpy(b+off, b, len);
10714                         memcpy(b, b+off, len);
10715                         if (memcmp(b, abc, len))
10716                                 exit(1);
10717                 }
10718         }
10719 }
10720 exit(0);
10721 }
10722 EOCP
10723         set try
10724         if eval $compile_ok; then
10725                 if ./try 2>/dev/null; then
10726                         echo "Yes, it can."
10727                         val="$define"
10728                 else
10729                         echo "It can't, sorry."
10730                         case "$d_memmove" in
10731                         "$define") echo "But that's Ok since you have memmove()." ;;
10732                         esac
10733                 fi
10734         else
10735                 echo "(I can't compile the test program, so we'll assume not...)"
10736                 case "$d_memmove" in
10737                 "$define") echo "But that's Ok since you have memmove()." ;;
10738                 esac
10739         fi
10740         ;;
10741 esac
10742 $rm -f try.* try core
10743 set d_safemcpy
10744 eval $setvar
10745
10746 : can memcmp be trusted to compare relative magnitude?
10747 val="$undef"
10748 case "$d_memcmp" in
10749 "$define")
10750         echo " "
10751         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10752         $cat >try.c <<EOCP
10753 #$i_memory I_MEMORY
10754 #$i_stdlib I_STDLIB
10755 #$i_string I_STRING
10756 #$i_unistd I_UNISTD
10757 EOCP
10758         $cat >>try.c <<'EOCP'
10759 #include <stdio.h>
10760 #ifdef I_MEMORY
10761 #  include <memory.h>
10762 #endif
10763 #ifdef I_STDLIB
10764 #  include <stdlib.h>
10765 #endif
10766 #ifdef I_STRING
10767 #  include <string.h>
10768 #else
10769 #  include <strings.h>
10770 #endif
10771 #ifdef I_UNISTD
10772 #  include <unistd.h>  /* Needed for NetBSD */
10773 #endif
10774 int main()
10775 {
10776 char a = -1;
10777 char b = 0;
10778 if ((a < b) && memcmp(&a, &b, 1) < 0)
10779         exit(1);
10780 exit(0);
10781 }
10782 EOCP
10783         set try
10784         if eval $compile_ok; then
10785                 if ./try 2>/dev/null; then
10786                         echo "Yes, it can."
10787                         val="$define"
10788                 else
10789                         echo "No, it can't (it uses signed chars)."
10790                 fi
10791         else
10792                 echo "(I can't compile the test program, so we'll assume not...)"
10793         fi
10794         ;;
10795 esac
10796 $rm -f try.* try core
10797 set d_sanemcmp
10798 eval $setvar
10799
10800 : see if select exists
10801 set select d_select
10802 eval $inlibc
10803
10804 : see if semctl exists
10805 set semctl d_semctl
10806 eval $inlibc
10807
10808 : see if semget exists
10809 set semget d_semget
10810 eval $inlibc
10811
10812 : see if semop exists
10813 set semop d_semop
10814 eval $inlibc
10815
10816 : see how much of the 'sem*(2)' library is present.
10817 h_sem=true
10818 echo " "
10819 case "$d_semctl$d_semget$d_semop" in
10820 *"$undef"*) h_sem=false;;
10821 esac
10822 case "$osname" in
10823 freebsd)
10824     case "`ipcs 2>&1`" in
10825     "SVID messages"*"not configured"*)
10826         echo "Your $osname does not have the sem*(2) configured." >&4
10827         h_sem=false
10828         val="$undef"
10829         set semctl d_semctl
10830         eval $setvar
10831         set semget d_semget
10832         eval $setvar
10833         set semop d_semop
10834         eval $setvar
10835         ;;
10836     esac
10837     ;;
10838 esac
10839 : we could also check for sys/ipc.h ...
10840 if $h_sem && $test `./findhdr sys/sem.h`; then
10841         echo "You have the full sem*(2) library." >&4
10842         val="$define"
10843 else
10844         echo "You don't have the full sem*(2) library." >&4
10845         val="$undef"
10846 fi
10847 set d_sem
10848 eval $setvar
10849
10850 : see whether sys/sem.h defines union semun
10851 echo " "
10852 $cat > try.c <<'END'
10853 #include <sys/types.h>
10854 #include <sys/ipc.h>
10855 #include <sys/sem.h>
10856 int main () { union semun semun; semun.buf = 0; }
10857 END
10858 set try
10859 if eval $compile; then
10860     echo "You have union semun in <sys/sem.h>." >&4
10861     val="$define"
10862 else
10863     echo "You do not have union semun in <sys/sem.h>." >&4
10864     val="$undef"
10865 fi
10866 $rm -f try try.c try.h
10867 set d_union_semun
10868 eval $setvar
10869
10870 : see how to do semctl IPC_STAT
10871 case "$d_sem" in
10872 $define)
10873     : see whether semctl IPC_STAT can use union semun
10874     echo " "
10875     $cat > try.h <<END
10876 #ifndef S_IRUSR
10877 #   ifdef S_IREAD
10878 #       define S_IRUSR S_IREAD
10879 #       define S_IWUSR S_IWRITE
10880 #       define S_IXUSR S_IEXEC
10881 #   else
10882 #       define S_IRUSR 0400
10883 #       define S_IWUSR 0200
10884 #       define S_IXUSR 0100
10885 #   endif
10886 #   define S_IRGRP (S_IRUSR>>3)
10887 #   define S_IWGRP (S_IWUSR>>3)
10888 #   define S_IXGRP (S_IXUSR>>3)
10889 #   define S_IROTH (S_IRUSR>>6)
10890 #   define S_IWOTH (S_IWUSR>>6)
10891 #   define S_IXOTH (S_IXUSR>>6)
10892 #endif
10893 #ifndef S_IRWXU
10894 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10895 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10896 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10897 #endif
10898 END
10899
10900     $cat > try.c <<END
10901 #include <sys/types.h>
10902 #include <sys/ipc.h>
10903 #include <sys/sem.h>
10904 #include <sys/stat.h>
10905 #include <stdio.h>
10906 #include <errno.h>
10907 #include "try.h"
10908 #ifndef errno
10909 extern int errno;
10910 #endif
10911 #$d_union_semun HAS_UNION_SEMUN
10912 int main() {
10913     union semun
10914 #ifndef HAS_UNION_SEMUN
10915     {
10916         int val;
10917         struct semid_ds *buf;
10918         unsigned short *array;
10919     }
10920 #endif
10921     arg;
10922     int sem, st;
10923
10924 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10925     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10926     if (sem > -1) {
10927         struct semid_ds argbuf;
10928         arg.buf = &argbuf;
10929 #       ifdef IPC_STAT
10930         st = semctl(sem, 0, IPC_STAT, arg);
10931         if (st == 0)
10932             printf("semun\n");
10933         else
10934 #       endif /* IPC_STAT */
10935             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10936 #       ifdef IPC_RMID
10937         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10938 #       endif /* IPC_RMID */
10939             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10940     } else
10941 #endif /* IPC_PRIVATE && ... */
10942         printf("semget failed: errno = %d\n", errno);
10943   return 0;
10944 }
10945 END
10946     val="$undef"
10947     set try
10948     if eval $compile; then
10949         xxx=`./try`
10950         case "$xxx" in
10951         semun) val="$define" ;;
10952         esac
10953     fi
10954     $rm -f try try.c
10955     set d_semctl_semun
10956     eval $setvar
10957     case "$d_semctl_semun" in
10958     $define)
10959         echo "You can use union semun for semctl IPC_STAT." >&4
10960         also='also'
10961         ;;
10962     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10963         also=''
10964         ;;
10965     esac
10966
10967     : see whether semctl IPC_STAT can use struct semid_ds pointer
10968     $cat > try.c <<'END'
10969 #include <sys/types.h>
10970 #include <sys/ipc.h>
10971 #include <sys/sem.h>
10972 #include <sys/stat.h>
10973 #include "try.h"
10974 #include <stdio.h>
10975 #include <errno.h>
10976 #ifndef errno
10977 extern int errno;
10978 #endif
10979 int main() {
10980     struct semid_ds arg;
10981     int sem, st;
10982
10983 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10984     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10985     if (sem > -1) {
10986 #       ifdef IPC_STAT
10987         st = semctl(sem, 0, IPC_STAT, &arg);
10988         if (st == 0)
10989             printf("semid_ds\n");
10990         else
10991 #       endif /* IPC_STAT */
10992             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10993 #       ifdef IPC_RMID
10994         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10995 #       endif /* IPC_RMID */
10996             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10997     } else
10998 #endif /* IPC_PRIVATE && ... */
10999         printf("semget failed: errno = %d\n", errno);
11000
11001     return 0;
11002 }
11003 END
11004     val="$undef"
11005     set try
11006     if eval $compile; then
11007         xxx=`./try`
11008         case "$xxx" in
11009         semid_ds) val="$define" ;;
11010         esac
11011     fi
11012     $rm -f try try.c
11013     set d_semctl_semid_ds
11014     eval $setvar
11015     case "$d_semctl_semid_ds" in
11016     $define)
11017         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
11018         ;;
11019     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
11020         ;;
11021     esac
11022     $rm -f try.h
11023     ;;
11024 *)  val="$undef"
11025
11026     # We do not have the full sem*(2) library, so assume we can not
11027     # use either.
11028
11029     set d_semctl_semun
11030     eval $setvar
11031
11032     set d_semctl_semid_ds
11033     eval $setvar
11034     ;;
11035 esac
11036
11037 : see if setegid exists
11038 set setegid d_setegid
11039 eval $inlibc
11040
11041 : see if seteuid exists
11042 set seteuid d_seteuid
11043 eval $inlibc
11044
11045 : see if setgrent exists
11046 set setgrent d_setgrent
11047 eval $inlibc
11048
11049 : see if sethostent exists
11050 set sethostent d_sethent
11051 eval $inlibc
11052
11053 : see if setlinebuf exists
11054 set setlinebuf d_setlinebuf
11055 eval $inlibc
11056
11057 : see if setlocale exists
11058 set setlocale d_setlocale
11059 eval $inlibc
11060
11061 : see if setnetent exists
11062 set setnetent d_setnent
11063 eval $inlibc
11064
11065 : see if setprotoent exists
11066 set setprotoent d_setpent
11067 eval $inlibc
11068
11069 : see if setpgid exists
11070 set setpgid d_setpgid
11071 eval $inlibc
11072
11073 : see if setpgrp2 exists
11074 set setpgrp2 d_setpgrp2
11075 eval $inlibc
11076
11077 : see if setpriority exists
11078 set setpriority d_setprior
11079 eval $inlibc
11080
11081 : see if setproctitle exists
11082 set setproctitle d_setproctitle
11083 eval $inlibc
11084
11085 : see if setpwent exists
11086 set setpwent d_setpwent
11087 eval $inlibc
11088
11089 : see if setregid exists
11090 set setregid d_setregid
11091 eval $inlibc
11092 set setresgid d_setresgid
11093 eval $inlibc
11094
11095 : see if setreuid exists
11096 set setreuid d_setreuid
11097 eval $inlibc
11098 set setresuid d_setresuid
11099 eval $inlibc
11100
11101 : see if setrgid exists
11102 set setrgid d_setrgid
11103 eval $inlibc
11104
11105 : see if setruid exists
11106 set setruid d_setruid
11107 eval $inlibc
11108
11109 : see if setservent exists
11110 set setservent d_setsent
11111 eval $inlibc
11112
11113 : see if setsid exists
11114 set setsid d_setsid
11115 eval $inlibc
11116
11117 : see if setvbuf exists
11118 set setvbuf d_setvbuf
11119 eval $inlibc
11120
11121 : see if sfio.h is available
11122 set sfio.h i_sfio
11123 eval $inhdr
11124
11125
11126 : see if sfio library is available
11127 case "$i_sfio" in
11128 $define)
11129         val=''
11130         set sfreserve val
11131         eval $inlibc
11132         ;;
11133 *)
11134         val="$undef"
11135         ;;
11136 esac
11137 : Ok, but do we want to use it.
11138 case "$val" in
11139 $define)
11140         case "$usesfio" in
11141         true|$define|[yY]*) dflt='y';;
11142         *) dflt='n';;
11143         esac
11144         echo "$package can use the sfio library, but it is experimental."
11145         case "$useperlio" in
11146         "$undef")
11147             echo "For sfio also the PerlIO abstraction layer is needed."
11148             echo "Earlier you said you wouldn't want that."
11149             ;;
11150         esac
11151         rp="You seem to have sfio available, do you want to try using it?"
11152         . ./myread
11153         case "$ans" in
11154         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11155                 useperlio="$define"
11156                 val="$define"
11157                 ;;
11158         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11159                 val="$undef"
11160                 : Remove sfio from list of libraries to use
11161                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11162                 shift
11163                 libs="$*"
11164                 echo "libs = $libs" >&4
11165                 ;;
11166         esac
11167         ;;
11168 *)      case "$usesfio" in
11169         true|$define|[yY]*)
11170                 echo "Sorry, cannot find sfio on this machine." >&4
11171                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11172                 val="$undef"
11173                 ;;
11174         esac
11175         ;;
11176 esac
11177 set d_sfio
11178 eval $setvar
11179 case "$d_sfio" in
11180 $define) usesfio='true';;
11181 *) usesfio='false';;
11182 esac
11183
11184 : see if shmctl exists
11185 set shmctl d_shmctl
11186 eval $inlibc
11187
11188 : see if shmget exists
11189 set shmget d_shmget
11190 eval $inlibc
11191
11192 : see if shmat exists
11193 set shmat d_shmat
11194 eval $inlibc
11195 : see what shmat returns
11196 case "$d_shmat" in
11197 "$define")
11198         $cat >shmat.c <<'END'
11199 #include <sys/shm.h>
11200 void *shmat();
11201 END
11202         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11203                 shmattype='void *'
11204         else
11205                 shmattype='char *'
11206         fi
11207         echo "and it returns ($shmattype)." >&4
11208         : see if a prototype for shmat is available
11209         xxx=`./findhdr sys/shm.h`
11210         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11211         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11212                 val="$define"
11213         else
11214                 val="$undef"
11215         fi
11216         $rm -f shmat.[co]
11217         ;;
11218 *)
11219         val="$undef"
11220         ;;
11221 esac
11222 set d_shmatprototype
11223 eval $setvar
11224
11225 : see if shmdt exists
11226 set shmdt d_shmdt
11227 eval $inlibc
11228
11229 : see how much of the 'shm*(2)' library is present.
11230 h_shm=true
11231 echo " "
11232 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11233 *"$undef"*) h_shm=false;;
11234 esac
11235 case "$osname" in
11236 freebsd)
11237     case "`ipcs 2>&1`" in
11238     "SVID shared memory"*"not configured"*)
11239         echo "Your $osname does not have the shm*(2) configured." >&4
11240         h_shm=false
11241         val="$undef"
11242         set shmctl d_shmctl
11243         evat $setvar
11244         set shmget d_shmget
11245         evat $setvar
11246         set shmat d_shmat
11247         evat $setvar
11248         set shmdt d_shmdt
11249         evat $setvar
11250         ;;
11251     esac
11252     ;;
11253 esac
11254 : we could also check for sys/ipc.h ...
11255 if $h_shm && $test `./findhdr sys/shm.h`; then
11256         echo "You have the full shm*(2) library." >&4
11257         val="$define"
11258 else
11259         echo "You don't have the full shm*(2) library." >&4
11260         val="$undef"
11261 fi
11262 set d_shm
11263 eval $setvar
11264
11265 echo " "
11266 : see if we have sigaction
11267 if set sigaction val -f d_sigaction; eval $csym; $val; then
11268         echo 'sigaction() found.' >&4
11269         $cat > try.c <<'EOP'
11270 #include <stdio.h>
11271 #include <sys/types.h>
11272 #include <signal.h>
11273 int main()
11274 {
11275     struct sigaction act, oact;
11276     act.sa_flags = 0;
11277     oact.sa_handler = 0;
11278     /* so that act and oact are used */
11279     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11280 }
11281 EOP
11282         set try
11283         if eval $compile_ok; then
11284                 val="$define"
11285         else
11286                 echo "But you don't seem to have a useable struct sigaction." >&4
11287                 val="$undef"
11288         fi
11289 else
11290         echo 'sigaction NOT found.' >&4
11291         val="$undef"
11292 fi
11293 set d_sigaction; eval $setvar
11294 $rm -f try try$_o try.c
11295
11296 : see if sigsetjmp exists
11297 echo " "
11298 case "$d_sigsetjmp" in
11299 '')
11300         $cat >try.c <<'EOP'
11301 #include <setjmp.h>
11302 sigjmp_buf env;
11303 int set = 1;
11304 int main()
11305 {
11306         if (sigsetjmp(env,1))
11307                 exit(set);
11308         set = 0;
11309         siglongjmp(env, 1);
11310         exit(1);
11311 }
11312 EOP
11313         set try
11314         if eval $compile; then
11315                 if ./try >/dev/null 2>&1; then
11316                         echo "POSIX sigsetjmp found." >&4
11317                         val="$define"
11318                 else
11319                         $cat >&4 <<EOM
11320 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11321 I'll ignore them.
11322 EOM
11323                         val="$undef"
11324                 fi
11325         else
11326                 echo "sigsetjmp not found." >&4
11327                 val="$undef"
11328         fi
11329         ;;
11330 *) val="$d_sigsetjmp"
11331         case "$d_sigsetjmp" in
11332         $define) echo "POSIX sigsetjmp found." >&4;;
11333         $undef) echo "sigsetjmp not found." >&4;;
11334         esac
11335         ;;
11336 esac
11337 set d_sigsetjmp
11338 eval $setvar
11339 $rm -f try.c try
11340
11341 : see if socks5_init exists
11342 set socks5_init d_socks5_init
11343 eval $inlibc
11344
11345 : see if sys/stat.h is available
11346 set sys/stat.h i_sysstat
11347 eval $inhdr
11348
11349
11350 : see if stat knows about block sizes
11351 echo " "
11352 echo "Checking to see if your struct stat has st_blocks field..." >&4
11353 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11354 eval $hasfield
11355
11356
11357 : see if this is a sys/vfs.h system
11358 set sys/vfs.h i_sysvfs
11359 eval $inhdr
11360
11361
11362 : see if this is a sys/statfs.h system
11363 set sys/statfs.h i_sysstatfs
11364 eval $inhdr
11365
11366
11367 echo " "
11368 echo "Checking to see if your system supports struct statfs..." >&4
11369 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
11370 eval $hasstruct
11371 case "$d_statfs_s" in
11372 "$define")      echo "Yes, it does."   ;;
11373 *)              echo "No, it doesn't." ;;
11374 esac
11375
11376
11377
11378 : see if struct statfs knows about f_flags
11379 case "$d_statfs_s" in
11380 define) 
11381         echo " "
11382         echo "Checking to see if your struct statfs has f_flags field..." >&4
11383         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
11384         eval $hasfield
11385         ;;
11386 *)      val="$undef"
11387         set d_statfs_f_flags
11388         eval $setvar
11389         ;;
11390 esac
11391 case "$d_statfs_f_flags" in
11392 "$define")      echo "Yes, it does."   ;;
11393 *)              echo "No, it doesn't." ;;
11394 esac
11395
11396 : see if _ptr and _cnt from stdio act std
11397 echo " "
11398 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11399         echo "(Looks like you have stdio.h from Linux.)"
11400         case "$stdio_ptr" in
11401         '') stdio_ptr='((fp)->_IO_read_ptr)'
11402                 ptr_lval=$define
11403                 ;;
11404         *)      ptr_lval=$d_stdio_ptr_lval;;
11405         esac
11406         case "$stdio_cnt" in
11407         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11408                 cnt_lval=$undef
11409                 ;;
11410         *)      cnt_lval=$d_stdio_cnt_lval;;
11411         esac
11412         case "$stdio_base" in
11413         '') stdio_base='((fp)->_IO_read_base)';;
11414         esac
11415         case "$stdio_bufsiz" in
11416         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11417         esac
11418 else
11419         case "$stdio_ptr" in
11420         '') stdio_ptr='((fp)->_ptr)'
11421                 ptr_lval=$define
11422                 ;;
11423         *)      ptr_lval=$d_stdio_ptr_lval;;
11424         esac
11425         case "$stdio_cnt" in
11426         '') stdio_cnt='((fp)->_cnt)'
11427                 cnt_lval=$define
11428                 ;;
11429         *)      cnt_lval=$d_stdio_cnt_lval;;
11430         esac
11431         case "$stdio_base" in
11432         '') stdio_base='((fp)->_base)';;
11433         esac
11434         case "$stdio_bufsiz" in
11435         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11436         esac
11437 fi
11438 : test whether _ptr and _cnt really work
11439 echo "Checking how std your stdio is..." >&4
11440 $cat >try.c <<EOP
11441 #include <stdio.h>
11442 #define FILE_ptr(fp)    $stdio_ptr
11443 #define FILE_cnt(fp)    $stdio_cnt
11444 int main() {
11445         FILE *fp = fopen("try.c", "r");
11446         char c = getc(fp);
11447         if (
11448                 18 <= FILE_cnt(fp) &&
11449                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11450         )
11451                 exit(0);
11452         exit(1);
11453 }
11454 EOP
11455 val="$undef"
11456 set try
11457 if eval $compile; then
11458         if ./try; then
11459                 echo "Your stdio acts pretty std."
11460                 val="$define"
11461         else
11462                 echo "Your stdio isn't very std."
11463         fi
11464 else
11465         echo "Your stdio doesn't appear very std."
11466 fi
11467 $rm -f try.c try
11468 set d_stdstdio
11469 eval $setvar
11470
11471 : Can _ptr be used as an lvalue?
11472 case "$d_stdstdio$ptr_lval" in
11473 $define$define) val=$define ;;
11474 *) val=$undef ;;
11475 esac
11476 set d_stdio_ptr_lval
11477 eval $setvar
11478
11479 : Can _cnt be used as an lvalue?
11480 case "$d_stdstdio$cnt_lval" in
11481 $define$define) val=$define ;;
11482 *) val=$undef ;;
11483 esac
11484 set d_stdio_cnt_lval
11485 eval $setvar
11486
11487
11488 : test whether setting _ptr sets _cnt as a side effect
11489 d_stdio_ptr_lval_sets_cnt="$undef"
11490 d_stdio_ptr_lval_nochange_cnt="$undef"
11491 case "$d_stdio_ptr_lval$d_stdstdio" in
11492 $define$define)
11493         echo "Checking to see what happens if we set the stdio ptr..." >&4
11494 $cat >try.c <<EOP
11495 #include <stdio.h>
11496 /* Can we scream? */
11497 /* Eat dust sed :-) */
11498 #define FILE_ptr(fp)    $stdio_ptr
11499 #define FILE_cnt(fp)    $stdio_cnt
11500 int main() {
11501         FILE *fp = fopen("try.c", "r");
11502         char c = getc(fp);
11503         char *ptr;
11504         size_t cnt;
11505         if (!(
11506                 18 <= FILE_cnt(fp) &&
11507                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11508         )) {
11509                 puts("Fail even to read");
11510                 exit (1);
11511         }
11512         ptr = FILE_ptr(fp);
11513         cnt = FILE_cnt(fp);
11514
11515         FILE_ptr(fp)+= 42;
11516
11517         if (FILE_ptr(fp) != (ptr + 42)) {
11518                 printf("Fail ptr check %p != %p", FILE_ptr(fp), (ptr + 42));
11519                 exit (1);
11520         }
11521         if (FILE_cnt(fp) <= 20) {
11522                 printf ("Fail (<20 chars to test)");
11523                 exit (1);
11524         }
11525         if (strncmp(FILE_ptr(fp), "Eat dust sed :-) */\n", 20) != 0) {
11526                 puts("Fail compare");
11527                 exit (1);
11528         }
11529         if (cnt == FILE_cnt(fp)) {
11530                 puts("Pass_unchanged");
11531                 exit (0);
11532         }       
11533         if (FILE_cnt(fp) == (cnt - 42)) {
11534                 puts("Pass_changed");
11535                 exit (0);
11536         }
11537         printf("Fail count was %d now %d\n", cnt, FILE_cnt(fp));
11538         return 1;
11539
11540 }
11541 EOP
11542         set try
11543         if eval $compile; then
11544                 case `./try$exe_ext` in
11545                 Pass_changed)
11546                         echo "Increasing ptr in your stdio decreases cnt by the same amount.  Good." >&4
11547                         d_stdio_ptr_lval_sets_cnt="$define" ;;
11548                 Pass_unchanged)
11549                         echo "Increasing ptr in your stdio leaves cnt unchanged.  Good." >&4
11550                         d_stdio_ptr_lval_nochange_cnt="$define" ;;
11551                 Fail*)
11552                         echo "Increasing ptr in your stdio didn't do exactly what I expected.  We'll not be doing that then." >&4 ;;
11553                 *)
11554                         echo "It appears attempting to set ptr in your stdio is a bad plan." >&4 ;;
11555         esac
11556         else
11557                 echo "It seems we can't set ptr in your stdio.  Nevermind." >&4
11558         fi
11559         $rm -f try.c try
11560         ;;
11561 esac
11562
11563 : see if _base is also standard
11564 val="$undef"
11565 case "$d_stdstdio" in
11566 $define)
11567         $cat >try.c <<EOP
11568 #include <stdio.h>
11569 #define FILE_base(fp)   $stdio_base
11570 #define FILE_bufsiz(fp) $stdio_bufsiz
11571 int main() {
11572         FILE *fp = fopen("try.c", "r");
11573         char c = getc(fp);
11574         if (
11575                 19 <= FILE_bufsiz(fp) &&
11576                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11577         )
11578                 exit(0);
11579         exit(1);
11580 }
11581 EOP
11582         set try
11583         if eval $compile; then
11584                 if ./try; then
11585                         echo "And its _base field acts std."
11586                         val="$define"
11587                 else
11588                         echo "But its _base field isn't std."
11589                 fi
11590         else
11591                 echo "However, it seems to be lacking the _base field."
11592         fi
11593         $rm -f try.c try
11594         ;;
11595 esac
11596 set d_stdiobase
11597 eval $setvar
11598
11599 $cat >&4 <<EOM
11600 Checking how to access stdio streams by file descriptor number...
11601 EOM
11602 case "$stdio_stream_array" in
11603 '')     $cat >try.c <<EOCP
11604 #include <stdio.h>
11605 int main() {
11606   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11607     printf("yes\n");
11608 }
11609 EOCP
11610         for s in _iob __iob __sF
11611         do
11612                 set try -DSTDIO_STREAM_ARRAY=$s
11613                 if eval $compile; then
11614                         case "`./try$exe_ext`" in
11615                         yes)    stdio_stream_array=$s; break ;;
11616                         esac
11617                 fi
11618         done
11619         $rm -f try.* try$exe_ext
11620 esac
11621 case "$stdio_stream_array" in
11622 '')     $cat >&4 <<EOM
11623 I can't figure out how to access stdio streams by file descriptor number.
11624 EOM
11625         d_stdio_stream_array="$undef"
11626         ;;
11627 *)      $cat >&4 <<EOM
11628 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11629 EOM
11630         d_stdio_stream_array="$define"
11631         ;;
11632 esac
11633
11634 : see if strcoll exists
11635 set strcoll d_strcoll
11636 eval $inlibc
11637
11638 : check for structure copying
11639 echo " "
11640 echo "Checking to see if your C compiler can copy structs..." >&4
11641 $cat >try.c <<'EOCP'
11642 int main()
11643 {
11644         struct blurfl {
11645                 int dyick;
11646         } foo, bar;
11647
11648         foo = bar;
11649 }
11650 EOCP
11651 if $cc -c try.c >/dev/null 2>&1 ; then
11652         val="$define"
11653         echo "Yup, it can."
11654 else
11655         val="$undef"
11656         echo "Nope, it can't."
11657 fi
11658 set d_strctcpy
11659 eval $setvar
11660 $rm -f try.*
11661
11662 : see if strerror and/or sys_errlist[] exist
11663 echo " "
11664 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11665     if set strerror val -f d_strerror; eval $csym; $val; then
11666                 echo 'strerror() found.' >&4
11667                 d_strerror="$define"
11668                 d_strerrm='strerror(e)'
11669                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11670                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11671                         d_syserrlst="$define"
11672                 else
11673                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11674                         d_syserrlst="$undef"
11675                 fi
11676     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11677                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11678                 echo 'strerror() found in string header.' >&4
11679                 d_strerror="$define"
11680                 d_strerrm='strerror(e)'
11681                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11682                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11683                                 d_syserrlst="$define"
11684                 else
11685                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11686                         d_syserrlst="$undef"
11687                 fi
11688     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11689                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11690                 d_strerror="$undef"
11691                 d_syserrlst="$define"
11692                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11693     else
11694                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11695                 d_strerror="$undef"
11696                 d_syserrlst="$undef"
11697                 d_strerrm='"unknown"'
11698     fi
11699 fi
11700
11701 : see if strtod exists
11702 set strtod d_strtod
11703 eval $inlibc
11704
11705 : see if strtol exists
11706 set strtol d_strtol
11707 eval $inlibc
11708
11709 : see if strtold exists
11710 set strtold d_strtold
11711 eval $inlibc
11712
11713 : see if strtoll exists
11714 set strtoll d_strtoll
11715 eval $inlibc
11716
11717 case "$d_longlong-$d_strtoll" in
11718 "$define-$define")
11719         $cat <<EOM
11720 Checking whether your strtoll() works okay...
11721 EOM
11722         $cat >try.c <<'EOCP'
11723 #include <errno.h>
11724 #ifdef __hpux
11725 #define strtoll __strtoll
11726 #endif
11727 #ifdef __EMX__
11728 #define strtoll _strtoll
11729 #endif
11730 #include <stdio.h>
11731 extern long long int strtoll(char *s, char **, int); 
11732 static int bad = 0;
11733 int check(char *s, long long ell, int een) {
11734         long long gll;
11735         errno = 0;
11736         gll = strtoll(s, 0, 10);
11737         if (!((gll == ell) && (errno == een)))
11738                 bad++;
11739 }
11740 int main() {
11741         check(" 1",                                      1LL, 0);
11742         check(" 0",                                      0LL, 0);
11743         check("-1",                                     -1LL, 0);
11744         check("-9223372036854775808", -9223372036854775808LL, 0);
11745         check("-9223372036854775808", -9223372036854775808LL, 0);
11746         check(" 9223372036854775807",  9223372036854775807LL, 0);
11747         check("-9223372036854775808", -9223372036854775808LL, 0);
11748         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11749         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11750         if (!bad)
11751                 printf("ok\n");
11752 }
11753 EOCP
11754         set try
11755         if eval $compile; then
11756                 yyy=`./try`
11757                 case "$yyy" in
11758                 ok) echo "Your strtoll() seems to be working okay." ;;
11759                 *) cat <<EOM >&4
11760 Your strtoll() doesn't seem to be working okay.
11761 EOM
11762                    d_strtoll="$undef"
11763                    ;;
11764                 esac
11765         else
11766                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11767                 d_strtoll="$undef"
11768         fi
11769         ;;
11770 esac
11771
11772 : see if strtoul exists
11773 set strtoul d_strtoul
11774 eval $inlibc
11775
11776 : see if strtoull exists
11777 set strtoull d_strtoull
11778 eval $inlibc
11779
11780 case "$d_longlong-$d_strtoull" in
11781 "$define-$define")
11782         $cat <<EOM
11783 Checking whether your strtoull() works okay...
11784 EOM
11785         $cat >try.c <<'EOCP'
11786 #include <errno.h>
11787 #ifdef __hpux
11788 #define strtoull __strtoull
11789 #endif
11790 #include <stdio.h>
11791 extern unsigned long long int strtoull(char *s, char **, int); 
11792 static int bad = 0;
11793 int check(char *s, long long eull, int een) {
11794         long long gull;
11795         errno = 0;
11796         gull = strtoull(s, 0, 10);
11797         if (!((gull == eull) && (errno == een)))
11798                 bad++;
11799 }
11800 int main() {
11801         check(" 1",                                       1LL, 0);
11802         check(" 0",                                       0LL, 0);
11803         check("18446744073709551615", 18446744073709551615ULL, 0);
11804         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11805         if (!bad)
11806                 printf("ok\n");
11807 }
11808 EOCP
11809         set try
11810         if eval $compile; then
11811                 case "`./try`" in
11812                 ok) echo "Your strtoull() seems to be working okay." ;;
11813                 *) cat <<EOM >&4
11814 Your strtoull() doesn't seem to be working okay.
11815 EOM
11816                    d_strtoull="$undef"
11817                    ;;
11818                 esac
11819         fi
11820         ;;
11821 esac
11822
11823 : see if strtouq exists
11824 set strtouq d_strtouq
11825 eval $inlibc
11826
11827 : see if strxfrm exists
11828 set strxfrm d_strxfrm
11829 eval $inlibc
11830
11831 : see if symlink exists
11832 set symlink d_symlink
11833 eval $inlibc
11834
11835 : see if syscall exists
11836 set syscall d_syscall
11837 eval $inlibc
11838
11839 : see if sysconf exists
11840 set sysconf d_sysconf
11841 eval $inlibc
11842
11843 : see if system exists
11844 set system d_system
11845 eval $inlibc
11846
11847 : see if tcgetpgrp exists
11848 set tcgetpgrp d_tcgetpgrp
11849 eval $inlibc
11850
11851 : see if tcsetpgrp exists
11852 set tcsetpgrp d_tcsetpgrp
11853 eval $inlibc
11854
11855 : see if prototype for telldir is available
11856 echo " "
11857 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11858 eval $hasproto
11859
11860 : see if this is a sys/times.h system
11861 set sys/times.h i_systimes
11862 eval $inhdr
11863
11864 : see if times exists
11865 echo " "
11866 if set times val -f d_times; eval $csym; $val; then
11867         echo 'times() found.' >&4
11868         d_times="$define"
11869         inc=''
11870         case "$i_systimes" in
11871         "$define") inc='sys/times.h';;
11872         esac
11873         rp="What is the type returned by times() on this system?"
11874         set clock_t clocktype long stdio.h sys/types.h $inc
11875         eval $typedef_ask
11876 else
11877         echo 'times() NOT found, hope that will do.' >&4
11878         d_times="$undef"
11879         clocktype='int'
11880 fi
11881
11882 : see if truncate exists
11883 set truncate d_truncate
11884 eval $inlibc
11885
11886 : see if tzname[] exists
11887 echo " "
11888 if set tzname val -a d_tzname; eval $csym; $val; then
11889         val="$define"
11890         echo 'tzname[] found.' >&4
11891 else
11892         val="$undef"
11893         echo 'tzname[] NOT found.' >&4
11894 fi
11895 set d_tzname
11896 eval $setvar
11897
11898 : see if umask exists
11899 set umask d_umask
11900 eval $inlibc
11901
11902 : see if ustat exists
11903 set ustat d_ustat
11904 eval $inlibc
11905
11906 : backward compatibility for d_hvfork
11907 if test X$d_hvfork != X; then
11908         d_vfork="$d_hvfork"
11909         d_hvfork=''
11910 fi
11911 : see if there is a vfork
11912 val=''
11913 set vfork val
11914 eval $inlibc
11915
11916 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11917 : perl on Solaris 2.x, and probably elsewhere.
11918 case "$val" in
11919 $define)
11920         echo " "
11921         case "$usevfork" in
11922         false) dflt='n';;
11923         *) dflt='y';;
11924         esac
11925         cat <<'EOM'
11926  
11927 Perl can only use a vfork() that doesn't suffer from strict
11928 restrictions on calling functions or modifying global data in
11929 the child.  For example, glibc-2.1 contains such a vfork()
11930 that is unsuitable.  If your system provides a proper fork()
11931 call, chances are that you do NOT want perl to use vfork().
11932
11933 EOM
11934         rp="Do you still want to use vfork()?"
11935         . ./myread
11936         case "$ans" in
11937         y|Y) ;;
11938         *)
11939                 echo "Ok, we won't use vfork()."
11940                 val="$undef"
11941                 ;;
11942         esac
11943         ;;
11944 esac
11945 set d_vfork
11946 eval $setvar
11947 case "$d_vfork" in
11948 $define) usevfork='true';;
11949 *) usevfork='false';;
11950 esac
11951
11952 : see if this is an sysdir system
11953 set sys/dir.h i_sysdir
11954 eval $inhdr
11955
11956 : see if this is an sysndir system
11957 set sys/ndir.h i_sysndir
11958 eval $inhdr
11959
11960 : see if closedir exists
11961 set closedir d_closedir
11962 eval $inlibc
11963
11964 case "$d_closedir" in
11965 "$define")
11966         echo " "
11967         echo "Checking whether closedir() returns a status..." >&4
11968         cat > closedir.c <<EOM
11969 #$i_dirent I_DIRENT             /**/
11970 #$i_sysdir I_SYS_DIR            /**/
11971 #$i_sysndir I_SYS_NDIR          /**/
11972 #$i_systypes I_SYS_TYPES        /**/
11973
11974 #if defined(I_SYS_TYPES)
11975 #include <sys/types.h>
11976 #endif
11977 #if defined(I_DIRENT)
11978 #include <dirent.h>
11979 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11980 #include <sys/dir.h>
11981 #endif
11982 #else
11983 #ifdef I_SYS_NDIR
11984 #include <sys/ndir.h>
11985 #else
11986 #ifdef I_SYS_DIR
11987 #ifdef hp9000s500
11988 #include <ndir.h>       /* may be wrong in the future */
11989 #else
11990 #include <sys/dir.h>
11991 #endif
11992 #endif
11993 #endif
11994 #endif 
11995 int main() { return closedir(opendir(".")); }
11996 EOM
11997         set closedir
11998         if eval $compile_ok; then
11999                 if ./closedir > /dev/null 2>&1 ; then
12000                         echo "Yes, it does."
12001                         val="$undef"
12002                 else
12003                         echo "No, it doesn't."
12004                         val="$define"
12005                 fi
12006         else
12007                 echo "(I can't seem to compile the test program--assuming it doesn't)"
12008                 val="$define"
12009         fi
12010         ;;
12011 *)
12012         val="$undef";
12013         ;;
12014 esac
12015 set d_void_closedir
12016 eval $setvar
12017 $rm -f closedir*
12018 : check for volatile keyword
12019 echo " "
12020 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
12021 $cat >try.c <<'EOCP'
12022 int main()
12023 {
12024         typedef struct _goo_struct goo_struct;
12025         goo_struct * volatile goo = ((goo_struct *)0);
12026         struct _goo_struct {
12027                 long long_int;
12028                 int reg_int;
12029                 char char_var;
12030         };
12031         typedef unsigned short foo_t;
12032         char *volatile foo;
12033         volatile int bar;
12034         volatile foo_t blech;
12035         foo = foo;
12036 }
12037 EOCP
12038 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
12039         val="$define"
12040         echo "Yup, it does."
12041 else
12042         val="$undef"
12043         echo "Nope, it doesn't."
12044 fi
12045 set d_volatile
12046 eval $setvar
12047 $rm -f try.*
12048
12049 : see if there is a wait4
12050 set wait4 d_wait4
12051 eval $inlibc
12052
12053 : see if waitpid exists
12054 set waitpid d_waitpid
12055 eval $inlibc
12056
12057 : see if wcstombs exists
12058 set wcstombs d_wcstombs
12059 eval $inlibc
12060
12061 : see if wctomb exists
12062 set wctomb d_wctomb
12063 eval $inlibc
12064
12065 : preserve RCS keywords in files with variable substitution, grrr
12066 Date='$Date'
12067 Id='$Id'
12068 Log='$Log'
12069 RCSfile='$RCSfile'
12070 Revision='$Revision'
12071
12072 case "$crosscompile" in
12073 ''|[nN]*) crosscompile="$undef" ;;
12074 esac
12075
12076 case "$osname" in
12077 next|rhapsody|darwin) multiarch="$define" ;;
12078 esac
12079 case "$multiarch" in
12080 ''|[nN]*) multiarch="$undef" ;;
12081 esac
12082
12083 : check for alignment requirements
12084 echo " "
12085 case "$crosscompile$multiarch" in
12086 *$define*)
12087         $cat <<EOM
12088 You seem to be either cross-compiling or doing a multiarchitecture build,
12089 skipping the memory alignment check.
12090
12091 EOM
12092         case "$alignbytes" in
12093         '') alignbytes=8 ;;
12094         esac
12095         ;;
12096 *)
12097         case "$alignbytes" in
12098         '') echo "Checking alignment constraints..." >&4
12099                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
12100                         $cat >try.c <<'EOCP'
12101 typedef long double NV;
12102 EOCP
12103                 else
12104                         $cat >try.c <<'EOCP'
12105 typedef double NV;
12106 EOCP
12107                 fi
12108                 $cat >>try.c <<'EOCP'
12109 #include <stdio.h>
12110 struct foobar {
12111         char foo;
12112         NV bar;
12113 } try_algn;
12114 int main()
12115 {
12116     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
12117     return(0);
12118 }
12119 EOCP
12120                 set try
12121                 if eval $compile_ok; then
12122                         dflt=`./try`
12123                 else
12124                         dflt='8'
12125                         echo "(I can't seem to compile the test program...)"
12126                 fi
12127                 ;;
12128         *) dflt="$alignbytes"
12129                 ;;
12130         esac
12131         rp="Doubles must be aligned on a how-many-byte boundary?"
12132         . ./myread
12133         alignbytes="$ans"
12134         $rm -f try.c try
12135         ;;
12136 esac
12137
12138
12139 : set the base revision
12140 baserev=5.0
12141
12142 : check for ordering of bytes in a long
12143 echo " "
12144 case "$crosscompile$multiarch" in
12145 *$define*)
12146         $cat <<EOM
12147 You seem to be either cross-compiling or doing a multiarchitecture build,
12148 skipping the byteorder check.
12149
12150 EOM
12151         byteorder='0xffff'
12152         ;;
12153 *)
12154         case "$byteorder" in
12155         '')
12156                 $cat <<'EOM'
12157 In the following, larger digits indicate more significance.  A big-endian
12158 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12159 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12160 machines may have weird orders like 3412.  A Cray will report 87654321,
12161 an Alpha will report 12345678. If the test program works the default is
12162 probably right.
12163 I'm now running the test program...
12164 EOM
12165                 $cat >try.c <<'EOCP'
12166 #include <stdio.h>
12167 int main()
12168 {
12169         int i;
12170         union {
12171                 unsigned long l;
12172                 char c[sizeof(long)];
12173         } u;
12174
12175         if (sizeof(long) > 4)
12176                 u.l = (0x08070605L << 32) | 0x04030201L;
12177         else
12178                 u.l = 0x04030201L;
12179         for (i = 0; i < sizeof(long); i++)
12180                 printf("%c", u.c[i]+'0');
12181         printf("\n");
12182         exit(0);
12183 }
12184 EOCP
12185                 xxx_prompt=y
12186                 set try
12187                 if eval $compile && ./try > /dev/null; then
12188                         dflt=`./try`
12189                         case "$dflt" in
12190                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12191                                 echo "(The test program ran ok.)"
12192                                 echo "byteorder=$dflt"
12193                                 xxx_prompt=n
12194                         ;;
12195                         ????|????????) echo "(The test program ran ok.)" ;;
12196                         *) echo "(The test program didn't run right for some reason.)" ;;
12197                         esac
12198                 else
12199                         dflt='4321'
12200                         cat <<'EOM'
12201 (I can't seem to compile the test program.  Guessing big-endian...)
12202 EOM
12203                 fi
12204                 case "$xxx_prompt" in
12205                 y)
12206                         rp="What is the order of bytes in a long?"
12207                         . ./myread
12208                         byteorder="$ans"
12209                         ;;
12210                 *)      byteorder=$dflt
12211                         ;;
12212                 esac
12213                 ;;
12214         esac
12215         $rm -f try.c try
12216         ;;
12217 esac
12218
12219
12220 : how do we catenate cpp tokens here?
12221 echo " "
12222 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12223 $cat >cpp_stuff.c <<'EOCP'
12224 #define RCAT(a,b)a/**/b
12225 #define ACAT(a,b)a ## b
12226 RCAT(Rei,ser)
12227 ACAT(Cir,cus)
12228 EOCP
12229 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12230 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12231         echo "Oh!  Smells like ANSI's been here." >&4
12232         echo "We can catify or stringify, separately or together!"
12233         cpp_stuff=42
12234 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12235         echo "Ah, yes!  The good old days!" >&4
12236         echo "However, in the good old days we don't know how to stringify and"
12237         echo "catify at the same time."
12238         cpp_stuff=1
12239 else
12240         $cat >&4 <<EOM
12241 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12242 to have to edit the values of CAT[2-5] in config.h...
12243 EOM
12244         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12245 fi
12246 $rm -f cpp_stuff.*
12247
12248 : see if this is a db.h system
12249 set db.h i_db
12250 eval $inhdr
12251
12252 case "$i_db" in
12253 $define)
12254         : Check db version.
12255         echo " "
12256         echo "Checking Berkeley DB version ..." >&4
12257         $cat >try.c <<EOCP
12258 #$d_const HASCONST
12259 #ifndef HASCONST
12260 #define const
12261 #endif
12262 #include <sys/types.h>
12263 #include <stdio.h>
12264 #include <db.h>
12265 int main()
12266 {
12267 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12268     int Major, Minor, Patch ;
12269     unsigned long Version ;
12270     (void)db_version(&Major, &Minor, &Patch) ;
12271     printf("You have Berkeley DB Version 2 or greater\n");
12272
12273     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12274                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12275     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12276                 Major, Minor, Patch) ;
12277
12278     /* check that db.h & libdb are compatible */
12279     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12280         printf("db.h and libdb are incompatible\n") ;
12281         exit(3);        
12282     }
12283
12284     printf("db.h and libdb are compatible\n") ;
12285
12286     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12287                 + DB_VERSION_PATCH ;
12288
12289     /* needs to be >= 2.3.4 */
12290     if (Version < 2003004) {
12291     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12292         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12293         exit(2);        
12294     }
12295
12296     exit(0);
12297 #else
12298 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12299     printf("You have Berkeley DB Version 1\n");
12300     exit(0);    /* DB version < 2: the coast is clear. */
12301 #else
12302     exit(1);    /* <db.h> not Berkeley DB? */
12303 #endif
12304 #endif
12305 }
12306 EOCP
12307         set try
12308         if eval $compile_ok && ./try; then
12309                 echo 'Looks OK.' >&4
12310         else
12311                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12312                 i_db=$undef
12313                 case " $libs " in
12314                 *"-ldb "*)
12315                         : Remove db from list of libraries to use
12316                         echo "Removing unusable -ldb from library list" >&4
12317                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12318                         shift
12319                         libs="$*"
12320                         echo "libs = $libs" >&4
12321                         ;;
12322                 esac
12323         fi
12324         $rm -f try.*
12325         ;;
12326 esac
12327
12328 case "$i_db" in
12329 define)
12330         : Check the return type needed for hash 
12331         echo " "
12332         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12333         $cat >try.c <<EOCP
12334 #$d_const HASCONST
12335 #ifndef HASCONST
12336 #define const
12337 #endif
12338 #include <sys/types.h>
12339 #include <db.h>
12340
12341 #ifndef DB_VERSION_MAJOR
12342 u_int32_t hash_cb (ptr, size)
12343 const void *ptr;
12344 size_t size;
12345 {
12346 }
12347 HASHINFO info;
12348 int main()
12349 {
12350         info.hash = hash_cb;
12351 }
12352 #endif
12353 EOCP
12354         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12355                 if $contains warning try.out >>/dev/null 2>&1 ; then
12356                         db_hashtype='int'
12357                 else
12358                         db_hashtype='u_int32_t'
12359                 fi
12360         else
12361                 : XXX Maybe we should just give up here.
12362                 db_hashtype=u_int32_t
12363                 $cat try.out >&4
12364                 echo "Help:  I can't seem to compile the db test program." >&4
12365                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12366         fi
12367         $rm -f try.*
12368         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12369         ;;
12370 *)      db_hashtype=u_int32_t
12371         ;;
12372 esac
12373 case "$i_db" in
12374 define)
12375         : Check the return type needed for prefix 
12376         echo " "
12377         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12378         cat >try.c <<EOCP
12379 #$d_const HASCONST
12380 #ifndef HASCONST
12381 #define const
12382 #endif
12383 #include <sys/types.h>
12384 #include <db.h>
12385
12386 #ifndef DB_VERSION_MAJOR
12387 size_t prefix_cb (key1, key2)
12388 const DBT *key1;
12389 const DBT *key2;
12390 {
12391 }
12392 BTREEINFO info;
12393 int main()
12394 {
12395         info.prefix = prefix_cb;
12396 }
12397 #endif
12398 EOCP
12399         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12400                 if $contains warning try.out >>/dev/null 2>&1 ; then
12401                         db_prefixtype='int'
12402                 else
12403                         db_prefixtype='size_t'
12404                 fi
12405         else
12406                 db_prefixtype='size_t'
12407                 : XXX Maybe we should just give up here.
12408                 $cat try.out >&4
12409                 echo "Help:  I can't seem to compile the db test program." >&4
12410                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12411         fi
12412         $rm -f try.*
12413         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12414         ;;
12415 *)      db_prefixtype='size_t'
12416         ;;
12417 esac
12418
12419 : check for void type
12420 echo " "
12421 echo "Checking to see how well your C compiler groks the void type..." >&4
12422 case "$voidflags" in
12423 '')
12424         $cat >try.c <<'EOCP'
12425 #if TRY & 1
12426 void sub() {
12427 #else
12428 sub() {
12429 #endif
12430         extern void moo();      /* function returning void */
12431         void (*goo)();          /* ptr to func returning void */
12432 #if TRY & 8
12433         void *hue;              /* generic ptr */
12434 #endif
12435 #if TRY & 2
12436         void (*foo[10])();
12437 #endif
12438
12439 #if TRY & 4
12440         if(goo == moo) {
12441                 exit(0);
12442         }
12443 #endif
12444         exit(0);
12445 }
12446 int main() { sub(); }
12447 EOCP
12448         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12449                 voidflags=$defvoidused
12450         echo "Good.  It appears to support void to the level $package wants.">&4
12451                 if $contains warning .out >/dev/null 2>&1; then
12452                         echo "However, you might get some warnings that look like this:"
12453                         $cat .out
12454                 fi
12455         else
12456 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12457                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12458                         echo "It supports 1..."
12459                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12460                                 echo "It also supports 2..."
12461                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12462                                         voidflags=7
12463                                         echo "And it supports 4 but not 8 definitely."
12464                                 else
12465                                         echo "It doesn't support 4..."
12466                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12467                                                 voidflags=11
12468                                                 echo "But it supports 8."
12469                                         else
12470                                                 voidflags=3
12471                                                 echo "Neither does it support 8."
12472                                         fi
12473                                 fi
12474                         else
12475                                 echo "It does not support 2..."
12476                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12477                                         voidflags=13
12478                                         echo "But it supports 4 and 8."
12479                                 else
12480                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12481                                                 voidflags=5
12482                                                 echo "And it supports 4 but has not heard about 8."
12483                                         else
12484                                                 echo "However it supports 8 but not 4."
12485                                         fi
12486                                 fi
12487                         fi
12488                 else
12489                         echo "There is no support at all for void."
12490                         voidflags=0
12491                 fi
12492         fi
12493 esac
12494 case "$voidflags" in
12495 "$defvoidused") ;;
12496 *)      $cat >&4 <<'EOM'
12497   Support flag bits are:
12498     1: basic void declarations.
12499     2: arrays of pointers to functions returning void.
12500     4: operations between pointers to and addresses of void functions.
12501     8: generic void pointers.
12502 EOM
12503         dflt="$voidflags";
12504         rp="Your void support flags add up to what?"
12505         . ./myread
12506         voidflags="$ans"
12507         ;;
12508 esac
12509 $rm -f try.* .out
12510
12511
12512 : How can we generate normalized random numbers ?
12513 echo " "
12514 echo "Looking for a random number function..." >&4
12515 case "$randfunc" in
12516 '')
12517         if set drand48 val -f; eval $csym; $val; then
12518                 dflt="drand48"
12519                 echo "Good, found drand48()." >&4
12520         elif set random val -f; eval $csym; $val; then
12521                 dflt="random"
12522                 echo "OK, found random()." >&4
12523         else
12524                 dflt="rand"
12525                 echo "Yick, looks like I have to use rand()." >&4
12526         fi
12527         echo " "
12528         ;;
12529 *)
12530         dflt="$randfunc"
12531         ;;
12532 esac
12533 cont=true
12534
12535 case "$ccflags" in
12536 *-Dmy_rand=*|*-Dmy_srand=*)
12537         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12538         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12539         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12540         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12541         ;;
12542 esac
12543
12544 while $test "$cont"; do
12545         rp="Use which function to generate random numbers?"
12546         . ./myread
12547         if $test "$ans" = "$dflt"; then
12548                 : null
12549         else
12550                 randbits=''
12551         fi
12552         randfunc="$ans"
12553         if set $ans val -f; eval $csym; $val; then
12554                 cont=''
12555         else
12556                 dflt=y
12557                 rp="I cannot find function $ans. Use that name anyway?"
12558                 . ./myread
12559                 dflt=rand
12560                 case "$ans" in
12561                         [yY]*) cont='';;
12562                 esac
12563         fi
12564         case "$cont" in
12565         '')
12566                 case "$randfunc" in
12567                 drand48)
12568                         drand01="drand48()"
12569                         seedfunc="srand48"
12570                         randbits=48
12571                         randseedtype=long
12572                         ;;
12573                 rand|random)
12574                         case "$randbits" in
12575                         '')
12576 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12577                                 $cat >try.c <<EOCP
12578 #$i_unistd I_UNISTD
12579 #$i_stdlib I_STDLIB
12580 #include <stdio.h>
12581 #ifdef I_UNISTD
12582 #  include <unistd.h>
12583 #endif
12584 #ifdef I_STDLIB
12585 #  include <stdlib.h>
12586 #endif
12587 int main()
12588 {
12589         register int i;
12590         register unsigned long tmp;
12591         register unsigned long max = 0L;
12592
12593         for (i = 1000; i; i--) {
12594                 tmp = (unsigned long) $randfunc();
12595                 if (tmp > max) max = tmp;
12596         }
12597         for (i = 0; max; i++)
12598                 max /= 2;
12599         printf("%d\n",i);
12600 }
12601 EOCP
12602                                 set try
12603                                 if eval $compile_ok; then
12604                                         dflt=`try`
12605                                 else
12606                                         dflt='?'
12607                                         echo "(I can't seem to compile the test program...)"
12608                                 fi
12609                                 ;;
12610                         *)
12611                                 dflt="$randbits"
12612                                 ;;
12613                         esac
12614                         rp="How many bits does your $randfunc() function produce?"
12615                         . ./myread
12616                         randbits="$ans"
12617                         $rm -f try.c try
12618                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12619                         seedfunc="s$randfunc"
12620                         randseedtype=unsigned
12621                         ;;
12622                 *)
12623                         dflt="31"
12624                         rp="How many bits does your $randfunc() function produce?"
12625                         . ./myread
12626                         randbits="$ans"
12627                         seedfunc="s$randfunc"
12628                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12629                         if set $seedfunc val -f; eval $csym; $val; then
12630                                 echo "(Using $seedfunc() to seed random generator)"
12631                         else
12632                                 echo "(Warning: no $seedfunc() to seed random generator)"
12633                                 seedfunc=rand
12634                         fi
12635                         randseedtype=unsigned
12636                         ;;
12637                 esac
12638                 ;;
12639         esac
12640 done
12641
12642 echo " "
12643 echo "Determining whether or not we are on an EBCDIC system..." >&4
12644 $cat >tebcdic.c <<'EOM'
12645 int main()
12646 {
12647   if ('M'==0xd4) return 0;
12648   return 1;
12649 }
12650 EOM
12651
12652 val=$undef
12653 set tebcdic
12654 if eval $compile_ok; then
12655         if ./tebcdic; then
12656                 echo "You seem to speak EBCDIC." >&4
12657                 val="$define"
12658         else
12659                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12660         fi
12661 else
12662         echo "I'm unable to compile the test program." >&4
12663         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12664 fi
12665 $rm -f tebcdic.c tebcdic
12666 set ebcdic
12667 eval $setvar
12668
12669 echo " "
12670 $cat >&4 <<EOM
12671 Checking how to flush all pending stdio output...
12672 EOM
12673 # I only know how to find the first 32 possibly open files on SunOS.
12674 # See also hints/sunos_4_1.sh and util.c  --AD
12675 case "$osname" in
12676 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12677 esac
12678 $cat >>try.c <<EOCP
12679 #include <stdio.h>
12680 #$i_unistd I_UNISTD
12681 #ifdef I_UNISTD
12682 # include <unistd.h>
12683 #endif
12684 #$d_sysconf HAS_SYSCONF
12685 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12686 #ifdef HAS_STDIO_STREAM_ARRAY
12687 # define STDIO_STREAM_ARRAY $stdio_stream_array
12688 #endif
12689 int main() {
12690   FILE* p = fopen("try.out", "w");
12691 #ifdef TRY_FPUTC
12692   fputc('x', p);
12693 #else
12694 # ifdef TRY_FPRINTF
12695   fprintf(p, "x");
12696 # endif
12697 #endif
12698 #ifdef TRY_FFLUSH_NULL
12699   fflush(NULL);
12700 #endif
12701 #ifdef TRY_FFLUSH_ALL
12702   {
12703     long open_max = -1;
12704 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12705     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12706 # else
12707 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12708     open_max = sysconf(_SC_OPEN_MAX);
12709 #  else
12710 #   ifdef FOPEN_MAX
12711     open_max = FOPEN_MAX;
12712 #   else
12713 #    ifdef OPEN_MAX
12714     open_max = OPEN_MAX;
12715 #    else
12716 #     ifdef _NFILE
12717     open_max = _NFILE;
12718 #     endif
12719 #    endif
12720 #   endif
12721 #  endif
12722 # endif 
12723 # ifdef HAS_STDIO_STREAM_ARRAY
12724     if (open_max > 0) {
12725       long i;
12726       for (i = 0; i < open_max; i++)
12727             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12728                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12729                 STDIO_STREAM_ARRAY[i]._flag)
12730                 fflush(&STDIO_STREAM_ARRAY[i]);
12731     }   
12732   }
12733 # endif
12734 #endif
12735   _exit(42);
12736 }
12737 EOCP
12738 : first we have to find out how _not_ to flush
12739 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12740     output=''
12741     set try -DTRY_FPUTC
12742     if eval $compile; then
12743             $rm -f try.out
12744             ./try$exe_ext 2>/dev/null
12745             if $test ! -s try.out -a "X$?" = X42; then
12746                 output=-DTRY_FPUTC
12747             fi
12748     fi
12749     case "$output" in
12750     '')
12751             set try -DTRY_FPRINTF
12752             $rm -f try.out
12753             if eval $compile; then
12754                     $rm -f try.out
12755                     ./try$exe_ext 2>/dev/null
12756                     if $test ! -s try.out -a "X$?" = X42; then
12757                         output=-DTRY_FPRINTF
12758                     fi
12759             fi
12760         ;;
12761     esac
12762 fi
12763 : check for fflush NULL behaviour
12764 case "$fflushNULL" in
12765 '')     set try -DTRY_FFLUSH_NULL $output
12766         if eval $compile; then
12767                 $rm -f try.out
12768                 ./try$exe_ext 2>/dev/null
12769                 code="$?"
12770                 if $test -s try.out -a "X$code" = X42; then
12771                         fflushNULL="`$cat try.out`"
12772                 else
12773                         if $test "X$code" != X42; then
12774                                 $cat >&4 <<EOM
12775 (If this test failed, don't worry, we'll try another method shortly.)
12776 EOM
12777                         fi
12778                 fi
12779         fi
12780         $rm -f core try.core core.try.*
12781         case "$fflushNULL" in
12782         x)      $cat >&4 <<EOM
12783 Your fflush(NULL) works okay for output streams.
12784 Let's see if it clobbers input pipes...
12785 EOM
12786 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12787 # bug that improperly flushes the input end of pipes.  So we avoid the
12788 # autoflush on fork/system/exec support for now. :-(
12789 $cat >tryp.c <<EOCP
12790 #include <stdio.h>
12791 int
12792 main(int argc, char **argv)
12793 {
12794     char buf[1024];
12795     int i;
12796     char *bp = buf;
12797     while (1) {
12798         while ((i = getc(stdin)) != -1
12799                && (*bp++ = i) != '\n'
12800                && bp < &buf[1024])
12801         /* DO NOTHING */ ;
12802         *bp = '\0';
12803         fprintf(stdout, "%s", buf);
12804         fflush(NULL);
12805         if (i == -1)
12806             return 0;
12807         bp = buf;
12808     }
12809 }
12810 EOCP
12811                 fflushNULL="$define"
12812                 set tryp
12813                 if eval $compile; then
12814                     $rm -f tryp.out
12815                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12816                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12817                        $cat >&4 <<EOM
12818 fflush(NULL) seems to behave okay with input streams.
12819 EOM
12820                         fflushNULL="$define"
12821                     else
12822                         $cat >&4 <<EOM
12823 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12824 EOM
12825                         fflushNULL="$undef"
12826                     fi
12827                 fi
12828                 $rm -f core tryp.c tryp.core core.tryp.*
12829                 ;;
12830         '')     $cat >&4 <<EOM
12831 Your fflush(NULL) isn't working (contrary to ANSI C).
12832 EOM
12833                 fflushNULL="$undef"
12834                 ;;
12835         *)      $cat >&4 <<EOM
12836 Cannot figure out whether your fflush(NULL) works or not.
12837 I'm assuming it doesn't (contrary to ANSI C).
12838 EOM
12839                 fflushNULL="$undef"
12840                 ;;
12841         esac
12842         ;;
12843 $define|true|[yY]*)
12844         fflushNULL="$define"
12845         ;;
12846 *)
12847         fflushNULL="$undef"
12848         ;;
12849 esac
12850 : check explicit looping only if NULL did not work, and if the pipe
12851 : bug does not show up on an explicit flush too
12852 case "$fflushNULL" in
12853 "$undef")
12854         $cat >tryp.c <<EOCP
12855 #include <stdio.h>
12856 int
12857 main(int argc, char **argv)
12858 {
12859     char buf[1024];
12860     int i;
12861     char *bp = buf;
12862     while (1) {
12863         while ((i = getc(stdin)) != -1
12864                && (*bp++ = i) != '\n'
12865                && bp < &buf[1024])
12866         /* DO NOTHING */ ;
12867         *bp = '\0';
12868         fprintf(stdout, "%s", buf);
12869         fflush(stdin);
12870         if (i == -1)
12871             return 0;
12872         bp = buf;
12873     }
12874 }
12875 EOCP
12876         set tryp
12877         if eval $compile; then
12878             $rm -f tryp.out
12879             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12880             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12881                $cat >&4 <<EOM
12882 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12883 EOM
12884                 : now check for fflushall behaviour
12885                 case "$fflushall" in
12886                 '')     set try -DTRY_FFLUSH_ALL $output
12887                         if eval $compile; then
12888                                 $cat >&4 <<EOM
12889 (Now testing the other method--but note that this also may fail.)
12890 EOM
12891                                 $rm -f try.out
12892                                 ./try$exe_ext 2>/dev/null
12893                                 if $test -s try.out -a "X$?" = X42; then
12894                                         fflushall="`$cat try.out`"
12895                                 fi
12896                         fi
12897                         $rm -f core try.core core.try.*
12898                         case "$fflushall" in
12899                         x)      $cat >&4 <<EOM
12900 Whew. Flushing explicitly all the stdio streams works.
12901 EOM
12902                                 fflushall="$define"
12903                                 ;;
12904                         '')     $cat >&4 <<EOM
12905 Sigh. Flushing explicitly all the stdio streams doesn't work.
12906 EOM
12907                                 fflushall="$undef"
12908                                 ;;
12909                         *)      $cat >&4 <<EOM
12910 Cannot figure out whether flushing stdio streams explicitly works or not.
12911 I'm assuming it doesn't.
12912 EOM
12913                                 fflushall="$undef"
12914                                 ;;
12915                         esac
12916                         ;;
12917                 "$define"|true|[yY]*)
12918                         fflushall="$define"
12919                         ;;
12920                 *)
12921                         fflushall="$undef"
12922                         ;;
12923                 esac
12924             else
12925                 $cat >&4 <<EOM
12926 All is futile.  Even fflush(stdin) clobbers input pipes!
12927 EOM
12928                 fflushall="$undef"
12929             fi
12930         else
12931             fflushall="$undef"
12932         fi
12933         $rm -f core tryp.c tryp.core core.tryp.*
12934         ;;
12935 *)      fflushall="$undef"
12936         ;;
12937 esac
12938
12939 case "$fflushNULL$fflushall" in
12940 undefundef)
12941         $cat <<EOM
12942 OK, I give up.  I cannot figure out how to flush pending stdio output.
12943 We won't be flushing handles at all before fork/exec/popen.
12944 EOM
12945         ;;
12946 esac
12947 $rm -f try.* try$exe_ext
12948
12949 : Store the full pathname to the ar program for use in the C program
12950 : Respect a hint or command line value for full_ar.
12951 case "$full_ar" in
12952 '') full_ar=$ar ;;
12953 esac
12954
12955 : Store the full pathname to the sed program for use in the C program
12956 full_sed=$sed
12957
12958 : see what type gids are declared as in the kernel
12959 echo " "
12960 echo "Looking for the type for group ids returned by getgid()."
12961 set gid_t gidtype xxx stdio.h sys/types.h
12962 eval $typedef
12963 case "$gidtype" in
12964 xxx)
12965         xxx=`./findhdr sys/user.h`
12966         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12967         case $1 in
12968         unsigned) dflt="$1 $2" ;;
12969         *) dflt="$1" ;;
12970         esac
12971         ;;
12972 *) dflt="$gidtype";;
12973 esac
12974 case "$gidtype" in
12975 gid_t) echo "gid_t found." ;;
12976 *)      rp="What is the type for group ids returned by getgid()?"
12977         . ./myread
12978         gidtype="$ans"
12979         ;;
12980 esac
12981
12982 echo " "
12983 case "$gidtype" in
12984 *_t) zzz="$gidtype"     ;;
12985 *)   zzz="gid"          ;;
12986 esac
12987 echo "Checking the size of $zzz..." >&4 
12988 cat > try.c <<EOCP
12989 #include <sys/types.h>
12990 #include <stdio.h>
12991 int main() {
12992     printf("%d\n", (int)sizeof($gidtype));
12993     exit(0);
12994 }
12995 EOCP
12996 set try
12997 if eval $compile_ok; then
12998         yyy=`./try`
12999         case "$yyy" in
13000         '')     gidsize=4
13001                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
13002                 ;;
13003         *)      gidsize=$yyy
13004                 echo "Your $zzz is $gidsize bytes long."
13005                 ;;
13006         esac
13007 else
13008         gidsize=4
13009         echo "(I can't compile the test program--guessing $gidsize.)" >&4
13010 fi
13011
13012
13013 echo " "
13014 case "$gidtype" in
13015 *_t) zzz="$gidtype"     ;;
13016 *)   zzz="gid"          ;;
13017 esac
13018 echo "Checking the sign of $zzz..." >&4 
13019 cat > try.c <<EOCP
13020 #include <sys/types.h>
13021 #include <stdio.h>
13022 int main() {
13023         $gidtype foo = -1;
13024         if (foo < 0)
13025                 printf("-1\n");
13026         else
13027                 printf("1\n");
13028 }
13029 EOCP
13030 set try
13031 if eval $compile; then
13032         yyy=`./try`
13033         case "$yyy" in
13034         '')     gidsign=1
13035                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13036                 ;;
13037         *)      gidsign=$yyy
13038                 case "$gidsign" in
13039                  1) echo "Your $zzz is unsigned." ;;
13040                 -1) echo "Your $zzz is signed."   ;;
13041                 esac
13042                 ;;
13043         esac
13044 else
13045         gidsign=1
13046         echo "(I can't compile the test program--guessing unsigned.)" >&4
13047 fi
13048
13049
13050 echo " "
13051
13052 if $test X"$quadtype" != X; then
13053
13054 echo "Checking how to print 64-bit integers..." >&4
13055
13056 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
13057         $cat >try.c <<'EOCP'
13058 #include <sys/types.h>
13059 #include <stdio.h>
13060 int main() {
13061   int q = 12345678901;
13062   printf("%ld\n", q);
13063 }
13064 EOCP
13065         set try
13066         if eval $compile; then
13067                 yyy=`./try$exe_ext`
13068                 case "$yyy" in
13069                 12345678901)
13070                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
13071                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
13072                         echo "We will use %d."
13073                         ;;
13074                 esac
13075         fi
13076 fi
13077
13078 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
13079         $cat >try.c <<'EOCP'
13080 #include <sys/types.h>
13081 #include <stdio.h>
13082 int main() {
13083   long q = 12345678901;
13084   printf("%ld\n", q);
13085 }
13086 EOCP
13087         set try
13088         if eval $compile; then
13089                 yyy=`./try$exe_ext`
13090                 case "$yyy" in
13091                 12345678901)
13092                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
13093                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
13094                         echo "We will use %ld."
13095                         ;;
13096                 esac
13097         fi
13098 fi
13099
13100 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
13101         $cat >try.c <<'EOCP'
13102 #include <sys/types.h>
13103 #include <inttypes.h>
13104 #include <stdio.h>
13105 int main() {
13106   int64_t q = 12345678901;
13107   printf("%" PRId64 "\n", q);
13108 }
13109 EOCP
13110         set try
13111         if eval $compile; then
13112                 yyy=`./try$exe_ext`
13113                 case "$yyy" in
13114                 12345678901)
13115                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
13116                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
13117                         echo "We will use the C9X style."
13118                         ;;
13119                 esac
13120         fi
13121 fi
13122
13123 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13124         $cat >try.c <<'EOCP'
13125 #include <sys/types.h>
13126 #include <stdio.h>
13127 int main() {
13128   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13129   printf("%lld\n", q);
13130 }
13131 EOCP
13132         set try
13133         if eval $compile; then
13134                 yyy=`./try$exe_ext`
13135                 case "$yyy" in
13136                 12345678901)
13137                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13138                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13139                         echo "We will use the %lld style."
13140                         ;;
13141                 esac
13142         fi
13143 fi
13144
13145 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13146         $cat >try.c <<EOCP
13147 #include <sys/types.h>
13148 #include <stdio.h>
13149 int main() {
13150   $quadtype q = 12345678901;
13151   printf("%Ld\n", q);
13152 }
13153 EOCP
13154         set try
13155         if eval $compile; then
13156                 yyy=`./try$exe_ext`
13157                 case "$yyy" in
13158                 12345678901)
13159                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13160                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13161                         echo "We will use %Ld."
13162                         ;;
13163                 esac
13164         fi
13165 fi
13166
13167 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13168         $cat >try.c <<EOCP
13169 #include <sys/types.h>
13170 #include <stdio.h>
13171 int main() {
13172   $quadtype q = 12345678901;
13173   printf("%qd\n", q);
13174 }
13175 EOCP
13176         set try
13177         if eval $compile; then
13178                 yyy=`./try$exe_ext`
13179                 case "$yyy" in
13180                 12345678901)
13181                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13182                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13183                         echo "We will use %qd."
13184                         ;;
13185                 esac
13186         fi
13187 fi
13188
13189 if $test X"$sPRId64" = X; then
13190         echo "Cannot figure out how to print 64-bit integers." >&4
13191 fi
13192
13193 $rm -f try try.*
13194
13195 fi
13196
13197 case "$sPRId64" in
13198 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13199         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13200         ;;
13201 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13202         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13203         ;;
13204 esac
13205
13206
13207 echo " "
13208 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13209
13210 if $test X"$ivsize" = X8; then
13211         ivdformat="$sPRId64"
13212         uvuformat="$sPRIu64"
13213         uvoformat="$sPRIo64"
13214         uvxformat="$sPRIx64"
13215         uvXUformat="$sPRIXU64"
13216 else
13217         if $test X"$ivsize" = X"$longsize"; then
13218                 ivdformat='"ld"'
13219                 uvuformat='"lu"'
13220                 uvoformat='"lo"'
13221                 uvxformat='"lx"'
13222                 uvXUformat='"lX"'
13223         else
13224                 if $test X"$ivsize" = X"$intsize"; then
13225                         ivdformat='"d"'
13226                         uvuformat='"u"'
13227                         uvoformat='"o"'
13228                         uvxformat='"x"'
13229                         uvXUformat='"X"'
13230                 else
13231                         : far out
13232                         if $test X"$ivsize" = X"$shortsize"; then
13233                                 ivdformat='"hd"'
13234                                 uvuformat='"hu"'
13235                                 uvoformat='"ho"'
13236                                 uvxformat='"hx"'
13237                                 uvXUformat='"hX"'
13238                         fi
13239                 fi
13240         fi
13241 fi
13242
13243 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13244         nveformat="$sPRIeldbl"
13245         nvfformat="$sPRIfldbl"
13246         nvgformat="$sPRIgldbl"
13247         nvEUformat="$sPRIEUldbl"
13248         nvFUformat="$sPRIFUldbl"
13249         nvGUformat="$sPRIGUldbl"
13250 else
13251         nveformat='"e"'
13252         nvfformat='"f"'
13253         nvgformat='"g"'
13254         nvEUformat='"E"'
13255         nvFUformat='"F"'
13256         nvGUformat='"G"'
13257 fi
13258
13259 case "$ivdformat" in
13260 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13261     exit 1
13262     ;;
13263 esac
13264
13265
13266 echo " "
13267 $echo "Checking the format string to be used for gids..." >&4
13268
13269 case "$gidsign" in
13270 -1)     if $test X"$gidsize" = X"$ivsize"; then
13271                 gidformat="$ivdformat"
13272         else
13273                 if $test X"$gidsize" = X"$longsize"; then
13274                         gidformat='"ld"'
13275                 else
13276                         if $test X"$gidsize" = X"$intsize"; then
13277                                 gidformat='"d"'
13278                         else
13279                                 if $test X"$gidsize" = X"$shortsize"; then
13280                                         gidformat='"hd"'
13281                                 fi
13282                         fi
13283                 fi
13284         fi
13285         ;;
13286 *)      if $test X"$gidsize" = X"$uvsize"; then
13287                 gidformat="$uvuformat"
13288         else
13289                 if $test X"$gidsize" = X"$longsize"; then
13290                         gidformat='"lu"'
13291                 else
13292                         if $test X"$gidsize" = X"$intsize"; then
13293                                 gidformat='"u"'
13294                         else
13295                                 if $test X"$gidsize" = X"$shortsize"; then
13296                                         gidformat='"hu"'
13297                                 fi
13298                         fi
13299                 fi
13300         fi
13301         ;;
13302 esac
13303
13304 : see if getgroups exists
13305 set getgroups d_getgrps
13306 eval $inlibc
13307
13308 : see if setgroups exists
13309 set setgroups d_setgrps
13310 eval $inlibc
13311
13312
13313 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13314 echo " "
13315 case "$d_getgrps$d_setgrps" in
13316 *define*)
13317         case "$groupstype" in
13318         '') dflt="$gidtype" ;;
13319         *)  dflt="$groupstype" ;;
13320         esac
13321         $cat <<EOM
13322 What type of pointer is the second argument to getgroups() and setgroups()?
13323 Usually this is the same as group ids, $gidtype, but not always.
13324
13325 EOM
13326         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13327         . ./myread
13328         groupstype="$ans"
13329         ;;
13330 *)  groupstype="$gidtype";;
13331 esac
13332
13333 echo " "
13334 echo "Checking if your $make program sets \$(MAKE)..." >&4
13335 case "$make_set_make" in
13336 '')
13337         $sed 's/^X //' > testmake.mak << 'EOF'
13338 Xall:
13339 X       @echo 'maketemp="$(MAKE)"'
13340 EOF
13341         case "`$make -f testmake.mak 2>/dev/null`" in
13342         *maketemp=*) make_set_make='#' ;;
13343         *)      make_set_make="MAKE=$make" ;;
13344         esac
13345         $rm -f testmake.mak
13346         ;;
13347 esac
13348 case "$make_set_make" in
13349 '#') echo "Yup, it does.";;
13350 *) echo "Nope, it doesn't.";;
13351 esac
13352
13353 : see what type is used for mode_t
13354 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13355 set mode_t modetype int stdio.h sys/types.h
13356 eval $typedef_ask
13357
13358 : define a fucntion to check prototypes
13359 $cat > protochk <<EOSH
13360 $startsh
13361 cc="$cc"
13362 optimize="$optimize"
13363 ccflags="$ccflags"
13364 prototype="$prototype"
13365 define="$define"
13366 rm=$rm
13367 EOSH
13368
13369 $cat >> protochk <<'EOSH'
13370
13371 $rm -f try.c
13372 foo="$1"
13373 shift
13374 while test $# -ge 2; do
13375         case "$1" in
13376                 $define) echo "#include <$2>" >> try.c ;;
13377                 literal) echo "$2" >> try.c ;;
13378         esac
13379     shift 2
13380 done
13381 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13382 cat >> try.c <<'EOCP'
13383 #ifdef CAN_PROTOTYPE
13384 #define _(args) args
13385 #else
13386 #define _(args) ()
13387 #endif
13388 EOCP
13389 echo "$foo" >> try.c
13390 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13391 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13392 status=$?
13393 $rm -f try.[co]
13394 exit $status
13395 EOSH
13396 chmod +x protochk
13397 $eunicefix protochk
13398
13399 : see what type is used for size_t
13400 rp="What is the type used for the length parameter for string functions?"
13401 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13402 eval $typedef_ask
13403
13404 : check for type of arguments to gethostbyaddr. 
13405 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13406         case "$d_gethbyaddr" in
13407         $define)
13408                 $cat <<EOM
13409
13410 Checking to see what type of arguments are accepted by gethostbyaddr().
13411 EOM
13412                 hdrs="$define sys/types.h
13413                         $d_socket sys/socket.h 
13414                         $i_niin netinet/in.h 
13415                         $i_netdb netdb.h
13416                         $i_unistd unistd.h"
13417                 : The first arg can 'char *' or 'void *'
13418                 : The second arg is some of integral type
13419                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13420                         for yyy in size_t long int; do
13421                                 case "$netdb_host_type" in
13422                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13423                                         if ./protochk "$try" $hdrs; then
13424                                                 echo "Your system accepts $xxx for the first arg."
13425                                                 echo "...and $yyy for the second arg."
13426                                                 netdb_host_type="$xxx"
13427                                                 netdb_hlen_type="$yyy"
13428                                         fi
13429                                         ;;
13430                                 esac
13431                         done
13432                 done
13433                 : In case none of those worked, prompt the user.
13434                 case "$netdb_host_type" in
13435                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13436                         dflt='char *'
13437                         . ./myread
13438                         netdb_host_type=$ans
13439                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13440                         dflt="$sizetype"
13441                         . ./myread
13442                         netdb_hlen_type=$ans
13443                         ;;
13444                 esac
13445                 ;;
13446         *)      : no gethostbyaddr, so pick harmless defaults
13447                 netdb_host_type='char *'
13448                 netdb_hlen_type="$sizetype"
13449                 ;;
13450         esac
13451         # Remove the "const" if needed. -- but then we'll have a 
13452         # prototype clash!
13453         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13454 fi
13455
13456 : check for type of argument to gethostbyname. 
13457 if test "X$netdb_name_type" = X ; then
13458         case "$d_gethbyname" in
13459         $define)
13460                 $cat <<EOM
13461
13462 Checking to see what type of argument is accepted by gethostbyname().
13463 EOM
13464                 hdrs="$define sys/types.h
13465                         $d_socket sys/socket.h 
13466                         $i_niin netinet/in.h 
13467                         $i_netdb netdb.h
13468                         $i_unistd unistd.h"
13469                 for xxx in "const char *" "char *"; do
13470                         case "$netdb_name_type" in
13471                         '')     try="extern struct hostent *gethostbyname($xxx);"
13472                                 if ./protochk "$try" $hdrs; then
13473                                         echo "Your system accepts $xxx."
13474                                         netdb_name_type="$xxx"
13475                                 fi
13476                                 ;;
13477                         esac
13478                 done
13479                 : In case none of those worked, prompt the user.
13480                 case "$netdb_name_type" in
13481                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13482                         dflt='char *'
13483                         . ./myread
13484                         netdb_name_type=$ans
13485                         ;;
13486                 esac
13487                 ;;
13488         *)      : no gethostbyname, so pick harmless default
13489                 netdb_name_type='char *'
13490                 ;;
13491         esac
13492 fi
13493
13494 : check for type of 1st argument to getnetbyaddr. 
13495 if test "X$netdb_net_type" = X ; then
13496         case "$d_getnbyaddr" in
13497         $define)
13498                 $cat <<EOM
13499
13500 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13501 EOM
13502                 hdrs="$define sys/types.h
13503                         $d_socket sys/socket.h 
13504                         $i_niin netinet/in.h 
13505                         $i_netdb netdb.h
13506                         $i_unistd unistd.h"
13507                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13508                         case "$netdb_net_type" in
13509                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13510                                 if ./protochk "$try" $hdrs; then
13511                                         echo "Your system accepts $xxx."
13512                                         netdb_net_type="$xxx"
13513                                 fi
13514                                 ;;
13515                         esac
13516                 done
13517                 : In case none of those worked, prompt the user.
13518                 case "$netdb_net_type" in
13519                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13520                         dflt='long'
13521                         . ./myread
13522                         netdb_net_type=$ans
13523                         ;;
13524                 esac
13525                 ;;
13526         *)      : no getnetbyaddr, so pick harmless default
13527                 netdb_net_type='long'
13528                 ;;
13529         esac
13530 fi
13531 : locate the preferred pager for this system
13532 case "$pager" in
13533 '')
13534         dflt=''
13535         case "$pg" in
13536         /*) dflt=$pg;;
13537         [a-zA-Z]:/*) dflt=$pg;;
13538         esac
13539         case "$more" in
13540         /*) dflt=$more;;
13541         [a-zA-Z]:/*) dflt=$more;;
13542         esac
13543         case "$less" in
13544         /*) dflt=$less;;
13545         [a-zA-Z]:/*) dflt=$less;;
13546         esac
13547         case "$dflt" in
13548         '') dflt=/usr/ucb/more;;
13549         esac
13550         ;;
13551 *) dflt="$pager";;
13552 esac
13553 echo " "
13554 fn=f/
13555 rp='What pager is used on your system?'
13556 . ./getfile
13557 pager="$ans"
13558
13559 : see what type pids are declared as in the kernel
13560 rp="What is the type of process ids on this system?"
13561 set pid_t pidtype int stdio.h sys/types.h
13562 eval $typedef_ask
13563
13564 : Find earliest binary compatible site_perl subdirectory perl can use.
13565 case "$bincompat5005" in
13566 "$define") xs_apiversion='5.005' ;;
13567 *) xs_apiversion=$version ;;   # The current site_perl version.
13568 esac
13569 : Find earliest pure perl site_perl subdirectory perl can use.
13570 : The versioned directories started at 5.005.
13571 pm_apiversion='5.005'
13572
13573 : check for length of pointer
13574 echo " "
13575 case "$ptrsize" in
13576 '')
13577         echo "Checking to see how big your pointers are..." >&4
13578         if test "$voidflags" -gt 7; then
13579                 echo '#define VOID_PTR char *' > try.c
13580         else
13581                 echo '#define VOID_PTR void *' > try.c
13582         fi
13583         $cat >>try.c <<'EOCP'
13584 #include <stdio.h>
13585 int main()
13586 {
13587     printf("%d\n", (int)sizeof(VOID_PTR));
13588     exit(0);
13589 }
13590 EOCP
13591         set try
13592         if eval $compile_ok; then
13593                 ptrsize=`./try`
13594                 echo "Your pointers are $ptrsize bytes long."
13595         else
13596                 dflt='4'
13597                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13598                 rp="What is the size of a pointer (in bytes)?"
13599                 . ./myread
13600                 ptrsize="$ans"
13601         fi
13602         ;;
13603 esac
13604 $rm -f try.c try
13605
13606 : see if ar generates random libraries by itself
13607 echo " "
13608 echo "Checking how to generate random libraries on your machine..." >&4
13609 echo 'int bar1() { return bar2(); }' > bar1.c
13610 echo 'int bar2() { return 2; }' > bar2.c
13611 $cat > foo.c <<'EOP'
13612 int main() { printf("%d\n", bar1()); exit(0); }
13613 EOP
13614 $cc $ccflags -c bar1.c >/dev/null 2>&1
13615 $cc $ccflags -c bar2.c >/dev/null 2>&1
13616 $cc $ccflags -c foo.c >/dev/null 2>&1
13617 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13618 if $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13619         ./foobar >/dev/null 2>&1; then
13620         echo "$ar appears to generate random libraries itself."
13621         orderlib=false
13622         ranlib=":"
13623 elif $ar ts bar$_a >/dev/null 2>&1 &&
13624         $cc -o foobar $ccflags $ldflags foo$_o bar$_a $libs > /dev/null 2>&1 &&
13625         ./foobar >/dev/null 2>&1; then
13626                 echo "a table of contents needs to be added with '$ar ts'."
13627                 orderlib=false
13628                 ranlib="$ar ts"
13629 else
13630         case "$ranlib" in
13631         :) ranlib='';;
13632         '')
13633                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13634                 $test -f $ranlib || ranlib=''
13635                 ;;
13636         esac
13637         if $test -n "$ranlib"; then
13638                 echo "your system has '$ranlib'; we'll use that."
13639                 orderlib=false
13640         else
13641                 echo "your system doesn't seem to support random libraries"
13642                 echo "so we'll use lorder and tsort to order the libraries."
13643                 orderlib=true
13644                 ranlib=":"
13645         fi
13646 fi
13647 $rm -f foo* bar* 
13648
13649 : check for type of arguments to select. 
13650 case "$selecttype" in
13651 '') case "$d_select" in
13652         $define)
13653                 echo " "
13654                 $cat <<EOM
13655 Checking to see what type of arguments are accepted by select().
13656 EOM
13657                 hdrs="$define sys/types.h
13658                         $i_systime sys/time.h 
13659                         $i_sysselct sys/select.h
13660                         $d_socket sys/socket.h"
13661                 : The first arg can be int, unsigned, or size_t
13662                 : The last arg may or may not be 'const'
13663                 val=''
13664                 : void pointer has been seen but using that
13665                 : breaks the selectminbits test
13666                 for xxx in 'fd_set *' 'int *'; do
13667                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13668                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13669                                         case "$val" in
13670                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13671                                                 if ./protochk "$try" $hdrs; then
13672                                                         echo "Your system accepts $xxx."
13673                                                         val="$xxx"
13674                                                 fi
13675                                                 ;;
13676                                         esac
13677                                 done
13678                         done
13679                 done
13680                 case "$val" in
13681                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13682                         case "$d_fd_set" in
13683                                 $define) dflt="fd_set *" ;;
13684                                 *)              dflt="int *" ;;
13685                         esac
13686                         . ./myread
13687                         val=$ans
13688                         ;;
13689                 esac
13690                 selecttype="$val"
13691                 ;;
13692         *)      : no select, so pick a harmless default
13693                 selecttype='int *'
13694                 ;;
13695         esac
13696         ;;
13697 esac
13698
13699 : check for the select 'width'
13700 case "$selectminbits" in
13701 '') case "$d_select" in
13702         $define)
13703                 $cat <<EOM
13704
13705 Checking to see on how many bits at a time your select() operates...
13706 EOM
13707                 $cat >try.c <<EOCP
13708 #include <sys/types.h>
13709 #$i_time I_TIME
13710 #$i_systime I_SYS_TIME
13711 #$i_systimek I_SYS_TIME_KERNEL
13712 #ifdef I_TIME
13713 #   include <time.h>
13714 #endif
13715 #ifdef I_SYS_TIME
13716 #   ifdef I_SYS_TIME_KERNEL
13717 #       define KERNEL
13718 #   endif
13719 #   include <sys/time.h>
13720 #   ifdef I_SYS_TIME_KERNEL
13721 #       undef KERNEL
13722 #   endif
13723 #endif
13724 #$i_sysselct I_SYS_SELECT
13725 #ifdef I_SYS_SELECT
13726 #include <sys/select.h>
13727 #endif
13728 #$d_socket HAS_SOCKET
13729 #ifdef HAS_SOCKET
13730 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13731 #endif
13732 #include <stdio.h>
13733 $selecttype b;
13734 #define S sizeof(*(b))
13735 #define MINBITS 64
13736 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13737 #define NBITS  (NBYTES * 8)
13738 int main() {
13739     char s[NBYTES];
13740     struct timeval t;
13741     int i;
13742     FILE* fp;
13743     int fd;
13744
13745     fclose(stdin);
13746     fp = fopen("try.c", "r");
13747     if (fp == 0)
13748       exit(1);
13749     fd = fileno(fp);
13750     if (fd < 0)
13751       exit(2);
13752     b = ($selecttype)s;
13753     for (i = 0; i < NBITS; i++)
13754         FD_SET(i, b);
13755     t.tv_sec  = 0;
13756     t.tv_usec = 0;
13757     select(fd + 1, b, 0, 0, &t);
13758     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13759     printf("%d\n", i + 1);
13760     return 0;
13761 }
13762 EOCP
13763                 set try
13764                 if eval $compile_ok; then
13765                         selectminbits=`./try`
13766                         case "$selectminbits" in
13767                         '')     cat >&4 <<EOM
13768 Cannot figure out on how many bits at a time your select() operates.
13769 I'll play safe and guess it is 32 bits.
13770 EOM
13771                                 selectminbits=32
13772                                 bits="32 bits"
13773                                 ;;
13774                         1)      bits="1 bit" ;;
13775                         *)      bits="$selectminbits bits" ;;
13776                         esac
13777                         echo "Your select() operates on $bits at a time." >&4
13778                 else
13779                         rp='What is the minimum number of bits your select() operates on?'
13780                         case "$byteorder" in
13781                         1234|12345678)  dflt=32 ;;
13782                         *)              dflt=1  ;;
13783                         esac
13784                         . ./myread
13785                         val=$ans
13786                         selectminbits="$val"
13787                 fi
13788                 $rm -f try.* try
13789                 ;;
13790         *)      : no select, so pick a harmless default
13791                 selectminbits='32'
13792                 ;;
13793         esac
13794         ;;
13795 esac
13796
13797 : Trace out the files included by signal.h, then look for SIGxxx names.
13798 : Remove SIGARRAYSIZE used by HPUX.
13799 : Remove SIGSTKSIZE used by Linux.
13800 : Remove SIGSTKSZ used by Posix.
13801 : Remove SIGTYP void lines used by OS2.
13802 : Some cpps, like os390, dont give the file name anywhere
13803 if [ "X$fieldn" = X ]; then
13804         : Just make some guesses.  We check them later.
13805         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13806 else
13807         xxx=`echo '#include <signal.h>' |
13808         $cppstdin $cppminus $cppflags 2>/dev/null |
13809         $grep '^[       ]*#.*include' | 
13810         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13811 fi
13812 : Check this list of files to be sure we have parsed the cpp output ok.
13813 : This will also avoid potentially non-existent files, such 
13814 : as ../foo/bar.h
13815 xxxfiles=''
13816 for xx in $xxx /dev/null ; do
13817         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13818 done
13819 : If we have found no files, at least try signal.h
13820 case "$xxxfiles" in
13821 '')     xxxfiles=`./findhdr signal.h` ;;
13822 esac
13823 xxx=`awk '
13824 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13825         print substr($2, 4, 20)
13826 }
13827 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13828         print substr($3, 4, 20)
13829 }' $xxxfiles`
13830 : Append some common names just in case the awk scan failed.
13831 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13832 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13833 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13834 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13835 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13836
13837 : generate a few handy files for later
13838 $cat > signal.c <<'EOCP'
13839 #include <sys/types.h>
13840 #include <signal.h>
13841 #include <stdio.h>
13842 int main() {
13843
13844 /* Strange style to avoid deeply-nested #if/#else/#endif */
13845 #ifndef NSIG
13846 #  ifdef _NSIG
13847 #    define NSIG (_NSIG)
13848 #  endif
13849 #endif
13850
13851 #ifndef NSIG
13852 #  ifdef SIGMAX
13853 #    define NSIG (SIGMAX+1)
13854 #  endif
13855 #endif
13856
13857 #ifndef NSIG
13858 #  ifdef SIG_MAX
13859 #    define NSIG (SIG_MAX+1)
13860 #  endif
13861 #endif
13862
13863 #ifndef NSIG
13864 #  ifdef MAXSIG
13865 #    define NSIG (MAXSIG+1)
13866 #  endif
13867 #endif
13868
13869 #ifndef NSIG
13870 #  ifdef MAX_SIG
13871 #    define NSIG (MAX_SIG+1)
13872 #  endif
13873 #endif
13874
13875 #ifndef NSIG
13876 #  ifdef SIGARRAYSIZE
13877 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13878 #  endif
13879 #endif
13880
13881 #ifndef NSIG
13882 #  ifdef _sys_nsig
13883 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13884 #  endif
13885 #endif
13886
13887 /* Default to some arbitrary number that's big enough to get most
13888    of the common signals.
13889 */
13890 #ifndef NSIG
13891 #    define NSIG 50
13892 #endif
13893
13894 printf("NSIG %d\n", NSIG);
13895
13896 #ifndef JUST_NSIG
13897
13898 EOCP
13899
13900 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13901 {
13902         printf "#ifdef SIG"; printf $1; printf "\n"
13903         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13904         printf $1; printf ");\n"
13905         printf "#endif\n"
13906 }
13907 END {
13908         printf "#endif /* JUST_NSIG */\n";
13909         printf "exit(0);\n}\n";
13910 }
13911 ' >>signal.c
13912 $cat >signal.awk <<'EOP'
13913 BEGIN { ndups = 0 }
13914 $1 ~ /^NSIG$/ { nsig = $2 }
13915 ($1 !~ /^NSIG$/) && (NF == 2) {
13916     if ($2 > maxsig) { maxsig = $2 }
13917     if (sig_name[$2]) {
13918         dup_name[ndups] = $1
13919         dup_num[ndups] = $2
13920         ndups++ 
13921     }
13922     else {
13923         sig_name[$2] = $1
13924         sig_num[$2] = $2
13925     }
13926 }
13927 END { 
13928     if (nsig == 0) {
13929         nsig = maxsig + 1
13930     }
13931     printf("NSIG %d\n", nsig);
13932     for (n = 1; n < nsig; n++) {
13933         if (sig_name[n]) {
13934             printf("%s %d\n", sig_name[n], sig_num[n])
13935         }
13936         else {
13937             printf("NUM%d %d\n", n, n) 
13938         }
13939     }
13940     for (n = 0; n < ndups; n++) {
13941         printf("%s %d\n", dup_name[n], dup_num[n])
13942     }
13943 }
13944 EOP
13945 $cat >signal_cmd <<EOS
13946 $startsh
13947 if $test -s signal.lst; then
13948     echo "Using your existing signal.lst file"
13949         exit 0
13950 fi
13951 xxx="$xxx"
13952 EOS
13953 $cat >>signal_cmd <<'EOS'
13954
13955 set signal
13956 if eval $compile_ok; then
13957         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13958 else
13959         echo "(I can't seem be able to compile the whole test program)" >&4
13960         echo "(I'll try it in little pieces.)" >&4
13961         set signal -DJUST_NSIG
13962         if eval $compile_ok; then
13963                 ./signal$_exe > signal.nsg
13964                 $cat signal.nsg
13965         else
13966                 echo "I can't seem to figure out how many signals you have." >&4
13967                 echo "Guessing 50." >&4
13968                 echo 'NSIG 50' > signal.nsg
13969         fi
13970         : Now look at all the signal names, one at a time.
13971         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13972                 $cat > signal.c <<EOCP
13973 #include <sys/types.h>
13974 #include <signal.h>
13975 #include <stdio.h>
13976 int main() {
13977 printf("$xx %d\n", SIG${xx});
13978 return 0;
13979 }
13980 EOCP
13981                 set signal
13982                 if eval $compile; then
13983                         echo "SIG${xx} found."
13984                         ./signal$_exe  >> signal.ls1
13985                 else
13986                         echo "SIG${xx} NOT found."
13987                 fi
13988         done
13989         if $test -s signal.ls1; then
13990                 $cat signal.nsg signal.ls1 |
13991                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13992         fi
13993
13994 fi
13995 if $test -s signal.lst; then
13996         :
13997 else
13998         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13999         echo 'kill -l' >signal
14000         set X `csh -f <signal`
14001         $rm -f signal
14002         shift
14003         case $# in
14004         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
14005         esac
14006         echo $@ | $tr ' ' $trnl | \
14007             $awk '{ printf "%s %d\n", $1, ++s; }
14008                   END { printf "NSIG %d\n", ++s }' >signal.lst
14009 fi
14010 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
14011 EOS
14012 chmod a+x signal_cmd
14013 $eunicefix signal_cmd
14014
14015 : generate list of signal names
14016 echo " "
14017 case "$sig_name_init" in
14018 '') doinit=yes ;;
14019 *)  case "$sig_num_init" in
14020     ''|*,*) doinit=yes ;;
14021     esac ;;
14022 esac
14023 case "$doinit" in
14024 yes)
14025         echo "Generating a list of signal names and numbers..." >&4
14026         . ./signal_cmd
14027         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
14028         sig_name=`$awk 'BEGIN { printf "ZERO " }
14029                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
14030         sig_num=`$awk  'BEGIN { printf "0 " }
14031                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
14032         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
14033                              !/^NSIG/   { printf "\"%s\", ", $1 }
14034                              END        { printf "0\n" }' signal.lst`
14035         sig_num_init=`$awk  'BEGIN      { printf "0, " }
14036                              !/^NSIG/   { printf "%d, ", $2}
14037                              END        { printf "0\n"}' signal.lst`
14038         ;;
14039 esac
14040 echo "The following $sig_count signals are available:"
14041 echo " "
14042 echo $sig_name | $awk \
14043 'BEGIN { linelen = 0 }
14044 {
14045         for (i = 1; i <= NF; i++) {
14046                 name = "SIG" $i " "
14047                 linelen = linelen + length(name)
14048                 if (linelen > 70) {
14049                         printf "\n"
14050                         linelen = length(name)
14051                 }
14052                 printf "%s", name
14053         }
14054         printf "\n"
14055 }'
14056 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
14057
14058 echo " "
14059 case "$sizetype" in
14060 *_t) zzz="$sizetype"    ;;
14061 *)   zzz="filesize"     ;;
14062 esac
14063 echo "Checking the size of $zzz..." >&4 
14064 cat > try.c <<EOCP
14065 #include <sys/types.h>
14066 #include <stdio.h>
14067 int main() {
14068     printf("%d\n", (int)sizeof($sizetype));
14069     exit(0);
14070 }
14071 EOCP
14072 set try
14073 if eval $compile_ok; then
14074         yyy=`./try`
14075         case "$yyy" in
14076         '')     sizesize=4
14077                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
14078                 ;;
14079         *)      sizesize=$yyy
14080                 echo "Your $zzz size is $sizesize bytes."
14081                 ;;
14082         esac
14083 else
14084         sizesize=4
14085         echo "(I can't compile the test program--guessing $sizesize.)" >&4
14086 fi
14087
14088
14089 : check for socklen_t
14090 echo " "
14091 echo "Checking to see if you have socklen_t..." >&4
14092 $cat >try.c <<EOCP
14093 #include <sys/types.h>
14094 #$d_socket HAS_SOCKET
14095 #ifdef HAS_SOCKET
14096 #include <sys/socket.h>
14097 #endif
14098 int main() { socklen_t x = 16; }
14099 EOCP
14100 set try
14101 if eval $compile; then
14102         val="$define"
14103         echo "You have socklen_t."
14104 else
14105         val="$undef"
14106         echo "You do not have socklen_t."
14107         case "$sizetype" in
14108         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
14109         esac
14110 fi
14111 $rm -f try try.*
14112 set d_socklen_t
14113 eval $setvar
14114
14115 : check for type of the size argument to socket calls
14116 case "$d_socket" in
14117 "$define")
14118         $cat <<EOM
14119
14120 Checking to see what type is the last argument of accept().
14121 EOM
14122         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14123         yyy=''
14124         case "$d_socklen_t" in
14125         "$define") yyy="$yyy socklen_t"
14126         esac
14127         yyy="$yyy $sizetype int long unsigned"
14128         for xxx in $yyy; do
14129                 case "$socksizetype" in
14130                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14131                         if ./protochk "$try" $hdrs; then
14132                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14133                                 socksizetype="$xxx"
14134                         fi
14135                         ;;
14136                 esac
14137         done
14138 : In case none of those worked, prompt the user.
14139         case "$socksizetype" in
14140         '')     rp='What is the type for socket address structure sizes?'
14141                 dflt='int'
14142                 . ./myread
14143                 socksizetype=$ans
14144                 ;;
14145         esac
14146         ;;
14147 *)      : no sockets, so pick relatively harmless default
14148         socksizetype='int'
14149         ;;
14150 esac
14151
14152 : see what type is used for signed size_t
14153 set ssize_t ssizetype int stdio.h sys/types.h
14154 eval $typedef
14155 dflt="$ssizetype"
14156 $cat > ssize.c <<EOM
14157 #include <stdio.h>
14158 #include <sys/types.h>
14159 #define Size_t $sizetype
14160 #define SSize_t $dflt
14161 int main()
14162 {
14163         if (sizeof(Size_t) == sizeof(SSize_t))
14164                 printf("$dflt\n");
14165         else if (sizeof(Size_t) == sizeof(int))
14166                 printf("int\n");
14167         else 
14168                 printf("long\n");
14169         exit(0);
14170 }
14171 EOM
14172 echo " "
14173 set ssize
14174 if eval $compile_ok && ./ssize > /dev/null; then
14175         ssizetype=`./ssize`
14176         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14177 else
14178         $cat >&4 <<EOM
14179 Help! I can't compile and run the ssize_t test program: please enlighten me!
14180 (This is probably a misconfiguration in your system or libraries, and
14181 you really ought to fix it.  Still, I'll try anyway.)
14182
14183 I need a type that is the same size as $sizetype, but is guaranteed to
14184 be signed.  Common values are ssize_t, int and long.
14185
14186 EOM
14187         rp="What signed type is the same size as $sizetype?"
14188         . ./myread
14189         ssizetype="$ans"
14190 fi
14191 $rm -f ssize ssize.*
14192
14193 : see what type of char stdio uses.
14194 echo " "
14195 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14196         echo "Your stdio uses unsigned chars." >&4
14197         stdchar="unsigned char"
14198 else
14199         echo "Your stdio uses signed chars." >&4
14200         stdchar="char"
14201 fi
14202
14203 : see if time exists
14204 echo " "
14205 if test "X$d_time" = X -o X"$timetype" = X; then
14206     if set time val -f d_time; eval $csym; $val; then
14207                 echo 'time() found.' >&4
14208                 val="$define"
14209                 rp="What is the type returned by time() on this system?"
14210                 set time_t timetype long stdio.h sys/types.h
14211                 eval $typedef_ask
14212     else
14213                 echo 'time() not found, hope that will do.' >&4
14214                 val="$undef"
14215                 timetype='int';
14216     fi
14217     set d_time
14218     eval $setvar
14219 fi
14220
14221 : see what type uids are declared as in the kernel
14222 echo " "
14223 echo "Looking for the type for user ids returned by getuid()."
14224 set uid_t uidtype xxx stdio.h sys/types.h
14225 eval $typedef
14226 case "$uidtype" in
14227 xxx)
14228         xxx=`./findhdr sys/user.h`
14229         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14230         case $1 in
14231         unsigned) dflt="$1 $2" ;;
14232         *) dflt="$1" ;;
14233         esac
14234         ;;
14235 *) dflt="$uidtype";;
14236 esac
14237 case "$uidtype" in
14238 uid_t)  echo "uid_t found." ;;
14239 *)      rp="What is the type for user ids returned by getuid()?"
14240         . ./myread
14241         uidtype="$ans"
14242         ;;
14243 esac
14244
14245 echo " "
14246 case "$uidtype" in
14247 *_t) zzz="$uidtype"     ;;
14248 *)   zzz="uid"          ;;
14249 esac
14250 echo "Checking the size of $zzz..." >&4 
14251 cat > try.c <<EOCP
14252 #include <sys/types.h>
14253 #include <stdio.h>
14254 int main() {
14255     printf("%d\n", (int)sizeof($uidtype));
14256     exit(0);
14257 }
14258 EOCP
14259 set try
14260 if eval $compile_ok; then
14261         yyy=`./try`
14262         case "$yyy" in
14263         '')     uidsize=4
14264                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14265                 ;;
14266         *)      uidsize=$yyy
14267                 echo "Your $zzz is $uidsize bytes long."
14268                 ;;
14269         esac
14270 else
14271         uidsize=4
14272         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14273 fi
14274
14275 echo " "
14276 case "$uidtype" in
14277 *_t) zzz="$uidtype"     ;;
14278 *)   zzz="uid"          ;;
14279 esac
14280 echo "Checking the sign of $zzz..." >&4
14281 cat > try.c <<EOCP
14282 #include <sys/types.h>
14283 #include <stdio.h>
14284 int main() {
14285         $uidtype foo = -1;
14286         if (foo < 0)
14287                 printf("-1\n");
14288         else
14289                 printf("1\n");
14290 }
14291 EOCP
14292 set try
14293 if eval $compile; then
14294         yyy=`./try`
14295         case "$yyy" in
14296         '')     uidsign=1
14297                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14298                 ;;
14299         *)      uidsign=$yyy
14300                 case "$uidsign" in
14301                  1) echo "Your $zzz is unsigned." ;;
14302                 -1) echo "Your $zzz is signed."   ;;
14303                 esac
14304                 ;;
14305         esac
14306 else
14307         uidsign=1
14308         echo "(I can't compile the test program--guessing unsigned.)" >&4
14309 fi
14310
14311
14312
14313 echo " "
14314 $echo "Checking the format string to be used for uids..." >&4
14315
14316 case "$uidsign" in
14317 -1)     if $test X"$uidsize" = X"$ivsize"; then
14318                 uidformat="$ivdformat"
14319         else
14320                 if $test X"$uidsize" = X"$longsize"; then
14321                         uidformat='"ld"'
14322                 else
14323                         if $test X"$uidsize" = X"$intsize"; then
14324                                 uidformat='"d"'
14325                         else
14326                                 if $test X"$uidsize" = X"$shortsize"; then
14327                                         uidformat='"hd"'
14328                                 fi
14329                         fi
14330                 fi
14331         fi
14332         ;;
14333 *)      if $test X"$uidsize" = X"$uvsize"; then
14334                 uidformat="$uvuformat"
14335         else
14336                 if $test X"$uidsize" = X"$longsize"; then
14337                         uidformat='"lu"'
14338                 else
14339                         if $test X"$uidsize" = X"$intsize"; then
14340                                 uidformat='"u"'
14341                         else
14342                                 if $test X"$uidsize" = X"$shortsize"; then
14343                                         uidformat='"hu"'
14344                                 fi
14345                         fi
14346                 fi
14347         fi
14348         ;;
14349 esac
14350
14351 : see if dbm.h is available
14352 : see if dbmclose exists
14353 set dbmclose d_dbmclose
14354 eval $inlibc
14355
14356 case "$d_dbmclose" in
14357 $define)
14358         set dbm.h i_dbm
14359         eval $inhdr
14360         case "$i_dbm" in
14361         $define)
14362                 val="$undef"
14363                 set i_rpcsvcdbm
14364                 eval $setvar
14365                 ;;
14366         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14367                 eval $inhdr
14368                 ;;
14369         esac
14370         ;;
14371 *)      echo "We won't be including <dbm.h>"
14372         val="$undef"
14373         set i_dbm
14374         eval $setvar
14375         val="$undef"
14376         set i_rpcsvcdbm
14377         eval $setvar
14378         ;;
14379 esac
14380
14381 : see if this is a sys/file.h system
14382 val=''
14383 set sys/file.h val
14384 eval $inhdr
14385
14386 : do we need to include sys/file.h ?
14387 case "$val" in
14388 "$define")
14389         echo " "
14390         if $h_sysfile; then
14391                 val="$define"
14392                 echo "We'll be including <sys/file.h>." >&4
14393         else
14394                 val="$undef"
14395                 echo "We won't be including <sys/file.h>." >&4
14396         fi
14397         ;;
14398 *)
14399         h_sysfile=false
14400         ;;
14401 esac
14402 set i_sysfile
14403 eval $setvar
14404
14405 : see if fcntl.h is there
14406 val=''
14407 set fcntl.h val
14408 eval $inhdr
14409
14410 : see if we can include fcntl.h
14411 case "$val" in
14412 "$define")
14413         echo " "
14414         if $h_fcntl; then
14415                 val="$define"
14416                 echo "We'll be including <fcntl.h>." >&4
14417         else
14418                 val="$undef"
14419                 if $h_sysfile; then
14420         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14421                 else
14422                         echo "We won't be including <fcntl.h>." >&4
14423                 fi
14424         fi
14425         ;;
14426 *)
14427         h_fcntl=false
14428         val="$undef"
14429         ;;
14430 esac
14431 set i_fcntl
14432 eval $setvar
14433
14434 : see if this is a iconv.h system
14435 set iconv.h i_iconv
14436 eval $inhdr
14437
14438 : see if this is a ieeefp.h system
14439 set ieeefp.h i_ieeefp
14440 eval $inhdr
14441
14442 : see if this is a libutil.h system
14443 set libutil.h i_libutil
14444 eval $inhdr
14445
14446 : see if locale.h is available
14447 set locale.h i_locale
14448 eval $inhdr
14449
14450 : see if mach cthreads are available
14451 if test "X$usethreads" = "X$define"; then
14452         set mach/cthreads.h i_machcthr
14453         eval $inhdr
14454 else
14455         i_machcthr="$undef"
14456 fi
14457
14458
14459
14460 : see if this is a math.h system
14461 set math.h i_math
14462 eval $inhdr
14463
14464 : see if this is a mntent.h system
14465 set mntent.h i_mntent
14466 eval $inhdr
14467
14468 : see if ndbm.h is available
14469 set ndbm.h t_ndbm
14470 eval $inhdr
14471 case "$t_ndbm" in
14472 $define)
14473         : see if dbm_open exists
14474         set dbm_open d_dbm_open
14475         eval $inlibc
14476         case "$d_dbm_open" in
14477         $undef)
14478                 t_ndbm="$undef"
14479                 echo "We won't be including <ndbm.h>"
14480                 ;;
14481         esac
14482         ;;
14483 esac
14484 val="$t_ndbm"
14485 set i_ndbm
14486 eval $setvar
14487
14488 : see if net/errno.h is available
14489 val=''
14490 set net/errno.h val
14491 eval $inhdr
14492
14493 : Unfortunately, it causes problems on some systems.  Arrgh.
14494 case "$val" in
14495 $define)
14496         cat > try.c <<'EOM'
14497 #include <stdio.h>
14498 #include <errno.h>
14499 #include <net/errno.h>
14500 int func()
14501 {
14502         return ENOTSOCK;
14503 }
14504 EOM
14505         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14506                 echo "We'll be including <net/errno.h>." >&4
14507         else
14508                 echo "We won't be including <net/errno.h>." >&4
14509                 val="$undef"
14510         fi
14511         $rm -f try.* try
14512         ;;
14513 esac
14514 set i_neterrno
14515 eval $setvar
14516
14517 : see if netinet/tcp.h is available
14518 set netinet/tcp.h i_netinettcp
14519 eval $inhdr
14520
14521 : see if this is a poll.h system
14522 set poll.h i_poll
14523 eval $inhdr
14524
14525 : see if this is a prot.h system
14526 set prot.h i_prot
14527 eval $inhdr
14528
14529 echo " "
14530 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14531 $cat <<'EOSH' > Cppsym.know
14532 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14533 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14534 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14535 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14536 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14537 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14538 bull c cadmus clipper CMU COFF COMPILER_VERSION
14539 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14540 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14541 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14542 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14543 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14544 H3050R H3050RX hbullx20 hcx host_mips
14545 hp200 hp300 hp700 HP700 hp800 hp9000
14546 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14547 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14548 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14549 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14550 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14551 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14552 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14553 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14554 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14555 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14556 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14557 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14558 MATH_HAS_NO_SIDE_EFFECTS
14559 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14560 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14561 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14562 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14563 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14564 NetBSD news1500 news1700 news1800 news1900 news3700
14565 news700 news800 news900 NeXT NLS nonstopux ns16000 ns32000
14566 ns32016 ns32332 ns32k nsc32000
14567 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14568 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14569 pc532 pdp11 PGC PIC plexus PORTAR posix
14570 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14571 POSIX_C_SOURCE POSIX_SOURCE POWER
14572 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14573 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14574 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14575 sony sony_news sonyrisc sparc sparclite spectrum
14576 stardent stdc STDC_EXT stratos sun sun3 sun386
14577 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14578 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14579 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14580 sysV68 sysV88 Tek4132 Tek4300 titan
14581 tower tower32 tower32_200 tower32_600 tower32_700
14582 tower32_800 tower32_850 tss
14583 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14584 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14585 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14586 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14587 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14588 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14589 z8000
14590 EOSH
14591 # Maybe put other stuff here too.
14592 cat <<EOSH >>Cppsym.know
14593 $osname
14594 EOSH
14595 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14596 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14597 $cat Cppsym.know > Cppsym.c
14598 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | $sort | $uniq > Cppsym.know
14599 $rm -f Cppsym.a Cppsym.b Cppsym.c
14600 cat <<EOSH > Cppsym
14601 $startsh
14602 if $test \$# -gt 0; then
14603     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14604     if $test -s Cppsym.got; then
14605         $rm -f Cppsym.got
14606         exit 0
14607     fi
14608     $rm -f Cppsym.got
14609     exit 1
14610 else
14611     $tr " " "$trnl" | ./Cppsym.try
14612     exit 0
14613 fi
14614 EOSH
14615 chmod +x Cppsym
14616 $eunicefix Cppsym
14617 cat <<EOSH > Cppsym.try
14618 $startsh
14619 cat <<'EOCP' > try.c
14620 #include <stdio.h>
14621 int main() {
14622 EOCP
14623 $awk \\
14624 EOSH
14625 cat <<'EOSH' >> Cppsym.try
14626 'length($1) > 0 {
14627     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
14628     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
14629     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
14630     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
14631 }'       >> try.c
14632 echo '}' >> try.c
14633 EOSH
14634 cat <<EOSH >> Cppsym.try
14635 ccflags="$ccflags"
14636 case "$osname-$gccversion" in
14637 irix-) ccflags="\$ccflags -woff 1178" ;;
14638 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14639 esac
14640 $cc -o try $optimize \$ccflags $ldflags try.c $libs && ./try$exe_ext
14641 EOSH
14642 chmod +x Cppsym.try
14643 $eunicefix Cppsym.try
14644 ./Cppsym < Cppsym.know > Cppsym.true
14645 : now check the C compiler for additional symbols
14646 postprocess_cc_v=''
14647 case "$osname" in
14648 aix) postprocess_cc_v="|$tr , ' '" ;;
14649 esac
14650 $cat >ccsym <<EOS
14651 $startsh
14652 $cat >tmp.c <<EOF
14653 extern int foo;
14654 EOF
14655 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14656 do
14657         case "\$i" in
14658         -D*) echo "\$i" | $sed 's/^-D//';;
14659         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14660         esac
14661 done
14662 $rm -f try.c
14663 EOS
14664 postprocess_cc_v=''
14665 chmod +x ccsym
14666 $eunicefix ccsym
14667 ./ccsym > ccsym1.raw
14668 if $test -s ccsym1.raw; then
14669        $sort ccsym1.raw | $uniq >ccsym.raw
14670 else
14671        mv ccsym1.raw ccsym.raw
14672 fi
14673
14674 $awk '/\=/ { print $0; next }
14675         { print $0"=1" }' ccsym.raw >ccsym.list
14676 $awk '/\=/ { print $0; next }
14677         { print $0"=1" }' Cppsym.true >ccsym.true
14678 $comm -13 ccsym.true ccsym.list >ccsym.own
14679 $comm -12 ccsym.true ccsym.list >ccsym.com
14680 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14681 also=''
14682 if $test -z ccsym.raw; then
14683         echo "Your C compiler doesn't seem to define any symbols!" >&4
14684         echo " "
14685         echo "However, your C preprocessor defines the following symbols:"
14686         $cat Cppsym.true
14687         ccsymbols=''
14688         cppsymbols=`$cat Cppsym.true`
14689         cppsymbols=`echo $cppsymbols`
14690         cppccsymbols="$cppsymbols"
14691 else
14692         if $test -s ccsym.com; then
14693                 echo "Your C compiler and pre-processor define these symbols:"
14694                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14695                 also='also '
14696                 symbols='ones'
14697                 cppccsymbols=`$cat ccsym.com`
14698                 cppccsymbols=`echo $cppccsymbols`
14699                 $test "$silent" || sleep 1
14700         fi
14701         if $test -s ccsym.cpp; then
14702                 $test "$also" && echo " "
14703                 echo "Your C pre-processor ${also}defines the following symbols:"
14704                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14705                 also='further '
14706                 cppsymbols=`$cat ccsym.cpp`
14707                 cppsymbols=`echo $cppsymbols`
14708                 $test "$silent" || sleep 1
14709         fi
14710         if $test -s ccsym.own; then
14711                 $test "$also" && echo " "
14712                 echo "Your C compiler ${also}defines the following cpp symbols:"
14713                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14714                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14715                 ccsymbols=`$cat ccsym.own`
14716                 ccsymbols=`echo $ccsymbols`
14717                 $test "$silent" || sleep 1
14718         fi
14719 fi
14720 $rm -f ccsym* Cppsym.*
14721
14722 : see if this is a termio system
14723 val="$undef"
14724 val2="$undef"
14725 val3="$undef"
14726 if $test `./findhdr termios.h`; then
14727         set tcsetattr i_termios
14728         eval $inlibc
14729         val3="$i_termios"
14730 fi
14731 echo " "
14732 case "$val3" in
14733 "$define") echo "You have POSIX termios.h... good!" >&4;;
14734 *) if ./Cppsym pyr; then
14735                 case "`/bin/universe`" in
14736                 ucb) if $test `./findhdr sgtty.h`; then
14737                                 val2="$define"
14738                                 echo "<sgtty.h> found." >&4
14739                         else
14740                                 echo "System is pyramid with BSD universe."
14741                                 echo "<sgtty.h> not found--you could have problems." >&4
14742                         fi;;
14743                 *) if $test `./findhdr termio.h`; then
14744                                 val="$define"
14745                                 echo "<termio.h> found." >&4
14746                         else
14747                                 echo "System is pyramid with USG universe."
14748                                 echo "<termio.h> not found--you could have problems." >&4
14749                         fi;;
14750                 esac
14751         elif ./usg; then
14752                 if $test `./findhdr termio.h`; then
14753                         echo "<termio.h> found." >&4
14754                         val="$define"
14755                 elif $test `./findhdr sgtty.h`; then
14756                         echo "<sgtty.h> found." >&4
14757                         val2="$define"
14758                 else
14759 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14760                 fi
14761         else
14762                 if $test `./findhdr sgtty.h`; then
14763                         echo "<sgtty.h> found." >&4
14764                         val2="$define"
14765                 elif $test `./findhdr termio.h`; then
14766                         echo "<termio.h> found." >&4
14767                         val="$define"
14768                 else
14769 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14770                 fi
14771         fi;;
14772 esac
14773 set i_termio; eval $setvar
14774 val=$val2; set i_sgtty; eval $setvar
14775 val=$val3; set i_termios; eval $setvar
14776
14777 : see if this is a shadow.h system
14778 set shadow.h i_shadow
14779 eval $inhdr
14780
14781 : see if this is a socks.h system
14782 set socks.h i_socks
14783 eval $inhdr
14784
14785 : see if stdarg is available
14786 echo " "
14787 if $test `./findhdr stdarg.h`; then
14788         echo "<stdarg.h> found." >&4
14789         valstd="$define"
14790 else
14791         echo "<stdarg.h> NOT found." >&4
14792         valstd="$undef"
14793 fi
14794
14795 : see if varags is available
14796 echo " "
14797 if $test `./findhdr varargs.h`; then
14798         echo "<varargs.h> found." >&4
14799 else
14800         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14801 fi
14802
14803 : set up the varargs testing programs
14804 $cat > varargs.c <<EOP
14805 #ifdef I_STDARG
14806 #include <stdarg.h>
14807 #endif
14808 #ifdef I_VARARGS
14809 #include <varargs.h>
14810 #endif
14811
14812 #ifdef I_STDARG
14813 int f(char *p, ...)
14814 #else
14815 int f(va_alist)
14816 va_dcl
14817 #endif
14818 {
14819         va_list ap;
14820 #ifndef I_STDARG
14821         char *p;
14822 #endif
14823 #ifdef I_STDARG
14824         va_start(ap,p);
14825 #else
14826         va_start(ap);
14827         p = va_arg(ap, char *);
14828 #endif
14829         va_end(ap);
14830 }
14831 EOP
14832 $cat > varargs <<EOP
14833 $startsh
14834 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14835         echo "true"
14836 else
14837         echo "false"
14838 fi
14839 $rm -f varargs$_o
14840 EOP
14841 chmod +x varargs
14842
14843 : now check which varargs header should be included
14844 echo " "
14845 i_varhdr=''
14846 case "$valstd" in
14847 "$define")
14848         if `./varargs I_STDARG`; then
14849                 val='stdarg.h'
14850         elif `./varargs I_VARARGS`; then
14851                 val='varargs.h'
14852         fi
14853         ;;
14854 *)
14855         if `./varargs I_VARARGS`; then
14856                 val='varargs.h'
14857         fi
14858         ;;
14859 esac
14860 case "$val" in
14861 '')
14862 echo "I could not find the definition for va_dcl... You have problems..." >&4
14863         val="$undef"; set i_stdarg; eval $setvar
14864         val="$undef"; set i_varargs; eval $setvar
14865         ;;
14866 *) 
14867         set i_varhdr
14868         eval $setvar
14869         case "$i_varhdr" in
14870         stdarg.h)
14871                 val="$define"; set i_stdarg; eval $setvar
14872                 val="$undef"; set i_varargs; eval $setvar
14873                 ;;
14874         varargs.h)
14875                 val="$undef"; set i_stdarg; eval $setvar
14876                 val="$define"; set i_varargs; eval $setvar
14877                 ;;
14878         esac
14879         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14880 esac
14881 $rm -f varargs*
14882
14883 : see if stddef is available
14884 set stddef.h i_stddef
14885 eval $inhdr
14886
14887 : see if this is a sunmath.h system
14888 set sunmath.h i_sunmath
14889 eval $inhdr
14890
14891 : see if sys/access.h is available
14892 set sys/access.h i_sysaccess
14893 eval $inhdr
14894
14895 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14896 set sys/filio.h i_sysfilio
14897 eval $inhdr
14898 echo " "
14899 if $test `./findhdr sys/ioctl.h`; then
14900         val="$define"
14901         echo '<sys/ioctl.h> found.' >&4
14902 else
14903         val="$undef"
14904         if $test $i_sysfilio = "$define"; then
14905             echo '<sys/ioctl.h> NOT found.' >&4
14906         else
14907                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14908                 $test $i_termio = "$define" && xxx="termio.h"
14909                 $test $i_termios = "$define" && xxx="termios.h"
14910 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14911         fi
14912 fi
14913 set i_sysioctl
14914 eval $setvar
14915
14916
14917 : see if this is a syslog.h system
14918 set syslog.h i_syslog
14919 eval $inhdr
14920
14921
14922 : see if this is a sys/mode.h system
14923 set sys/mode.h i_sysmode
14924 eval $inhdr
14925
14926 : see if sys/resource.h has to be included
14927 set sys/resource.h i_sysresrc
14928 eval $inhdr
14929
14930 : see if sys/security.h is available
14931 set sys/security.h i_syssecrt
14932 eval $inhdr
14933
14934 : see if this is a sys/statvfs.h system
14935 set sys/statvfs.h i_sysstatvfs
14936 eval $inhdr
14937
14938 : see if this is a sys/uio.h system
14939 set sys/uio.h i_sysuio
14940 eval $inhdr
14941
14942 : see if this is a sys/un.h system
14943 set sys/un.h i_sysun
14944 eval $inhdr
14945
14946
14947 : see if this is a sys/utsname.h system
14948 set sys/utsname.h i_sysutsname
14949 eval $inhdr
14950
14951 : see if this is a syswait system
14952 set sys/wait.h i_syswait
14953 eval $inhdr
14954
14955 : see if this is a ustat.h system
14956 set ustat.h i_ustat
14957 eval $inhdr
14958
14959 : see if this is an utime system
14960 set utime.h i_utime
14961 eval $inhdr
14962
14963 : see if this is a values.h system
14964 set values.h i_values
14965 eval $inhdr
14966
14967 : see if this is a vfork system
14968 case "$d_vfork" in
14969 "$define")
14970         set vfork.h i_vfork
14971         eval $inhdr
14972         ;;
14973 *)
14974         i_vfork="$undef"
14975         ;;
14976 esac
14977
14978 : see if gdbm.h is available
14979 set gdbm.h t_gdbm
14980 eval $inhdr
14981 case "$t_gdbm" in
14982 $define)
14983         : see if gdbm_open exists
14984         set gdbm_open d_gdbm_open
14985         eval $inlibc
14986         case "$d_gdbm_open" in
14987         $undef)
14988                 t_gdbm="$undef"
14989                 echo "We won't be including <gdbm.h>"
14990                 ;;
14991         esac
14992         ;;
14993 esac
14994 val="$t_gdbm"
14995 set i_gdbm
14996 eval $setvar
14997
14998 echo " "
14999 echo "Looking for extensions..." >&4
15000 : If we are using the old config.sh, known_extensions may contain
15001 : old or inaccurate or duplicate values.
15002 known_extensions=''
15003 nonxs_extensions=''
15004 : We do not use find because it might not be available.
15005 : We do not just use MANIFEST because the user may have dropped
15006 : some additional extensions into the source tree and expect them
15007 : to be built.
15008
15009 : Function to recursively find available extensions, ignoring DynaLoader
15010 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
15011 find_extensions='
15012     for xxx in *; do
15013        case "$xxx" in
15014            DynaLoader|dynaload) ;;
15015            *)
15016            if $test -f $xxx/$xxx.xs; then
15017                known_extensions="$known_extensions $1$xxx";
15018            elif $test -f $xxx/Makefile.PL; then
15019                nonxs_extensions="$nonxs_extensions $1$xxx";
15020            else
15021                if $test -d $xxx -a $# -lt 10; then
15022                    set $1$xxx/ $*;
15023                    cd $xxx;
15024                    eval $find_extensions;
15025                    cd ..;
15026                    shift;
15027                fi;
15028            fi
15029            ;;
15030        esac;
15031     done'
15032 tdir=`pwd`
15033 cd $rsrc/ext
15034 set X
15035 shift
15036 eval $find_extensions
15037 set X $nonxs_extensions
15038 shift
15039 nonxs_extensions="$*"
15040 set X $known_extensions
15041 shift
15042 known_extensions="$*"
15043 cd $tdir
15044
15045 : Now see which are supported on this system.
15046 avail_ext=''
15047 for xxx in $known_extensions ; do
15048         case "$xxx" in
15049         DB_File|db_file)
15050                 case "$i_db" in
15051                 $define) avail_ext="$avail_ext $xxx" ;;
15052                 esac
15053                 ;;
15054         GDBM_File|gdbm_fil)
15055                 case "$i_gdbm" in 
15056                 $define) avail_ext="$avail_ext $xxx" ;;
15057                 esac
15058                 ;;
15059         NDBM_File|ndbm_fil)
15060                 case "$i_ndbm" in
15061                 $define)
15062                     case "$osname-$use64bitint" in
15063                     hpux-define)
15064                         case "$libs" in
15065                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
15066                         esac
15067                         ;;
15068                     *) avail_ext="$avail_ext $xxx" ;;
15069                     esac
15070                     ;;
15071                 esac
15072                 ;;
15073         ODBM_File|odbm_fil) 
15074                 case "${i_dbm}${i_rpcsvcdbm}" in
15075                 *"${define}"*)
15076                     case "$osname-$use64bitint" in
15077                     hpux-define)
15078                         case "$libs" in
15079                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
15080                         esac
15081                         ;;
15082                     *) avail_ext="$avail_ext $xxx" ;;
15083                     esac
15084                     ;;
15085                 esac
15086                 ;;
15087         POSIX|posix)
15088                 case "$useposix" in
15089                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15090                 esac
15091                 ;;
15092         Opcode|opcode)
15093                 case "$useopcode" in
15094                 true|define|y) avail_ext="$avail_ext $xxx" ;;
15095                 esac
15096                 ;;
15097         Socket|socket)
15098                 case "$d_socket" in 
15099                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15100                 esac
15101                 ;;
15102         Sys/Syslog|sys/syslog)
15103                 : XXX syslog requires socket
15104                 case "$d_socket" in 
15105                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15106                 esac
15107                 ;;
15108         Thread|thread)
15109                 case "$usethreads" in 
15110                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
15111                 esac
15112                 ;;
15113         IPC/SysV|ipc/sysv)
15114                 : XXX Do we need a useipcsysv variable here
15115                 case "${d_msg}${d_sem}${d_shm}" in 
15116                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
15117                 esac
15118                 ;;
15119         *)      avail_ext="$avail_ext $xxx"
15120                 ;;
15121         esac
15122 done
15123
15124 set X $avail_ext
15125 shift
15126 avail_ext="$*"
15127
15128 : Now see which nonxs extensions are supported on this system.
15129 : For now assume all are.
15130 nonxs_ext=''
15131 for xxx in $nonxs_extensions ; do
15132         case "$xxx" in
15133         *)      nonxs_ext="$nonxs_ext $xxx"
15134                 ;;
15135         esac
15136 done
15137
15138 set X $nonxs_ext
15139 shift
15140 nonxs_ext="$*"
15141
15142 case $usedl in
15143 $define)
15144         $cat <<EOM
15145 A number of extensions are supplied with $package.  You may choose to
15146 compile these extensions for dynamic loading (the default), compile
15147 them into the $package executable (static loading), or not include
15148 them at all.  Answer "none" to include no extensions.
15149 Note that DynaLoader is always built and need not be mentioned here.
15150
15151 EOM
15152         case "$dynamic_ext" in
15153         '') dflt="$avail_ext" ;;
15154         *)      dflt="$dynamic_ext"
15155                 # Perhaps we are reusing an old out-of-date config.sh.
15156                 case "$hint" in
15157                 previous)
15158                         if test X"$dynamic_ext" != X"$avail_ext"; then
15159                                 $cat <<EOM
15160 NOTICE:  Your previous config.sh list may be incorrect. 
15161 The extensions now available to you are 
15162         ${avail_ext}
15163 but the default list from your previous config.sh is
15164         ${dynamic_ext} 
15165
15166 EOM
15167                         fi
15168                         ;;
15169                 esac
15170                 ;;
15171         esac
15172         case "$dflt" in
15173         '')     dflt=none;;
15174         esac
15175         rp="What extensions do you wish to load dynamically?"
15176         . ./myread
15177         case "$ans" in
15178         none) dynamic_ext=' ' ;;
15179         *) dynamic_ext="$ans" ;;
15180         esac
15181
15182         case "$static_ext" in
15183         '')
15184                 : Exclude those already listed in dynamic linking
15185                 dflt=''
15186                 for xxx in $avail_ext; do
15187                         case " $dynamic_ext " in
15188                         *" $xxx "*) ;;
15189                         *) dflt="$dflt $xxx" ;;
15190                         esac
15191                 done
15192                 set X $dflt
15193                 shift
15194                 dflt="$*"
15195                 ;;
15196         *)  dflt="$static_ext" 
15197                 ;;
15198         esac
15199
15200         case "$dflt" in
15201         '')     dflt=none;;
15202         esac
15203         rp="What extensions do you wish to load statically?"
15204         . ./myread
15205         case "$ans" in
15206         none) static_ext=' ' ;;
15207         *) static_ext="$ans" ;;
15208         esac
15209         ;;
15210 *)
15211         $cat <<EOM
15212 A number of extensions are supplied with $package.  Answer "none" 
15213 to include no extensions. 
15214 Note that DynaLoader is always built and need not be mentioned here.
15215
15216 EOM
15217         case "$static_ext" in
15218         '') dflt="$avail_ext" ;;
15219         *)      dflt="$static_ext"
15220                 # Perhaps we are reusing an old out-of-date config.sh.
15221                 case "$hint" in
15222                 previous)
15223                         if test X"$static_ext" != X"$avail_ext"; then
15224                                 $cat <<EOM
15225 NOTICE:  Your previous config.sh list may be incorrect. 
15226 The extensions now available to you are 
15227         ${avail_ext}
15228 but the default list from your previous config.sh is
15229         ${static_ext} 
15230
15231 EOM
15232                         fi
15233                         ;;
15234                 esac
15235                 ;;
15236         esac
15237         : Exclude those that are not xs extensions
15238         case "$dflt" in
15239         '')     dflt=none;;
15240         esac
15241         rp="What extensions do you wish to include?"
15242         . ./myread
15243         case "$ans" in
15244         none) static_ext=' ' ;;
15245         *) static_ext="$ans" ;;
15246         esac
15247         ;;
15248 esac
15249
15250 set X $dynamic_ext $static_ext $nonxs_ext
15251 shift
15252 extensions="$*"
15253
15254 : Remove libraries needed only for extensions
15255 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15256 : The exception is SunOS 4.x, which needs them.
15257 case "${osname}X${osvers}" in
15258 sunos*X4*)
15259     perllibs="$libs"
15260     ;;
15261 *) case "$usedl" in
15262     $define|true|[yY]*)
15263             set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15264             shift
15265             perllibs="$*"
15266             ;;
15267     *)  perllibs="$libs"
15268             ;;
15269     esac
15270     ;;
15271 esac
15272
15273 : Remove build directory name from cppstdin so it can be used from
15274 : either the present location or the final installed location.
15275 echo " "
15276 : Get out of the UU directory to get correct path name.
15277 cd ..
15278 case "$cppstdin" in
15279 `pwd`/cppstdin)
15280         echo "Stripping down cppstdin path name"
15281         cppstdin=cppstdin
15282         ;;
15283 esac
15284 cd UU
15285
15286 : end of configuration questions
15287 echo " "
15288 echo "End of configuration questions."
15289 echo " "
15290
15291 : back to where it started
15292 if test -d ../UU; then
15293         cd ..
15294 fi
15295
15296 : configuration may be patched via a 'config.over' file
15297 if $test -f config.over; then
15298         echo " "
15299         dflt=y
15300         rp='I see a config.over file.  Do you wish to load it?'
15301         . UU/myread
15302         case "$ans" in
15303         n*) echo "OK, I'll ignore it.";;
15304         *)      . ./config.over
15305                 echo "Configuration override changes have been loaded."
15306                 ;;
15307         esac
15308 fi
15309
15310 : in case they want portability, strip down executable paths
15311 case "$d_portable" in
15312 "$define")
15313         echo " "
15314         echo "Stripping down executable paths..." >&4
15315         for file in $loclist $trylist; do
15316                 eval temp=\$$file
15317                 eval $file=`basename $temp`
15318         done
15319         ;;
15320 esac
15321
15322 : create config.sh file
15323 echo " "
15324 echo "Creating config.sh..." >&4
15325 $spitshell <<EOT >config.sh
15326 $startsh
15327 #
15328 # This file was produced by running the Configure script. It holds all the
15329 # definitions figured out by Configure. Should you modify one of these values,
15330 # do not forget to propagate your changes by running "Configure -der". You may
15331 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15332 #
15333
15334 # Package name      : $package
15335 # Source directory  : $src
15336 # Configuration time: $cf_time
15337 # Configured by     : $cf_by
15338 # Target system     : $myuname
15339
15340 Author='$Author'
15341 Date='$Date'
15342 Header='$Header'
15343 Id='$Id'
15344 Locker='$Locker'
15345 Log='$Log'
15346 Mcc='$Mcc'
15347 RCSfile='$RCSfile'
15348 Revision='$Revision'
15349 Source='$Source'
15350 State='$State'
15351 _a='$_a'
15352 _exe='$_exe'
15353 _o='$_o'
15354 afs='$afs'
15355 alignbytes='$alignbytes'
15356 ansi2knr='$ansi2knr'
15357 aphostname='$aphostname'
15358 api_revision='$api_revision'
15359 api_subversion='$api_subversion'
15360 api_version='$api_version'
15361 api_versionstring='$api_versionstring'
15362 ar='$ar'
15363 archlib='$archlib'
15364 archlibexp='$archlibexp'
15365 archname64='$archname64'
15366 archname='$archname'
15367 archobjs='$archobjs'
15368 awk='$awk'
15369 baserev='$baserev'
15370 bash='$bash'
15371 bin='$bin'
15372 bincompat5005='$bincompat5005'
15373 binexp='$binexp'
15374 bison='$bison'
15375 byacc='$byacc'
15376 byteorder='$byteorder'
15377 c='$c'
15378 castflags='$castflags'
15379 cat='$cat'
15380 cc='$cc'
15381 cccdlflags='$cccdlflags'
15382 ccdlflags='$ccdlflags'
15383 ccflags='$ccflags'
15384 ccflags_uselargefiles='$ccflags_uselargefiles'
15385 ccname='$ccname'
15386 ccsymbols='$ccsymbols'
15387 ccversion='$ccversion'
15388 cf_by='$cf_by'
15389 cf_email='$cf_email'
15390 cf_time='$cf_time'
15391 charsize='$charsize'
15392 chgrp='$chgrp'
15393 chmod='$chmod'
15394 chown='$chown'
15395 clocktype='$clocktype'
15396 comm='$comm'
15397 compress='$compress'
15398 contains='$contains'
15399 cp='$cp'
15400 cpio='$cpio'
15401 cpp='$cpp'
15402 cpp_stuff='$cpp_stuff'
15403 cppccsymbols='$cppccsymbols'
15404 cppflags='$cppflags'
15405 cpplast='$cpplast'
15406 cppminus='$cppminus'
15407 cpprun='$cpprun'
15408 cppstdin='$cppstdin'
15409 cppsymbols='$cppsymbols'
15410 crosscompile='$crosscompile'
15411 cryptlib='$cryptlib'
15412 csh='$csh'
15413 d_Gconvert='$d_Gconvert'
15414 d_PRIEUldbl='$d_PRIEUldbl'
15415 d_PRIFUldbl='$d_PRIFUldbl'
15416 d_PRIGUldbl='$d_PRIGUldbl'
15417 d_PRIXU64='$d_PRIXU64'
15418 d_PRId64='$d_PRId64'
15419 d_PRIeldbl='$d_PRIeldbl'
15420 d_PRIfldbl='$d_PRIfldbl'
15421 d_PRIgldbl='$d_PRIgldbl'
15422 d_PRIi64='$d_PRIi64'
15423 d_PRIo64='$d_PRIo64'
15424 d_PRIu64='$d_PRIu64'
15425 d_PRIx64='$d_PRIx64'
15426 d_SCNfldbl='$d_SCNfldbl'
15427 d_access='$d_access'
15428 d_accessx='$d_accessx'
15429 d_alarm='$d_alarm'
15430 d_archlib='$d_archlib'
15431 d_atolf='$d_atolf'
15432 d_atoll='$d_atoll'
15433 d_attribut='$d_attribut'
15434 d_bcmp='$d_bcmp'
15435 d_bcopy='$d_bcopy'
15436 d_bincompat5005='$d_bincompat5005'
15437 d_bsd='$d_bsd'
15438 d_bsdgetpgrp='$d_bsdgetpgrp'
15439 d_bsdsetpgrp='$d_bsdsetpgrp'
15440 d_bzero='$d_bzero'
15441 d_casti32='$d_casti32'
15442 d_castneg='$d_castneg'
15443 d_charvspr='$d_charvspr'
15444 d_chown='$d_chown'
15445 d_chroot='$d_chroot'
15446 d_chsize='$d_chsize'
15447 d_closedir='$d_closedir'
15448 d_const='$d_const'
15449 d_crypt='$d_crypt'
15450 d_csh='$d_csh'
15451 d_cuserid='$d_cuserid'
15452 d_dbl_dig='$d_dbl_dig'
15453 d_difftime='$d_difftime'
15454 d_dirnamlen='$d_dirnamlen'
15455 d_dlerror='$d_dlerror'
15456 d_dlopen='$d_dlopen'
15457 d_dlsymun='$d_dlsymun'
15458 d_dosuid='$d_dosuid'
15459 d_drand48proto='$d_drand48proto'
15460 d_dup2='$d_dup2'
15461 d_eaccess='$d_eaccess'
15462 d_endgrent='$d_endgrent'
15463 d_endhent='$d_endhent'
15464 d_endnent='$d_endnent'
15465 d_endpent='$d_endpent'
15466 d_endpwent='$d_endpwent'
15467 d_endsent='$d_endsent'
15468 d_eofnblk='$d_eofnblk'
15469 d_eunice='$d_eunice'
15470 d_fchmod='$d_fchmod'
15471 d_fchown='$d_fchown'
15472 d_fcntl='$d_fcntl'
15473 d_fd_macros='$d_fd_macros'
15474 d_fd_set='$d_fd_set'
15475 d_fds_bits='$d_fds_bits'
15476 d_fgetpos='$d_fgetpos'
15477 d_flexfnam='$d_flexfnam'
15478 d_flock='$d_flock'
15479 d_fork='$d_fork'
15480 d_fpathconf='$d_fpathconf'
15481 d_fpos64_t='$d_fpos64_t'
15482 d_frexpl='$d_frexpl'
15483 d_fs_data_s='$d_fs_data_s'
15484 d_fseeko='$d_fseeko'
15485 d_fsetpos='$d_fsetpos'
15486 d_fstatfs='$d_fstatfs'
15487 d_fstatvfs='$d_fstatvfs'
15488 d_ftello='$d_ftello'
15489 d_ftime='$d_ftime'
15490 d_getcwd='$d_getcwd'
15491 d_getespwnam='$d_getespwnam'
15492 d_getfsstat='$d_getfsstat'
15493 d_getgrent='$d_getgrent'
15494 d_getgrps='$d_getgrps'
15495 d_gethbyaddr='$d_gethbyaddr'
15496 d_gethbyname='$d_gethbyname'
15497 d_gethent='$d_gethent'
15498 d_gethname='$d_gethname'
15499 d_gethostprotos='$d_gethostprotos'
15500 d_getlogin='$d_getlogin'
15501 d_getmnt='$d_getmnt'
15502 d_getmntent='$d_getmntent'
15503 d_getnbyaddr='$d_getnbyaddr'
15504 d_getnbyname='$d_getnbyname'
15505 d_getnent='$d_getnent'
15506 d_getnetprotos='$d_getnetprotos'
15507 d_getpbyname='$d_getpbyname'
15508 d_getpbynumber='$d_getpbynumber'
15509 d_getpent='$d_getpent'
15510 d_getpgid='$d_getpgid'
15511 d_getpgrp2='$d_getpgrp2'
15512 d_getpgrp='$d_getpgrp'
15513 d_getppid='$d_getppid'
15514 d_getprior='$d_getprior'
15515 d_getprotoprotos='$d_getprotoprotos'
15516 d_getprpwnam='$d_getprpwnam'
15517 d_getpwent='$d_getpwent'
15518 d_getsbyname='$d_getsbyname'
15519 d_getsbyport='$d_getsbyport'
15520 d_getsent='$d_getsent'
15521 d_getservprotos='$d_getservprotos'
15522 d_getspnam='$d_getspnam'
15523 d_gettimeod='$d_gettimeod'
15524 d_gnulibc='$d_gnulibc'
15525 d_grpasswd='$d_grpasswd'
15526 d_hasmntopt='$d_hasmntopt'
15527 d_htonl='$d_htonl'
15528 d_iconv='$d_iconv'
15529 d_index='$d_index'
15530 d_inetaton='$d_inetaton'
15531 d_int64_t='$d_int64_t'
15532 d_isascii='$d_isascii'
15533 d_isnan='$d_isnan'
15534 d_isnanl='$d_isnanl'
15535 d_killpg='$d_killpg'
15536 d_lchown='$d_lchown'
15537 d_ldbl_dig='$d_ldbl_dig'
15538 d_link='$d_link'
15539 d_locconv='$d_locconv'
15540 d_lockf='$d_lockf'
15541 d_longdbl='$d_longdbl'
15542 d_longlong='$d_longlong'
15543 d_lseekproto='$d_lseekproto'
15544 d_lstat='$d_lstat'
15545 d_madvise='$d_madvise'
15546 d_mblen='$d_mblen'
15547 d_mbstowcs='$d_mbstowcs'
15548 d_mbtowc='$d_mbtowc'
15549 d_memchr='$d_memchr'
15550 d_memcmp='$d_memcmp'
15551 d_memcpy='$d_memcpy'
15552 d_memmove='$d_memmove'
15553 d_memset='$d_memset'
15554 d_mkdir='$d_mkdir'
15555 d_mkdtemp='$d_mkdtemp'
15556 d_mkfifo='$d_mkfifo'
15557 d_mkstemp='$d_mkstemp'
15558 d_mkstemps='$d_mkstemps'
15559 d_mktime='$d_mktime'
15560 d_mmap='$d_mmap'
15561 d_modfl='$d_modfl'
15562 d_mprotect='$d_mprotect'
15563 d_msg='$d_msg'
15564 d_msg_ctrunc='$d_msg_ctrunc'
15565 d_msg_dontroute='$d_msg_dontroute'
15566 d_msg_oob='$d_msg_oob'
15567 d_msg_peek='$d_msg_peek'
15568 d_msg_proxy='$d_msg_proxy'
15569 d_msgctl='$d_msgctl'
15570 d_msgget='$d_msgget'
15571 d_msgrcv='$d_msgrcv'
15572 d_msgsnd='$d_msgsnd'
15573 d_msync='$d_msync'
15574 d_munmap='$d_munmap'
15575 d_mymalloc='$d_mymalloc'
15576 d_nice='$d_nice'
15577 d_nv_preserves_uv='$d_nv_preserves_uv'
15578 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15579 d_off64_t='$d_off64_t'
15580 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15581 d_oldpthreads='$d_oldpthreads'
15582 d_oldsock='$d_oldsock'
15583 d_open3='$d_open3'
15584 d_pathconf='$d_pathconf'
15585 d_pause='$d_pause'
15586 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15587 d_phostname='$d_phostname'
15588 d_pipe='$d_pipe'
15589 d_poll='$d_poll'
15590 d_portable='$d_portable'
15591 d_pthread_yield='$d_pthread_yield'
15592 d_pwage='$d_pwage'
15593 d_pwchange='$d_pwchange'
15594 d_pwclass='$d_pwclass'
15595 d_pwcomment='$d_pwcomment'
15596 d_pwexpire='$d_pwexpire'
15597 d_pwgecos='$d_pwgecos'
15598 d_pwpasswd='$d_pwpasswd'
15599 d_pwquota='$d_pwquota'
15600 d_qgcvt='$d_qgcvt'
15601 d_quad='$d_quad'
15602 d_readdir='$d_readdir'
15603 d_readlink='$d_readlink'
15604 d_rename='$d_rename'
15605 d_rewinddir='$d_rewinddir'
15606 d_rmdir='$d_rmdir'
15607 d_safebcpy='$d_safebcpy'
15608 d_safemcpy='$d_safemcpy'
15609 d_sanemcmp='$d_sanemcmp'
15610 d_sched_yield='$d_sched_yield'
15611 d_scm_rights='$d_scm_rights'
15612 d_seekdir='$d_seekdir'
15613 d_select='$d_select'
15614 d_sem='$d_sem'
15615 d_semctl='$d_semctl'
15616 d_semctl_semid_ds='$d_semctl_semid_ds'
15617 d_semctl_semun='$d_semctl_semun'
15618 d_semget='$d_semget'
15619 d_semop='$d_semop'
15620 d_setegid='$d_setegid'
15621 d_seteuid='$d_seteuid'
15622 d_setgrent='$d_setgrent'
15623 d_setgrps='$d_setgrps'
15624 d_sethent='$d_sethent'
15625 d_setlinebuf='$d_setlinebuf'
15626 d_setlocale='$d_setlocale'
15627 d_setnent='$d_setnent'
15628 d_setpent='$d_setpent'
15629 d_setpgid='$d_setpgid'
15630 d_setpgrp2='$d_setpgrp2'
15631 d_setpgrp='$d_setpgrp'
15632 d_setprior='$d_setprior'
15633 d_setproctitle='$d_setproctitle'
15634 d_setpwent='$d_setpwent'
15635 d_setregid='$d_setregid'
15636 d_setresgid='$d_setresgid'
15637 d_setresuid='$d_setresuid'
15638 d_setreuid='$d_setreuid'
15639 d_setrgid='$d_setrgid'
15640 d_setruid='$d_setruid'
15641 d_setsent='$d_setsent'
15642 d_setsid='$d_setsid'
15643 d_setvbuf='$d_setvbuf'
15644 d_sfio='$d_sfio'
15645 d_shm='$d_shm'
15646 d_shmat='$d_shmat'
15647 d_shmatprototype='$d_shmatprototype'
15648 d_shmctl='$d_shmctl'
15649 d_shmdt='$d_shmdt'
15650 d_shmget='$d_shmget'
15651 d_sigaction='$d_sigaction'
15652 d_sigsetjmp='$d_sigsetjmp'
15653 d_socket='$d_socket'
15654 d_socklen_t='$d_socklen_t'
15655 d_sockpair='$d_sockpair'
15656 d_socks5_init='$d_socks5_init'
15657 d_sqrtl='$d_sqrtl'
15658 d_statblks='$d_statblks'
15659 d_statfs_f_flags='$d_statfs_f_flags'
15660 d_statfs_s='$d_statfs_s'
15661 d_statvfs='$d_statvfs'
15662 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15663 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15664 d_stdio_ptr_lval_nochange_cnt='$d_stdio_ptr_lval_nochange_cnt'
15665 d_stdio_ptr_lval_sets_cnt='$d_stdio_ptr_lval_sets_cnt'
15666 d_stdio_stream_array='$d_stdio_stream_array'
15667 d_stdiobase='$d_stdiobase'
15668 d_stdstdio='$d_stdstdio'
15669 d_strchr='$d_strchr'
15670 d_strcoll='$d_strcoll'
15671 d_strctcpy='$d_strctcpy'
15672 d_strerrm='$d_strerrm'
15673 d_strerror='$d_strerror'
15674 d_strtod='$d_strtod'
15675 d_strtol='$d_strtol'
15676 d_strtold='$d_strtold'
15677 d_strtoll='$d_strtoll'
15678 d_strtoul='$d_strtoul'
15679 d_strtoull='$d_strtoull'
15680 d_strtouq='$d_strtouq'
15681 d_strxfrm='$d_strxfrm'
15682 d_suidsafe='$d_suidsafe'
15683 d_symlink='$d_symlink'
15684 d_syscall='$d_syscall'
15685 d_sysconf='$d_sysconf'
15686 d_sysernlst='$d_sysernlst'
15687 d_syserrlst='$d_syserrlst'
15688 d_system='$d_system'
15689 d_tcgetpgrp='$d_tcgetpgrp'
15690 d_tcsetpgrp='$d_tcsetpgrp'
15691 d_telldir='$d_telldir'
15692 d_telldirproto='$d_telldirproto'
15693 d_time='$d_time'
15694 d_times='$d_times'
15695 d_truncate='$d_truncate'
15696 d_tzname='$d_tzname'
15697 d_umask='$d_umask'
15698 d_uname='$d_uname'
15699 d_union_semun='$d_union_semun'
15700 d_ustat='$d_ustat'
15701 d_vendorarch='$d_vendorarch'
15702 d_vendorbin='$d_vendorbin'
15703 d_vendorlib='$d_vendorlib'
15704 d_vfork='$d_vfork'
15705 d_void_closedir='$d_void_closedir'
15706 d_voidsig='$d_voidsig'
15707 d_voidtty='$d_voidtty'
15708 d_volatile='$d_volatile'
15709 d_vprintf='$d_vprintf'
15710 d_wait4='$d_wait4'
15711 d_waitpid='$d_waitpid'
15712 d_wcstombs='$d_wcstombs'
15713 d_wctomb='$d_wctomb'
15714 d_xenix='$d_xenix'
15715 date='$date'
15716 db_hashtype='$db_hashtype'
15717 db_prefixtype='$db_prefixtype'
15718 defvoidused='$defvoidused'
15719 direntrytype='$direntrytype'
15720 dlext='$dlext'
15721 dlsrc='$dlsrc'
15722 doublesize='$doublesize'
15723 drand01='$drand01'
15724 dynamic_ext='$dynamic_ext'
15725 eagain='$eagain'
15726 ebcdic='$ebcdic'
15727 echo='$echo'
15728 egrep='$egrep'
15729 emacs='$emacs'
15730 eunicefix='$eunicefix'
15731 exe_ext='$exe_ext'
15732 expr='$expr'
15733 extensions='$extensions'
15734 fflushNULL='$fflushNULL'
15735 fflushall='$fflushall'
15736 find='$find'
15737 firstmakefile='$firstmakefile'
15738 flex='$flex'
15739 fpossize='$fpossize'
15740 fpostype='$fpostype'
15741 freetype='$freetype'
15742 full_ar='$full_ar'
15743 full_csh='$full_csh'
15744 full_sed='$full_sed'
15745 gccosandvers='$gccosandvers'
15746 gccversion='$gccversion'
15747 gidformat='$gidformat'
15748 gidsign='$gidsign'
15749 gidsize='$gidsize'
15750 gidtype='$gidtype'
15751 glibpth='$glibpth'
15752 grep='$grep'
15753 groupcat='$groupcat'
15754 groupstype='$groupstype'
15755 gzip='$gzip'
15756 h_fcntl='$h_fcntl'
15757 h_sysfile='$h_sysfile'
15758 hint='$hint'
15759 hostcat='$hostcat'
15760 i16size='$i16size'
15761 i16type='$i16type'
15762 i32size='$i32size'
15763 i32type='$i32type'
15764 i64size='$i64size'
15765 i64type='$i64type'
15766 i8size='$i8size'
15767 i8type='$i8type'
15768 i_arpainet='$i_arpainet'
15769 i_bsdioctl='$i_bsdioctl'
15770 i_db='$i_db'
15771 i_dbm='$i_dbm'
15772 i_dirent='$i_dirent'
15773 i_dld='$i_dld'
15774 i_dlfcn='$i_dlfcn'
15775 i_fcntl='$i_fcntl'
15776 i_float='$i_float'
15777 i_gdbm='$i_gdbm'
15778 i_grp='$i_grp'
15779 i_iconv='$i_iconv'
15780 i_ieeefp='$i_ieeefp'
15781 i_inttypes='$i_inttypes'
15782 i_libutil='$i_libutil'
15783 i_limits='$i_limits'
15784 i_locale='$i_locale'
15785 i_machcthr='$i_machcthr'
15786 i_malloc='$i_malloc'
15787 i_math='$i_math'
15788 i_memory='$i_memory'
15789 i_mntent='$i_mntent'
15790 i_ndbm='$i_ndbm'
15791 i_netdb='$i_netdb'
15792 i_neterrno='$i_neterrno'
15793 i_netinettcp='$i_netinettcp'
15794 i_niin='$i_niin'
15795 i_poll='$i_poll'
15796 i_prot='$i_prot'
15797 i_pthread='$i_pthread'
15798 i_pwd='$i_pwd'
15799 i_rpcsvcdbm='$i_rpcsvcdbm'
15800 i_sfio='$i_sfio'
15801 i_sgtty='$i_sgtty'
15802 i_shadow='$i_shadow'
15803 i_socks='$i_socks'
15804 i_stdarg='$i_stdarg'
15805 i_stddef='$i_stddef'
15806 i_stdlib='$i_stdlib'
15807 i_string='$i_string'
15808 i_sunmath='$i_sunmath'
15809 i_sysaccess='$i_sysaccess'
15810 i_sysdir='$i_sysdir'
15811 i_sysfile='$i_sysfile'
15812 i_sysfilio='$i_sysfilio'
15813 i_sysin='$i_sysin'
15814 i_sysioctl='$i_sysioctl'
15815 i_syslog='$i_syslog'
15816 i_sysmman='$i_sysmman'
15817 i_sysmode='$i_sysmode'
15818 i_sysmount='$i_sysmount'
15819 i_sysndir='$i_sysndir'
15820 i_sysparam='$i_sysparam'
15821 i_sysresrc='$i_sysresrc'
15822 i_syssecrt='$i_syssecrt'
15823 i_sysselct='$i_sysselct'
15824 i_syssockio='$i_syssockio'
15825 i_sysstat='$i_sysstat'
15826 i_sysstatfs='$i_sysstatfs'
15827 i_sysstatvfs='$i_sysstatvfs'
15828 i_systime='$i_systime'
15829 i_systimek='$i_systimek'
15830 i_systimes='$i_systimes'
15831 i_systypes='$i_systypes'
15832 i_sysuio='$i_sysuio'
15833 i_sysun='$i_sysun'
15834 i_sysutsname='$i_sysutsname'
15835 i_sysvfs='$i_sysvfs'
15836 i_syswait='$i_syswait'
15837 i_termio='$i_termio'
15838 i_termios='$i_termios'
15839 i_time='$i_time'
15840 i_unistd='$i_unistd'
15841 i_ustat='$i_ustat'
15842 i_utime='$i_utime'
15843 i_values='$i_values'
15844 i_varargs='$i_varargs'
15845 i_varhdr='$i_varhdr'
15846 i_vfork='$i_vfork'
15847 ignore_versioned_solibs='$ignore_versioned_solibs'
15848 inc_version_list='$inc_version_list'
15849 inc_version_list_init='$inc_version_list_init'
15850 incpath='$incpath'
15851 inews='$inews'
15852 installarchlib='$installarchlib'
15853 installbin='$installbin'
15854 installman1dir='$installman1dir'
15855 installman3dir='$installman3dir'
15856 installprefix='$installprefix'
15857 installprefixexp='$installprefixexp'
15858 installprivlib='$installprivlib'
15859 installscript='$installscript'
15860 installsitearch='$installsitearch'
15861 installsitebin='$installsitebin'
15862 installsitelib='$installsitelib'
15863 installstyle='$installstyle'
15864 installusrbinperl='$installusrbinperl'
15865 installvendorarch='$installvendorarch'
15866 installvendorbin='$installvendorbin'
15867 installvendorlib='$installvendorlib'
15868 intsize='$intsize'
15869 ivdformat='$ivdformat'
15870 ivsize='$ivsize'
15871 ivtype='$ivtype'
15872 known_extensions='$known_extensions'
15873 ksh='$ksh'
15874 ld='$ld'
15875 lddlflags='$lddlflags'
15876 ldflags='$ldflags'
15877 ldflags_uselargefiles='$ldflags_uselargefiles'
15878 ldlibpthname='$ldlibpthname'
15879 less='$less'
15880 lib_ext='$lib_ext'
15881 libc='$libc'
15882 libperl='$libperl'
15883 libpth='$libpth'
15884 libs='$libs'
15885 libsdirs='$libsdirs'
15886 libsfiles='$libsfiles'
15887 libsfound='$libsfound'
15888 libspath='$libspath'
15889 libswanted='$libswanted'
15890 libswanted_uselargefiles='$libswanted_uselargefiles'
15891 line='$line'
15892 lint='$lint'
15893 lkflags='$lkflags'
15894 ln='$ln'
15895 lns='$lns'
15896 locincpth='$locincpth'
15897 loclibpth='$loclibpth'
15898 longdblsize='$longdblsize'
15899 longlongsize='$longlongsize'
15900 longsize='$longsize'
15901 lp='$lp'
15902 lpr='$lpr'
15903 ls='$ls'
15904 lseeksize='$lseeksize'
15905 lseektype='$lseektype'
15906 mail='$mail'
15907 mailx='$mailx'
15908 make='$make'
15909 make_set_make='$make_set_make'
15910 mallocobj='$mallocobj'
15911 mallocsrc='$mallocsrc'
15912 malloctype='$malloctype'
15913 man1dir='$man1dir'
15914 man1direxp='$man1direxp'
15915 man1ext='$man1ext'
15916 man3dir='$man3dir'
15917 man3direxp='$man3direxp'
15918 man3ext='$man3ext'
15919 mips_type='$mips_type'
15920 mkdir='$mkdir'
15921 mmaptype='$mmaptype'
15922 modetype='$modetype'
15923 more='$more'
15924 multiarch='$multiarch'
15925 mv='$mv'
15926 myarchname='$myarchname'
15927 mydomain='$mydomain'
15928 myhostname='$myhostname'
15929 myuname='$myuname'
15930 n='$n'
15931 netdb_hlen_type='$netdb_hlen_type'
15932 netdb_host_type='$netdb_host_type'
15933 netdb_name_type='$netdb_name_type'
15934 netdb_net_type='$netdb_net_type'
15935 nm='$nm'
15936 nm_opt='$nm_opt'
15937 nm_so_opt='$nm_so_opt'
15938 nonxs_ext='$nonxs_ext'
15939 nroff='$nroff'
15940 nvEUformat='$nvEUformat'
15941 nvFUformat='$nvFUformat'
15942 nvGUformat='$nvGUformat'
15943 nveformat='$nveformat'
15944 nvfformat='$nvfformat'
15945 nvgformat='$nvgformat'
15946 nvsize='$nvsize'
15947 nvtype='$nvtype'
15948 o_nonblock='$o_nonblock'
15949 obj_ext='$obj_ext'
15950 old_pthread_create_joinable='$old_pthread_create_joinable'
15951 optimize='$optimize'
15952 orderlib='$orderlib'
15953 osname='$osname'
15954 osvers='$osvers'
15955 otherlibdirs='$otherlibdirs'
15956 package='$package'
15957 pager='$pager'
15958 passcat='$passcat'
15959 patchlevel='$patchlevel'
15960 path_sep='$path_sep'
15961 perl5='$perl5'
15962 perl='$perl'
15963 perladmin='$perladmin'
15964 perllibs='$perllibs'
15965 perlpath='$perlpath'
15966 pg='$pg'
15967 phostname='$phostname'
15968 pidtype='$pidtype'
15969 plibpth='$plibpth'
15970 pm_apiversion='$pm_apiversion'
15971 pmake='$pmake'
15972 pr='$pr'
15973 prefix='$prefix'
15974 prefixexp='$prefixexp'
15975 privlib='$privlib'
15976 privlibexp='$privlibexp'
15977 prototype='$prototype'
15978 ptrsize='$ptrsize'
15979 quadkind='$quadkind'
15980 quadtype='$quadtype'
15981 randbits='$randbits'
15982 randfunc='$randfunc'
15983 randseedtype='$randseedtype'
15984 ranlib='$ranlib'
15985 rd_nodata='$rd_nodata'
15986 revision='$revision'
15987 rm='$rm'
15988 rmail='$rmail'
15989 runnm='$runnm'
15990 sPRIEUldbl='$sPRIEUldbl'
15991 sPRIFUldbl='$sPRIFUldbl'
15992 sPRIGUldbl='$sPRIGUldbl'
15993 sPRIXU64='$sPRIXU64'
15994 sPRId64='$sPRId64'
15995 sPRIeldbl='$sPRIeldbl'
15996 sPRIfldbl='$sPRIfldbl'
15997 sPRIgldbl='$sPRIgldbl'
15998 sPRIi64='$sPRIi64'
15999 sPRIo64='$sPRIo64'
16000 sPRIu64='$sPRIu64'
16001 sPRIx64='$sPRIx64'
16002 sSCNfldbl='$sSCNfldbl'
16003 sched_yield='$sched_yield'
16004 scriptdir='$scriptdir'
16005 scriptdirexp='$scriptdirexp'
16006 sed='$sed'
16007 seedfunc='$seedfunc'
16008 selectminbits='$selectminbits'
16009 selecttype='$selecttype'
16010 sendmail='$sendmail'
16011 sh='$sh'
16012 shar='$shar'
16013 sharpbang='$sharpbang'
16014 shmattype='$shmattype'
16015 shortsize='$shortsize'
16016 shrpenv='$shrpenv'
16017 shsharp='$shsharp'
16018 sig_count='$sig_count'
16019 sig_name='$sig_name'
16020 sig_name_init='$sig_name_init'
16021 sig_num='$sig_num'
16022 sig_num_init='$sig_num_init'
16023 signal_t='$signal_t'
16024 sitearch='$sitearch'
16025 sitearchexp='$sitearchexp'
16026 sitebin='$sitebin'
16027 sitebinexp='$sitebinexp'
16028 sitelib='$sitelib'
16029 sitelib_stem='$sitelib_stem'
16030 sitelibexp='$sitelibexp'
16031 siteprefix='$siteprefix'
16032 siteprefixexp='$siteprefixexp'
16033 sizesize='$sizesize'
16034 sizetype='$sizetype'
16035 sleep='$sleep'
16036 smail='$smail'
16037 so='$so'
16038 sockethdr='$sockethdr'
16039 socketlib='$socketlib'
16040 socksizetype='$socksizetype'
16041 sort='$sort'
16042 spackage='$spackage'
16043 spitshell='$spitshell'
16044 src='$src'
16045 ssizetype='$ssizetype'
16046 startperl='$startperl'
16047 startsh='$startsh'
16048 static_ext='$static_ext'
16049 stdchar='$stdchar'
16050 stdio_base='$stdio_base'
16051 stdio_bufsiz='$stdio_bufsiz'
16052 stdio_cnt='$stdio_cnt'
16053 stdio_filbuf='$stdio_filbuf'
16054 stdio_ptr='$stdio_ptr'
16055 stdio_stream_array='$stdio_stream_array'
16056 strings='$strings'
16057 submit='$submit'
16058 subversion='$subversion'
16059 sysman='$sysman'
16060 tail='$tail'
16061 tar='$tar'
16062 tbl='$tbl'
16063 tee='$tee'
16064 test='$test'
16065 timeincl='$timeincl'
16066 timetype='$timetype'
16067 touch='$touch'
16068 tr='$tr'
16069 trnl='$trnl'
16070 troff='$troff'
16071 u16size='$u16size'
16072 u16type='$u16type'
16073 u32size='$u32size'
16074 u32type='$u32type'
16075 u64size='$u64size'
16076 u64type='$u64type'
16077 u8size='$u8size'
16078 u8type='$u8type'
16079 uidformat='$uidformat'
16080 uidsign='$uidsign'
16081 uidsize='$uidsize'
16082 uidtype='$uidtype'
16083 uname='$uname'
16084 uniq='$uniq'
16085 uquadtype='$uquadtype'
16086 use5005threads='$use5005threads'
16087 use64bitall='$use64bitall'
16088 use64bitint='$use64bitint'
16089 usedl='$usedl'
16090 useithreads='$useithreads'
16091 uselargefiles='$uselargefiles'
16092 uselongdouble='$uselongdouble'
16093 usemorebits='$usemorebits'
16094 usemultiplicity='$usemultiplicity'
16095 usemymalloc='$usemymalloc'
16096 usenm='$usenm'
16097 useopcode='$useopcode'
16098 useperlio='$useperlio'
16099 useposix='$useposix'
16100 usesfio='$usesfio'
16101 useshrplib='$useshrplib'
16102 usesocks='$usesocks'
16103 usethreads='$usethreads'
16104 usevendorprefix='$usevendorprefix'
16105 usevfork='$usevfork'
16106 usrinc='$usrinc'
16107 uuname='$uuname'
16108 uvXUformat='$uvXUformat'
16109 uvoformat='$uvoformat'
16110 uvsize='$uvsize'
16111 uvtype='$uvtype'
16112 uvuformat='$uvuformat'
16113 uvxformat='$uvxformat'
16114 vendorarch='$vendorarch'
16115 vendorarchexp='$vendorarchexp'
16116 vendorbin='$vendorbin'
16117 vendorbinexp='$vendorbinexp'
16118 vendorlib='$vendorlib'
16119 vendorlib_stem='$vendorlib_stem'
16120 vendorlibexp='$vendorlibexp'
16121 vendorprefix='$vendorprefix'
16122 vendorprefixexp='$vendorprefixexp'
16123 version='$version'
16124 versiononly='$versiononly'
16125 vi='$vi'
16126 voidflags='$voidflags'
16127 xlibpth='$xlibpth'
16128 xs_apiversion='$xs_apiversion'
16129 zcat='$zcat'
16130 zip='$zip'
16131 EOT
16132
16133 : Add in command line options if available
16134 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16135
16136 : add special variables
16137 $test -f $src/patchlevel.h && \
16138 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16139 echo "CONFIGDOTSH=true" >>config.sh
16140
16141 : propagate old symbols
16142 if $test -f UU/config.sh; then
16143         <UU/config.sh $sort | $uniq >UU/oldconfig.sh
16144         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16145         $sort | $uniq -u >UU/oldsyms
16146         set X `cat UU/oldsyms`
16147         shift
16148         case $# in
16149         0) ;;
16150         *)
16151                 cat <<EOM
16152 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16153 EOM
16154                 echo "# Variables propagated from previous config.sh file." >>config.sh
16155                 for sym in `cat UU/oldsyms`; do
16156                         echo "    Propagating $hint variable "'$'"$sym..."
16157                         eval 'tmp="$'"${sym}"'"'
16158                         echo "$tmp" | \
16159                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16160                 done
16161                 ;;
16162         esac
16163 fi
16164
16165 : Finish up by extracting the .SH files
16166 case "$alldone" in
16167 exit)
16168         $rm -rf UU
16169         echo "Done."
16170         exit 0
16171         ;;
16172 cont)
16173         ;;
16174 '')
16175         dflt=''
16176         nostick=true
16177         $cat <<EOM
16178
16179 If you'd like to make any changes to the config.sh file before I begin
16180 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16181
16182 EOM
16183         rp="Press return or use a shell escape to edit config.sh:"
16184         . UU/myread
16185         nostick=''
16186         case "$ans" in
16187         '') ;;
16188         *) : in case they cannot read
16189                 sh 1>&4 -c "$ans";;
16190         esac
16191         ;;
16192 esac
16193
16194 : if this fails, just run all the .SH files by hand
16195 . ./config.sh
16196
16197 echo " "
16198 exec 1>&4
16199 . ./UU/extract
16200
16201 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16202         dflt=y
16203         case "$silent" in
16204         true) ;;
16205         *)
16206                 $cat <<EOM
16207
16208 Now you need to generate make dependencies by running "$make depend".
16209 You might prefer to run it in background: "$make depend > makedepend.out &"
16210 It can take a while, so you might not want to run it right now.
16211
16212 EOM
16213                 ;;
16214         esac
16215         rp="Run $make depend now?"
16216         . UU/myread
16217         case "$ans" in
16218         y*)
16219                 $make depend && echo "Now you must run '$make'."
16220                 ;;
16221         *)
16222                 echo "You must run '$make depend' then '$make'."
16223                 ;;
16224         esac
16225 elif test -f [Mm]akefile; then
16226         echo " "
16227         echo "Now you must run a $make."
16228 else
16229         echo "Done."
16230 fi
16231
16232 if $test -f Policy.sh; then
16233     $cat <<EOM
16234
16235 If you compile $package on a different machine or from a different object
16236 directory, copy the Policy.sh file from this object directory to the
16237 new one before you run Configure -- this will help you with most of
16238 the policy defaults.
16239
16240 EOM
16241 fi
16242 if $test -f config.msg; then
16243     echo "Hmm.  I also noted the following information while running:"
16244     echo " "
16245     $cat config.msg >&4
16246     $rm -f config.msg
16247 fi
16248 $rm -f kit*isdone ark*isdone
16249 $rm -rf UU
16250
16251 : End of Configure
16252