Re-instate Perl_utf8_to_uv without checking parameter - added in change 7075.
[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 Tue Sep 12 17:23:02 EET DST 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.org)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccname=''
164 ccversion=''
165 ccsymbols=''
166 cppccsymbols=''
167 cppsymbols=''
168 perllibs=''
169 dynamic_ext=''
170 extensions=''
171 known_extensions=''
172 nonxs_ext=''
173 static_ext=''
174 useopcode=''
175 useposix=''
176 d_bsd=''
177 d_eunice=''
178 d_xenix=''
179 eunicefix=''
180 Mcc=''
181 ar=''
182 awk=''
183 bash=''
184 bison=''
185 byacc=''
186 cat=''
187 chgrp=''
188 chmod=''
189 chown=''
190 comm=''
191 compress=''
192 cp=''
193 cpio=''
194 cpp=''
195 csh=''
196 date=''
197 echo=''
198 egrep=''
199 emacs=''
200 expr=''
201 find=''
202 flex=''
203 grep=''
204 gzip=''
205 inews=''
206 ksh=''
207 less=''
208 line=''
209 lint=''
210 ln=''
211 lp=''
212 lpr=''
213 ls=''
214 mail=''
215 mailx=''
216 make=''
217 mkdir=''
218 more=''
219 mv=''
220 nm=''
221 nroff=''
222 perl=''
223 pg=''
224 pmake=''
225 pr=''
226 rm=''
227 rmail=''
228 sed=''
229 sendmail=''
230 shar=''
231 sleep=''
232 smail=''
233 sort=''
234 submit=''
235 tail=''
236 tar=''
237 tbl=''
238 tee=''
239 test=''
240 touch=''
241 tr=''
242 troff=''
243 uname=''
244 uniq=''
245 uuname=''
246 vi=''
247 zcat=''
248 zip=''
249 full_ar=''
250 full_sed=''
251 libswanted=''
252 hint=''
253 myuname=''
254 osname=''
255 osvers=''
256 Author=''
257 Date=''
258 Header=''
259 Id=''
260 Locker=''
261 Log=''
262 RCSfile=''
263 Revision=''
264 Source=''
265 State=''
266 _a=''
267 _exe=''
268 _o=''
269 archobjs=''
270 exe_ext=''
271 firstmakefile=''
272 lib_ext=''
273 obj_ext=''
274 path_sep=''
275 afs=''
276 alignbytes=''
277 ansi2knr=''
278 archlib=''
279 archlibexp=''
280 d_archlib=''
281 installarchlib=''
282 archname=''
283 myarchname=''
284 d_atolf=''
285 d_atoll=''
286 baserev=''
287 bin=''
288 binexp=''
289 installbin=''
290 bincompat5005=''
291 d_bincompat5005=''
292 byteorder=''
293 cc=''
294 ccflags=''
295 cppflags=''
296 ldflags=''
297 lkflags=''
298 locincpth=''
299 optimize=''
300 cf_email=''
301 cf_by=''
302 cf_time=''
303 charsize=''
304 contains=''
305 cpp_stuff=''
306 cpplast=''
307 cppminus=''
308 cpprun=''
309 cppstdin=''
310 crosscompile=''
311 d_access=''
312 d_accessx=''
313 d_alarm=''
314 d_attribut=''
315 d_bcmp=''
316 d_bcopy=''
317 d_bzero=''
318 d_casti32=''
319 castflags=''
320 d_castneg=''
321 d_chown=''
322 d_chroot=''
323 d_chsize=''
324 d_closedir=''
325 d_void_closedir=''
326 d_const=''
327 cryptlib=''
328 d_crypt=''
329 d_csh=''
330 full_csh=''
331 d_cuserid=''
332 d_dbl_dig=''
333 d_difftime=''
334 d_dlerror=''
335 d_dlopen=''
336 d_dlsymun=''
337 d_dosuid=''
338 d_suidsafe=''
339 d_drand48proto=''
340 d_dup2=''
341 d_eaccess=''
342 d_endgrent=''
343 d_endhent=''
344 d_endnent=''
345 d_endpent=''
346 d_endpwent=''
347 d_endsent=''
348 d_fchmod=''
349 d_fchown=''
350 d_fcntl=''
351 d_fd_macros=''
352 d_fd_set=''
353 d_fds_bits=''
354 d_fgetpos=''
355 d_flexfnam=''
356 d_flock=''
357 d_fork=''
358 d_fpos64_t=''
359 d_frexpl=''
360 d_fs_data_s=''
361 d_fseeko=''
362 d_fsetpos=''
363 d_fstatfs=''
364 d_ftello=''
365 d_ftime=''
366 d_gettimeod=''
367 d_Gconvert=''
368 d_getcwd=''
369 d_getespwnam=''
370 d_getfsstat=''
371 d_getgrent=''
372 d_getgrps=''
373 d_gethbyaddr=''
374 d_gethbyname=''
375 d_gethent=''
376 aphostname=''
377 d_gethname=''
378 d_phostname=''
379 d_uname=''
380 d_gethostprotos=''
381 d_getlogin=''
382 d_getmnt=''
383 d_getmntent=''
384 d_getnbyaddr=''
385 d_getnbyname=''
386 d_getnent=''
387 d_getnetprotos=''
388 d_getpent=''
389 d_getpgid=''
390 d_getpgrp2=''
391 d_bsdgetpgrp=''
392 d_getpgrp=''
393 d_getppid=''
394 d_getprior=''
395 d_getpbyname=''
396 d_getpbynumber=''
397 d_getprotoprotos=''
398 d_getprpwnam=''
399 d_getpwent=''
400 d_getsent=''
401 d_getservprotos=''
402 d_getspnam=''
403 d_getsbyname=''
404 d_getsbyport=''
405 d_gnulibc=''
406 d_hasmntopt=''
407 d_htonl=''
408 d_iconv=''
409 d_inetaton=''
410 d_int64_t=''
411 d_isascii=''
412 d_isnan=''
413 d_isnanl=''
414 d_killpg=''
415 d_lchown=''
416 d_ldbl_dig=''
417 d_link=''
418 d_locconv=''
419 d_lockf=''
420 d_longdbl=''
421 longdblsize=''
422 d_longlong=''
423 longlongsize=''
424 d_lseekproto=''
425 d_lstat=''
426 d_madvise=''
427 d_mblen=''
428 d_mbstowcs=''
429 d_mbtowc=''
430 d_memchr=''
431 d_memcmp=''
432 d_memcpy=''
433 d_memmove=''
434 d_memset=''
435 d_mkdir=''
436 d_mkdtemp=''
437 d_mkfifo=''
438 d_mkstemp=''
439 d_mkstemps=''
440 d_mktime=''
441 d_mmap=''
442 mmaptype=''
443 d_modfl=''
444 d_mprotect=''
445 d_msg=''
446 d_msgctl=''
447 d_msgget=''
448 d_msgrcv=''
449 d_msgsnd=''
450 d_msync=''
451 d_munmap=''
452 d_nice=''
453 d_off64_t=''
454 d_open3=''
455 d_fpathconf=''
456 d_pathconf=''
457 d_pause=''
458 d_pipe=''
459 d_poll=''
460 d_portable=''
461 d_old_pthread_create_joinable=''
462 old_pthread_create_joinable=''
463 d_pthread_yield=''
464 d_sched_yield=''
465 sched_yield=''
466 d_qgcvt=''
467 d_readdir=''
468 d_rewinddir=''
469 d_seekdir=''
470 d_telldir=''
471 d_readlink=''
472 d_rename=''
473 d_rmdir=''
474 d_safebcpy=''
475 d_safemcpy=''
476 d_sanemcmp=''
477 d_select=''
478 d_sem=''
479 d_semctl=''
480 d_semget=''
481 d_semop=''
482 d_setegid=''
483 d_seteuid=''
484 d_setgrent=''
485 d_setgrps=''
486 d_sethent=''
487 d_setlinebuf=''
488 d_setlocale=''
489 d_setnent=''
490 d_setpent=''
491 d_setpgid=''
492 d_setpgrp2=''
493 d_bsdsetpgrp=''
494 d_setpgrp=''
495 d_setprior=''
496 d_setproctitle=''
497 d_setpwent=''
498 d_setregid=''
499 d_setresgid=''
500 d_setresuid=''
501 d_setreuid=''
502 d_setrgid=''
503 d_setruid=''
504 d_setsent=''
505 d_setsid=''
506 d_setvbuf=''
507 d_sfio=''
508 usesfio=''
509 d_shm=''
510 d_shmat=''
511 d_shmatprototype=''
512 shmattype=''
513 d_shmctl=''
514 d_shmdt=''
515 d_shmget=''
516 d_sigaction=''
517 d_sigsetjmp=''
518 d_msg_ctrunc=''
519 d_msg_dontroute=''
520 d_msg_oob=''
521 d_msg_peek=''
522 d_msg_proxy=''
523 d_oldsock=''
524 d_scm_rights=''
525 d_socket=''
526 d_sockpair=''
527 sockethdr=''
528 socketlib=''
529 d_socklen_t=''
530 d_socks5_init=''
531 d_sqrtl=''
532 d_statblks=''
533 d_statfs_f_flags=''
534 d_statfs_s=''
535 d_fstatvfs=''
536 d_statvfs=''
537 d_stdio_cnt_lval=''
538 d_stdio_ptr_lval=''
539 d_stdiobase=''
540 d_stdstdio=''
541 stdio_base=''
542 stdio_bufsiz=''
543 stdio_cnt=''
544 stdio_filbuf=''
545 stdio_ptr=''
546 d_index=''
547 d_strchr=''
548 d_strcoll=''
549 d_strctcpy=''
550 d_strerrm=''
551 d_strerror=''
552 d_sysernlst=''
553 d_syserrlst=''
554 d_strtod=''
555 d_strtol=''
556 d_strtold=''
557 d_strtoll=''
558 d_strtoul=''
559 d_strtoull=''
560 d_strtouq=''
561 d_strxfrm=''
562 d_symlink=''
563 d_syscall=''
564 d_sysconf=''
565 d_system=''
566 d_tcgetpgrp=''
567 d_tcsetpgrp=''
568 d_telldirproto=''
569 d_time=''
570 timetype=''
571 clocktype=''
572 d_times=''
573 d_truncate=''
574 d_tzname=''
575 d_umask=''
576 d_semctl_semid_ds=''
577 d_semctl_semun=''
578 d_union_semun=''
579 d_ustat=''
580 d_vfork=''
581 usevfork=''
582 d_voidsig=''
583 signal_t=''
584 d_volatile=''
585 d_charvspr=''
586 d_vprintf=''
587 d_wait4=''
588 d_waitpid=''
589 d_wcstombs=''
590 d_wctomb=''
591 dlext=''
592 cccdlflags=''
593 ccdlflags=''
594 dlsrc=''
595 ld=''
596 lddlflags=''
597 usedl=''
598 doublesize=''
599 ebcdic=''
600 fflushNULL=''
601 fflushall=''
602 fpossize=''
603 fpostype=''
604 gccosandvers=''
605 gccversion=''
606 gidformat=''
607 gidsign=''
608 gidsize=''
609 gidtype=''
610 groupstype=''
611 h_fcntl=''
612 h_sysfile=''
613 i_arpainet=''
614 db_hashtype=''
615 db_prefixtype=''
616 i_db=''
617 i_dbm=''
618 i_rpcsvcdbm=''
619 d_dirnamlen=''
620 direntrytype=''
621 i_dirent=''
622 i_dld=''
623 i_dlfcn=''
624 i_fcntl=''
625 i_float=''
626 i_gdbm=''
627 d_grpasswd=''
628 i_grp=''
629 i_iconv=''
630 i_ieeefp=''
631 i_inttypes=''
632 i_libutil=''
633 i_limits=''
634 i_locale=''
635 i_machcthr=''
636 i_malloc=''
637 i_math=''
638 i_memory=''
639 i_mntent=''
640 i_ndbm=''
641 i_netdb=''
642 i_neterrno=''
643 i_netinettcp=''
644 i_niin=''
645 i_sysin=''
646 i_poll=''
647 i_prot=''
648 i_pthread=''
649 d_pwage=''
650 d_pwchange=''
651 d_pwclass=''
652 d_pwcomment=''
653 d_pwexpire=''
654 d_pwgecos=''
655 d_pwpasswd=''
656 d_pwquota=''
657 i_pwd=''
658 i_sfio=''
659 i_shadow=''
660 i_socks=''
661 i_stddef=''
662 i_stdlib=''
663 i_string=''
664 strings=''
665 i_sunmath=''
666 i_sysaccess=''
667 i_sysdir=''
668 i_sysfile=''
669 d_voidtty=''
670 i_bsdioctl=''
671 i_sysfilio=''
672 i_sysioctl=''
673 i_syssockio=''
674 i_syslog=''
675 i_sysmman=''
676 i_sysmode=''
677 i_sysmount=''
678 i_sysndir=''
679 i_sysparam=''
680 i_sysresrc=''
681 i_syssecrt=''
682 i_sysselct=''
683 i_sysstat=''
684 i_sysstatfs=''
685 i_sysstatvfs=''
686 i_systimes=''
687 i_systypes=''
688 i_sysuio=''
689 i_sysun=''
690 i_sysutsname=''
691 i_sysvfs=''
692 i_syswait=''
693 i_sgtty=''
694 i_termio=''
695 i_termios=''
696 i_systime=''
697 i_systimek=''
698 i_time=''
699 timeincl=''
700 i_unistd=''
701 i_ustat=''
702 i_utime=''
703 i_values=''
704 i_stdarg=''
705 i_varargs=''
706 i_varhdr=''
707 i_vfork=''
708 inc_version_list=''
709 inc_version_list_init=''
710 installprefix=''
711 installprefixexp=''
712 installstyle=''
713 installusrbinperl=''
714 intsize=''
715 longsize=''
716 shortsize=''
717 libc=''
718 ldlibpthname=''
719 libperl=''
720 shrpenv=''
721 useshrplib=''
722 glibpth=''
723 libpth=''
724 loclibpth=''
725 plibpth=''
726 xlibpth=''
727 ignore_versioned_solibs=''
728 libs=''
729 libsdirs=''
730 libsfiles=''
731 libsfound=''
732 libspath=''
733 lns=''
734 d_PRIEUldbl=''
735 d_PRIFUldbl=''
736 d_PRIGUldbl=''
737 d_PRIeldbl=''
738 d_PRIfldbl=''
739 d_PRIgldbl=''
740 d_SCNfldbl=''
741 sPRIEUldbl=''
742 sPRIFUldbl=''
743 sPRIGUldbl=''
744 sPRIeldbl=''
745 sPRIfldbl=''
746 sPRIgldbl=''
747 sSCNfldbl=''
748 lseeksize=''
749 lseektype=''
750 make_set_make=''
751 d_mymalloc=''
752 freetype=''
753 mallocobj=''
754 mallocsrc=''
755 malloctype=''
756 usemymalloc=''
757 installman1dir=''
758 man1dir=''
759 man1direxp=''
760 man1ext=''
761 installman3dir=''
762 man3dir=''
763 man3direxp=''
764 man3ext=''
765 modetype=''
766 multiarch=''
767 mydomain=''
768 myhostname=''
769 phostname=''
770 c=''
771 n=''
772 d_eofnblk=''
773 eagain=''
774 o_nonblock=''
775 rd_nodata=''
776 netdb_hlen_type=''
777 netdb_host_type=''
778 netdb_name_type=''
779 netdb_net_type=''
780 groupcat=''
781 hostcat=''
782 passcat=''
783 orderlib=''
784 ranlib=''
785 d_perl_otherlibdirs=''
786 otherlibdirs=''
787 package=''
788 spackage=''
789 pager=''
790 api_revision=''
791 api_subversion=''
792 api_version=''
793 api_versionstring=''
794 patchlevel=''
795 revision=''
796 subversion=''
797 version=''
798 perl5=''
799 perladmin=''
800 perlpath=''
801 d_nv_preserves_uv=''
802 d_nv_preserves_uv_bits=''
803 i16size=''
804 i16type=''
805 i32size=''
806 i32type=''
807 i64size=''
808 i64type=''
809 i8size=''
810 i8type=''
811 ivsize=''
812 ivtype=''
813 nvsize=''
814 nvtype=''
815 u16size=''
816 u16type=''
817 u32size=''
818 u32type=''
819 u64size=''
820 u64type=''
821 u8size=''
822 u8type=''
823 uvsize=''
824 uvtype=''
825 ivdformat=''
826 nvEUformat=''
827 nvFUformat=''
828 nvGUformat=''
829 nveformat=''
830 nvfformat=''
831 nvgformat=''
832 uvXUformat=''
833 uvoformat=''
834 uvuformat=''
835 uvxformat=''
836 pidtype=''
837 prefix=''
838 prefixexp=''
839 installprivlib=''
840 privlib=''
841 privlibexp=''
842 prototype=''
843 ptrsize=''
844 d_PRIXU64=''
845 d_PRId64=''
846 d_PRIi64=''
847 d_PRIo64=''
848 d_PRIu64=''
849 d_PRIx64=''
850 sPRIXU64=''
851 sPRId64=''
852 sPRIi64=''
853 sPRIo64=''
854 sPRIu64=''
855 sPRIx64=''
856 d_quad=''
857 quadkind=''
858 quadtype=''
859 uquadtype=''
860 drand01=''
861 randbits=''
862 randfunc=''
863 randseedtype=''
864 seedfunc=''
865 installscript=''
866 scriptdir=''
867 scriptdirexp=''
868 selectminbits=''
869 selecttype=''
870 sh=''
871 sig_count=''
872 sig_name=''
873 sig_name_init=''
874 sig_num=''
875 sig_num_init=''
876 installsitearch=''
877 sitearch=''
878 sitearchexp=''
879 installsitebin=''
880 sitebin=''
881 sitebinexp=''
882 installsitelib=''
883 sitelib=''
884 sitelib_stem=''
885 sitelibexp=''
886 siteprefix=''
887 siteprefixexp=''
888 sizesize=''
889 sizetype=''
890 so=''
891 socksizetype=''
892 sharpbang=''
893 shsharp=''
894 spitshell=''
895 src=''
896 ssizetype=''
897 startperl=''
898 startsh=''
899 stdchar=''
900 d_stdio_stream_array=''
901 stdio_stream_array=''
902 sysman=''
903 trnl=''
904 uidformat=''
905 uidsign=''
906 uidsize=''
907 uidtype=''
908 archname64=''
909 use64bitall=''
910 use64bitint=''
911 ccflags_uselargefiles=''
912 ldflags_uselargefiles=''
913 libswanted_uselargefiles=''
914 uselargefiles=''
915 uselongdouble=''
916 usemorebits=''
917 usemultiplicity=''
918 nm_opt=''
919 nm_so_opt=''
920 runnm=''
921 usenm=''
922 useperlio=''
923 usesocks=''
924 d_oldpthreads=''
925 use5005threads=''
926 useithreads=''
927 usethreads=''
928 incpath=''
929 mips_type=''
930 usrinc=''
931 d_vendorarch=''
932 installvendorarch=''
933 vendorarch=''
934 vendorarchexp=''
935 d_vendorbin=''
936 installvendorbin=''
937 vendorbin=''
938 vendorbinexp=''
939 d_vendorlib=''
940 installvendorlib=''
941 vendorlib=''
942 vendorlib_stem=''
943 vendorlibexp=''
944 usevendorprefix=''
945 vendorprefix=''
946 vendorprefixexp=''
947 defvoidused=''
948 voidflags=''
949 pm_apiversion=''
950 xs_apiversion=''
951 CONFIG=''
952
953 define='define'
954 undef='undef'
955 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
956 rmlist=''
957
958 : We must find out about Eunice early
959 eunicefix=':'
960 if test -f /etc/unixtovms; then
961         eunicefix=/etc/unixtovms
962 fi
963 if test -f /etc/unixtovms.exe; then
964         eunicefix=/etc/unixtovms.exe
965 fi
966
967 i_whoami=''
968 ccname=''
969 ccversion=''
970 perllibs=''
971 : set useposix=false in your hint file to disable the POSIX extension.
972 useposix=true
973 : set useopcode=false in your hint file to disable the Opcode extension.
974 useopcode=true
975 : Trailing extension.  Override this in a hint file, if needed.
976 _exe=''
977 : Extra object files, if any, needed on this platform.
978 archobjs=''
979 archname=''
980 : Possible local include directories to search.
981 : Set locincpth to "" in a hint file to defeat local include searches.
982 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
983 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
984 :
985 : no include file wanted by default
986 inclwanted=''
987
988 groupstype=''
989 : change the next line if compiling for Xenix/286 on Xenix/386
990 xlibpth='/usr/lib/386 /lib/386'
991 : Possible local library directories to search.
992 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
993 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
994
995 : general looking path for locating libraries
996 glibpth="/lib /usr/lib $xlibpth"
997 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
998 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
999 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1000
1001 : Private path used by Configure to find libraries.  Its value
1002 : is prepended to libpth. This variable takes care of special
1003 : machines, like the mips.  Usually, it should be empty.
1004 plibpth=''
1005
1006 : default library list
1007 libswanted=''
1008 : some systems want to use only the non-versioned libso:s
1009 ignore_versioned_solibs=''
1010 archname64=''
1011 ccflags_uselargefiles=''
1012 ldflags_uselargefiles=''
1013 libswanted_uselargefiles=''
1014 : set usemultiplicity on the Configure command line to enable multiplicity.
1015 : set usesocks on the Configure command line to enable socks.
1016 : set usethreads on the Configure command line to enable threads.
1017 : full support for void wanted by default
1018 defvoidused=15
1019
1020 : List of libraries we want.
1021 : If anyone needs -lnet, put it in a hint file.
1022 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
1023 libswanted="$libswanted dld ld sun m c cposix posix"
1024 libswanted="$libswanted ndir dir crypt sec"
1025 libswanted="$libswanted ucb bsd BSD PW x iconv util"
1026 : We probably want to search /usr/shlib before most other libraries.
1027 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1028 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1029 glibpth="/usr/shlib $glibpth"
1030 : Do not use vfork unless overridden by a hint file.
1031 usevfork=false
1032
1033 : Find the basic shell for Bourne shell scripts
1034 case "$sh" in
1035 '')
1036         case "$SYSTYPE" in
1037         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1038         *) xxx='/bin/sh';;
1039         esac
1040         if test -f "$xxx"; then
1041                 sh="$xxx"
1042         else
1043                 : Build up a list and do a single loop so we can 'break' out.
1044                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1045                 for xxx in sh bash ksh pdksh ash; do
1046                         for p in $pth; do
1047                                 try="$try ${p}/${xxx}"
1048                         done
1049                 done
1050                 for xxx in $try; do
1051                         if test -f "$xxx"; then
1052                                 sh="$xxx";
1053                                 break
1054                         elif test -f "$xxx.exe"; then
1055                                 sh="$xxx";
1056                                 break
1057                         fi
1058                 done
1059         fi
1060         ;;
1061 esac
1062
1063 case "$sh" in
1064 '')     cat <<EOM >&2
1065 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1066
1067 Usually it's in /bin/sh.  How did you even get this far?
1068 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1069 we'll try to straighten this all out.
1070 EOM
1071         exit 1
1072         ;;
1073 esac
1074
1075 : see if sh knows # comments
1076 if `$sh -c '#' >/dev/null 2>&1`; then
1077         shsharp=true
1078         spitshell=cat
1079         xcat=/bin/cat
1080         test -f $xcat || xcat=/usr/bin/cat
1081         echo "#!$xcat" >try
1082         $eunicefix try
1083         chmod +x try
1084         ./try > today
1085         if test -s today; then
1086                 sharpbang='#!'
1087         else
1088                 echo "#! $xcat" > try
1089                 $eunicefix try
1090                 chmod +x try
1091                 ./try > today
1092                 if test -s today; then
1093                         sharpbang='#! '
1094                 else
1095                         sharpbang=': use '
1096                 fi
1097         fi
1098 else
1099         echo " "
1100         echo "Your $sh doesn't grok # comments--I will strip them later on."
1101         shsharp=false
1102         cd ..
1103         echo "exec grep -v '^[  ]*#'" >spitshell
1104         chmod +x spitshell
1105         $eunicefix spitshell
1106         spitshell=`pwd`/spitshell
1107         cd UU
1108         echo "I presume that if # doesn't work, #! won't work either!"
1109         sharpbang=': use '
1110 fi
1111 rm -f try today
1112
1113 : figure out how to guarantee sh startup
1114 case "$startsh" in
1115 '') startsh=${sharpbang}${sh} ;;
1116 *)
1117 esac
1118 cat >try <<EOSS
1119 $startsh
1120 set abc
1121 test "$?abc" != 1
1122 EOSS
1123
1124 chmod +x try
1125 $eunicefix try
1126 if ./try; then
1127         : echo "Yup, it does."
1128 else
1129         echo "Hmm... '$startsh' does not guarantee sh startup..."
1130         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1131 fi
1132 rm -f try
1133
1134
1135 : Save command line options in file UU/cmdline.opt for later use in
1136 : generating config.sh.
1137 cat > cmdline.opt <<EOSH
1138 # Configure command line arguments.
1139 config_arg0='$0'
1140 config_args='$*'
1141 config_argc=$#
1142 EOSH
1143 argn=1
1144 for arg in "$@"; do
1145         cat >>cmdline.opt <<EOSH
1146 config_arg$argn='$arg'
1147 EOSH
1148         argn=`expr $argn + 1`
1149 done
1150
1151 : produce awk script to parse command line options
1152 cat >options.awk <<'EOF'
1153 BEGIN {
1154         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1155
1156         len = length(optstr);
1157         for (i = 1; i <= len; i++) {
1158                 c = substr(optstr, i, 1);
1159                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1160                 if (a == ":") {
1161                         arg[c] = 1;
1162                         i++;
1163                 }
1164                 opt[c] = 1;
1165         }
1166 }
1167 {
1168         expect = 0;
1169         str = $0;
1170         if (substr(str, 1, 1) != "-") {
1171                 printf("'%s'\n", str);
1172                 next;
1173         }
1174         len = length($0);
1175         for (i = 2; i <= len; i++) {
1176                 c = substr(str, i, 1);
1177                 if (!opt[c]) {
1178                         printf("-%s\n", substr(str, i));
1179                         next;
1180                 }
1181                 printf("-%s\n", c);
1182                 if (arg[c]) {
1183                         if (i < len)
1184                                 printf("'%s'\n", substr(str, i + 1));
1185                         else
1186                                 expect = 1;
1187                         next;
1188                 }
1189         }
1190 }
1191 END {
1192         if (expect)
1193                 print "?";
1194 }
1195 EOF
1196
1197 : process the command line options
1198 set X `for arg in "$@"; do echo "X$arg"; done |
1199         sed -e s/X// | awk -f options.awk`
1200 eval "set $*"
1201 shift
1202 rm -f options.awk
1203
1204 : set up default values
1205 fastread=''
1206 reuseval=false
1207 config_sh=''
1208 alldone=''
1209 error=''
1210 silent=''
1211 extractsh=''
1212 override=''
1213 knowitall=''
1214 rm -f optdef.sh posthint.sh
1215 cat >optdef.sh <<EOS
1216 $startsh
1217 EOS
1218
1219
1220 : option parsing
1221 while test $# -gt 0; do
1222         case "$1" in
1223         -d) shift; fastread=yes;;
1224         -e) shift; alldone=cont;;
1225         -f)
1226                 shift
1227                 cd ..
1228                 if test -r "$1"; then
1229                         config_sh="$1"
1230                 else
1231                         echo "$me: cannot read config file $1." >&2
1232                         error=true
1233                 fi
1234                 cd UU
1235                 shift;;
1236         -h) shift; error=true;;
1237         -r) shift; reuseval=true;;
1238         -s) shift; silent=true; realsilent=true;;
1239         -E) shift; alldone=exit;;
1240         -K) shift; knowitall=true;;
1241         -O) shift; override=true;;
1242         -S) shift; silent=true; extractsh=true;;
1243         -D)
1244                 shift
1245                 case "$1" in
1246                 *=)
1247                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1248                         echo "$me: ignoring -D $1" >&2
1249                         ;;
1250                 *=*) echo "$1" | \
1251                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1252                 *) echo "$1='define'" >> optdef.sh;;
1253                 esac
1254                 shift
1255                 ;;
1256         -U)
1257                 shift
1258                 case "$1" in
1259                 *=) echo "$1" >> optdef.sh;;
1260                 *=*)
1261                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1262                         echo "$me: ignoring -U $1" >&2
1263                         ;;
1264                 *) echo "$1='undef'" >> optdef.sh;;
1265                 esac
1266                 shift
1267                 ;;
1268         -A)
1269             shift
1270             xxx=''
1271             yyy="$1"
1272             zzz=''
1273             uuu=undef
1274             case "$yyy" in
1275             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1276                  case "$zzz" in
1277                  *:*) zzz='' ;;
1278                  *)   xxx=append
1279                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1280                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1281                  esac
1282                  ;;
1283             esac
1284             case "$xxx" in
1285             '')  case "$yyy" in
1286                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1287                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1288                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1289                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1290                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1291                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1292                  esac
1293                  ;;       
1294             esac
1295             case "$xxx" in
1296             append)
1297                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1298             clear)
1299                 echo "$yyy=''"                  >> posthint.sh ;;
1300             define)
1301                 case "$zzz" in
1302                 '') zzz=define ;;
1303                 esac
1304                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1305             eval)
1306                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1307             prepend)
1308                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1309             undef)
1310                 case "$zzz" in
1311                 '') zzz="$uuu" ;;
1312                 esac
1313                 echo "$yyy=$zzz"                >> posthint.sh ;;
1314             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1315             esac
1316             shift
1317             ;;
1318         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1319             exit 0;;
1320         --) break;;
1321         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1322         *) break;;
1323         esac
1324 done
1325
1326 case "$error" in
1327 true)
1328         cat >&2 <<EOM
1329 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1330                  [-U symbol] [-U symbol=] [-A command:symbol...]
1331   -d : use defaults for all answers.
1332   -e : go on without questioning past the production of config.sh.
1333   -f : specify an alternate default configuration file.
1334   -h : print this help message and exit (with an error status).
1335   -r : reuse C symbols value if possible (skips costly nm extraction).
1336   -s : silent mode, only echoes questions and essential information.
1337   -D : define symbol to have some value:
1338          -D symbol         symbol gets the value 'define'
1339          -D symbol=value   symbol gets the value 'value'
1340   -E : stop at the end of questions, after having produced config.sh.
1341   -K : do not use unless you know what you are doing.
1342   -O : let -D and -U override definitions from loaded configuration file.
1343   -S : perform variable substitutions on all .SH files (can mix with -f)
1344   -U : undefine symbol:
1345          -U symbol    symbol gets the value 'undef'
1346          -U symbol=   symbol gets completely empty
1347   -A : manipulate symbol after the platform specific hints have been applied:
1348          -A symbol=value                append " "value to symbol
1349          -A append:symbol=value         append value to symbol
1350          -A define:symbol=value         define symbol to have value
1351          -A clear:symbol                define symbol to be ''
1352          -A define:symbol               define symbol to be 'define'
1353          -A eval:symbol=value           define symbol to be eval of value
1354          -A prepend:symbol=value        prepend value to symbol
1355          -A undef:symbol                define symbol to be 'undef'
1356          -A undef:symbol=               define symbol to be ''
1357   -V : print version number and exit (with a zero status).
1358 EOM
1359         exit 1
1360         ;;
1361 esac
1362
1363 : Sanity checks
1364 case "$fastread$alldone" in
1365 yescont|yesexit) ;;
1366 *)
1367         case "$extractsh" in
1368         true) ;;
1369         *)
1370                 if test ! -t 0; then
1371                         echo "Say 'sh Configure', not 'sh <Configure'"
1372                         exit 1
1373                 fi
1374                 ;;
1375         esac
1376         ;;
1377 esac
1378
1379 exec 4>&1
1380 case "$silent" in
1381 true) exec 1>/dev/null;;
1382 esac
1383
1384 : run the defines and the undefines, if any, but leave the file out there...
1385 touch optdef.sh
1386 . ./optdef.sh
1387 : create the posthint manipulation script and leave the file out there...
1388 touch posthint.sh
1389
1390 : set package name
1391 package=perl5
1392 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1393 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1394 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1395 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1396 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1397 esac
1398
1399 : Some greps do not return status, grrr.
1400 echo "grimblepritz" >grimble
1401 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1402         contains=contains
1403 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1404         contains=grep
1405 else
1406         contains=contains
1407 fi
1408 rm -f grimble
1409 : the following should work in any shell
1410 case "$contains" in
1411 contains*)
1412         echo " "
1413         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1414         cat >contains <<'EOSS'
1415 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1416 EOSS
1417 chmod +x contains
1418 esac
1419
1420 : Find the path to the source tree
1421 case "$src" in
1422 '') case "$0" in
1423     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1424          case "$src" in
1425          /*)    ;;
1426          *)     src=`cd ../$src && pwd` ;;
1427          esac
1428          ;;
1429     *)   src='.';;
1430     esac;;
1431 esac
1432 case "$src" in
1433 '')     src=/
1434         rsrc=/
1435         ;;
1436 /*) rsrc="$src";;
1437 *) rsrc="../$src";;
1438 esac
1439 if test -f $rsrc/Configure && \
1440         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1441 then
1442    : found it, so we are ok.
1443 else
1444         rsrc=''
1445         for src in . .. ../.. ../../.. ../../../..; do
1446                 if test -f ../$src/Configure && \
1447                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1448                 then
1449                         rsrc=../$src
1450                         break
1451                 fi
1452         done
1453 fi
1454 case "$rsrc" in
1455 '')
1456         cat <<EOM >&4
1457
1458 Sorry, I can't seem to locate the source dir for $package.  Please start
1459 Configure with an explicit path -- i.e. /some/path/Configure.
1460
1461 EOM
1462         exit 1
1463         ;;
1464 ../.)   rsrc='..';;
1465 *)
1466         echo " "
1467         echo "Sources for $package found in \"$src\"." >&4
1468         ;;
1469 esac
1470
1471 : script used to extract .SH files with variable substitutions
1472 cat >extract <<'EOS'
1473 CONFIGDOTSH=true
1474 echo "Doing variable substitutions on .SH files..."
1475 if test -f $src/MANIFEST; then
1476         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1477 else
1478         echo "(Looking for .SH files under the source directory.)"
1479         set x `(cd $src; find . -name "*.SH" -print)`
1480 fi
1481 shift
1482 case $# in
1483 0) set x `(cd $src; echo *.SH)`; shift;;
1484 esac
1485 if test ! -f $src/$1; then
1486         shift
1487 fi
1488 mkdir_p='
1489 name=$1;
1490 create="";
1491 while test $name; do
1492         if test ! -d "$name"; then
1493                 create="$name $create";
1494                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1495                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1496         else
1497                 name="";
1498         fi;
1499 done;
1500 for file in $create; do
1501         mkdir $file;
1502 done
1503 '
1504 for file in $*; do
1505         case "$src" in
1506         ".")
1507                 case "$file" in
1508                 */*)
1509                         dir=`expr X$file : 'X\(.*\)/'`
1510                         file=`expr X$file : 'X.*/\(.*\)'`
1511                         (cd $dir && . ./$file)
1512                         ;;
1513                 *)
1514                         . ./$file
1515                         ;;
1516                 esac
1517                 ;;
1518         *)
1519                 case "$file" in
1520                 */*)
1521                         dir=`expr X$file : 'X\(.*\)/'`
1522                         file=`expr X$file : 'X.*/\(.*\)'`
1523                         (set x $dir; shift; eval $mkdir_p)
1524                         sh <$src/$dir/$file
1525                         ;;
1526                 *)
1527                         sh <$src/$file
1528                         ;;
1529                 esac
1530                 ;;
1531         esac
1532 done
1533 if test -f $src/config_h.SH; then
1534         if test ! -f config.h; then
1535         : oops, they left it out of MANIFEST, probably, so do it anyway.
1536         . $src/config_h.SH
1537         fi
1538 fi
1539 EOS
1540
1541 : extract files and exit if asked to do so
1542 case "$extractsh" in
1543 true)
1544         case "$realsilent" in
1545         true) ;;
1546         *) exec 1>&4;;
1547         esac
1548         case "$config_sh" in
1549         '') config_sh='config.sh';;
1550         esac
1551         echo " "
1552         echo "Fetching answers from $config_sh..."
1553         cd ..
1554         . $config_sh
1555         test "$override" && . ./optdef.sh
1556         echo " "
1557         . UU/extract
1558         rm -rf UU
1559         echo "Done."
1560         exit 0
1561         ;;
1562 esac
1563
1564 : Eunice requires " " instead of "", can you believe it
1565 echo " "
1566 : Here we go...
1567 echo "Beginning of configuration questions for $package."
1568
1569 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1570
1571 : first determine how to suppress newline on echo command
1572 echo " "
1573 echo "Checking echo to see how to suppress newlines..."
1574 (echo "hi there\c" ; echo " ") >.echotmp
1575 if $contains c .echotmp >/dev/null 2>&1 ; then
1576         echo "...using -n."
1577         n='-n'
1578         c=''
1579 else
1580         cat <<'EOM'
1581 ...using \c
1582 EOM
1583         n=''
1584         c='\c'
1585 fi
1586 echo $n "The star should be here-->$c"
1587 echo '*'
1588 rm -f .echotmp
1589
1590 : Now test for existence of everything in MANIFEST
1591 echo " "
1592 if test -f $rsrc/MANIFEST; then
1593         echo "First let's make sure your kit is complete.  Checking..." >&4
1594         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1595         rm -f missing
1596         tmppwd=`pwd`
1597         for filelist in x??; do
1598                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1599         done
1600         if test -s missing; then
1601                 cat missing >&4
1602                 cat >&4 <<'EOM'
1603
1604 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1605
1606 You have the option of continuing the configuration process, despite the
1607 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1608 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1609 and contact the author (perlbug@perl.org).
1610
1611 EOM
1612                 echo $n "Continue? [n] $c" >&4
1613                 read ans
1614                 case "$ans" in
1615                 y*)
1616                         echo "Continuing..." >&4
1617                         rm -f missing
1618                         ;;
1619                 *)
1620                         echo "ABORTING..." >&4
1621                         kill $$
1622                         ;;
1623                 esac
1624         else
1625                 echo "Looks good..."
1626         fi
1627 else
1628         echo "There is no MANIFEST file.  I hope your kit is complete !"
1629 fi
1630 rm -f missing x??
1631
1632 echo " "
1633 : Find the appropriate value for a newline for tr
1634 if test -n "$DJGPP"; then
1635        trnl='\012'
1636 fi
1637 if test X"$trnl" = X; then
1638         case "`echo foo|tr '\n' x 2>/dev/null`" in
1639         foox) trnl='\n' ;;
1640         esac
1641 fi
1642 if test X"$trnl" = X; then
1643         case "`echo foo|tr '\012' x 2>/dev/null`" in
1644         foox) trnl='\012' ;;
1645         esac
1646 fi
1647 if test X"$trnl" = X; then
1648         cat <<EOM >&2
1649
1650 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1651
1652 EOM
1653         exit 1
1654 fi
1655
1656 : compute the number of columns on the terminal for proper question formatting
1657 case "$COLUMNS" in
1658 '') COLUMNS='80';;
1659 esac
1660
1661 : set up the echo used in my read
1662 myecho="case \"\$xxxm\" in
1663 '') echo $n \"\$rp $c\" >&4;;
1664 *) case \"\$rp\" in
1665         '') echo $n \"[\$xxxm] $c\";;
1666         *)
1667                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1668                         echo \"\$rp\" >&4
1669                         echo $n \"[\$xxxm] $c\" >&4
1670                 else
1671                         echo $n \"\$rp [\$xxxm] $c\" >&4
1672                 fi
1673                 ;;
1674         esac;;
1675 esac"
1676
1677 : now set up to do reads with possible shell escape and default assignment
1678 cat <<EOSC >myread
1679 $startsh
1680 xxxm=\$dflt
1681 $myecho
1682 ans='!'
1683 case "\$fastread" in
1684 yes) case "\$dflt" in
1685         '') ;;
1686         *) ans='';
1687                 case "\$silent-\$rp" in
1688                 true-) ;;
1689                 *) echo " " >&4;;
1690                 esac;;
1691         esac;;
1692 *) case "\$silent" in
1693         true) case "\$rp" in
1694                 '') ans='';;
1695                 esac;;
1696         esac;;
1697 esac
1698 while expr "X\$ans" : "X!" >/dev/null; do
1699         read answ
1700         set x \$xxxm
1701         shift
1702         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1703         case  "\$answ" in
1704         "!")
1705                 sh 1>&4
1706                 echo " "
1707                 $myecho
1708                 ;;
1709         !*)
1710                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1711                 shift
1712                 sh 1>&4 -c "\$*"
1713                 echo " "
1714                 $myecho
1715                 ;;
1716         "\$ans")
1717                 case "\$ans" in
1718                 \\&*)
1719                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1720                         shift
1721                         case "\$1" in
1722                         -d)
1723                                 fastread=yes
1724                                 echo "(OK, I'll run with -d after this question.)" >&4
1725                                 ;;
1726                         -*)
1727                                 echo "*** Sorry, \$1 not supported yet." >&4
1728                                 ;;
1729                         esac
1730                         $myecho
1731                         ans=!
1732                         ;;
1733                 esac;;
1734         *)
1735                 case "\$aok" in
1736                 y)
1737                         echo "*** Substitution done -- please confirm."
1738                         xxxm="\$ans"
1739                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1740                         xxxm="\$ans"
1741                         ans=!
1742                         ;;
1743                 *)
1744                         echo "*** Error -- try again."
1745                         ans=!
1746                         ;;
1747                 esac
1748                 $myecho
1749                 ;;
1750         esac
1751         case "\$ans\$xxxm\$nostick" in
1752         '')
1753                 ans=!
1754                 $myecho
1755                 ;;
1756         esac
1757 done
1758 case "\$ans" in
1759 '') ans="\$xxxm";;
1760 esac
1761 EOSC
1762
1763 : create .config dir to save info across Configure sessions
1764 test -d ../.config || mkdir ../.config
1765 cat >../.config/README <<EOF
1766 This directory created by Configure to save information that should
1767 persist across sessions for $package.
1768
1769 You may safely delete it if you wish.
1770 EOF
1771
1772 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
1773 case "$usedevel" in
1774 $define|true|[yY]*) ;;
1775 *) case "$xversion" in
1776    *[13579])
1777         cat >&4 <<EOH
1778 *** WHOA THERE!!! ***
1779
1780     This is an UNSTABLE DEVELOPMENT release.
1781     The version of this $package distribution is $xversion, that is, odd,
1782     (as opposed to even) and that signifies a development release.
1783     If you want a maintenance release, you want an even-numbered version.
1784
1785     Do ***NOT*** install this into production use.
1786     Data corruption and crashes are possible.
1787
1788     It is most seriously suggested that you do not continue any further
1789     unless you want to help in developing and debugging Perl.
1790
1791 EOH
1792         rp='Do you really want to continue?'
1793         dflt='n'
1794         . ./myread
1795         case "$ans" in
1796         [yY]) echo >&4 "Okay, continuing." ;;
1797         *) echo >&4 "Okay, bye."
1798            exit 1
1799            ;;
1800         esac
1801         ;;
1802     esac
1803     ;;
1804 esac
1805
1806 : general instructions
1807 needman=true
1808 firsttime=true
1809 user=`(logname) 2>/dev/null`
1810 case "$user" in
1811 '') user=`whoami 2>&1`;;
1812 esac
1813 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1814         firsttime=false
1815         echo " "
1816         rp='Would you like to see the instructions?'
1817         dflt=n
1818         . ./myread
1819         case "$ans" in
1820         [yY]*) ;;
1821         *) needman=false;;
1822         esac
1823 fi
1824 if $needman; then
1825         cat <<EOH
1826
1827 This installation shell script will examine your system and ask you questions
1828 to determine how the perl5 package should be installed. If you get
1829 stuck on a question, you may use a ! shell escape to start a subshell or
1830 execute a command.  Many of the questions will have default answers in square
1831 brackets; typing carriage return will give you the default.
1832
1833 On some of the questions which ask for file or directory names you are allowed
1834 to use the ~name construct to specify the login directory belonging to "name",
1835 even if you don't have a shell which knows about that.  Questions where this is
1836 allowed will be marked "(~name ok)".
1837
1838 EOH
1839         rp=''
1840         dflt='Type carriage return to continue'
1841         . ./myread
1842         cat <<'EOH'
1843
1844 The prompter used in this script allows you to use shell variables and
1845 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1846 in the default answer, as if the default line was a set of arguments given to a
1847 script shell.  This means you may also use $* to repeat the whole default line,
1848 so you do not have to re-type everything to add something to the default.
1849
1850 Everytime there is a substitution, you will have to confirm.  If there is an
1851 error (e.g. an unmatched backtick), the default answer will remain unchanged
1852 and you will be prompted again.
1853
1854 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1855 the questions and use the computed defaults (or the previous answers if there
1856 was already a config.sh file). Type 'Configure -h' for a list of options.
1857 You may also start interactively and then answer '& -d' at any prompt to turn
1858 on the non-interactive behaviour for the remainder of the execution.
1859
1860 EOH
1861         . ./myread
1862         cat <<EOH
1863
1864 Much effort has been expended to ensure that this shell script will run on any
1865 Unix system.  If despite that it blows up on yours, your best bet is to edit
1866 Configure and run it again.  If you can't run Configure for some reason,
1867 you'll have to generate a config.sh file by hand.  Whatever problems you
1868 have, let me (perlbug@perl.org) know how I blew it.
1869
1870 This installation script affects things in two ways:
1871
1872 1) it may do direct variable substitutions on some of the files included
1873    in this kit.
1874 2) it builds a config.h file for inclusion in C programs.  You may edit
1875    any of these files as the need arises after running this script.
1876
1877 If you make a mistake on a question, there is no easy way to back up to it
1878 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1879 files.  Configure will offer to let you do this before it runs the SH files.
1880
1881 EOH
1882         dflt='Type carriage return to continue'
1883         . ./myread
1884         case "$firsttime" in
1885         true) echo $user >>../.config/instruct;;
1886         esac
1887 fi
1888
1889 : find out where common programs are
1890 echo " "
1891 echo "Locating common programs..." >&4
1892 cat <<EOSC >loc
1893 $startsh
1894 case \$# in
1895 0) exit 1;;
1896 esac
1897 thing=\$1
1898 shift
1899 dflt=\$1
1900 shift
1901 for dir in \$*; do
1902         case "\$thing" in
1903         .)
1904         if test -d \$dir/\$thing; then
1905                 echo \$dir
1906                 exit 0
1907         fi
1908         ;;
1909         *)
1910         for thisthing in \$dir/\$thing; do
1911                 : just loop through to pick last item
1912         done
1913         if test -f \$thisthing; then
1914                 echo \$thisthing
1915                 exit 0
1916         elif test -f \$dir/\$thing.exe; then
1917                 if test -n "$DJGPP"; then
1918                         echo \$dir/\$thing.exe
1919                 else
1920                         : on Eunice apparently
1921                         echo \$dir/\$thing
1922                 fi
1923                 exit 0
1924         fi
1925         ;;
1926         esac
1927 done
1928 echo \$dflt
1929 exit 1
1930 EOSC
1931 chmod +x loc
1932 $eunicefix loc
1933 loclist="
1934 awk
1935 cat
1936 comm
1937 cp
1938 echo
1939 expr
1940 grep
1941 ls
1942 make
1943 mkdir
1944 rm
1945 sed
1946 sort
1947 touch
1948 tr
1949 uniq
1950 "
1951 trylist="
1952 Mcc
1953 ar
1954 byacc
1955 cpp
1956 csh
1957 date
1958 egrep
1959 gzip
1960 less
1961 ln
1962 more
1963 nm
1964 nroff
1965 pg
1966 test
1967 uname
1968 zip
1969 "
1970 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1971 pth="$pth /lib /usr/lib"
1972 for file in $loclist; do
1973         eval xxx=\$$file
1974         case "$xxx" in
1975         /*|?:[\\/]*)
1976                 if test -f "$xxx"; then
1977                         : ok
1978                 else
1979                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1980                         xxx=`./loc $file $file $pth`
1981                 fi
1982                 ;;
1983         '') xxx=`./loc $file $file $pth`;;
1984         *) xxx=`./loc $xxx $xxx $pth`;;
1985         esac
1986         eval $file=$xxx
1987         eval _$file=$xxx
1988         case "$xxx" in
1989         /*)
1990                 echo $file is in $xxx.
1991                 ;;
1992         ?:[\\/]*)
1993                 echo $file is in $xxx.
1994                 ;;
1995         *)
1996                 echo "I don't know where '$file' is, and my life depends on it." >&4
1997                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1998                 exit 1
1999                 ;;
2000         esac
2001 done
2002 echo " "
2003 echo "Don't worry if any of the following aren't found..."
2004 say=offhand
2005 for file in $trylist; do
2006         eval xxx=\$$file
2007         case "$xxx" in
2008         /*|?:[\\/]*)
2009                 if test -f "$xxx"; then
2010                         : ok
2011                 else
2012                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2013                         xxx=`./loc $file $file $pth`
2014                 fi
2015                 ;;
2016         '') xxx=`./loc $file $file $pth`;;
2017         *) xxx=`./loc $xxx $xxx $pth`;;
2018         esac
2019         eval $file=$xxx
2020         eval _$file=$xxx
2021         case "$xxx" in
2022         /*)
2023                 echo $file is in $xxx.
2024                 ;;
2025         ?:[\\/]*)
2026                 echo $file is in $xxx.
2027                 ;;
2028         *)
2029                 echo "I don't see $file out there, $say."
2030                 say=either
2031                 ;;
2032         esac
2033 done
2034 case "$egrep" in
2035 egrep)
2036         echo "Substituting grep for egrep."
2037         egrep=$grep
2038         ;;
2039 esac
2040 case "$ln" in
2041 ln)
2042         echo "Substituting cp for ln."
2043         ln=$cp
2044         ;;
2045 esac
2046 case "$test" in
2047 test)
2048         echo "Hopefully test is built into your sh."
2049         ;;
2050 *)
2051         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2052                 echo "Using the test built into your sh."
2053                 test=test
2054                 _test=test
2055         fi
2056         ;;
2057 esac
2058 case "$echo" in
2059 echo)
2060         echo "Hopefully echo is built into your sh."
2061         ;;
2062 '') ;;
2063 *)
2064         echo " "
2065 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2066         $echo $n "hi there$c" >foo1
2067         echo $n "hi there$c" >foo2
2068         if cmp foo1 foo2 >/dev/null 2>&1; then
2069                 echo "They are compatible.  In fact, they may be identical."
2070         else
2071                 case "$n" in
2072                 '-n') n='' c='\c';;
2073                 *) n='-n' c='';;
2074                 esac
2075                 cat <<FOO
2076 They are not compatible!  You are probably running ksh on a non-USG system.
2077 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2078 have echo built in and we may have to run some Bourne shell scripts.  That
2079 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2080
2081 FOO
2082                 $echo $n "The star should be here-->$c"
2083                 $echo "*"
2084         fi
2085         $rm -f foo1 foo2
2086         ;;
2087 esac
2088
2089 cat <<EOS >checkcc
2090 $startsh
2091 EOS
2092 cat <<'EOSC' >>checkcc
2093 case "$cc" in
2094 '') ;;
2095 *)  $rm -f try try.*
2096     $cat >try.c <<EOM
2097 int main(int argc, char *argv[]) {
2098   return 0;
2099 }
2100 EOM
2101     if $cc -o try try.c; then
2102        :
2103     else
2104         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2105         despair=yes
2106         trygcc=yes
2107         case "$cc" in
2108         *gcc*) trygcc=no ;;
2109         esac
2110         case "`$cc -v -c try.c 2>&1`" in
2111         *gcc*) trygcc=no ;;
2112         esac
2113         if $test X"$trygcc" = Xyes; then
2114             if gcc -o try -c try.c; then
2115                 echo " "
2116                 echo "You seem to have a working gcc, though." >&4
2117                 rp="Would you like to use it?"
2118                 dflt=y
2119                 if $test -f myread; then
2120                     . ./myread
2121                 else
2122                     if $test -f UU/myread; then
2123                         . ./UU/myread
2124                     else
2125                         echo "Cannot find myread, sorry.  Aborting." >&2
2126                         exit 1
2127                     fi
2128                 fi  
2129                 case "$ans" in
2130                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no ;;
2131                 esac
2132             fi
2133         fi
2134         if $test X"$despair" = Xyes; then
2135             echo "You need to find a working C compiler." >&4
2136             echo "I cannot continue any further, aborting." >&4
2137             exit 1
2138         fi
2139     fi
2140     $rm -f try try.*
2141     ;;
2142 esac
2143 EOSC
2144
2145 : determine whether symbolic links are supported
2146 echo " "
2147 $touch blurfl
2148 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2149         echo "Symbolic links are supported." >&4
2150         lns="$ln -s"
2151 else
2152         echo "Symbolic links are NOT supported." >&4
2153         lns="$ln"
2154 fi
2155 $rm -f blurfl sym
2156
2157 : see whether [:lower:] and [:upper:] are supported character classes
2158 echo " "
2159 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2160 ABYZ)
2161         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2162         up='[:upper:]'
2163         low='[:lower:]'
2164         ;;
2165 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2166         # (0xc9 and 0xd1), therefore that is a nice testing point.
2167         if test "X$up" = X -o "X$low" = X; then
2168             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2169             ij) up='[A-Z]'
2170                 low='[a-z]'
2171                 ;;
2172             esac
2173         fi
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 | od -x 2>/dev/null`" in
2183             *C9D1*|*c9d1*)
2184                 echo "Hey, this might be EBCDIC." >&4
2185                 if test "X$up" = X -o "X$low" = X; then
2186                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2187                     ij) up='[A-IJ-RS-Z]'
2188                         low='[a-ij-rs-z]'
2189                         ;;
2190                     esac
2191                 fi
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                 ;;
2200             esac
2201         fi
2202 esac
2203 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2204 ij)
2205     echo "Using $up and $low to convert case." >&4
2206     ;;
2207 *)
2208     echo "I don't know how to translate letters from upper to lower case." >&4
2209     echo "Your tr is not acting any way I know of." >&4
2210     exit 1
2211     ;;
2212 esac
2213 : set up the translation script tr, must be called with ./tr of course
2214 cat >tr <<EOSC
2215 $startsh
2216 case "\$1\$2" in
2217 '[A-Z][a-z]') exec $tr '$up' '$low';;
2218 '[a-z][A-Z]') exec $tr '$low' '$up';;
2219 esac
2220 exec $tr "\$@"
2221 EOSC
2222 chmod +x tr
2223 $eunicefix tr
2224
2225 : Try to determine whether config.sh was made on this system
2226 case "$config_sh" in
2227 '')
2228 myuname=`$uname -a 2>/dev/null`
2229 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2230 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2231 # because the A-Z/a-z are not consecutive.
2232 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2233         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2234 newmyuname="$myuname"
2235 dflt=n
2236 case "$knowitall" in
2237 '')
2238         if test -f ../config.sh; then
2239                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2240                         eval "`grep myuname= ../config.sh`"
2241                 fi
2242                 if test "X$myuname" = "X$newmyuname"; then
2243                         dflt=y
2244                 fi
2245         fi
2246         ;;
2247 *) dflt=y;;
2248 esac
2249
2250 : Get old answers from old config file if Configure was run on the
2251 : same system, otherwise use the hints.
2252 hint=default
2253 cd ..
2254 if test -f config.sh; then
2255         echo " "
2256         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2257         . UU/myread
2258         case "$ans" in
2259         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2260         *)  echo "Fetching default answers from your old config.sh file..." >&4
2261                 tmp_n="$n"
2262                 tmp_c="$c"
2263                 tmp_sh="$sh"
2264                 . ./config.sh
2265                 cp config.sh UU
2266                 n="$tmp_n"
2267                 c="$tmp_c"
2268                 : Older versions did not always set $sh.  Catch re-use of such
2269                 : an old config.sh.
2270                 case "$sh" in
2271                 '') sh="$tmp_sh" ;;
2272                 esac
2273                 hint=previous
2274                 ;;
2275         esac
2276 fi
2277 . ./UU/checkcc
2278 if test ! -f config.sh; then
2279         $cat <<EOM
2280
2281 First time through, eh?  I have some defaults handy for some systems
2282 that need some extra help getting the Configure answers right:
2283
2284 EOM
2285         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2286         dflt=''
2287         : Half the following guesses are probably wrong... If you have better
2288         : tests or hints, please send them to perlbug@perl.org
2289         : The metaconfig authors would also appreciate a copy...
2290         $test -f /irix && osname=irix
2291         $test -f /xenix && osname=sco_xenix
2292         $test -f /dynix && osname=dynix
2293         $test -f /dnix && osname=dnix
2294         $test -f /lynx.os && osname=lynxos
2295         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2296         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2297         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2298         $test -f /bin/mips && /bin/mips && osname=mips
2299         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2300                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2301         $test -d /usr/apollo/bin && osname=apollo
2302         $test -f /etc/saf/_sactab && osname=svr4
2303         $test -d /usr/include/minix && osname=minix
2304         if $test -d /MachTen -o -d /MachTen_Folder; then
2305                 osname=machten
2306                 if $test -x /sbin/version; then
2307                         osvers=`/sbin/version | $awk '{print $2}' |
2308                         $sed -e 's/[A-Za-z]$//'`
2309                 elif $test -x /usr/etc/version; then
2310                         osvers=`/usr/etc/version | $awk '{print $2}' |
2311                         $sed -e 's/[A-Za-z]$//'`
2312                 else
2313                         osvers="$2.$3"
2314                 fi
2315         fi
2316
2317         $test -f /sys/posix.dll &&
2318                 $test -f /usr/bin/what &&
2319                 set X `/usr/bin/what /sys/posix.dll` &&
2320                 $test "$3" = UWIN &&
2321                 osname=uwin &&
2322                 osvers="$5"
2323
2324         if $test -f $uname; then
2325                 set X $myuname
2326                 shift
2327
2328                 case "$5" in
2329                 fps*) osname=fps ;;
2330                 mips*)
2331                         case "$4" in
2332                         umips) osname=umips ;;
2333                         *) osname=mips ;;
2334                         esac;;
2335                 [23]100) osname=mips ;;
2336                 next*) osname=next ;;
2337                 i386*)
2338                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2339                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2340                                 osname='sco'
2341                                 osvers=$tmp
2342                         elif $test -f /etc/kconfig; then
2343                                 osname=isc
2344                                 if test "$lns" = "$ln -s"; then
2345                                         osvers=4
2346                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2347                                         osvers=3
2348                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2349                                         osvers=2
2350                                 fi
2351                         fi
2352                         tmp=''
2353                         ;;
2354                 pc*)
2355                         if test -n "$DJGPP"; then
2356                                 osname=dos
2357                                 osvers=djgpp
2358                         fi
2359                         ;;
2360                 esac
2361
2362                 case "$1" in
2363                 aix) osname=aix
2364                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2365                         case "$tmp" in
2366                         'not found') osvers="$4"."$3" ;;
2367                         '<3240'|'<>3240') osvers=3.2.0 ;;
2368                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2369                         '=3250'|'>3250') osvers=3.2.5 ;;
2370                         *) osvers=$tmp;;
2371                         esac
2372                         ;;
2373                 bsd386) osname=bsd386
2374                         osvers=`$uname -r`
2375                         ;;
2376                 cygwin*) osname=cygwin
2377                         osvers="$3"
2378                         ;;
2379                 *dc.osx) osname=dcosx
2380                         osvers="$3"
2381                         ;;
2382                 dnix) osname=dnix
2383                         osvers="$3"
2384                         ;;
2385                 domainos) osname=apollo
2386                         osvers="$3"
2387                         ;;
2388                 dgux) osname=dgux 
2389                         osvers="$3"
2390                         ;;
2391                 dynixptx*) osname=dynixptx
2392                         osvers=`echo "$4"|sed 's/^v//'`
2393                         ;;
2394                 freebsd) osname=freebsd 
2395                         osvers="$3" ;;
2396                 genix) osname=genix ;;
2397                 hp*) osname=hpux 
2398                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2399                         ;;
2400                 irix*) osname=irix
2401                         case "$3" in
2402                         4*) osvers=4 ;;
2403                         5*) osvers=5 ;;
2404                         *)      osvers="$3" ;;
2405                         esac
2406                         ;;
2407                 linux) osname=linux
2408                         case "$3" in
2409                         *)      osvers="$3" ;;
2410                         esac
2411                         ;;
2412                 MiNT) osname=mint
2413                         ;;
2414                 netbsd*) osname=netbsd
2415                         osvers="$3"
2416                         ;;
2417                 news-os) osvers="$3"
2418                         case "$3" in
2419                         4*) osname=newsos4 ;;
2420                         *) osname=newsos ;;
2421                         esac
2422                         ;;
2423                 next*) osname=next ;;
2424                 POSIX-BC | posix-bc ) osname=posix-bc
2425                         osvers="$3"
2426                         ;;
2427                 powerux | power_ux | powermax_os | powermaxos | \
2428                 powerunix | power_unix) osname=powerux
2429                         osvers="$3"
2430                         ;;
2431                 qnx) osname=qnx
2432                         osvers="$4"
2433                         ;;
2434                 solaris) osname=solaris
2435                         case "$3" in
2436                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2437                         *)      osvers="$3" ;;
2438                         esac
2439                         ;;
2440                 sunos) osname=sunos
2441                         case "$3" in
2442                         5*) osname=solaris
2443                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2444                         *)      osvers="$3" ;;
2445                         esac
2446                         ;;
2447                 titanos) osname=titanos
2448                         case "$3" in
2449                         1*) osvers=1 ;;
2450                         2*) osvers=2 ;;
2451                         3*) osvers=3 ;;
2452                         4*) osvers=4 ;;
2453                         *)      osvers="$3" ;;
2454                         esac
2455                         ;;
2456                 ultrix) osname=ultrix
2457                         osvers="$3"
2458                         ;;
2459                 osf1|mls+)      case "$5" in
2460                                 alpha)
2461                                         osname=dec_osf
2462                                         osvers=`sizer -v | awk '{print $3}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2463                                         case "$osvers" in
2464                                         [1-9].[0-9]*) ;;
2465                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
2466                                         esac
2467                                         ;;
2468                         hp*)    osname=hp_osf1  ;;
2469                         mips)   osname=mips_osf1 ;;
2470                         esac
2471                         ;;
2472                 unixware) osname=svr5
2473                         osvers="$4"
2474                         ;;
2475                 uts) osname=uts
2476                         osvers="$3"
2477                         ;;
2478                 $2) case "$osname" in
2479                         *isc*) ;;
2480                         *freebsd*) ;;
2481                         svr*)
2482                                 : svr4.x or possibly later
2483                                 case "svr$3" in 
2484                                 ${osname}*)
2485                                         osname=svr$3
2486                                         osvers=$4
2487                                         ;;
2488                                 esac
2489                                 case "$osname" in
2490                                 svr4.0)
2491                                         : Check for ESIX
2492                                         if test -f /stand/boot ; then
2493                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2494                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2495                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2496                                                         if test -n "$isesix"; then
2497                                                                 osname=esix4
2498                                                         fi
2499                                                 fi
2500                                         fi
2501                                         ;;
2502                                 esac
2503                                 ;;
2504                         *)      if test -f /etc/systemid; then
2505                                         osname=sco
2506                                         set `echo $3 | $sed 's/\./ /g'` $4
2507                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2508                                                 osvers=$1.$2.$3
2509                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2510                                                 osvers=$1.$2
2511                                         elif $test -f $src/hints/sco_$1.sh; then
2512                                                 osvers=$1
2513                                         fi
2514                                 else
2515                                         case "$osname" in
2516                                         '') : Still unknown.  Probably a generic Sys V.
2517                                                 osname="sysv"
2518                                                 osvers="$3"
2519                                                 ;;
2520                                         esac
2521                                 fi
2522                                 ;;
2523                         esac
2524                         ;;
2525                 *)      case "$osname" in
2526                         '') : Still unknown.  Probably a generic BSD.
2527                                 osname="$1"
2528                                 osvers="$3"
2529                                 ;;
2530                         esac
2531                         ;;
2532                 esac
2533         else
2534                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2535                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2536                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2537                                 osname=news_os
2538                         fi
2539                         $rm -f UU/kernel.what
2540                 elif test -d c:/.; then
2541                         set X $myuname
2542                         osname=os2
2543                         osvers="$5"
2544                 fi
2545         fi
2546         
2547         : Now look for a hint file osname_osvers, unless one has been
2548         : specified already.
2549         case "$hintfile" in
2550         ''|' ')
2551                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2552                 : Also try without trailing minor version numbers.
2553                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2554                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2555                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2556                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2557                 case "$file" in
2558                 '') dflt=none ;;
2559                 *)  case "$osvers" in
2560                         '') dflt=$file
2561                                 ;;
2562                         *)  if $test -f $src/hints/$file.sh ; then
2563                                         dflt=$file
2564                                 elif $test -f $src/hints/$xfile.sh ; then
2565                                         dflt=$xfile
2566                                 elif $test -f $src/hints/$xxfile.sh ; then
2567                                         dflt=$xxfile
2568                                 elif $test -f $src/hints/$xxxfile.sh ; then
2569                                         dflt=$xxxfile
2570                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2571                                         dflt=$xxxxfile
2572                                 elif $test -f "$src/hints/${osname}.sh" ; then
2573                                         dflt="${osname}"
2574                                 else
2575                                         dflt=none
2576                                 fi
2577                                 ;;
2578                         esac
2579                         ;;
2580                 esac
2581                 if $test -f Policy.sh ; then
2582                         case "$dflt" in
2583                         *Policy*) ;;
2584                         none) dflt="Policy" ;;
2585                         *) dflt="Policy $dflt" ;;
2586                         esac
2587                 fi
2588                 ;;
2589         *)
2590                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2591                 ;;
2592         esac
2593
2594         if $test -f Policy.sh ; then
2595                 $cat <<EOM
2596
2597 There's also a Policy hint file available, which should make the
2598 site-specific (policy) questions easier to answer.
2599 EOM
2600
2601         fi
2602
2603         $cat <<EOM
2604
2605 You may give one or more space-separated answers, or "none" if appropriate.
2606 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2607 is a good thing.  DO NOT give a wrong version or a wrong OS.
2608
2609 EOM
2610
2611         rp="Which of these apply, if any?"
2612         . UU/myread
2613         tans=$ans
2614         for file in $tans; do
2615                 if $test X$file = XPolicy -a -f Policy.sh; then
2616                         . Policy.sh
2617                         $cat Policy.sh >> UU/config.sh
2618                 elif $test -f $src/hints/$file.sh; then
2619                         . $src/hints/$file.sh
2620                         $cat $src/hints/$file.sh >> UU/config.sh
2621                 elif $test X$tans = X -o X$tans = Xnone ; then
2622                         : nothing
2623                 else
2624                         : Give one chance to correct a possible typo.
2625                         echo "$file.sh does not exist"
2626                         dflt=$file
2627                         rp="hint to use instead?"
2628                         . UU/myread
2629                         for file in $ans; do
2630                                 if $test -f "$src/hints/$file.sh"; then
2631                                         . $src/hints/$file.sh
2632                                         $cat $src/hints/$file.sh >> UU/config.sh
2633                                 elif $test X$ans = X -o X$ans = Xnone ; then
2634                                         : nothing
2635                                 else
2636                                         echo "$file.sh does not exist -- ignored."
2637                                 fi
2638                         done
2639                 fi
2640         done
2641
2642         hint=recommended
2643         : Remember our hint file for later.
2644         if $test -f "$src/hints/$file.sh" ; then
2645                 hintfile="$file"
2646         else
2647                 hintfile=''
2648         fi
2649 fi
2650 cd UU
2651 ;;
2652 *)
2653         echo " "
2654         echo "Fetching default answers from $config_sh..." >&4
2655         tmp_n="$n"
2656         tmp_c="$c"
2657         cd ..
2658         cp $config_sh config.sh 2>/dev/null
2659         chmod +w config.sh
2660         . ./config.sh
2661         cd UU
2662         cp ../config.sh .
2663         n="$tmp_n"
2664         c="$tmp_c"
2665         hint=previous
2666         ;;
2667 esac
2668 test "$override" && . ./optdef.sh
2669 myuname="$newmyuname"
2670
2671 : Restore computed paths
2672 for file in $loclist $trylist; do
2673         eval $file="\$_$file"
2674 done
2675
2676 cat << EOM
2677
2678 Configure uses the operating system name and version to set some defaults.
2679 The default value is probably right if the name rings a bell. Otherwise,
2680 since spelling matters for me, either accept the default or answer "none"
2681 to leave it blank.
2682
2683 EOM
2684 case "$osname" in
2685         ''|' ')
2686                 case "$hintfile" in
2687                 ''|' '|none) dflt=none ;;
2688                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2689                 esac
2690                 ;;
2691         *) dflt="$osname" ;;
2692 esac
2693 rp="Operating system name?"
2694 . ./myread
2695 case "$ans" in
2696 none)  osname='' ;;
2697 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2698 esac
2699 echo " "
2700 case "$osvers" in
2701         ''|' ')
2702                 case "$hintfile" in
2703                 ''|' '|none) dflt=none ;;
2704                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2705                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2706                         case "$dflt" in
2707                         ''|' ') dflt=none ;;
2708                         esac
2709                         ;;
2710                 esac
2711                 ;;
2712         *) dflt="$osvers" ;;
2713 esac
2714 rp="Operating system version?"
2715 . ./myread
2716 case "$ans" in
2717 none)  osvers='' ;;
2718 *) osvers="$ans" ;;
2719 esac
2720
2721
2722 . ./posthint.sh
2723
2724 : who configured the system
2725 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2726 cf_by=`(logname) 2>/dev/null`
2727 case "$cf_by" in
2728 "")
2729         cf_by=`(whoami) 2>/dev/null`
2730         case "$cf_by" in
2731         "") cf_by=unknown ;;
2732         esac ;;
2733 esac
2734
2735 : set up the script used to warn in case of inconsistency
2736 cat <<EOS >whoa
2737 $startsh
2738 EOS
2739 cat <<'EOSC' >>whoa
2740 dflt=y
2741 echo " "
2742 echo "*** WHOA THERE!!! ***" >&4
2743 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2744 rp="    Keep the $hint value?"
2745 . ./myread
2746 case "$ans" in
2747 y) td=$was; tu=$was;;
2748 esac
2749 EOSC
2750
2751 : function used to set $1 to $val
2752 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2753 case "$val$was" in
2754 $define$undef) . ./whoa; eval "$var=\$td";;
2755 $undef$define) . ./whoa; eval "$var=\$tu";;
2756 *) eval "$var=$val";;
2757 esac'
2758
2759 case "$usethreads" in
2760 $define|true|[yY]*)     dflt='y';;
2761 *) dflt='n';;
2762 esac
2763 cat <<EOM
2764
2765 Perl can be built to take advantage of threads on some systems.
2766 To do so, Configure can be run with -Dusethreads.
2767
2768 Note that threading is a highly experimental feature, and
2769 some known race conditions still remain.  If you choose to try
2770 it, be very sure to not actually deploy it for production
2771 purposes.  README.threads has more details, and is required
2772 reading if you enable threads.
2773
2774 If this doesn't make any sense to you, just accept the default '$dflt'.
2775 EOM
2776 rp='Build a threading Perl?'
2777 . ./myread
2778 case "$ans" in
2779 y|Y)    val="$define" ;;
2780 *)      val="$undef" ;;
2781 esac
2782 set usethreads
2783 eval $setvar
2784
2785 case "$usethreads" in
2786 $define)
2787         $cat <<EOM
2788
2789 As of 5.5.640, Perl has two different internal threading implementations,
2790 the 5.005 version (5005threads) and an interpreter-based version
2791 (ithreads) that has one interpreter per thread.  Both are very 
2792 experimental.  This arrangement exists to help developers work out
2793 which one is better.
2794
2795 If you're a casual user, you probably don't want interpreter-threads
2796 at this time.  There doesn't yet exist a way to create threads from
2797 within Perl in this model, i.e., "use Thread;" will NOT work.
2798 EOM
2799         : Default to ithreads unless overridden on command line or with
2800         : old config.sh
2801         dflt='y'
2802         case "$use5005threads" in
2803                 $define|true|[yY]*) dflt='n';;
2804         esac
2805         case "$useithreads" in
2806                 $undef|false|[nN]*) dflt='n';;
2807         esac
2808         rp='Use interpreter-based ithreads?'
2809         . ./myread
2810         case "$ans" in
2811         y|Y)    val="$define" ;;
2812         *)      val="$undef" ;;
2813         esac
2814         set useithreads
2815         eval $setvar
2816         : Now set use5005threads to the opposite value.
2817         case "$useithreads" in
2818         $define) val="$undef" ;;
2819         *) val="$define" ;;
2820         esac
2821         set use5005threads
2822         eval $setvar
2823         ;;
2824 *)
2825         useithreads="$undef"
2826         use5005threads="$undef"
2827         ;;
2828 esac
2829
2830 case "$d_oldpthreads" in
2831 '')     : Configure tests would be welcome here.  For now, assume undef.
2832         val="$undef" ;;
2833 *)      val="$d_oldpthreads" ;;
2834 esac
2835 set d_oldpthreads
2836 eval $setvar
2837
2838
2839 case "$usethreads" in
2840 "$define"|true|[yY]*)
2841 : Look for a hint-file generated 'call-back-unit'.  If the
2842 : user has specified that a threading perl is to be built,
2843 : we may need to set or change some other defaults.
2844         if $test -f usethreads.cbu; then
2845                 echo "Your platform has some specific hints for threaded builds, using them..."
2846                 . ./usethreads.cbu
2847         else
2848                 $cat <<EOM
2849 (Your platform doesn't have any specific hints for threaded builds.
2850  Assuming POSIX threads, then.)
2851 EOM
2852         fi
2853         ;;
2854 esac
2855
2856 cat <<EOM
2857
2858 Perl can be built so that multiple Perl interpreters can coexist
2859 within the same Perl executable.
2860 EOM
2861
2862 case "$useithreads" in
2863 $define)
2864         cat <<EOM
2865 This multiple interpreter support is required for interpreter-based threads.
2866 EOM
2867         val="$define"
2868         ;;
2869 *)      case "$usemultiplicity" in
2870         $define|true|[yY]*)     dflt='y';;
2871         *) dflt='n';;
2872         esac
2873         echo " "
2874         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2875         rp='Build Perl for multiplicity?'
2876         . ./myread
2877         case "$ans" in
2878         y|Y)    val="$define" ;;
2879         *)      val="$undef" ;;
2880         esac
2881         ;;
2882 esac
2883 set usemultiplicity
2884 eval $setvar
2885
2886 : make some quick guesses about what we are up against
2887 echo " "
2888 $echo $n "Hmm...  $c"
2889 echo exit 1 >bsd
2890 echo exit 1 >usg
2891 echo exit 1 >v7
2892 echo exit 1 >osf1
2893 echo exit 1 >eunice
2894 echo exit 1 >xenix
2895 echo exit 1 >venix
2896 echo exit 1 >os2
2897 d_bsd="$undef"
2898 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2899 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2900 then
2901         echo "Looks kind of like an OSF/1 system, but we'll see..."
2902         echo exit 0 >osf1
2903 elif test `echo abc | tr a-z A-Z` = Abc ; then
2904         xxx=`./loc addbib blurfl $pth`
2905         if $test -f $xxx; then
2906         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2907                 echo exit 0 >bsd
2908                 echo exit 0 >usg
2909         else
2910                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2911                         echo "Looks kind of like an extended USG system, but we'll see..."
2912                 else
2913                         echo "Looks kind of like a USG system, but we'll see..."
2914                 fi
2915                 echo exit 0 >usg
2916         fi
2917 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2918         echo "Looks kind of like a BSD system, but we'll see..."
2919         d_bsd="$define"
2920         echo exit 0 >bsd
2921 else
2922         echo "Looks kind of like a Version 7 system, but we'll see..."
2923         echo exit 0 >v7
2924 fi
2925 case "$eunicefix" in
2926 *unixtovms*)
2927         $cat <<'EOI'
2928 There is, however, a strange, musty smell in the air that reminds me of
2929 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2930 EOI
2931         echo exit 0 >eunice
2932         d_eunice="$define"
2933 : it so happens the Eunice I know will not run shell scripts in Unix format
2934         ;;
2935 *)
2936         echo " "
2937         echo "Congratulations.  You aren't running Eunice."
2938         d_eunice="$undef"
2939         ;;
2940 esac
2941 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2942 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
2943 : semicolon as a patch separator
2944 case "$p_" in
2945 :) ;;
2946 *)
2947         $cat <<'EOI'
2948 I have the feeling something is not exactly right, however...don't tell me...
2949 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2950 (Or you may be running DOS with DJGPP.)
2951 EOI
2952         echo exit 0 >os2
2953         ;;
2954 esac
2955 if test -f /xenix; then
2956         echo "Actually, this looks more like a XENIX system..."
2957         echo exit 0 >xenix
2958         d_xenix="$define"
2959 else
2960         echo " "
2961         echo "It's not Xenix..."
2962         d_xenix="$undef"
2963 fi
2964 chmod +x xenix
2965 $eunicefix xenix
2966 if test -f /venix; then
2967         echo "Actually, this looks more like a VENIX system..."
2968         echo exit 0 >venix
2969 else
2970         echo " "
2971         if ./xenix; then
2972                 : null
2973         else
2974                 echo "Nor is it Venix..."
2975         fi
2976 fi
2977 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2978 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2979 $rm -f foo
2980
2981 case "$cc" in
2982 '') dflt=cc;;
2983 *) dflt="$cc";;
2984 esac
2985 rp="Use which C compiler?"
2986 . ./myread
2987 cc="$ans"
2988 : Look for a hint-file generated 'call-back-unit'.  Now that the
2989 : user has specified the compiler, we may need to set or change some
2990 : other defaults.
2991 if $test -f cc.cbu; then
2992     . ./cc.cbu
2993 fi
2994 . ./checkcc
2995
2996 echo " "
2997 echo "Checking for GNU cc in disguise and/or its version number..." >&4
2998 $cat >gccvers.c <<EOM
2999 #include <stdio.h>
3000 int main() {
3001 #ifdef __GNUC__
3002 #ifdef __VERSION__
3003         printf("%s\n", __VERSION__);
3004 #else
3005         printf("%s\n", "1");
3006 #endif
3007 #endif
3008         exit(0);
3009 }
3010 EOM
3011 if $cc $ldflags -o gccvers gccvers.c; then
3012         gccversion=`./gccvers`
3013         case "$gccversion" in
3014         '') echo "You are not using GNU cc." ;;
3015         *)  echo "You are using GNU cc $gccversion."
3016             ccname=gcc  
3017             ;;
3018         esac
3019 else
3020         echo " "
3021         echo "*** WHOA THERE!!! ***" >&4
3022         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3023         case "$knowitall" in
3024         '')
3025         echo "    You'd better start hunting for one and let me know about it." >&4
3026                 exit 1
3027                 ;;
3028         esac
3029 fi
3030 $rm -f gccvers*
3031 case "$gccversion" in
3032 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3033 esac
3034 case "$gccversion" in
3035 '') gccosandvers='' ;;
3036 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
3037    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
3038    gccshortvers=''
3039    case "$gccosandvers" in
3040    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
3041    $osname$osvers) ;; # looking good
3042    $osname*) cat <<EOM >&4
3043
3044 *** WHOA THERE!!! ***
3045
3046     Your gcc has not been compiled for the exact release of
3047     your operating system ($gccosandvers versus $osname$osvers).
3048
3049     In general it is a good idea to keep gcc synchronized with
3050     the operating system because otherwise serious problems
3051     may ensue when trying to compile software, like Perl.
3052
3053     I'm trying to be optimistic here, though, and will continue.
3054     If later during the configuration and build icky compilation
3055     problems appear (headerfile conflicts being the most common
3056     manifestation), I suggest reinstalling the gcc to match
3057     your operating system release.
3058
3059 EOM
3060       ;;
3061    *) gccosandvers='' ;; # failed to parse, better be silent
3062    esac
3063    ;;
3064 esac
3065 case "$ccname" in
3066 '') ccname="$cc" ;;
3067 esac
3068
3069 : see how we invoke the C preprocessor
3070 echo " "
3071 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3072 cat <<'EOT' >testcpp.c
3073 #define ABC abc
3074 #define XYZ xyz
3075 ABC.XYZ
3076 EOT
3077 cd ..
3078 if test ! -f cppstdin; then
3079         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3080                 # AIX cc -E doesn't show the absolute headerfile
3081                 # locations but we'll cheat by using the -M flag.
3082                 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
3083         else
3084                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3085         fi
3086 else
3087         echo "Keeping your $hint cppstdin wrapper."
3088 fi
3089 chmod 755 cppstdin
3090 wrapper=`pwd`/cppstdin
3091 ok='false'
3092 cd UU
3093
3094 if $test "X$cppstdin" != "X" && \
3095         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3096         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3097 then
3098         echo "You used to use $cppstdin $cppminus so we'll use that again."
3099         case "$cpprun" in
3100         '') echo "But let's see if we can live without a wrapper..." ;;
3101         *)
3102                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3103                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3104                 then
3105                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3106                         ok='true'
3107                 else
3108                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3109                 fi
3110                 ;;
3111         esac
3112 else
3113         case "$cppstdin" in
3114         '') ;;
3115         *)
3116                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3117                 ;;
3118         esac
3119 fi
3120
3121 if $ok; then
3122         : nothing
3123 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3124         $cc -E <testcpp.c >testcpp.out 2>&1; \
3125         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3126         echo "Yup, it does."
3127         x_cpp="$cc -E"
3128         x_minus='';
3129 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3130         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3131         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3132         echo "Yup, it does."
3133         x_cpp="$cc -E"
3134         x_minus='-';
3135 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3136         $cc -P <testcpp.c >testcpp.out 2>&1; \
3137         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3138         echo "Yipee, that works!"
3139         x_cpp="$cc -P"
3140         x_minus='';
3141 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3142         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3143         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3144         echo "At long last!"
3145         x_cpp="$cc -P"
3146         x_minus='-';
3147 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3148         $cpp <testcpp.c >testcpp.out 2>&1; \
3149         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3150         echo "It works!"
3151         x_cpp="$cpp"
3152         x_minus='';
3153 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3154         $cpp - <testcpp.c >testcpp.out 2>&1; \
3155         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3156         echo "Hooray, it works!  I was beginning to wonder."
3157         x_cpp="$cpp"
3158         x_minus='-';
3159 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3160         $wrapper <testcpp.c >testcpp.out 2>&1; \
3161         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3162         x_cpp="$wrapper"
3163         x_minus=''
3164         echo "Eureka!"
3165 else
3166         dflt=''
3167         rp="No dice.  I can't find a C preprocessor.  Name one:"
3168         . ./myread
3169         x_cpp="$ans"
3170         x_minus=''
3171         $x_cpp <testcpp.c >testcpp.out 2>&1
3172         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3173                 echo "OK, that will do." >&4
3174         else
3175 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3176                 exit 1
3177         fi
3178 fi
3179
3180 case "$ok" in
3181 false)
3182         cppstdin="$x_cpp"
3183         cppminus="$x_minus"
3184         cpprun="$x_cpp"
3185         cpplast="$x_minus"
3186         set X $x_cpp
3187         shift
3188         case "$1" in
3189         "$cpp")
3190                 echo "Perhaps can we force $cc -E using a wrapper..."
3191                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3192                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3193                 then
3194                         echo "Yup, we can."
3195                         cppstdin="$wrapper"
3196                         cppminus='';
3197                 else
3198                         echo "Nope, we'll have to live without it..."
3199                 fi
3200                 ;;
3201         esac
3202         case "$cpprun" in
3203         "$wrapper")
3204                 cpprun=''
3205                 cpplast=''
3206                 ;;
3207         esac
3208         ;;
3209 esac
3210
3211 case "$cppstdin" in
3212 "$wrapper"|'cppstdin') ;;
3213 *) $rm -f $wrapper;;
3214 esac
3215 $rm -f testcpp.c testcpp.out
3216
3217 : decide how portable to be.  Allow command line overrides.
3218 case "$d_portable" in
3219 "$undef") ;;
3220 *)      d_portable="$define" ;;
3221 esac
3222
3223 : set up shell script to do ~ expansion
3224 cat >filexp <<EOSS
3225 $startsh
3226 : expand filename
3227 case "\$1" in
3228  ~/*|~)
3229         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3230         ;;
3231  ~*)
3232         if $test -f /bin/csh; then
3233                 /bin/csh -f -c "glob \$1"
3234                 failed=\$?
3235                 echo ""
3236                 exit \$failed
3237         else
3238                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3239                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3240                 if $test ! -d "\$dir"; then
3241                         me=\`basename \$0\`
3242                         echo "\$me: can't locate home directory for: \$name" >&2
3243                         exit 1
3244                 fi
3245                 case "\$1" in
3246                 */*)
3247                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3248                         ;;
3249                 *)
3250                         echo \$dir
3251                         ;;
3252                 esac
3253         fi
3254         ;;
3255 *)
3256         echo \$1
3257         ;;
3258 esac
3259 EOSS
3260 chmod +x filexp
3261 $eunicefix filexp
3262
3263 : now set up to get a file name
3264 cat <<EOS >getfile
3265 $startsh
3266 EOS
3267 cat <<'EOSC' >>getfile
3268 tilde=''
3269 fullpath=''
3270 already=''
3271 skip=''
3272 none_ok=''
3273 exp_file=''
3274 nopath_ok=''
3275 orig_rp="$rp"
3276 orig_dflt="$dflt"
3277 case "$gfpth" in
3278 '') gfpth='.' ;;
3279 esac
3280
3281 case "$fn" in
3282 *\(*)
3283         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3284         fn=`echo $fn | sed 's/(.*)//'`
3285         ;;
3286 esac
3287
3288 case "$fn" in
3289 *:*)
3290         loc_file=`expr $fn : '.*:\(.*\)'`
3291         fn=`expr $fn : '\(.*\):.*'`
3292         ;;
3293 esac
3294
3295 case "$fn" in
3296 *~*) tilde=true;;
3297 esac
3298 case "$fn" in
3299 */*) fullpath=true;;
3300 esac
3301 case "$fn" in
3302 *+*) skip=true;;
3303 esac
3304 case "$fn" in
3305 *n*) none_ok=true;;
3306 esac
3307 case "$fn" in
3308 *e*) exp_file=true;;
3309 esac
3310 case "$fn" in
3311 *p*) nopath_ok=true;;
3312 esac
3313
3314 case "$fn" in
3315 *f*) type='File';;
3316 *d*) type='Directory';;
3317 *l*) type='Locate';;
3318 esac
3319
3320 what="$type"
3321 case "$what" in
3322 Locate) what='File';;
3323 esac
3324
3325 case "$exp_file" in
3326 '')
3327         case "$d_portable" in
3328         "$define") ;;
3329         *) exp_file=true;;
3330         esac
3331         ;;
3332 esac
3333
3334 cd ..
3335 while test "$type"; do
3336         redo=''
3337         rp="$orig_rp"
3338         dflt="$orig_dflt"
3339         case "$tilde" in
3340         true) rp="$rp (~name ok)";;
3341         esac
3342         . UU/myread
3343         if test -f UU/getfile.ok && \
3344                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3345         then
3346                 value="$ans"
3347                 ansexp="$ans"
3348                 break
3349         fi
3350         case "$ans" in
3351         none)
3352                 value=''
3353                 ansexp=''
3354                 case "$none_ok" in
3355                 true) type='';;
3356                 esac
3357                 ;;
3358         *)
3359                 case "$tilde" in
3360                 '') value="$ans"
3361                         ansexp="$ans";;
3362                 *)
3363                         value=`UU/filexp $ans`
3364                         case $? in
3365                         0)
3366                                 if test "$ans" != "$value"; then
3367                                         echo "(That expands to $value on this system.)"
3368                                 fi
3369                                 ;;
3370                         *) value="$ans";;
3371                         esac
3372                         ansexp="$value"
3373                         case "$exp_file" in
3374                         '') value="$ans";;
3375                         esac
3376                         ;;
3377                 esac
3378                 case "$fullpath" in
3379                 true)
3380                         case "$ansexp" in
3381                         /*) value="$ansexp" ;;
3382                         [a-zA-Z]:/*) value="$ansexp" ;;
3383                         *)
3384                                 redo=true
3385                                 case "$already" in
3386                                 true)
3387                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3388                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3389                                         ;;
3390                                 *)
3391                                 echo "Please give a full path name, starting with slash." >&4
3392                                         case "$tilde" in
3393                                         true)
3394                                 echo "Note that using ~name is ok provided it expands well." >&4
3395                                                 already=true
3396                                                 ;;
3397                                         esac
3398                                 esac
3399                                 ;;
3400                         esac
3401                         ;;
3402                 esac
3403                 case "$redo" in
3404                 '')
3405                         case "$type" in
3406                         File)
3407                                 for fp in $gfpth; do
3408                                         if test "X$fp" = X.; then
3409                                             pf="$ansexp"
3410                                         else    
3411                                             pf="$fp/$ansexp"
3412                                         fi
3413                                         if test -f "$pf"; then
3414                                                 type=''
3415                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3416                                         then
3417                                                 echo "($value is not a plain file, but that's ok.)"
3418                                                 type=''
3419                                         fi
3420                                         if test X"$type" = X; then
3421                                             value="$pf"
3422                                             break
3423                                         fi
3424                                 done
3425                                 ;;
3426                         Directory)
3427                                 for fp in $gfpth; do
3428                                         if test "X$fp" = X.; then
3429                                             dir="$ans"
3430                                             direxp="$ansexp"
3431                                         else    
3432                                             dir="$fp/$ansexp"
3433                                             direxp="$fp/$ansexp"
3434                                         fi
3435                                         if test -d "$direxp"; then
3436                                                 type=''
3437                                                 value="$dir"
3438                                                 break
3439                                         fi
3440                                 done
3441                                 ;;
3442                         Locate)
3443                                 if test -d "$ansexp"; then
3444                                         echo "(Looking for $loc_file in directory $value.)"
3445                                         value="$value/$loc_file"
3446                                         ansexp="$ansexp/$loc_file"
3447                                 fi
3448                                 if test -f "$ansexp"; then
3449                                         type=''
3450                                 fi
3451                                 case "$nopath_ok" in
3452                                 true)   case "$value" in
3453                                         */*) ;;
3454                                         *)      echo "Assuming $value will be in people's path."
3455                                                 type=''
3456                                                 ;;
3457                                         esac
3458                                         ;;
3459                                 esac
3460                                 ;;
3461                         esac
3462
3463                         case "$skip" in
3464                         true) type='';
3465                         esac
3466
3467                         case "$type" in
3468                         '') ;;
3469                         *)
3470                                 if test "$fastread" = yes; then
3471                                         dflt=y
3472                                 else
3473                                         dflt=n
3474                                 fi
3475                                 rp="$what $value doesn't exist.  Use that name anyway?"
3476                                 . UU/myread
3477                                 dflt=''
3478                                 case "$ans" in
3479                                 y*) type='';;
3480                                 *) echo " ";;
3481                                 esac
3482                                 ;;
3483                         esac
3484                         ;;
3485                 esac
3486                 ;;
3487         esac
3488 done
3489 cd UU
3490 ans="$value"
3491 rp="$orig_rp"
3492 dflt="$orig_dflt"
3493 rm -f getfile.ok
3494 test "X$gfpthkeep" != Xy && gfpth=""
3495 EOSC
3496
3497 : What should the include directory be ?
3498 echo " "
3499 $echo $n "Hmm...  $c"
3500 dflt='/usr/include'
3501 incpath=''
3502 mips_type=''
3503 if $test -f /bin/mips && /bin/mips; then
3504         echo "Looks like a MIPS system..."
3505         $cat >usr.c <<'EOCP'
3506 #ifdef SYSTYPE_BSD43
3507 /bsd43
3508 #endif
3509 EOCP
3510         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3511                 dflt='/bsd43/usr/include'
3512                 incpath='/bsd43'
3513                 mips_type='BSD 4.3'
3514         else
3515                 mips_type='System V'
3516         fi
3517         $rm -f usr.c usr.out
3518         echo "and you're compiling with the $mips_type compiler and libraries."
3519         xxx_prompt=y
3520         echo "exit 0" >mips
3521 else
3522         echo "Doesn't look like a MIPS system."
3523         xxx_prompt=n
3524         echo "exit 1" >mips
3525 fi
3526 chmod +x mips
3527 $eunicefix mips
3528 case "$usrinc" in
3529 '') ;;
3530 *) dflt="$usrinc";;
3531 esac
3532 case "$xxx_prompt" in
3533 y)      fn=d/
3534         echo " "
3535         rp='Where are the include files you want to use?'
3536         . ./getfile
3537         usrinc="$ans"
3538         ;;
3539 *)      usrinc="$dflt"
3540         ;;
3541 esac
3542
3543 : Set private lib path
3544 case "$plibpth" in
3545 '') if ./mips; then
3546                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3547         fi;;
3548 esac
3549 case "$libpth" in
3550 ' ') dlist='';;
3551 '') dlist="$loclibpth $plibpth $glibpth";;
3552 *) dlist="$libpth";;
3553 esac
3554
3555 : Now check and see which directories actually exist, avoiding duplicates
3556 libpth=''
3557 for xxx in $dlist
3558 do
3559     if $test -d $xxx; then
3560                 case " $libpth " in
3561                 *" $xxx "*) ;;
3562                 *) libpth="$libpth $xxx";;
3563                 esac
3564     fi
3565 done
3566 $cat <<'EOM'
3567
3568 Some systems have incompatible or broken versions of libraries.  Among
3569 the directories listed in the question below, please remove any you
3570 know not to be holding relevant libraries, and add any that are needed.
3571 Say "none" for none.
3572
3573 EOM
3574 case "$libpth" in
3575 '') dflt='none';;
3576 *)
3577         set X $libpth
3578         shift
3579         dflt=${1+"$@"}
3580         ;;
3581 esac
3582 rp="Directories to use for library searches?"
3583 . ./myread
3584 case "$ans" in
3585 none) libpth=' ';;
3586 *) libpth="$ans";;
3587 esac
3588
3589 : compute shared library extension
3590 case "$so" in
3591 '')
3592         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3593                 dflt='sl'
3594         else
3595                 dflt='so'
3596         fi
3597         ;;
3598 *) dflt="$so";;
3599 esac
3600 $cat <<EOM
3601
3602 On some systems, shared libraries may be available.  Answer 'none' if
3603 you want to suppress searching of shared libraries for the remainder
3604 of this configuration.
3605
3606 EOM
3607 rp='What is the file extension used for shared libraries?'
3608 . ./myread
3609 so="$ans"
3610
3611 : Define several unixisms.
3612 : Hints files or command line option can be used to override them.
3613 : The convoluted testing is in case hints files set either the old
3614 : or the new name.
3615 case "$_exe" in
3616 '')     case "$exe_ext" in
3617     '') ;;
3618         *)      _exe="$exe_ext" ;;
3619         esac
3620         ;;
3621 esac
3622 case "$_a" in
3623 '')     case "$lib_ext" in
3624     '') _a='.a';;
3625         *)      _a="$lib_ext" ;;
3626         esac
3627         ;;
3628 esac
3629 case "$_o" in
3630 '') case "$obj_ext" in
3631         '')     _o='.o';;
3632         *)      _o="$obj_ext";;
3633         esac
3634         ;;
3635 esac
3636 case "$p_" in
3637 '') case "$path_sep" in
3638         '')     p_=':';;
3639         *)      p_="$path_sep";;
3640         esac
3641         ;;
3642 esac
3643 exe_ext=$_exe
3644 lib_ext=$_a
3645 obj_ext=$_o
3646 path_sep=$p_
3647
3648 : Which makefile gets called first.  This is used by make depend.
3649 case "$firstmakefile" in
3650 '') firstmakefile='makefile';;
3651 esac
3652
3653 case "$usesocks" in
3654 $define|true|[yY]*)     dflt='y';;
3655 *) dflt='n';;
3656 esac
3657 cat <<EOM
3658
3659 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3660 Configure must be run with -Dusesocks.
3661
3662 If this doesn't make any sense to you, just accept the default '$dflt'.
3663 EOM
3664 rp='Build Perl for SOCKS?'
3665 . ./myread
3666 case "$ans" in
3667 y|Y)    val="$define" ;;     
3668 *)      val="$undef" ;;
3669 esac
3670 set usesocks
3671 eval $setvar
3672
3673 : Looking for optional libraries
3674 echo " "
3675 echo "Checking for optional libraries..." >&4
3676 case "$libs" in
3677 ' '|'') dflt='';;
3678 *) dflt="$libs";;
3679 esac
3680 case "$libswanted" in
3681 '') libswanted='c_s';;
3682 esac
3683 case "$usesocks" in
3684 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
3685 esac
3686 libsfound=''
3687 libsfiles=''
3688 libsdirs=''
3689 libspath=''
3690 for thisdir in $libpth $xlibpth; do
3691   test -d $thisdir && libspath="$libspath $thisdir"
3692 done
3693 for thislib in $libswanted; do
3694         for thisdir in $libspath; do
3695             xxx=''
3696             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3697                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|tail -1`
3698                 $test -f "$xxx" && eval $libscheck
3699                 $test -f "$xxx" && libstyle=shared
3700             fi
3701             if test ! -f "$xxx"; then
3702                 xxx=$thisdir/lib$thislib.$so
3703                 $test -f "$xxx" && eval $libscheck
3704                 $test -f "$xxx" && libstyle=shared
3705             fi  
3706             if test ! -f "$xxx"; then
3707                 xxx=$thisdir/lib$thislib$_a
3708                 $test -f "$xxx" && eval $libscheck
3709                 $test -f "$xxx" && libstyle=static
3710             fi
3711             if test ! -f "$xxx"; then
3712                 xxx=$thisdir/$thislib$_a
3713                 $test -f "$xxx" && eval $libscheck
3714                 $test -f "$xxx" && libstyle=static
3715             fi
3716             if test ! -f "$xxx"; then
3717                 xxx=$thisdir/lib${thislib}_s$_a
3718                 $test -f "$xxx" && eval $libscheck
3719                 $test -f "$xxx" && libstyle=static
3720                 $test -f "$xxx" && thislib=${thislib}_s
3721             fi
3722             if test ! -f "$xxx"; then
3723                 xxx=$thisdir/Slib$thislib$_a
3724                 $test -f "$xxx" && eval $libscheck
3725                 $test -f "$xxx" && libstyle=static
3726             fi
3727             if $test -f "$xxx"; then
3728                 case "$libstyle" in
3729                 shared) echo "Found -l$thislib (shared)." ;;
3730                 static) echo "Found -l$thislib." ;;
3731                 *)      echo "Found -l$thislib ($libstyle)." ;;
3732                 esac
3733                 case " $dflt " in
3734                 *"-l$thislib "*);;
3735                 *) dflt="$dflt -l$thislib"
3736                    libsfound="$libsfound $xxx"
3737                    yyy=`basename $xxx`
3738                    libsfiles="$libsfiles $yyy"
3739                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
3740                    case " $libsdirs " in
3741                    *" $yyy "*) ;;
3742                    *) libsdirs="$libsdirs $yyy" ;;
3743                    esac
3744                    ;;
3745                 esac
3746                 break
3747             fi  
3748         done
3749         if $test ! -f "$xxx"; then
3750             echo "No -l$thislib."
3751         fi
3752 done
3753 set X $dflt
3754 shift
3755 dflt="$*"
3756 case "$libs" in
3757 '') dflt="$dflt";;
3758 *) dflt="$libs";;
3759 esac
3760 case "$dflt" in
3761 ' '|'') dflt='none';;
3762 esac
3763
3764 $cat <<EOM
3765
3766 In order to compile $package on your machine, a number of libraries
3767 are usually needed.  Include any other special libraries here as well.
3768 Say "none" for none.  The default list is almost always right.
3769 EOM
3770
3771 echo " "
3772 rp="What libraries to use?"
3773 . ./myread
3774 case "$ans" in
3775 none) libs=' ';;
3776 *) libs="$ans";;
3777 esac
3778
3779 : determine optimization, if desired, or use for debug flag also
3780 case "$optimize" in
3781 ' '|$undef) dflt='none';;
3782 '') dflt='-O';;
3783 *) dflt="$optimize";;
3784 esac
3785 $cat <<EOH
3786
3787 By default, $package compiles with the -O flag to use the optimizer.
3788 Alternately, you might want to use the symbolic debugger, which uses
3789 the -g flag (on traditional Unix systems).  Either flag can be
3790 specified here.  To use neither flag, specify the word "none".
3791
3792 EOH
3793 rp="What optimizer/debugger flag should be used?"
3794 . ./myread
3795 optimize="$ans"
3796 case "$optimize" in
3797 'none') optimize=" ";;
3798 esac
3799
3800 dflt=''
3801 : We will not override a previous value, but we might want to
3802 : augment a hint file
3803 case "$hint" in
3804 default|recommended)
3805         case "$gccversion" in
3806         1*) dflt='-fpcc-struct-return' ;;
3807         esac
3808         case "$optimize" in
3809         *-g*) dflt="$dflt -DDEBUGGING";;
3810         esac
3811         case "$gccversion" in
3812         2*) if test -d /etc/conf/kconfig.d &&
3813                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3814                 then
3815                         dflt="$dflt -posix"
3816                 fi
3817                 ;;
3818         esac
3819         case "$gccversion" in
3820         1*) ;;
3821         2.[0-8]*) ;;
3822         ?*)     echo " "
3823                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3824                 echo 'int main(void) { return 0; }' > gcctest.c
3825                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3826                         echo "Yes, it does." 2>&1
3827                         case "$ccflags" in
3828                         *strict-aliasing*) 
3829                                 echo "Leaving current flags $ccflags alone." 2>&1
3830                                 ;;
3831                         *) dflt="$dflt -fno-strict-aliasing" ;;
3832                         esac
3833                 else
3834                         echo "Nope, it doesn't, but that's ok." 2>&1
3835                 fi
3836                 ;;
3837         esac
3838         ;;
3839 esac
3840
3841 case "$mips_type" in
3842 *BSD*|'') inclwanted="$locincpth $usrinc";;
3843 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3844 esac
3845 for thisincl in $inclwanted; do
3846         if $test -d $thisincl; then
3847                 if $test x$thisincl != x$usrinc; then
3848                         case "$dflt" in
3849                         *" -I$thisincl "*);;
3850                         *) dflt="$dflt -I$thisincl ";;
3851                         esac
3852                 fi
3853         fi
3854 done
3855
3856 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3857         xxx=true;
3858 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3859         xxx=true;
3860 else
3861         xxx=false;
3862 fi;
3863 if $xxx; then
3864         case "$dflt" in
3865         *$2*);;
3866         *) dflt="$dflt -D$2";;
3867         esac;
3868 fi'
3869
3870 set signal.h LANGUAGE_C; eval $inctest
3871
3872 case "$usesocks" in
3873 $define)
3874         ccflags="$ccflags -DSOCKS"
3875         ;;
3876 esac
3877
3878 case "$hint" in
3879 default|recommended) dflt="$ccflags $dflt" ;;
3880 *) dflt="$ccflags";;
3881 esac
3882
3883 case "$dflt" in
3884 ''|' ') dflt=none;;
3885 esac
3886
3887 $cat <<EOH
3888
3889 Your C compiler may want other flags.  For this question you should include
3890 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3891 but you should NOT include libraries or ld flags like -lwhatever.  If you
3892 want $package to honor its debug switch, you should include -DDEBUGGING here.
3893 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3894
3895 To use no flags, specify the word "none".
3896
3897 EOH
3898 set X $dflt
3899 shift
3900 dflt=${1+"$@"}
3901 rp="Any additional cc flags?"
3902 . ./myread
3903 case "$ans" in
3904 none) ccflags='';;
3905 *) ccflags="$ans";;
3906 esac
3907
3908 : the following weeds options from ccflags that are of no interest to cpp
3909 cppflags="$ccflags"
3910 case "$gccversion" in
3911 1*) cppflags="$cppflags -D__GNUC__"
3912 esac
3913 case "$mips_type" in
3914 '');;
3915 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3916 esac
3917 case "$cppflags" in
3918 '');;
3919 *)
3920         echo " "
3921         echo "Let me guess what the preprocessor flags are..." >&4
3922         set X $cppflags
3923         shift
3924         cppflags=''
3925         $cat >cpp.c <<'EOM'
3926 #define BLURFL foo
3927
3928 BLURFL xx LFRULB
3929 EOM
3930         previous=''
3931         for flag in $*
3932         do
3933                 case "$flag" in
3934                 -*) ftry="$flag";;
3935                 *) ftry="$previous $flag";;
3936                 esac
3937                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3938                         >cpp1.out 2>/dev/null && \
3939                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3940                         >cpp2.out 2>/dev/null && \
3941                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3942                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3943                 then
3944                         cppflags="$cppflags $ftry"
3945                         previous=''
3946                 else
3947                         previous="$flag"
3948                 fi
3949         done
3950         set X $cppflags
3951         shift
3952         cppflags=${1+"$@"}
3953         case "$cppflags" in
3954         *-*)  echo "They appear to be: $cppflags";;
3955         esac
3956         $rm -f cpp.c cpp?.out
3957         ;;
3958 esac
3959
3960 : flags used in final linking phase
3961 case "$ldflags" in
3962 '') if ./venix; then
3963                 dflt='-i -z'
3964         else
3965                 dflt=''
3966         fi
3967         case "$ccflags" in
3968         *-posix*) dflt="$dflt -posix" ;;
3969         esac
3970         ;;
3971 *) dflt="$ldflags";;
3972 esac
3973
3974 : Try to guess additional flags to pick up local libraries.
3975 for thislibdir in $libpth; do
3976         case " $loclibpth " in
3977         *" $thislibdir "*)
3978                 case "$dflt " in 
3979                 *"-L$thislibdir "*) ;;
3980                 *)  dflt="$dflt -L$thislibdir" ;;
3981                 esac
3982                 ;;
3983         esac
3984 done
3985
3986 case "$dflt" in
3987 '') dflt='none' ;;
3988 esac
3989
3990 $cat <<EOH
3991
3992 Your C linker may need flags.  For this question you should
3993 include -L/whatever and any other flags used by the C linker, but you
3994 should NOT include libraries like -lwhatever.
3995
3996 Make sure you include the appropriate -L/path flags if your C linker
3997 does not normally search all of the directories you specified above,
3998 namely
3999         $libpth
4000 To use no flags, specify the word "none".
4001
4002 EOH
4003
4004 rp="Any additional ld flags (NOT including libraries)?"
4005 . ./myread
4006 case "$ans" in
4007 none) ldflags='';;
4008 *) ldflags="$ans";;
4009 esac
4010 rmlist="$rmlist pdp11"
4011
4012 : coherency check
4013 echo " "
4014 echo "Checking your choice of C compiler and flags for coherency..." >&4
4015 $cat > try.c <<'EOF'
4016 #include <stdio.h>
4017 int main() { printf("Ok\n"); exit(0); }
4018 EOF
4019 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4020 shift
4021 $cat >try.msg <<'EOM'
4022 I've tried to compile and run the following simple program:
4023
4024 EOM
4025 $cat try.c >> try.msg
4026
4027 $cat >> try.msg <<EOM
4028
4029 I used the command:
4030
4031         $*
4032         ./try
4033
4034 and I got the following output:
4035
4036 EOM
4037 dflt=y
4038 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4039         if sh -c './try' >>try.msg 2>&1; then
4040                 xxx=`./try`
4041                 case "$xxx" in
4042                 "Ok") dflt=n ;;
4043                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4044                         case " $libs " in
4045                         *" -lsfio "*)
4046                                 cat >> try.msg <<'EOQS'
4047 If $libs contains -lsfio, and sfio is mis-configured, then it
4048 sometimes (apparently) runs and exits with a 0 status, but with no
4049 output!  It may have to do with sfio's use of _exit vs. exit.
4050
4051 EOQS
4052                                 rp="You have a big problem.  Shall I abort Configure"
4053                                 dflt=y
4054                                 ;;
4055                         esac
4056                         ;;
4057                 esac
4058         else
4059                 echo "The program compiled OK, but exited with status $?." >>try.msg
4060                 rp="You have a problem.  Shall I abort Configure"
4061                 dflt=y
4062         fi
4063 else
4064         echo "I can't compile the test program." >>try.msg
4065         rp="You have a BIG problem.  Shall I abort Configure"
4066         dflt=y
4067 fi
4068 case "$dflt" in
4069 y)
4070         $cat try.msg >&4
4071         case "$knowitall" in
4072         '')
4073                 echo "(The supplied flags or libraries might be incorrect.)"
4074                 ;;
4075         *) dflt=n;;
4076         esac
4077         echo " "
4078         . ./myread
4079         case "$ans" in
4080         n*|N*) ;;
4081         *)      echo "Ok.  Stopping Configure." >&4
4082                 exit 1
4083                 ;;
4084         esac
4085         ;;
4086 n) echo "OK, that should do.";;
4087 esac
4088 $rm -f try try.* core
4089
4090 : define an is-a-typedef? function
4091 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4092 case "$inclist" in
4093 "") inclist="sys/types.h";;
4094 esac;
4095 eval "varval=\$$var";
4096 case "$varval" in
4097 "")
4098         $rm -f temp.c;
4099         for inc in $inclist; do
4100                 echo "#include <$inc>" >>temp.c;
4101         done;
4102         echo "#ifdef $type" >> temp.c;
4103         echo "printf(\"We have $type\");" >> temp.c;
4104         echo "#endif" >> temp.c;
4105         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4106         if $contains $type temp.E >/dev/null 2>&1; then
4107                 eval "$var=\$type";
4108         else
4109                 eval "$var=\$def";
4110         fi;
4111         $rm -f temp.?;;
4112 *) eval "$var=\$varval";;
4113 esac'
4114
4115 : define an is-a-typedef? function that prompts if the type is not available.
4116 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4117 case "$inclist" in
4118 "") inclist="sys/types.h";;
4119 esac;
4120 eval "varval=\$$var";
4121 case "$varval" in
4122 "")
4123         $rm -f temp.c;
4124         for inc in $inclist; do
4125                 echo "#include <$inc>" >>temp.c;
4126         done;
4127         echo "#ifdef $type" >> temp.c;
4128         echo "printf(\"We have $type\");" >> temp.c;
4129         echo "#endif" >> temp.c;
4130         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4131         echo " " ;
4132         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4133         if $contains $type temp.E >/dev/null 2>&1; then
4134                 echo "$type found." >&4;
4135                 eval "$var=\$type";
4136         else
4137                 echo "$type NOT found." >&4;
4138                 dflt="$def";
4139                 . ./myread ;
4140                 eval "$var=\$ans";
4141         fi;
4142         $rm -f temp.?;;
4143 *) eval "$var=\$varval";;
4144 esac'
4145
4146 : define a shorthand compile call
4147 compile='
4148 mc_file=$1;
4149 shift;
4150 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4151 : define a shorthand compile call for compilations that should be ok.
4152 compile_ok='
4153 mc_file=$1;
4154 shift;
4155 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4156
4157 : check for lengths of integral types
4158 echo " "
4159 case "$intsize" in
4160 '')
4161         echo "Checking to see how big your integers are..." >&4
4162         $cat >intsize.c <<'EOCP'
4163 #include <stdio.h>
4164 int main()
4165 {
4166         printf("intsize=%d;\n", (int)sizeof(int));
4167         printf("longsize=%d;\n", (int)sizeof(long));
4168         printf("shortsize=%d;\n", (int)sizeof(short));
4169         exit(0);
4170 }
4171 EOCP
4172         set intsize
4173         if eval $compile_ok && ./intsize > /dev/null; then
4174                 eval `./intsize`
4175                 echo "Your integers are $intsize bytes long."
4176                 echo "Your long integers are $longsize bytes long."
4177                 echo "Your short integers are $shortsize bytes long."
4178         else
4179                 $cat >&4 <<EOM
4180 !
4181 Help! I can't compile and run the intsize test program: please enlighten me!
4182 (This is probably a misconfiguration in your system or libraries, and
4183 you really ought to fix it.  Still, I'll try anyway.)
4184 !
4185 EOM
4186                 dflt=4
4187                 rp="What is the size of an integer (in bytes)?"
4188                 . ./myread
4189                 intsize="$ans"
4190                 dflt=$intsize
4191                 rp="What is the size of a long integer (in bytes)?"
4192                 . ./myread
4193                 longsize="$ans"
4194                 dflt=2
4195                 rp="What is the size of a short integer (in bytes)?"
4196                 . ./myread
4197                 shortsize="$ans"
4198         fi
4199         ;;
4200 esac
4201 $rm -f intsize intsize.*
4202
4203 : see what type lseek is declared as in the kernel
4204 rp="What is the type used for lseek's offset on this system?"
4205 set off_t lseektype long stdio.h sys/types.h
4206 eval $typedef_ask
4207
4208 echo " "
4209 echo "Checking to see how big your file offsets are..." >&4
4210 $cat >try.c <<EOCP
4211 #include <sys/types.h>
4212 #include <stdio.h>
4213 int main()
4214 {
4215     printf("%d\n", (int)sizeof($lseektype));
4216     return(0); 
4217 }
4218 EOCP
4219 set try
4220 if eval $compile_ok; then
4221         lseeksize=`./try`
4222         echo "Your file offsets are $lseeksize bytes long."
4223 else
4224         dflt=$longsize
4225         echo " "
4226         echo "(I can't seem to compile the test program.  Guessing...)"
4227         rp="What is the size of your file offsets (in bytes)?"
4228         . ./myread
4229         lseeksize="$ans"
4230 fi
4231 $rm -f try.c try
4232
4233 : see what type file positions are declared as in the library
4234 rp="What is the type for file position used by fsetpos()?"
4235 set fpos_t fpostype long stdio.h sys/types.h
4236 eval $typedef_ask
4237
4238 echo " "
4239 case "$fpostype" in
4240 *_t) zzz="$fpostype"    ;;
4241 *)   zzz="fpos_t"       ;;
4242 esac
4243 echo "Checking the size of $zzz..." >&4 
4244 cat > try.c <<EOCP
4245 #include <sys/types.h>
4246 #include <stdio.h>
4247 int main() {
4248     printf("%d\n", (int)sizeof($fpostype));
4249     exit(0);
4250 }
4251 EOCP
4252 set try
4253 if eval $compile_ok; then
4254         yyy=`./try`
4255         case "$yyy" in
4256         '')     fpossize=4
4257                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4258                 ;;
4259         *)      fpossize=$yyy
4260                 echo "Your $zzz is $fpossize bytes long."
4261                 ;;
4262         esac
4263 else
4264         dflt="$longsize"
4265         echo " " >&4
4266         echo "(I can't compile the test program.  Guessing...)" >&4
4267         rp="What is the size of your file positions (in bytes)?"
4268         . ./myread
4269         fpossize="$ans"
4270 fi
4271
4272
4273
4274 # Backward compatibility (uselfs is deprecated).
4275 case "$uselfs" in
4276 "$define"|true|[yY]*)
4277         cat <<EOM >&4
4278
4279 *** Configure -Duselfs is deprecated, using -Duselargefiles instead.
4280 EOM
4281         uselargefiles="$define"
4282         ;;
4283 esac                          
4284
4285 case "$lseeksize:$fpossize" in
4286 8:8) cat <<EOM
4287
4288 You can have files larger than 2 gigabytes.
4289 EOM
4290    val="$define" ;;
4291 *)    case "$uselargefiles" in
4292    "$undef"|false|[nN]*) dflt='n' ;;
4293    *)   dflt='y' ;;
4294    esac
4295    cat <<EOM
4296
4297 Perl can be built to understand large files (files larger than 2 gigabytes)
4298 on some systems.  To do so, Configure can be run with -Duselargefiles.
4299
4300 If this doesn't make any sense to you, just accept the default '$dflt'.
4301 EOM
4302    rp='Try to understand large files, if available?'
4303    . ./myread
4304    case "$ans" in
4305    y|Y)         val="$define" ;;
4306    *)           val="$undef"  ;;
4307    esac
4308    ;;
4309 esac
4310 set uselargefiles
4311 eval $setvar
4312 case "$uselargefiles" in
4313 "$define")
4314 : Look for a hint-file generated 'call-back-unit'.  If the
4315 : user has specified that a large files perl is to be built,
4316 : we may need to set or change some other defaults.
4317         if $test -f uselargefiles.cbu; then
4318                 echo "Your platform has some specific hints for large file builds, using them..."
4319                 . ./uselargefiles.cbu
4320                 echo " "
4321                 echo "Rechecking to see how big your file offsets are..." >&4
4322                 $cat >try.c <<EOCP
4323 #include <sys/types.h>
4324 #include <stdio.h>
4325 int main()
4326 {
4327     printf("%d\n", (int)sizeof($lseektype));
4328     return(0); 
4329 }
4330 EOCP
4331                 set try
4332                 if eval $compile_ok; then
4333                         lseeksize=`./try`
4334                         $echo "Your file offsets are now $lseeksize bytes long."
4335                 else
4336                         dflt="$lseeksize"
4337                         echo " "
4338                         echo "(I can't seem to compile the test program.  Guessing...)"
4339                         rp="What is the size of your file offsets (in bytes)?"
4340                         . ./myread
4341                         lseeksize="$ans"
4342                 fi
4343                 case "$fpostype" in
4344                 *_t) zzz="$fpostype"    ;;
4345                 *)   zzz="fpos_t"       ;;
4346                 esac
4347                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4348                 $cat > try.c <<EOCP
4349 #include <sys/types.h>
4350 #include <stdio.h>
4351 int main() {
4352     printf("%d\n", (int)sizeof($fpostype));
4353     exit(0);
4354 }
4355 EOCP
4356                 set try
4357                 if eval $compile_ok; then
4358                         yyy=`./try`
4359                         dflt="$lseeksize"
4360                         case "$yyy" in
4361                         '')     echo " "
4362                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4363                                 ;;
4364                         *)      fpossize=$yyy
4365                                 echo " $fpossize bytes." >&4
4366                                 ;;
4367                         esac
4368                 else
4369                         dflt="$fpossize"
4370                         echo " "
4371                         echo "(I can't compile the test program.  Guessing...)" >&4
4372                         rp="What is the size of your file positions (in bytes)?"
4373                         . ./myread
4374                         fpossize="$ans"
4375                 fi
4376                 $rm -f try.c try
4377         fi
4378         ;;
4379 esac
4380
4381
4382 case "$usemorebits" in
4383 "$define"|true|[yY]*)
4384         use64bitint="$define"
4385         uselongdouble="$define"
4386         usemorebits="$define"
4387         ;;
4388 *)      usemorebits="$undef"
4389         ;;
4390 esac
4391
4392
4393 case "$uselonglong" in
4394 "$define"|true|[yY]*)
4395         cat <<EOM >&4
4396
4397 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
4398 EOM
4399         use64bitint="$define"
4400         ;;
4401 esac                          
4402 case "$use64bits" in
4403 "$define"|true|[yY]*)
4404         cat <<EOM >&4
4405
4406 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
4407 EOM
4408         use64bitint="$define"
4409         ;;
4410 esac                          
4411 case "$use64bitints" in
4412 "$define"|true|[yY]*)
4413         cat <<EOM >&4
4414
4415 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
4416 EOM
4417         use64bitint="$define"
4418         ;;
4419 esac                          
4420 case "$use64bitsint" in
4421 "$define"|true|[yY]*)
4422         cat <<EOM >&4
4423
4424 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
4425 EOM
4426         use64bitint="$define"
4427         ;;
4428 esac                          
4429 case "$uselonglongs" in
4430 "$define"|true|[yY]*)
4431         cat <<EOM >&4
4432
4433 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
4434 EOM
4435         use64bitint="$define"
4436         ;;
4437 esac                          
4438 case "$use64bitsall" in
4439 "$define"|true|[yY]*)
4440         cat <<EOM >&4
4441
4442 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
4443 EOM
4444         use64bitall="$define"
4445         ;;
4446 esac                          
4447
4448 case "$ccflags" in
4449 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
4450 esac
4451 case "$use64bitall" in
4452 "$define"|true|[yY]*) use64bitint="$define" ;;
4453 esac
4454
4455 case "$longsize" in
4456 8) cat <<EOM
4457
4458 You have natively 64-bit long integers.
4459 EOM
4460    val="$define"
4461    ;;
4462 *) case "$use64bitint" in
4463    "$define"|true|[yY]*) dflt='y';;
4464    *) dflt='n';;
4465    esac
4466    cat <<EOM
4467
4468 Perl can be built to take advantage of 64-bit integer types
4469 on some systems.  To do so, Configure can be run with -Duse64bitint.
4470 Choosing this option will most probably introduce binary incompatibilities.
4471
4472 If this doesn't make any sense to you, just accept the default '$dflt'.
4473 EOM
4474    rp='Try to use 64-bit integers, if available?'
4475    . ./myread
4476    case "$ans" in
4477    [yY]*) val="$define" ;;
4478    *)     val="$undef"  ;;
4479    esac
4480    ;;
4481 esac
4482 set use64bitint
4483 eval $setvar
4484
4485 case "$use64bitall" in
4486 "$define"|true|[yY]*) dflt='y' ;;
4487 *) case "$longsize" in
4488    8) dflt='y' ;;
4489    *) dflt='n' ;;
4490    esac
4491    ;;
4492 esac    
4493 cat <<EOM
4494
4495 You may also choose to try maximal 64-bitness.  It means using as much
4496 64-bitness as possible on the platform.  This in turn means even more
4497 binary incompatibilities.  On the other hand, your platform may not
4498 have any more 64-bitness available than what you already have chosen.
4499
4500 If this doesn't make any sense to you, just accept the default '$dflt'.
4501 EOM
4502 rp='Try to use maximal 64-bit support, if available?'
4503 . ./myread
4504 case "$ans" in
4505 [yY]*) val="$define" ;;
4506 *)     val="$undef"  ;;
4507 esac
4508 set use64bitall
4509 eval $setvar
4510 case "$use64bitall" in
4511 "$define")
4512         case "$use64bitint" in
4513         "$undef")
4514                 cat <<EOM
4515
4516 Since you have chosen a maximally 64-bit build, I'm also turning on
4517 the use of 64-bit integers.
4518 EOM
4519                 use64bitint="$define" ;;
4520         esac
4521         ;;
4522 esac
4523
4524 case "$use64bitint" in
4525 "$define"|true|[yY]*)
4526 : Look for a hint-file generated 'call-back-unit'.  If the
4527 : user has specified that a 64-bit perl is to be built,
4528 : we may need to set or change some other defaults.
4529         if $test -f use64bitint.cbu; then
4530                 echo "Your platform has some specific hints for 64-bit integers, using them..."
4531                 . ./use64bitint.cbu
4532         fi
4533         case "$longsize" in
4534         4) case "$archname64" in
4535            '') archname64=64int ;;
4536            esac
4537            ;;
4538         esac
4539         ;;
4540 esac
4541
4542 case "$use64bitall" in
4543 "$define"|true|[yY]*)
4544 : Look for a hint-file generated 'call-back-unit'.  If the
4545 : user has specified that a maximally 64-bit perl is to be built,
4546 : we may need to set or change some other defaults.
4547         if $test -f use64bitall.cbu; then
4548                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4549                 . ./use64bitall.cbu
4550         fi
4551         case "$longsize" in
4552         4) case "$archname64" in
4553            ''|64int) archname64=64all ;;
4554            esac
4555            ;;
4556         esac
4557         ;;
4558 esac
4559
4560 echo " "
4561 echo "Checking for GNU C Library..." >&4
4562 cat >gnulibc.c <<EOM
4563 #include <stdio.h>
4564 int main()
4565 {
4566 #ifdef __GLIBC__
4567     exit(0);
4568 #else
4569     exit(1);
4570 #endif
4571 }
4572 EOM
4573 set gnulibc
4574 if eval $compile_ok && ./gnulibc; then
4575         val="$define"
4576         echo "You are using the GNU C Library"
4577 else
4578         val="$undef"
4579         echo "You are not using the GNU C Library"
4580 fi
4581 $rm -f gnulibc*
4582 set d_gnulibc
4583 eval $setvar
4584
4585 : see if nm is to be used to determine whether a symbol is defined or not
4586 case "$usenm" in
4587 '')
4588         dflt=''
4589         case "$d_gnulibc" in
4590         "$define")
4591                 echo " "
4592                 echo "nm probably won't work on the GNU C Library." >&4
4593                 dflt=n
4594                 ;;
4595         esac
4596         case "$dflt" in
4597         '') 
4598                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4599                         echo " "
4600                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4601                         echo "'nm' won't be sufficient on this sytem." >&4
4602                         dflt=n
4603                 fi
4604                 ;;
4605         esac
4606         case "$dflt" in
4607         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4608                 if $test $dflt -gt 20; then
4609                         dflt=y
4610                 else
4611                         dflt=n
4612                 fi
4613                 ;;
4614         esac
4615         ;;
4616 *)
4617         case "$usenm" in
4618         true|$define) dflt=y;;
4619         *) dflt=n;;
4620         esac
4621         ;;
4622 esac
4623 $cat <<EOM
4624
4625 I can use $nm to extract the symbols from your C libraries. This
4626 is a time consuming task which may generate huge output on the disk (up
4627 to 3 megabytes) but that should make the symbols extraction faster. The
4628 alternative is to skip the 'nm' extraction part and to compile a small
4629 test program instead to determine whether each symbol is present. If
4630 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4631 this may be the best solution.
4632
4633 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4634
4635 EOM
4636 rp="Shall I use $nm to extract C symbols from the libraries?"
4637 . ./myread
4638 case "$ans" in
4639 [Nn]*) usenm=false;;
4640 *) usenm=true;;
4641 esac
4642
4643 runnm=$usenm
4644 case "$reuseval" in
4645 true) runnm=false;;
4646 esac
4647
4648 : nm options which may be necessary
4649 case "$nm_opt" in
4650 '') if $test -f /mach_boot; then
4651                 nm_opt=''       # Mach
4652         elif $test -d /usr/ccs/lib; then
4653                 nm_opt='-p'     # Solaris (and SunOS?)
4654         elif $test -f /dgux; then
4655                 nm_opt='-p'     # DG-UX
4656         elif $test -f /lib64/rld; then
4657                 nm_opt='-p'     # 64-bit Irix
4658         else
4659                 nm_opt=''
4660         fi;;
4661 esac
4662
4663 : nm options which may be necessary for shared libraries but illegal
4664 : for archive libraries.  Thank you, Linux.
4665 case "$nm_so_opt" in
4666 '')     case "$myuname" in
4667         *linux*)
4668                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4669                         nm_so_opt='--dynamic'
4670                 fi
4671                 ;;
4672         esac
4673         ;;
4674 esac
4675
4676 case "$runnm" in
4677 true)
4678 : get list of predefined functions in a handy place
4679 echo " "
4680 case "$libc" in
4681 '') libc=unknown
4682         case "$libs" in
4683         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4684         esac
4685         ;;
4686 esac
4687 libnames='';
4688 case "$libs" in
4689 '') ;;
4690 *)  for thislib in $libs; do
4691         case "$thislib" in
4692         -lc|-lc_s)
4693                 : Handle C library specially below.
4694                 ;;
4695         -l*)
4696                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4697                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4698                         :
4699                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4700                         :
4701                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4702                         :
4703                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4704                         :
4705                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4706                         :
4707                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4708                         :
4709                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4710                         :
4711                 else
4712                         try=''
4713                 fi
4714                 libnames="$libnames $try"
4715                 ;;
4716         *) libnames="$libnames $thislib" ;;
4717         esac
4718         done
4719         ;;
4720 esac
4721 xxx=normal
4722 case "$libc" in
4723 unknown)
4724         set /lib/libc.$so
4725         for xxx in $libpth; do
4726                 $test -r $1 || set $xxx/libc.$so
4727                 : The messy sed command sorts on library version numbers.
4728                 $test -r $1 || \
4729                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4730                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4731                                 h
4732                                 s/[0-9][0-9]*/0000&/g
4733                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4734                                 G
4735                                 s/\n/ /' | \
4736                          sort | $sed -e 's/^.* //'`
4737                 eval set \$$#
4738         done
4739         $test -r $1 || set /usr/ccs/lib/libc.$so
4740         $test -r $1 || set /lib/libsys_s$_a
4741         ;;
4742 *)
4743         set blurfl
4744         ;;
4745 esac
4746 if $test -r "$1"; then
4747         echo "Your (shared) C library seems to be in $1."
4748         libc="$1"
4749 elif $test -r /lib/libc && $test -r /lib/clib; then
4750         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4751         xxx=apollo
4752         libc='/lib/clib /lib/libc'
4753         if $test -r /lib/syslib; then
4754                 echo "(Your math library is in /lib/syslib.)"
4755                 libc="$libc /lib/syslib"
4756         fi
4757 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4758         echo "Your C library seems to be in $libc, as you said before."
4759 elif $test -r $incpath/usr/lib/libc$_a; then
4760         libc=$incpath/usr/lib/libc$_a;
4761         echo "Your C library seems to be in $libc.  That's fine."
4762 elif $test -r /lib/libc$_a; then
4763         libc=/lib/libc$_a;
4764         echo "Your C library seems to be in $libc.  You're normal."
4765 else
4766         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4767                 :
4768         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4769                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4770         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4771                 :
4772         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4773                 :
4774         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4775                 :
4776         else
4777                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4778         fi
4779         if $test -r "$tans"; then
4780                 echo "Your C library seems to be in $tans, of all places."
4781                 libc=$tans
4782         else
4783                 libc='blurfl'
4784         fi
4785 fi
4786 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4787         dflt="$libc"
4788         cat <<EOM
4789
4790 If the guess above is wrong (which it might be if you're using a strange
4791 compiler, or your machine supports multiple models), you can override it here.
4792
4793 EOM
4794 else
4795         dflt=''
4796         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4797         cat >&4 <<EOM
4798 I can't seem to find your C library.  I've looked in the following places:
4799
4800 EOM
4801         $sed 's/^/      /' libpath
4802         cat <<EOM
4803
4804 None of these seems to contain your C library. I need to get its name...
4805
4806 EOM
4807 fi
4808 fn=f
4809 rp='Where is your C library?'
4810 . ./getfile
4811 libc="$ans"
4812
4813 echo " "
4814 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4815 set X `cat libnames`
4816 shift
4817 xxx=files
4818 case $# in 1) xxx=file; esac
4819 echo "Extracting names from the following $xxx for later perusal:" >&4
4820 echo " "
4821 $sed 's/^/      /' libnames >&4
4822 echo " "
4823 $echo $n "This may take a while...$c" >&4
4824
4825 for file in $*; do
4826         case $file in
4827         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4828         *) $nm $nm_opt $file 2>/dev/null;;
4829         esac
4830 done >libc.tmp
4831
4832 $echo $n ".$c"
4833 $grep fprintf libc.tmp > libc.ptf
4834 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4835 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4836 xxx='[ADTSIW]'
4837 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4838         eval $xscan;\
4839         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4840                 eval $xrun
4841 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4842         eval $xscan;\
4843         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4844                 eval $xrun
4845 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4846         eval $xscan;\
4847         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4848                 eval $xrun
4849 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4850         eval $xscan;\
4851         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4852                 eval $xrun
4853 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4854         eval $xscan;\
4855         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4856                 eval $xrun
4857 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4858         eval $xscan;\
4859         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4860                 eval $xrun
4861 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4862                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4863         eval $xscan;\
4864         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4865                 eval $xrun
4866 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4867         eval $xscan;\
4868         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4869                 eval $xrun
4870 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4871         eval $xscan;\
4872         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4873                 eval $xrun
4874 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4875         eval $xscan;\
4876         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4877                 eval $xrun
4878 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4879         eval $xscan;\
4880         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4881                 eval $xrun
4882 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4883         eval $xscan;\
4884         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4885                 eval $xrun
4886 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
4887         eval $xscan;\
4888         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4889                 eval $xrun
4890 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
4891         eval $xscan;\
4892         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4893                 eval $xrun
4894 else
4895         $nm -p $* 2>/dev/null >libc.tmp
4896         $grep fprintf libc.tmp > libc.ptf
4897         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4898                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4899         then
4900                 nm_opt='-p'
4901                 eval $xrun
4902         else
4903                 echo " "
4904                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
4905                 com=''
4906                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
4907                         for thisname in $libnames $libc; do
4908                                 $ar t $thisname >>libc.tmp
4909                         done
4910                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
4911                         echo "Ok." >&4
4912                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
4913                         # Repeat libc to extract forwarders to DLL entries too
4914                         for thisname in $libnames $libc; do
4915                                 $ar tv $thisname >>libc.tmp
4916                                 # Revision 50 of EMX has bug in $ar.
4917                                 # it will not extract forwarders to DLL entries
4918                                 # Use emximp which will extract exactly them.
4919                                 emximp -o tmp.imp $thisname \
4920                                     2>/dev/null && \
4921                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
4922                                     < tmp.imp >>libc.tmp
4923                                 $rm tmp.imp
4924                         done
4925                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
4926                         echo "Ok." >&4
4927                 else
4928                         echo "$ar didn't seem to work right." >&4
4929                         echo "Maybe this is a Cray...trying bld instead..." >&4
4930                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
4931                         then
4932                                 for thisname in $libnames; do
4933                                         bld t $libnames | \
4934                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
4935                                         $ar t $thisname >>libc.tmp
4936                                 done
4937                                 echo "Ok." >&4
4938                         else
4939                                 echo "That didn't work either.  Giving up." >&4
4940                                 exit 1
4941                         fi
4942                 fi
4943         fi
4944 fi
4945 nm_extract="$com"
4946 if $test -f /lib/syscalls.exp; then
4947         echo " "
4948         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4949         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
4950 fi
4951 ;;
4952 esac
4953 $rm -f libnames libpath
4954
4955 : is a C symbol defined?
4956 csym='tlook=$1;
4957 case "$3" in
4958 -v) tf=libc.tmp; tc=""; tdc="";;
4959 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4960 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4961 esac;
4962 tx=yes;
4963 case "$reuseval-$4" in
4964 true-) ;;
4965 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4966 esac;
4967 case "$tx" in
4968 yes)
4969         case "$runnm" in
4970         true)
4971                 if $contains $tlook $tf >/dev/null 2>&1;
4972                 then tval=true;
4973                 else tval=false;
4974                 fi;;
4975         *)
4976                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4977                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4978                 then tval=true;
4979                 else tval=false;
4980                 fi;
4981                 $rm -f t t.c;;
4982         esac;;
4983 *)
4984         case "$tval" in
4985         $define) tval=true;;
4986         *) tval=false;;
4987         esac;;
4988 esac;
4989 eval "$2=$tval"'
4990
4991 : define an is-in-libc? function
4992 inlibc='echo " "; td=$define; tu=$undef;
4993 sym=$1; var=$2; eval "was=\$$2";
4994 tx=yes;
4995 case "$reuseval$was" in
4996 true) ;;
4997 true*) tx=no;;
4998 esac;
4999 case "$tx" in
5000 yes)
5001         set $sym tres -f;
5002         eval $csym;
5003         case "$tres" in
5004         true)
5005                 echo "$sym() found." >&4;
5006                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5007         *)
5008                 echo "$sym() NOT found." >&4;
5009                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5010         esac;;
5011 *)
5012         case "$was" in
5013         $define) echo "$sym() found." >&4;;
5014         *) echo "$sym() NOT found." >&4;;
5015         esac;;
5016 esac'
5017
5018 : see if sqrtl exists
5019 set sqrtl d_sqrtl
5020 eval $inlibc
5021
5022 case "$ccflags" in
5023 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5024 esac
5025
5026 case "$uselongdouble" in
5027 $define|true|[yY]*)     dflt='y';;
5028 *) dflt='n';;
5029 esac
5030 cat <<EOM
5031
5032 Perl can be built to take advantage of long doubles which
5033 (if available) may give more accuracy and range for floating point numbers.
5034
5035 If this doesn't make any sense to you, just accept the default '$dflt'.
5036 EOM
5037 rp='Try to use long doubles if available?'
5038 . ./myread
5039 case "$ans" in
5040 y|Y)    val="$define"   ;;
5041 *)      val="$undef"    ;;
5042 esac
5043 set uselongdouble
5044 eval $setvar
5045
5046 case "$uselongdouble" in
5047 true|[yY]*) uselongdouble="$define" ;;
5048 esac
5049
5050 case "$uselongdouble" in
5051 $define)
5052 : Look for a hint-file generated 'call-back-unit'.  If the
5053 : user has specified that long doubles should be used,
5054 : we may need to set or change some other defaults.
5055         if $test -f uselongdouble.cbu; then
5056                 echo "Your platform has some specific hints for long doubles, using them..."
5057                 . ./uselongdouble.cbu
5058         else
5059                 $cat <<EOM
5060 (Your platform doesn't have any specific hints for long doubles.)
5061 EOM
5062         fi
5063         ;;
5064 esac
5065
5066 case "$uselongdouble:$d_sqrtl" in
5067 $define:$undef)
5068                 $cat <<EOM >&4
5069
5070 *** You requested the use of long doubles but you do not seem to have
5071 *** the mathematic functions for long doubles.  I'm disabling the use
5072 *** of long doubles.
5073
5074 EOM
5075         uselongdouble=$undef
5076         ;;
5077 esac
5078
5079 : check for length of double
5080 echo " "
5081 case "$doublesize" in
5082 '')
5083         echo "Checking to see how big your double precision numbers are..." >&4
5084         $cat >try.c <<'EOCP'
5085 #include <stdio.h>
5086 int main()
5087 {
5088     printf("%d\n", (int)sizeof(double));
5089     exit(0);
5090 }
5091 EOCP
5092         set try
5093         if eval $compile_ok; then
5094                 doublesize=`./try`
5095                 echo "Your double is $doublesize bytes long."
5096         else
5097                 dflt='8'
5098                 echo "(I can't seem to compile the test program.  Guessing...)"
5099                 rp="What is the size of a double precision number (in bytes)?"
5100                 . ./myread
5101                 doublesize="$ans"
5102         fi
5103         ;;
5104 esac
5105 $rm -f try.c try
5106
5107 : check for long doubles
5108 echo " "
5109 echo "Checking to see if you have long double..." >&4
5110 echo 'int main() { long double x = 7.0; }' > try.c
5111 set try
5112 if eval $compile; then
5113         val="$define"
5114         echo "You have long double."
5115 else
5116         val="$undef"
5117         echo "You do not have long double."
5118 fi
5119 $rm try.*
5120 set d_longdbl
5121 eval $setvar
5122
5123 : check for length of long double
5124 case "${d_longdbl}${longdblsize}" in
5125 $define)
5126         echo " "
5127         echo "Checking to see how big your long doubles are..." >&4
5128         $cat >try.c <<'EOCP'
5129 #include <stdio.h>
5130 int main()
5131 {
5132         printf("%d\n", sizeof(long double));
5133 }
5134 EOCP
5135         set try
5136         set try
5137         if eval $compile; then
5138                 longdblsize=`./try$exe_ext`
5139                 echo "Your long doubles are $longdblsize bytes long."
5140         else
5141                 dflt='8'
5142                 echo " "
5143                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
5144                 rp="What is the size of a long double (in bytes)?"
5145                 . ./myread
5146                 longdblsize="$ans"
5147         fi
5148         if $test "X$doublesize" = "X$longdblsize"; then
5149                 echo "(That isn't any different from an ordinary double.)"
5150         fi      
5151         ;;
5152 esac
5153 $rm -f try.* try
5154
5155 : determine the architecture name
5156 echo " "
5157 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
5158         tarch=`arch`"-$osname"
5159 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
5160         if uname -m > tmparch 2>&1 ; then
5161                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5162                         -e 's/$/'"-$osname/" tmparch`
5163         else
5164                 tarch="$osname"
5165         fi
5166         $rm -f tmparch
5167 else
5168         tarch="$osname"
5169 fi
5170 case "$myarchname" in
5171 ''|"$tarch") ;;
5172 *)
5173         echo "(Your architecture name used to be $myarchname.)"
5174         archname=''
5175         ;;
5176 esac
5177 myarchname="$tarch"
5178 case "$archname" in
5179 '') dflt="$tarch";;
5180 *) dflt="$archname";;
5181 esac
5182 rp='What is your architecture name'
5183 . ./myread
5184 archname="$ans"
5185 case "$usethreads" in
5186 $define)
5187         echo "Threads selected." >&4
5188         case "$archname" in
5189         *-thread*) echo "...and architecture name already has -thread." >&4
5190                 ;;
5191         *)      archname="$archname-thread"
5192                 echo "...setting architecture name to $archname." >&4
5193                 ;;
5194         esac
5195         ;;
5196 esac
5197 case "$usemultiplicity" in
5198 $define)
5199         echo "Multiplicity selected." >&4
5200         case "$archname" in
5201         *-multi*) echo "...and architecture name already has -multi." >&4
5202                 ;;
5203         *)      archname="$archname-multi"
5204                 echo "...setting architecture name to $archname." >&4
5205                 ;;
5206         esac
5207         ;;
5208 esac
5209 case "$use64bitint$use64bitall" in
5210 *"$define"*)
5211         case "$archname64" in
5212         '')
5213                 echo "This architecture is naturally 64-bit, not changing architecture name." >&4
5214                 ;;
5215         *)
5216                 case "$use64bitint" in
5217                 "$define") echo "64 bit integers selected." >&4 ;;
5218                 esac
5219                 case "$use64bitall" in
5220                 "$define") echo "Maximal 64 bitness selected." >&4 ;;
5221                 esac
5222                 case "$archname" in
5223                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
5224                         ;;
5225                 *)      archname="$archname-$archname64"
5226                         echo "...setting architecture name to $archname." >&4
5227                         ;;
5228                 esac
5229                 ;;
5230         esac
5231 esac
5232 case "$uselongdouble" in
5233 $define)
5234         echo "Long doubles selected." >&4
5235         case "$longdblsize" in
5236         $doublesize)
5237                 "...but long doubles are equal to doubles, not changing architecture name." >&4
5238                 ;;
5239         *)
5240                 case "$archname" in
5241                 *-ld*) echo "...and architecture name already has -ld." >&4
5242                         ;;
5243                 *)      archname="$archname-ld"
5244                         echo "...setting architecture name to $archname." >&4
5245                         ;;
5246                 esac
5247                 ;;
5248         esac
5249         ;;
5250 esac
5251
5252 : determine root of directory hierarchy where package will be installed.
5253 case "$prefix" in
5254 '')
5255         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
5256         ;;
5257 *)
5258         dflt="$prefix"
5259         ;;
5260 esac
5261 $cat <<EOM
5262
5263 By default, $package will be installed in $dflt/bin, manual pages
5264 under $dflt/man, etc..., i.e. with $dflt as prefix for all
5265 installation directories. Typically this is something like /usr/local.
5266 If you wish to have binaries under /usr/bin but other parts of the
5267 installation under /usr/local, that's ok: you will be prompted
5268 separately for each of the installation directories, the prefix being
5269 only used to set the defaults.
5270
5271 EOM
5272 fn=d~
5273 rp='Installation prefix to use?'
5274 . ./getfile
5275 oldprefix=''
5276 case "$prefix" in
5277 '') ;;
5278 *)
5279         case "$ans" in
5280         "$prefix") ;;
5281         *) oldprefix="$prefix";;
5282         esac
5283         ;;
5284 esac
5285 prefix="$ans"
5286 prefixexp="$ansexp"
5287
5288 : is AFS running?
5289 echo " "
5290 case "$afs" in
5291 $define|true)   afs=true ;;
5292 $undef|false)   afs=false ;;
5293 *)      if test -d /afs; then
5294                 afs=true
5295         else
5296                 afs=false
5297         fi
5298         ;;
5299 esac
5300 if $afs; then
5301         echo "AFS may be running... I'll be extra cautious then..." >&4
5302 else
5303         echo "AFS does not seem to be running..." >&4
5304 fi
5305
5306 : determine installation prefix for where package is to be installed.
5307 if $afs; then 
5308 $cat <<EOM
5309
5310 Since you are running AFS, I need to distinguish the directory in which
5311 files will reside from the directory in which they are installed (and from
5312 which they are presumably copied to the former directory by occult means).
5313
5314 EOM
5315         case "$installprefix" in
5316         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
5317         *) dflt="$installprefix";;
5318         esac
5319 else
5320 $cat <<EOM
5321
5322 In some special cases, particularly when building $package for distribution,
5323 it is convenient to distinguish between the directory in which files should 
5324 be installed from the directory ($prefix) in which they 
5325 will eventually reside.  For most users, these two directories are the same.
5326
5327 EOM
5328         case "$installprefix" in
5329         '') dflt=$prefix ;;
5330         *) dflt=$installprefix;;
5331         esac
5332 fi
5333 fn=d~
5334 rp='What installation prefix should I use for installing files?'
5335 . ./getfile
5336 installprefix="$ans"
5337 installprefixexp="$ansexp"
5338
5339 : set the prefixit variable, to compute a suitable default value
5340 prefixit='case "$3" in
5341 ""|none)
5342         case "$oldprefix" in
5343         "") eval "$1=\"\$$2\"";;
5344         *)
5345                 case "$3" in
5346                 "") eval "$1=";;
5347                 none)
5348                         eval "tp=\"\$$2\"";
5349                         case "$tp" in
5350                         ""|" ") eval "$1=\"\$$2\"";;
5351                         *) eval "$1=";;
5352                         esac;;
5353                 esac;;
5354         esac;;
5355 *)
5356         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
5357         case "$tp" in
5358         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
5359         /*-$oldprefix/*|\~*-$oldprefix/*)
5360                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
5361         *) eval "$1=\"\$$2\"";;
5362         esac;;
5363 esac'
5364
5365
5366 : get the patchlevel
5367 echo " "
5368 echo "Getting the current patchlevel..." >&4
5369 if $test -r $rsrc/patchlevel.h;then
5370         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
5371         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
5372         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5373         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
5374         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
5375         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
5376 else
5377         revision=0
5378         patchlevel=0
5379         subversion=0
5380         api_revision=0
5381         api_version=0
5382         api_subversion=0
5383 fi
5384 $echo "(You have $package version $patchlevel subversion $subversion.)"
5385 case "$osname" in
5386 dos|vms)
5387         : XXX Should be a Configure test for double-dots in filenames.
5388         version=`echo $revision $patchlevel $subversion | \
5389                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5390         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5391                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
5392         ;;
5393 *)
5394         version=`echo $revision $patchlevel $subversion | \
5395                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5396         api_versionstring=`echo $api_revision $api_version $api_subversion | \
5397                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
5398         ;;
5399 esac
5400 : Special case the 5.005_xx maintenance series, which used 5.005
5401 : without any subversion label as a subdirectory in $sitelib
5402 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
5403         api_versionstring='5.005'
5404 fi
5405
5406 : determine installation style
5407 : For now, try to deduce it from prefix unless it is already set.
5408 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
5409 case "$installstyle" in
5410 '')     case "$prefix" in
5411                 *perl*) dflt='lib';;
5412                 *) dflt='lib/perl5' ;;
5413         esac
5414         ;;
5415 *)      dflt="$installstyle" ;;
5416 esac
5417 : Probably not worth prompting for this since we prompt for all
5418 : the directories individually, and the prompt would be too long and
5419 : confusing anyway.
5420 installstyle=$dflt
5421
5422 : determine where private library files go
5423 : Usual default is /usr/local/lib/perl5/$version.
5424 : Also allow things like /opt/perl/lib/$version, since 
5425 : /opt/perl/lib/perl5... would be redundant.
5426 : The default "style" setting is made in installstyle.U
5427 case "$installstyle" in
5428 *lib/perl5*) set dflt privlib lib/$package/$version ;;
5429 *)       set dflt privlib lib/$version ;;
5430 esac
5431 eval $prefixit
5432 $cat <<EOM
5433
5434 There are some auxiliary files for $package that need to be put into a
5435 private library directory that is accessible by everyone.
5436
5437 EOM
5438 fn=d~+
5439 rp='Pathname where the private library files will reside?'
5440 . ./getfile
5441 privlib="$ans"
5442 privlibexp="$ansexp"
5443 : Change installation prefix, if necessary.
5444 if $test X"$prefix" != X"$installprefix"; then
5445         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
5446 else
5447         installprivlib="$privlibexp"
5448 fi
5449
5450 : set the prefixup variable, to restore leading tilda escape
5451 prefixup='case "$prefixexp" in
5452 "$prefix") ;;
5453 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
5454 esac'
5455
5456 : determine where public architecture dependent libraries go
5457 set archlib archlib
5458 eval $prefixit
5459 : privlib default is /usr/local/lib/$package/$version
5460 : archlib default is /usr/local/lib/$package/$version/$archname
5461 : privlib may have an optional trailing /share.
5462 tdflt=`echo $privlib | $sed 's,/share$,,'`
5463 tdflt=$tdflt/$archname
5464 case "$archlib" in
5465 '')     dflt=$tdflt
5466         ;;
5467 *)      dflt="$archlib"
5468     ;;
5469 esac
5470 $cat <<EOM
5471
5472 $spackage contains architecture-dependent library files.  If you are
5473 sharing libraries in a heterogeneous environment, you might store
5474 these files in a separate location.  Otherwise, you can just include
5475 them with the rest of the public library files.
5476
5477 EOM
5478 fn=d+~
5479 rp='Where do you want to put the public architecture-dependent libraries?'
5480 . ./getfile
5481 archlib="$ans"
5482 archlibexp="$ansexp"
5483 if $test X"$archlib" = X"$privlib"; then
5484         d_archlib="$undef"
5485 else
5486         d_archlib="$define"
5487 fi
5488 : Change installation prefix, if necessary.
5489 if $test X"$prefix" != X"$installprefix"; then
5490         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
5491 else
5492         installarchlib="$archlibexp"
5493 fi
5494
5495
5496 : Binary compatibility with 5.005 is not possible for builds
5497 : with advanced features
5498 case "$usethreads$usemultiplicity" in
5499 *define*)
5500         bincompat5005="$undef"
5501         d_bincompat5005="$undef"
5502         ;;
5503 *)      $cat <<EOM
5504
5505 This version of Perl can be compiled for binary compatibility with 5.005.
5506 If you decide to do so, you will be able to continue using most of the
5507 extensions that were compiled for Perl 5.005.
5508
5509 EOM
5510         case "$bincompat5005$d_bincompat5005" in
5511         *"$undef"*) dflt=n ;;
5512         *) dflt=y ;;
5513         esac
5514         rp='Binary compatibility with Perl 5.005?'
5515         . ./myread
5516         case "$ans" in
5517         y*) val="$define" ;;
5518         *)  val="$undef" ;;
5519         esac
5520         set d_bincompat5005
5521         eval $setvar
5522         case "$d_bincompat5005" in
5523         "$define")
5524                 bincompat5005="$define"
5525                 ;;
5526         *)      bincompat5005="$undef"
5527                 d_bincompat5005="$undef"
5528                 ;;
5529         esac
5530         ;;
5531 esac
5532
5533
5534 : see if setuid scripts can be secure
5535 $cat <<EOM
5536
5537 Some kernels have a bug that prevents setuid #! scripts from being
5538 secure.  Some sites have disabled setuid #! scripts because of this.
5539
5540 First let's decide if your kernel supports secure setuid #! scripts.
5541 (If setuid #! scripts would be secure but have been disabled anyway,
5542 don't say that they are secure if asked.)
5543
5544 EOM
5545
5546 val="$undef"
5547 if $test -d /dev/fd; then
5548         echo "#!$ls" >reflect
5549         chmod +x,u+s reflect
5550         ./reflect >flect 2>&1
5551         if $contains "/dev/fd" flect >/dev/null; then
5552                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
5553                 val="$define"
5554         else
5555                 $cat <<EOM
5556 If you are not sure if they are secure, I can check but I'll need a
5557 username and password different from the one you are using right now.
5558 If you don't have such a username or don't want me to test, simply
5559 enter 'none'.
5560
5561 EOM
5562                 rp='Other username to test security of setuid scripts with?'
5563                 dflt='none'
5564                 . ./myread
5565                 case "$ans" in
5566                 n|none)
5567                         case "$d_suidsafe" in
5568                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
5569                                 dflt=n;;
5570                         "$undef")
5571                                 echo "Well, the $hint value is *not* secure." >&4
5572                                 dflt=n;;
5573                         *)      echo "Well, the $hint value *is* secure." >&4
5574                                 dflt=y;;
5575                         esac
5576                         ;;
5577                 *)
5578                         $rm -f reflect flect
5579                         echo "#!$ls" >reflect
5580                         chmod +x,u+s reflect
5581                         echo >flect
5582                         chmod a+w flect
5583                         echo '"su" will (probably) prompt you for '"$ans's password."
5584                         su $ans -c './reflect >flect'
5585                         if $contains "/dev/fd" flect >/dev/null; then
5586                                 echo "Okay, it looks like setuid scripts are secure." >&4
5587                                 dflt=y
5588                         else
5589                                 echo "I don't think setuid scripts are secure." >&4
5590                                 dflt=n
5591                         fi
5592                         ;;
5593                 esac
5594                 rp='Does your kernel have *secure* setuid scripts?'
5595                 . ./myread
5596                 case "$ans" in
5597                 [yY]*)  val="$define";;
5598                 *)      val="$undef";;
5599                 esac
5600         fi
5601 else
5602         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
5603         echo "(That's for file descriptors, not floppy disks.)"
5604         val="$undef"
5605 fi
5606 set d_suidsafe
5607 eval $setvar
5608
5609 $rm -f reflect flect
5610
5611 : now see if they want to do setuid emulation
5612 echo " "
5613 val="$undef"
5614 case "$d_suidsafe" in
5615 "$define")
5616         val="$undef"
5617         echo "No need to emulate SUID scripts since they are secure here." >& 4
5618         ;;
5619 *)
5620         $cat <<EOM
5621 Some systems have disabled setuid scripts, especially systems where
5622 setuid scripts cannot be secure.  On systems where setuid scripts have
5623 been disabled, the setuid/setgid bits on scripts are currently
5624 useless.  It is possible for $package to detect those bits and emulate
5625 setuid/setgid in a secure fashion.  This emulation will only work if
5626 setuid scripts have been disabled in your kernel.
5627
5628 EOM
5629         case "$d_dosuid" in
5630         "$define") dflt=y ;;
5631         *) dflt=n ;;
5632         esac
5633         rp="Do you want to do setuid/setgid emulation?"
5634         . ./myread
5635         case "$ans" in
5636         [yY]*)  val="$define";;
5637         *)      val="$undef";;
5638         esac
5639         ;;
5640 esac
5641 set d_dosuid
5642 eval $setvar
5643
5644 : determine filename position in cpp output
5645 echo " "
5646 echo "Computing filename position in cpp output for #include directives..." >&4
5647 echo '#include <stdio.h>' > foo.c
5648 $cat >fieldn <<EOF
5649 $startsh
5650 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5651 $grep '^[       ]*#.*stdio\.h' | \
5652 while read cline; do
5653         pos=1
5654         set \$cline
5655         while $test \$# -gt 0; do
5656                 if $test -r \`echo \$1 | $tr -d '"'\`; then
5657                         echo "\$pos"
5658                         exit 0
5659                 fi
5660                 shift
5661                 pos=\`expr \$pos + 1\`
5662         done
5663 done
5664 EOF
5665 chmod +x fieldn
5666 fieldn=`./fieldn`
5667 $rm -f foo.c fieldn
5668 case $fieldn in
5669 '') pos='???';;
5670 1) pos=first;;
5671 2) pos=second;;
5672 3) pos=third;;
5673 *) pos="${fieldn}th";;
5674 esac
5675 echo "Your cpp writes the filename in the $pos field of the line."
5676
5677 : locate header file
5678 $cat >findhdr <<EOF
5679 $startsh
5680 wanted=\$1
5681 name=''
5682 for usrincdir in $usrinc
5683 do
5684         if test -f \$usrincdir/\$wanted; then
5685                 echo "\$usrincdir/\$wanted"
5686                 exit 0
5687         fi
5688 done
5689 awkprg='{ print \$$fieldn }'
5690 echo "#include <\$wanted>" > foo\$\$.c
5691 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5692 $grep "^[       ]*#.*\$wanted" | \
5693 while read cline; do
5694         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5695         case "\$name" in
5696         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5697         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5698         *) exit 2;;
5699         esac;
5700 done;
5701 #
5702 # status = 0: grep returned 0 lines, case statement not executed
5703 # status = 1: headerfile found
5704 # status = 2: while loop executed, no headerfile found
5705 #
5706 status=\$?
5707 $rm -f foo\$\$.c;
5708 if test \$status -eq 1; then
5709         exit 0;
5710 fi
5711 exit 1
5712 EOF
5713 chmod +x findhdr
5714
5715 : define an alternate in-header-list? function
5716 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5717 cont=true; xxf="echo \"<\$1> found.\" >&4";
5718 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5719 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5720 esac;
5721 case $# in 4) instead=instead;; *) instead="at last";; esac;
5722 while $test "$cont"; do
5723         xxx=`./findhdr $1`
5724         var=$2; eval "was=\$$2";
5725         if $test "$xxx" && $test -r "$xxx";
5726         then eval $xxf;
5727         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5728                 cont="";
5729         else eval $xxnf;
5730         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5731         set $yyy; shift; shift; yyy=$@;
5732         case $# in 0) cont="";;
5733         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5734                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5735         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5736                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5737         esac;
5738 done;
5739 while $test "$yyy";
5740 do set $yyy; var=$2; eval "was=\$$2";
5741         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5742         set $yyy; shift; shift; yyy=$@;
5743 done'
5744
5745 : see if this is a malloc.h system
5746 set malloc.h i_malloc
5747 eval $inhdr
5748
5749 : see if stdlib is available
5750 set stdlib.h i_stdlib
5751 eval $inhdr
5752
5753 : determine which malloc to compile in
5754 echo " "
5755 case "$usemymalloc" in
5756 ''|[yY]*|true|$define)  dflt='y' ;;
5757 *)      dflt='n' ;;
5758 esac
5759 rp="Do you wish to attempt to use the malloc that comes with $package?"
5760 . ./myread
5761 usemymalloc="$ans"
5762 case "$ans" in
5763 y*|true)
5764         usemymalloc='y'
5765         mallocsrc='malloc.c'
5766         mallocobj="malloc$_o"
5767         d_mymalloc="$define"
5768         case "$libs" in
5769         *-lmalloc*)
5770                 : Remove malloc from list of libraries to use
5771                 echo "Removing unneeded -lmalloc from library list" >&4
5772                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5773                 shift
5774                 libs="$*"
5775                 echo "libs = $libs" >&4
5776                 ;;
5777         esac
5778         ;;
5779 *)
5780         usemymalloc='n'
5781         mallocsrc=''
5782         mallocobj=''
5783         d_mymalloc="$undef"
5784         ;;
5785 esac
5786
5787 : compute the return types of malloc and free
5788 echo " "
5789 $cat >malloc.c <<END
5790 #$i_malloc I_MALLOC
5791 #$i_stdlib I_STDLIB
5792 #include <stdio.h>
5793 #include <sys/types.h>
5794 #ifdef I_MALLOC
5795 #include <malloc.h>
5796 #endif
5797 #ifdef I_STDLIB
5798 #include <stdlib.h>
5799 #endif
5800 #ifdef TRY_MALLOC
5801 void *malloc();
5802 #endif
5803 #ifdef TRY_FREE
5804 void free();
5805 #endif
5806 END
5807 case "$malloctype" in
5808 '')
5809         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5810                 malloctype='void *'
5811         else
5812                 malloctype='char *'
5813         fi
5814         ;;
5815 esac
5816 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5817
5818 case "$freetype" in
5819 '')
5820         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5821                 freetype='void'
5822         else
5823                 freetype='int'
5824         fi
5825         ;;
5826 esac
5827 echo "Your system uses $freetype free(), it would seem." >&4
5828 $rm -f malloc.[co]
5829 $cat <<EOM
5830
5831 After $package is installed, you may wish to install various
5832 add-on modules and utilities.  Typically, these add-ons will
5833 be installed under $prefix with the rest
5834 of this package.  However, you may wish to install such add-ons
5835 elsewhere under a different prefix.
5836
5837 If you do not wish to put everything under a single prefix, that's
5838 ok.  You will be prompted for the individual locations; this siteprefix
5839 is only used to suggest the defaults.
5840
5841 The default should be fine for most people.
5842
5843 EOM
5844 fn=d~+
5845 rp='Installation prefix to use for add-on modules and utilities?'
5846 : XXX Here might be another good place for an installstyle setting.
5847 case "$siteprefix" in
5848 '') dflt=$prefix ;;
5849 *)  dflt=$siteprefix ;;
5850 esac
5851 . ./getfile
5852 : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5853 oldsiteprefix=''
5854 case "$siteprefix" in
5855 '') ;;
5856 *)      case "$ans" in
5857         "$prefix") ;;
5858         *) oldsiteprefix="$prefix";;
5859         esac
5860         ;;
5861 esac
5862 siteprefix="$ans"
5863 siteprefixexp="$ansexp"
5864
5865 : determine where site specific libraries go.
5866 : Usual default is /usr/local/lib/perl5/site_perl/$version
5867 : The default "style" setting is made in installstyle.U
5868 : XXX No longer works with Prefixit stuff.
5869 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5870 case "$sitelib" in
5871 '') case "$installstyle" in
5872         *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5873         *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5874         esac
5875         ;;
5876 *)      dflt="$sitelib"
5877         ;;
5878 esac
5879 $cat <<EOM
5880
5881 The installation process will create a directory for
5882 site-specific extensions and modules.  Most users find it convenient
5883 to place all site-specific files in this directory rather than in the
5884 main distribution directory.
5885
5886 EOM
5887 fn=d~+
5888 rp='Pathname for the site-specific library files?'
5889 . ./getfile
5890 sitelib="$ans"
5891 sitelibexp="$ansexp"
5892 sitelib_stem=`echo "$sitelibexp" | sed "s,/$version$,,"`
5893 : Change installation prefix, if necessary.
5894 if $test X"$prefix" != X"$installprefix"; then
5895         installsitelib=`echo $sitelibexp | $sed "s#^$prefix#$installprefix#"`
5896 else
5897         installsitelib="$sitelibexp"
5898 fi
5899
5900 : determine where site specific architecture-dependent libraries go.
5901 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
5902 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
5903 : sitelib may have an optional trailing /share.
5904 case "$sitearch" in
5905 '')     dflt=`echo $sitelib | $sed 's,/share$,,'`
5906         dflt="$dflt/$archname"
5907         ;;
5908 *)      dflt="$sitearch"
5909         ;;
5910 esac
5911 set sitearch sitearch none
5912 eval $prefixit
5913 $cat <<EOM
5914
5915 The installation process will also create a directory for
5916 architecture-dependent site-specific extensions and modules.
5917
5918 EOM
5919 fn=d~+
5920 rp='Pathname for the site-specific architecture-dependent library files?'
5921 . ./getfile
5922 sitearch="$ans"
5923 sitearchexp="$ansexp"
5924 : Change installation prefix, if necessary.
5925 if $test X"$prefix" != X"$installprefix"; then
5926         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
5927 else
5928         installsitearch="$sitearchexp"
5929 fi
5930
5931 $cat <<EOM
5932
5933 The installation process will also create a directory for
5934 vendor-supplied add-ons.  Vendors who supply perl with their system
5935 may find it convenient to place all vendor-supplied files in this
5936 directory rather than in the main distribution directory.  This will
5937 ease upgrades between binary-compatible maintenance versions of perl.
5938
5939 Of course you may also use these directories in whatever way you see
5940 fit.  For example, you might use them to access modules shared over a
5941 company-wide network.
5942
5943 The default answer should be fine for most people.
5944 This causes further questions about vendor add-ons to be skipped
5945 and no vendor-specific directories will be configured for perl.
5946
5947 EOM
5948 rp='Do you want to configure vendor-specific add-on directories?'
5949 case "$usevendorprefix" in
5950 define|true|[yY]*) dflt=y ;;
5951 *)      : User may have set vendorprefix directly on Configure command line.
5952         case "$vendorprefix" in
5953         ''|' ') dflt=n ;;
5954         *)      dflt=y ;;
5955         esac
5956         ;;
5957 esac
5958 . ./myread
5959 case "$ans" in
5960 [yY]*)  fn=d~+
5961         rp='Installation prefix to use for vendor-supplied add-ons?'
5962         case "$vendorprefix" in
5963         '') dflt='' ;;
5964         *)  dflt=$vendorprefix ;;
5965         esac
5966         . ./getfile
5967         : XXX Prefixit unit does not yet support siteprefix and vendorprefix
5968         oldvendorprefix=''
5969         case "$vendorprefix" in
5970         '') ;;
5971         *)      case "$ans" in
5972                 "$prefix") ;;
5973                 *) oldvendorprefix="$prefix";;
5974                 esac
5975                 ;;
5976         esac
5977         usevendorprefix="$define"
5978         vendorprefix="$ans"
5979         vendorprefixexp="$ansexp"
5980         ;;
5981 *)      usevendorprefix="$undef"
5982         vendorprefix=''
5983         vendorprefixexp=''
5984         ;;
5985 esac
5986
5987 case "$vendorprefix" in
5988 '')     d_vendorlib="$undef"
5989         vendorlib=''
5990         vendorlibexp=''
5991         ;;
5992 *)      d_vendorlib="$define"
5993         : determine where vendor-supplied modules go.
5994         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5995         case "$vendorlib" in
5996         '')
5997                 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5998                 case "$installstyle" in
5999                 *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
6000                 *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
6001                 esac
6002                 ;;
6003         *)      dflt="$vendorlib"
6004                 ;;
6005         esac
6006         fn=d~+
6007         rp='Pathname for the vendor-supplied library files?'
6008         . ./getfile
6009         vendorlib="$ans"
6010         vendorlibexp="$ansexp"
6011         ;;
6012 esac
6013 vendorlib_stem=`echo "$vendorlibexp" | sed "s,/$version$,,"`
6014 : Change installation prefix, if necessary.
6015 if $test X"$prefix" != X"$installprefix"; then
6016         installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
6017 else
6018         installvendorlib="$vendorlibexp"
6019 fi
6020
6021 case "$vendorprefix" in
6022 '')     d_vendorarch="$undef"
6023         vendorarch=''
6024         vendorarchexp=''
6025         ;;
6026 *)      d_vendorarch="$define"
6027         : determine where vendor-supplied architecture-dependent libraries go.
6028         : vendorlib  default is /usr/local/lib/perl5/vendor_perl/$version
6029         : vendorarch default is /usr/local/lib/perl5/vendor_perl/$version/$archname
6030         : vendorlib may have an optional trailing /share.
6031         case "$vendorarch" in
6032         '')     dflt=`echo $vendorlib | $sed 's,/share$,,'`
6033                 dflt="$dflt/$archname"
6034                 ;;
6035         *)      dflt="$vendorarch" ;;
6036         esac
6037         fn=d~+
6038         rp='Pathname for vendor-supplied architecture-dependent files?'
6039         . ./getfile
6040         vendorarch="$ans"
6041         vendorarchexp="$ansexp"
6042         ;;
6043 esac
6044 : Change installation prefix, if necessary.
6045 if $test X"$prefix" != X"$installprefix"; then
6046         installvendorarch=`echo $vendorarchexp | sed "s#^$prefix#$installprefix#"`
6047 else
6048         installvendorarch="$vendorarchexp"
6049 fi
6050
6051 : Final catch-all directories to search
6052 $cat <<EOM
6053
6054 Lastly, you can have perl look in other directories for extensions and
6055 modules in addition to those already specified.
6056 These directories will be searched after 
6057         $sitearch 
6058         $sitelib 
6059 EOM
6060 test X"$vendorlib" != "X" && echo '     ' $vendorlib
6061 test X"$vendorarch" != "X" && echo '    ' $vendorarch
6062 echo ' '
6063 case "$otherlibdirs" in
6064 ''|' ') dflt='none' ;;
6065 *)      dflt="$otherlibdirs" ;;
6066 esac
6067 $cat <<EOM
6068 Enter a colon-separated set of extra paths to include in perl's @INC
6069 search path, or enter 'none' for no extra paths.
6070
6071 EOM
6072
6073 rp='Colon-separated list of additional directories for perl to search?'
6074 . ./myread
6075 case "$ans" in
6076 ' '|''|none)    otherlibdirs=' ' ;;     
6077 *)      otherlibdirs="$ans" ;;
6078 esac
6079 case "$otherlibdirs" in
6080 ' ') val=$undef ;;
6081 *)      val=$define ;;
6082 esac
6083 set d_perl_otherlibdirs
6084 eval $setvar
6085
6086 : Cruising for prototypes
6087 echo " "
6088 echo "Checking out function prototypes..." >&4
6089 $cat >prototype.c <<'EOCP'
6090 int main(int argc, char *argv[]) {
6091         exit(0);}
6092 EOCP
6093 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
6094         echo "Your C compiler appears to support function prototypes."
6095         val="$define"
6096 else
6097         echo "Your C compiler doesn't seem to understand function prototypes."
6098         val="$undef"
6099 fi
6100 set prototype
6101 eval $setvar
6102 $rm -f prototype*
6103
6104 case "$prototype" in
6105 "$define") ;;
6106 *)      ansi2knr='ansi2knr'
6107         echo " "
6108         cat <<EOM >&4
6109
6110 $me:  FATAL ERROR:
6111 This version of $package can only be compiled by a compiler that 
6112 understands function prototypes.  Unfortunately, your C compiler 
6113         $cc $ccflags
6114 doesn't seem to understand them.  Sorry about that.
6115
6116 If GNU cc is available for your system, perhaps you could try that instead.  
6117
6118 Eventually, we hope to support building Perl with pre-ANSI compilers.
6119 If you would like to help in that effort, please contact <perlbug@perl.org>.
6120
6121 Aborting Configure now.
6122 EOM
6123         exit 2
6124         ;;
6125 esac
6126
6127 : determine where public executables go
6128 echo " "
6129 set dflt bin bin
6130 eval $prefixit
6131 fn=d~
6132 rp='Pathname where the public executables will reside?'
6133 . ./getfile
6134 if $test "X$ansexp" != "X$binexp"; then
6135         installbin=''
6136 fi
6137 bin="$ans"
6138 binexp="$ansexp"
6139 : Change installation prefix, if necessary.
6140 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
6141 if $test X"$prefix" != X"$installprefix"; then
6142         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
6143 else
6144         installbin="$binexp"
6145 fi
6146
6147 : Find perl5.005 or later.
6148 echo "Looking for a previously installed perl5.005 or later... "
6149 case "$perl5" in
6150 '')     for tdir in `echo "$binexp:$PATH" | $sed "s/$path_sep/ /g"`; do
6151                 : Check if this perl is recent and can load a simple module
6152                 if $test -x $tdir/perl && $tdir/perl -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6153                         perl5=$tdir/perl
6154                         break;
6155                 elif $test -x $tdir/perl5 && $tdir/perl5 -Mless -e 'use 5.005;' >/dev/null 2>&1; then
6156                         perl5=$tdir/perl
6157                         break;
6158                 fi
6159         done
6160         ;;
6161 *)      perl5="$perl5"
6162         ;;
6163 esac
6164 case "$perl5" in
6165 '')     echo "None found.  That's ok.";;
6166 *)      echo "Using $perl5." ;;
6167 esac
6168
6169 : Determine list of previous versions to include in @INC
6170 $cat > getverlist <<EOPL
6171 #!$perl5 -w
6172 use File::Basename;
6173 \$api_versionstring = "$api_versionstring";
6174 \$version = "$version";
6175 \$stem = "$sitelib_stem";
6176 \$archname = "$archname";
6177 EOPL
6178         $cat >> getverlist <<'EOPL'
6179 # Can't have leading @ because metaconfig interprets it as a command!
6180 ;@inc_version_list=();
6181 # XXX Redo to do opendir/readdir? 
6182 if (-d $stem) {
6183     chdir($stem);
6184     ;@candidates = glob("5.*");
6185 }
6186 else {
6187     ;@candidates = ();
6188 }
6189
6190 # XXX ToDo:  These comparisons must be reworked when two-digit
6191 # subversions come along, so that 5.7.10 compares as greater than
6192 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
6193 # widespread that we can use the built-in version vectors rather
6194 # than reinventing them here.  For 5.6.0, however, we must
6195 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
6196 foreach $d (@candidates) {
6197     if ($d lt $version) {
6198         if ($d ge $api_versionstring) {
6199             unshift(@inc_version_list, grep { -d } "$d/$archname", $d);
6200         }
6201         elsif ($d ge "5.005") {
6202             unshift(@inc_version_list, grep { -d } $d);
6203         }
6204     }
6205     else {
6206         # Skip newer version.  I.e. don't look in
6207         # 5.7.0 if we're installing 5.6.1.
6208     }
6209 }
6210
6211 if (@inc_version_list) {
6212     print join(' ', @inc_version_list);
6213 }
6214 else {
6215     # Blank space to preserve value for next Configure run.
6216     print " ";
6217 }
6218 EOPL
6219 chmod +x getverlist
6220 case "$inc_version_list" in
6221 '')     if test -x "$perl5"; then
6222                 dflt=`$perl5 getverlist`
6223         else
6224                 dflt='none'
6225         fi
6226         ;;
6227 $undef) dflt='none' ;;
6228 *)  dflt="$inc_version_list" ;;
6229 esac
6230 case "$dflt" in
6231 ''|' ') dflt=none ;;
6232 esac
6233 case "$dflt" in
6234 5.005) case "$bincompat5005" in
6235        $define|true|[yY]*) ;;
6236        *) dflt=none ;;
6237        esac
6238        ;;
6239 esac
6240 $cat <<'EOM'
6241
6242 In order to ease the process of upgrading, this version of perl 
6243 can be configured to use modules built and installed with earlier 
6244 versions of perl that were installed under $prefix.  Specify here
6245 the list of earlier versions that this version of perl should check.
6246 If Configure detected no earlier versions of perl installed under
6247 $prefix, then the list will be empty.  Answer 'none' to tell perl
6248 to not search earlier versions.
6249
6250 The default should almost always be sensible, so if you're not sure,
6251 just accept the default.
6252 EOM
6253
6254 rp='List of earlier versions to include in @INC?'
6255 . ./myread
6256 case "$ans" in
6257 [Nn]one|''|' ') inc_version_list=' ' ;;
6258 *) inc_version_list="$ans" ;;
6259 esac
6260 case "$inc_version_list" in
6261 ''|' ') 
6262         inc_version_list_init='0';;
6263 *)      inc_version_list_init=`echo $inc_version_list |
6264                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
6265         ;;
6266 esac
6267 $rm -f getverlist
6268
6269 : determine whether to install perl also as /usr/bin/perl
6270
6271 echo " "
6272 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
6273         $cat <<EOM
6274 Many scripts expect perl to be installed as /usr/bin/perl.
6275 I can install the perl you are about to compile also as /usr/bin/perl
6276 (in addition to $installbin/perl).
6277 EOM
6278         case "$installusrbinperl" in
6279         "$undef"|[nN]*) dflt='n';;
6280         *)              dflt='y';;
6281         esac
6282         rp="Do you want to install perl as /usr/bin/perl?"
6283         . ./myread
6284         case "$ans" in
6285         [yY]*)  val="$define";;
6286         *)      val="$undef" ;;
6287         esac
6288 else
6289         val="$undef"
6290 fi
6291 set installusrbinperl
6292 eval $setvar
6293
6294 : see if dld is available
6295 set dld.h i_dld
6296 eval $inhdr
6297
6298 : see if dlopen exists
6299 xxx_runnm="$runnm"
6300 runnm=false
6301 set dlopen d_dlopen
6302 eval $inlibc
6303 runnm="$xxx_runnm"
6304
6305 : determine which dynamic loading, if any, to compile in
6306 echo " "
6307 dldir="ext/DynaLoader"
6308 case "$usedl" in
6309 $define|y|true)
6310         dflt='y'
6311         usedl="$define"
6312         ;;
6313 $undef|n|false)
6314         dflt='n'
6315         usedl="$undef"
6316         ;;
6317 *) 
6318         dflt='n'
6319         case "$d_dlopen" in
6320             $define) dflt='y' ;;
6321         esac
6322         case "$i_dld" in
6323             $define) dflt='y' ;;
6324         esac
6325         : Does a dl_xxx.xs file exist for this operating system
6326         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
6327         ;;
6328 esac
6329 rp="Do you wish to use dynamic loading?"
6330 . ./myread
6331 usedl="$ans"
6332 case "$ans" in
6333 y*) usedl="$define"
6334         case "$dlsrc" in
6335         '')
6336                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
6337                         dflt="$dldir/dl_${osname}.xs"
6338                 elif $test "$d_dlopen" = "$define" ; then
6339                         dflt="$dldir/dl_dlopen.xs"
6340                 elif $test "$i_dld" = "$define" ; then
6341                         dflt="$dldir/dl_dld.xs"
6342                 else
6343                         dflt=''
6344                 fi
6345                 ;;
6346         *)      dflt="$dldir/$dlsrc"
6347                 ;;
6348         esac
6349     echo "The following dynamic loading files are available:"
6350         : Can not go over to $dldir because getfile has path hard-coded in.
6351         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
6352         rp="Source file to use for dynamic loading"
6353         fn="fne"
6354         gfpth="$src"
6355         . ./getfile
6356         usedl="$define"
6357         : emulate basename
6358         dlsrc=`echo $ans | $sed -e 's%.*/\([^/]*\)$%\1%'`
6359
6360         $cat << EOM
6361
6362 Some systems may require passing special flags to $cc -c to
6363 compile modules that will be used to create a shared library.
6364 To use no flags, say "none".
6365
6366 EOM
6367     case "$cccdlflags" in
6368     '') case "$gccversion" in
6369                 '') case "$osname" in
6370                         hpux)   dflt='+z' ;;
6371                         next)   dflt='none' ;;
6372                         irix*)  dflt='-KPIC' ;;
6373                         svr4*|esix*|solaris) dflt='-KPIC' ;;
6374                         sunos)  dflt='-pic' ;;
6375                         *)      dflt='none' ;;
6376                     esac
6377                         ;;
6378                 *)  case "$osname" in
6379                         svr4*|esix*|solaris) dflt='-fPIC' ;;
6380                         *)      dflt='-fpic' ;;
6381                     esac ;;
6382             esac ;;
6383         ' ') dflt='none' ;;
6384     *)  dflt="$cccdlflags" ;;
6385     esac
6386     rp="Any special flags to pass to $cc -c to compile shared library modules?"
6387     . ./myread
6388     case "$ans" in
6389     none) cccdlflags=' ' ;;
6390     *) cccdlflags="$ans" ;;
6391     esac
6392
6393     cat << EOM
6394
6395 Some systems use ld to create libraries that can be dynamically loaded,
6396 while other systems (such as those using ELF) use $cc.
6397
6398 EOM
6399         case "$ld" in
6400         '')     $cat >try.c <<'EOM'
6401 /* Test for whether ELF binaries are produced */
6402 #include <fcntl.h>
6403 #include <stdlib.h>
6404 int main() {
6405         char b[4];
6406         int i = open("a.out",O_RDONLY);
6407         if(i == -1) 
6408                 exit(1); /* fail */
6409         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
6410                 exit(0); /* succeed (yes, it's ELF) */
6411         else
6412                 exit(1); /* fail */
6413 }
6414 EOM
6415                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
6416                         cat <<EOM
6417 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
6418 EOM
6419                         dflt="$cc"
6420                 else
6421                         echo "I'll use ld to build dynamic libraries."
6422                         dflt='ld'
6423                 fi
6424                 rm -f try.c a.out
6425                 ;;
6426         *)      dflt="$ld"
6427                 ;;
6428         esac
6429
6430     rp="What command should be used to create dynamic libraries?"
6431     . ./myread
6432         ld="$ans"
6433
6434     cat << EOM
6435
6436 Some systems may require passing special flags to $ld to create a
6437 library that can be dynamically loaded.  If your ld flags include
6438 -L/other/path options to locate libraries outside your loader's normal
6439 search path, you may need to specify those -L options here as well.  To
6440 use no flags, say "none".
6441
6442 EOM
6443     case "$lddlflags" in
6444     '') case "$osname" in
6445                         beos) dflt='-nostart' ;;
6446                         hpux) dflt='-b';
6447                               case "$gccversion" in
6448                               '') dflt="$dflt +vnocompatwarnings" ;;
6449                               esac
6450                               ;;        
6451                         linux|irix*)    dflt='-shared' ;;
6452                         next)  dflt='none' ;;
6453                         solaris) dflt='-G' ;;
6454                         sunos) dflt='-assert nodefinitions' ;;
6455                         svr4*|esix*) dflt="-G $ldflags" ;;
6456                 *)     dflt='none' ;;
6457                         esac
6458                         ;;
6459     *) dflt="$lddlflags" ;;
6460     esac
6461
6462         : Try to guess additional flags to pick up local libraries.
6463         : Be careful not to append to a plain 'none'
6464         case "$dflt" in
6465         none) dflt='' ;;
6466         esac
6467         for thisflag in $ldflags; do
6468                 case "$thisflag" in
6469                 -L*|-R*)
6470                         case " $dflt " in
6471                         *" $thisflag "*) ;;
6472                         *) dflt="$dflt $thisflag" ;;
6473                         esac
6474                         ;;
6475                 esac
6476         done
6477
6478         case "$dflt" in
6479         ''|' ') dflt='none' ;;
6480         esac
6481
6482     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6483     . ./myread
6484     case "$ans" in
6485     none) lddlflags=' ' ;;
6486     *) lddlflags="$ans" ;;
6487     esac
6488
6489         cat <<EOM
6490
6491 Some systems may require passing special flags to $cc to indicate that
6492 the resulting executable will use dynamic linking.  To use no flags,
6493 say "none".
6494
6495 EOM
6496     case "$ccdlflags" in
6497     '') case "$osname" in
6498                 hpux)   dflt='-Wl,-E' ;;
6499                 linux)  dflt='-rdynamic' ;;
6500                 next)   dflt='none' ;;
6501                 sunos)  dflt='none' ;;
6502                 *)      dflt='none' ;;
6503             esac ;;
6504     ' ')  dflt='none' ;;
6505     *)  dflt="$ccdlflags" ;;
6506     esac
6507     rp="Any special flags to pass to $cc to use dynamic linking?"
6508     . ./myread
6509     case "$ans" in
6510     none) ccdlflags=' ' ;;
6511     *) ccdlflags="$ans" ;;
6512     esac
6513     ;;
6514 *)  usedl="$undef"
6515         ld='ld'
6516     dlsrc='dl_none.xs'
6517     lddlflags=''
6518     ccdlflags=''
6519     ;;
6520 esac
6521
6522 also=''
6523 case "$usedl" in
6524 $undef)
6525         # No dynamic loading being used, so don't bother even to prompt.
6526         useshrplib='false'
6527         ;;
6528 *)      case "$useshrplib" in
6529         '')     case "$osname" in
6530                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6531                         dflt=y
6532                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6533                         ;;
6534                 next*)
6535                         case "$osvers" in
6536                         4*)     dflt=y
6537                                 also='Building a shared libperl is needed for MAB support.'
6538                                 ;;
6539                         *)      dflt=n
6540                                 ;;
6541                         esac
6542                         ;;
6543                 *)      dflt=n
6544                         ;;
6545                 esac
6546                 ;;
6547         $define|true|[Yy]*)
6548                 dflt=y
6549                 ;;
6550         *)      dflt=n
6551                 ;;
6552         esac
6553         $cat << EOM
6554
6555 The perl executable is normally obtained by linking perlmain.c with
6556 libperl${_a}, any static extensions (usually just DynaLoader), and
6557 any other libraries needed on this system (such as -lm, etc.).  Since
6558 your system supports dynamic loading, it is probably possible to build
6559 a shared libperl.$so.  If you will have more than one executable linked
6560 to libperl.$so, this will significantly reduce the size of each
6561 executable, but it may have a noticeable affect on performance.  The
6562 default is probably sensible for your system.
6563 $also
6564
6565 EOM
6566         rp="Build a shared libperl.$so (y/n)"
6567         . ./myread
6568         case "$ans" in
6569         true|$define|[Yy]*)
6570                 useshrplib='true'  ;;
6571         *)      useshrplib='false' ;;
6572         esac
6573         ;;
6574 esac
6575
6576 case "$useshrplib" in
6577 true)
6578         case "$libperl" in
6579         '')
6580                 # Figure out a good name for libperl.so.  Since it gets stored in
6581                 # a version-specific architecture-dependent library, the version
6582                 # number isn't really that important, except for making cc/ld happy.
6583                 #
6584                 # A name such as libperl.so.3.1
6585                 majmin="libperl.$so.$patchlevel.$subversion"
6586                 # A name such as libperl.so.301
6587                 majonly=`echo $patchlevel $subversion |
6588                         $awk '{printf "%d%02d", $1, $2}'`
6589                 majonly=libperl.$so.$majonly
6590                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6591                 # rely on figuring it out from the naming of libc.
6592                 case "${osname}${osvers}" in
6593                 next4*)
6594                         dflt=libperl.5.$so
6595                         # XXX How handle the --version stuff for MAB?
6596                         ;;
6597                 linux*)  # ld won't link with a bare -lperl otherwise.
6598                         dflt=libperl.$so
6599                         ;;
6600                 cygwin*) # include version
6601                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6602                         ;;
6603                 *)      # Try to guess based on whether libc has major.minor.
6604                         case "$libc" in
6605                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6606                         *libc.$so.[0-9]*) dflt=$majonly ;;
6607                         *)      dflt=libperl.$so ;;
6608                         esac
6609                         ;;
6610                 esac
6611                 ;;
6612         *)      dflt=$libperl
6613                 ;;
6614         esac
6615         cat << EOM
6616
6617 I need to select a good name for the shared libperl.  If your system uses
6618 library names with major and minor numbers, then you might want something
6619 like $majmin.  Alternatively, if your system uses a single version
6620 number for shared libraries, then you might want to use $majonly.
6621 Or, your system might be quite happy with a simple libperl.$so.
6622
6623 Since the shared libperl will get installed into a version-specific
6624 architecture-dependent directory, the version number of the shared perl
6625 library probably isn't important, so the default should be o.k.
6626
6627 EOM
6628         rp='What name do you want to give to the shared libperl?'
6629         . ./myread
6630         libperl=$ans
6631         echo "Ok, I'll use $libperl"
6632         ;;
6633 *)
6634         libperl="libperl${_a}"
6635         ;;
6636 esac
6637
6638 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6639 case "$shrpdir" in
6640 '') ;;
6641 *)      $cat >&4 <<EOM
6642 WARNING:  Use of the shrpdir variable for the installation location of
6643 the shared $libperl is not supported.  It was never documented and
6644 will not work in this version.  Let me (perlbug@perl.org)
6645 know of any problems this may cause.
6646
6647 EOM
6648         case "$shrpdir" in
6649         "$archlibexp/CORE")
6650                 $cat >&4 <<EOM
6651 But your current setting of $shrpdir is
6652 the default anyway, so it's harmless.
6653 EOM
6654                 ;;
6655         *)
6656                 $cat >&4 <<EOM
6657 Further, your current attempted setting of $shrpdir
6658 conflicts with the value of $archlibexp/CORE
6659 that installperl will use.
6660 EOM
6661                 ;;
6662         esac
6663         ;;
6664 esac
6665
6666 # How will the perl executable find the installed shared $libperl?
6667 # Add $xxx to ccdlflags.
6668 # If we can't figure out a command-line option, use $shrpenv to
6669 # set env LD_RUN_PATH.  The main perl makefile uses this.
6670 shrpdir=$archlibexp/CORE
6671 xxx=''
6672 tmp_shrpenv=''
6673 if "$useshrplib"; then
6674     case "$osname" in 
6675         aix)
6676                 # We'll set it in Makefile.SH...
6677                 ;;
6678         solaris|netbsd)
6679                 xxx="-R $shrpdir"
6680                 ;;
6681         freebsd)
6682                 xxx="-Wl,-R$shrpdir"
6683                 ;;
6684         linux|irix*|dec_osf)
6685                 xxx="-Wl,-rpath,$shrpdir"
6686                 ;;
6687         next)
6688                 # next doesn't like the default...
6689                 ;;
6690         beos)
6691                 # beos doesn't like the default, either.
6692                 ;;
6693         hpux*)
6694                 # hpux doesn't like the default, either.
6695                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6696                 ;;
6697         *)
6698                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6699                 ;;
6700         esac
6701         case "$xxx" in
6702         '') ;;
6703         *)      
6704                 # Only add $xxx if it isn't already in ccdlflags.
6705                 case " $ccdlflags " in
6706                 *" $xxx "*)     ;;
6707                 *)      ccdlflags="$ccdlflags $xxx"
6708                         cat <<EOM >&4
6709
6710 Adding $xxx to the flags
6711 passed to $ld so that the perl executable will find the 
6712 installed shared $libperl.
6713
6714 EOM
6715                         ;;
6716                 esac
6717                 ;;
6718         esac
6719 fi
6720 # Fix ccdlflags in AIX for building external extensions.
6721 # (For building Perl itself bare -bE:perl.exp is needed,
6722 #  Makefile.SH takes care of this.)
6723 case "$osname" in
6724 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6725 esac
6726 # Respect a hint or command-line value.
6727 case "$shrpenv" in
6728 '') shrpenv="$tmp_shrpenv" ;;
6729 esac
6730 case "$ldlibpthname" in
6731 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6732 none)   ldlibpthname='' ;;
6733 esac
6734
6735 : determine where manual pages are on this system
6736 echo " "
6737 case "$sysman" in
6738 '') 
6739         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
6740         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
6741         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
6742         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
6743         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
6744         sysman=`./loc . /usr/man/man1 $syspath`
6745         ;;
6746 esac
6747 if $test -d "$sysman"; then
6748         echo "System manual is in $sysman." >&4
6749 else
6750         echo "Could not find manual pages in source form." >&4
6751 fi
6752
6753 : determine where manual pages go
6754 set man1dir man1dir none
6755 eval $prefixit
6756 $cat <<EOM
6757
6758 $spackage has manual pages available in source form.
6759 EOM
6760 case "$nroff" in
6761 nroff)
6762         echo "However, you don't have nroff, so they're probably useless to you."
6763         case "$man1dir" in
6764         '') man1dir="none";;
6765         esac;;
6766 esac
6767 echo "If you don't want the manual sources installed, answer 'none'."
6768 case "$man1dir" in
6769 ' ') dflt=none
6770         ;;
6771 '')
6772         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6773         lookpath="$lookpath $prefixexp/man/p_man/man1"
6774         lookpath="$lookpath $prefixexp/man/u_man/man1"
6775         lookpath="$lookpath $prefixexp/man/man.1"
6776         case "$sysman" in
6777         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6778         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6779         esac
6780         set dflt
6781         eval $prefixup
6782         ;;
6783 *)  dflt="$man1dir"
6784         ;;
6785 esac
6786 echo " "
6787 fn=dn+~
6788 rp="Where do the main $spackage manual pages (source) go?"
6789 . ./getfile
6790 if $test "X$man1direxp" != "X$ansexp"; then
6791         installman1dir=''
6792 fi
6793 man1dir="$ans"
6794 man1direxp="$ansexp"
6795 case "$man1dir" in
6796 '')     man1dir=' '
6797         installman1dir='';;
6798 esac
6799
6800 : Change installation prefix, if necessary.
6801 if $test X"$prefix" != X"$installprefix"; then
6802         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6803 else
6804         installman1dir="$man1direxp"
6805 fi
6806
6807 : What suffix to use on installed man pages
6808
6809 case "$man1dir" in
6810 ' ')
6811         man1ext='0'
6812         ;;
6813 *)
6814         rp="What suffix should be used for the main $spackage man pages?"
6815         case "$man1ext" in
6816         '')     case "$man1dir" in
6817                 *1)  dflt=1 ;;
6818                 *1p) dflt=1p ;;
6819                 *1pm) dflt=1pm ;;
6820                 *l) dflt=l;;
6821                 *n) dflt=n;;
6822                 *o) dflt=o;;
6823                 *p) dflt=p;;
6824                 *C) dflt=C;;
6825                 *L) dflt=L;;
6826                 *L1) dflt=L1;;
6827                 *) dflt=1;;
6828                 esac
6829                 ;;
6830         *)      dflt="$man1ext";;
6831         esac
6832         . ./myread
6833         man1ext="$ans"
6834         ;;
6835 esac
6836
6837 : see if we can have long filenames
6838 echo " "
6839 first=123456789abcdef
6840 $rm -f $first
6841 if (echo hi >$first) 2>/dev/null; then
6842         if $test -f 123456789abcde; then
6843                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6844                 val="$undef"
6845         else
6846                 echo 'You can have filenames longer than 14 characters.'>&4
6847                 val="$define"
6848         fi
6849 else
6850         $cat <<'EOM'
6851 You can't have filenames longer than 14 chars.
6852 You can't even think about them!
6853 EOM
6854         val="$undef"
6855 fi 
6856 set d_flexfnam
6857 eval $setvar
6858 $rm -rf 123456789abcde*
6859
6860 : determine where library module manual pages go
6861 set man3dir man3dir none
6862 eval $prefixit
6863 $cat <<EOM
6864
6865 $spackage has manual pages for many of the library modules.
6866 EOM
6867
6868 case "$nroff" in
6869 nroff)
6870         $cat <<'EOM'
6871 However, you don't have nroff, so they're probably useless to you.
6872 EOM
6873         case "$man3dir" in
6874         '') man3dir="none";;
6875         esac;;
6876 esac
6877
6878 case "$d_flexfnam" in
6879 undef)
6880         $cat <<'EOM'
6881 However, your system can't handle the long file names like File::Basename.3. 
6882 EOM
6883         case "$man3dir" in
6884         '') man3dir="none";;
6885         esac;;
6886 esac
6887
6888 echo "If you don't want the manual sources installed, answer 'none'."
6889 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6890 case "$man3dir" in
6891 '')     dflt=`echo "$man1dir" | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6892         if $test -d "$privlib/man/man3"; then
6893                 cat <<EOM >&4
6894
6895 WARNING:  Previous versions of perl installed man3 pages into
6896 $privlib/man/man3.  This version will suggest a 
6897 new default of $dflt.  
6898 EOM
6899                 tdflt=$dflt
6900                 dflt='n'
6901                 rp='Do you wish to preserve the old behavior?(y/n)'
6902                 . ./myread
6903                 case "$ans" in
6904                 y*) dflt="$privlib/man/man3" ;;
6905                 *)  dflt=$tdflt ;;
6906                 esac
6907     fi
6908         ;;
6909 *)      dflt="$man3dir" ;;
6910 esac
6911 case "$dflt" in
6912 ' ') dflt=none ;;
6913 esac
6914 echo " "
6915 fn=dn+~
6916 rp="Where do the $package library man pages (source) go?"
6917 . ./getfile
6918 man3dir="$ans"
6919 man3direxp="$ansexp"
6920 case "$man3dir" in
6921 '')     man3dir=' '
6922         installman3dir='';;
6923 esac
6924
6925 : Change installation prefix, if necessary.
6926 if $test X"$prefix" != X"$installprefix"; then
6927         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6928 else
6929         installman3dir="$man3direxp"
6930 fi
6931
6932 : What suffix to use on installed man pages
6933 case "$man3dir" in
6934 ' ')
6935         man3ext='0'
6936         ;;
6937 *)
6938         rp="What suffix should be used for the $package library man pages?"
6939         case "$man3ext" in
6940         '')     case "$man3dir" in
6941                 *3)  dflt=3 ;;
6942                 *3p) dflt=3p ;;
6943                 *3pm) dflt=3pm ;;
6944                 *l) dflt=l;;
6945                 *n) dflt=n;;
6946                 *o) dflt=o;;
6947                 *p) dflt=p;;
6948                 *C) dflt=C;;
6949                 *L) dflt=L;;
6950                 *L3) dflt=L3;;
6951                 *) dflt=3;;
6952                 esac
6953                 ;;
6954         *)      dflt="$man3ext";;
6955         esac
6956         . ./myread
6957         man3ext="$ans"
6958         ;;
6959 esac
6960
6961 : see if we have to deal with yellow pages, now NIS.
6962 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6963         if $test -f /usr/etc/nibindd; then
6964                 echo " "
6965                 echo "I'm fairly confident you're on a NeXT."
6966                 echo " "
6967                 rp='Do you get the hosts file via NetInfo?'
6968                 dflt=y
6969                 case "$hostcat" in
6970                 nidump*) ;;
6971                 '') ;;
6972                 *) dflt=n;;
6973                 esac
6974                 . ./myread
6975                 case "$ans" in
6976                 y*) hostcat='nidump hosts .';;
6977                 *)      case "$hostcat" in
6978                         nidump*) hostcat='';;
6979                         esac
6980                         ;;
6981                 esac
6982         fi
6983         case "$hostcat" in
6984         nidump*) ;;
6985         *)
6986                 case "$hostcat" in
6987                 *ypcat*) dflt=y;;
6988                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6989                                 dflt=y
6990                         else
6991                                 dflt=n
6992                         fi;;
6993                 *) dflt=n;;
6994                 esac
6995                 echo " "
6996                 rp='Are you getting the hosts file via yellow pages?'
6997                 . ./myread
6998                 case "$ans" in
6999                 y*) hostcat='ypcat hosts';;
7000                 *) hostcat='cat /etc/hosts';;
7001                 esac
7002                 ;;
7003         esac
7004 fi
7005 case "$hostcat" in
7006 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
7007 esac
7008 case "$groupcat" in
7009 '') test -f /etc/group && groupcat='cat /etc/group';;
7010 esac
7011 case "$passcat" in
7012 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
7013 esac
7014
7015 : now get the host name
7016 echo " "
7017 echo "Figuring out host name..." >&4
7018 case "$myhostname" in
7019 '') cont=true
7020         echo 'Maybe "hostname" will work...'
7021         if tans=`sh -c hostname 2>&1` ; then
7022                 myhostname=$tans
7023                 phostname=hostname
7024                 cont=''
7025         fi
7026         ;;
7027 *) cont='';;
7028 esac
7029 if $test "$cont"; then
7030         if ./xenix; then
7031                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
7032                 if tans=`cat /etc/systemid 2>&1` ; then
7033                         myhostname=$tans
7034                         phostname='cat /etc/systemid'
7035                         echo "Whadyaknow.  Xenix always was a bit strange..."
7036                         cont=''
7037                 fi
7038         elif $test -r /etc/systemid; then
7039                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
7040         fi
7041 fi
7042 if $test "$cont"; then
7043         echo 'No, maybe "uuname -l" will work...'
7044         if tans=`sh -c 'uuname -l' 2>&1` ; then
7045                 myhostname=$tans
7046                 phostname='uuname -l'
7047         else
7048                 echo 'Strange.  Maybe "uname -n" will work...'
7049                 if tans=`sh -c 'uname -n' 2>&1` ; then
7050                         myhostname=$tans
7051                         phostname='uname -n'
7052                 else
7053                         echo 'Oh well, maybe I can mine it out of whoami.h...'
7054                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
7055                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
7056                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
7057                         else
7058                                 case "$myhostname" in
7059                                 '') echo "Does this machine have an identity crisis or something?"
7060                                         phostname='';;
7061                                 *)
7062                                         echo "Well, you said $myhostname before..."
7063                                         phostname='echo $myhostname';;
7064                                 esac
7065                         fi
7066                 fi
7067         fi
7068 fi
7069 : you do not want to know about this
7070 set $myhostname
7071 myhostname=$1
7072
7073 : verify guess
7074 if $test "$myhostname" ; then
7075         dflt=y
7076         rp='Your host name appears to be "'$myhostname'".'" Right?"
7077         . ./myread
7078         case "$ans" in
7079         y*) ;;
7080         *) myhostname='';;
7081         esac
7082 fi
7083
7084 : bad guess or no guess
7085 while $test "X$myhostname" = X ; do
7086         dflt=''
7087         rp="Please type the (one word) name of your host:"
7088         . ./myread
7089         myhostname="$ans"
7090 done
7091
7092 : translate upper to lower if necessary
7093 case "$myhostname" in
7094 *[A-Z]*)
7095         echo "(Normalizing case in your host name)"
7096         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
7097         ;;
7098 esac
7099
7100 case "$myhostname" in
7101 *.*)
7102         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
7103         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
7104         echo "(Trimming domain name from host name--host name is now $myhostname)"
7105         ;;
7106 *) case "$mydomain" in
7107         '')
7108                 {
7109                         test "X$hostcat" = "Xypcat hosts" &&
7110                         ypmatch "$myhostname" hosts 2>/dev/null |\
7111                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
7112                         $test -s hosts
7113                 } || {
7114                         test "X$hostcat" != "X" &&
7115                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
7116                                         /[       ]$myhostname[  . ]/p" > hosts
7117                 }
7118                 tmp_re="[       . ]"
7119                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
7120                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
7121                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
7122                         hosts | $sort | $uniq | \
7123                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
7124                 case `$echo X$dflt` in
7125                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
7126                         dflt=.
7127                         ;;
7128                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
7129                         ;;
7130                 esac
7131                 case "$dflt" in
7132                 .)
7133                         tans=`./loc resolv.conf X /etc /usr/etc`
7134                         if $test -f "$tans"; then
7135                                 echo "(Attempting domain name extraction from $tans)"
7136                                 dflt=.`$sed -n -e 's/   / /g' \
7137                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
7138                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7139                                 case "$dflt" in
7140                                 .) dflt=.`$sed -n -e 's/        / /g' \
7141                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
7142                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
7143                                         ;;
7144                                 esac
7145                         fi
7146                         ;;
7147                 esac
7148                 case "$dflt" in
7149                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
7150                         dflt=.`sh -c domainname 2>/dev/null`
7151                         case "$dflt" in
7152                         '') dflt='.';;
7153                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
7154                         esac
7155                         ;;
7156                 esac
7157                 case "$dflt" in
7158                 .) echo "(Lost all hope -- silly guess then)"
7159                         dflt='.uucp'
7160                         ;;
7161                 esac
7162                 $rm -f hosts
7163                 ;;
7164         *) dflt="$mydomain";;
7165         esac;;
7166 esac
7167 echo " "
7168 rp="What is your domain name?"
7169 . ./myread
7170 tans="$ans"
7171 case "$ans" in
7172 '') ;;
7173 .*) ;;
7174 *) tans=".$tans";;
7175 esac
7176 mydomain="$tans"
7177
7178 : translate upper to lower if necessary
7179 case "$mydomain" in
7180 *[A-Z]*)
7181         echo "(Normalizing case in your domain name)"
7182         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
7183         ;;
7184 esac
7185
7186 : a little sanity check here
7187 case "$phostname" in
7188 '') ;;
7189 *)
7190         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
7191         $myhostname$mydomain|$myhostname) ;;
7192         *)
7193                 case "$phostname" in
7194                 sed*)
7195                         echo "(That doesn't agree with your whoami.h file, by the way.)"
7196                         ;;
7197                 *)
7198                         echo "(That doesn't agree with your $phostname command, by the way.)"
7199                         ;;
7200                 esac
7201         ;;
7202         esac
7203         ;;
7204 esac
7205
7206 $cat <<EOM
7207
7208 I need to get your e-mail address in Internet format if possible, i.e.
7209 something like user@host.domain. Please answer accurately since I have
7210 no easy means to double check it. The default value provided below
7211 is most probably close to reality but may not be valid from outside
7212 your organization...
7213
7214 EOM
7215 cont=x
7216 while test "$cont"; do
7217         case "$cf_email" in
7218         '') dflt="$cf_by@$myhostname$mydomain";;
7219         *) dflt="$cf_email";;
7220         esac
7221         rp='What is your e-mail address?'
7222         . ./myread
7223         cf_email="$ans"
7224         case "$cf_email" in
7225         *@*.*) cont='' ;;
7226         *)
7227                 rp='Address does not look like an Internet one.  Use it anyway?'
7228                 case "$fastread" in
7229                 yes) dflt=y ;;
7230                 *) dflt=n ;;
7231                 esac
7232                 . ./myread
7233                 case "$ans" in
7234                 y*) cont='' ;;
7235                 *) echo " " ;;
7236                 esac
7237                 ;;
7238         esac
7239 done
7240
7241 $cat <<EOM
7242
7243 If you or somebody else will be maintaining perl at your site, please
7244 fill in the correct e-mail address here so that they may be contacted
7245 if necessary. Currently, the "perlbug" program included with perl
7246 will send mail to this address in addition to perlbug@perl.org. You may
7247 enter "none" for no administrator.
7248
7249 EOM
7250 case "$perladmin" in
7251 '') dflt="$cf_email";;
7252 *) dflt="$perladmin";;
7253 esac
7254 rp='Perl administrator e-mail address'
7255 . ./myread
7256 perladmin="$ans"
7257
7258 : figure out how to guarantee perl startup
7259 case "$startperl" in
7260 '')
7261         case "$sharpbang" in
7262         *!)
7263                 $cat <<EOH
7264
7265 I can use the #! construct to start perl on your system. This will
7266 make startup of perl scripts faster, but may cause problems if you
7267 want to share those scripts and perl is not in a standard place
7268 ($binexp/perl) on all your platforms. The alternative is to force
7269 a shell by starting the script with a single ':' character.
7270
7271 EOH
7272                 dflt="$binexp/perl"
7273                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
7274                 . ./myread
7275                 case "$ans" in
7276                 none)   startperl=": # use perl";;
7277                 *)      startperl="#!$ans"
7278                         if $test 30 -lt `echo "$ans" | wc -c`; then
7279                                 $cat >&4 <<EOM
7280
7281 WARNING:  Some systems limit the #! command to 32 characters.
7282 If you experience difficulty running Perl scripts with #!, try
7283 installing Perl in a directory with a shorter pathname.
7284
7285 EOM
7286                         fi ;;
7287                 esac
7288                 ;;
7289         *) startperl=": # use perl"
7290                 ;;
7291         esac
7292         ;;
7293 esac
7294 echo "I'll use $startperl to start perl scripts."
7295
7296 : figure best path for perl in scripts
7297 case "$perlpath" in
7298 '')
7299         perlpath="$binexp/perl"
7300         case "$startperl" in
7301         *!*) ;;
7302         *)
7303                 $cat <<EOH
7304
7305 I will use the "eval 'exec'" idiom to start Perl on your system.
7306 I can use the full path of your Perl binary for this purpose, but
7307 doing so may cause problems if you want to share those scripts and
7308 Perl is not always in a standard place ($binexp/perl).
7309
7310 EOH
7311                 dflt="$binexp/perl"
7312                 rp="What path shall I use in \"eval 'exec'\"?"
7313                 . ./myread
7314                 perlpath="$ans"
7315                 ;;
7316         esac
7317         ;;
7318 esac
7319 case "$startperl" in
7320 *!*)    ;;
7321 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
7322 esac
7323
7324 : determine where public executable scripts go
7325 set scriptdir scriptdir
7326 eval $prefixit
7327 case "$scriptdir" in
7328 '')
7329         dflt="$bin"
7330         : guess some guesses
7331         $test -d /usr/share/scripts && dflt=/usr/share/scripts
7332         $test -d /usr/share/bin     && dflt=/usr/share/bin
7333         $test -d /usr/local/script  && dflt=/usr/local/script
7334         $test -d /usr/local/scripts && dflt=/usr/local/scripts
7335         $test -d $prefixexp/script  && dflt=$prefixexp/script
7336         set dflt
7337         eval $prefixup
7338         ;;
7339 *)  dflt="$scriptdir"
7340         ;;
7341 esac
7342 $cat <<EOM
7343  
7344 Some installations have a separate directory just for executable scripts so
7345 that they can mount it across multiple architectures but keep the scripts in
7346 one spot.  You might, for example, have a subdirectory of /usr/share for this.
7347 Or you might just lump your scripts in with all your other executables.
7348  
7349 EOM
7350 fn=d~
7351 rp='Where do you keep publicly executable scripts?'
7352 . ./getfile
7353 if $test "X$ansexp" != "X$scriptdirexp"; then
7354         installscript=''
7355 fi
7356 scriptdir="$ans"
7357 scriptdirexp="$ansexp"
7358 : Change installation prefix, if necessary.
7359 if $test X"$prefix" != X"$installprefix"; then
7360         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
7361 else
7362         installscript="$scriptdirexp"
7363 fi
7364
7365 : determine where add-on public executables go
7366 case "$sitebin" in
7367 '')     dflt=$siteprefix/bin ;;
7368 *)      dflt=$sitebin ;;
7369 esac
7370 fn=d~
7371 rp='Pathname where the add-on public executables should be installed?'
7372 . ./getfile
7373 sitebin="$ans"
7374 sitebinexp="$ansexp"
7375 : Change installation prefix, if necessary.
7376 if $test X"$prefix" != X"$installprefix"; then
7377         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
7378 else
7379         installsitebin="$sitebinexp"
7380 fi
7381
7382 case "$useperlio" in
7383 $define|true|[yY]*)     dflt='y';;
7384 *) dflt='n';;
7385 esac
7386 cat <<EOM
7387
7388 Previous version of $package used the standard IO mechanisms as defined
7389 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7390 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7391 the default.  This abstraction layer can use AT&T's sfio (if you already
7392 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7393 problems with some extension modules.  Using PerlIO with stdio is safe,
7394 but it is slower than plain stdio and therefore is not the default.
7395
7396 If this doesn't make any sense to you, just accept the default '$dflt'.
7397 EOM
7398 rp='Use the experimental PerlIO abstraction layer?'
7399 . ./myread
7400 case "$ans" in
7401 y|Y) 
7402         val="$define"
7403         ;;     
7404 *)      
7405         echo "Ok, doing things the stdio way"
7406         val="$undef"
7407         ;;
7408 esac
7409 set useperlio
7410 eval $setvar 
7411
7412 case "$vendorprefix" in
7413 '')     d_vendorbin="$undef"
7414         vendorbin=''
7415         vendorbinexp=''
7416         ;;
7417 *)      d_vendorbin="$define"
7418         : determine where vendor-supplied executables go.
7419         case "$vendorbin" in
7420         '') dflt=$vendorprefix/bin ;;
7421         *)      dflt="$vendorbin" ;;
7422         esac
7423         fn=d~+
7424         rp='Pathname for the vendor-supplied executables directory?'
7425         . ./getfile
7426         vendorbin="$ans"
7427         vendorbinexp="$ansexp"
7428         ;;
7429 esac
7430 : Change installation prefix, if necessary.
7431 if $test X"$prefix" != X"$installprefix"; then
7432         installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7433 else
7434         installvendorbin="$vendorbinexp"
7435 fi
7436
7437 : see if qgcvt exists
7438 set qgcvt d_qgcvt
7439 eval $inlibc
7440
7441 echo " "
7442
7443 if $test X"$d_longdbl" = X"$define"; then
7444
7445 echo "Checking how to print long doubles..." >&4
7446
7447 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7448         $cat >try.c <<'EOCP'
7449 #include <sys/types.h>
7450 #include <stdio.h>
7451 int main() {
7452   double d = 123.456;
7453   printf("%.3f\n", d);
7454 }
7455 EOCP
7456         set try
7457         if eval $compile; then
7458                 yyy=`./try$exe_ext`
7459                 case "$yyy" in
7460                 123.456)
7461                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7462                         sPRIFUldbl='"F"'; sPRIGUldbl='"G"'; sPRIEUldbl='"E"';
7463                         echo "We will use %f."
7464                         ;;
7465                 esac
7466         fi
7467 fi
7468
7469 if $test X"$sPRIfldbl" = X; then
7470         $cat >try.c <<'EOCP'
7471 #include <sys/types.h>
7472 #include <stdio.h>
7473 int main() {
7474   long double d = 123.456;
7475   printf("%.3llf\n", d);
7476 }
7477 EOCP
7478         set try
7479         if eval $compile; then
7480                 yyy=`./try$exe_ext`
7481                 case "$yyy" in
7482                 123.456)
7483                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7484                         sPRIFUldbl='"llF"'; sPRIGUldbl='"llG"'; sPRIEUldbl='"llE"';
7485                         echo "We will use %llf."
7486                         ;;
7487                 esac
7488         fi
7489 fi
7490
7491 if $test X"$sPRIfldbl" = X; then
7492         $cat >try.c <<'EOCP'
7493 #include <sys/types.h>
7494 #include <stdio.h>
7495 int main() {
7496   long double d = 123.456;
7497   printf("%.3Lf\n", d);
7498 }
7499 EOCP
7500         set try
7501         if eval $compile; then
7502                 yyy=`./try$exe_ext`
7503                 case "$yyy" in
7504                 123.456)
7505                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7506                         sPRIFUldbl='"LF"'; sPRIGUldbl='"LG"'; sPRIEUldbl='"LE"';
7507                         echo "We will use %Lf."
7508                         ;;
7509                 esac
7510         fi
7511 fi
7512
7513 if $test X"$sPRIfldbl" = X; then
7514         $cat >try.c <<'EOCP'
7515 #include <sys/types.h>
7516 #include <stdio.h>
7517 int main() {
7518   long double d = 123.456;
7519   printf("%.3lf\n", d);
7520 }
7521 EOCP
7522         set try
7523         if eval $compile; then
7524                 yyy=`./try$exe_ext`
7525                 case "$yyy" in
7526                 123.456)
7527                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7528                         sPRIFUldbl='"lF"'; sPRIGUldbl='"lG"'; sPRIEUldbl='"lE"';
7529                         echo "We will use %lf."
7530                         ;;
7531                 esac
7532         fi
7533 fi
7534
7535 if $test X"$sPRIfldbl" = X; then
7536         echo "Cannot figure out how to print long doubles." >&4
7537 else
7538         sSCNfldbl=$sPRIfldbl    # expect consistency
7539 fi
7540
7541 $rm -f try try.*
7542
7543 fi # d_longdbl
7544
7545 case "$sPRIfldbl" in
7546 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7547         d_PRIFUldbl="$undef"; d_PRIGUldbl="$undef"; d_PRIEUldbl="$undef"; 
7548         d_SCNfldbl="$undef";
7549         ;;
7550 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7551         d_PRIFUldbl="$define"; d_PRIGUldbl="$define"; d_PRIEUldbl="$define"; 
7552         d_SCNfldbl="$define";
7553         ;;
7554 esac
7555
7556 : Check how to convert floats to strings.
7557 echo " "
7558 echo "Checking for an efficient way to convert floats to strings."
7559 echo " " > try.c
7560 case "$uselongdouble" in
7561 "$define") echo "#define USE_LONG_DOUBLE" >>try.c ;;
7562 esac
7563 case "$d_longdbl" in
7564 "$define") echo "#define HAS_LONG_DOUBLE" >>try.c ;;
7565 esac
7566 case "$d_PRIgldbl" in
7567 "$define") echo "#define HAS_PRIgldbl"    >>try.c ;;
7568 esac
7569 $cat >>try.c <<EOP
7570 #ifdef TRY_gconvert
7571 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7572 char *myname = "gconvert";
7573 #endif
7574 #ifdef TRY_gcvt
7575 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7576 char *myname = "gcvt";
7577 #endif
7578 #ifdef TRY_qgcvt
7579 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7580 char *myname = "qgcvt";
7581 #define DOUBLETYPE long double
7582 #endif
7583 #ifdef TRY_sprintf
7584 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE) && defined(HAS_PRIgldbl)
7585 #define Gconvert(x,n,t,b) sprintf((b),"%.*"$sPRIgldbl,(n),(x))
7586 #else
7587 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7588 #endif
7589 char *myname = "sprintf";
7590 #endif
7591
7592 #ifndef DOUBLETYPE
7593 #if defined(USE_LONG_DOUBLE) && defined(HAS_LONG_DOUBLE)
7594 #define DOUBLETYPE long double
7595 #else
7596 #define DOUBLETYPE double
7597 #endif
7598 #endif
7599
7600 #include <stdio.h>
7601
7602 #define I_STDLIB $i_stdlib
7603 #ifdef I_STDLIB
7604 #include <stdlib.h>
7605 #endif
7606
7607 int
7608 checkit(expect, got)
7609 char *expect;
7610 char *got;
7611 {
7612     if (strcmp(expect, got)) {
7613                 printf("%s oddity:  Expected %s, got %s\n",
7614                         myname, expect, got);
7615                 exit(1);
7616         }
7617 }
7618
7619 int main()
7620
7621         char buf[64]; 
7622         buf[63] = '\0';
7623
7624         /* This must be 1st test on (which?) platform */
7625         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7626         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7627         checkit("0.1", buf);
7628
7629         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7630         checkit("1", buf);
7631
7632         Gconvert((DOUBLETYPE)1.1, 8, 0, buf); 
7633         checkit("1.1", buf);
7634
7635         Gconvert((DOUBLETYPE)1.01, 8, 0, buf); 
7636         checkit("1.01", buf);
7637
7638         Gconvert((DOUBLETYPE)1.001, 8, 0, buf); 
7639         checkit("1.001", buf);
7640
7641         Gconvert((DOUBLETYPE)1.0001, 8, 0, buf); 
7642         checkit("1.0001", buf);
7643
7644         Gconvert((DOUBLETYPE)1.00001, 8, 0, buf); 
7645         checkit("1.00001", buf);
7646
7647         Gconvert((DOUBLETYPE)1.000001, 8, 0, buf); 
7648         checkit("1.000001", buf);
7649
7650         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7651         checkit("0", buf);
7652
7653         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7654         checkit("-1", buf);
7655
7656         /* Some Linux gcvt's give 1.e+5 here. */
7657         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7658         checkit("100000", buf);
7659         
7660         /* Some Linux gcvt's give -1.e+5 here. */
7661         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7662         checkit("-100000", buf);
7663
7664         Gconvert((DOUBLETYPE)123.456, 8, 0, buf); 
7665         checkit("123.456", buf);
7666
7667         exit(0);
7668 }
7669 EOP
7670 case "$d_Gconvert" in
7671 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7672 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7673 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7674 *) xxx_list='gconvert gcvt sprintf' ;;
7675 esac
7676
7677 case "$d_longdbl$uselongdouble$d_PRIgldbl" in
7678 "$define$define$define")
7679     # for long doubles prefer first qgcvt, then sprintf
7680     xxx_list="`echo $xxx_list|sed s/sprintf//`" 
7681     xxx_list="sprintf $xxx_list"
7682     case "$d_qgcvt" in
7683     "$define") xxx_list="qgcvt $xxx_list" ;;
7684     esac
7685     ;;
7686 esac
7687
7688 for xxx_convert in $xxx_list; do
7689         echo "Trying $xxx_convert..."
7690         $rm -f try try$_o
7691         set try -DTRY_$xxx_convert
7692         if eval $compile; then
7693                 echo "$xxx_convert() found." >&4
7694                 if ./try; then
7695                         echo "I'll use $xxx_convert to convert floats into a string." >&4
7696                         break;
7697                 else
7698                         echo "...But $xxx_convert didn't work as I expected."
7699                 fi
7700         else
7701                 echo "$xxx_convert NOT found." >&4
7702         fi
7703 done
7704         
7705 case "$xxx_convert" in
7706 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7707 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7708 qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7709 *) case "$uselongdouble$d_longdbl$d_PRIgldbl" in
7710    "$define$define$define")
7711       d_Gconvert="sprintf((b),\"%.*\"$sPRIgldbl,(n),(x))" ;;
7712    *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7713    esac
7714    ;;  
7715 esac
7716
7717 : Initialize h_fcntl
7718 h_fcntl=false
7719
7720 : Initialize h_sysfile
7721 h_sysfile=false
7722
7723 : access call always available on UNIX
7724 set access d_access
7725 eval $inlibc
7726
7727 : locate the flags for 'access()'
7728 case "$d_access" in
7729 "$define")
7730         echo " "
7731         $cat >access.c <<'EOCP'
7732 #include <sys/types.h>
7733 #ifdef I_FCNTL
7734 #include <fcntl.h>
7735 #endif
7736 #ifdef I_SYS_FILE
7737 #include <sys/file.h>
7738 #endif
7739 #ifdef I_UNISTD
7740 #include <unistd.h>
7741 #endif
7742 int main() {
7743         exit(R_OK);
7744 }
7745 EOCP
7746         : check sys/file.h first, no particular reason here
7747         if $test `./findhdr sys/file.h` && \
7748                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7749                 h_sysfile=true;
7750                 echo "<sys/file.h> defines the *_OK access constants." >&4
7751         elif $test `./findhdr fcntl.h` && \
7752                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7753                 h_fcntl=true;
7754                 echo "<fcntl.h> defines the *_OK access constants." >&4
7755         elif $test `./findhdr unistd.h` && \
7756                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7757                 echo "<unistd.h> defines the *_OK access constants." >&4
7758         else
7759                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7760         fi
7761         ;;
7762 esac
7763 $rm -f access*
7764
7765 : see if accessx exists
7766 set accessx d_accessx
7767 eval $inlibc
7768
7769 : see if alarm exists
7770 set alarm d_alarm
7771 eval $inlibc
7772
7773 : see if atolf exists
7774 set atolf d_atolf
7775 eval $inlibc
7776
7777 : see if atoll exists
7778 set atoll d_atoll
7779 eval $inlibc
7780
7781 : Look for GNU-cc style attribute checking
7782 echo " "
7783 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7784 $cat >attrib.c <<'EOCP'
7785 #include <stdio.h>
7786 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7787 EOCP
7788 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7789         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7790                 echo "Your C compiler doesn't fully support __attribute__."
7791                 val="$undef"
7792         else
7793                 echo "Your C compiler supports __attribute__."
7794                 val="$define"
7795         fi
7796 else
7797         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7798         val="$undef"
7799 fi
7800 set d_attribut
7801 eval $setvar
7802 $rm -f attrib*
7803
7804 : see if bcmp exists
7805 set bcmp d_bcmp
7806 eval $inlibc
7807
7808 : see if bcopy exists
7809 set bcopy d_bcopy
7810 eval $inlibc
7811
7812 : see if this is a unistd.h system
7813 set unistd.h i_unistd
7814 eval $inhdr
7815
7816 : see if getpgrp exists
7817 set getpgrp d_getpgrp
7818 eval $inlibc
7819
7820 case "$d_getpgrp" in
7821 "$define")
7822         echo " "
7823         echo "Checking to see which flavor of getpgrp is in use..."
7824         $cat >set.c <<EOP
7825 #$i_unistd I_UNISTD
7826 #include <sys/types.h>
7827 #ifdef I_UNISTD
7828 #  include <unistd.h>
7829 #endif
7830 int main()
7831 {
7832         if (getuid() == 0) {
7833                 printf("(I see you are running Configure as super-user...)\n");
7834                 setuid(1);
7835         }
7836 #ifdef TRY_BSD_PGRP
7837         if (getpgrp(1) == 0)
7838                 exit(0);
7839 #else
7840         if (getpgrp() > 0)
7841                 exit(0);
7842 #endif
7843         exit(1);
7844 }
7845 EOP
7846         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7847                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7848                 val="$define"
7849         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7850                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7851                 val="$undef"
7852         else
7853                 echo "I can't seem to compile and run the test program."
7854                 if ./usg; then
7855                         xxx="a USG one, i.e. you use getpgrp()."
7856                 else
7857                         # SVR4 systems can appear rather BSD-ish.
7858                         case "$i_unistd" in
7859                         $undef)
7860                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7861                                 val="$define"
7862                                 ;;
7863                         $define)
7864                                 xxx="probably a USG one, i.e. you use getpgrp()."
7865                                 val="$undef"
7866                                 ;;
7867                         esac
7868                 fi
7869                 echo "Assuming your getpgrp is $xxx" >&4
7870         fi
7871         ;;
7872 *) val="$undef";;
7873 esac
7874 set d_bsdgetpgrp
7875 eval $setvar
7876 $rm -f set set.c
7877
7878 : see if setpgrp exists
7879 set setpgrp d_setpgrp
7880 eval $inlibc
7881
7882 case "$d_setpgrp" in
7883 "$define")
7884         echo " "
7885         echo "Checking to see which flavor of setpgrp is in use..."
7886         $cat >set.c <<EOP
7887 #$i_unistd I_UNISTD
7888 #include <sys/types.h>
7889 #ifdef I_UNISTD
7890 #  include <unistd.h>
7891 #endif
7892 int main()
7893 {
7894         if (getuid() == 0) {
7895                 printf("(I see you are running Configure as super-user...)\n");
7896                 setuid(1);
7897         }
7898 #ifdef TRY_BSD_PGRP
7899         if (-1 == setpgrp(1, 1))
7900                 exit(0);
7901 #else
7902         if (setpgrp() != -1)
7903                 exit(0);
7904 #endif
7905         exit(1);
7906 }
7907 EOP
7908         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7909                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7910                 val="$define"
7911         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7912                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7913                 val="$undef"
7914         else
7915                 echo "(I can't seem to compile and run the test program.)"
7916                 if ./usg; then
7917                         xxx="a USG one, i.e. you use setpgrp()."
7918                 else
7919                         # SVR4 systems can appear rather BSD-ish.
7920                         case "$i_unistd" in
7921                         $undef)
7922                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7923                                 val="$define"
7924                                 ;;
7925                         $define)
7926                                 xxx="probably a USG one, i.e. you use setpgrp()."
7927                                 val="$undef"
7928                                 ;;
7929                         esac
7930                 fi
7931                 echo "Assuming your setpgrp is $xxx" >&4
7932         fi
7933         ;;
7934 *) val="$undef";;
7935 esac
7936 set d_bsdsetpgrp
7937 eval $setvar
7938 $rm -f set set.c
7939 : see if bzero exists
7940 set bzero d_bzero
7941 eval $inlibc
7942
7943 : see if signal is declared as pointer to function returning int or void
7944 echo " "
7945 xxx=`./findhdr signal.h`
7946 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7947 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7948         echo "You have int (*signal())() instead of void." >&4
7949         val="$undef"
7950 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7951         echo "You have void (*signal())()." >&4
7952         val="$define"
7953 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7954         echo "You have int (*signal())() instead of void." >&4
7955         val="$undef"
7956 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7957         echo "You have void (*signal())()." >&4
7958         val="$define"
7959 else
7960         case "$d_voidsig" in
7961         '')
7962         echo "I can't determine whether signal handler returns void or int..." >&4
7963                 dflt=void
7964                 rp="What type does your signal handler return?"
7965                 . ./myread
7966                 case "$ans" in
7967                 v*) val="$define";;
7968                 *) val="$undef";;
7969                 esac;;
7970         "$define")
7971                 echo "As you already told me, signal handler returns void." >&4
7972                 val="$define"
7973                 ;;
7974         *)      echo "As you already told me, signal handler returns int." >&4
7975                 val="$undef"
7976                 ;;
7977         esac
7978 fi
7979 set d_voidsig
7980 eval $setvar
7981 case "$d_voidsig" in
7982 "$define") signal_t="void";;
7983 *) signal_t="int";;
7984 esac
7985 $rm -f $$.tmp
7986
7987 : check for ability to cast large floats to 32-bit ints.
7988 echo " "
7989 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7990 if $test "$intsize" -ge 4; then
7991         xxx=int
7992 else
7993         xxx=long
7994 fi
7995 $cat >try.c <<EOCP
7996 #include <stdio.h>
7997 #include <sys/types.h>
7998 #include <signal.h>
7999 $signal_t blech(s) int s; { exit(3); }
8000 int main()
8001 {
8002         $xxx i32;
8003         double f, g;
8004         int result = 0;
8005         char str[16];
8006         signal(SIGFPE, blech);
8007
8008         /* Don't let compiler optimize the test away.  Store the number 
8009            in a writable string for gcc to pass to sscanf under HP/UX.
8010         */
8011         sprintf(str, "2147483647");
8012         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
8013         g = 10 * f;
8014         i32  = ($xxx) g;
8015
8016         /* x86 processors will probably give 0x8000 0000, which is a
8017        sign change.  We don't want that.  We want to mimic SPARC
8018            behavior here, which is to preserve the sign and give
8019            back 0x7fff ffff.
8020         */
8021         if (i32 != ($xxx) f)
8022                 result |= 1;
8023         exit(result);
8024 }
8025 EOCP
8026 set try
8027 if eval $compile_ok; then
8028         ./try
8029         yyy=$?
8030 else
8031         echo "(I can't seem to compile the test program--assuming it can't)"
8032         yyy=1
8033 fi
8034 case "$yyy" in
8035 0)      val="$define"
8036         echo "Yup, it can."
8037         ;;
8038 *)      val="$undef"
8039         echo "Nope, it can't."
8040         ;;
8041 esac
8042 set d_casti32
8043 eval $setvar
8044 $rm -f try try.*
8045
8046 : check for ability to cast negative floats to unsigned
8047 echo " "
8048 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
8049 $cat >try.c <<EOCP
8050 #include <stdio.h>
8051 #include <sys/types.h>
8052 #include <signal.h>
8053 $signal_t blech(s) int s; { exit(7); }
8054 $signal_t blech_in_list(s) int s; { exit(4); }
8055 unsigned long dummy_long(p) unsigned long p; { return p; }
8056 unsigned int dummy_int(p) unsigned int p; { return p; }
8057 unsigned short dummy_short(p) unsigned short p; { return p; }
8058 int main()
8059 {
8060         double f;
8061         unsigned long along;
8062         unsigned int aint;
8063         unsigned short ashort;
8064         int result = 0;
8065         char str[16];
8066         
8067         /* Frustrate gcc-2.7.2's optimizer which failed this test with
8068            a direct f = -123. assignment.  gcc-2.8.0 reportedly
8069            optimized the whole file away
8070         */
8071         /* Store the number in a writable string for gcc to pass to 
8072            sscanf under HP/UX.
8073         */
8074         sprintf(str, "-123");
8075         sscanf(str, "%lf", &f);  /* f = -123.; */
8076
8077         signal(SIGFPE, blech);
8078         along = (unsigned long)f;
8079         aint = (unsigned int)f;
8080         ashort = (unsigned short)f;
8081         if (along != (unsigned long)-123)
8082                 result |= 1;
8083         if (aint != (unsigned int)-123)
8084                 result |= 1;
8085         if (ashort != (unsigned short)-123)
8086                 result |= 1;
8087         sprintf(str, "1073741824.");
8088         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
8089         f = f + f;
8090         along = 0;
8091         along = (unsigned long)f;
8092         if (along != 0x80000000)
8093                 result |= 2;
8094         f -= 1.;
8095         along = 0;
8096         along = (unsigned long)f;
8097         if (along != 0x7fffffff)
8098                 result |= 1;
8099         f += 2.;
8100         along = 0;
8101         along = (unsigned long)f;
8102         if (along != 0x80000001)
8103                 result |= 2;
8104         if (result)
8105                 exit(result);
8106         signal(SIGFPE, blech_in_list);
8107         sprintf(str, "123.");
8108         sscanf(str, "%lf", &f);  /* f = 123.; */
8109         along = dummy_long((unsigned long)f);
8110         aint = dummy_int((unsigned int)f);
8111         ashort = dummy_short((unsigned short)f);
8112         if (along != (unsigned long)123)
8113                 result |= 4;
8114         if (aint != (unsigned int)123)
8115                 result |= 4;
8116         if (ashort != (unsigned short)123)
8117                 result |= 4;
8118         exit(result);
8119
8120 }
8121 EOCP
8122 set try
8123 if eval $compile_ok; then
8124         ./try
8125         castflags=$?
8126 else
8127         echo "(I can't seem to compile the test program--assuming it can't)"
8128         castflags=7
8129 fi
8130 case "$castflags" in
8131 0)      val="$define"
8132         echo "Yup, it can."
8133         ;;
8134 *)      val="$undef"
8135         echo "Nope, it can't."
8136         ;;
8137 esac
8138 set d_castneg
8139 eval $setvar
8140 $rm -f try.*
8141
8142 : see if vprintf exists
8143 echo " "
8144 if set vprintf val -f d_vprintf; eval $csym; $val; then
8145         echo 'vprintf() found.' >&4
8146         val="$define"
8147         $cat >vprintf.c <<'EOF'
8148 #include <varargs.h>
8149
8150 int main() { xxx("foo"); }
8151
8152 xxx(va_alist)
8153 va_dcl
8154 {
8155         va_list args;
8156         char buf[10];
8157
8158         va_start(args);
8159         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
8160 }
8161 EOF
8162         set vprintf
8163         if eval $compile && ./vprintf; then
8164                 echo "Your vsprintf() returns (int)." >&4
8165                 val2="$undef"
8166         else
8167                 echo "Your vsprintf() returns (char*)." >&4
8168                 val2="$define"
8169         fi
8170 else
8171         echo 'vprintf() NOT found.' >&4
8172                 val="$undef"
8173                 val2="$undef"
8174 fi
8175 set d_vprintf
8176 eval $setvar
8177 val=$val2
8178 set d_charvspr
8179 eval $setvar
8180
8181 : see if chown exists
8182 set chown d_chown
8183 eval $inlibc
8184
8185 : see if chroot exists
8186 set chroot d_chroot
8187 eval $inlibc
8188
8189 : see if chsize exists
8190 set chsize d_chsize
8191 eval $inlibc
8192
8193 : check for const keyword
8194 echo " "
8195 echo 'Checking to see if your C compiler knows about "const"...' >&4
8196 $cat >const.c <<'EOCP'
8197 typedef struct spug { int drokk; } spug;
8198 int main()
8199 {
8200         const char *foo;
8201         const spug y;
8202 }
8203 EOCP
8204 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
8205         val="$define"
8206         echo "Yup, it does."
8207 else
8208         val="$undef"
8209         echo "Nope, it doesn't."
8210 fi
8211 set d_const
8212 eval $setvar
8213
8214 : see if crypt exists
8215 echo " "
8216 if set crypt val -f d_crypt; eval $csym; $val; then
8217         echo 'crypt() found.' >&4
8218         val="$define"
8219         cryptlib=''
8220 else
8221         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
8222         if $test -z "$cryptlib"; then
8223                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
8224         else
8225                 cryptlib=-lcrypt
8226         fi
8227         if $test -z "$cryptlib"; then
8228                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
8229         else
8230                 cryptlib=-lcrypt
8231         fi
8232         if $test -z "$cryptlib"; then
8233                 cryptlib=`./loc libcrypt$_a "" $libpth`
8234         else
8235                 cryptlib=-lcrypt
8236         fi
8237         if $test -z "$cryptlib"; then
8238                 echo 'crypt() NOT found.' >&4
8239                 val="$undef"
8240         else
8241                 val="$define"
8242         fi
8243 fi
8244 set d_crypt
8245 eval $setvar
8246
8247 : get csh whereabouts
8248 case "$csh" in
8249 'csh') val="$undef" ;;
8250 *) val="$define" ;;
8251 esac
8252 set d_csh
8253 eval $setvar
8254 : Respect a hint or command line value for full_csh.
8255 case "$full_csh" in
8256 '') full_csh=$csh ;;
8257 esac
8258
8259 : see if cuserid exists
8260 set cuserid d_cuserid
8261 eval $inlibc
8262
8263 : see if this is a limits.h system
8264 set limits.h i_limits
8265 eval $inhdr
8266
8267 : see if this is a float.h system
8268 set float.h i_float
8269 eval $inhdr
8270
8271 : See if number of significant digits in a double precision number is known
8272 echo " "
8273 $cat >dbl_dig.c <<EOM
8274 #$i_limits I_LIMITS
8275 #$i_float I_FLOAT
8276 #ifdef I_LIMITS
8277 #include <limits.h>
8278 #endif
8279 #ifdef I_FLOAT
8280 #include <float.h>
8281 #endif
8282 #ifdef DBL_DIG
8283 printf("Contains DBL_DIG");
8284 #endif
8285 EOM
8286 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8287 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8288         echo "DBL_DIG found." >&4
8289         val="$define"
8290 else
8291         echo "DBL_DIG NOT found." >&4
8292         val="$undef"
8293 fi
8294 $rm -f dbl_dig.?
8295 set d_dbl_dig
8296 eval $setvar
8297
8298 : see if difftime exists
8299 set difftime d_difftime
8300 eval $inlibc
8301
8302 : see if this is a dirent system
8303 echo " "
8304 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8305         val="$define"
8306         echo "<dirent.h> found." >&4
8307 else
8308         val="$undef"
8309         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8310                 echo "<sys/dir.h> found." >&4
8311                 echo " "
8312         else
8313                 xinc=`./findhdr sys/ndir.h`
8314         fi
8315         echo "<dirent.h> NOT found." >&4
8316 fi
8317 set i_dirent
8318 eval $setvar
8319
8320 : Look for type of directory structure.
8321 echo " "
8322 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8323
8324 case "$direntrytype" in
8325 ''|' ')
8326         case "$i_dirent" in
8327         $define) guess1='struct dirent' ;;
8328         *) guess1='struct direct'  ;;
8329         esac
8330         ;;
8331 *)      guess1="$direntrytype"
8332         ;;
8333 esac
8334
8335 case "$guess1" in
8336 'struct dirent') guess2='struct direct' ;;
8337 *) guess2='struct dirent' ;;
8338 esac
8339                 
8340 if $contains "$guess1" try.c >/dev/null 2>&1; then
8341         direntrytype="$guess1"
8342         echo "Your directory entries are $direntrytype." >&4
8343 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8344         direntrytype="$guess2"
8345         echo "Your directory entries seem to be $direntrytype." >&4
8346 else
8347         echo "I don't recognize your system's directory entries." >&4
8348         rp="What type is used for directory entries on this system?"
8349         dflt="$guess1"
8350         . ./myread
8351         direntrytype="$ans"
8352 fi
8353 $rm -f try.c
8354
8355
8356 : see if the directory entry stores field length
8357 echo " "
8358 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8359 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8360         echo "Good, your directory entry keeps length information in d_namlen." >&4
8361         val="$define"
8362 else
8363         echo "Your directory entry does not know about the d_namlen field." >&4
8364         val="$undef"
8365 fi
8366 set d_dirnamlen
8367 eval $setvar
8368 $rm -f try.c
8369
8370 : see if dlerror exists
8371 xxx_runnm="$runnm"
8372 runnm=false
8373 set dlerror d_dlerror
8374 eval $inlibc
8375 runnm="$xxx_runnm"
8376
8377 : see if dlfcn is available
8378 set dlfcn.h i_dlfcn
8379 eval $inhdr
8380
8381 case "$usedl" in
8382 $define|y|true)
8383         $cat << EOM
8384
8385 On a few systems, the dynamically loaded modules that perl generates and uses
8386 will need a different extension than shared libs. The default will probably
8387 be appropriate.
8388
8389 EOM
8390         case "$dlext" in
8391         '')     dflt="$so" ;;
8392         *)      dflt="$dlext" ;;
8393         esac
8394         rp='What is the extension of dynamically loaded modules'
8395         . ./myread
8396         dlext="$ans"
8397         ;;
8398 *)
8399         dlext="none"
8400         ;;
8401 esac
8402
8403 : Check if dlsym need a leading underscore
8404 echo " "
8405 val="$undef"
8406
8407 case "$dlsrc" in
8408 dl_dlopen.xs)
8409         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8410         $cat >dyna.c <<'EOM'
8411 fred () { }
8412 EOM
8413
8414 $cat >fred.c<<EOM
8415
8416 #include <stdio.h>
8417 #$i_dlfcn I_DLFCN
8418 #ifdef I_DLFCN
8419 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8420 #else
8421 #include <sys/types.h>
8422 #include <nlist.h>
8423 #include <link.h>
8424 #endif
8425
8426 extern int fred() ;
8427
8428 int main()
8429 {
8430     void * handle ;
8431     void * symbol ;
8432 #ifndef RTLD_LAZY
8433     int mode = 1 ;
8434 #else
8435     int mode = RTLD_LAZY ;
8436 #endif
8437     handle = dlopen("./dyna.$dlext", mode) ;
8438     if (handle == NULL) {
8439         printf ("1\n") ;
8440         fflush (stdout) ;
8441         exit(0);
8442     }
8443     symbol = dlsym(handle, "fred") ;
8444     if (symbol == NULL) {
8445         /* try putting a leading underscore */
8446         symbol = dlsym(handle, "_fred") ;
8447         if (symbol == NULL) {
8448             printf ("2\n") ;
8449             fflush (stdout) ;
8450             exit(0);
8451         }
8452         printf ("3\n") ;
8453     }
8454     else
8455         printf ("4\n") ;
8456     fflush (stdout) ;
8457     exit(0);
8458 }
8459 EOM
8460         : Call the object file tmp-dyna.o in case dlext=o.
8461         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8462                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8463                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8464                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8465                 xxx=`./fred`
8466                 case $xxx in
8467                 1)      echo "Test program failed using dlopen." >&4
8468                         echo "Perhaps you should not use dynamic loading." >&4;;
8469                 2)      echo "Test program failed using dlsym." >&4
8470                         echo "Perhaps you should not use dynamic loading." >&4;;
8471                 3)      echo "dlsym needs a leading underscore" >&4
8472                         val="$define" ;;
8473                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8474                 esac
8475         else
8476                 echo "I can't compile and run the test program." >&4
8477                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8478         fi
8479         ;;
8480 esac
8481                 
8482 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8483
8484 set d_dlsymun
8485 eval $setvar
8486
8487 hasproto='varname=$1; func=$2; shift; shift;
8488 while $test $# -ge 2; do
8489         case "$1" in
8490         $define) echo "#include <$2>";;
8491         esac ;
8492     shift 2;
8493 done > try.c;
8494 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8495 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8496         echo "$func() prototype found.";
8497         val="$define";
8498 else
8499         echo "$func() prototype NOT found.";
8500         val="$undef";
8501 fi;
8502 set $varname;
8503 eval $setvar;
8504 $rm -f try.c tryout.c'
8505
8506 : see if prototype for drand48 is available
8507 echo " "
8508 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8509 eval $hasproto
8510
8511 : see if dup2 exists
8512 set dup2 d_dup2
8513 eval $inlibc
8514
8515 : see if eaccess exists
8516 set eaccess d_eaccess
8517 eval $inlibc
8518
8519 : see if endgrent exists
8520 set endgrent d_endgrent
8521 eval $inlibc
8522
8523 : see if endhostent exists
8524 set endhostent d_endhent
8525 eval $inlibc
8526
8527 : see if endnetent exists
8528 set endnetent d_endnent
8529 eval $inlibc
8530
8531 : see if endprotoent exists
8532 set endprotoent d_endpent
8533 eval $inlibc
8534
8535 : see if endpwent exists
8536 set endpwent d_endpwent
8537 eval $inlibc
8538
8539 : see if endservent exists
8540 set endservent d_endsent
8541 eval $inlibc
8542
8543 : Locate the flags for 'open()'
8544 echo " "
8545 $cat >open3.c <<'EOCP'
8546 #include <sys/types.h>
8547 #ifdef I_FCNTL
8548 #include <fcntl.h>
8549 #endif
8550 #ifdef I_SYS_FILE
8551 #include <sys/file.h>
8552 #endif
8553 int main() {
8554         if(O_RDONLY);
8555 #ifdef O_TRUNC
8556         exit(0);
8557 #else
8558         exit(1);
8559 #endif
8560 }
8561 EOCP
8562 : check sys/file.h first to get FREAD on Sun
8563 if $test `./findhdr sys/file.h` && \
8564                 set open3 -DI_SYS_FILE && eval $compile; then
8565         h_sysfile=true;
8566         echo "<sys/file.h> defines the O_* constants..." >&4
8567         if ./open3; then
8568                 echo "and you have the 3 argument form of open()." >&4
8569                 val="$define"
8570         else
8571                 echo "but not the 3 argument form of open().  Oh, well." >&4
8572                 val="$undef"
8573         fi
8574 elif $test `./findhdr fcntl.h` && \
8575                 set open3 -DI_FCNTL && eval $compile; then
8576         h_fcntl=true;
8577         echo "<fcntl.h> defines the O_* constants..." >&4
8578         if ./open3; then
8579                 echo "and you have the 3 argument form of open()." >&4
8580                 val="$define"
8581         else
8582                 echo "but not the 3 argument form of open().  Oh, well." >&4
8583                 val="$undef"
8584         fi
8585 else
8586         val="$undef"
8587         echo "I can't find the O_* constant definitions!  You got problems." >&4
8588 fi
8589 set d_open3
8590 eval $setvar
8591 $rm -f open3*
8592
8593 : see which of string.h or strings.h is needed
8594 echo " "
8595 strings=`./findhdr string.h`
8596 if $test "$strings" && $test -r "$strings"; then
8597         echo "Using <string.h> instead of <strings.h>." >&4
8598         val="$define"
8599 else
8600         val="$undef"
8601         strings=`./findhdr strings.h`
8602         if $test "$strings" && $test -r "$strings"; then
8603                 echo "Using <strings.h> instead of <string.h>." >&4
8604         else
8605                 echo "No string header found -- You'll surely have problems." >&4
8606         fi
8607 fi
8608 set i_string
8609 eval $setvar
8610 case "$i_string" in
8611 "$undef") strings=`./findhdr strings.h`;;
8612 *)        strings=`./findhdr string.h`;;
8613 esac
8614
8615 : check for non-blocking I/O stuff
8616 case "$h_sysfile" in
8617 true) echo "#include <sys/file.h>" > head.c;;
8618 *)
8619         case "$h_fcntl" in
8620         true) echo "#include <fcntl.h>" > head.c;;
8621         *) echo "#include <sys/fcntl.h>" > head.c;;
8622         esac
8623         ;;
8624 esac
8625 echo " "
8626 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8627 case "$o_nonblock" in
8628 '')
8629         $cat head.c > try.c
8630         $cat >>try.c <<'EOCP'
8631 #include <stdio.h>
8632 int main() {
8633 #ifdef O_NONBLOCK
8634         printf("O_NONBLOCK\n");
8635         exit(0);
8636 #endif
8637 #ifdef O_NDELAY
8638         printf("O_NDELAY\n");
8639         exit(0);
8640 #endif
8641 #ifdef FNDELAY
8642         printf("FNDELAY\n");
8643         exit(0);
8644 #endif
8645         exit(0);
8646 }
8647 EOCP
8648         set try
8649         if eval $compile_ok; then
8650                 o_nonblock=`./try`
8651                 case "$o_nonblock" in
8652                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8653                 *) echo "Seems like we can use $o_nonblock.";;
8654                 esac
8655         else
8656                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8657         fi
8658         ;;
8659 *) echo "Using $hint value $o_nonblock.";;
8660 esac
8661 $rm -f try try.* .out core
8662
8663 echo " "
8664 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8665 case "$eagain" in
8666 '')
8667         $cat head.c > try.c
8668         $cat >>try.c <<EOCP
8669 #include <errno.h>
8670 #include <sys/types.h>
8671 #include <signal.h>
8672 #include <stdio.h> 
8673 #define MY_O_NONBLOCK $o_nonblock
8674 #ifndef errno  /* XXX need better Configure test */
8675 extern int errno;
8676 #endif
8677 #$i_unistd I_UNISTD
8678 #ifdef I_UNISTD
8679 #include <unistd.h>
8680 #endif
8681 #$i_string I_STRING
8682 #ifdef I_STRING
8683 #include <string.h>
8684 #else
8685 #include <strings.h>
8686 #endif
8687 $signal_t blech(x) int x; { exit(3); }
8688 EOCP
8689         $cat >> try.c <<'EOCP'
8690 int main()
8691 {
8692         int pd[2];
8693         int pu[2];
8694         char buf[1];
8695         char string[100];
8696
8697         pipe(pd);       /* Down: child -> parent */
8698         pipe(pu);       /* Up: parent -> child */
8699         if (0 != fork()) {
8700                 int ret;
8701                 close(pd[1]);   /* Parent reads from pd[0] */
8702                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8703                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8704                         exit(1);
8705                 signal(SIGALRM, blech);
8706                 alarm(5);
8707                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8708                         exit(2);
8709                 sprintf(string, "%d\n", ret);
8710                 write(2, string, strlen(string));
8711                 alarm(0);
8712 #ifdef EAGAIN
8713                 if (errno == EAGAIN) {
8714                         printf("EAGAIN\n");
8715                         goto ok;
8716                 }
8717 #endif
8718 #ifdef EWOULDBLOCK
8719                 if (errno == EWOULDBLOCK)
8720                         printf("EWOULDBLOCK\n");
8721 #endif
8722         ok:
8723                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8724                 sleep(2);                               /* Give it time to close our pipe */
8725                 alarm(5);
8726                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8727                 alarm(0);
8728                 sprintf(string, "%d\n", ret);
8729                 write(3, string, strlen(string));
8730                 exit(0);
8731         }
8732
8733         close(pd[0]);                   /* We write to pd[1] */
8734         close(pu[1]);                   /* We read from pu[0] */
8735         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8736         close(pd[1]);                   /* Pipe pd is now fully closed! */
8737         exit(0);                                /* Bye bye, thank you for playing! */
8738 }
8739 EOCP
8740         set try
8741         if eval $compile_ok; then
8742                 echo "$startsh" >mtry
8743                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8744                 chmod +x mtry
8745                 ./mtry >/dev/null 2>&1
8746                 case $? in
8747                 0) eagain=`$cat try.out`;;
8748                 1) echo "Could not perform non-blocking setting!";;
8749                 2) echo "I did a successful read() for something that was not there!";;
8750                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8751                 *) echo "Something terribly wrong happened during testing.";;
8752                 esac
8753                 rd_nodata=`$cat try.ret`
8754                 echo "A read() system call with no data present returns $rd_nodata."
8755                 case "$rd_nodata" in
8756                 0|-1) ;;
8757                 *)
8758                         echo "(That's peculiar, fixing that to be -1.)"
8759                         rd_nodata=-1
8760                         ;;
8761                 esac
8762                 case "$eagain" in
8763                 '')
8764                         echo "Forcing errno EAGAIN on read() with no data available."
8765                         eagain=EAGAIN
8766                         ;;
8767                 *)
8768                         echo "Your read() sets errno to $eagain when no data is available."
8769                         ;;
8770                 esac
8771                 status=`$cat try.err`
8772                 case "$status" in
8773                 0) echo "And it correctly returns 0 to signal EOF.";;
8774                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8775                 *) echo "However, your read() returns '$status' on EOF??";;
8776                 esac
8777                 val="$define"
8778                 if test "$status" = "$rd_nodata"; then
8779                         echo "WARNING: you can't distinguish between EOF and no data!"
8780                         val="$undef"
8781                 fi
8782         else
8783                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8784                 eagain=EAGAIN
8785         fi
8786         set d_eofnblk
8787         eval $setvar
8788         ;;
8789 *)
8790         echo "Using $hint value $eagain."
8791         echo "Your read() returns $rd_nodata when no data is present."
8792         case "$d_eofnblk" in
8793         "$define") echo "And you can see EOF because read() returns 0.";;
8794         "$undef") echo "But you can't see EOF status from read() returned value.";;
8795         *)
8796                 echo "(Assuming you can't see EOF status from read anyway.)"
8797                 d_eofnblk=$undef
8798                 ;;
8799         esac
8800         ;;
8801 esac
8802 $rm -f try try.* .out core head.c mtry
8803
8804 : see if fchmod exists
8805 set fchmod d_fchmod
8806 eval $inlibc
8807
8808 : see if fchown exists
8809 set fchown d_fchown
8810 eval $inlibc
8811
8812 : see if this is an fcntl system
8813 set fcntl d_fcntl
8814 eval $inlibc
8815
8816 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8817 while $test $# -ge 2; do
8818         case "$1" in
8819         $define) echo "#include <$2>";;
8820         esac ;
8821     shift 2;
8822 done > try.c;
8823 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8824 set try;
8825 if eval $compile; then
8826         val="$define";
8827 else
8828         val="$undef";
8829 fi;
8830 set $varname;
8831 eval $setvar;
8832 $rm -f try.c try.o'
8833
8834 socketlib=''
8835 sockethdr=''
8836 : see whether socket exists
8837 echo " "
8838 $echo $n "Hmm... $c" >&4
8839 if set socket val -f d_socket; eval $csym; $val; then
8840         echo "Looks like you have Berkeley networking support." >&4
8841         d_socket="$define"
8842         if set setsockopt val -f; eval $csym; $val; then
8843                 d_oldsock="$undef"
8844         else
8845                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8846                 d_oldsock="$define"
8847         fi
8848 else
8849         if $contains socklib libc.list >/dev/null 2>&1; then
8850                 echo "Looks like you have Berkeley networking support." >&4
8851                 d_socket="$define"
8852                 : we will have to assume that it supports the 4.2 BSD interface
8853                 d_oldsock="$undef"
8854         else
8855                 echo "You don't have Berkeley networking in libc$_a..." >&4
8856                 if test "X$d_socket" = "X$define"; then
8857                    echo "...but you seem to believe that you have sockets." >&4
8858                 else
8859                         for net in net socket
8860                         do
8861                                 if test -f /usr/lib/lib$net$_a; then
8862                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8863                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8864                                         if $contains socket libc.list >/dev/null 2>&1; then
8865                                                 d_socket="$define"
8866                                                 socketlib="-l$net"
8867                                                 case "$net" in
8868                                                 net)
8869                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8870                                                         sockethdr="-I/usr/netinclude"
8871                                                         ;;
8872                                                 esac
8873                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8874                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8875                                                         d_oldsock="$undef"
8876                                                 else
8877                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8878                                                         d_oldsock="$define"
8879                                                 fi
8880                                                 break
8881                                         fi
8882                                 fi
8883                         done
8884                         if test "X$d_socket" != "X$define"; then
8885                            echo "or anywhere else I see." >&4
8886                            d_socket="$undef"
8887                            d_oldsock="$undef"
8888                         fi
8889                 fi
8890         fi
8891 fi
8892
8893 : see if socketpair exists
8894 set socketpair d_sockpair
8895 eval $inlibc
8896
8897
8898 echo " "
8899 echo "Checking the availability of certain socket constants..." >& 4
8900 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8901         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8902         $cat >try.c <<EOF
8903 #include <sys/types.h>
8904 #include <sys/socket.h>
8905 int main() {
8906     int i = $ENUM;
8907 }
8908 EOF
8909         val="$undef"
8910         set try; if eval $compile; then
8911                 val="$define"
8912         fi
8913         set d_${enum}; eval $setvar
8914         $rm -f try.c try
8915 done
8916
8917 : see if sys/select.h has to be included
8918 set sys/select.h i_sysselct
8919 eval $inhdr
8920
8921 : see if we should include time.h, sys/time.h, or both
8922 echo " "
8923 if test "X$timeincl" = X; then
8924         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8925         $echo $n "I'm now running the test program...$c"
8926         $cat >try.c <<'EOCP'
8927 #include <sys/types.h>
8928 #ifdef I_TIME
8929 #include <time.h>
8930 #endif
8931 #ifdef I_SYSTIME
8932 #ifdef SYSTIMEKERNEL
8933 #define KERNEL
8934 #endif
8935 #include <sys/time.h>
8936 #endif
8937 #ifdef I_SYSSELECT
8938 #include <sys/select.h>
8939 #endif
8940 int main()
8941 {
8942         struct tm foo;
8943 #ifdef S_TIMEVAL
8944         struct timeval bar;
8945 #endif
8946 #ifdef S_TIMEZONE
8947         struct timezone tzp;
8948 #endif
8949         if (foo.tm_sec == foo.tm_sec)
8950                 exit(0);
8951 #ifdef S_TIMEVAL
8952         if (bar.tv_sec == bar.tv_sec)
8953                 exit(0);
8954 #endif
8955         exit(1);
8956 }
8957 EOCP
8958         flags=''
8959         for s_timezone in '-DS_TIMEZONE' ''; do
8960         sysselect=''
8961         for s_timeval in '-DS_TIMEVAL' ''; do
8962         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8963         for i_time in '' '-DI_TIME'; do
8964         for i_systime in '-DI_SYSTIME' ''; do
8965                 case "$flags" in
8966                 '') $echo $n ".$c"
8967                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8968                         if eval $compile; then
8969                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8970                                 shift
8971                                 flags="$*"
8972                                 echo " "
8973                                 $echo $n "Succeeded with $flags$c"
8974                         fi
8975                         ;;
8976                 esac
8977         done
8978         done
8979         done
8980         done
8981         done
8982         timeincl=''
8983         echo " "
8984         case "$flags" in
8985         *SYSTIMEKERNEL*) i_systimek="$define"
8986                 timeincl=`./findhdr sys/time.h`
8987                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8988         *) i_systimek="$undef";;
8989         esac
8990         case "$flags" in
8991         *I_TIME*) i_time="$define"
8992                 timeincl=`./findhdr time.h`" $timeincl"
8993                 echo "We'll include <time.h>." >&4;;
8994         *) i_time="$undef";;
8995         esac
8996         case "$flags" in
8997         *I_SYSTIME*) i_systime="$define"
8998                 timeincl=`./findhdr sys/time.h`" $timeincl"
8999                 echo "We'll include <sys/time.h>." >&4;;
9000         *) i_systime="$undef";;
9001         esac
9002         $rm -f try.c try
9003 fi
9004
9005 : check for fd_set items
9006 $cat <<EOM
9007
9008 Checking to see how well your C compiler handles fd_set and friends ...
9009 EOM
9010 $cat >fd_set.c <<EOCP
9011 #$i_systime I_SYS_TIME
9012 #$i_sysselct I_SYS_SELECT
9013 #$d_socket HAS_SOCKET
9014 #include <sys/types.h>
9015 #ifdef HAS_SOCKET
9016 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
9017 #endif
9018 #ifdef I_SYS_TIME
9019 #include <sys/time.h>
9020 #endif
9021 #ifdef I_SYS_SELECT
9022 #include <sys/select.h>
9023 #endif
9024 int main() {
9025         fd_set fds;
9026
9027 #ifdef TRYBITS
9028         if(fds.fds_bits);
9029 #endif
9030
9031 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
9032         exit(0);
9033 #else
9034         exit(1);
9035 #endif
9036 }
9037 EOCP
9038 set fd_set -DTRYBITS
9039 if eval $compile; then
9040         d_fds_bits="$define"
9041         d_fd_set="$define"
9042         echo "Well, your system knows about the normal fd_set typedef..." >&4
9043         if ./fd_set; then
9044                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
9045                 d_fd_macros="$define"
9046         else
9047                 $cat >&4 <<'EOM'
9048 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
9049 EOM
9050                 d_fd_macros="$undef"
9051         fi
9052 else
9053         $cat <<'EOM'
9054 Hmm, your compiler has some difficulty with fd_set.  Checking further...
9055 EOM
9056         set fd_set
9057         if eval $compile; then
9058                 d_fds_bits="$undef"
9059                 d_fd_set="$define"
9060                 echo "Well, your system has some sort of fd_set available..." >&4
9061                 if ./fd_set; then
9062                         echo "and you have the normal fd_set macros." >&4
9063                         d_fd_macros="$define"
9064                 else
9065                         $cat <<'EOM'
9066 but not the normal fd_set macros!  Gross!  More work for me...
9067 EOM
9068                         d_fd_macros="$undef"
9069                 fi
9070         else
9071         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
9072                 d_fd_set="$undef"
9073                 d_fds_bits="$undef"
9074                 d_fd_macros="$undef"
9075         fi
9076 fi
9077 $rm -f fd_set*
9078
9079 : see if fgetpos exists
9080 set fgetpos d_fgetpos
9081 eval $inlibc
9082
9083 : see if flock exists
9084 set flock d_flock
9085 eval $inlibc
9086
9087 : see if fork exists
9088 set fork d_fork
9089 eval $inlibc
9090
9091 : see if pathconf exists
9092 set pathconf d_pathconf
9093 eval $inlibc
9094
9095 : see if fpathconf exists
9096 set fpathconf d_fpathconf
9097 eval $inlibc
9098
9099
9100 : check for fpos64_t
9101 echo " "
9102 echo "Checking to see if you have fpos64_t..." >&4
9103 $cat >try.c <<EOCP
9104 #include <stdio.h>
9105 int main() { fpos64_t x = 7; }
9106 EOCP
9107 set try
9108 if eval $compile; then
9109         val="$define"
9110         echo "You have fpos64_t."
9111 else
9112         val="$undef"
9113         echo "You do not have fpos64_t."
9114         case "$fpossize" in
9115         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
9116         esac
9117 fi
9118 $rm -f try.* try
9119 set d_fpos64_t
9120 eval $setvar
9121
9122 : see if frexpl exists
9123 set frexpl d_frexpl
9124 eval $inlibc
9125
9126 hasstruct='varname=$1; struct=$2; shift; shift;
9127 while $test $# -ge 2; do
9128         case "$1" in
9129         $define) echo "#include <$2>";;
9130         esac ;
9131     shift 2;
9132 done > try.c;
9133 echo "int main () { struct $struct foo; }" >> try.c;
9134 set try;
9135 if eval $compile; then
9136         val="$define";
9137 else
9138         val="$undef";
9139 fi;
9140 set $varname;
9141 eval $setvar;
9142 $rm -f try.c try.o'
9143
9144 : see if this is a sys/param system
9145 set sys/param.h i_sysparam
9146 eval $inhdr
9147
9148 : see if this is a sys/mount.h system
9149 set sys/mount.h i_sysmount
9150 eval $inhdr
9151
9152 : see if sys/types.h has to be included
9153 set sys/types.h i_systypes
9154 eval $inhdr
9155
9156
9157 echo " "
9158 echo "Checking to see if your system supports struct fs_data..." >&4
9159 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
9160 eval $hasstruct
9161 case "$d_fs_data_s" in
9162 "$define")      echo "Yes, it does."   ;;
9163 *)              echo "No, it doesn't." ;;
9164 esac
9165
9166 : see if fseeko exists
9167 set fseeko d_fseeko
9168 eval $inlibc
9169 case "$longsize" in
9170 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
9171 esac
9172
9173 : see if fsetpos exists
9174 set fsetpos d_fsetpos
9175 eval $inlibc
9176
9177
9178 : see if fstatfs exists
9179 set fstatfs d_fstatfs
9180 eval $inlibc
9181
9182
9183 : see if statvfs exists
9184 set statvfs d_statvfs
9185 eval $inlibc
9186
9187 : see if fstatvfs exists
9188 set fstatvfs d_fstatvfs
9189 eval $inlibc
9190
9191
9192 : see if ftello exists
9193 set ftello d_ftello
9194 eval $inlibc
9195 case "$longsize" in
9196 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
9197 esac
9198
9199 : see if getcwd exists
9200 set getcwd d_getcwd
9201 eval $inlibc
9202
9203 : see if getespwnam exists
9204 set getespwnam d_getespwnam
9205 eval $inlibc
9206
9207
9208 : see if getfsstat exists
9209 set getfsstat d_getfsstat
9210 eval $inlibc
9211
9212 : see if getgrent exists
9213 set getgrent d_getgrent
9214 eval $inlibc
9215
9216 : see if gethostbyaddr exists
9217 set gethostbyaddr d_gethbyaddr
9218 eval $inlibc
9219
9220 : see if gethostbyname exists
9221 set gethostbyname d_gethbyname
9222 eval $inlibc
9223
9224 : see if gethostent exists
9225 set gethostent d_gethent
9226 eval $inlibc
9227
9228 : see how we will look up host name
9229 echo " "
9230 call=''
9231 if set gethostname val -f d_gethname; eval $csym; $val; then
9232         echo 'gethostname() found.' >&4
9233         d_gethname="$define"
9234         call=gethostname
9235 fi
9236 if set uname val -f d_uname; eval $csym; $val; then
9237         if ./xenix; then
9238                 $cat <<'EOM'
9239 uname() was found, but you're running xenix, and older versions of xenix
9240 have a broken uname(). If you don't really know whether your xenix is old
9241 enough to have a broken system call, use the default answer.
9242
9243 EOM
9244                 dflt=y
9245                 case "$d_uname" in
9246                 "$define") dflt=n;;
9247                 esac
9248                 rp='Is your uname() broken?'
9249                 . ./myread
9250                 case "$ans" in
9251                 n*) d_uname="$define"; call=uname;;
9252                 esac
9253         else
9254                 echo 'uname() found.' >&4
9255                 d_uname="$define"
9256                 case "$call" in
9257                 '') call=uname ;;
9258                 esac
9259         fi
9260 fi
9261 case "$d_gethname" in
9262 '') d_gethname="$undef";;
9263 esac
9264 case "$d_uname" in
9265 '') d_uname="$undef";;
9266 esac
9267 case "$d_uname$d_gethname" in
9268 *define*)
9269         dflt=n
9270         cat <<EOM
9271  
9272 Every now and then someone has a $call() that lies about the hostname
9273 but can't be fixed for political or economic reasons.  If you wish, I can
9274 pretend $call() isn't there and maybe compute hostname at run-time
9275 thanks to the '$phostname' command.
9276
9277 EOM
9278         rp="Shall I ignore $call() from now on?"
9279         . ./myread
9280         case "$ans" in
9281         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9282         esac;;
9283 esac
9284 case "$phostname" in
9285 '') aphostname='';;
9286 *) case "$aphostname" in
9287         /*) ;;
9288         *) set X $phostname
9289                 shift
9290                 file=$1
9291                 shift
9292                 file=`./loc $file $file $pth`
9293                 aphostname=`echo $file $*`
9294                 ;;
9295         esac
9296         ;;
9297 esac
9298 case "$d_uname$d_gethname" in
9299 *define*) ;;
9300 *)
9301         case "$phostname" in
9302         '')
9303                 echo "There will be no way for $package to get your hostname." >&4;;
9304         *)
9305         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9306                 ;;
9307         esac;;
9308 esac
9309 case "$d_phostname" in
9310 '') d_phostname="$undef";;
9311 esac
9312
9313 : see if this is a netdb.h system
9314 set netdb.h i_netdb
9315 eval $inhdr
9316
9317 : see if prototypes for various gethostxxx netdb.h functions are available
9318 echo " "
9319 set d_gethostprotos gethostent $i_netdb netdb.h
9320 eval $hasproto
9321
9322 : see if getlogin exists
9323 set getlogin d_getlogin
9324 eval $inlibc
9325
9326 : see if getmnt exists
9327 set getmnt d_getmnt
9328 eval $inlibc
9329
9330 : see if getmntent exists
9331 set getmntent d_getmntent
9332 eval $inlibc
9333
9334 : see if getnetbyaddr exists
9335 set getnetbyaddr d_getnbyaddr
9336 eval $inlibc
9337
9338 : see if getnetbyname exists
9339 set getnetbyname d_getnbyname
9340 eval $inlibc
9341
9342 : see if getnetent exists
9343 set getnetent d_getnent
9344 eval $inlibc
9345
9346 : see if prototypes for various getnetxxx netdb.h functions are available
9347 echo " "
9348 set d_getnetprotos getnetent $i_netdb netdb.h
9349 eval $hasproto
9350
9351
9352 : see if getprotobyname exists
9353 set getprotobyname d_getpbyname
9354 eval $inlibc
9355
9356 : see if getprotobynumber exists
9357 set getprotobynumber d_getpbynumber
9358 eval $inlibc
9359
9360 : see if getprotoent exists
9361 set getprotoent d_getpent
9362 eval $inlibc
9363
9364 : see if getpgid exists
9365 set getpgid d_getpgid
9366 eval $inlibc
9367
9368 : see if getpgrp2 exists
9369 set getpgrp2 d_getpgrp2
9370 eval $inlibc
9371
9372 : see if getppid exists
9373 set getppid d_getppid
9374 eval $inlibc
9375
9376 : see if getpriority exists
9377 set getpriority d_getprior
9378 eval $inlibc
9379
9380 : see if prototypes for various getprotoxxx netdb.h functions are available
9381 echo " "
9382 set d_getprotoprotos getprotoent $i_netdb netdb.h
9383 eval $hasproto
9384
9385 : see if getprpwnam exists
9386 set getprpwnam d_getprpwnam
9387 eval $inlibc
9388
9389 : see if getpwent exists
9390 set getpwent d_getpwent
9391 eval $inlibc
9392
9393
9394 : see if getservbyname exists
9395 set getservbyname d_getsbyname
9396 eval $inlibc
9397
9398 : see if getservbyport exists
9399 set getservbyport d_getsbyport
9400 eval $inlibc
9401
9402 : see if getservent exists
9403 set getservent d_getsent
9404 eval $inlibc
9405
9406 : see if prototypes for various getservxxx netdb.h functions are available
9407 echo " "
9408 set d_getservprotos getservent $i_netdb netdb.h
9409 eval $hasproto
9410
9411 : see if getspnam exists
9412 set getspnam d_getspnam
9413 eval $inlibc
9414
9415 : see if gettimeofday or ftime exists
9416 set gettimeofday d_gettimeod
9417 eval $inlibc
9418 case "$d_gettimeod" in
9419 "$undef")
9420         set ftime d_ftime 
9421         eval $inlibc
9422         ;;
9423 *)
9424         val="$undef"; set d_ftime; eval $setvar
9425         ;;
9426 esac
9427 case "$d_gettimeod$d_ftime" in
9428 "$undef$undef")
9429         echo " "
9430         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9431         ;;
9432 esac
9433
9434 : see if this is an grp system
9435 set grp.h i_grp
9436 eval $inhdr
9437
9438 case "$i_grp" in
9439 $define)
9440         xxx=`./findhdr grp.h`
9441         $cppstdin $cppflags $cppminus < $xxx >$$.h
9442
9443         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9444                 val="$define"
9445         else
9446                 val="$undef"
9447         fi
9448         set d_grpasswd
9449         eval $setvar
9450
9451         $rm -f $$.h
9452         ;;
9453 *)
9454         val="$undef";
9455         set d_grpasswd; eval $setvar
9456         ;;
9457 esac
9458
9459 : see if hasmntopt exists
9460 set hasmntopt d_hasmntopt
9461 eval $inlibc
9462
9463 : see if this is a netinet/in.h or sys/in.h system
9464 set netinet/in.h i_niin sys/in.h i_sysin
9465 eval $inhdr
9466
9467 : see if arpa/inet.h has to be included
9468 set arpa/inet.h i_arpainet
9469 eval $inhdr
9470
9471 : see if htonl --and friends-- exists
9472 val=''
9473 set htonl val
9474 eval $inlibc
9475
9476 : Maybe they are macros.
9477 case "$val" in
9478 $undef)
9479         $cat >htonl.c <<EOM
9480 #include <stdio.h>
9481 #include <sys/types.h>
9482 #$i_niin I_NETINET_IN
9483 #$i_sysin I_SYS_IN
9484 #$i_arpainet I_ARPA_INET
9485 #ifdef I_NETINET_IN
9486 #include <netinet/in.h>
9487 #endif
9488 #ifdef I_SYS_IN
9489 #include <sys/in.h>
9490 #endif
9491 #ifdef I_ARPA_INET
9492 #include <arpa/inet.h>
9493 #endif
9494 #ifdef htonl
9495 printf("Defined as a macro.");
9496 #endif
9497 EOM
9498         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9499         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9500                 val="$define"
9501                 echo "But it seems to be defined as a macro." >&4
9502         fi
9503         $rm -f htonl.?
9504         ;;
9505 esac
9506 set d_htonl
9507 eval $setvar
9508
9509 : see if iconv exists
9510 set iconv d_iconv
9511 eval $inlibc
9512
9513 : index or strchr
9514 echo " "
9515 if set index val -f; eval $csym; $val; then
9516         if set strchr val -f d_strchr; eval $csym; $val; then
9517                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9518                         val="$define"
9519                         vali="$undef"
9520                         echo "strchr() found." >&4
9521                 else
9522                         val="$undef"
9523                         vali="$define"
9524                         echo "index() found." >&4
9525                 fi
9526         else
9527                 val="$undef"
9528                 vali="$define"
9529                 echo "index() found." >&4
9530         fi
9531 else
9532         if set strchr val -f d_strchr; eval $csym; $val; then
9533                 val="$define"
9534                 vali="$undef"
9535                 echo "strchr() found." >&4
9536         else
9537                 echo "No index() or strchr() found!" >&4
9538                 val="$undef"
9539                 vali="$undef"
9540         fi
9541 fi
9542 set d_strchr; eval $setvar
9543 val="$vali"
9544 set d_index; eval $setvar
9545
9546 : check whether inet_aton exists
9547 set inet_aton d_inetaton
9548 eval $inlibc
9549
9550 : see if inttypes.h is available
9551 : we want a real compile instead of Inhdr because some systems
9552 : have an inttypes.h which includes non-existent headers
9553 echo " "
9554 $cat >try.c <<EOCP
9555 #include <inttypes.h>
9556 int main() {
9557         static int32_t foo32 = 0x12345678;
9558 }
9559 EOCP
9560 set try
9561 if eval $compile; then
9562         echo "<inttypes.h> found." >&4
9563         val="$define"
9564 else
9565         echo "<inttypes.h> NOT found." >&4
9566         val="$undef"
9567 fi
9568 $rm -f try.c try
9569 set i_inttypes
9570 eval $setvar
9571
9572 : check for int64_t
9573 echo " "
9574 echo "Checking to see if you have int64_t..." >&4
9575 $cat >try.c <<EOCP
9576 #include <sys/types.h>
9577 #$i_inttypes I_INTTYPES
9578 #ifdef I_INTTYPES
9579 #include <inttypes.h>
9580 #endif
9581 int main() { int64_t x = 7; }
9582 EOCP
9583 set try
9584 if eval $compile; then
9585         val="$define"
9586         echo "You have int64_t."
9587 else
9588         val="$undef"
9589         echo "You do not have int64_t."
9590 fi
9591 $rm -f try try.*
9592 set d_int64_t
9593 eval $setvar
9594
9595 : Look for isascii
9596 echo " "
9597 $cat >isascii.c <<'EOCP'
9598 #include <stdio.h>
9599 #include <ctype.h>
9600 int main() {
9601         int c = 'A';
9602         if (isascii(c))
9603                 exit(0);
9604         else
9605                 exit(1);
9606 }
9607 EOCP
9608 set isascii
9609 if eval $compile; then
9610         echo "isascii() found." >&4
9611         val="$define"
9612 else
9613         echo "isascii() NOT found." >&4
9614         val="$undef"
9615 fi
9616 set d_isascii
9617 eval $setvar
9618 $rm -f isascii*
9619
9620 : see if isnan exists
9621 set isnan d_isnan
9622 eval $inlibc
9623
9624 : see if isnanl exists
9625 set isnanl d_isnanl
9626 eval $inlibc
9627
9628 : see if killpg exists
9629 set killpg d_killpg
9630 eval $inlibc
9631
9632 : see if lchown exists
9633 echo " "
9634 $cat > try.c <<'EOCP'
9635 /* System header to define __stub macros and hopefully few prototypes,
9636     which can conflict with char lchown(); below.  */
9637 #include <assert.h>
9638 /* Override any gcc2 internal prototype to avoid an error.  */
9639 /* We use char because int might match the return type of a gcc2
9640    builtin and then its argument prototype would still apply.  */
9641 char lchown();
9642 int main() {
9643     /*  The GNU C library defines this for functions which it implements
9644         to always fail with ENOSYS.  Some functions are actually named
9645         something starting with __ and the normal name is an alias.  */
9646 #if defined (__stub_lchown) || defined (__stub___lchown)
9647 choke me
9648 #else
9649 lchown();
9650 #endif
9651 ; return 0; }
9652 EOCP
9653 set try
9654 if eval $compile; then
9655     $echo "lchown() found." >&4
9656     val="$define"
9657 else
9658     $echo "lchown() NOT found." >&4
9659     val="$undef"
9660 fi
9661 set d_lchown
9662 eval $setvar
9663
9664 : See if number of significant digits in a double precision number is known
9665 echo " "
9666 $cat >ldbl_dig.c <<EOM
9667 #$i_limits I_LIMITS
9668 #$i_float I_FLOAT
9669 #ifdef I_LIMITS
9670 #include <limits.h>
9671 #endif
9672 #ifdef I_FLOAT
9673 #include <float.h>
9674 #endif
9675 #ifdef LDBL_DIG
9676 printf("Contains LDBL_DIG");
9677 #endif
9678 EOM
9679 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9680 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9681         echo "LDBL_DIG found." >&4
9682         val="$define"
9683 else
9684         echo "LDBL_DIG NOT found." >&4
9685         val="$undef"
9686 fi
9687 $rm -f ldbl_dig.?
9688 set d_ldbl_dig
9689 eval $setvar
9690
9691 : see if link exists
9692 set link d_link
9693 eval $inlibc
9694
9695 : see if localeconv exists
9696 set localeconv d_locconv
9697 eval $inlibc
9698
9699 : see if lockf exists
9700 set lockf d_lockf
9701 eval $inlibc
9702
9703 : check for long long
9704 echo " "
9705 echo "Checking to see if you have long long..." >&4
9706 echo 'int main() { long long x = 7; return 0; }' > try.c
9707 set try
9708 if eval $compile; then
9709         val="$define"
9710         echo "You have long long."
9711 else
9712         val="$undef"
9713         echo "You do not have long long."
9714 fi
9715 $rm try.*
9716 set d_longlong
9717 eval $setvar
9718
9719 : check for length of long long
9720 case "${d_longlong}${longlongsize}" in
9721 $define)
9722         echo " "
9723         echo "Checking to see how big your long longs are..." >&4
9724         $cat >try.c <<'EOCP'
9725 #include <stdio.h>
9726 int main()
9727 {
9728     printf("%d\n", (int)sizeof(long long));
9729     return(0);
9730 }
9731 EOCP
9732         set try
9733         if eval $compile_ok; then
9734                 longlongsize=`./try$exe_ext`
9735                 echo "Your long longs are $longlongsize bytes long."
9736         else
9737                 dflt='8'
9738                 echo " "
9739                 echo "(I can't seem to compile the test program.  Guessing...)"
9740                 rp="What is the size of a long long (in bytes)?"
9741                 . ./myread
9742                 longlongsize="$ans"
9743         fi
9744         if $test "X$longsize" = "X$longlongsize"; then
9745                 echo "(That isn't any different from an ordinary long.)"
9746         fi      
9747         ;;
9748 esac
9749 $rm -f try.* try
9750
9751 : see if prototype for lseek is available
9752 echo " "
9753 set d_lseekproto lseek $i_systypes sys/types.h $i_unistd unistd.h
9754 eval $hasproto
9755
9756 : see if lstat exists
9757 set lstat d_lstat
9758 eval $inlibc
9759
9760 : see if madvise exists
9761 set madvise d_madvise
9762 eval $inlibc
9763
9764 : see if mblen exists
9765 set mblen d_mblen
9766 eval $inlibc
9767
9768 : see if mbstowcs exists
9769 set mbstowcs d_mbstowcs
9770 eval $inlibc
9771
9772 : see if mbtowc exists
9773 set mbtowc d_mbtowc
9774 eval $inlibc
9775
9776 : see if memchr exists
9777 set memchr d_memchr
9778 eval $inlibc
9779
9780 : see if memcmp exists
9781 set memcmp d_memcmp
9782 eval $inlibc
9783
9784 : see if memcpy exists
9785 set memcpy d_memcpy
9786 eval $inlibc
9787
9788 : see if memmove exists
9789 set memmove d_memmove
9790 eval $inlibc
9791
9792 : see if memset exists
9793 set memset d_memset
9794 eval $inlibc
9795
9796 : see if mkdir exists
9797 set mkdir d_mkdir
9798 eval $inlibc
9799
9800 : see if mkdtemp exists
9801 set mkdtemp d_mkdtemp
9802 eval $inlibc
9803
9804 : see if mkfifo exists
9805 set mkfifo d_mkfifo
9806 eval $inlibc
9807
9808 : see if mkstemp exists
9809 set mkstemp d_mkstemp
9810 eval $inlibc
9811
9812 : see if mkstemps exists
9813 set mkstemps d_mkstemps
9814 eval $inlibc
9815
9816 : see if mktime exists
9817 set mktime d_mktime
9818 eval $inlibc
9819
9820 : see if this is a sys/mman.h system
9821 set sys/mman.h i_sysmman
9822 eval $inhdr
9823
9824 : see if mmap exists
9825 set mmap d_mmap
9826 eval $inlibc
9827 : see what shmat returns
9828 : default to something harmless
9829 mmaptype='void *'
9830 case "$i_sysmman$d_mmap" in
9831 "$define$define")
9832         $cat >mmap.c <<'END'
9833 #include <sys/mman.h>
9834 void *mmap();
9835 END
9836         if $cc $ccflags -c mmap.c >/dev/null 2>&1; then
9837                 mmaptype='void *'
9838         else
9839                 mmaptype='caddr_t'
9840         fi
9841         echo "and it returns ($mmaptype)." >&4
9842         ;;
9843 esac
9844
9845
9846
9847 : see if modfl exists
9848 set modfl d_modfl
9849 eval $inlibc
9850
9851 : see if mprotect exists
9852 set mprotect d_mprotect
9853 eval $inlibc
9854
9855 : see if msgctl exists
9856 set msgctl d_msgctl
9857 eval $inlibc
9858
9859 : see if msgget exists
9860 set msgget d_msgget
9861 eval $inlibc
9862
9863 : see if msgsnd exists
9864 set msgsnd d_msgsnd
9865 eval $inlibc
9866
9867 : see if msgrcv exists
9868 set msgrcv d_msgrcv
9869 eval $inlibc
9870
9871 : see how much of the 'msg*(2)' library is present.
9872 h_msg=true
9873 echo " "
9874 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9875 *"$undef"*) h_msg=false;;
9876 esac
9877 case "$osname" in
9878 freebsd)
9879     case "`ipcs 2>&1`" in
9880     "SVID messages"*"not configured"*)
9881         echo "Your $osname does not have the msg*(2) configured." >&4
9882         h_msg=false
9883         val="$undef"
9884         set msgctl d_msgctl
9885         eval $setvar
9886         set msgget d_msgget
9887         eval $setvar
9888         set msgsnd d_msgsnd
9889         eval $setvar
9890         set msgrcv d_msgrcv
9891         eval $setvar
9892         ;;
9893     esac
9894     ;;
9895 esac
9896 : we could also check for sys/ipc.h ...
9897 if $h_msg && $test `./findhdr sys/msg.h`; then
9898         echo "You have the full msg*(2) library." >&4
9899         val="$define"
9900 else
9901         echo "You don't have the full msg*(2) library." >&4
9902         val="$undef"
9903 fi
9904 set d_msg
9905 eval $setvar
9906
9907 : see if msync exists
9908 set msync d_msync
9909 eval $inlibc
9910
9911 : see if munmap exists
9912 set munmap d_munmap
9913 eval $inlibc
9914
9915 : see if nice exists
9916 set nice d_nice
9917 eval $inlibc
9918
9919
9920 echo " "
9921 echo "Checking which 64-bit integer type we could use..." >&4
9922
9923 case "$intsize" in
9924 8) val=int
9925    set quadtype
9926    eval $setvar
9927    val='"unsigned int"'
9928    set uquadtype
9929    eval $setvar
9930    quadkind=1
9931    ;;
9932 *) case "$longsize" in
9933    8) val=long
9934       set quadtype
9935       eval $setvar
9936       val='"unsigned long"'
9937       set uquadtype
9938       eval $setvar
9939       quadkind=2
9940       ;;
9941    *) case "$d_longlong:$longlongsize" in
9942       define:8)
9943         val='"long long"'
9944         set quadtype
9945         eval $setvar
9946         val='"unsigned long long"'
9947         set uquadtype
9948         eval $setvar
9949         quadkind=3
9950         ;;
9951       *) case "$d_int64_t" in
9952          define)
9953            val=int64_t
9954            set quadtype
9955            eval $setvar
9956            val=uint64_t
9957            set uquadtype
9958            eval $setvar
9959            quadkind=4
9960            ;;
9961          esac
9962          ;;
9963       esac
9964       ;;
9965    esac
9966    ;;
9967 esac
9968
9969 case "$quadtype" in
9970 '')     echo "Alas, no 64-bit integer types in sight." >&4
9971         d_quad="$undef"
9972         ;;
9973 *)      if test X"$use64bitint" = Xdefine -o X"$longsize" = X8; then
9974             verb="will"
9975         else
9976             verb="could"
9977         fi
9978         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9979         d_quad="$define"
9980         ;;
9981 esac
9982
9983 : check for length of character
9984 echo " "
9985 case "$charsize" in
9986 '')
9987         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9988         $cat >try.c <<'EOCP'
9989 #include <stdio.h>
9990 int main()
9991 {
9992     printf("%d\n", (int)sizeof(char));
9993     exit(0);
9994 }
9995 EOCP
9996         set try
9997         if eval $compile_ok; then
9998                 dflt=`./try`
9999         else
10000                 dflt='1'
10001                 echo "(I can't seem to compile the test program.  Guessing...)"
10002         fi
10003         ;;
10004 *)
10005         dflt="$charsize"
10006         ;;
10007 esac
10008 rp="What is the size of a character (in bytes)?"
10009 . ./myread
10010 charsize="$ans"
10011 $rm -f try.c try
10012
10013
10014 echo " "
10015 $echo "Choosing the C types to be used for Perl's internal types..." >&4
10016
10017 case "$use64bitint:$d_quad:$quadtype" in
10018 define:define:?*)
10019         ivtype="$quadtype"
10020         uvtype="$uquadtype"
10021         ivsize=8
10022         uvsize=8
10023         ;;
10024 *)      ivtype="long"
10025         uvtype="unsigned long"
10026         ivsize=$longsize
10027         uvsize=$longsize
10028         ;;
10029 esac
10030
10031 case "$uselongdouble:$d_longdbl" in
10032 define:define)
10033         nvtype="long double"
10034         nvsize=$longdblsize
10035         ;;
10036 *)      nvtype=double
10037         nvsize=$doublesize
10038         ;;
10039 esac
10040
10041 $echo "(IV will be "$ivtype", $ivsize bytes)"
10042 $echo "(UV will be "$uvtype", $uvsize bytes)"
10043 $echo "(NV will be "$nvtype", $nvsize bytes)"
10044
10045 $cat >try.c <<EOCP
10046 #$i_inttypes I_INTTYPES
10047 #ifdef I_INTTYPES
10048 #include <inttypes.h>
10049 #endif
10050 #include <stdio.h>
10051 int main() {
10052 #ifdef INT8
10053    int8_t i =  INT8_MAX;
10054   uint8_t u = UINT8_MAX;
10055   printf("int8_t\n");
10056 #endif
10057 #ifdef INT16
10058    int16_t i =  INT16_MAX;
10059   uint16_t i = UINT16_MAX;
10060   printf("int16_t\n");
10061 #endif
10062 #ifdef INT32
10063    int32_t i =  INT32_MAX;
10064   uint32_t u = UINT32_MAX;
10065   printf("int32_t\n");
10066 #endif
10067 }
10068 EOCP
10069
10070 case "$i8type" in
10071 '')     case "$charsize" in
10072         1)      i8type=char
10073                 u8type="unsigned char"
10074                 i8size=$charsize
10075                 u8size=$charsize
10076                 ;;
10077         esac
10078         ;;
10079 esac
10080 case "$i8type" in
10081 '')     set try -DINT8
10082         if eval $compile; then
10083                 case "`./try$exe_ext`" in
10084                 int8_t) i8type=int8_t
10085                         u8type=uint8_t
10086                         i8size=1
10087                         u8size=1
10088                         ;;
10089                 esac
10090         fi
10091         ;;
10092 esac
10093 case "$i8type" in
10094 '')     if $test $charsize -ge 1; then
10095                 i8type=char
10096                 u8type="unsigned char"
10097                 i8size=$charsize
10098                 u8size=$charsize
10099         fi
10100         ;;
10101 esac
10102
10103 case "$i16type" in
10104 '')     case "$shortsize" in
10105         2)      i16type=short
10106                 u16type="unsigned short"
10107                 i16size=$shortsize
10108                 u16size=$shortsize
10109                 ;;
10110         esac
10111         ;;
10112 esac
10113 case "$i16type" in
10114 '')     set try -DINT16
10115         if eval $compile; then
10116                 case "`./try$exe_ext`" in
10117                 int16_t)
10118                         i16type=int16_t
10119                         u16type=uint16_t
10120                         i16size=2
10121                         u16size=2
10122                         ;;
10123                 esac
10124         fi
10125         ;;
10126 esac
10127 case "$i16type" in
10128 '')     if $test $shortsize -ge 2; then
10129                 i16type=short
10130                 u16type="unsigned short"
10131                 i16size=$shortsize
10132                 u16size=$shortsize
10133         fi
10134         ;;
10135 esac
10136
10137 case "$i32type" in
10138 '')     case "$longsize" in
10139         4)      i32type=long
10140                 u32type="unsigned long"
10141                 i32size=$longsize
10142                 u32size=$longsize
10143                 ;;
10144         *)      case "$intsize" in
10145                 4)      i32type=int
10146                         u32type="unsigned int"
10147                         i32size=$intsize
10148                         u32size=$intsize
10149                         ;;
10150                 esac
10151                 ;;
10152         esac
10153         ;;
10154 esac
10155 case "$i32type" in
10156 '')     set try -DINT32
10157         if eval $compile; then
10158                 case "`./try$exe_ext`" in
10159                 int32_t)
10160                         i32type=int32_t
10161                         u32type=uint32_t
10162                         i32size=4
10163                         u32size=4
10164                         ;;
10165                 esac
10166         fi
10167         ;;
10168 esac
10169 case "$i32type" in
10170 '')     if $test $intsize -ge 4; then
10171                 i32type=int
10172                 u32type="unsigned int"
10173                 i32size=$intsize
10174                 u32size=$intsize
10175         fi
10176         ;;
10177 esac
10178
10179 case "$i64type" in
10180 '')     case "$d_quad:$quadtype" in
10181         define:?*)
10182                 i64type="$quadtype"
10183                 u64type="$uquadtype"
10184                 i64size=8
10185                 u64size=8
10186                 ;;
10187         esac
10188         ;;
10189 esac
10190
10191 $echo "Checking whether your NVs can preserve your UVs..." >&4
10192 $cat <<EOP >try.c
10193 #include <stdio.h>
10194 int main() {
10195     $uvtype k = ($uvtype)~0, l;
10196     $nvtype d;
10197     l = k;
10198     d = ($nvtype)l;
10199     l = ($uvtype)d;
10200     if (l == k)
10201        printf("preserve\n");
10202     exit(0);
10203 }
10204 EOP
10205 set try
10206 if eval $compile; then
10207         case "`./try$exe_ext`" in
10208         preserve) d_nv_preserves_uv="$define" ;;
10209         esac
10210 fi      
10211 case "$d_nv_preserves_uv" in
10212 $define) $echo "Yes, they can."  2>&1 ;;
10213 *)       $echo "No, they can't." 2>&1
10214          d_nv_preserves_uv="$undef"
10215          ;;
10216 esac
10217
10218 $rm -f try.* try
10219
10220 case "$d_nv_preserves_uv" in
10221 "$define") d_nv_preserves_uv_bits=`expr $uvsize \* 8` ;;
10222 *)      $echo "Checking how many bits of your UVs your NVs can preserve..." >&4
10223         $cat <<EOP >try.c
10224 #include <stdio.h>
10225 int main() {
10226     $uvtype u = 0;
10227     int     n = 8 * $uvsize;
10228     int     i;
10229     for (i = 0; i < n; i++) {
10230       u = u << 1 | ($uvtype)1;
10231       if (($uvtype)($nvtype)u != u)
10232         break;
10233     }
10234     printf("%d\n", i);
10235     exit(0);
10236 }
10237 EOP
10238         set try
10239         if eval $compile; then
10240                 d_nv_preserves_uv_bits="`./try$exe_ext`"
10241         fi
10242         case "$d_nv_preserves_uv_bits" in
10243         [1-9]*) $echo "Your NVs can preserve $d_nv_preserves_uv_bits bits of your UVs."  2>&1 ;;
10244         *)      $echo "Can't figure out how many bits your NVs preserve." 2>&1
10245                 d_nv_preserves_uv_bits="$undef"
10246                 ;;
10247         esac
10248         $rm -f try.* try
10249         ;;
10250 esac
10251
10252
10253 : check for off64_t
10254 echo " "
10255 echo "Checking to see if you have off64_t..." >&4
10256 $cat >try.c <<EOCP
10257 #include <sys/types.h>
10258 #include <unistd.h>
10259 int main() { off64_t x = 7; }
10260 EOCP
10261 set try
10262 if eval $compile; then
10263         val="$define"
10264         echo "You have off64_t."
10265 else
10266         val="$undef"
10267         echo "You do not have off64_t."
10268         case "$lseeksize" in
10269         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
10270         esac
10271 fi
10272 $rm -f try.* try
10273 set d_off64_t
10274 eval $setvar
10275
10276 : see if POSIX threads are available
10277 set pthread.h i_pthread
10278 eval $inhdr
10279
10280
10281
10282
10283 : how to create joinable pthreads
10284 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
10285         echo " "
10286         echo "Checking what constant to use for creating joinable pthreads..." >&4 
10287         $cat >try.c <<'EOCP'
10288 #include <pthread.h>
10289 int main() {
10290     int detachstate = JOINABLE;
10291 }
10292 EOCP
10293         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
10294         if eval $compile; then
10295                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
10296                 val="$undef" # Yes, undef.
10297                 set d_old_pthread_create_joinable
10298                 eval $setvar
10299                 val=""
10300                 set old_pthread_create_joinable
10301                 eval $setvar
10302         else
10303                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
10304                 if eval $compile; then
10305                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
10306                         val="$define"
10307                         set d_old_pthread_create_joinable
10308                         eval $setvar
10309                         val=PTHREAD_CREATE_UNDETACHED
10310                         set old_pthread_create_joinable
10311                         eval $setvar
10312                 else            
10313                         set try -DJOINABLE=__UNDETACHED
10314                         if eval $compile; then
10315                                 echo "You seem to use __UNDETACHED." >&4
10316                                 val="$define"
10317                                 set d_old_pthread_create_joinable
10318                                 eval $setvar
10319                                 val=__UNDETACHED
10320                                 set old_pthread_create_joinable
10321                                 eval $setvar
10322                         else
10323                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
10324                                 val="$define"
10325                                 set d_old_pthread_create_joinable
10326                                 eval $setvar
10327                                 val=0
10328                                 set old_pthread_create_joinable
10329                                 eval $setvar
10330                         fi
10331                 fi
10332         fi
10333         $rm -f try try.*
10334 else
10335     d_old_pthread_create_joinable="$undef"
10336     old_pthread_create_joinable=""
10337 fi
10338
10339 : see if pause exists
10340 set pause d_pause
10341 eval $inlibc
10342
10343 : see if pipe exists
10344 set pipe d_pipe
10345 eval $inlibc
10346
10347 : see if poll exists
10348 set poll d_poll
10349 eval $inlibc
10350
10351
10352 : see whether the various POSIXish _yields exist
10353 $cat >try.c <<EOP
10354 #include <pthread.h>
10355 #include <stdio.h>
10356 int main() {
10357 #ifdef SCHED_YIELD
10358         sched_yield();
10359 #else
10360 #ifdef PTHREAD_YIELD
10361         pthread_yield();
10362 #else
10363 #ifdef PTHREAD_YIELD_NULL
10364         pthread_yield(NULL);
10365 #endif
10366 #endif
10367 #endif
10368 }
10369 EOP
10370 : see if sched_yield exists
10371 set try -DSCHED_YIELD
10372 if eval $compile; then
10373     val="$define"
10374     sched_yield='sched_yield()'
10375 else
10376     val="$undef"
10377 fi
10378 case "$usethreads" in
10379 $define)
10380         case "$val" in
10381         $define) echo 'sched_yield() found.' >&4        ;;
10382         *)       echo 'sched_yield() NOT found.' >&4    ;;
10383         esac
10384 esac
10385 set d_sched_yield
10386 eval $setvar
10387
10388 : see if pthread_yield exists
10389 set try -DPTHREAD_YIELD
10390 if eval $compile; then
10391     val="$define"
10392     case "$sched_yield" in
10393     '') sched_yield='pthread_yield()' ;;
10394     esac
10395 else
10396     set try -DPTHREAD_YIELD_NULL
10397     if eval $compile; then
10398         val="$define"
10399         case "$sched_yield" in
10400         '') sched_yield='pthread_yield(NULL)' ;;
10401         esac
10402     else
10403         val="$undef"
10404     fi
10405 fi
10406 case "$usethreads" in
10407 $define)
10408         case "$val" in
10409         $define) echo 'pthread_yield() found.' >&4      ;;
10410         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10411         esac
10412         ;;
10413 esac
10414 set d_pthread_yield
10415 eval $setvar
10416
10417 case "$sched_yield" in
10418 '') sched_yield=undef ;;
10419 esac
10420
10421 $rm -f try try.*
10422
10423 : see if this is a pwd.h system
10424 set pwd.h i_pwd
10425 eval $inhdr
10426
10427 case "$i_pwd" in
10428 $define)
10429         xxx=`./findhdr pwd.h`
10430         $cppstdin $cppflags $cppminus < $xxx >$$.h
10431
10432         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10433                 val="$define"
10434         else
10435                 val="$undef"
10436         fi
10437         set d_pwquota
10438         eval $setvar
10439
10440         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10441                 val="$define"
10442         else
10443                 val="$undef"
10444         fi
10445         set d_pwage
10446         eval $setvar
10447
10448         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10449                 val="$define"
10450         else
10451                 val="$undef"
10452         fi
10453         set d_pwchange
10454         eval $setvar
10455
10456         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10457                 val="$define"
10458         else
10459                 val="$undef"
10460         fi
10461         set d_pwclass
10462         eval $setvar
10463
10464         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10465                 val="$define"
10466         else
10467                 val="$undef"
10468         fi
10469         set d_pwexpire
10470         eval $setvar
10471
10472         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10473                 val="$define"
10474         else
10475                 val="$undef"
10476         fi
10477         set d_pwcomment
10478         eval $setvar
10479
10480         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10481                 val="$define"
10482         else
10483                 val="$undef"
10484         fi
10485         set d_pwgecos
10486         eval $setvar
10487
10488         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10489                 val="$define"
10490         else
10491                 val="$undef"
10492         fi
10493         set d_pwpasswd
10494         eval $setvar
10495
10496         $rm -f $$.h
10497         ;;
10498 *)
10499         val="$undef"; 
10500         set d_pwquota; eval $setvar
10501         set d_pwage; eval $setvar
10502         set d_pwchange; eval $setvar
10503         set d_pwclass; eval $setvar
10504         set d_pwexpire; eval $setvar
10505         set d_pwcomment; eval $setvar
10506         set d_pwgecos; eval $setvar
10507         set d_pwpasswd; eval $setvar
10508         ;;
10509 esac
10510
10511 : see if readdir and friends exist
10512 set readdir d_readdir
10513 eval $inlibc
10514 set seekdir d_seekdir
10515 eval $inlibc
10516 set telldir d_telldir
10517 eval $inlibc
10518 set rewinddir d_rewinddir
10519 eval $inlibc
10520
10521 : see if readlink exists
10522 set readlink d_readlink
10523 eval $inlibc
10524
10525 : see if rename exists
10526 set rename d_rename
10527 eval $inlibc
10528
10529 : see if rmdir exists
10530 set rmdir d_rmdir
10531 eval $inlibc
10532
10533 : see if memory.h is available.
10534 val=''
10535 set memory.h val
10536 eval $inhdr
10537
10538 : See if it conflicts with string.h
10539 case "$val" in
10540 $define)
10541         case "$strings" in
10542         '') ;;
10543         *)
10544                 $cppstdin $cppflags $cppminus < $strings > mem.h
10545                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10546                         echo " "
10547                         echo "We won't be including <memory.h>."
10548                         val="$undef"
10549                 fi
10550                 $rm -f mem.h
10551                 ;;
10552         esac
10553 esac
10554 set i_memory
10555 eval $setvar
10556
10557 : can bcopy handle overlapping blocks?
10558 val="$undef"
10559 case "$d_bcopy" in
10560 "$define")
10561         echo " "
10562         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10563         $cat >try.c <<EOCP
10564 #$i_memory I_MEMORY
10565 #$i_stdlib I_STDLIB
10566 #$i_string I_STRING
10567 #$i_unistd I_UNISTD
10568 EOCP
10569         $cat >>try.c <<'EOCP'
10570 #include <stdio.h>
10571 #ifdef I_MEMORY
10572 #  include <memory.h>
10573 #endif
10574 #ifdef I_STDLIB
10575 #  include <stdlib.h>
10576 #endif
10577 #ifdef I_STRING
10578 #  include <string.h>
10579 #else
10580 #  include <strings.h>
10581 #endif
10582 #ifdef I_UNISTD
10583 #  include <unistd.h>  /* Needed for NetBSD */
10584 #endif
10585 int main()
10586 {
10587 char buf[128], abc[128];
10588 char *b;
10589 int len;
10590 int off;
10591 int align;
10592
10593 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10594
10595 for (align = 7; align >= 0; align--) {
10596         for (len = 36; len; len--) {
10597                 b = buf+align;
10598                 bcopy(abc, b, len);
10599                 for (off = 1; off <= len; off++) {
10600                         bcopy(b, b+off, len);
10601                         bcopy(b+off, b, len);
10602                         if (bcmp(b, abc, len))
10603                                 exit(1);
10604                 }
10605         }
10606 }
10607 exit(0);
10608 }
10609 EOCP
10610         set try
10611         if eval $compile_ok; then
10612                 if ./try 2>/dev/null; then
10613                         echo "Yes, it can."
10614                         val="$define"
10615                 else
10616                         echo "It can't, sorry."
10617                         case "$d_memmove" in
10618                         "$define") echo "But that's Ok since you have memmove()." ;;
10619                         esac
10620                 fi
10621         else
10622                 echo "(I can't compile the test program, so we'll assume not...)"
10623                 case "$d_memmove" in
10624                 "$define") echo "But that's Ok since you have memmove()." ;;
10625                 esac
10626         fi
10627         ;;
10628 esac
10629 $rm -f try.* try core
10630 set d_safebcpy
10631 eval $setvar
10632
10633 : can memcpy handle overlapping blocks?
10634 val="$undef"
10635 case "$d_memcpy" in
10636 "$define")
10637         echo " "
10638         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10639         $cat >try.c <<EOCP
10640 #$i_memory I_MEMORY
10641 #$i_stdlib I_STDLIB
10642 #$i_string I_STRING
10643 #$i_unistd I_UNISTD
10644 EOCP
10645         $cat >>try.c <<'EOCP'
10646 #include <stdio.h>
10647 #ifdef I_MEMORY
10648 #  include <memory.h>
10649 #endif
10650 #ifdef I_STDLIB
10651 #  include <stdlib.h>
10652 #endif
10653 #ifdef I_STRING
10654 #  include <string.h>
10655 #else
10656 #  include <strings.h>
10657 #endif
10658 #ifdef I_UNISTD
10659 #  include <unistd.h>  /* Needed for NetBSD */
10660 #endif
10661 int main()
10662 {
10663 char buf[128], abc[128];
10664 char *b;
10665 int len;
10666 int off;
10667 int align;
10668
10669 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10670    try to store the string in read-only memory. */
10671 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10672
10673 for (align = 7; align >= 0; align--) {
10674         for (len = 36; len; len--) {
10675                 b = buf+align;
10676                 memcpy(b, abc, len);
10677                 for (off = 1; off <= len; off++) {
10678                         memcpy(b+off, b, len);
10679                         memcpy(b, b+off, len);
10680                         if (memcmp(b, abc, len))
10681                                 exit(1);
10682                 }
10683         }
10684 }
10685 exit(0);
10686 }
10687 EOCP
10688         set try
10689         if eval $compile_ok; then
10690                 if ./try 2>/dev/null; then
10691                         echo "Yes, it can."
10692                         val="$define"
10693                 else
10694                         echo "It can't, sorry."
10695                         case "$d_memmove" in
10696                         "$define") echo "But that's Ok since you have memmove()." ;;
10697                         esac
10698                 fi
10699         else
10700                 echo "(I can't compile the test program, so we'll assume not...)"
10701                 case "$d_memmove" in
10702                 "$define") echo "But that's Ok since you have memmove()." ;;
10703                 esac
10704         fi
10705         ;;
10706 esac
10707 $rm -f try.* try core
10708 set d_safemcpy
10709 eval $setvar
10710
10711 : can memcmp be trusted to compare relative magnitude?
10712 val="$undef"
10713 case "$d_memcmp" in
10714 "$define")
10715         echo " "
10716         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10717         $cat >try.c <<EOCP
10718 #$i_memory I_MEMORY
10719 #$i_stdlib I_STDLIB
10720 #$i_string I_STRING
10721 #$i_unistd I_UNISTD
10722 EOCP
10723         $cat >>try.c <<'EOCP'
10724 #include <stdio.h>
10725 #ifdef I_MEMORY
10726 #  include <memory.h>
10727 #endif
10728 #ifdef I_STDLIB
10729 #  include <stdlib.h>
10730 #endif
10731 #ifdef I_STRING
10732 #  include <string.h>
10733 #else
10734 #  include <strings.h>
10735 #endif
10736 #ifdef I_UNISTD
10737 #  include <unistd.h>  /* Needed for NetBSD */
10738 #endif
10739 int main()
10740 {
10741 char a = -1;
10742 char b = 0;
10743 if ((a < b) && memcmp(&a, &b, 1) < 0)
10744         exit(1);
10745 exit(0);
10746 }
10747 EOCP
10748         set try
10749         if eval $compile_ok; then
10750                 if ./try 2>/dev/null; then
10751                         echo "Yes, it can."
10752                         val="$define"
10753                 else
10754                         echo "No, it can't (it uses signed chars)."
10755                 fi
10756         else
10757                 echo "(I can't compile the test program, so we'll assume not...)"
10758         fi
10759         ;;
10760 esac
10761 $rm -f try.* try core
10762 set d_sanemcmp
10763 eval $setvar
10764
10765 : see if select exists
10766 set select d_select
10767 eval $inlibc
10768
10769 : see if semctl exists
10770 set semctl d_semctl
10771 eval $inlibc
10772
10773 : see if semget exists
10774 set semget d_semget
10775 eval $inlibc
10776
10777 : see if semop exists
10778 set semop d_semop
10779 eval $inlibc
10780
10781 : see how much of the 'sem*(2)' library is present.
10782 h_sem=true
10783 echo " "
10784 case "$d_semctl$d_semget$d_semop" in
10785 *"$undef"*) h_sem=false;;
10786 esac
10787 case "$osname" in
10788 freebsd)
10789     case "`ipcs 2>&1`" in
10790     "SVID messages"*"not configured"*)
10791         echo "Your $osname does not have the sem*(2) configured." >&4
10792         h_sem=false
10793         val="$undef"
10794         set semctl d_semctl
10795         eval $setvar
10796         set semget d_semget
10797         eval $setvar
10798         set semop d_semop
10799         eval $setvar
10800         ;;
10801     esac
10802     ;;
10803 esac
10804 : we could also check for sys/ipc.h ...
10805 if $h_sem && $test `./findhdr sys/sem.h`; then
10806         echo "You have the full sem*(2) library." >&4
10807         val="$define"
10808 else
10809         echo "You don't have the full sem*(2) library." >&4
10810         val="$undef"
10811 fi
10812 set d_sem
10813 eval $setvar
10814
10815 : see whether sys/sem.h defines union semun
10816 echo " "
10817 $cat > try.c <<'END'
10818 #include <sys/types.h>
10819 #include <sys/ipc.h>
10820 #include <sys/sem.h>
10821 int main () { union semun semun; semun.buf = 0; }
10822 END
10823 set try
10824 if eval $compile; then
10825     echo "You have union semun in <sys/sem.h>." >&4
10826     val="$define"
10827 else
10828     echo "You do not have union semun in <sys/sem.h>." >&4
10829     val="$undef"
10830 fi
10831 $rm -f try try.c try.h
10832 set d_union_semun
10833 eval $setvar
10834
10835 : see how to do semctl IPC_STAT
10836 case "$d_sem" in
10837 $define)
10838     : see whether semctl IPC_STAT can use union semun
10839     echo " "
10840     $cat > try.h <<END
10841 #ifndef S_IRUSR
10842 #   ifdef S_IREAD
10843 #       define S_IRUSR S_IREAD
10844 #       define S_IWUSR S_IWRITE
10845 #       define S_IXUSR S_IEXEC
10846 #   else
10847 #       define S_IRUSR 0400
10848 #       define S_IWUSR 0200
10849 #       define S_IXUSR 0100
10850 #   endif
10851 #   define S_IRGRP (S_IRUSR>>3)
10852 #   define S_IWGRP (S_IWUSR>>3)
10853 #   define S_IXGRP (S_IXUSR>>3)
10854 #   define S_IROTH (S_IRUSR>>6)
10855 #   define S_IWOTH (S_IWUSR>>6)
10856 #   define S_IXOTH (S_IXUSR>>6)
10857 #endif
10858 #ifndef S_IRWXU
10859 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10860 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10861 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10862 #endif
10863 END
10864
10865     $cat > try.c <<END
10866 #include <sys/types.h>
10867 #include <sys/ipc.h>
10868 #include <sys/sem.h>
10869 #include <sys/stat.h>
10870 #include <stdio.h>
10871 #include <errno.h>
10872 #include "try.h"
10873 #ifndef errno
10874 extern int errno;
10875 #endif
10876 #$d_union_semun HAS_UNION_SEMUN
10877 int main() {
10878     union semun
10879 #ifndef HAS_UNION_SEMUN
10880     {
10881         int val;
10882         struct semid_ds *buf;
10883         unsigned short *array;
10884     }
10885 #endif
10886     arg;
10887     int sem, st;
10888
10889 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10890     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10891     if (sem > -1) {
10892         struct semid_ds argbuf;
10893         arg.buf = &argbuf;
10894 #       ifdef IPC_STAT
10895         st = semctl(sem, 0, IPC_STAT, arg);
10896         if (st == 0)
10897             printf("semun\n");
10898         else
10899 #       endif /* IPC_STAT */
10900             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10901 #       ifdef IPC_RMID
10902         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10903 #       endif /* IPC_RMID */
10904             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10905     } else
10906 #endif /* IPC_PRIVATE && ... */
10907         printf("semget failed: errno = %d\n", errno);
10908   return 0;
10909 }
10910 END
10911     val="$undef"
10912     set try
10913     if eval $compile; then
10914         xxx=`./try`
10915         case "$xxx" in
10916         semun) val="$define" ;;
10917         esac
10918     fi
10919     $rm -f try try.c
10920     set d_semctl_semun
10921     eval $setvar
10922     case "$d_semctl_semun" in
10923     $define)
10924         echo "You can use union semun for semctl IPC_STAT." >&4
10925         also='also'
10926         ;;
10927     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10928         also=''
10929         ;;
10930     esac
10931
10932     : see whether semctl IPC_STAT can use struct semid_ds pointer
10933     $cat > try.c <<'END'
10934 #include <sys/types.h>
10935 #include <sys/ipc.h>
10936 #include <sys/sem.h>
10937 #include <sys/stat.h>
10938 #include "try.h"
10939 #include <stdio.h>
10940 #include <errno.h>
10941 #ifndef errno
10942 extern int errno;
10943 #endif
10944 int main() {
10945     struct semid_ds arg;
10946     int sem, st;
10947
10948 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10949     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10950     if (sem > -1) {
10951 #       ifdef IPC_STAT
10952         st = semctl(sem, 0, IPC_STAT, &arg);
10953         if (st == 0)
10954             printf("semid_ds\n");
10955         else
10956 #       endif /* IPC_STAT */
10957             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10958 #       ifdef IPC_RMID
10959         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10960 #       endif /* IPC_RMID */
10961             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10962     } else
10963 #endif /* IPC_PRIVATE && ... */
10964         printf("semget failed: errno = %d\n", errno);
10965
10966     return 0;
10967 }
10968 END
10969     val="$undef"
10970     set try
10971     if eval $compile; then
10972         xxx=`./try`
10973         case "$xxx" in
10974         semid_ds) val="$define" ;;
10975         esac
10976     fi
10977     $rm -f try try.c
10978     set d_semctl_semid_ds
10979     eval $setvar
10980     case "$d_semctl_semid_ds" in
10981     $define)
10982         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10983         ;;
10984     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10985         ;;
10986     esac
10987     $rm -f try.h
10988     ;;
10989 *)  val="$undef"
10990
10991     # We do not have the full sem*(2) library, so assume we can not
10992     # use either.
10993
10994     set d_semctl_semun
10995     eval $setvar
10996
10997     set d_semctl_semid_ds
10998     eval $setvar
10999     ;;
11000 esac
11001
11002 : see if setegid exists
11003 set setegid d_setegid
11004 eval $inlibc
11005
11006 : see if seteuid exists
11007 set seteuid d_seteuid
11008 eval $inlibc
11009
11010 : see if setgrent exists
11011 set setgrent d_setgrent
11012 eval $inlibc
11013
11014 : see if sethostent exists
11015 set sethostent d_sethent
11016 eval $inlibc
11017
11018 : see if setlinebuf exists
11019 set setlinebuf d_setlinebuf
11020 eval $inlibc
11021
11022 : see if setlocale exists
11023 set setlocale d_setlocale
11024 eval $inlibc
11025
11026 : see if setnetent exists
11027 set setnetent d_setnent
11028 eval $inlibc
11029
11030 : see if setprotoent exists
11031 set setprotoent d_setpent
11032 eval $inlibc
11033
11034 : see if setpgid exists
11035 set setpgid d_setpgid
11036 eval $inlibc
11037
11038 : see if setpgrp2 exists
11039 set setpgrp2 d_setpgrp2
11040 eval $inlibc
11041
11042 : see if setpriority exists
11043 set setpriority d_setprior
11044 eval $inlibc
11045
11046 : see if setproctitle exists
11047 set setproctitle d_setproctitle
11048 eval $inlibc
11049
11050 : see if setpwent exists
11051 set setpwent d_setpwent
11052 eval $inlibc
11053
11054 : see if setregid exists
11055 set setregid d_setregid
11056 eval $inlibc
11057 set setresgid d_setresgid
11058 eval $inlibc
11059
11060 : see if setreuid exists
11061 set setreuid d_setreuid
11062 eval $inlibc
11063 set setresuid d_setresuid
11064 eval $inlibc
11065
11066 : see if setrgid exists
11067 set setrgid d_setrgid
11068 eval $inlibc
11069
11070 : see if setruid exists
11071 set setruid d_setruid
11072 eval $inlibc
11073
11074 : see if setservent exists
11075 set setservent d_setsent
11076 eval $inlibc
11077
11078 : see if setsid exists
11079 set setsid d_setsid
11080 eval $inlibc
11081
11082 : see if setvbuf exists
11083 set setvbuf d_setvbuf
11084 eval $inlibc
11085
11086 : see if sfio.h is available
11087 set sfio.h i_sfio
11088 eval $inhdr
11089
11090
11091 : see if sfio library is available
11092 case "$i_sfio" in
11093 $define)
11094         val=''
11095         set sfreserve val
11096         eval $inlibc
11097         ;;
11098 *)
11099         val="$undef"
11100         ;;
11101 esac
11102 : Ok, but do we want to use it.
11103 case "$val" in
11104 $define)
11105         case "$usesfio" in
11106         true|$define|[yY]*) dflt='y';;
11107         *) dflt='n';;
11108         esac
11109         echo "$package can use the sfio library, but it is experimental."
11110         case "$useperlio" in
11111         "$undef")
11112             echo "For sfio also the PerlIO abstraction layer is needed."
11113             echo "Earlier you said you wouldn't want that."
11114             ;;
11115         esac
11116         rp="You seem to have sfio available, do you want to try using it?"
11117         . ./myread
11118         case "$ans" in
11119         y|Y)    echo "Ok, turning on both sfio and PerlIO, then."
11120                 useperlio="$define"
11121                 val="$define"
11122                 ;;
11123         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
11124                 val="$undef"
11125                 : Remove sfio from list of libraries to use
11126                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
11127                 shift
11128                 libs="$*"
11129                 echo "libs = $libs" >&4
11130                 ;;
11131         esac
11132         ;;
11133 *)      case "$usesfio" in
11134         true|$define|[yY]*)
11135                 echo "Sorry, cannot find sfio on this machine." >&4
11136                 echo "Ignoring your setting of usesfio=$usesfio." >&4
11137                 val="$undef"
11138                 ;;
11139         esac
11140         ;;
11141 esac
11142 set d_sfio
11143 eval $setvar
11144 case "$d_sfio" in
11145 $define) usesfio='true';;
11146 *) usesfio='false';;
11147 esac
11148
11149 : see if shmctl exists
11150 set shmctl d_shmctl
11151 eval $inlibc
11152
11153 : see if shmget exists
11154 set shmget d_shmget
11155 eval $inlibc
11156
11157 : see if shmat exists
11158 set shmat d_shmat
11159 eval $inlibc
11160 : see what shmat returns
11161 case "$d_shmat" in
11162 "$define")
11163         $cat >shmat.c <<'END'
11164 #include <sys/shm.h>
11165 void *shmat();
11166 END
11167         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
11168                 shmattype='void *'
11169         else
11170                 shmattype='char *'
11171         fi
11172         echo "and it returns ($shmattype)." >&4
11173         : see if a prototype for shmat is available
11174         xxx=`./findhdr sys/shm.h`
11175         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
11176         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
11177                 val="$define"
11178         else
11179                 val="$undef"
11180         fi
11181         $rm -f shmat.[co]
11182         ;;
11183 *)
11184         val="$undef"
11185         ;;
11186 esac
11187 set d_shmatprototype
11188 eval $setvar
11189
11190 : see if shmdt exists
11191 set shmdt d_shmdt
11192 eval $inlibc
11193
11194 : see how much of the 'shm*(2)' library is present.
11195 h_shm=true
11196 echo " "
11197 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
11198 *"$undef"*) h_shm=false;;
11199 esac
11200 case "$osname" in
11201 freebsd)
11202     case "`ipcs 2>&1`" in
11203     "SVID shared memory"*"not configured"*)
11204         echo "Your $osname does not have the shm*(2) configured." >&4
11205         h_shm=false
11206         val="$undef"
11207         set shmctl d_shmctl
11208         evat $setvar
11209         set shmget d_shmget
11210         evat $setvar
11211         set shmat d_shmat
11212         evat $setvar
11213         set shmdt d_shmdt
11214         evat $setvar
11215         ;;
11216     esac
11217     ;;
11218 esac
11219 : we could also check for sys/ipc.h ...
11220 if $h_shm && $test `./findhdr sys/shm.h`; then
11221         echo "You have the full shm*(2) library." >&4
11222         val="$define"
11223 else
11224         echo "You don't have the full shm*(2) library." >&4
11225         val="$undef"
11226 fi
11227 set d_shm
11228 eval $setvar
11229
11230 echo " "
11231 : see if we have sigaction
11232 if set sigaction val -f d_sigaction; eval $csym; $val; then
11233         echo 'sigaction() found.' >&4
11234         $cat > try.c <<'EOP'
11235 #include <stdio.h>
11236 #include <sys/types.h>
11237 #include <signal.h>
11238 int main()
11239 {
11240     struct sigaction act, oact;
11241     act.sa_flags = 0;
11242     oact.sa_handler = 0;
11243     /* so that act and oact are used */
11244     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
11245 }
11246 EOP
11247         set try
11248         if eval $compile_ok; then
11249                 val="$define"
11250         else
11251                 echo "But you don't seem to have a useable struct sigaction." >&4
11252                 val="$undef"
11253         fi
11254 else
11255         echo 'sigaction NOT found.' >&4
11256         val="$undef"
11257 fi
11258 set d_sigaction; eval $setvar
11259 $rm -f try try$_o try.c
11260
11261 : see if sigsetjmp exists
11262 echo " "
11263 case "$d_sigsetjmp" in
11264 '')
11265         $cat >try.c <<'EOP'
11266 #include <setjmp.h>
11267 sigjmp_buf env;
11268 int set = 1;
11269 int main()
11270 {
11271         if (sigsetjmp(env,1))
11272                 exit(set);
11273         set = 0;
11274         siglongjmp(env, 1);
11275         exit(1);
11276 }
11277 EOP
11278         set try
11279         if eval $compile; then
11280                 if ./try >/dev/null 2>&1; then
11281                         echo "POSIX sigsetjmp found." >&4
11282                         val="$define"
11283                 else
11284                         $cat >&4 <<EOM
11285 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
11286 I'll ignore them.
11287 EOM
11288                         val="$undef"
11289                 fi
11290         else
11291                 echo "sigsetjmp not found." >&4
11292                 val="$undef"
11293         fi
11294         ;;
11295 *) val="$d_sigsetjmp"
11296         case "$d_sigsetjmp" in
11297         $define) echo "POSIX sigsetjmp found." >&4;;
11298         $undef) echo "sigsetjmp not found." >&4;;
11299         esac
11300         ;;
11301 esac
11302 set d_sigsetjmp
11303 eval $setvar
11304 $rm -f try.c try
11305
11306 : see if socks5_init exists
11307 set socks5_init d_socks5_init
11308 eval $inlibc
11309
11310 : see if sys/stat.h is available
11311 set sys/stat.h i_sysstat
11312 eval $inhdr
11313
11314
11315 : see if stat knows about block sizes
11316 echo " "
11317 echo "Checking to see if your struct stat has st_blocks field..." >&4
11318 set d_statblks stat st_blocks $i_sysstat sys/stat.h
11319 eval $hasfield
11320
11321
11322 : see if this is a sys/vfs.h system
11323 set sys/vfs.h i_sysvfs
11324 eval $inhdr
11325
11326
11327 : see if this is a sys/statfs.h system
11328 set sys/statfs.h i_sysstatfs
11329 eval $inhdr
11330
11331
11332 echo " "
11333 echo "Checking to see if your system supports struct statfs..." >&4
11334 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
11335 eval $hasstruct
11336 case "$d_statfs_s" in
11337 "$define")      echo "Yes, it does."   ;;
11338 *)              echo "No, it doesn't." ;;
11339 esac
11340
11341
11342
11343 : see if struct statfs knows about f_flags
11344 case "$d_statfs_s" in
11345 define) 
11346         echo " "
11347         echo "Checking to see if your struct statfs has f_flags field..." >&4
11348         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
11349         eval $hasfield
11350         ;;
11351 *)      val="$undef"
11352         set d_statfs_f_flags
11353         eval $setvar
11354         ;;
11355 esac
11356 case "$d_statfs_f_flags" in
11357 "$define")      echo "Yes, it does."   ;;
11358 *)              echo "No, it doesn't." ;;
11359 esac
11360
11361 : see if _ptr and _cnt from stdio act std
11362 echo " "
11363 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
11364         echo "(Looks like you have stdio.h from Linux.)"
11365         case "$stdio_ptr" in
11366         '') stdio_ptr='((fp)->_IO_read_ptr)'
11367                 ptr_lval=$define
11368                 ;;
11369         *)      ptr_lval=$d_stdio_ptr_lval;;
11370         esac
11371         case "$stdio_cnt" in
11372         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
11373                 cnt_lval=$undef
11374                 ;;
11375         *)      cnt_lval=$d_stdio_cnt_lval;;
11376         esac
11377         case "$stdio_base" in
11378         '') stdio_base='((fp)->_IO_read_base)';;
11379         esac
11380         case "$stdio_bufsiz" in
11381         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
11382         esac
11383 else
11384         case "$stdio_ptr" in
11385         '') stdio_ptr='((fp)->_ptr)'
11386                 ptr_lval=$define
11387                 ;;
11388         *)      ptr_lval=$d_stdio_ptr_lval;;
11389         esac
11390         case "$stdio_cnt" in
11391         '') stdio_cnt='((fp)->_cnt)'
11392                 cnt_lval=$define
11393                 ;;
11394         *)      cnt_lval=$d_stdio_cnt_lval;;
11395         esac
11396         case "$stdio_base" in
11397         '') stdio_base='((fp)->_base)';;
11398         esac
11399         case "$stdio_bufsiz" in
11400         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
11401         esac
11402 fi
11403 : test whether _ptr and _cnt really work
11404 echo "Checking how std your stdio is..." >&4
11405 $cat >try.c <<EOP
11406 #include <stdio.h>
11407 #define FILE_ptr(fp)    $stdio_ptr
11408 #define FILE_cnt(fp)    $stdio_cnt
11409 int main() {
11410         FILE *fp = fopen("try.c", "r");
11411         char c = getc(fp);
11412         if (
11413                 18 <= FILE_cnt(fp) &&
11414                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11415         )
11416                 exit(0);
11417         exit(1);
11418 }
11419 EOP
11420 val="$undef"
11421 set try
11422 if eval $compile; then
11423         if ./try; then
11424                 echo "Your stdio acts pretty std."
11425                 val="$define"
11426         else
11427                 echo "Your stdio isn't very std."
11428         fi
11429 else
11430         echo "Your stdio doesn't appear very std."
11431 fi
11432 $rm -f try.c try
11433 set d_stdstdio
11434 eval $setvar
11435
11436 : Can _ptr be used as an lvalue?
11437 case "$d_stdstdio$ptr_lval" in
11438 $define$define) val=$define ;;
11439 *) val=$undef ;;
11440 esac
11441 set d_stdio_ptr_lval
11442 eval $setvar
11443
11444 : Can _cnt be used as an lvalue?
11445 case "$d_stdstdio$cnt_lval" in
11446 $define$define) val=$define ;;
11447 *) val=$undef ;;
11448 esac
11449 set d_stdio_cnt_lval
11450 eval $setvar
11451
11452 : see if _base is also standard
11453 val="$undef"
11454 case "$d_stdstdio" in
11455 $define)
11456         $cat >try.c <<EOP
11457 #include <stdio.h>
11458 #define FILE_base(fp)   $stdio_base
11459 #define FILE_bufsiz(fp) $stdio_bufsiz
11460 int main() {
11461         FILE *fp = fopen("try.c", "r");
11462         char c = getc(fp);
11463         if (
11464                 19 <= FILE_bufsiz(fp) &&
11465                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11466         )
11467                 exit(0);
11468         exit(1);
11469 }
11470 EOP
11471         set try
11472         if eval $compile; then
11473                 if ./try; then
11474                         echo "And its _base field acts std."
11475                         val="$define"
11476                 else
11477                         echo "But its _base field isn't std."
11478                 fi
11479         else
11480                 echo "However, it seems to be lacking the _base field."
11481         fi
11482         $rm -f try.c try
11483         ;;
11484 esac
11485 set d_stdiobase
11486 eval $setvar
11487
11488 $cat >&4 <<EOM
11489 Checking how to access stdio streams by file descriptor number...
11490 EOM
11491 case "$stdio_stream_array" in
11492 '')     $cat >try.c <<EOCP
11493 #include <stdio.h>
11494 int main() {
11495   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11496     printf("yes\n");
11497 }
11498 EOCP
11499         for s in _iob __iob __sF
11500         do
11501                 set try -DSTDIO_STREAM_ARRAY=$s
11502                 if eval $compile; then
11503                         case "`./try$exe_ext`" in
11504                         yes)    stdio_stream_array=$s; break ;;
11505                         esac
11506                 fi
11507         done
11508         $rm -f try.* try$exe_ext
11509 esac
11510 case "$stdio_stream_array" in
11511 '')     $cat >&4 <<EOM
11512 I can't figure out how to access stdio streams by file descriptor number.
11513 EOM
11514         d_stdio_stream_array="$undef"
11515         ;;
11516 *)      $cat >&4 <<EOM
11517 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11518 EOM
11519         d_stdio_stream_array="$define"
11520         ;;
11521 esac
11522
11523 : see if strcoll exists
11524 set strcoll d_strcoll
11525 eval $inlibc
11526
11527 : check for structure copying
11528 echo " "
11529 echo "Checking to see if your C compiler can copy structs..." >&4
11530 $cat >try.c <<'EOCP'
11531 int main()
11532 {
11533         struct blurfl {
11534                 int dyick;
11535         } foo, bar;
11536
11537         foo = bar;
11538 }
11539 EOCP
11540 if $cc -c try.c >/dev/null 2>&1 ; then
11541         val="$define"
11542         echo "Yup, it can."
11543 else
11544         val="$undef"
11545         echo "Nope, it can't."
11546 fi
11547 set d_strctcpy
11548 eval $setvar
11549 $rm -f try.*
11550
11551 : see if strerror and/or sys_errlist[] exist
11552 echo " "
11553 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11554     if set strerror val -f d_strerror; eval $csym; $val; then
11555                 echo 'strerror() found.' >&4
11556                 d_strerror="$define"
11557                 d_strerrm='strerror(e)'
11558                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11559                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11560                         d_syserrlst="$define"
11561                 else
11562                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11563                         d_syserrlst="$undef"
11564                 fi
11565     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11566                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11567                 echo 'strerror() found in string header.' >&4
11568                 d_strerror="$define"
11569                 d_strerrm='strerror(e)'
11570                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11571                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11572                                 d_syserrlst="$define"
11573                 else
11574                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11575                         d_syserrlst="$undef"
11576                 fi
11577     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11578                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11579                 d_strerror="$undef"
11580                 d_syserrlst="$define"
11581                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11582     else
11583                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11584                 d_strerror="$undef"
11585                 d_syserrlst="$undef"
11586                 d_strerrm='"unknown"'
11587     fi
11588 fi
11589
11590 : see if strtod exists
11591 set strtod d_strtod
11592 eval $inlibc
11593
11594 : see if strtol exists
11595 set strtol d_strtol
11596 eval $inlibc
11597
11598 : see if strtold exists
11599 set strtold d_strtold
11600 eval $inlibc
11601
11602 : see if strtoll exists
11603 set strtoll d_strtoll
11604 eval $inlibc
11605
11606 case "$d_longlong-$d_strtoll" in
11607 "$define-$define")
11608         $cat <<EOM
11609 Checking whether your strtoll() works okay...
11610 EOM
11611         $cat >try.c <<'EOCP'
11612 #include <errno.h>
11613 #ifdef __hpux
11614 #define strtoll __strtoll
11615 #endif
11616 #include <stdio.h>
11617 extern long long int strtoll(char *s, char **, int); 
11618 static int bad = 0;
11619 int check(char *s, long long ell, int een) {
11620         long long gll;
11621         errno = 0;
11622         gll = strtoll(s, 0, 10);
11623         if (!((gll == ell) && (errno == een)))
11624                 bad++;
11625 }
11626 int main() {
11627         check(" 1",                                      1LL, 0);
11628         check(" 0",                                      0LL, 0);
11629         check("-1",                                     -1LL, 0);
11630         check("-9223372036854775808", -9223372036854775808LL, 0);
11631         check("-9223372036854775808", -9223372036854775808LL, 0);
11632         check(" 9223372036854775807",  9223372036854775807LL, 0);
11633         check("-9223372036854775808", -9223372036854775808LL, 0);
11634         check(" 9223372036854775808",  9223372036854775807LL, ERANGE);
11635         check("-9223372036854775809", -9223372036854775808LL, ERANGE);
11636         if (!bad)
11637                 printf("ok\n");
11638 }
11639 EOCP
11640         set try
11641         if eval $compile; then
11642                 case "`./try`" in
11643                 ok) echo "Your strtoll() seems to be working okay." ;;
11644                 *) cat <<EOM >&4
11645 Your strtoll() doesn't seem to be working okay.
11646 EOM
11647                    d_strtoll="$undef"
11648                    ;;
11649                 esac
11650         fi
11651         ;;
11652 esac
11653
11654 : see if strtoul exists
11655 set strtoul d_strtoul
11656 eval $inlibc
11657
11658 : see if strtoull exists
11659 set strtoull d_strtoull
11660 eval $inlibc
11661
11662 case "$d_longlong-$d_strtoull" in
11663 "$define-$define")
11664         $cat <<EOM
11665 Checking whether your strtoull() works okay...
11666 EOM
11667         $cat >try.c <<'EOCP'
11668 #include <errno.h>
11669 #ifdef __hpux
11670 #define strtoull __strtoull
11671 #endif
11672 #include <stdio.h>
11673 extern unsigned long long int strtoull(char *s, char **, int); 
11674 static int bad = 0;
11675 int check(char *s, long long eull, int een) {
11676         long long gull;
11677         errno = 0;
11678         gull = strtoull(s, 0, 10);
11679         if (!((gull == eull) && (errno == een)))
11680                 bad++;
11681 }
11682 int main() {
11683         check(" 1",                                       1LL, 0);
11684         check(" 0",                                       0LL, 0);
11685         check("18446744073709551615", 18446744073709551615ULL, 0);
11686         check("18446744073709551616", 18446744073709551615ULL, ERANGE);
11687         if (!bad)
11688                 printf("ok\n");
11689 }
11690 EOCP
11691         set try
11692         if eval $compile; then
11693                 case "`./try`" in
11694                 ok) echo "Your strtoull() seems to be working okay." ;;
11695                 *) cat <<EOM >&4
11696 Your strtoull() doesn't seem to be working okay.
11697 EOM
11698                    d_strtoull="$undef"
11699                    ;;
11700                 esac
11701         fi
11702         ;;
11703 esac
11704
11705 : see if strtouq exists
11706 set strtouq d_strtouq
11707 eval $inlibc
11708
11709 : see if strxfrm exists
11710 set strxfrm d_strxfrm
11711 eval $inlibc
11712
11713 : see if symlink exists
11714 set symlink d_symlink
11715 eval $inlibc
11716
11717 : see if syscall exists
11718 set syscall d_syscall
11719 eval $inlibc
11720
11721 : see if sysconf exists
11722 set sysconf d_sysconf
11723 eval $inlibc
11724
11725 : see if system exists
11726 set system d_system
11727 eval $inlibc
11728
11729 : see if tcgetpgrp exists
11730 set tcgetpgrp d_tcgetpgrp
11731 eval $inlibc
11732
11733 : see if tcsetpgrp exists
11734 set tcsetpgrp d_tcsetpgrp
11735 eval $inlibc
11736
11737 : see if prototype for telldir is available
11738 echo " "
11739 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11740 eval $hasproto
11741
11742 : see if this is a sys/times.h system
11743 set sys/times.h i_systimes
11744 eval $inhdr
11745
11746 : see if times exists
11747 echo " "
11748 if set times val -f d_times; eval $csym; $val; then
11749         echo 'times() found.' >&4
11750         d_times="$define"
11751         inc=''
11752         case "$i_systimes" in
11753         "$define") inc='sys/times.h';;
11754         esac
11755         rp="What is the type returned by times() on this system?"
11756         set clock_t clocktype long stdio.h sys/types.h $inc
11757         eval $typedef_ask
11758 else
11759         echo 'times() NOT found, hope that will do.' >&4
11760         d_times="$undef"
11761         clocktype='int'
11762 fi
11763
11764 : see if truncate exists
11765 set truncate d_truncate
11766 eval $inlibc
11767
11768 : see if tzname[] exists
11769 echo " "
11770 if set tzname val -a d_tzname; eval $csym; $val; then
11771         val="$define"
11772         echo 'tzname[] found.' >&4
11773 else
11774         val="$undef"
11775         echo 'tzname[] NOT found.' >&4
11776 fi
11777 set d_tzname
11778 eval $setvar
11779
11780 : see if umask exists
11781 set umask d_umask
11782 eval $inlibc
11783
11784 : see if ustat exists
11785 set ustat d_ustat
11786 eval $inlibc
11787
11788 : backward compatibility for d_hvfork
11789 if test X$d_hvfork != X; then
11790         d_vfork="$d_hvfork"
11791         d_hvfork=''
11792 fi
11793 : see if there is a vfork
11794 val=''
11795 set vfork val
11796 eval $inlibc
11797
11798 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11799 : perl on Solaris 2.x, and probably elsewhere.
11800 case "$val" in
11801 $define)
11802         echo " "
11803         case "$usevfork" in
11804         false) dflt='n';;
11805         *) dflt='y';;
11806         esac
11807         cat <<'EOM'
11808  
11809 Perl can only use a vfork() that doesn't suffer from strict
11810 restrictions on calling functions or modifying global data in
11811 the child.  For example, glibc-2.1 contains such a vfork()
11812 that is unsuitable.  If your system provides a proper fork()
11813 call, chances are that you do NOT want perl to use vfork().
11814
11815 EOM
11816         rp="Do you still want to use vfork()?"
11817         . ./myread
11818         case "$ans" in
11819         y|Y) ;;
11820         *)
11821                 echo "Ok, we won't use vfork()."
11822                 val="$undef"
11823                 ;;
11824         esac
11825         ;;
11826 esac
11827 set d_vfork
11828 eval $setvar
11829 case "$d_vfork" in
11830 $define) usevfork='true';;
11831 *) usevfork='false';;
11832 esac
11833
11834 : see if this is an sysdir system
11835 set sys/dir.h i_sysdir
11836 eval $inhdr
11837
11838 : see if this is an sysndir system
11839 set sys/ndir.h i_sysndir
11840 eval $inhdr
11841
11842 : see if closedir exists
11843 set closedir d_closedir
11844 eval $inlibc
11845
11846 case "$d_closedir" in
11847 "$define")
11848         echo " "
11849         echo "Checking whether closedir() returns a status..." >&4
11850         cat > closedir.c <<EOM
11851 #$i_dirent I_DIRENT             /**/
11852 #$i_sysdir I_SYS_DIR            /**/
11853 #$i_sysndir I_SYS_NDIR          /**/
11854 #$i_systypes I_SYS_TYPES        /**/
11855
11856 #if defined(I_SYS_TYPES)
11857 #include <sys/types.h>
11858 #endif
11859 #if defined(I_DIRENT)
11860 #include <dirent.h>
11861 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11862 #include <sys/dir.h>
11863 #endif
11864 #else
11865 #ifdef I_SYS_NDIR
11866 #include <sys/ndir.h>
11867 #else
11868 #ifdef I_SYS_DIR
11869 #ifdef hp9000s500
11870 #include <ndir.h>       /* may be wrong in the future */
11871 #else
11872 #include <sys/dir.h>
11873 #endif
11874 #endif
11875 #endif
11876 #endif 
11877 int main() { return closedir(opendir(".")); }
11878 EOM
11879         set closedir
11880         if eval $compile_ok; then
11881                 if ./closedir > /dev/null 2>&1 ; then
11882                         echo "Yes, it does."
11883                         val="$undef"
11884                 else
11885                         echo "No, it doesn't."
11886                         val="$define"
11887                 fi
11888         else
11889                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11890                 val="$define"
11891         fi
11892         ;;
11893 *)
11894         val="$undef";
11895         ;;
11896 esac
11897 set d_void_closedir
11898 eval $setvar
11899 $rm -f closedir*
11900 : check for volatile keyword
11901 echo " "
11902 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11903 $cat >try.c <<'EOCP'
11904 int main()
11905 {
11906         typedef struct _goo_struct goo_struct;
11907         goo_struct * volatile goo = ((goo_struct *)0);
11908         struct _goo_struct {
11909                 long long_int;
11910                 int reg_int;
11911                 char char_var;
11912         };
11913         typedef unsigned short foo_t;
11914         char *volatile foo;
11915         volatile int bar;
11916         volatile foo_t blech;
11917         foo = foo;
11918 }
11919 EOCP
11920 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11921         val="$define"
11922         echo "Yup, it does."
11923 else
11924         val="$undef"
11925         echo "Nope, it doesn't."
11926 fi
11927 set d_volatile
11928 eval $setvar
11929 $rm -f try.*
11930
11931 : see if there is a wait4
11932 set wait4 d_wait4
11933 eval $inlibc
11934
11935 : see if waitpid exists
11936 set waitpid d_waitpid
11937 eval $inlibc
11938
11939 : see if wcstombs exists
11940 set wcstombs d_wcstombs
11941 eval $inlibc
11942
11943 : see if wctomb exists
11944 set wctomb d_wctomb
11945 eval $inlibc
11946
11947 : preserve RCS keywords in files with variable substitution, grrr
11948 Date='$Date'
11949 Id='$Id'
11950 Log='$Log'
11951 RCSfile='$RCSfile'
11952 Revision='$Revision'
11953
11954 case "$crosscompile" in
11955 ''|[nN]*) crosscompile="$undef" ;;
11956 esac
11957
11958 case "$osname" in
11959 next|rhapsody|darwin) multiarch="$define" ;;
11960 esac
11961 case "$multiarch" in
11962 ''|[nN]*) multiarch="$undef" ;;
11963 esac
11964
11965 : check for alignment requirements
11966 echo " "
11967 case "$crosscompile$multiarch" in
11968 *$define*)
11969         $cat <<EOM
11970 You seem to be either cross-compiling or doing a multiarchitecture build,
11971 skipping the memory alignment check.
11972
11973 EOM
11974         case "$alignbytes" in
11975         '') alignbytes=8 ;;
11976         esac
11977         ;;
11978 *)
11979         case "$alignbytes" in
11980         '') echo "Checking alignment constraints..." >&4
11981                 if $test "X$uselongdouble" = Xdefine -a "X$d_longdbl" = Xdefine; then
11982                         $cat >try.c <<'EOCP'
11983 typedef long double NV;
11984 EOCP
11985                 else
11986                         $cat >try.c <<'EOCP'
11987 typedef double NV;
11988 EOCP
11989                 fi
11990                 $cat >>try.c <<'EOCP'
11991 #include <stdio.h>
11992 struct foobar {
11993         char foo;
11994         NV bar;
11995 } try_algn;
11996 int main()
11997 {
11998     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11999     return(0);
12000 }
12001 EOCP
12002                 set try
12003                 if eval $compile_ok; then
12004                         dflt=`./try`
12005                 else
12006                         dflt='8'
12007                         echo "(I can't seem to compile the test program...)"
12008                 fi
12009                 ;;
12010         *) dflt="$alignbytes"
12011                 ;;
12012         esac
12013         rp="Doubles must be aligned on a how-many-byte boundary?"
12014         . ./myread
12015         alignbytes="$ans"
12016         $rm -f try.c try
12017         ;;
12018 esac
12019
12020
12021 : set the base revision
12022 baserev=5.0
12023
12024 : check for ordering of bytes in a long
12025 echo " "
12026 case "$crosscompile$multiarch" in
12027 *$define*)
12028         $cat <<EOM
12029 You seem to be either cross-compiling or doing a multiarchitecture build,
12030 skipping the byteorder check.
12031
12032 EOM
12033         byteorder='0xffff'
12034         ;;
12035 *)
12036         case "$byteorder" in
12037         '')
12038                 $cat <<'EOM'
12039 In the following, larger digits indicate more significance.  A big-endian
12040 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
12041 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
12042 machines may have weird orders like 3412.  A Cray will report 87654321,
12043 an Alpha will report 12345678. If the test program works the default is
12044 probably right.
12045 I'm now running the test program...
12046 EOM
12047                 $cat >try.c <<'EOCP'
12048 #include <stdio.h>
12049 int main()
12050 {
12051         int i;
12052         union {
12053                 unsigned long l;
12054                 char c[sizeof(long)];
12055         } u;
12056
12057         if (sizeof(long) > 4)
12058                 u.l = (0x08070605L << 32) | 0x04030201L;
12059         else
12060                 u.l = 0x04030201L;
12061         for (i = 0; i < sizeof(long); i++)
12062                 printf("%c", u.c[i]+'0');
12063         printf("\n");
12064         exit(0);
12065 }
12066 EOCP
12067                 xxx_prompt=y
12068                 set try
12069                 if eval $compile && ./try > /dev/null; then
12070                         dflt=`./try`
12071                         case "$dflt" in
12072                         [1-4][1-4][1-4][1-4]|12345678|87654321)
12073                                 echo "(The test program ran ok.)"
12074                                 echo "byteorder=$dflt"
12075                                 xxx_prompt=n
12076                         ;;
12077                         ????|????????) echo "(The test program ran ok.)" ;;
12078                         *) echo "(The test program didn't run right for some reason.)" ;;
12079                         esac
12080                 else
12081                         dflt='4321'
12082                         cat <<'EOM'
12083 (I can't seem to compile the test program.  Guessing big-endian...)
12084 EOM
12085                 fi
12086                 case "$xxx_prompt" in
12087                 y)
12088                         rp="What is the order of bytes in a long?"
12089                         . ./myread
12090                         byteorder="$ans"
12091                         ;;
12092                 *)      byteorder=$dflt
12093                         ;;
12094                 esac
12095                 ;;
12096         esac
12097         $rm -f try.c try
12098         ;;
12099 esac
12100
12101
12102 : how do we catenate cpp tokens here?
12103 echo " "
12104 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
12105 $cat >cpp_stuff.c <<'EOCP'
12106 #define RCAT(a,b)a/**/b
12107 #define ACAT(a,b)a ## b
12108 RCAT(Rei,ser)
12109 ACAT(Cir,cus)
12110 EOCP
12111 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
12112 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
12113         echo "Oh!  Smells like ANSI's been here." >&4
12114         echo "We can catify or stringify, separately or together!"
12115         cpp_stuff=42
12116 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
12117         echo "Ah, yes!  The good old days!" >&4
12118         echo "However, in the good old days we don't know how to stringify and"
12119         echo "catify at the same time."
12120         cpp_stuff=1
12121 else
12122         $cat >&4 <<EOM
12123 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
12124 to have to edit the values of CAT[2-5] in config.h...
12125 EOM
12126         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
12127 fi
12128 $rm -f cpp_stuff.*
12129
12130 : see if this is a db.h system
12131 set db.h i_db
12132 eval $inhdr
12133
12134 case "$i_db" in
12135 $define)
12136         : Check db version.
12137         echo " "
12138         echo "Checking Berkeley DB version ..." >&4
12139         $cat >try.c <<EOCP
12140 #$d_const HASCONST
12141 #ifndef HASCONST
12142 #define const
12143 #endif
12144 #include <sys/types.h>
12145 #include <stdio.h>
12146 #include <db.h>
12147 int main()
12148 {
12149 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
12150     int Major, Minor, Patch ;
12151     unsigned long Version ;
12152     (void)db_version(&Major, &Minor, &Patch) ;
12153     printf("You have Berkeley DB Version 2 or greater\n");
12154
12155     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
12156                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
12157     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
12158                 Major, Minor, Patch) ;
12159
12160     /* check that db.h & libdb are compatible */
12161     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
12162         printf("db.h and libdb are incompatible\n") ;
12163         exit(3);        
12164     }
12165
12166     printf("db.h and libdb are compatible\n") ;
12167
12168     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
12169                 + DB_VERSION_PATCH ;
12170
12171     /* needs to be >= 2.3.4 */
12172     if (Version < 2003004) {
12173     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
12174         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
12175         exit(2);        
12176     }
12177
12178     exit(0);
12179 #else
12180 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
12181     printf("You have Berkeley DB Version 1\n");
12182     exit(0);    /* DB version < 2: the coast is clear. */
12183 #else
12184     exit(1);    /* <db.h> not Berkeley DB? */
12185 #endif
12186 #endif
12187 }
12188 EOCP
12189         set try
12190         if eval $compile_ok && ./try; then
12191                 echo 'Looks OK.' >&4
12192         else
12193                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
12194                 i_db=$undef
12195                 case " $libs " in
12196                 *"-ldb "*)
12197                         : Remove db from list of libraries to use
12198                         echo "Removing unusable -ldb from library list" >&4
12199                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
12200                         shift
12201                         libs="$*"
12202                         echo "libs = $libs" >&4
12203                         ;;
12204                 esac
12205         fi
12206         $rm -f try.*
12207         ;;
12208 esac
12209
12210 case "$i_db" in
12211 define)
12212         : Check the return type needed for hash 
12213         echo " "
12214         echo "Checking return type needed for hash for Berkeley DB ..." >&4
12215         $cat >try.c <<EOCP
12216 #$d_const HASCONST
12217 #ifndef HASCONST
12218 #define const
12219 #endif
12220 #include <sys/types.h>
12221 #include <db.h>
12222
12223 #ifndef DB_VERSION_MAJOR
12224 u_int32_t hash_cb (ptr, size)
12225 const void *ptr;
12226 size_t size;
12227 {
12228 }
12229 HASHINFO info;
12230 int main()
12231 {
12232         info.hash = hash_cb;
12233 }
12234 #endif
12235 EOCP
12236         if $cc $ccflags -c try.c >try.out 2>&1 ; then
12237                 if $contains warning try.out >>/dev/null 2>&1 ; then
12238                         db_hashtype='int'
12239                 else
12240                         db_hashtype='u_int32_t'
12241                 fi
12242         else
12243                 : XXX Maybe we should just give up here.
12244                 db_hashtype=u_int32_t
12245                 $cat try.out >&4
12246                 echo "Help:  I can't seem to compile the db test program." >&4
12247                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
12248         fi
12249         $rm -f try.*
12250         echo "Your version of Berkeley DB uses $db_hashtype for hash."
12251         ;;
12252 *)      db_hashtype=u_int32_t
12253         ;;
12254 esac
12255 case "$i_db" in
12256 define)
12257         : Check the return type needed for prefix 
12258         echo " "
12259         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
12260         cat >try.c <<EOCP
12261 #$d_const HASCONST
12262 #ifndef HASCONST
12263 #define const
12264 #endif
12265 #include <sys/types.h>
12266 #include <db.h>
12267
12268 #ifndef DB_VERSION_MAJOR
12269 size_t prefix_cb (key1, key2)
12270 const DBT *key1;
12271 const DBT *key2;
12272 {
12273 }
12274 BTREEINFO info;
12275 int main()
12276 {
12277         info.prefix = prefix_cb;
12278 }
12279 #endif
12280 EOCP
12281         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
12282                 if $contains warning try.out >>/dev/null 2>&1 ; then
12283                         db_prefixtype='int'
12284                 else
12285                         db_prefixtype='size_t'
12286                 fi
12287         else
12288                 db_prefixtype='size_t'
12289                 : XXX Maybe we should just give up here.
12290                 $cat try.out >&4
12291                 echo "Help:  I can't seem to compile the db test program." >&4
12292                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
12293         fi
12294         $rm -f try.*
12295         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
12296         ;;
12297 *)      db_prefixtype='size_t'
12298         ;;
12299 esac
12300
12301 : check for void type
12302 echo " "
12303 echo "Checking to see how well your C compiler groks the void type..." >&4
12304 case "$voidflags" in
12305 '')
12306         $cat >try.c <<'EOCP'
12307 #if TRY & 1
12308 void sub() {
12309 #else
12310 sub() {
12311 #endif
12312         extern void moo();      /* function returning void */
12313         void (*goo)();          /* ptr to func returning void */
12314 #if TRY & 8
12315         void *hue;              /* generic ptr */
12316 #endif
12317 #if TRY & 2
12318         void (*foo[10])();
12319 #endif
12320
12321 #if TRY & 4
12322         if(goo == moo) {
12323                 exit(0);
12324         }
12325 #endif
12326         exit(0);
12327 }
12328 int main() { sub(); }
12329 EOCP
12330         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
12331                 voidflags=$defvoidused
12332         echo "Good.  It appears to support void to the level $package wants.">&4
12333                 if $contains warning .out >/dev/null 2>&1; then
12334                         echo "However, you might get some warnings that look like this:"
12335                         $cat .out
12336                 fi
12337         else
12338 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
12339                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
12340                         echo "It supports 1..."
12341                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
12342                                 echo "It also supports 2..."
12343                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
12344                                         voidflags=7
12345                                         echo "And it supports 4 but not 8 definitely."
12346                                 else
12347                                         echo "It doesn't support 4..."
12348                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
12349                                                 voidflags=11
12350                                                 echo "But it supports 8."
12351                                         else
12352                                                 voidflags=3
12353                                                 echo "Neither does it support 8."
12354                                         fi
12355                                 fi
12356                         else
12357                                 echo "It does not support 2..."
12358                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
12359                                         voidflags=13
12360                                         echo "But it supports 4 and 8."
12361                                 else
12362                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
12363                                                 voidflags=5
12364                                                 echo "And it supports 4 but has not heard about 8."
12365                                         else
12366                                                 echo "However it supports 8 but not 4."
12367                                         fi
12368                                 fi
12369                         fi
12370                 else
12371                         echo "There is no support at all for void."
12372                         voidflags=0
12373                 fi
12374         fi
12375 esac
12376 case "$voidflags" in
12377 "$defvoidused") ;;
12378 *)      $cat >&4 <<'EOM'
12379   Support flag bits are:
12380     1: basic void declarations.
12381     2: arrays of pointers to functions returning void.
12382     4: operations between pointers to and addresses of void functions.
12383     8: generic void pointers.
12384 EOM
12385         dflt="$voidflags";
12386         rp="Your void support flags add up to what?"
12387         . ./myread
12388         voidflags="$ans"
12389         ;;
12390 esac
12391 $rm -f try.* .out
12392
12393
12394 : How can we generate normalized random numbers ?
12395 echo " "
12396 echo "Looking for a random number function..." >&4
12397 case "$randfunc" in
12398 '')
12399         if set drand48 val -f; eval $csym; $val; then
12400                 dflt="drand48"
12401                 echo "Good, found drand48()." >&4
12402         elif set random val -f; eval $csym; $val; then
12403                 dflt="random"
12404                 echo "OK, found random()." >&4
12405         else
12406                 dflt="rand"
12407                 echo "Yick, looks like I have to use rand()." >&4
12408         fi
12409         echo " "
12410         ;;
12411 *)
12412         dflt="$randfunc"
12413         ;;
12414 esac
12415 cont=true
12416
12417 case "$ccflags" in
12418 *-Dmy_rand=*|*-Dmy_srand=*)
12419         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
12420         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
12421         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
12422         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
12423         ;;
12424 esac
12425
12426 while $test "$cont"; do
12427         rp="Use which function to generate random numbers?"
12428         . ./myread
12429         if $test "$ans" = "$dflt"; then
12430                 : null
12431         else
12432                 randbits=''
12433         fi
12434         randfunc="$ans"
12435         if set $ans val -f; eval $csym; $val; then
12436                 cont=''
12437         else
12438                 dflt=y
12439                 rp="I cannot find function $ans. Use that name anyway?"
12440                 . ./myread
12441                 dflt=rand
12442                 case "$ans" in
12443                         [yY]*) cont='';;
12444                 esac
12445         fi
12446         case "$cont" in
12447         '')
12448                 case "$randfunc" in
12449                 drand48)
12450                         drand01="drand48()"
12451                         seedfunc="srand48"
12452                         randbits=48
12453                         randseedtype=long
12454                         ;;
12455                 rand|random)
12456                         case "$randbits" in
12457                         '')
12458 echo "Checking to see how many bits your $randfunc() function produces..." >&4
12459                                 $cat >try.c <<EOCP
12460 #$i_unistd I_UNISTD
12461 #$i_stdlib I_STDLIB
12462 #include <stdio.h>
12463 #ifdef I_UNISTD
12464 #  include <unistd.h>
12465 #endif
12466 #ifdef I_STDLIB
12467 #  include <stdlib.h>
12468 #endif
12469 int main()
12470 {
12471         register int i;
12472         register unsigned long tmp;
12473         register unsigned long max = 0L;
12474
12475         for (i = 1000; i; i--) {
12476                 tmp = (unsigned long) $randfunc();
12477                 if (tmp > max) max = tmp;
12478         }
12479         for (i = 0; max; i++)
12480                 max /= 2;
12481         printf("%d\n",i);
12482 }
12483 EOCP
12484                                 set try
12485                                 if eval $compile_ok; then
12486                                         dflt=`try`
12487                                 else
12488                                         dflt='?'
12489                                         echo "(I can't seem to compile the test program...)"
12490                                 fi
12491                                 ;;
12492                         *)
12493                                 dflt="$randbits"
12494                                 ;;
12495                         esac
12496                         rp="How many bits does your $randfunc() function produce?"
12497                         . ./myread
12498                         randbits="$ans"
12499                         $rm -f try.c try
12500                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12501                         seedfunc="s$randfunc"
12502                         randseedtype=unsigned
12503                         ;;
12504                 *)
12505                         dflt="31"
12506                         rp="How many bits does your $randfunc() function produce?"
12507                         . ./myread
12508                         randbits="$ans"
12509                         seedfunc="s$randfunc"
12510                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12511                         if set $seedfunc val -f; eval $csym; $val; then
12512                                 echo "(Using $seedfunc() to seed random generator)"
12513                         else
12514                                 echo "(Warning: no $seedfunc() to seed random generator)"
12515                                 seedfunc=rand
12516                         fi
12517                         randseedtype=unsigned
12518                         ;;
12519                 esac
12520                 ;;
12521         esac
12522 done
12523
12524 echo " "
12525 echo "Determining whether or not we are on an EBCDIC system..." >&4
12526 $cat >tebcdic.c <<'EOM'
12527 int main()
12528 {
12529   if ('M'==0xd4) return 0;
12530   return 1;
12531 }
12532 EOM
12533
12534 val=$undef
12535 set tebcdic
12536 if eval $compile_ok; then
12537         if ./tebcdic; then
12538                 echo "You seem to speak EBCDIC." >&4
12539                 val="$define"
12540         else
12541                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin. Or UTF8." >&4
12542         fi
12543 else
12544         echo "I'm unable to compile the test program." >&4
12545         echo "I'll assume ASCII or some ISO Latin. Or UTF8." >&4
12546 fi
12547 $rm -f tebcdic.c tebcdic
12548 set ebcdic
12549 eval $setvar
12550
12551 echo " "
12552 $cat >&4 <<EOM
12553 Checking how to flush all pending stdio output...
12554 EOM
12555 # I only know how to find the first 32 possibly open files on SunOS.
12556 # See also hints/sunos_4_1.sh and util.c  --AD
12557 case "$osname" in
12558 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12559 esac
12560 $cat >>try.c <<EOCP
12561 #include <stdio.h>
12562 #$i_unistd I_UNISTD
12563 #ifdef I_UNISTD
12564 # include <unistd.h>
12565 #endif
12566 #$d_sysconf HAS_SYSCONF
12567 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12568 #ifdef HAS_STDIO_STREAM_ARRAY
12569 # define STDIO_STREAM_ARRAY $stdio_stream_array
12570 #endif
12571 int main() {
12572   FILE* p = fopen("try.out", "w");
12573 #ifdef TRY_FPUTC
12574   fputc('x', p);
12575 #else
12576 # ifdef TRY_FPRINTF
12577   fprintf(p, "x");
12578 # endif
12579 #endif
12580 #ifdef TRY_FFLUSH_NULL
12581   fflush(NULL);
12582 #endif
12583 #ifdef TRY_FFLUSH_ALL
12584   {
12585     long open_max = -1;
12586 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12587     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12588 # else
12589 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12590     open_max = sysconf(_SC_OPEN_MAX);
12591 #  else
12592 #   ifdef FOPEN_MAX
12593     open_max = FOPEN_MAX;
12594 #   else
12595 #    ifdef OPEN_MAX
12596     open_max = OPEN_MAX;
12597 #    else
12598 #     ifdef _NFILE
12599     open_max = _NFILE;
12600 #     endif
12601 #    endif
12602 #   endif
12603 #  endif
12604 # endif 
12605 # ifdef HAS_STDIO_STREAM_ARRAY
12606     if (open_max > 0) {
12607       long i;
12608       for (i = 0; i < open_max; i++)
12609             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12610                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12611                 STDIO_STREAM_ARRAY[i]._flag)
12612                 fflush(&STDIO_STREAM_ARRAY[i]);
12613     }   
12614   }
12615 # endif
12616 #endif
12617   _exit(42);
12618 }
12619 EOCP
12620 : first we have to find out how _not_ to flush
12621 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12622     output=''
12623     set try -DTRY_FPUTC
12624     if eval $compile; then
12625             $rm -f try.out
12626             ./try$exe_ext 2>/dev/null
12627             if $test ! -s try.out -a "X$?" = X42; then
12628                 output=-DTRY_FPUTC
12629             fi
12630     fi
12631     case "$output" in
12632     '')
12633             set try -DTRY_FPRINTF
12634             $rm -f try.out
12635             if eval $compile; then
12636                     $rm -f try.out
12637                     ./try$exe_ext 2>/dev/null
12638                     if $test ! -s try.out -a "X$?" = X42; then
12639                         output=-DTRY_FPRINTF
12640                     fi
12641             fi
12642         ;;
12643     esac
12644 fi
12645 : check for fflush NULL behaviour
12646 case "$fflushNULL" in
12647 '')     set try -DTRY_FFLUSH_NULL $output
12648         if eval $compile; then
12649                 $rm -f try.out
12650                 ./try$exe_ext 2>/dev/null
12651                 code="$?"
12652                 if $test -s try.out -a "X$code" = X42; then
12653                         fflushNULL="`$cat try.out`"
12654                 else
12655                         if $test "X$code" != X42; then
12656                                 $cat >&4 <<EOM
12657 (If this test failed, don't worry, we'll try another method shortly.)
12658 EOM
12659                         fi
12660                 fi
12661         fi
12662         $rm -f core try.core core.try.*
12663         case "$fflushNULL" in
12664         x)      $cat >&4 <<EOM
12665 Your fflush(NULL) works okay for output streams.
12666 Let's see if it clobbers input pipes...
12667 EOM
12668 # As of mid-March 2000 all versions of Solaris appear to have a stdio
12669 # bug that improperly flushes the input end of pipes.  So we avoid the
12670 # autoflush on fork/system/exec support for now. :-(
12671 $cat >tryp.c <<EOCP
12672 #include <stdio.h>
12673 int
12674 main(int argc, char **argv)
12675 {
12676     char buf[1024];
12677     int i;
12678     char *bp = buf;
12679     while (1) {
12680         while ((i = getc(stdin)) != -1
12681                && (*bp++ = i) != '\n'
12682                && bp < &buf[1024])
12683         /* DO NOTHING */ ;
12684         *bp = '\0';
12685         fprintf(stdout, "%s", buf);
12686         fflush(NULL);
12687         if (i == -1)
12688             return 0;
12689         bp = buf;
12690     }
12691 }
12692 EOCP
12693                 fflushNULL="$define"
12694                 set tryp
12695                 if eval $compile; then
12696                     $rm -f tryp.out
12697                     $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12698                     if cmp tryp.c tryp.out >/dev/null 2>&1; then
12699                        $cat >&4 <<EOM
12700 fflush(NULL) seems to behave okay with input streams.
12701 EOM
12702                         fflushNULL="$define"
12703                     else
12704                         $cat >&4 <<EOM
12705 Ouch, fflush(NULL) clobbers input pipes!  We will not use it.
12706 EOM
12707                         fflushNULL="$undef"
12708                     fi
12709                 fi
12710                 $rm -f core tryp.c tryp.core core.tryp.*
12711                 ;;
12712         '')     $cat >&4 <<EOM
12713 Your fflush(NULL) isn't working (contrary to ANSI C).
12714 EOM
12715                 fflushNULL="$undef"
12716                 ;;
12717         *)      $cat >&4 <<EOM
12718 Cannot figure out whether your fflush(NULL) works or not.
12719 I'm assuming it doesn't (contrary to ANSI C).
12720 EOM
12721                 fflushNULL="$undef"
12722                 ;;
12723         esac
12724         ;;
12725 $define|true|[yY]*)
12726         fflushNULL="$define"
12727         ;;
12728 *)
12729         fflushNULL="$undef"
12730         ;;
12731 esac
12732 : check explicit looping only if NULL did not work, and if the pipe
12733 : bug does not show up on an explicit flush too
12734 case "$fflushNULL" in
12735 "$undef")
12736         $cat >tryp.c <<EOCP
12737 #include <stdio.h>
12738 int
12739 main(int argc, char **argv)
12740 {
12741     char buf[1024];
12742     int i;
12743     char *bp = buf;
12744     while (1) {
12745         while ((i = getc(stdin)) != -1
12746                && (*bp++ = i) != '\n'
12747                && bp < &buf[1024])
12748         /* DO NOTHING */ ;
12749         *bp = '\0';
12750         fprintf(stdout, "%s", buf);
12751         fflush(stdin);
12752         if (i == -1)
12753             return 0;
12754         bp = buf;
12755     }
12756 }
12757 EOCP
12758         set tryp
12759         if eval $compile; then
12760             $rm -f tryp.out
12761             $cat tryp.c | ./tryp$exe_ext 2>/dev/null > tryp.out
12762             if cmp tryp.c tryp.out >/dev/null 2>&1; then
12763                $cat >&4 <<EOM
12764 Good, at least fflush(stdin) seems to behave okay when stdin is a pipe.
12765 EOM
12766                 : now check for fflushall behaviour
12767                 case "$fflushall" in
12768                 '')     set try -DTRY_FFLUSH_ALL $output
12769                         if eval $compile; then
12770                                 $cat >&4 <<EOM
12771 (Now testing the other method--but note that this also may fail.)
12772 EOM
12773                                 $rm -f try.out
12774                                 ./try$exe_ext 2>/dev/null
12775                                 if $test -s try.out -a "X$?" = X42; then
12776                                         fflushall="`$cat try.out`"
12777                                 fi
12778                         fi
12779                         $rm -f core try.core core.try.*
12780                         case "$fflushall" in
12781                         x)      $cat >&4 <<EOM
12782 Whew. Flushing explicitly all the stdio streams works.
12783 EOM
12784                                 fflushall="$define"
12785                                 ;;
12786                         '')     $cat >&4 <<EOM
12787 Sigh. Flushing explicitly all the stdio streams doesn't work.
12788 EOM
12789                                 fflushall="$undef"
12790                                 ;;
12791                         *)      $cat >&4 <<EOM
12792 Cannot figure out whether flushing stdio streams explicitly works or not.
12793 I'm assuming it doesn't.
12794 EOM
12795                                 fflushall="$undef"
12796                                 ;;
12797                         esac
12798                         ;;
12799                 "$define"|true|[yY]*)
12800                         fflushall="$define"
12801                         ;;
12802                 *)
12803                         fflushall="$undef"
12804                         ;;
12805                 esac
12806             else
12807                 $cat >&4 <<EOM
12808 All is futile.  Even fflush(stdin) clobbers input pipes!
12809 EOM
12810                 fflushall="$undef"
12811             fi
12812         else
12813             fflushall="$undef"
12814         fi
12815         $rm -f core tryp.c tryp.core core.tryp.*
12816         ;;
12817 *)      fflushall="$undef"
12818         ;;
12819 esac
12820
12821 case "$fflushNULL$fflushall" in
12822 undefundef)
12823         $cat <<EOM
12824 OK, I give up.  I cannot figure out how to flush pending stdio output.
12825 We won't be flushing handles at all before fork/exec/popen.
12826 EOM
12827         ;;
12828 esac
12829 $rm -f try.* try$exe_ext
12830
12831 : Store the full pathname to the ar program for use in the C program
12832 : Respect a hint or command line value for full_ar.
12833 case "$full_ar" in
12834 '') full_ar=$ar ;;
12835 esac
12836
12837 : Store the full pathname to the sed program for use in the C program
12838 full_sed=$sed
12839
12840 : see what type gids are declared as in the kernel
12841 echo " "
12842 echo "Looking for the type for group ids returned by getgid()."
12843 set gid_t gidtype xxx stdio.h sys/types.h
12844 eval $typedef
12845 case "$gidtype" in
12846 xxx)
12847         xxx=`./findhdr sys/user.h`
12848         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12849         case $1 in
12850         unsigned) dflt="$1 $2" ;;
12851         *) dflt="$1" ;;
12852         esac
12853         ;;
12854 *) dflt="$gidtype";;
12855 esac
12856 case "$gidtype" in
12857 gid_t) echo "gid_t found." ;;
12858 *)      rp="What is the type for group ids returned by getgid()?"
12859         . ./myread
12860         gidtype="$ans"
12861         ;;
12862 esac
12863
12864 echo " "
12865 case "$gidtype" in
12866 *_t) zzz="$gidtype"     ;;
12867 *)   zzz="gid"          ;;
12868 esac
12869 echo "Checking the size of $zzz..." >&4 
12870 cat > try.c <<EOCP
12871 #include <sys/types.h>
12872 #include <stdio.h>
12873 int main() {
12874     printf("%d\n", (int)sizeof($gidtype));
12875     exit(0);
12876 }
12877 EOCP
12878 set try
12879 if eval $compile_ok; then
12880         yyy=`./try`
12881         case "$yyy" in
12882         '')     gidsize=4
12883                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12884                 ;;
12885         *)      gidsize=$yyy
12886                 echo "Your $zzz is $gidsize bytes long."
12887                 ;;
12888         esac
12889 else
12890         gidsize=4
12891         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12892 fi
12893
12894
12895 echo " "
12896 case "$gidtype" in
12897 *_t) zzz="$gidtype"     ;;
12898 *)   zzz="gid"          ;;
12899 esac
12900 echo "Checking the sign of $zzz..." >&4 
12901 cat > try.c <<EOCP
12902 #include <sys/types.h>
12903 #include <stdio.h>
12904 int main() {
12905         $gidtype foo = -1;
12906         if (foo < 0)
12907                 printf("-1\n");
12908         else
12909                 printf("1\n");
12910 }
12911 EOCP
12912 set try
12913 if eval $compile; then
12914         yyy=`./try`
12915         case "$yyy" in
12916         '')     gidsign=1
12917                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12918                 ;;
12919         *)      gidsign=$yyy
12920                 case "$gidsign" in
12921                  1) echo "Your $zzz is unsigned." ;;
12922                 -1) echo "Your $zzz is signed."   ;;
12923                 esac
12924                 ;;
12925         esac
12926 else
12927         gidsign=1
12928         echo "(I can't compile the test program--guessing unsigned.)" >&4
12929 fi
12930
12931
12932 echo " "
12933
12934 if $test X"$quadtype" != X; then
12935
12936 echo "Checking how to print 64-bit integers..." >&4
12937
12938 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12939         $cat >try.c <<'EOCP'
12940 #include <sys/types.h>
12941 #include <stdio.h>
12942 int main() {
12943   int q = 12345678901;
12944   printf("%ld\n", q);
12945 }
12946 EOCP
12947         set try
12948         if eval $compile; then
12949                 yyy=`./try$exe_ext`
12950                 case "$yyy" in
12951                 12345678901)
12952                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12953                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIXU64='"X"';
12954                         echo "We will use %d."
12955                         ;;
12956                 esac
12957         fi
12958 fi
12959
12960 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12961         $cat >try.c <<'EOCP'
12962 #include <sys/types.h>
12963 #include <stdio.h>
12964 int main() {
12965   long q = 12345678901;
12966   printf("%ld\n", q);
12967 }
12968 EOCP
12969         set try
12970         if eval $compile; then
12971                 yyy=`./try$exe_ext`
12972                 case "$yyy" in
12973                 12345678901)
12974                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12975                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIXU64='"lX"';
12976                         echo "We will use %ld."
12977                         ;;
12978                 esac
12979         fi
12980 fi
12981
12982 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12983         $cat >try.c <<'EOCP'
12984 #include <sys/types.h>
12985 #include <inttypes.h>
12986 #include <stdio.h>
12987 int main() {
12988   int64_t q = 12345678901;
12989   printf("%" PRId64 "\n", q);
12990 }
12991 EOCP
12992         set try
12993         if eval $compile; then
12994                 yyy=`./try$exe_ext`
12995                 case "$yyy" in
12996                 12345678901)
12997                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12998                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIXU64=PRIXU64;
12999                         echo "We will use the C9X style."
13000                         ;;
13001                 esac
13002         fi
13003 fi
13004
13005 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
13006         $cat >try.c <<'EOCP'
13007 #include <sys/types.h>
13008 #include <stdio.h>
13009 int main() {
13010   long long q = 12345678901LL; /* AIX cc requires the LL suffix. */
13011   printf("%lld\n", q);
13012 }
13013 EOCP
13014         set try
13015         if eval $compile; then
13016                 yyy=`./try$exe_ext`
13017                 case "$yyy" in
13018                 12345678901)
13019                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
13020                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIXU64='"llX"';
13021                         echo "We will use the %lld style."
13022                         ;;
13023                 esac
13024         fi
13025 fi
13026
13027 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13028         $cat >try.c <<EOCP
13029 #include <sys/types.h>
13030 #include <stdio.h>
13031 int main() {
13032   $quadtype q = 12345678901;
13033   printf("%Ld\n", q);
13034 }
13035 EOCP
13036         set try
13037         if eval $compile; then
13038                 yyy=`./try$exe_ext`
13039                 case "$yyy" in
13040                 12345678901)
13041                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
13042                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIXU64='"LX"';
13043                         echo "We will use %Ld."
13044                         ;;
13045                 esac
13046         fi
13047 fi
13048
13049 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
13050         $cat >try.c <<EOCP
13051 #include <sys/types.h>
13052 #include <stdio.h>
13053 int main() {
13054   $quadtype q = 12345678901;
13055   printf("%qd\n", q);
13056 }
13057 EOCP
13058         set try
13059         if eval $compile; then
13060                 yyy=`./try$exe_ext`
13061                 case "$yyy" in
13062                 12345678901)
13063                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
13064                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIXU64='"qX"';
13065                         echo "We will use %qd."
13066                         ;;
13067                 esac
13068         fi
13069 fi
13070
13071 if $test X"$sPRId64" = X; then
13072         echo "Cannot figure out how to print 64-bit integers." >&4
13073 fi
13074
13075 $rm -f try try.*
13076
13077 fi
13078
13079 case "$sPRId64" in
13080 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
13081         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIXU64="$undef"; 
13082         ;;
13083 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
13084         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIXU64="$define"; 
13085         ;;
13086 esac
13087
13088
13089 echo " "
13090 $echo "Checking the format strings to be used for Perl's internal types..." >&4
13091
13092 if $test X"$ivsize" = X8; then
13093         ivdformat="$sPRId64"
13094         uvuformat="$sPRIu64"
13095         uvoformat="$sPRIo64"
13096         uvxformat="$sPRIx64"
13097         uvXUformat="$sPRIXU64"
13098 else
13099         if $test X"$ivsize" = X"$longsize"; then
13100                 ivdformat='"ld"'
13101                 uvuformat='"lu"'
13102                 uvoformat='"lo"'
13103                 uvxformat='"lx"'
13104                 uvXUformat='"lX"'
13105         else
13106                 if $test X"$ivsize" = X"$intsize"; then
13107                         ivdformat='"d"'
13108                         uvuformat='"u"'
13109                         uvoformat='"o"'
13110                         uvxformat='"x"'
13111                         uvXUformat='"X"'
13112                 else
13113                         : far out
13114                         if $test X"$ivsize" = X"$shortsize"; then
13115                                 ivdformat='"hd"'
13116                                 uvuformat='"hu"'
13117                                 uvoformat='"ho"'
13118                                 uvxformat='"hx"'
13119                                 uvXUformat='"hX"'
13120                         fi
13121                 fi
13122         fi
13123 fi
13124
13125 if $test X"$uselongdouble" = X"$define" -a X"$d_longdbl" = X"$define" -a X"$d_PRIgldbl" = X"$define"; then
13126         nveformat="$sPRIeldbl"
13127         nvfformat="$sPRIfldbl"
13128         nvgformat="$sPRIgldbl"
13129         nvEUformat="$sPRIEUldbl"
13130         nvFUformat="$sPRIFUldbl"
13131         nvGUformat="$sPRIGUldbl"
13132 else
13133         nveformat='"e"'
13134         nvfformat='"f"'
13135         nvgformat='"g"'
13136         nvEUformat='"E"'
13137         nvFUformat='"F"'
13138         nvGUformat='"G"'
13139 fi
13140
13141 case "$ivdformat" in
13142 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
13143     exit 1
13144     ;;
13145 esac
13146
13147
13148 echo " "
13149 $echo "Checking the format string to be used for gids..." >&4
13150
13151 case "$gidsign" in
13152 -1)     if $test X"$gidsize" = X"$ivsize"; then
13153                 gidformat="$ivdformat"
13154         else
13155                 if $test X"$gidsize" = X"$longsize"; then
13156                         gidformat='"ld"'
13157                 else
13158                         if $test X"$gidsize" = X"$intsize"; then
13159                                 gidformat='"d"'
13160                         else
13161                                 if $test X"$gidsize" = X"$shortsize"; then
13162                                         gidformat='"hd"'
13163                                 fi
13164                         fi
13165                 fi
13166         fi
13167         ;;
13168 *)      if $test X"$gidsize" = X"$uvsize"; then
13169                 gidformat="$uvuformat"
13170         else
13171                 if $test X"$gidsize" = X"$longsize"; then
13172                         gidformat='"lu"'
13173                 else
13174                         if $test X"$gidsize" = X"$intsize"; then
13175                                 gidformat='"u"'
13176                         else
13177                                 if $test X"$gidsize" = X"$shortsize"; then
13178                                         gidformat='"hu"'
13179                                 fi
13180                         fi
13181                 fi
13182         fi
13183         ;;
13184 esac
13185
13186 : see if getgroups exists
13187 set getgroups d_getgrps
13188 eval $inlibc
13189
13190 : see if setgroups exists
13191 set setgroups d_setgrps
13192 eval $inlibc
13193
13194
13195 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
13196 echo " "
13197 case "$d_getgrps$d_setgrps" in
13198 *define*)
13199         case "$groupstype" in
13200         '') dflt="$gidtype" ;;
13201         *)  dflt="$groupstype" ;;
13202         esac
13203         $cat <<EOM
13204 What type of pointer is the second argument to getgroups() and setgroups()?
13205 Usually this is the same as group ids, $gidtype, but not always.
13206
13207 EOM
13208         rp='What type pointer is the second argument to getgroups() and setgroups()?'
13209         . ./myread
13210         groupstype="$ans"
13211         ;;
13212 *)  groupstype="$gidtype";;
13213 esac
13214
13215 echo " "
13216 echo "Checking if your $make program sets \$(MAKE)..." >&4
13217 case "$make_set_make" in
13218 '')
13219         $sed 's/^X //' > testmake.mak << 'EOF'
13220 Xall:
13221 X       @echo 'maketemp="$(MAKE)"'
13222 EOF
13223         case "`$make -f testmake.mak 2>/dev/null`" in
13224         *maketemp=*) make_set_make='#' ;;
13225         *)      make_set_make="MAKE=$make" ;;
13226         esac
13227         $rm -f testmake.mak
13228         ;;
13229 esac
13230 case "$make_set_make" in
13231 '#') echo "Yup, it does.";;
13232 *) echo "Nope, it doesn't.";;
13233 esac
13234
13235 : see what type is used for mode_t
13236 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
13237 set mode_t modetype int stdio.h sys/types.h
13238 eval $typedef_ask
13239
13240 : define a fucntion to check prototypes
13241 $cat > protochk <<EOSH
13242 $startsh
13243 cc="$cc"
13244 optimize="$optimize"
13245 ccflags="$ccflags"
13246 prototype="$prototype"
13247 define="$define"
13248 rm=$rm
13249 EOSH
13250
13251 $cat >> protochk <<'EOSH'
13252
13253 $rm -f try.c
13254 foo="$1"
13255 shift
13256 while test $# -ge 2; do
13257         case "$1" in
13258                 $define) echo "#include <$2>" >> try.c ;;
13259                 literal) echo "$2" >> try.c ;;
13260         esac
13261     shift 2
13262 done
13263 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
13264 cat >> try.c <<'EOCP'
13265 #ifdef CAN_PROTOTYPE
13266 #define _(args) args
13267 #else
13268 #define _(args) ()
13269 #endif
13270 EOCP
13271 echo "$foo" >> try.c
13272 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
13273 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
13274 status=$?
13275 $rm -f try.[co]
13276 exit $status
13277 EOSH
13278 chmod +x protochk
13279 $eunicefix protochk
13280
13281 : see what type is used for size_t
13282 rp="What is the type used for the length parameter for string functions?"
13283 set size_t sizetype 'unsigned int' stdio.h sys/types.h
13284 eval $typedef_ask
13285
13286 : check for type of arguments to gethostbyaddr. 
13287 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
13288         case "$d_gethbyaddr" in
13289         $define)
13290                 $cat <<EOM
13291
13292 Checking to see what type of arguments are accepted by gethostbyaddr().
13293 EOM
13294                 hdrs="$define sys/types.h
13295                         $d_socket sys/socket.h 
13296                         $i_niin netinet/in.h 
13297                         $i_netdb netdb.h
13298                         $i_unistd unistd.h"
13299                 : The first arg can 'char *' or 'void *'
13300                 : The second arg is some of integral type
13301                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
13302                         for yyy in size_t long int; do
13303                                 case "$netdb_host_type" in
13304                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
13305                                         if ./protochk "$try" $hdrs; then
13306                                                 echo "Your system accepts $xxx for the first arg."
13307                                                 echo "...and $yyy for the second arg."
13308                                                 netdb_host_type="$xxx"
13309                                                 netdb_hlen_type="$yyy"
13310                                         fi
13311                                         ;;
13312                                 esac
13313                         done
13314                 done
13315                 : In case none of those worked, prompt the user.
13316                 case "$netdb_host_type" in
13317                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
13318                         dflt='char *'
13319                         . ./myread
13320                         netdb_host_type=$ans
13321                         rp='What is the type for the 2nd argument to gethostbyaddr?'
13322                         dflt="$sizetype"
13323                         . ./myread
13324                         netdb_hlen_type=$ans
13325                         ;;
13326                 esac
13327                 ;;
13328         *)      : no gethostbyaddr, so pick harmless defaults
13329                 netdb_host_type='char *'
13330                 netdb_hlen_type="$sizetype"
13331                 ;;
13332         esac
13333         # Remove the "const" if needed. -- but then we'll have a 
13334         # prototype clash!
13335         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
13336 fi
13337
13338 : check for type of argument to gethostbyname. 
13339 if test "X$netdb_name_type" = X ; then
13340         case "$d_gethbyname" in
13341         $define)
13342                 $cat <<EOM
13343
13344 Checking to see what type of argument is accepted by gethostbyname().
13345 EOM
13346                 hdrs="$define sys/types.h
13347                         $d_socket sys/socket.h 
13348                         $i_niin netinet/in.h 
13349                         $i_netdb netdb.h
13350                         $i_unistd unistd.h"
13351                 for xxx in "const char *" "char *"; do
13352                         case "$netdb_name_type" in
13353                         '')     try="extern struct hostent *gethostbyname($xxx);"
13354                                 if ./protochk "$try" $hdrs; then
13355                                         echo "Your system accepts $xxx."
13356                                         netdb_name_type="$xxx"
13357                                 fi
13358                                 ;;
13359                         esac
13360                 done
13361                 : In case none of those worked, prompt the user.
13362                 case "$netdb_name_type" in
13363                 '')     rp='What is the type for the 1st argument to gethostbyname?'
13364                         dflt='char *'
13365                         . ./myread
13366                         netdb_name_type=$ans
13367                         ;;
13368                 esac
13369                 ;;
13370         *)      : no gethostbyname, so pick harmless default
13371                 netdb_name_type='char *'
13372                 ;;
13373         esac
13374 fi
13375
13376 : check for type of 1st argument to getnetbyaddr. 
13377 if test "X$netdb_net_type" = X ; then
13378         case "$d_getnbyaddr" in
13379         $define)
13380                 $cat <<EOM
13381
13382 Checking to see what type of 1st argument is accepted by getnetbyaddr().
13383 EOM
13384                 hdrs="$define sys/types.h
13385                         $d_socket sys/socket.h 
13386                         $i_niin netinet/in.h 
13387                         $i_netdb netdb.h
13388                         $i_unistd unistd.h"
13389                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
13390                         case "$netdb_net_type" in
13391                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
13392                                 if ./protochk "$try" $hdrs; then
13393                                         echo "Your system accepts $xxx."
13394                                         netdb_net_type="$xxx"
13395                                 fi
13396                                 ;;
13397                         esac
13398                 done
13399                 : In case none of those worked, prompt the user.
13400                 case "$netdb_net_type" in
13401                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
13402                         dflt='long'
13403                         . ./myread
13404                         netdb_net_type=$ans
13405                         ;;
13406                 esac
13407                 ;;
13408         *)      : no getnetbyaddr, so pick harmless default
13409                 netdb_net_type='long'
13410                 ;;
13411         esac
13412 fi
13413 : locate the preferred pager for this system
13414 case "$pager" in
13415 '')
13416         dflt=''
13417         case "$pg" in
13418         /*) dflt=$pg;;
13419         [a-zA-Z]:/*) dflt=$pg;;
13420         esac
13421         case "$more" in
13422         /*) dflt=$more;;
13423         [a-zA-Z]:/*) dflt=$more;;
13424         esac
13425         case "$less" in
13426         /*) dflt=$less;;
13427         [a-zA-Z]:/*) dflt=$less;;
13428         esac
13429         case "$dflt" in
13430         '') dflt=/usr/ucb/more;;
13431         esac
13432         ;;
13433 *) dflt="$pager";;
13434 esac
13435 echo " "
13436 fn=f/
13437 rp='What pager is used on your system?'
13438 . ./getfile
13439 pager="$ans"
13440
13441 : see what type pids are declared as in the kernel
13442 rp="What is the type of process ids on this system?"
13443 set pid_t pidtype int stdio.h sys/types.h
13444 eval $typedef_ask
13445
13446 : Find earliest binary compatible site_perl subdirectory perl can use.
13447 case "$bincompat5005" in
13448 "$define") xs_apiversion='5.005' ;;
13449 *) xs_apiversion=$version ;;   # The current site_perl version.
13450 esac
13451 : Find earliest pure perl site_perl subdirectory perl can use.
13452 : The versioned directories started at 5.005.
13453 pm_apiversion='5.005'
13454
13455 : check for length of pointer
13456 echo " "
13457 case "$ptrsize" in
13458 '')
13459         echo "Checking to see how big your pointers are..." >&4
13460         if test "$voidflags" -gt 7; then
13461                 echo '#define VOID_PTR char *' > try.c
13462         else
13463                 echo '#define VOID_PTR void *' > try.c
13464         fi
13465         $cat >>try.c <<'EOCP'
13466 #include <stdio.h>
13467 int main()
13468 {
13469     printf("%d\n", (int)sizeof(VOID_PTR));
13470     exit(0);
13471 }
13472 EOCP
13473         set try
13474         if eval $compile_ok; then
13475                 ptrsize=`./try`
13476                 echo "Your pointers are $ptrsize bytes long."
13477         else
13478                 dflt='4'
13479                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
13480                 rp="What is the size of a pointer (in bytes)?"
13481                 . ./myread
13482                 ptrsize="$ans"
13483         fi
13484         ;;
13485 esac
13486 $rm -f try.c try
13487
13488 : see if ar generates random libraries by itself
13489 echo " "
13490 echo "Checking how to generate random libraries on your machine..." >&4
13491 echo 'int bar1() { return bar2(); }' > bar1.c
13492 echo 'int bar2() { return 2; }' > bar2.c
13493 $cat > foo.c <<'EOP'
13494 int main() { printf("%d\n", bar1()); exit(0); }
13495 EOP
13496 $cc $ccflags -c bar1.c >/dev/null 2>&1
13497 $cc $ccflags -c bar2.c >/dev/null 2>&1
13498 $cc $ccflags -c foo.c >/dev/null 2>&1
13499 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
13500 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13501         ./foobar >/dev/null 2>&1; then
13502         echo "$ar appears to generate random libraries itself."
13503         orderlib=false
13504         ranlib=":"
13505 elif $ar ts bar$_a >/dev/null 2>&1 &&
13506         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
13507         ./foobar >/dev/null 2>&1; then
13508                 echo "a table of contents needs to be added with '$ar ts'."
13509                 orderlib=false
13510                 ranlib="$ar ts"
13511 else
13512         case "$ranlib" in
13513         :) ranlib='';;
13514         '')
13515                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
13516                 $test -f $ranlib || ranlib=''
13517                 ;;
13518         esac
13519         if $test -n "$ranlib"; then
13520                 echo "your system has '$ranlib'; we'll use that."
13521                 orderlib=false
13522         else
13523                 echo "your system doesn't seem to support random libraries"
13524                 echo "so we'll use lorder and tsort to order the libraries."
13525                 orderlib=true
13526                 ranlib=":"
13527         fi
13528 fi
13529 $rm -f foo* bar* 
13530
13531 : check for type of arguments to select. 
13532 case "$selecttype" in
13533 '') case "$d_select" in
13534         $define)
13535                 echo " "
13536                 $cat <<EOM
13537 Checking to see what type of arguments are accepted by select().
13538 EOM
13539                 hdrs="$define sys/types.h
13540                         $i_systime sys/time.h 
13541                         $i_sysselct sys/select.h
13542                         $d_socket sys/socket.h"
13543                 : The first arg can be int, unsigned, or size_t
13544                 : The last arg may or may not be 'const'
13545                 val=''
13546                 : void pointer has been seen but using that
13547                 : breaks the selectminbits test
13548                 for xxx in 'fd_set *' 'int *'; do
13549                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
13550                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
13551                                         case "$val" in
13552                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
13553                                                 if ./protochk "$try" $hdrs; then
13554                                                         echo "Your system accepts $xxx."
13555                                                         val="$xxx"
13556                                                 fi
13557                                                 ;;
13558                                         esac
13559                                 done
13560                         done
13561                 done
13562                 case "$val" in
13563                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
13564                         case "$d_fd_set" in
13565                                 $define) dflt="fd_set *" ;;
13566                                 *)              dflt="int *" ;;
13567                         esac
13568                         . ./myread
13569                         val=$ans
13570                         ;;
13571                 esac
13572                 selecttype="$val"
13573                 ;;
13574         *)      : no select, so pick a harmless default
13575                 selecttype='int *'
13576                 ;;
13577         esac
13578         ;;
13579 esac
13580
13581 : check for the select 'width'
13582 case "$selectminbits" in
13583 '') case "$d_select" in
13584         $define)
13585                 $cat <<EOM
13586
13587 Checking to see on how many bits at a time your select() operates...
13588 EOM
13589                 $cat >try.c <<EOCP
13590 #include <sys/types.h>
13591 #$i_time I_TIME
13592 #$i_systime I_SYS_TIME
13593 #$i_systimek I_SYS_TIME_KERNEL
13594 #ifdef I_TIME
13595 #   include <time.h>
13596 #endif
13597 #ifdef I_SYS_TIME
13598 #   ifdef I_SYS_TIME_KERNEL
13599 #       define KERNEL
13600 #   endif
13601 #   include <sys/time.h>
13602 #   ifdef I_SYS_TIME_KERNEL
13603 #       undef KERNEL
13604 #   endif
13605 #endif
13606 #$i_sysselct I_SYS_SELECT
13607 #ifdef I_SYS_SELECT
13608 #include <sys/select.h>
13609 #endif
13610 #$d_socket HAS_SOCKET
13611 #ifdef HAS_SOCKET
13612 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
13613 #endif
13614 #include <stdio.h>
13615 $selecttype b;
13616 #define S sizeof(*(b))
13617 #define MINBITS 64
13618 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
13619 #define NBITS  (NBYTES * 8)
13620 int main() {
13621     char s[NBYTES];
13622     struct timeval t;
13623     int i;
13624     FILE* fp;
13625     int fd;
13626
13627     fclose(stdin);
13628     fp = fopen("try.c", "r");
13629     if (fp == 0)
13630       exit(1);
13631     fd = fileno(fp);
13632     if (fd < 0)
13633       exit(2);
13634     b = ($selecttype)s;
13635     for (i = 0; i < NBITS; i++)
13636         FD_SET(i, b);
13637     t.tv_sec  = 0;
13638     t.tv_usec = 0;
13639     select(fd + 1, b, 0, 0, &t);
13640     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13641     printf("%d\n", i + 1);
13642     return 0;
13643 }
13644 EOCP
13645                 set try
13646                 if eval $compile_ok; then
13647                         selectminbits=`./try`
13648                         case "$selectminbits" in
13649                         '')     cat >&4 <<EOM
13650 Cannot figure out on how many bits at a time your select() operates.
13651 I'll play safe and guess it is 32 bits.
13652 EOM
13653                                 selectminbits=32
13654                                 bits="32 bits"
13655                                 ;;
13656                         1)      bits="1 bit" ;;
13657                         *)      bits="$selectminbits bits" ;;
13658                         esac
13659                         echo "Your select() operates on $bits at a time." >&4
13660                 else
13661                         rp='What is the minimum number of bits your select() operates on?'
13662                         case "$byteorder" in
13663                         1234|12345678)  dflt=32 ;;
13664                         *)              dflt=1  ;;
13665                         esac
13666                         . ./myread
13667                         val=$ans
13668                         selectminbits="$val"
13669                 fi
13670                 $rm -f try.* try
13671                 ;;
13672         *)      : no select, so pick a harmless default
13673                 selectminbits='32'
13674                 ;;
13675         esac
13676         ;;
13677 esac
13678
13679 : Trace out the files included by signal.h, then look for SIGxxx names.
13680 : Remove SIGARRAYSIZE used by HPUX.
13681 : Remove SIGSTKSIZE used by Linux.
13682 : Remove SIGSTKSZ used by Posix.
13683 : Remove SIGTYP void lines used by OS2.
13684 : Some cpps, like os390, dont give the file name anywhere
13685 if [ "X$fieldn" = X ]; then
13686         : Just make some guesses.  We check them later.
13687         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13688 else
13689         xxx=`echo '#include <signal.h>' |
13690         $cppstdin $cppminus $cppflags 2>/dev/null |
13691         $grep '^[       ]*#.*include' | 
13692         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13693 fi
13694 : Check this list of files to be sure we have parsed the cpp output ok.
13695 : This will also avoid potentially non-existent files, such 
13696 : as ../foo/bar.h
13697 xxxfiles=''
13698 for xx in $xxx /dev/null ; do
13699         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13700 done
13701 : If we have found no files, at least try signal.h
13702 case "$xxxfiles" in
13703 '')     xxxfiles=`./findhdr signal.h` ;;
13704 esac
13705 xxx=`awk '
13706 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13707         print substr($2, 4, 20)
13708 }
13709 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13710         print substr($3, 4, 20)
13711 }' $xxxfiles`
13712 : Append some common names just in case the awk scan failed.
13713 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13714 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13715 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13716 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13717 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13718
13719 : generate a few handy files for later
13720 $cat > signal.c <<'EOCP'
13721 #include <sys/types.h>
13722 #include <signal.h>
13723 #include <stdio.h>
13724 int main() {
13725
13726 /* Strange style to avoid deeply-nested #if/#else/#endif */
13727 #ifndef NSIG
13728 #  ifdef _NSIG
13729 #    define NSIG (_NSIG)
13730 #  endif
13731 #endif
13732
13733 #ifndef NSIG
13734 #  ifdef SIGMAX
13735 #    define NSIG (SIGMAX+1)
13736 #  endif
13737 #endif
13738
13739 #ifndef NSIG
13740 #  ifdef SIG_MAX
13741 #    define NSIG (SIG_MAX+1)
13742 #  endif
13743 #endif
13744
13745 #ifndef NSIG
13746 #  ifdef MAXSIG
13747 #    define NSIG (MAXSIG+1)
13748 #  endif
13749 #endif
13750
13751 #ifndef NSIG
13752 #  ifdef MAX_SIG
13753 #    define NSIG (MAX_SIG+1)
13754 #  endif
13755 #endif
13756
13757 #ifndef NSIG
13758 #  ifdef SIGARRAYSIZE
13759 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13760 #  endif
13761 #endif
13762
13763 #ifndef NSIG
13764 #  ifdef _sys_nsig
13765 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13766 #  endif
13767 #endif
13768
13769 /* Default to some arbitrary number that's big enough to get most
13770    of the common signals.
13771 */
13772 #ifndef NSIG
13773 #    define NSIG 50
13774 #endif
13775
13776 printf("NSIG %d\n", NSIG);
13777
13778 #ifndef JUST_NSIG
13779
13780 EOCP
13781
13782 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13783 {
13784         printf "#ifdef SIG"; printf $1; printf "\n"
13785         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13786         printf $1; printf ");\n"
13787         printf "#endif\n"
13788 }
13789 END {
13790         printf "#endif /* JUST_NSIG */\n";
13791         printf "exit(0);\n}\n";
13792 }
13793 ' >>signal.c
13794 $cat >signal.awk <<'EOP'
13795 BEGIN { ndups = 0 }
13796 $1 ~ /^NSIG$/ { nsig = $2 }
13797 ($1 !~ /^NSIG$/) && (NF == 2) {
13798     if ($2 > maxsig) { maxsig = $2 }
13799     if (sig_name[$2]) {
13800         dup_name[ndups] = $1
13801         dup_num[ndups] = $2
13802         ndups++ 
13803     }
13804     else {
13805         sig_name[$2] = $1
13806         sig_num[$2] = $2
13807     }
13808 }
13809 END { 
13810     if (nsig == 0) {
13811         nsig = maxsig + 1
13812     }
13813     printf("NSIG %d\n", nsig);
13814     for (n = 1; n < nsig; n++) {
13815         if (sig_name[n]) {
13816             printf("%s %d\n", sig_name[n], sig_num[n])
13817         }
13818         else {
13819             printf("NUM%d %d\n", n, n) 
13820         }
13821     }
13822     for (n = 0; n < ndups; n++) {
13823         printf("%s %d\n", dup_name[n], dup_num[n])
13824     }
13825 }
13826 EOP
13827 $cat >signal_cmd <<EOS
13828 $startsh
13829 if $test -s signal.lst; then
13830     echo "Using your existing signal.lst file"
13831         exit 0
13832 fi
13833 xxx="$xxx"
13834 EOS
13835 $cat >>signal_cmd <<'EOS'
13836
13837 set signal
13838 if eval $compile_ok; then
13839         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13840 else
13841         echo "(I can't seem be able to compile the whole test program)" >&4
13842         echo "(I'll try it in little pieces.)" >&4
13843         set signal -DJUST_NSIG
13844         if eval $compile_ok; then
13845                 ./signal$_exe > signal.nsg
13846                 $cat signal.nsg
13847         else
13848                 echo "I can't seem to figure out how many signals you have." >&4
13849                 echo "Guessing 50." >&4
13850                 echo 'NSIG 50' > signal.nsg
13851         fi
13852         : Now look at all the signal names, one at a time.
13853         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13854                 $cat > signal.c <<EOCP
13855 #include <sys/types.h>
13856 #include <signal.h>
13857 #include <stdio.h>
13858 int main() {
13859 printf("$xx %d\n", SIG${xx});
13860 return 0;
13861 }
13862 EOCP
13863                 set signal
13864                 if eval $compile; then
13865                         echo "SIG${xx} found."
13866                         ./signal$_exe  >> signal.ls1
13867                 else
13868                         echo "SIG${xx} NOT found."
13869                 fi
13870         done
13871         if $test -s signal.ls1; then
13872                 $cat signal.nsg signal.ls1 |
13873                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13874         fi
13875
13876 fi
13877 if $test -s signal.lst; then
13878         :
13879 else
13880         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13881         echo 'kill -l' >signal
13882         set X `csh -f <signal`
13883         $rm -f signal
13884         shift
13885         case $# in
13886         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13887         esac
13888         echo $@ | $tr ' ' $trnl | \
13889             $awk '{ printf "%s %d\n", $1, ++s; }
13890                   END { printf "NSIG %d\n", ++s }' >signal.lst
13891 fi
13892 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13893 EOS
13894 chmod a+x signal_cmd
13895 $eunicefix signal_cmd
13896
13897 : generate list of signal names
13898 echo " "
13899 case "$sig_name_init" in
13900 '') doinit=yes ;;
13901 *)  case "$sig_num_init" in
13902     ''|*,*) doinit=yes ;;
13903     esac ;;
13904 esac
13905 case "$doinit" in
13906 yes)
13907         echo "Generating a list of signal names and numbers..." >&4
13908         . ./signal_cmd
13909         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13910         sig_name=`$awk 'BEGIN { printf "ZERO " }
13911                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13912         sig_num=`$awk  'BEGIN { printf "0 " }
13913                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13914         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13915                              !/^NSIG/   { printf "\"%s\", ", $1 }
13916                              END        { printf "0\n" }' signal.lst`
13917         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13918                              !/^NSIG/   { printf "%d, ", $2}
13919                              END        { printf "0\n"}' signal.lst`
13920         ;;
13921 esac
13922 echo "The following $sig_count signals are available:"
13923 echo " "
13924 echo $sig_name | $awk \
13925 'BEGIN { linelen = 0 }
13926 {
13927         for (i = 1; i <= NF; i++) {
13928                 name = "SIG" $i " "
13929                 linelen = linelen + length(name)
13930                 if (linelen > 70) {
13931                         printf "\n"
13932                         linelen = length(name)
13933                 }
13934                 printf "%s", name
13935         }
13936         printf "\n"
13937 }'
13938 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13939
13940 echo " "
13941 case "$sizetype" in
13942 *_t) zzz="$sizetype"    ;;
13943 *)   zzz="filesize"     ;;
13944 esac
13945 echo "Checking the size of $zzz..." >&4 
13946 cat > try.c <<EOCP
13947 #include <sys/types.h>
13948 #include <stdio.h>
13949 int main() {
13950     printf("%d\n", (int)sizeof($sizetype));
13951     exit(0);
13952 }
13953 EOCP
13954 set try
13955 if eval $compile_ok; then
13956         yyy=`./try`
13957         case "$yyy" in
13958         '')     sizesize=4
13959                 echo "(I can't execute the test program--guessing $sizesize.)" >&4
13960                 ;;
13961         *)      sizesize=$yyy
13962                 echo "Your $zzz size is $sizesize bytes."
13963                 ;;
13964         esac
13965 else
13966         sizesize=4
13967         echo "(I can't compile the test program--guessing $sizesize.)" >&4
13968 fi
13969
13970
13971 : check for socklen_t
13972 echo " "
13973 echo "Checking to see if you have socklen_t..." >&4
13974 $cat >try.c <<EOCP
13975 #include <sys/types.h>
13976 #$d_socket HAS_SOCKET
13977 #ifdef HAS_SOCKET
13978 #include <sys/socket.h>
13979 #endif
13980 int main() { socklen_t x = 16; }
13981 EOCP
13982 set try
13983 if eval $compile; then
13984         val="$define"
13985         echo "You have socklen_t."
13986 else
13987         val="$undef"
13988         echo "You do not have socklen_t."
13989         case "$sizetype" in
13990         size_t) echo "(You do have size_t, that might work. Some people are happy with just an int.)" ;;
13991         esac
13992 fi
13993 $rm -f try try.*
13994 set d_socklen_t
13995 eval $setvar
13996
13997 : check for type of the size argument to socket calls
13998 case "$d_socket" in
13999 "$define")
14000         $cat <<EOM
14001
14002 Checking to see what type is the last argument of accept().
14003 EOM
14004         hdrs="$define sys/types.h $d_socket sys/socket.h" 
14005         yyy=''
14006         case "$d_socklen_t" in
14007         "$define") yyy="$yyy socklen_t"
14008         esac
14009         yyy="$yyy $sizetype int long unsigned"
14010         for xxx in $yyy; do
14011                 case "$socksizetype" in
14012                 '')     try="extern int accept(int, struct sockaddr *, $xxx *);"
14013                         if ./protochk "$try" $hdrs; then
14014                                 echo "Your system accepts '$xxx *' for the last argument of accept()."
14015                                 socksizetype="$xxx"
14016                         fi
14017                         ;;
14018                 esac
14019         done
14020 : In case none of those worked, prompt the user.
14021         case "$socksizetype" in
14022         '')     rp='What is the type for socket address structure sizes?'
14023                 dflt='int'
14024                 . ./myread
14025                 socksizetype=$ans
14026                 ;;
14027         esac
14028         ;;
14029 *)      : no sockets, so pick relatively harmless default
14030         socksizetype='int'
14031         ;;
14032 esac
14033
14034 : see what type is used for signed size_t
14035 set ssize_t ssizetype int stdio.h sys/types.h
14036 eval $typedef
14037 dflt="$ssizetype"
14038 $cat > ssize.c <<EOM
14039 #include <stdio.h>
14040 #include <sys/types.h>
14041 #define Size_t $sizetype
14042 #define SSize_t $dflt
14043 int main()
14044 {
14045         if (sizeof(Size_t) == sizeof(SSize_t))
14046                 printf("$dflt\n");
14047         else if (sizeof(Size_t) == sizeof(int))
14048                 printf("int\n");
14049         else 
14050                 printf("long\n");
14051         exit(0);
14052 }
14053 EOM
14054 echo " "
14055 set ssize
14056 if eval $compile_ok && ./ssize > /dev/null; then
14057         ssizetype=`./ssize`
14058         echo "I'll be using $ssizetype for functions returning a byte count." >&4
14059 else
14060         $cat >&4 <<EOM
14061 Help! I can't compile and run the ssize_t test program: please enlighten me!
14062 (This is probably a misconfiguration in your system or libraries, and
14063 you really ought to fix it.  Still, I'll try anyway.)
14064
14065 I need a type that is the same size as $sizetype, but is guaranteed to
14066 be signed.  Common values are ssize_t, int and long.
14067
14068 EOM
14069         rp="What signed type is the same size as $sizetype?"
14070         . ./myread
14071         ssizetype="$ans"
14072 fi
14073 $rm -f ssize ssize.*
14074
14075 : see what type of char stdio uses.
14076 echo " "
14077 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
14078         echo "Your stdio uses unsigned chars." >&4
14079         stdchar="unsigned char"
14080 else
14081         echo "Your stdio uses signed chars." >&4
14082         stdchar="char"
14083 fi
14084
14085 : see if time exists
14086 echo " "
14087 if test "X$d_time" = X -o X"$timetype" = X; then
14088     if set time val -f d_time; eval $csym; $val; then
14089                 echo 'time() found.' >&4
14090                 val="$define"
14091                 rp="What is the type returned by time() on this system?"
14092                 set time_t timetype long stdio.h sys/types.h
14093                 eval $typedef_ask
14094     else
14095                 echo 'time() not found, hope that will do.' >&4
14096                 val="$undef"
14097                 timetype='int';
14098     fi
14099     set d_time
14100     eval $setvar
14101 fi
14102
14103 : see what type uids are declared as in the kernel
14104 echo " "
14105 echo "Looking for the type for user ids returned by getuid()."
14106 set uid_t uidtype xxx stdio.h sys/types.h
14107 eval $typedef
14108 case "$uidtype" in
14109 xxx)
14110         xxx=`./findhdr sys/user.h`
14111         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
14112         case $1 in
14113         unsigned) dflt="$1 $2" ;;
14114         *) dflt="$1" ;;
14115         esac
14116         ;;
14117 *) dflt="$uidtype";;
14118 esac
14119 case "$uidtype" in
14120 uid_t)  echo "uid_t found." ;;
14121 *)      rp="What is the type for user ids returned by getuid()?"
14122         . ./myread
14123         uidtype="$ans"
14124         ;;
14125 esac
14126
14127 echo " "
14128 case "$uidtype" in
14129 *_t) zzz="$uidtype"     ;;
14130 *)   zzz="uid"          ;;
14131 esac
14132 echo "Checking the size of $zzz..." >&4 
14133 cat > try.c <<EOCP
14134 #include <sys/types.h>
14135 #include <stdio.h>
14136 int main() {
14137     printf("%d\n", (int)sizeof($uidtype));
14138     exit(0);
14139 }
14140 EOCP
14141 set try
14142 if eval $compile_ok; then
14143         yyy=`./try`
14144         case "$yyy" in
14145         '')     uidsize=4
14146                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
14147                 ;;
14148         *)      uidsize=$yyy
14149                 echo "Your $zzz is $uidsize bytes long."
14150                 ;;
14151         esac
14152 else
14153         uidsize=4
14154         echo "(I can't compile the test program--guessing $uidsize.)" >&4
14155 fi
14156
14157 echo " "
14158 case "$uidtype" in
14159 *_t) zzz="$uidtype"     ;;
14160 *)   zzz="uid"          ;;
14161 esac
14162 echo "Checking the sign of $zzz..." >&4
14163 cat > try.c <<EOCP
14164 #include <sys/types.h>
14165 #include <stdio.h>
14166 int main() {
14167         $uidtype foo = -1;
14168         if (foo < 0)
14169                 printf("-1\n");
14170         else
14171                 printf("1\n");
14172 }
14173 EOCP
14174 set try
14175 if eval $compile; then
14176         yyy=`./try`
14177         case "$yyy" in
14178         '')     uidsign=1
14179                 echo "(I can't execute the test program--guessing unsigned.)" >&4
14180                 ;;
14181         *)      uidsign=$yyy
14182                 case "$uidsign" in
14183                  1) echo "Your $zzz is unsigned." ;;
14184                 -1) echo "Your $zzz is signed."   ;;
14185                 esac
14186                 ;;
14187         esac
14188 else
14189         uidsign=1
14190         echo "(I can't compile the test program--guessing unsigned.)" >&4
14191 fi
14192
14193
14194
14195 echo " "
14196 $echo "Checking the format string to be used for uids..." >&4
14197
14198 case "$uidsign" in
14199 -1)     if $test X"$uidsize" = X"$ivsize"; then
14200                 uidformat="$ivdformat"
14201         else
14202                 if $test X"$uidsize" = X"$longsize"; then
14203                         uidformat='"ld"'
14204                 else
14205                         if $test X"$uidsize" = X"$intsize"; then
14206                                 uidformat='"d"'
14207                         else
14208                                 if $test X"$uidsize" = X"$shortsize"; then
14209                                         uidformat='"hd"'
14210                                 fi
14211                         fi
14212                 fi
14213         fi
14214         ;;
14215 *)      if $test X"$uidsize" = X"$uvsize"; then
14216                 uidformat="$uvuformat"
14217         else
14218                 if $test X"$uidsize" = X"$longsize"; then
14219                         uidformat='"lu"'
14220                 else
14221                         if $test X"$uidsize" = X"$intsize"; then
14222                                 uidformat='"u"'
14223                         else
14224                                 if $test X"$uidsize" = X"$shortsize"; then
14225                                         uidformat='"hu"'
14226                                 fi
14227                         fi
14228                 fi
14229         fi
14230         ;;
14231 esac
14232
14233 : see if dbm.h is available
14234 : see if dbmclose exists
14235 set dbmclose d_dbmclose
14236 eval $inlibc
14237
14238 case "$d_dbmclose" in
14239 $define)
14240         set dbm.h i_dbm
14241         eval $inhdr
14242         case "$i_dbm" in
14243         $define)
14244                 val="$undef"
14245                 set i_rpcsvcdbm
14246                 eval $setvar
14247                 ;;
14248         *)      set rpcsvc/dbm.h i_rpcsvcdbm
14249                 eval $inhdr
14250                 ;;
14251         esac
14252         ;;
14253 *)      echo "We won't be including <dbm.h>"
14254         val="$undef"
14255         set i_dbm
14256         eval $setvar
14257         val="$undef"
14258         set i_rpcsvcdbm
14259         eval $setvar
14260         ;;
14261 esac
14262
14263 : see if this is a sys/file.h system
14264 val=''
14265 set sys/file.h val
14266 eval $inhdr
14267
14268 : do we need to include sys/file.h ?
14269 case "$val" in
14270 "$define")
14271         echo " "
14272         if $h_sysfile; then
14273                 val="$define"
14274                 echo "We'll be including <sys/file.h>." >&4
14275         else
14276                 val="$undef"
14277                 echo "We won't be including <sys/file.h>." >&4
14278         fi
14279         ;;
14280 *)
14281         h_sysfile=false
14282         ;;
14283 esac
14284 set i_sysfile
14285 eval $setvar
14286
14287 : see if fcntl.h is there
14288 val=''
14289 set fcntl.h val
14290 eval $inhdr
14291
14292 : see if we can include fcntl.h
14293 case "$val" in
14294 "$define")
14295         echo " "
14296         if $h_fcntl; then
14297                 val="$define"
14298                 echo "We'll be including <fcntl.h>." >&4
14299         else
14300                 val="$undef"
14301                 if $h_sysfile; then
14302         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
14303                 else
14304                         echo "We won't be including <fcntl.h>." >&4
14305                 fi
14306         fi
14307         ;;
14308 *)
14309         h_fcntl=false
14310         val="$undef"
14311         ;;
14312 esac
14313 set i_fcntl
14314 eval $setvar
14315
14316 : see if this is a iconv.h system
14317 set iconv.h i_iconv
14318 eval $inhdr
14319
14320 : see if this is a ieeefp.h system
14321 set ieeefp.h i_ieeefp
14322 eval $inhdr
14323
14324 : see if this is a libutil.h system
14325 set libutil.h i_libutil
14326 eval $inhdr
14327
14328 : see if locale.h is available
14329 set locale.h i_locale
14330 eval $inhdr
14331
14332 : see if mach cthreads are available
14333 if test "X$usethreads" = "X$define"; then
14334         set mach/cthreads.h i_machcthr
14335         eval $inhdr
14336 else
14337         i_machcthr="$undef"
14338 fi
14339
14340
14341
14342 : see if this is a math.h system
14343 set math.h i_math
14344 eval $inhdr
14345
14346 : see if this is a mntent.h system
14347 set mntent.h i_mntent
14348 eval $inhdr
14349
14350 : see if ndbm.h is available
14351 set ndbm.h t_ndbm
14352 eval $inhdr
14353 case "$t_ndbm" in
14354 $define)
14355         : see if dbm_open exists
14356         set dbm_open d_dbm_open
14357         eval $inlibc
14358         case "$d_dbm_open" in
14359         $undef)
14360                 t_ndbm="$undef"
14361                 echo "We won't be including <ndbm.h>"
14362                 ;;
14363         esac
14364         ;;
14365 esac
14366 val="$t_ndbm"
14367 set i_ndbm
14368 eval $setvar
14369
14370 : see if net/errno.h is available
14371 val=''
14372 set net/errno.h val
14373 eval $inhdr
14374
14375 : Unfortunately, it causes problems on some systems.  Arrgh.
14376 case "$val" in
14377 $define)
14378         cat > try.c <<'EOM'
14379 #include <stdio.h>
14380 #include <errno.h>
14381 #include <net/errno.h>
14382 int func()
14383 {
14384         return ENOTSOCK;
14385 }
14386 EOM
14387         if $cc $ccflags -c try.c >/dev/null 2>&1; then
14388                 echo "We'll be including <net/errno.h>." >&4
14389         else
14390                 echo "We won't be including <net/errno.h>." >&4
14391                 val="$undef"
14392         fi
14393         $rm -f try.* try
14394         ;;
14395 esac
14396 set i_neterrno
14397 eval $setvar
14398
14399 : see if netinet/tcp.h is available
14400 set netinet/tcp.h i_netinettcp
14401 eval $inhdr
14402
14403 : see if this is a poll.h system
14404 set poll.h i_poll
14405 eval $inhdr
14406
14407 : see if this is a prot.h system
14408 set prot.h i_prot
14409 eval $inhdr
14410
14411 echo " "
14412 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
14413 $cat <<'EOSH' > Cppsym.know
14414 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
14415 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
14416 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
14417 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
14418 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
14419 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
14420 bull c cadmus clipper CMU COFF COMPILER_VERSION
14421 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
14422 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
14423 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
14424 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
14425 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
14426 H3050R H3050RX hbullx20 hcx host_mips
14427 hp200 hp300 hp700 HP700 hp800 hp9000
14428 hp9000s200 hp9000s300 hp9000s400 hp9000s500
14429 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
14430 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
14431 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
14432 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
14433 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
14434 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
14435 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
14436 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
14437 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
14438 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
14439 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
14440 MATH_HAS_NO_SIDE_EFFECTS
14441 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
14442 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
14443 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
14444 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
14445 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
14446 NetBSD news1500 news1700 news1800 news1900 news3700
14447 news700 news800 news900 NeXT NLS ns16000 ns32000
14448 ns32016 ns32332 ns32k nsc32000
14449 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
14450 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
14451 pc532 pdp11 PGC PIC plexus PORTAR posix
14452 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
14453 POSIX_C_SOURCE POSIX_SOURCE POWER
14454 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
14455 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
14456 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
14457 sony sony_news sonyrisc sparc sparclite spectrum
14458 stardent stdc STDC_EXT stratos sun sun3 sun386
14459 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
14460 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
14461 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
14462 sysV68 sysV88 Tek4132 Tek4300 titan
14463 tower tower32 tower32_200 tower32_600 tower32_700
14464 tower32_800 tower32_850 tss
14465 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
14466 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
14467 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
14468 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
14469 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
14470 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
14471 z8000
14472 EOSH
14473 # Maybe put other stuff here too.
14474 cat <<EOSH >>Cppsym.know
14475 $osname
14476 EOSH
14477 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
14478 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
14479 $cat Cppsym.know > Cppsym.c
14480 $cat Cppsym.a Cppsym.b Cppsym.c | $tr ' ' $trnl | sort | uniq > Cppsym.know
14481 $rm -f Cppsym.a Cppsym.b Cppsym.c
14482 cat <<EOSH > Cppsym
14483 $startsh
14484 if $test \$# -gt 0; then
14485     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
14486     if $test -s Cppsym.got; then
14487         $rm -f Cppsym.got
14488         exit 0
14489     fi
14490     $rm -f Cppsym.got
14491     exit 1
14492 else
14493     $tr " " "$trnl" | ./Cppsym.try
14494     exit 0
14495 fi
14496 EOSH
14497 chmod +x Cppsym
14498 $eunicefix Cppsym
14499 cat <<EOSH > Cppsym.try
14500 $startsh
14501 cat <<'EOCP' > try.c
14502 #include <stdio.h>
14503 int main() {
14504 EOCP
14505 $awk \\
14506 EOSH
14507 cat <<'EOSH' >> Cppsym.try
14508 'length($1) > 0 {
14509     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
14510     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
14511     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
14512     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
14513 }'       >> try.c
14514 echo '}' >> try.c
14515 EOSH
14516 cat <<EOSH >> Cppsym.try
14517 ccflags="$ccflags"
14518 case "$osname-$gccversion" in
14519 irix-) ccflags="\$ccflags -woff 1178" ;;
14520 os2-*) ccflags="\$ccflags -Zlinker /PM:VIO" ;;
14521 esac
14522 $cc $optimize \$ccflags $ldflags -o try try.c $libs && ./try$exe_ext
14523 EOSH
14524 chmod +x Cppsym.try
14525 $eunicefix Cppsym.try
14526 ./Cppsym < Cppsym.know > Cppsym.true
14527 : now check the C compiler for additional symbols
14528 postprocess_cc_v=''
14529 case "$osname" in
14530 aix) postprocess_cc_v="|$tr , ' '" ;;
14531 esac
14532 $cat >ccsym <<EOS
14533 $startsh
14534 $cat >tmp.c <<EOF
14535 extern int foo;
14536 EOF
14537 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
14538 do
14539         case "\$i" in
14540         -D*) echo "\$i" | $sed 's/^-D//';;
14541         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
14542         esac
14543 done
14544 $rm -f try.c
14545 EOS
14546 postprocess_cc_v=''
14547 chmod +x ccsym
14548 $eunicefix ccsym
14549 ./ccsym > ccsym1.raw
14550 if $test -s ccsym1.raw; then
14551        $sort ccsym1.raw | $uniq >ccsym.raw
14552 else
14553        mv ccsym1.raw ccsym.raw
14554 fi
14555
14556 $awk '/\=/ { print $0; next }
14557         { print $0"=1" }' ccsym.raw >ccsym.list
14558 $awk '/\=/ { print $0; next }
14559         { print $0"=1" }' Cppsym.true >ccsym.true
14560 $comm -13 ccsym.true ccsym.list >ccsym.own
14561 $comm -12 ccsym.true ccsym.list >ccsym.com
14562 $comm -23 ccsym.true ccsym.list >ccsym.cpp
14563 also=''
14564 if $test -z ccsym.raw; then
14565         echo "Your C compiler doesn't seem to define any symbols!" >&4
14566         echo " "
14567         echo "However, your C preprocessor defines the following symbols:"
14568         $cat Cppsym.true
14569         ccsymbols=''
14570         cppsymbols=`$cat Cppsym.true`
14571         cppsymbols=`echo $cppsymbols`
14572         cppccsymbols="$cppsymbols"
14573 else
14574         if $test -s ccsym.com; then
14575                 echo "Your C compiler and pre-processor define these symbols:"
14576                 $sed -e 's/\(..*\)=.*/\1/' ccsym.com
14577                 also='also '
14578                 symbols='ones'
14579                 cppccsymbols=`$cat ccsym.com`
14580                 cppccsymbols=`echo $cppccsymbols`
14581                 $test "$silent" || sleep 1
14582         fi
14583         if $test -s ccsym.cpp; then
14584                 $test "$also" && echo " "
14585                 echo "Your C pre-processor ${also}defines the following symbols:"
14586                 $sed -e 's/\(..*\)=.*/\1/' ccsym.cpp
14587                 also='further '
14588                 cppsymbols=`$cat ccsym.cpp`
14589                 cppsymbols=`echo $cppsymbols`
14590                 $test "$silent" || sleep 1
14591         fi
14592         if $test -s ccsym.own; then
14593                 $test "$also" && echo " "
14594                 echo "Your C compiler ${also}defines the following cpp symbols:"
14595                 $sed -e 's/\(..*\)=1/\1/' ccsym.own
14596                 $sed -e 's/\(..*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
14597                 ccsymbols=`$cat ccsym.own`
14598                 ccsymbols=`echo $ccsymbols`
14599                 $test "$silent" || sleep 1
14600         fi
14601 fi
14602 $rm -f ccsym* Cppsym.*
14603
14604 : see if this is a termio system
14605 val="$undef"
14606 val2="$undef"
14607 val3="$undef"
14608 if $test `./findhdr termios.h`; then
14609         set tcsetattr i_termios
14610         eval $inlibc
14611         val3="$i_termios"
14612 fi
14613 echo " "
14614 case "$val3" in
14615 "$define") echo "You have POSIX termios.h... good!" >&4;;
14616 *) if ./Cppsym pyr; then
14617                 case "`/bin/universe`" in
14618                 ucb) if $test `./findhdr sgtty.h`; then
14619                                 val2="$define"
14620                                 echo "<sgtty.h> found." >&4
14621                         else
14622                                 echo "System is pyramid with BSD universe."
14623                                 echo "<sgtty.h> not found--you could have problems." >&4
14624                         fi;;
14625                 *) if $test `./findhdr termio.h`; then
14626                                 val="$define"
14627                                 echo "<termio.h> found." >&4
14628                         else
14629                                 echo "System is pyramid with USG universe."
14630                                 echo "<termio.h> not found--you could have problems." >&4
14631                         fi;;
14632                 esac
14633         elif ./usg; then
14634                 if $test `./findhdr termio.h`; then
14635                         echo "<termio.h> found." >&4
14636                         val="$define"
14637                 elif $test `./findhdr sgtty.h`; then
14638                         echo "<sgtty.h> found." >&4
14639                         val2="$define"
14640                 else
14641 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
14642                 fi
14643         else
14644                 if $test `./findhdr sgtty.h`; then
14645                         echo "<sgtty.h> found." >&4
14646                         val2="$define"
14647                 elif $test `./findhdr termio.h`; then
14648                         echo "<termio.h> found." >&4
14649                         val="$define"
14650                 else
14651 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
14652                 fi
14653         fi;;
14654 esac
14655 set i_termio; eval $setvar
14656 val=$val2; set i_sgtty; eval $setvar
14657 val=$val3; set i_termios; eval $setvar
14658
14659 : see if this is a shadow.h system
14660 set shadow.h i_shadow
14661 eval $inhdr
14662
14663 : see if this is a socks.h system
14664 set socks.h i_socks
14665 eval $inhdr
14666
14667 : see if stdarg is available
14668 echo " "
14669 if $test `./findhdr stdarg.h`; then
14670         echo "<stdarg.h> found." >&4
14671         valstd="$define"
14672 else
14673         echo "<stdarg.h> NOT found." >&4
14674         valstd="$undef"
14675 fi
14676
14677 : see if varags is available
14678 echo " "
14679 if $test `./findhdr varargs.h`; then
14680         echo "<varargs.h> found." >&4
14681 else
14682         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
14683 fi
14684
14685 : set up the varargs testing programs
14686 $cat > varargs.c <<EOP
14687 #ifdef I_STDARG
14688 #include <stdarg.h>
14689 #endif
14690 #ifdef I_VARARGS
14691 #include <varargs.h>
14692 #endif
14693
14694 #ifdef I_STDARG
14695 int f(char *p, ...)
14696 #else
14697 int f(va_alist)
14698 va_dcl
14699 #endif
14700 {
14701         va_list ap;
14702 #ifndef I_STDARG
14703         char *p;
14704 #endif
14705 #ifdef I_STDARG
14706         va_start(ap,p);
14707 #else
14708         va_start(ap);
14709         p = va_arg(ap, char *);
14710 #endif
14711         va_end(ap);
14712 }
14713 EOP
14714 $cat > varargs <<EOP
14715 $startsh
14716 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
14717         echo "true"
14718 else
14719         echo "false"
14720 fi
14721 $rm -f varargs$_o
14722 EOP
14723 chmod +x varargs
14724
14725 : now check which varargs header should be included
14726 echo " "
14727 i_varhdr=''
14728 case "$valstd" in
14729 "$define")
14730         if `./varargs I_STDARG`; then
14731                 val='stdarg.h'
14732         elif `./varargs I_VARARGS`; then
14733                 val='varargs.h'
14734         fi
14735         ;;
14736 *)
14737         if `./varargs I_VARARGS`; then
14738                 val='varargs.h'
14739         fi
14740         ;;
14741 esac
14742 case "$val" in
14743 '')
14744 echo "I could not find the definition for va_dcl... You have problems..." >&4
14745         val="$undef"; set i_stdarg; eval $setvar
14746         val="$undef"; set i_varargs; eval $setvar
14747         ;;
14748 *) 
14749         set i_varhdr
14750         eval $setvar
14751         case "$i_varhdr" in
14752         stdarg.h)
14753                 val="$define"; set i_stdarg; eval $setvar
14754                 val="$undef"; set i_varargs; eval $setvar
14755                 ;;
14756         varargs.h)
14757                 val="$undef"; set i_stdarg; eval $setvar
14758                 val="$define"; set i_varargs; eval $setvar
14759                 ;;
14760         esac
14761         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14762 esac
14763 $rm -f varargs*
14764
14765 : see if stddef is available
14766 set stddef.h i_stddef
14767 eval $inhdr
14768
14769 : see if this is a sunmath.h system
14770 set sunmath.h i_sunmath
14771 eval $inhdr
14772
14773 : see if sys/access.h is available
14774 set sys/access.h i_sysaccess
14775 eval $inhdr
14776
14777 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14778 set sys/filio.h i_sysfilio
14779 eval $inhdr
14780 echo " "
14781 if $test `./findhdr sys/ioctl.h`; then
14782         val="$define"
14783         echo '<sys/ioctl.h> found.' >&4
14784 else
14785         val="$undef"
14786         if $test $i_sysfilio = "$define"; then
14787             echo '<sys/ioctl.h> NOT found.' >&4
14788         else
14789                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14790                 $test $i_termio = "$define" && xxx="termio.h"
14791                 $test $i_termios = "$define" && xxx="termios.h"
14792 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14793         fi
14794 fi
14795 set i_sysioctl
14796 eval $setvar
14797
14798
14799 : see if this is a syslog.h system
14800 set syslog.h i_syslog
14801 eval $inhdr
14802
14803
14804 : see if this is a sys/mode.h system
14805 set sys/mode.h i_sysmode
14806 eval $inhdr
14807
14808 : see if sys/resource.h has to be included
14809 set sys/resource.h i_sysresrc
14810 eval $inhdr
14811
14812 : see if sys/security.h is available
14813 set sys/security.h i_syssecrt
14814 eval $inhdr
14815
14816 : see if this is a sys/statvfs.h system
14817 set sys/statvfs.h i_sysstatvfs
14818 eval $inhdr
14819
14820 : see if this is a sys/uio.h system
14821 set sys/uio.h i_sysuio
14822 eval $inhdr
14823
14824 : see if this is a sys/un.h system
14825 set sys/un.h i_sysun
14826 eval $inhdr
14827
14828
14829 : see if this is a sys/utsname.h system
14830 set sys/utsname.h i_sysutsname
14831 eval $inhdr
14832
14833 : see if this is a syswait system
14834 set sys/wait.h i_syswait
14835 eval $inhdr
14836
14837 : see if this is a ustat.h system
14838 set ustat.h i_ustat
14839 eval $inhdr
14840
14841 : see if this is an utime system
14842 set utime.h i_utime
14843 eval $inhdr
14844
14845 : see if this is a values.h system
14846 set values.h i_values
14847 eval $inhdr
14848
14849 : see if this is a vfork system
14850 case "$d_vfork" in
14851 "$define")
14852         set vfork.h i_vfork
14853         eval $inhdr
14854         ;;
14855 *)
14856         i_vfork="$undef"
14857         ;;
14858 esac
14859
14860 : see if gdbm.h is available
14861 set gdbm.h t_gdbm
14862 eval $inhdr
14863 case "$t_gdbm" in
14864 $define)
14865         : see if gdbm_open exists
14866         set gdbm_open d_gdbm_open
14867         eval $inlibc
14868         case "$d_gdbm_open" in
14869         $undef)
14870                 t_gdbm="$undef"
14871                 echo "We won't be including <gdbm.h>"
14872                 ;;
14873         esac
14874         ;;
14875 esac
14876 val="$t_gdbm"
14877 set i_gdbm
14878 eval $setvar
14879
14880 echo " "
14881 echo "Looking for extensions..." >&4
14882 : If we are using the old config.sh, known_extensions may contain
14883 : old or inaccurate or duplicate values.
14884 known_extensions=''
14885 nonxs_extensions=''
14886 : We do not use find because it might not be available.
14887 : We do not just use MANIFEST because the user may have dropped
14888 : some additional extensions into the source tree and expect them
14889 : to be built.
14890
14891 : Function to recursively find available extensions, ignoring DynaLoader
14892 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14893 find_extensions='
14894     for xxx in *; do
14895        case "$xxx" in
14896            DynaLoader|dynaload) ;;
14897            *)
14898            if $test -f $xxx/$xxx.xs; then
14899                known_extensions="$known_extensions $1$xxx";
14900            elif $test -f $xxx/Makefile.PL; then
14901                nonxs_extensions="$nonxs_extensions $1$xxx";
14902            else
14903                if $test -d $xxx -a $# -lt 10; then
14904                    set $1$xxx/ $*;
14905                    cd $xxx;
14906                    eval $find_extensions;
14907                    cd ..;
14908                    shift;
14909                fi;
14910            fi
14911            ;;
14912        esac;
14913     done'
14914 tdir=`pwd`
14915 cd $rsrc/ext
14916 set X
14917 shift
14918 eval $find_extensions
14919 set X $nonxs_extensions
14920 shift
14921 nonxs_extensions="$*"
14922 set X $known_extensions
14923 shift
14924 known_extensions="$*"
14925 cd $tdir
14926
14927 : Now see which are supported on this system.
14928 avail_ext=''
14929 for xxx in $known_extensions ; do
14930         case "$xxx" in
14931         DB_File|db_file)
14932                 case "$i_db" in
14933                 $define) avail_ext="$avail_ext $xxx" ;;
14934                 esac
14935                 ;;
14936         GDBM_File|gdbm_fil)
14937                 case "$i_gdbm" in 
14938                 $define) avail_ext="$avail_ext $xxx" ;;
14939                 esac
14940                 ;;
14941         NDBM_File|ndbm_fil)
14942                 case "$i_ndbm" in
14943                 $define)
14944                     case "$osname-$use64bitint" in
14945                     hpux-define)
14946                         case "$libs" in
14947                         *-lndbm*) avail_ext="$avail_ext $xxx" ;;
14948                         esac
14949                         ;;
14950                     *) avail_ext="$avail_ext $xxx" ;;
14951                     esac
14952                     ;;
14953                 esac
14954                 ;;
14955         ODBM_File|odbm_fil) 
14956                 case "${i_dbm}${i_rpcsvcdbm}" in
14957                 *"${define}"*)
14958                     case "$osname-$use64bitint" in
14959                     hpux-define)
14960                         case "$libs" in
14961                         *-ldbm*) avail_ext="$avail_ext $xxx" ;;
14962                         esac
14963                         ;;
14964                     *) avail_ext="$avail_ext $xxx" ;;
14965                     esac
14966                     ;;
14967                 esac
14968                 ;;
14969         POSIX|posix)
14970                 case "$useposix" in
14971                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14972                 esac
14973                 ;;
14974         Opcode|opcode)
14975                 case "$useopcode" in
14976                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14977                 esac
14978                 ;;
14979         Socket|socket)
14980                 case "$d_socket" in 
14981                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14982                 esac
14983                 ;;
14984         Sys/Syslog|sys/syslog)
14985                 : XXX syslog requires socket
14986                 case "$d_socket" in 
14987                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14988                 esac
14989                 ;;
14990         Thread|thread)
14991                 case "$usethreads" in 
14992                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14993                 esac
14994                 ;;
14995         IPC/SysV|ipc/sysv)
14996                 : XXX Do we need a useipcsysv variable here
14997                 case "${d_msg}${d_sem}${d_shm}" in 
14998                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14999                 esac
15000                 ;;
15001         *)      avail_ext="$avail_ext $xxx"
15002                 ;;
15003         esac
15004 done
15005
15006 set X $avail_ext
15007 shift
15008 avail_ext="$*"
15009
15010 : Now see which nonxs extensions are supported on this system.
15011 : For now assume all are.
15012 nonxs_ext=''
15013 for xxx in $nonxs_extensions ; do
15014         case "$xxx" in
15015         *)      nonxs_ext="$nonxs_ext $xxx"
15016                 ;;
15017         esac
15018 done
15019
15020 set X $nonxs_ext
15021 shift
15022 nonxs_ext="$*"
15023
15024 case $usedl in
15025 $define)
15026         $cat <<EOM
15027 A number of extensions are supplied with $package.  You may choose to
15028 compile these extensions for dynamic loading (the default), compile
15029 them into the $package executable (static loading), or not include
15030 them at all.  Answer "none" to include no extensions.
15031 Note that DynaLoader is always built and need not be mentioned here.
15032
15033 EOM
15034         case "$dynamic_ext" in
15035         '') dflt="$avail_ext" ;;
15036         *)      dflt="$dynamic_ext"
15037                 # Perhaps we are reusing an old out-of-date config.sh.
15038                 case "$hint" in
15039                 previous)
15040                         if test X"$dynamic_ext" != X"$avail_ext"; then
15041                                 $cat <<EOM
15042 NOTICE:  Your previous config.sh list may be incorrect. 
15043 The extensions now available to you are 
15044         ${avail_ext}
15045 but the default list from your previous config.sh is
15046         ${dynamic_ext} 
15047
15048 EOM
15049                         fi
15050                         ;;
15051                 esac
15052                 ;;
15053         esac
15054         case "$dflt" in
15055         '')     dflt=none;;
15056         esac
15057         rp="What extensions do you wish to load dynamically?"
15058         . ./myread
15059         case "$ans" in
15060         none) dynamic_ext=' ' ;;
15061         *) dynamic_ext="$ans" ;;
15062         esac
15063
15064         case "$static_ext" in
15065         '')
15066                 : Exclude those already listed in dynamic linking
15067                 dflt=''
15068                 for xxx in $avail_ext; do
15069                         case " $dynamic_ext " in
15070                         *" $xxx "*) ;;
15071                         *) dflt="$dflt $xxx" ;;
15072                         esac
15073                 done
15074                 set X $dflt
15075                 shift
15076                 dflt="$*"
15077                 ;;
15078         *)  dflt="$static_ext" 
15079                 ;;
15080         esac
15081
15082         case "$dflt" in
15083         '')     dflt=none;;
15084         esac
15085         rp="What extensions do you wish to load statically?"
15086         . ./myread
15087         case "$ans" in
15088         none) static_ext=' ' ;;
15089         *) static_ext="$ans" ;;
15090         esac
15091         ;;
15092 *)
15093         $cat <<EOM
15094 A number of extensions are supplied with $package.  Answer "none" 
15095 to include no extensions. 
15096 Note that DynaLoader is always built and need not be mentioned here.
15097
15098 EOM
15099         case "$static_ext" in
15100         '') dflt="$avail_ext" ;;
15101         *)      dflt="$static_ext"
15102                 # Perhaps we are reusing an old out-of-date config.sh.
15103                 case "$hint" in
15104                 previous)
15105                         if test X"$static_ext" != X"$avail_ext"; then
15106                                 $cat <<EOM
15107 NOTICE:  Your previous config.sh list may be incorrect. 
15108 The extensions now available to you are 
15109         ${avail_ext}
15110 but the default list from your previous config.sh is
15111         ${static_ext} 
15112
15113 EOM
15114                         fi
15115                         ;;
15116                 esac
15117                 ;;
15118         esac
15119         : Exclude those that are not xs extensions
15120         case "$dflt" in
15121         '')     dflt=none;;
15122         esac
15123         rp="What extensions do you wish to include?"
15124         . ./myread
15125         case "$ans" in
15126         none) static_ext=' ' ;;
15127         *) static_ext="$ans" ;;
15128         esac
15129         ;;
15130 esac
15131
15132 set X $dynamic_ext $static_ext $nonxs_ext
15133 shift
15134 extensions="$*"
15135
15136 : Remove libraries needed only for extensions
15137 : The appropriate ext/Foo/Makefile.PL will add them back in, if necessary.
15138 case "$usedl" in
15139 $define|true|[yY]*)
15140         set X `echo " $libs " | sed -e 's@ -lndbm @ @' -e 's@ -lgdbm @ @' -e 's@ -ldbm @ @' -e 's@ -ldb @ @'` 
15141         shift
15142         perllibs="$*"
15143         ;;
15144 *)      perllibs="$libs"
15145         ;;
15146 esac
15147
15148 : Remove build directory name from cppstdin so it can be used from
15149 : either the present location or the final installed location.
15150 echo " "
15151 : Get out of the UU directory to get correct path name.
15152 cd ..
15153 case "$cppstdin" in
15154 `pwd`/cppstdin)
15155         echo "Stripping down cppstdin path name"
15156         cppstdin=cppstdin
15157         ;;
15158 esac
15159 cd UU
15160
15161 : end of configuration questions
15162 echo " "
15163 echo "End of configuration questions."
15164 echo " "
15165
15166 : back to where it started
15167 if test -d ../UU; then
15168         cd ..
15169 fi
15170
15171 : configuration may be patched via a 'config.over' file
15172 if $test -f config.over; then
15173         echo " "
15174         dflt=y
15175         rp='I see a config.over file.  Do you wish to load it?'
15176         . UU/myread
15177         case "$ans" in
15178         n*) echo "OK, I'll ignore it.";;
15179         *)      . ./config.over
15180                 echo "Configuration override changes have been loaded."
15181                 ;;
15182         esac
15183 fi
15184
15185 : in case they want portability, strip down executable paths
15186 case "$d_portable" in
15187 "$define")
15188         echo " "
15189         echo "Stripping down executable paths..." >&4
15190         for file in $loclist $trylist; do
15191                 eval temp=\$$file
15192                 eval $file=`basename $temp`
15193         done
15194         ;;
15195 esac
15196
15197 : create config.sh file
15198 echo " "
15199 echo "Creating config.sh..." >&4
15200 $spitshell <<EOT >config.sh
15201 $startsh
15202 #
15203 # This file was produced by running the Configure script. It holds all the
15204 # definitions figured out by Configure. Should you modify one of these values,
15205 # do not forget to propagate your changes by running "Configure -der". You may
15206 # instead choose to run each of the .SH files by yourself, or "Configure -S".
15207 #
15208
15209 # Package name      : $package
15210 # Source directory  : $src
15211 # Configuration time: $cf_time
15212 # Configured by     : $cf_by
15213 # Target system     : $myuname
15214
15215 Author='$Author'
15216 Date='$Date'
15217 Header='$Header'
15218 Id='$Id'
15219 Locker='$Locker'
15220 Log='$Log'
15221 Mcc='$Mcc'
15222 RCSfile='$RCSfile'
15223 Revision='$Revision'
15224 Source='$Source'
15225 State='$State'
15226 _a='$_a'
15227 _exe='$_exe'
15228 _o='$_o'
15229 afs='$afs'
15230 alignbytes='$alignbytes'
15231 ansi2knr='$ansi2knr'
15232 aphostname='$aphostname'
15233 api_revision='$api_revision'
15234 api_subversion='$api_subversion'
15235 api_version='$api_version'
15236 api_versionstring='$api_versionstring'
15237 ar='$ar'
15238 archlib='$archlib'
15239 archlibexp='$archlibexp'
15240 archname64='$archname64'
15241 archname='$archname'
15242 archobjs='$archobjs'
15243 awk='$awk'
15244 baserev='$baserev'
15245 bash='$bash'
15246 bin='$bin'
15247 bincompat5005='$bincompat5005'
15248 binexp='$binexp'
15249 bison='$bison'
15250 byacc='$byacc'
15251 byteorder='$byteorder'
15252 c='$c'
15253 castflags='$castflags'
15254 cat='$cat'
15255 cc='$cc'
15256 cccdlflags='$cccdlflags'
15257 ccdlflags='$ccdlflags'
15258 ccflags='$ccflags'
15259 ccflags_uselargefiles='$ccflags_uselargefiles'
15260 ccname='$ccname'
15261 ccsymbols='$ccsymbols'
15262 ccversion='$ccversion'
15263 cf_by='$cf_by'
15264 cf_email='$cf_email'
15265 cf_time='$cf_time'
15266 charsize='$charsize'
15267 chgrp='$chgrp'
15268 chmod='$chmod'
15269 chown='$chown'
15270 clocktype='$clocktype'
15271 comm='$comm'
15272 compress='$compress'
15273 contains='$contains'
15274 cp='$cp'
15275 cpio='$cpio'
15276 cpp='$cpp'
15277 cpp_stuff='$cpp_stuff'
15278 cppccsymbols='$cppccsymbols'
15279 cppflags='$cppflags'
15280 cpplast='$cpplast'
15281 cppminus='$cppminus'
15282 cpprun='$cpprun'
15283 cppstdin='$cppstdin'
15284 cppsymbols='$cppsymbols'
15285 crosscompile='$crosscompile'
15286 cryptlib='$cryptlib'
15287 csh='$csh'
15288 d_Gconvert='$d_Gconvert'
15289 d_PRIEUldbl='$d_PRIEUldbl'
15290 d_PRIFUldbl='$d_PRIFUldbl'
15291 d_PRIGUldbl='$d_PRIGUldbl'
15292 d_PRIXU64='$d_PRIXU64'
15293 d_PRId64='$d_PRId64'
15294 d_PRIeldbl='$d_PRIeldbl'
15295 d_PRIfldbl='$d_PRIfldbl'
15296 d_PRIgldbl='$d_PRIgldbl'
15297 d_PRIi64='$d_PRIi64'
15298 d_PRIo64='$d_PRIo64'
15299 d_PRIu64='$d_PRIu64'
15300 d_PRIx64='$d_PRIx64'
15301 d_SCNfldbl='$d_SCNfldbl'
15302 d_access='$d_access'
15303 d_accessx='$d_accessx'
15304 d_alarm='$d_alarm'
15305 d_archlib='$d_archlib'
15306 d_atolf='$d_atolf'
15307 d_atoll='$d_atoll'
15308 d_attribut='$d_attribut'
15309 d_bcmp='$d_bcmp'
15310 d_bcopy='$d_bcopy'
15311 d_bincompat5005='$d_bincompat5005'
15312 d_bsd='$d_bsd'
15313 d_bsdgetpgrp='$d_bsdgetpgrp'
15314 d_bsdsetpgrp='$d_bsdsetpgrp'
15315 d_bzero='$d_bzero'
15316 d_casti32='$d_casti32'
15317 d_castneg='$d_castneg'
15318 d_charvspr='$d_charvspr'
15319 d_chown='$d_chown'
15320 d_chroot='$d_chroot'
15321 d_chsize='$d_chsize'
15322 d_closedir='$d_closedir'
15323 d_const='$d_const'
15324 d_crypt='$d_crypt'
15325 d_csh='$d_csh'
15326 d_cuserid='$d_cuserid'
15327 d_dbl_dig='$d_dbl_dig'
15328 d_difftime='$d_difftime'
15329 d_dirnamlen='$d_dirnamlen'
15330 d_dlerror='$d_dlerror'
15331 d_dlopen='$d_dlopen'
15332 d_dlsymun='$d_dlsymun'
15333 d_dosuid='$d_dosuid'
15334 d_drand48proto='$d_drand48proto'
15335 d_dup2='$d_dup2'
15336 d_eaccess='$d_eaccess'
15337 d_endgrent='$d_endgrent'
15338 d_endhent='$d_endhent'
15339 d_endnent='$d_endnent'
15340 d_endpent='$d_endpent'
15341 d_endpwent='$d_endpwent'
15342 d_endsent='$d_endsent'
15343 d_eofnblk='$d_eofnblk'
15344 d_eunice='$d_eunice'
15345 d_fchmod='$d_fchmod'
15346 d_fchown='$d_fchown'
15347 d_fcntl='$d_fcntl'
15348 d_fd_macros='$d_fd_macros'
15349 d_fd_set='$d_fd_set'
15350 d_fds_bits='$d_fds_bits'
15351 d_fgetpos='$d_fgetpos'
15352 d_flexfnam='$d_flexfnam'
15353 d_flock='$d_flock'
15354 d_fork='$d_fork'
15355 d_fpathconf='$d_fpathconf'
15356 d_fpos64_t='$d_fpos64_t'
15357 d_frexpl='$d_frexpl'
15358 d_fs_data_s='$d_fs_data_s'
15359 d_fseeko='$d_fseeko'
15360 d_fsetpos='$d_fsetpos'
15361 d_fstatfs='$d_fstatfs'
15362 d_fstatvfs='$d_fstatvfs'
15363 d_ftello='$d_ftello'
15364 d_ftime='$d_ftime'
15365 d_getcwd='$d_getcwd'
15366 d_getespwnam='$d_getespwnam'
15367 d_getfsstat='$d_getfsstat'
15368 d_getgrent='$d_getgrent'
15369 d_getgrps='$d_getgrps'
15370 d_gethbyaddr='$d_gethbyaddr'
15371 d_gethbyname='$d_gethbyname'
15372 d_gethent='$d_gethent'
15373 d_gethname='$d_gethname'
15374 d_gethostprotos='$d_gethostprotos'
15375 d_getlogin='$d_getlogin'
15376 d_getmnt='$d_getmnt'
15377 d_getmntent='$d_getmntent'
15378 d_getnbyaddr='$d_getnbyaddr'
15379 d_getnbyname='$d_getnbyname'
15380 d_getnent='$d_getnent'
15381 d_getnetprotos='$d_getnetprotos'
15382 d_getpbyname='$d_getpbyname'
15383 d_getpbynumber='$d_getpbynumber'
15384 d_getpent='$d_getpent'
15385 d_getpgid='$d_getpgid'
15386 d_getpgrp2='$d_getpgrp2'
15387 d_getpgrp='$d_getpgrp'
15388 d_getppid='$d_getppid'
15389 d_getprior='$d_getprior'
15390 d_getprotoprotos='$d_getprotoprotos'
15391 d_getprpwnam='$d_getprpwnam'
15392 d_getpwent='$d_getpwent'
15393 d_getsbyname='$d_getsbyname'
15394 d_getsbyport='$d_getsbyport'
15395 d_getsent='$d_getsent'
15396 d_getservprotos='$d_getservprotos'
15397 d_getspnam='$d_getspnam'
15398 d_gettimeod='$d_gettimeod'
15399 d_gnulibc='$d_gnulibc'
15400 d_grpasswd='$d_grpasswd'
15401 d_hasmntopt='$d_hasmntopt'
15402 d_htonl='$d_htonl'
15403 d_iconv='$d_iconv'
15404 d_index='$d_index'
15405 d_inetaton='$d_inetaton'
15406 d_int64_t='$d_int64_t'
15407 d_isascii='$d_isascii'
15408 d_isnan='$d_isnan'
15409 d_isnanl='$d_isnanl'
15410 d_killpg='$d_killpg'
15411 d_lchown='$d_lchown'
15412 d_ldbl_dig='$d_ldbl_dig'
15413 d_link='$d_link'
15414 d_locconv='$d_locconv'
15415 d_lockf='$d_lockf'
15416 d_longdbl='$d_longdbl'
15417 d_longlong='$d_longlong'
15418 d_lseekproto='$d_lseekproto'
15419 d_lstat='$d_lstat'
15420 d_madvise='$d_madvise'
15421 d_mblen='$d_mblen'
15422 d_mbstowcs='$d_mbstowcs'
15423 d_mbtowc='$d_mbtowc'
15424 d_memchr='$d_memchr'
15425 d_memcmp='$d_memcmp'
15426 d_memcpy='$d_memcpy'
15427 d_memmove='$d_memmove'
15428 d_memset='$d_memset'
15429 d_mkdir='$d_mkdir'
15430 d_mkdtemp='$d_mkdtemp'
15431 d_mkfifo='$d_mkfifo'
15432 d_mkstemp='$d_mkstemp'
15433 d_mkstemps='$d_mkstemps'
15434 d_mktime='$d_mktime'
15435 d_mmap='$d_mmap'
15436 d_modfl='$d_modfl'
15437 d_mprotect='$d_mprotect'
15438 d_msg='$d_msg'
15439 d_msg_ctrunc='$d_msg_ctrunc'
15440 d_msg_dontroute='$d_msg_dontroute'
15441 d_msg_oob='$d_msg_oob'
15442 d_msg_peek='$d_msg_peek'
15443 d_msg_proxy='$d_msg_proxy'
15444 d_msgctl='$d_msgctl'
15445 d_msgget='$d_msgget'
15446 d_msgrcv='$d_msgrcv'
15447 d_msgsnd='$d_msgsnd'
15448 d_msync='$d_msync'
15449 d_munmap='$d_munmap'
15450 d_mymalloc='$d_mymalloc'
15451 d_nice='$d_nice'
15452 d_nv_preserves_uv='$d_nv_preserves_uv'
15453 d_nv_preserves_uv_bits='$d_nv_preserves_uv_bits'
15454 d_off64_t='$d_off64_t'
15455 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
15456 d_oldpthreads='$d_oldpthreads'
15457 d_oldsock='$d_oldsock'
15458 d_open3='$d_open3'
15459 d_pathconf='$d_pathconf'
15460 d_pause='$d_pause'
15461 d_perl_otherlibdirs='$d_perl_otherlibdirs'
15462 d_phostname='$d_phostname'
15463 d_pipe='$d_pipe'
15464 d_poll='$d_poll'
15465 d_portable='$d_portable'
15466 d_pthread_yield='$d_pthread_yield'
15467 d_pwage='$d_pwage'
15468 d_pwchange='$d_pwchange'
15469 d_pwclass='$d_pwclass'
15470 d_pwcomment='$d_pwcomment'
15471 d_pwexpire='$d_pwexpire'
15472 d_pwgecos='$d_pwgecos'
15473 d_pwpasswd='$d_pwpasswd'
15474 d_pwquota='$d_pwquota'
15475 d_qgcvt='$d_qgcvt'
15476 d_quad='$d_quad'
15477 d_readdir='$d_readdir'
15478 d_readlink='$d_readlink'
15479 d_rename='$d_rename'
15480 d_rewinddir='$d_rewinddir'
15481 d_rmdir='$d_rmdir'
15482 d_safebcpy='$d_safebcpy'
15483 d_safemcpy='$d_safemcpy'
15484 d_sanemcmp='$d_sanemcmp'
15485 d_sched_yield='$d_sched_yield'
15486 d_scm_rights='$d_scm_rights'
15487 d_seekdir='$d_seekdir'
15488 d_select='$d_select'
15489 d_sem='$d_sem'
15490 d_semctl='$d_semctl'
15491 d_semctl_semid_ds='$d_semctl_semid_ds'
15492 d_semctl_semun='$d_semctl_semun'
15493 d_semget='$d_semget'
15494 d_semop='$d_semop'
15495 d_setegid='$d_setegid'
15496 d_seteuid='$d_seteuid'
15497 d_setgrent='$d_setgrent'
15498 d_setgrps='$d_setgrps'
15499 d_sethent='$d_sethent'
15500 d_setlinebuf='$d_setlinebuf'
15501 d_setlocale='$d_setlocale'
15502 d_setnent='$d_setnent'
15503 d_setpent='$d_setpent'
15504 d_setpgid='$d_setpgid'
15505 d_setpgrp2='$d_setpgrp2'
15506 d_setpgrp='$d_setpgrp'
15507 d_setprior='$d_setprior'
15508 d_setproctitle='$d_setproctitle'
15509 d_setpwent='$d_setpwent'
15510 d_setregid='$d_setregid'
15511 d_setresgid='$d_setresgid'
15512 d_setresuid='$d_setresuid'
15513 d_setreuid='$d_setreuid'
15514 d_setrgid='$d_setrgid'
15515 d_setruid='$d_setruid'
15516 d_setsent='$d_setsent'
15517 d_setsid='$d_setsid'
15518 d_setvbuf='$d_setvbuf'
15519 d_sfio='$d_sfio'
15520 d_shm='$d_shm'
15521 d_shmat='$d_shmat'
15522 d_shmatprototype='$d_shmatprototype'
15523 d_shmctl='$d_shmctl'
15524 d_shmdt='$d_shmdt'
15525 d_shmget='$d_shmget'
15526 d_sigaction='$d_sigaction'
15527 d_sigsetjmp='$d_sigsetjmp'
15528 d_socket='$d_socket'
15529 d_socklen_t='$d_socklen_t'
15530 d_sockpair='$d_sockpair'
15531 d_socks5_init='$d_socks5_init'
15532 d_sqrtl='$d_sqrtl'
15533 d_statblks='$d_statblks'
15534 d_statfs_f_flags='$d_statfs_f_flags'
15535 d_statfs_s='$d_statfs_s'
15536 d_statvfs='$d_statvfs'
15537 d_stdio_cnt_lval='$d_stdio_cnt_lval'
15538 d_stdio_ptr_lval='$d_stdio_ptr_lval'
15539 d_stdio_stream_array='$d_stdio_stream_array'
15540 d_stdiobase='$d_stdiobase'
15541 d_stdstdio='$d_stdstdio'
15542 d_strchr='$d_strchr'
15543 d_strcoll='$d_strcoll'
15544 d_strctcpy='$d_strctcpy'
15545 d_strerrm='$d_strerrm'
15546 d_strerror='$d_strerror'
15547 d_strtod='$d_strtod'
15548 d_strtol='$d_strtol'
15549 d_strtold='$d_strtold'
15550 d_strtoll='$d_strtoll'
15551 d_strtoul='$d_strtoul'
15552 d_strtoull='$d_strtoull'
15553 d_strtouq='$d_strtouq'
15554 d_strxfrm='$d_strxfrm'
15555 d_suidsafe='$d_suidsafe'
15556 d_symlink='$d_symlink'
15557 d_syscall='$d_syscall'
15558 d_sysconf='$d_sysconf'
15559 d_sysernlst='$d_sysernlst'
15560 d_syserrlst='$d_syserrlst'
15561 d_system='$d_system'
15562 d_tcgetpgrp='$d_tcgetpgrp'
15563 d_tcsetpgrp='$d_tcsetpgrp'
15564 d_telldir='$d_telldir'
15565 d_telldirproto='$d_telldirproto'
15566 d_time='$d_time'
15567 d_times='$d_times'
15568 d_truncate='$d_truncate'
15569 d_tzname='$d_tzname'
15570 d_umask='$d_umask'
15571 d_uname='$d_uname'
15572 d_union_semun='$d_union_semun'
15573 d_ustat='$d_ustat'
15574 d_vendorarch='$d_vendorarch'
15575 d_vendorbin='$d_vendorbin'
15576 d_vendorlib='$d_vendorlib'
15577 d_vfork='$d_vfork'
15578 d_void_closedir='$d_void_closedir'
15579 d_voidsig='$d_voidsig'
15580 d_voidtty='$d_voidtty'
15581 d_volatile='$d_volatile'
15582 d_vprintf='$d_vprintf'
15583 d_wait4='$d_wait4'
15584 d_waitpid='$d_waitpid'
15585 d_wcstombs='$d_wcstombs'
15586 d_wctomb='$d_wctomb'
15587 d_xenix='$d_xenix'
15588 date='$date'
15589 db_hashtype='$db_hashtype'
15590 db_prefixtype='$db_prefixtype'
15591 defvoidused='$defvoidused'
15592 direntrytype='$direntrytype'
15593 dlext='$dlext'
15594 dlsrc='$dlsrc'
15595 doublesize='$doublesize'
15596 drand01='$drand01'
15597 dynamic_ext='$dynamic_ext'
15598 eagain='$eagain'
15599 ebcdic='$ebcdic'
15600 echo='$echo'
15601 egrep='$egrep'
15602 emacs='$emacs'
15603 eunicefix='$eunicefix'
15604 exe_ext='$exe_ext'
15605 expr='$expr'
15606 extensions='$extensions'
15607 fflushNULL='$fflushNULL'
15608 fflushall='$fflushall'
15609 find='$find'
15610 firstmakefile='$firstmakefile'
15611 flex='$flex'
15612 fpossize='$fpossize'
15613 fpostype='$fpostype'
15614 freetype='$freetype'
15615 full_ar='$full_ar'
15616 full_csh='$full_csh'
15617 full_sed='$full_sed'
15618 gccosandvers='$gccosandvers'
15619 gccversion='$gccversion'
15620 gidformat='$gidformat'
15621 gidsign='$gidsign'
15622 gidsize='$gidsize'
15623 gidtype='$gidtype'
15624 glibpth='$glibpth'
15625 grep='$grep'
15626 groupcat='$groupcat'
15627 groupstype='$groupstype'
15628 gzip='$gzip'
15629 h_fcntl='$h_fcntl'
15630 h_sysfile='$h_sysfile'
15631 hint='$hint'
15632 hostcat='$hostcat'
15633 i16size='$i16size'
15634 i16type='$i16type'
15635 i32size='$i32size'
15636 i32type='$i32type'
15637 i64size='$i64size'
15638 i64type='$i64type'
15639 i8size='$i8size'
15640 i8type='$i8type'
15641 i_arpainet='$i_arpainet'
15642 i_bsdioctl='$i_bsdioctl'
15643 i_db='$i_db'
15644 i_dbm='$i_dbm'
15645 i_dirent='$i_dirent'
15646 i_dld='$i_dld'
15647 i_dlfcn='$i_dlfcn'
15648 i_fcntl='$i_fcntl'
15649 i_float='$i_float'
15650 i_gdbm='$i_gdbm'
15651 i_grp='$i_grp'
15652 i_iconv='$i_iconv'
15653 i_ieeefp='$i_ieeefp'
15654 i_inttypes='$i_inttypes'
15655 i_libutil='$i_libutil'
15656 i_limits='$i_limits'
15657 i_locale='$i_locale'
15658 i_machcthr='$i_machcthr'
15659 i_malloc='$i_malloc'
15660 i_math='$i_math'
15661 i_memory='$i_memory'
15662 i_mntent='$i_mntent'
15663 i_ndbm='$i_ndbm'
15664 i_netdb='$i_netdb'
15665 i_neterrno='$i_neterrno'
15666 i_netinettcp='$i_netinettcp'
15667 i_niin='$i_niin'
15668 i_poll='$i_poll'
15669 i_prot='$i_prot'
15670 i_pthread='$i_pthread'
15671 i_pwd='$i_pwd'
15672 i_rpcsvcdbm='$i_rpcsvcdbm'
15673 i_sfio='$i_sfio'
15674 i_sgtty='$i_sgtty'
15675 i_shadow='$i_shadow'
15676 i_socks='$i_socks'
15677 i_stdarg='$i_stdarg'
15678 i_stddef='$i_stddef'
15679 i_stdlib='$i_stdlib'
15680 i_string='$i_string'
15681 i_sunmath='$i_sunmath'
15682 i_sysaccess='$i_sysaccess'
15683 i_sysdir='$i_sysdir'
15684 i_sysfile='$i_sysfile'
15685 i_sysfilio='$i_sysfilio'
15686 i_sysin='$i_sysin'
15687 i_sysioctl='$i_sysioctl'
15688 i_syslog='$i_syslog'
15689 i_sysmman='$i_sysmman'
15690 i_sysmode='$i_sysmode'
15691 i_sysmount='$i_sysmount'
15692 i_sysndir='$i_sysndir'
15693 i_sysparam='$i_sysparam'
15694 i_sysresrc='$i_sysresrc'
15695 i_syssecrt='$i_syssecrt'
15696 i_sysselct='$i_sysselct'
15697 i_syssockio='$i_syssockio'
15698 i_sysstat='$i_sysstat'
15699 i_sysstatfs='$i_sysstatfs'
15700 i_sysstatvfs='$i_sysstatvfs'
15701 i_systime='$i_systime'
15702 i_systimek='$i_systimek'
15703 i_systimes='$i_systimes'
15704 i_systypes='$i_systypes'
15705 i_sysuio='$i_sysuio'
15706 i_sysun='$i_sysun'
15707 i_sysutsname='$i_sysutsname'
15708 i_sysvfs='$i_sysvfs'
15709 i_syswait='$i_syswait'
15710 i_termio='$i_termio'
15711 i_termios='$i_termios'
15712 i_time='$i_time'
15713 i_unistd='$i_unistd'
15714 i_ustat='$i_ustat'
15715 i_utime='$i_utime'
15716 i_values='$i_values'
15717 i_varargs='$i_varargs'
15718 i_varhdr='$i_varhdr'
15719 i_vfork='$i_vfork'
15720 ignore_versioned_solibs='$ignore_versioned_solibs'
15721 inc_version_list='$inc_version_list'
15722 inc_version_list_init='$inc_version_list_init'
15723 incpath='$incpath'
15724 inews='$inews'
15725 installarchlib='$installarchlib'
15726 installbin='$installbin'
15727 installman1dir='$installman1dir'
15728 installman3dir='$installman3dir'
15729 installprefix='$installprefix'
15730 installprefixexp='$installprefixexp'
15731 installprivlib='$installprivlib'
15732 installscript='$installscript'
15733 installsitearch='$installsitearch'
15734 installsitebin='$installsitebin'
15735 installsitelib='$installsitelib'
15736 installstyle='$installstyle'
15737 installusrbinperl='$installusrbinperl'
15738 installvendorarch='$installvendorarch'
15739 installvendorbin='$installvendorbin'
15740 installvendorlib='$installvendorlib'
15741 intsize='$intsize'
15742 ivdformat='$ivdformat'
15743 ivsize='$ivsize'
15744 ivtype='$ivtype'
15745 known_extensions='$known_extensions'
15746 ksh='$ksh'
15747 ld='$ld'
15748 lddlflags='$lddlflags'
15749 ldflags='$ldflags'
15750 ldflags_uselargefiles='$ldflags_uselargefiles'
15751 ldlibpthname='$ldlibpthname'
15752 less='$less'
15753 lib_ext='$lib_ext'
15754 libc='$libc'
15755 libperl='$libperl'
15756 libpth='$libpth'
15757 libs='$libs'
15758 libsdirs='$libsdirs'
15759 libsfiles='$libsfiles'
15760 libsfound='$libsfound'
15761 libspath='$libspath'
15762 libswanted='$libswanted'
15763 libswanted_uselargefiles='$libswanted_uselargefiles'
15764 line='$line'
15765 lint='$lint'
15766 lkflags='$lkflags'
15767 ln='$ln'
15768 lns='$lns'
15769 locincpth='$locincpth'
15770 loclibpth='$loclibpth'
15771 longdblsize='$longdblsize'
15772 longlongsize='$longlongsize'
15773 longsize='$longsize'
15774 lp='$lp'
15775 lpr='$lpr'
15776 ls='$ls'
15777 lseeksize='$lseeksize'
15778 lseektype='$lseektype'
15779 mail='$mail'
15780 mailx='$mailx'
15781 make='$make'
15782 make_set_make='$make_set_make'
15783 mallocobj='$mallocobj'
15784 mallocsrc='$mallocsrc'
15785 malloctype='$malloctype'
15786 man1dir='$man1dir'
15787 man1direxp='$man1direxp'
15788 man1ext='$man1ext'
15789 man3dir='$man3dir'
15790 man3direxp='$man3direxp'
15791 man3ext='$man3ext'
15792 mips_type='$mips_type'
15793 mkdir='$mkdir'
15794 mmaptype='$mmaptype'
15795 modetype='$modetype'
15796 more='$more'
15797 multiarch='$multiarch'
15798 mv='$mv'
15799 myarchname='$myarchname'
15800 mydomain='$mydomain'
15801 myhostname='$myhostname'
15802 myuname='$myuname'
15803 n='$n'
15804 netdb_hlen_type='$netdb_hlen_type'
15805 netdb_host_type='$netdb_host_type'
15806 netdb_name_type='$netdb_name_type'
15807 netdb_net_type='$netdb_net_type'
15808 nm='$nm'
15809 nm_opt='$nm_opt'
15810 nm_so_opt='$nm_so_opt'
15811 nonxs_ext='$nonxs_ext'
15812 nroff='$nroff'
15813 nvEUformat='$nvEUformat'
15814 nvFUformat='$nvFUformat'
15815 nvGUformat='$nvGUformat'
15816 nveformat='$nveformat'
15817 nvfformat='$nvfformat'
15818 nvgformat='$nvgformat'
15819 nvsize='$nvsize'
15820 nvtype='$nvtype'
15821 o_nonblock='$o_nonblock'
15822 obj_ext='$obj_ext'
15823 old_pthread_create_joinable='$old_pthread_create_joinable'
15824 optimize='$optimize'
15825 orderlib='$orderlib'
15826 osname='$osname'
15827 osvers='$osvers'
15828 otherlibdirs='$otherlibdirs'
15829 package='$package'
15830 pager='$pager'
15831 passcat='$passcat'
15832 patchlevel='$patchlevel'
15833 path_sep='$path_sep'
15834 perl5='$perl5'
15835 perl='$perl'
15836 perladmin='$perladmin'
15837 perllibs='$perllibs'
15838 perlpath='$perlpath'
15839 pg='$pg'
15840 phostname='$phostname'
15841 pidtype='$pidtype'
15842 plibpth='$plibpth'
15843 pm_apiversion='$pm_apiversion'
15844 pmake='$pmake'
15845 pr='$pr'
15846 prefix='$prefix'
15847 prefixexp='$prefixexp'
15848 privlib='$privlib'
15849 privlibexp='$privlibexp'
15850 prototype='$prototype'
15851 ptrsize='$ptrsize'
15852 quadkind='$quadkind'
15853 quadtype='$quadtype'
15854 randbits='$randbits'
15855 randfunc='$randfunc'
15856 randseedtype='$randseedtype'
15857 ranlib='$ranlib'
15858 rd_nodata='$rd_nodata'
15859 revision='$revision'
15860 rm='$rm'
15861 rmail='$rmail'
15862 runnm='$runnm'
15863 sPRIEUldbl='$sPRIEUldbl'
15864 sPRIFUldbl='$sPRIFUldbl'
15865 sPRIGUldbl='$sPRIGUldbl'
15866 sPRIXU64='$sPRIXU64'
15867 sPRId64='$sPRId64'
15868 sPRIeldbl='$sPRIeldbl'
15869 sPRIfldbl='$sPRIfldbl'
15870 sPRIgldbl='$sPRIgldbl'
15871 sPRIi64='$sPRIi64'
15872 sPRIo64='$sPRIo64'
15873 sPRIu64='$sPRIu64'
15874 sPRIx64='$sPRIx64'
15875 sSCNfldbl='$sSCNfldbl'
15876 sched_yield='$sched_yield'
15877 scriptdir='$scriptdir'
15878 scriptdirexp='$scriptdirexp'
15879 sed='$sed'
15880 seedfunc='$seedfunc'
15881 selectminbits='$selectminbits'
15882 selecttype='$selecttype'
15883 sendmail='$sendmail'
15884 sh='$sh'
15885 shar='$shar'
15886 sharpbang='$sharpbang'
15887 shmattype='$shmattype'
15888 shortsize='$shortsize'
15889 shrpenv='$shrpenv'
15890 shsharp='$shsharp'
15891 sig_count='$sig_count'
15892 sig_name='$sig_name'
15893 sig_name_init='$sig_name_init'
15894 sig_num='$sig_num'
15895 sig_num_init='$sig_num_init'
15896 signal_t='$signal_t'
15897 sitearch='$sitearch'
15898 sitearchexp='$sitearchexp'
15899 sitebin='$sitebin'
15900 sitebinexp='$sitebinexp'
15901 sitelib='$sitelib'
15902 sitelib_stem='$sitelib_stem'
15903 sitelibexp='$sitelibexp'
15904 siteprefix='$siteprefix'
15905 siteprefixexp='$siteprefixexp'
15906 sizesize='$sizesize'
15907 sizetype='$sizetype'
15908 sleep='$sleep'
15909 smail='$smail'
15910 so='$so'
15911 sockethdr='$sockethdr'
15912 socketlib='$socketlib'
15913 socksizetype='$socksizetype'
15914 sort='$sort'
15915 spackage='$spackage'
15916 spitshell='$spitshell'
15917 src='$src'
15918 ssizetype='$ssizetype'
15919 startperl='$startperl'
15920 startsh='$startsh'
15921 static_ext='$static_ext'
15922 stdchar='$stdchar'
15923 stdio_base='$stdio_base'
15924 stdio_bufsiz='$stdio_bufsiz'
15925 stdio_cnt='$stdio_cnt'
15926 stdio_filbuf='$stdio_filbuf'
15927 stdio_ptr='$stdio_ptr'
15928 stdio_stream_array='$stdio_stream_array'
15929 strings='$strings'
15930 submit='$submit'
15931 subversion='$subversion'
15932 sysman='$sysman'
15933 tail='$tail'
15934 tar='$tar'
15935 tbl='$tbl'
15936 tee='$tee'
15937 test='$test'
15938 timeincl='$timeincl'
15939 timetype='$timetype'
15940 touch='$touch'
15941 tr='$tr'
15942 trnl='$trnl'
15943 troff='$troff'
15944 u16size='$u16size'
15945 u16type='$u16type'
15946 u32size='$u32size'
15947 u32type='$u32type'
15948 u64size='$u64size'
15949 u64type='$u64type'
15950 u8size='$u8size'
15951 u8type='$u8type'
15952 uidformat='$uidformat'
15953 uidsign='$uidsign'
15954 uidsize='$uidsize'
15955 uidtype='$uidtype'
15956 uname='$uname'
15957 uniq='$uniq'
15958 uquadtype='$uquadtype'
15959 use5005threads='$use5005threads'
15960 use64bitall='$use64bitall'
15961 use64bitint='$use64bitint'
15962 usedl='$usedl'
15963 useithreads='$useithreads'
15964 uselargefiles='$uselargefiles'
15965 uselongdouble='$uselongdouble'
15966 usemorebits='$usemorebits'
15967 usemultiplicity='$usemultiplicity'
15968 usemymalloc='$usemymalloc'
15969 usenm='$usenm'
15970 useopcode='$useopcode'
15971 useperlio='$useperlio'
15972 useposix='$useposix'
15973 usesfio='$usesfio'
15974 useshrplib='$useshrplib'
15975 usesocks='$usesocks'
15976 usethreads='$usethreads'
15977 usevendorprefix='$usevendorprefix'
15978 usevfork='$usevfork'
15979 usrinc='$usrinc'
15980 uuname='$uuname'
15981 uvXUformat='$uvXUformat'
15982 uvoformat='$uvoformat'
15983 uvsize='$uvsize'
15984 uvtype='$uvtype'
15985 uvuformat='$uvuformat'
15986 uvxformat='$uvxformat'
15987 vendorarch='$vendorarch'
15988 vendorarchexp='$vendorarchexp'
15989 vendorbin='$vendorbin'
15990 vendorbinexp='$vendorbinexp'
15991 vendorlib='$vendorlib'
15992 vendorlib_stem='$vendorlib_stem'
15993 vendorlibexp='$vendorlibexp'
15994 vendorprefix='$vendorprefix'
15995 vendorprefixexp='$vendorprefixexp'
15996 version='$version'
15997 vi='$vi'
15998 voidflags='$voidflags'
15999 xlibpth='$xlibpth'
16000 xs_apiversion='$xs_apiversion'
16001 zcat='$zcat'
16002 zip='$zip'
16003 EOT
16004
16005 : Add in command line options if available
16006 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
16007
16008 : add special variables
16009 $test -f $src/patchlevel.h && \
16010 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
16011 echo "CONFIGDOTSH=true" >>config.sh
16012
16013 : propagate old symbols
16014 if $test -f UU/config.sh; then
16015         <UU/config.sh sort | uniq >UU/oldconfig.sh
16016         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
16017         sort | uniq -u >UU/oldsyms
16018         set X `cat UU/oldsyms`
16019         shift
16020         case $# in
16021         0) ;;
16022         *)
16023                 cat <<EOM
16024 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
16025 EOM
16026                 echo "# Variables propagated from previous config.sh file." >>config.sh
16027                 for sym in `cat UU/oldsyms`; do
16028                         echo "    Propagating $hint variable "'$'"$sym..."
16029                         eval 'tmp="$'"${sym}"'"'
16030                         echo "$tmp" | \
16031                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
16032                 done
16033                 ;;
16034         esac
16035 fi
16036
16037 : Finish up by extracting the .SH files
16038 case "$alldone" in
16039 exit)
16040         $rm -rf UU
16041         echo "Done."
16042         exit 0
16043         ;;
16044 cont)
16045         ;;
16046 '')
16047         dflt=''
16048         nostick=true
16049         $cat <<EOM
16050
16051 If you'd like to make any changes to the config.sh file before I begin
16052 to configure things, do it as a shell escape now (e.g. !vi config.sh).
16053
16054 EOM
16055         rp="Press return or use a shell escape to edit config.sh:"
16056         . UU/myread
16057         nostick=''
16058         case "$ans" in
16059         '') ;;
16060         *) : in case they cannot read
16061                 sh 1>&4 -c "$ans";;
16062         esac
16063         ;;
16064 esac
16065
16066 : if this fails, just run all the .SH files by hand
16067 . ./config.sh
16068
16069 echo " "
16070 exec 1>&4
16071 . ./UU/extract
16072
16073 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
16074         dflt=y
16075         case "$silent" in
16076         true) ;;
16077         *)
16078                 $cat <<EOM
16079
16080 Now you need to generate make dependencies by running "$make depend".
16081 You might prefer to run it in background: "$make depend > makedepend.out &"
16082 It can take a while, so you might not want to run it right now.
16083
16084 EOM
16085                 ;;
16086         esac
16087         rp="Run $make depend now?"
16088         . UU/myread
16089         case "$ans" in
16090         y*)
16091                 $make depend && echo "Now you must run '$make'."
16092                 ;;
16093         *)
16094                 echo "You must run '$make depend' then '$make'."
16095                 ;;
16096         esac
16097 elif test -f [Mm]akefile; then
16098         echo " "
16099         echo "Now you must run a $make."
16100 else
16101         echo "Done."
16102 fi
16103
16104 if $test -f Policy.sh; then
16105     $cat <<EOM
16106
16107 If you compile $package on a different machine or from a different object
16108 directory, copy the Policy.sh file from this object directory to the
16109 new one before you run Configure -- this will help you with most of
16110 the policy defaults.
16111
16112 EOM
16113 fi
16114 if $test -f config.msg; then
16115     echo "Hmm.  I also noted the following information while running:"
16116     echo " "
16117     $cat config.msg >&4
16118     $rm -f config.msg
16119 fi
16120 $rm -f kit*isdone ark*isdone
16121 $rm -rf UU
16122
16123 : End of Configure
16124