update Changes
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Fri Feb  4 21:57:24 EET 2000 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by perlbug@perl.com)
25
26 cat >/tmp/c1$$ <<EOF
27 ARGGGHHHH!!!!!
28
29 SCO csh still thinks true is false.  Write to SCO today and tell them that next
30 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
31
32 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
33 we'd have to do is go in and swap the && and || tokens, wherever they are.)
34
35 [End of diatribe. We now return you to your regularly scheduled programming...]
36 EOF
37 cat >/tmp/c2$$ <<EOF
38
39 OOPS!  You naughty creature!  You didn't run Configure with sh!
40 I will attempt to remedy the situation by running sh for you...
41 EOF
42
43 true || cat /tmp/c1$$ /tmp/c2$$
44 true || exec sh $0 $argv:q
45
46 (exit $?0) || cat /tmp/c2$$
47 (exit $?0) || exec sh $0 $argv:q
48 rm -f /tmp/c1$$ /tmp/c2$$
49
50 : compute my invocation name
51 me=$0
52 case "$0" in
53 */*)
54         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
55         test "$me" || me=$0
56         ;;
57 esac
58
59 : Proper separator for the PATH environment variable
60 p_=:
61 : On OS/2 this directory should exist if this is not floppy only system :-]
62 if test -d c:/. ; then
63     if test -n "$OS2_SHELL"; then
64                 p_=\;
65                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
66                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
67         elif test -n "$DJGPP"; then
68                 p_=\;
69         fi
70 fi
71
72 : Proper PATH setting
73 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
74 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
75 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
76 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
77 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
78 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
79 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
80 paths="$paths /sbin /usr/sbin /usr/libexec"
81
82 for p in $paths
83 do
84         case "$p_$PATH$p_" in
85         *$p_$p$p_*) ;;
86         *) test -d $p && PATH=$PATH$p_$p ;;
87         esac
88 done
89
90 PATH=.$p_$PATH
91 export PATH
92
93 : shall we be using ksh?
94 inksh=''
95 needksh=''
96 avoidksh=''
97 newsh=/bin/ksh
98 changesh=''
99 if (PATH=.; alias -x) >/dev/null 2>&1; then
100                 inksh=true
101 fi
102 if test -f /hp-ux -a -f /bin/ksh; then
103         needksh='to avoid sh bug in "here document" expansion'
104 fi
105 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
106         if test X`/usr/bin/uname -v` = X4; then
107                 avoidksh="to avoid AIX 4's /bin/sh"
108                 newsh=/usr/bin/bsh
109         fi
110 fi
111 if test -f /osf_boot -a -f /usr/sbin/setld; then
112         if test X`/usr/bin/uname -s` = XOSF1; then
113                 avoidksh="to avoid Digital UNIX' ksh"
114                 newsh=/bin/sh
115                 unset BIN_SH # if this is 'xpg4' sh will start up ksh
116         fi
117 fi
118 case "$inksh/$needksh" in
119 /[a-z]*)
120                 ENV=''
121                 changesh=true
122                 reason="$needksh"
123         ;;
124 esac
125 case "$inksh/$avoidksh" in
126 true/[a-z]*)
127         changesh=true
128         reason="$avoidksh"
129         ;;
130 esac
131 case "$inksh/$needksh-$avoidksh-" in
132 true/--)
133                 cat <<EOM
134 (I see you are using the Korn shell.  Some ksh's blow up on $me,
135 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
136 EOM
137         ;;
138 esac
139 case "$changesh" in
140 true)
141         echo "(Feeding myself to $newsh $reason.)"
142         case "$0" in
143         Configure|*/Configure) exec $newsh $0 "$@";;
144         *) exec $newsh Configure "$@";;
145         esac
146         ;;
147 esac
148
149 : if needed set CDPATH to a harmless value that is not chatty
150 : avoid bash 2.02 problems with empty CDPATH.
151 case "$CDPATH" in
152 '')     ;;
153 *)      case "$SHELL" in
154         *bash*) CDPATH='.' ;;
155         *)              CDPATH='' ;;
156         esac
157         ;;
158 esac
159 : Configure runs within the UU subdirectory
160 test -d UU || mkdir UU
161 cd UU && rm -f ./*
162
163 ccsymbols=''
164 cppccsymbols=''
165 cppsymbols=''
166 dynamic_ext=''
167 extensions=''
168 known_extensions=''
169 nonxs_ext=''
170 static_ext=''
171 useopcode=''
172 useposix=''
173 d_bsd=''
174 d_eunice=''
175 d_xenix=''
176 eunicefix=''
177 Mcc=''
178 ar=''
179 awk=''
180 bash=''
181 bison=''
182 byacc=''
183 cat=''
184 chgrp=''
185 chmod=''
186 chown=''
187 comm=''
188 compress=''
189 cp=''
190 cpio=''
191 cpp=''
192 csh=''
193 date=''
194 echo=''
195 egrep=''
196 emacs=''
197 expr=''
198 find=''
199 flex=''
200 grep=''
201 gzip=''
202 inews=''
203 ksh=''
204 less=''
205 line=''
206 lint=''
207 ln=''
208 lp=''
209 lpr=''
210 ls=''
211 mail=''
212 mailx=''
213 make=''
214 mkdir=''
215 more=''
216 mv=''
217 nm=''
218 nroff=''
219 perl=''
220 pg=''
221 pmake=''
222 pr=''
223 rm=''
224 rmail=''
225 sed=''
226 sendmail=''
227 shar=''
228 sleep=''
229 smail=''
230 sort=''
231 submit=''
232 tail=''
233 tar=''
234 tbl=''
235 tee=''
236 test=''
237 touch=''
238 tr=''
239 troff=''
240 uname=''
241 uniq=''
242 uuname=''
243 vi=''
244 zcat=''
245 zip=''
246 full_ar=''
247 full_sed=''
248 libswanted=''
249 hint=''
250 myuname=''
251 osname=''
252 osvers=''
253 Author=''
254 Date=''
255 Header=''
256 Id=''
257 Locker=''
258 Log=''
259 RCSfile=''
260 Revision=''
261 Source=''
262 State=''
263 _a=''
264 _exe=''
265 _o=''
266 archobjs=''
267 exe_ext=''
268 firstmakefile=''
269 lib_ext=''
270 obj_ext=''
271 path_sep=''
272 afs=''
273 alignbytes=''
274 ansi2knr=''
275 archlib=''
276 archlibexp=''
277 d_archlib=''
278 installarchlib=''
279 archname=''
280 myarchname=''
281 d_atolf=''
282 d_atoll=''
283 baserev=''
284 bin=''
285 binexp=''
286 installbin=''
287 bincompat5005=''
288 d_bincompat5005=''
289 byteorder=''
290 cc=''
291 gccversion=''
292 ccflags=''
293 cppflags=''
294 ldflags=''
295 lkflags=''
296 locincpth=''
297 optimize=''
298 cf_email=''
299 cf_by=''
300 cf_time=''
301 charsize=''
302 contains=''
303 cpp_stuff=''
304 cpplast=''
305 cppminus=''
306 cpprun=''
307 cppstdin=''
308 crosscompile=''
309 d_access=''
310 d_accessx=''
311 d_alarm=''
312 d_attribut=''
313 d_bcmp=''
314 d_bcopy=''
315 d_bzero=''
316 d_casti32=''
317 castflags=''
318 d_castneg=''
319 d_chown=''
320 d_chroot=''
321 d_chsize=''
322 d_closedir=''
323 d_void_closedir=''
324 d_const=''
325 cryptlib=''
326 d_crypt=''
327 d_csh=''
328 full_csh=''
329 d_cuserid=''
330 d_dbl_dig=''
331 d_difftime=''
332 d_dlerror=''
333 d_dlopen=''
334 d_dlsymun=''
335 d_dosuid=''
336 d_suidsafe=''
337 d_drand48proto=''
338 d_dup2=''
339 d_eaccess=''
340 d_endgrent=''
341 d_endhent=''
342 d_endnent=''
343 d_endpent=''
344 d_endpwent=''
345 d_endsent=''
346 d_endspent=''
347 d_fchmod=''
348 d_fchown=''
349 d_fcntl=''
350 d_fd_macros=''
351 d_fd_set=''
352 d_fds_bits=''
353 d_fgetpos=''
354 d_flexfnam=''
355 d_flock=''
356 d_fork=''
357 d_fs_data_s=''
358 d_fseeko=''
359 d_fsetpos=''
360 d_fstatfs=''
361 d_ftello=''
362 d_ftime=''
363 d_gettimeod=''
364 d_Gconvert=''
365 d_getgrent=''
366 d_getgrps=''
367 d_gethbyaddr=''
368 d_gethbyname=''
369 d_gethent=''
370 aphostname=''
371 d_gethname=''
372 d_phostname=''
373 d_uname=''
374 d_gethostprotos=''
375 d_getlogin=''
376 d_getmnt=''
377 d_getmntent=''
378 d_getnbyaddr=''
379 d_getnbyname=''
380 d_getnent=''
381 d_getnetprotos=''
382 d_getpent=''
383 d_getpgid=''
384 d_getpgrp2=''
385 d_bsdgetpgrp=''
386 d_getpgrp=''
387 d_getppid=''
388 d_getprior=''
389 d_getpbyname=''
390 d_getpbynumber=''
391 d_getprotoprotos=''
392 d_getpwent=''
393 d_getsent=''
394 d_getservprotos=''
395 d_getspent=''
396 d_getspnam=''
397 d_getsbyname=''
398 d_getsbyport=''
399 d_gnulibc=''
400 d_hasmntopt=''
401 d_htonl=''
402 d_iconv=''
403 d_inetaton=''
404 d_int64t=''
405 d_isascii=''
406 d_killpg=''
407 d_lchown=''
408 d_ldbl_dig=''
409 d_link=''
410 d_locconv=''
411 d_lockf=''
412 d_longdbl=''
413 longdblsize=''
414 d_longlong=''
415 longlongsize=''
416 d_lstat=''
417 d_mblen=''
418 d_mbstowcs=''
419 d_mbtowc=''
420 d_memchr=''
421 d_memcmp=''
422 d_memcpy=''
423 d_memmove=''
424 d_memset=''
425 d_mkdir=''
426 d_mkfifo=''
427 d_mktime=''
428 d_msg=''
429 d_msgctl=''
430 d_msgget=''
431 d_msgrcv=''
432 d_msgsnd=''
433 d_nice=''
434 d_open3=''
435 d_fpathconf=''
436 d_pathconf=''
437 d_pause=''
438 d_pipe=''
439 d_poll=''
440 d_portable=''
441 d_old_pthread_create_joinable=''
442 old_pthread_create_joinable=''
443 d_pthread_yield=''
444 d_sched_yield=''
445 sched_yield=''
446 d_readdir=''
447 d_rewinddir=''
448 d_seekdir=''
449 d_telldir=''
450 d_readlink=''
451 d_rename=''
452 d_rmdir=''
453 d_safebcpy=''
454 d_safemcpy=''
455 d_sanemcmp=''
456 d_select=''
457 d_sem=''
458 d_semctl=''
459 d_semget=''
460 d_semop=''
461 d_setegid=''
462 d_seteuid=''
463 d_setgrent=''
464 d_setgrps=''
465 d_sethent=''
466 d_setlinebuf=''
467 d_setlocale=''
468 d_setnent=''
469 d_setpent=''
470 d_setpgid=''
471 d_setpgrp2=''
472 d_bsdsetpgrp=''
473 d_setpgrp=''
474 d_setprior=''
475 d_setpwent=''
476 d_setregid=''
477 d_setresgid=''
478 d_setresuid=''
479 d_setreuid=''
480 d_setrgid=''
481 d_setruid=''
482 d_setsent=''
483 d_setsid=''
484 d_setspent=''
485 d_setvbuf=''
486 d_sfio=''
487 usesfio=''
488 d_shm=''
489 d_shmat=''
490 d_shmatprototype=''
491 shmattype=''
492 d_shmctl=''
493 d_shmdt=''
494 d_shmget=''
495 d_sigaction=''
496 d_sigsetjmp=''
497 d_msg_ctrunc=''
498 d_msg_dontroute=''
499 d_msg_oob=''
500 d_msg_peek=''
501 d_msg_proxy=''
502 d_oldsock=''
503 d_scm_rights=''
504 d_socket=''
505 d_sockpair=''
506 sockethdr=''
507 socketlib=''
508 d_sqrtl=''
509 d_statblks=''
510 d_statfs_f_flags=''
511 d_statfs_s=''
512 d_fstatvfs=''
513 d_statvfs=''
514 d_stdio_cnt_lval=''
515 d_stdio_ptr_lval=''
516 d_stdiobase=''
517 d_stdstdio=''
518 stdio_base=''
519 stdio_bufsiz=''
520 stdio_cnt=''
521 stdio_filbuf=''
522 stdio_ptr=''
523 d_index=''
524 d_strchr=''
525 d_strcoll=''
526 d_strctcpy=''
527 d_strerrm=''
528 d_strerror=''
529 d_sysernlst=''
530 d_syserrlst=''
531 d_strtod=''
532 d_strtol=''
533 d_strtold=''
534 d_strtoll=''
535 d_strtoul=''
536 d_strtoull=''
537 d_strtouq=''
538 d_strxfrm=''
539 d_symlink=''
540 d_syscall=''
541 d_sysconf=''
542 d_system=''
543 d_tcgetpgrp=''
544 d_tcsetpgrp=''
545 d_telldirproto=''
546 d_time=''
547 timetype=''
548 clocktype=''
549 d_times=''
550 d_truncate=''
551 d_tzname=''
552 d_umask=''
553 d_semctl_semid_ds=''
554 d_semctl_semun=''
555 d_union_semun=''
556 d_ustat=''
557 d_vfork=''
558 usevfork=''
559 d_voidsig=''
560 signal_t=''
561 d_volatile=''
562 d_charvspr=''
563 d_vprintf=''
564 d_wait4=''
565 d_waitpid=''
566 d_wcstombs=''
567 d_wctomb=''
568 dlext=''
569 cccdlflags=''
570 ccdlflags=''
571 dlsrc=''
572 ld=''
573 lddlflags=''
574 usedl=''
575 doublesize=''
576 ebcdic=''
577 fflushNULL=''
578 fflushall=''
579 fpossize=''
580 fpostype=''
581 gidformat=''
582 gidsign=''
583 gidsize=''
584 gidtype=''
585 groupstype=''
586 h_fcntl=''
587 h_sysfile=''
588 i_arpainet=''
589 db_hashtype=''
590 db_prefixtype=''
591 i_db=''
592 i_dbm=''
593 i_rpcsvcdbm=''
594 d_dirnamlen=''
595 direntrytype=''
596 i_dirent=''
597 i_dld=''
598 i_dlfcn=''
599 i_fcntl=''
600 i_float=''
601 i_gdbm=''
602 d_grpasswd=''
603 i_grp=''
604 i_iconv=''
605 i_inttypes=''
606 i_limits=''
607 i_locale=''
608 i_machcthr=''
609 i_malloc=''
610 i_math=''
611 i_memory=''
612 i_mntent=''
613 i_ndbm=''
614 i_netdb=''
615 i_neterrno=''
616 i_netinettcp=''
617 i_niin=''
618 i_sysin=''
619 i_poll=''
620 i_pthread=''
621 d_pwage=''
622 d_pwchange=''
623 d_pwclass=''
624 d_pwcomment=''
625 d_pwexpire=''
626 d_pwgecos=''
627 d_pwpasswd=''
628 d_pwquota=''
629 i_pwd=''
630 i_sfio=''
631 i_shadow=''
632 i_socks=''
633 i_stddef=''
634 i_stdlib=''
635 i_string=''
636 strings=''
637 i_sysaccess=''
638 i_sysdir=''
639 i_sysfile=''
640 d_voidtty=''
641 i_bsdioctl=''
642 i_sysfilio=''
643 i_sysioctl=''
644 i_syssockio=''
645 i_sysmount=''
646 i_sysndir=''
647 i_sysparam=''
648 i_sysresrc=''
649 i_syssecrt=''
650 i_sysselct=''
651 i_sysstat=''
652 i_sysstatfs=''
653 i_sysstatvfs=''
654 i_systimes=''
655 i_systypes=''
656 i_sysuio=''
657 i_sysun=''
658 i_sysvfs=''
659 i_syswait=''
660 i_sgtty=''
661 i_termio=''
662 i_termios=''
663 i_systime=''
664 i_systimek=''
665 i_time=''
666 timeincl=''
667 i_unistd=''
668 i_ustat=''
669 i_utime=''
670 i_values=''
671 i_stdarg=''
672 i_varargs=''
673 i_varhdr=''
674 i_vfork=''
675 inc_version_list=''
676 inc_version_list_init=''
677 installprefix=''
678 installprefixexp=''
679 installstyle=''
680 installusrbinperl=''
681 intsize=''
682 longsize=''
683 shortsize=''
684 d_fpos64_t=''
685 d_off64_t=''
686 libc=''
687 ldlibpthname=''
688 libperl=''
689 shrpenv=''
690 useshrplib=''
691 glibpth=''
692 libpth=''
693 loclibpth=''
694 plibpth=''
695 xlibpth=''
696 ignore_versioned_solibs=''
697 libs=''
698 libsdirs=''
699 libsfiles=''
700 libsfound=''
701 lns=''
702 d_PRIEldbl=''
703 d_PRIFldbl=''
704 d_PRIGldbl=''
705 d_PRIeldbl=''
706 d_PRIfldbl=''
707 d_PRIgldbl=''
708 sPRIEldbl=''
709 sPRIFldbl=''
710 sPRIGldbl=''
711 sPRIeldbl=''
712 sPRIfldbl=''
713 sPRIgldbl=''
714 lseeksize=''
715 lseektype=''
716 make_set_make=''
717 d_mymalloc=''
718 freetype=''
719 mallocobj=''
720 mallocsrc=''
721 malloctype=''
722 usemymalloc=''
723 installman1dir=''
724 man1dir=''
725 man1direxp=''
726 man1ext=''
727 installman3dir=''
728 man3dir=''
729 man3direxp=''
730 man3ext=''
731 huge=''
732 large=''
733 medium=''
734 models=''
735 small=''
736 split=''
737 modetype=''
738 multiarch=''
739 mydomain=''
740 myhostname=''
741 phostname=''
742 c=''
743 n=''
744 d_eofnblk=''
745 eagain=''
746 o_nonblock=''
747 rd_nodata=''
748 netdb_hlen_type=''
749 netdb_host_type=''
750 netdb_name_type=''
751 netdb_net_type=''
752 groupcat=''
753 hostcat=''
754 passcat=''
755 orderlib=''
756 ranlib=''
757 package=''
758 spackage=''
759 pager=''
760 api_revision=''
761 api_subversion=''
762 api_version=''
763 api_versionstring=''
764 patchlevel=''
765 subversion=''
766 version=''
767 perladmin=''
768 perlpath=''
769 d_nv_preserves_uv=''
770 i16size=''
771 i16type=''
772 i32size=''
773 i32type=''
774 i64size=''
775 i64type=''
776 i8size=''
777 i8type=''
778 ivsize=''
779 ivtype=''
780 nvsize=''
781 nvtype=''
782 u16size=''
783 u16type=''
784 u32size=''
785 u32type=''
786 u64size=''
787 u64type=''
788 u8size=''
789 u8type=''
790 uvsize=''
791 uvtype=''
792 ivdformat=''
793 uvoformat=''
794 uvuformat=''
795 uvxformat=''
796 pidtype=''
797 prefix=''
798 prefixexp=''
799 installprivlib=''
800 privlib=''
801 privlibexp=''
802 prototype=''
803 ptrsize=''
804 d_PRIX64=''
805 d_PRId64=''
806 d_PRIi64=''
807 d_PRIo64=''
808 d_PRIu64=''
809 d_PRIx64=''
810 sPRIX64=''
811 sPRId64=''
812 sPRIi64=''
813 sPRIo64=''
814 sPRIu64=''
815 sPRIx64=''
816 d_quad=''
817 quadkind=''
818 quadtype=''
819 uquadtype=''
820 drand01=''
821 randbits=''
822 randfunc=''
823 randseedtype=''
824 seedfunc=''
825 installscript=''
826 scriptdir=''
827 scriptdirexp=''
828 selectminbits=''
829 selecttype=''
830 sh=''
831 sig_count=''
832 sig_name=''
833 sig_name_init=''
834 sig_num=''
835 sig_num_init=''
836 installsitearch=''
837 sitearch=''
838 sitearchexp=''
839 installsitebin=''
840 sitebin=''
841 sitebinexp=''
842 installsitelib=''
843 sitelib=''
844 sitelibexp=''
845 siteprefix=''
846 siteprefixexp=''
847 sizetype=''
848 so=''
849 sharpbang=''
850 shsharp=''
851 spitshell=''
852 src=''
853 ssizetype=''
854 startperl=''
855 startsh=''
856 stdchar=''
857 d_stdio_stream_array=''
858 stdio_stream_array=''
859 sysman=''
860 trnl=''
861 uidformat=''
862 uidsign=''
863 uidsize=''
864 uidtype=''
865 archname64=''
866 use64bits=''
867 uselargefiles=''
868 uselongdouble=''
869 uselonglong=''
870 usemorebits=''
871 usemultiplicity=''
872 nm_opt=''
873 nm_so_opt=''
874 runnm=''
875 usenm=''
876 useperlio=''
877 usesocks=''
878 d_oldpthreads=''
879 use5005threads=''
880 useithreads=''
881 usethreads=''
882 incpath=''
883 mips_type=''
884 usrinc=''
885 d_vendorbin=''
886 installvendorbin=''
887 vendorbin=''
888 vendorbinexp=''
889 d_vendorlib=''
890 installvendorlib=''
891 vendorlib=''
892 vendorlibexp=''
893 usevendorprefix=''
894 vendorprefix=''
895 vendorprefixexp=''
896 defvoidused=''
897 voidflags=''
898 CONFIG=''
899
900 define='define'
901 undef='undef'
902 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
903 rmlist=''
904
905 : We must find out about Eunice early
906 eunicefix=':'
907 if test -f /etc/unixtovms; then
908         eunicefix=/etc/unixtovms
909 fi
910 if test -f /etc/unixtovms.exe; then
911         eunicefix=/etc/unixtovms.exe
912 fi
913
914 i_whoami=''
915 : set useposix=false in your hint file to disable the POSIX extension.
916 useposix=true
917 : set useopcode=false in your hint file to disable the Opcode extension.
918 useopcode=true
919 : Trailing extension.  Override this in a hint file, if needed.
920 _exe=''
921 : Extra object files, if any, needed on this platform.
922 archobjs=''
923 : Possible local include directories to search.
924 : Set locincpth to "" in a hint file to defeat local include searches.
925 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
926 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
927 :
928 : no include file wanted by default
929 inclwanted=''
930
931 groupstype=''
932 : change the next line if compiling for Xenix/286 on Xenix/386
933 xlibpth='/usr/lib/386 /lib/386'
934
935 : Possible local library directories to search.
936 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
937 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
938
939 : general looking path for locating libraries
940 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
941 glibpth="$glibpth /lib /usr/lib $xlibpth"
942 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
943 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
944
945 : Private path used by Configure to find libraries.  Its value
946 : is prepended to libpth. This variable takes care of special
947 : machines, like the mips.  Usually, it should be empty.
948 plibpth=''
949
950 : default library list
951 libswanted=''
952 : some systems want to use only the non-versioned libso:s
953 ignore_versioned_solibs=''
954 : set usemultiplicity on the Configure command line to enable multiplicity.
955 : set usesocks on the Configure command line to enable socks.
956 : set usethreads on the Configure command line to enable threads.
957 : full support for void wanted by default
958 defvoidused=15
959
960 : List of libraries we want.
961 : If anyone needs -lnet, put it in a hint file.
962 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
963 libswanted="$libswanted dld ld sun m c cposix posix"
964 libswanted="$libswanted ndir dir crypt sec"
965 libswanted="$libswanted ucb bsd BSD PW x"
966 : We probably want to search /usr/shlib before most other libraries.
967 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
968 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
969 glibpth="/usr/shlib $glibpth"
970 : Do not use vfork unless overridden by a hint file.
971 usevfork=false
972
973 : Find the basic shell for Bourne shell scripts
974 case "$sh" in
975 '')
976         case "$SYSTYPE" in
977         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
978         *) xxx='/bin/sh';;
979         esac
980         if test -f "$xxx"; then
981                 sh="$xxx"
982         else
983                 : Build up a list and do a single loop so we can 'break' out.
984                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
985                 for xxx in sh bash ksh pdksh ash; do
986                         for p in $pth; do
987                                 try="$try ${p}/${xxx}"
988                         done
989                 done
990                 for xxx in $try; do
991                         if test -f "$xxx"; then
992                                 sh="$xxx";
993                                 break
994                         elif test -f "$xxx.exe"; then
995                                 sh="$xxx";
996                                 break
997                         fi
998                 done
999         fi
1000         ;;
1001 esac
1002
1003 case "$sh" in
1004 '')     cat <<EOM >&2
1005 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1006
1007 Usually it's in /bin/sh.  How did you even get this far?
1008 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1009 we'll try to straighten this all out.
1010 EOM
1011         exit 1
1012         ;;
1013 esac
1014
1015 : see if sh knows # comments
1016 if `$sh -c '#' >/dev/null 2>&1`; then
1017         shsharp=true
1018         spitshell=cat
1019         xcat=/bin/cat
1020         test -f $xcat || xcat=/usr/bin/cat
1021         echo "#!$xcat" >try
1022         $eunicefix try
1023         chmod +x try
1024         ./try > today
1025         if test -s today; then
1026                 sharpbang='#!'
1027         else
1028                 echo "#! $xcat" > try
1029                 $eunicefix try
1030                 chmod +x try
1031                 ./try > today
1032                 if test -s today; then
1033                         sharpbang='#! '
1034                 else
1035                         sharpbang=': use '
1036                 fi
1037         fi
1038 else
1039         echo " "
1040         echo "Your $sh doesn't grok # comments--I will strip them later on."
1041         shsharp=false
1042         cd ..
1043         echo "exec grep -v '^[  ]*#'" >spitshell
1044         chmod +x spitshell
1045         $eunicefix spitshell
1046         spitshell=`pwd`/spitshell
1047         cd UU
1048         echo "I presume that if # doesn't work, #! won't work either!"
1049         sharpbang=': use '
1050 fi
1051 rm -f try today
1052
1053 : figure out how to guarantee sh startup
1054 case "$startsh" in
1055 '') startsh=${sharpbang}${sh} ;;
1056 *)
1057 esac
1058 cat >try <<EOSS
1059 $startsh
1060 set abc
1061 test "$?abc" != 1
1062 EOSS
1063
1064 chmod +x try
1065 $eunicefix try
1066 if ./try; then
1067         : echo "Yup, it does."
1068 else
1069         echo "Hmm... '$startsh' does not guarantee sh startup..."
1070         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1071 fi
1072 rm -f try
1073
1074
1075 : Save command line options in file UU/cmdline.opt for later use in
1076 : generating config.sh.
1077 cat > cmdline.opt <<EOSH
1078 # Configure command line arguments.
1079 config_arg0='$0'
1080 config_args='$*'
1081 config_argc=$#
1082 EOSH
1083 argn=1
1084 for arg in "$@"; do
1085         cat >>cmdline.opt <<EOSH
1086 config_arg$argn='$arg'
1087 EOSH
1088         argn=`expr $argn + 1`
1089 done
1090
1091 : produce awk script to parse command line options
1092 cat >options.awk <<'EOF'
1093 BEGIN {
1094         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1095
1096         len = length(optstr);
1097         for (i = 1; i <= len; i++) {
1098                 c = substr(optstr, i, 1);
1099                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1100                 if (a == ":") {
1101                         arg[c] = 1;
1102                         i++;
1103                 }
1104                 opt[c] = 1;
1105         }
1106 }
1107 {
1108         expect = 0;
1109         str = $0;
1110         if (substr(str, 1, 1) != "-") {
1111                 printf("'%s'\n", str);
1112                 next;
1113         }
1114         len = length($0);
1115         for (i = 2; i <= len; i++) {
1116                 c = substr(str, i, 1);
1117                 if (!opt[c]) {
1118                         printf("-%s\n", substr(str, i));
1119                         next;
1120                 }
1121                 printf("-%s\n", c);
1122                 if (arg[c]) {
1123                         if (i < len)
1124                                 printf("'%s'\n", substr(str, i + 1));
1125                         else
1126                                 expect = 1;
1127                         next;
1128                 }
1129         }
1130 }
1131 END {
1132         if (expect)
1133                 print "?";
1134 }
1135 EOF
1136
1137 : process the command line options
1138 set X `for arg in "$@"; do echo "X$arg"; done |
1139         sed -e s/X// | awk -f options.awk`
1140 eval "set $*"
1141 shift
1142 rm -f options.awk
1143
1144 : set up default values
1145 fastread=''
1146 reuseval=false
1147 config_sh=''
1148 alldone=''
1149 error=''
1150 silent=''
1151 extractsh=''
1152 override=''
1153 knowitall=''
1154 rm -f optdef.sh posthint.sh
1155 cat >optdef.sh <<EOS
1156 $startsh
1157 EOS
1158
1159
1160 : option parsing
1161 while test $# -gt 0; do
1162         case "$1" in
1163         -d) shift; fastread=yes;;
1164         -e) shift; alldone=cont;;
1165         -f)
1166                 shift
1167                 cd ..
1168                 if test -r "$1"; then
1169                         config_sh="$1"
1170                 else
1171                         echo "$me: cannot read config file $1." >&2
1172                         error=true
1173                 fi
1174                 cd UU
1175                 shift;;
1176         -h) shift; error=true;;
1177         -r) shift; reuseval=true;;
1178         -s) shift; silent=true; realsilent=true;;
1179         -E) shift; alldone=exit;;
1180         -K) shift; knowitall=true;;
1181         -O) shift; override=true;;
1182         -S) shift; silent=true; extractsh=true;;
1183         -D)
1184                 shift
1185                 case "$1" in
1186                 *=)
1187                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1188                         echo "$me: ignoring -D $1" >&2
1189                         ;;
1190                 *=*) echo "$1" | \
1191                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1192                 *) echo "$1='define'" >> optdef.sh;;
1193                 esac
1194                 shift
1195                 ;;
1196         -U)
1197                 shift
1198                 case "$1" in
1199                 *=) echo "$1" >> optdef.sh;;
1200                 *=*)
1201                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1202                         echo "$me: ignoring -U $1" >&2
1203                         ;;
1204                 *) echo "$1='undef'" >> optdef.sh;;
1205                 esac
1206                 shift
1207                 ;;
1208         -A)
1209             shift
1210             xxx=''
1211             yyy="$1"
1212             zzz=''
1213             uuu=undef
1214             case "$yyy" in
1215             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1216                  case "$zzz" in
1217                  *:*) zzz='' ;;
1218                  *)   xxx=append
1219                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1220                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1221                  esac
1222                  ;;
1223             esac
1224             case "$xxx" in
1225             '')  case "$yyy" in
1226                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1227                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1228                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1229                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1230                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1231                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1232                  esac
1233                  ;;       
1234             esac
1235             case "$xxx" in
1236             append)
1237                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1238             clear)
1239                 echo "$yyy=''"                  >> posthint.sh ;;
1240             define)
1241                 case "$zzz" in
1242                 '') zzz=define ;;
1243                 esac
1244                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1245             eval)
1246                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1247             prepend)
1248                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1249             undef)
1250                 case "$zzz" in
1251                 '') zzz="$uuu" ;;
1252                 esac
1253                 echo "$yyy=$zzz"                >> posthint.sh ;;
1254             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1255             esac
1256             ;;
1257         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1258             exit 0;;
1259         --) break;;
1260         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1261         *) break;;
1262         esac
1263 done
1264
1265 case "$error" in
1266 true)
1267         cat >&2 <<EOM
1268 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1269                  [-U symbol] [-U symbol=] [-A command:symbol...]
1270   -d : use defaults for all answers.
1271   -e : go on without questioning past the production of config.sh.
1272   -f : specify an alternate default configuration file.
1273   -h : print this help message and exit (with an error status).
1274   -r : reuse C symbols value if possible (skips costly nm extraction).
1275   -s : silent mode, only echoes questions and essential information.
1276   -D : define symbol to have some value:
1277          -D symbol         symbol gets the value 'define'
1278          -D symbol=value   symbol gets the value 'value'
1279   -E : stop at the end of questions, after having produced config.sh.
1280   -K : do not use unless you know what you are doing.
1281   -O : let -D and -U override definitions from loaded configuration file.
1282   -S : perform variable substitutions on all .SH files (can mix with -f)
1283   -U : undefine symbol:
1284          -U symbol    symbol gets the value 'undef'
1285          -U symbol=   symbol gets completely empty
1286   -A : manipulate symbol after the platform specific hints have been applied:
1287          -A symbol=value                append " "value to symbol
1288          -A append:symbol=value         append value to symbol
1289          -A define:symbol=value         define symbol to have value
1290          -A clear:symbol                define symbol to be ''
1291          -A define:symbol               define symbol to be 'define'
1292          -A eval:symbol=value           define symbol to be eval of value
1293          -A prepend:symbol=value        prepend value to symbol
1294          -A undef:symbol                define symbol to be 'undef'
1295          -A undef:symbol=               define symbol to be ''
1296   -V : print version number and exit (with a zero status).
1297 EOM
1298         exit 1
1299         ;;
1300 esac
1301
1302 : Sanity checks
1303 case "$fastread$alldone" in
1304 yescont|yesexit) ;;
1305 *)
1306         if test ! -t 0; then
1307                 echo "Say 'sh Configure', not 'sh <Configure'"
1308                 exit 1
1309         fi
1310         ;;
1311 esac
1312
1313 exec 4>&1
1314 case "$silent" in
1315 true) exec 1>/dev/null;;
1316 esac
1317
1318 : run the defines and the undefines, if any, but leave the file out there...
1319 touch optdef.sh
1320 . ./optdef.sh
1321 : create the posthint manipulation script and leave the file out there...
1322 touch posthint.sh
1323
1324 : set package name
1325 package=perl5
1326 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1327 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1328 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1329 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1330 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1331 esac
1332
1333 : Some greps do not return status, grrr.
1334 echo "grimblepritz" >grimble
1335 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1336         contains=contains
1337 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1338         contains=grep
1339 else
1340         contains=contains
1341 fi
1342 rm -f grimble
1343 : the following should work in any shell
1344 case "$contains" in
1345 contains*)
1346         echo " "
1347         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1348         cat >contains <<'EOSS'
1349 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1350 EOSS
1351 chmod +x contains
1352 esac
1353
1354 : Find the path to the source tree
1355 case "$src" in
1356 '') case "$0" in
1357     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1358          case "$src" in
1359          /*)    ;;
1360          *)     src=`cd ../$src && pwd` ;;
1361          esac
1362          ;;
1363     *)   src='.';;
1364     esac;;
1365 esac
1366 case "$src" in
1367 '')     src=/
1368         rsrc=/
1369         ;;
1370 /*) rsrc="$src";;
1371 *) rsrc="../$src";;
1372 esac
1373 if test -f $rsrc/Configure && \
1374         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1375 then
1376    : found it, so we are ok.
1377 else
1378         rsrc=''
1379         for src in . .. ../.. ../../.. ../../../..; do
1380                 if test -f ../$src/Configure && \
1381                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1382                 then
1383                         rsrc=../$src
1384                         break
1385                 fi
1386         done
1387 fi
1388 case "$rsrc" in
1389 '')
1390         cat <<EOM >&4
1391
1392 Sorry, I can't seem to locate the source dir for $package.  Please start
1393 Configure with an explicit path -- i.e. /some/path/Configure.
1394
1395 EOM
1396         exit 1
1397         ;;
1398 ../.)   rsrc='..';;
1399 *)
1400         echo " "
1401         echo "Sources for $package found in \"$src\"." >&4
1402         ;;
1403 esac
1404
1405 : script used to extract .SH files with variable substitutions
1406 cat >extract <<'EOS'
1407 CONFIGDOTSH=true
1408 echo "Doing variable substitutions on .SH files..."
1409 if test -f $src/MANIFEST; then
1410         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1411 else
1412         echo "(Looking for .SH files under the source directory.)"
1413         set x `(cd $src; find . -name "*.SH" -print)`
1414 fi
1415 shift
1416 case $# in
1417 0) set x `(cd $src; echo *.SH)`; shift;;
1418 esac
1419 if test ! -f $src/$1; then
1420         shift
1421 fi
1422 mkdir_p='
1423 name=$1;
1424 create="";
1425 while test $name; do
1426         if test ! -d "$name"; then
1427                 create="$name $create";
1428                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1429                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1430         else
1431                 name="";
1432         fi;
1433 done;
1434 for file in $create; do
1435         mkdir $file;
1436 done
1437 '
1438 for file in $*; do
1439         case "$src" in
1440         ".")
1441                 case "$file" in
1442                 */*)
1443                         dir=`expr X$file : 'X\(.*\)/'`
1444                         file=`expr X$file : 'X.*/\(.*\)'`
1445                         (cd $dir && . ./$file)
1446                         ;;
1447                 *)
1448                         . ./$file
1449                         ;;
1450                 esac
1451                 ;;
1452         *)
1453                 case "$file" in
1454                 */*)
1455                         dir=`expr X$file : 'X\(.*\)/'`
1456                         file=`expr X$file : 'X.*/\(.*\)'`
1457                         (set x $dir; shift; eval $mkdir_p)
1458                         sh <$src/$dir/$file
1459                         ;;
1460                 *)
1461                         sh <$src/$file
1462                         ;;
1463                 esac
1464                 ;;
1465         esac
1466 done
1467 if test -f $src/config_h.SH; then
1468         if test ! -f config.h; then
1469         : oops, they left it out of MANIFEST, probably, so do it anyway.
1470         . $src/config_h.SH
1471         fi
1472 fi
1473 EOS
1474
1475 : extract files and exit if asked to do so
1476 case "$extractsh" in
1477 true)
1478         case "$realsilent" in
1479         true) ;;
1480         *) exec 1>&4;;
1481         esac
1482         case "$config_sh" in
1483         '') config_sh='config.sh';;
1484         esac
1485         echo " "
1486         echo "Fetching answers from $config_sh..."
1487         cd ..
1488         . $config_sh
1489         test "$override" && . ./optdef.sh
1490         echo " "
1491         . UU/extract
1492         rm -rf UU
1493         echo "Done."
1494         exit 0
1495         ;;
1496 esac
1497
1498 : Eunice requires " " instead of "", can you believe it
1499 echo " "
1500 : Here we go...
1501 echo "Beginning of configuration questions for $package."
1502
1503 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1504
1505 : first determine how to suppress newline on echo command
1506 echo " "
1507 echo "Checking echo to see how to suppress newlines..."
1508 (echo "hi there\c" ; echo " ") >.echotmp
1509 if $contains c .echotmp >/dev/null 2>&1 ; then
1510         echo "...using -n."
1511         n='-n'
1512         c=''
1513 else
1514         cat <<'EOM'
1515 ...using \c
1516 EOM
1517         n=''
1518         c='\c'
1519 fi
1520 echo $n "The star should be here-->$c"
1521 echo '*'
1522 rm -f .echotmp
1523
1524 : Now test for existence of everything in MANIFEST
1525 echo " "
1526 if test -f $rsrc/MANIFEST; then
1527         echo "First let's make sure your kit is complete.  Checking..." >&4
1528         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1529         rm -f missing
1530         tmppwd=`pwd`
1531         for filelist in x??; do
1532                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1533         done
1534         if test -s missing; then
1535                 cat missing >&4
1536                 cat >&4 <<'EOM'
1537
1538 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1539
1540 You have the option of continuing the configuration process, despite the
1541 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1542 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1543 and contact the author (perlbug@perl.com).
1544
1545 EOM
1546                 echo $n "Continue? [n] $c" >&4
1547                 read ans
1548                 case "$ans" in
1549                 y*)
1550                         echo "Continuing..." >&4
1551                         rm -f missing
1552                         ;;
1553                 *)
1554                         echo "ABORTING..." >&4
1555                         kill $$
1556                         ;;
1557                 esac
1558         else
1559                 echo "Looks good..."
1560         fi
1561 else
1562         echo "There is no MANIFEST file.  I hope your kit is complete !"
1563 fi
1564 rm -f missing x??
1565
1566 echo " "
1567 : Find the appropriate value for a newline for tr
1568 if test -n "$DJGPP"; then
1569        trnl='\012'
1570 fi
1571 if test X"$trnl" = X; then
1572         case "`echo foo|tr '\n' x 2>/dev/null`" in
1573         foox) trnl='\n' ;;
1574         esac
1575 fi
1576 if test X"$trnl" = X; then
1577         case "`echo foo|tr '\012' x 2>/dev/null`" in
1578         foox) trnl='\012' ;;
1579         esac
1580 fi
1581 if test X"$trnl" = X; then
1582         cat <<EOM >&2
1583
1584 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1585
1586 EOM
1587         exit 1
1588 fi
1589
1590 : compute the number of columns on the terminal for proper question formatting
1591 case "$COLUMNS" in
1592 '') COLUMNS='80';;
1593 esac
1594
1595 : set up the echo used in my read
1596 myecho="case \"\$xxxm\" in
1597 '') echo $n \"\$rp $c\" >&4;;
1598 *) case \"\$rp\" in
1599         '') echo $n \"[\$xxxm] $c\";;
1600         *)
1601                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1602                         echo \"\$rp\" >&4
1603                         echo $n \"[\$xxxm] $c\" >&4
1604                 else
1605                         echo $n \"\$rp [\$xxxm] $c\" >&4
1606                 fi
1607                 ;;
1608         esac;;
1609 esac"
1610
1611 : now set up to do reads with possible shell escape and default assignment
1612 cat <<EOSC >myread
1613 $startsh
1614 xxxm=\$dflt
1615 $myecho
1616 ans='!'
1617 case "\$fastread" in
1618 yes) case "\$dflt" in
1619         '') ;;
1620         *) ans='';
1621                 case "\$silent-\$rp" in
1622                 true-) ;;
1623                 *) echo " " >&4;;
1624                 esac;;
1625         esac;;
1626 *) case "\$silent" in
1627         true) case "\$rp" in
1628                 '') ans='';;
1629                 esac;;
1630         esac;;
1631 esac
1632 while expr "X\$ans" : "X!" >/dev/null; do
1633         read answ
1634         set x \$xxxm
1635         shift
1636         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1637         case  "\$answ" in
1638         "!")
1639                 sh 1>&4
1640                 echo " "
1641                 $myecho
1642                 ;;
1643         !*)
1644                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1645                 shift
1646                 sh 1>&4 -c "\$*"
1647                 echo " "
1648                 $myecho
1649                 ;;
1650         "\$ans")
1651                 case "\$ans" in
1652                 \\&*)
1653                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1654                         shift
1655                         case "\$1" in
1656                         -d)
1657                                 fastread=yes
1658                                 echo "(OK, I'll run with -d after this question.)" >&4
1659                                 ;;
1660                         -*)
1661                                 echo "*** Sorry, \$1 not supported yet." >&4
1662                                 ;;
1663                         esac
1664                         $myecho
1665                         ans=!
1666                         ;;
1667                 esac;;
1668         *)
1669                 case "\$aok" in
1670                 y)
1671                         echo "*** Substitution done -- please confirm."
1672                         xxxm="\$ans"
1673                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1674                         xxxm="\$ans"
1675                         ans=!
1676                         ;;
1677                 *)
1678                         echo "*** Error -- try again."
1679                         ans=!
1680                         ;;
1681                 esac
1682                 $myecho
1683                 ;;
1684         esac
1685         case "\$ans\$xxxm\$nostick" in
1686         '')
1687                 ans=!
1688                 $myecho
1689                 ;;
1690         esac
1691 done
1692 case "\$ans" in
1693 '') ans="\$xxxm";;
1694 esac
1695 EOSC
1696
1697 : create .config dir to save info across Configure sessions
1698 test -d ../.config || mkdir ../.config
1699 cat >../.config/README <<EOF
1700 This directory created by Configure to save information that should
1701 persist across sessions for $package.
1702
1703 You may safely delete it if you wish.
1704 EOF
1705
1706 : general instructions
1707 needman=true
1708 firsttime=true
1709 user=`(logname) 2>/dev/null`
1710 case "$user" in
1711 '') user=`whoami 2>&1`;;
1712 esac
1713 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1714         firsttime=false
1715         echo " "
1716         rp='Would you like to see the instructions?'
1717         dflt=n
1718         . ./myread
1719         case "$ans" in
1720         [yY]*) ;;
1721         *) needman=false;;
1722         esac
1723 fi
1724 if $needman; then
1725         cat <<EOH
1726
1727 This installation shell script will examine your system and ask you questions
1728 to determine how the perl5 package should be installed. If you get
1729 stuck on a question, you may use a ! shell escape to start a subshell or
1730 execute a command.  Many of the questions will have default answers in square
1731 brackets; typing carriage return will give you the default.
1732
1733 On some of the questions which ask for file or directory names you are allowed
1734 to use the ~name construct to specify the login directory belonging to "name",
1735 even if you don't have a shell which knows about that.  Questions where this is
1736 allowed will be marked "(~name ok)".
1737
1738 EOH
1739         rp=''
1740         dflt='Type carriage return to continue'
1741         . ./myread
1742         cat <<'EOH'
1743
1744 The prompter used in this script allows you to use shell variables and
1745 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1746 in the default answer, as if the default line was a set of arguments given to a
1747 script shell.  This means you may also use $* to repeat the whole default line,
1748 so you do not have to re-type everything to add something to the default.
1749
1750 Everytime there is a substitution, you will have to confirm.  If there is an
1751 error (e.g. an unmatched backtick), the default answer will remain unchanged
1752 and you will be prompted again.
1753
1754 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1755 the questions and use the computed defaults (or the previous answers if there
1756 was already a config.sh file). Type 'Configure -h' for a list of options.
1757 You may also start interactively and then answer '& -d' at any prompt to turn
1758 on the non-interactive behaviour for the remainder of the execution.
1759
1760 EOH
1761         . ./myread
1762         cat <<EOH
1763
1764 Much effort has been expended to ensure that this shell script will run on any
1765 Unix system.  If despite that it blows up on yours, your best bet is to edit
1766 Configure and run it again.  If you can't run Configure for some reason,
1767 you'll have to generate a config.sh file by hand.  Whatever problems you
1768 have, let me (perlbug@perl.com) know how I blew it.
1769
1770 This installation script affects things in two ways:
1771
1772 1) it may do direct variable substitutions on some of the files included
1773    in this kit.
1774 2) it builds a config.h file for inclusion in C programs.  You may edit
1775    any of these files as the need arises after running this script.
1776
1777 If you make a mistake on a question, there is no easy way to back up to it
1778 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1779 files.  Configure will offer to let you do this before it runs the SH files.
1780
1781 EOH
1782         dflt='Type carriage return to continue'
1783         . ./myread
1784         case "$firsttime" in
1785         true) echo $user >>../.config/instruct;;
1786         esac
1787 fi
1788
1789 : find out where common programs are
1790 echo " "
1791 echo "Locating common programs..." >&4
1792 cat <<EOSC >loc
1793 $startsh
1794 case \$# in
1795 0) exit 1;;
1796 esac
1797 thing=\$1
1798 shift
1799 dflt=\$1
1800 shift
1801 for dir in \$*; do
1802         case "\$thing" in
1803         .)
1804         if test -d \$dir/\$thing; then
1805                 echo \$dir
1806                 exit 0
1807         fi
1808         ;;
1809         *)
1810         for thisthing in \$dir/\$thing; do
1811                 : just loop through to pick last item
1812         done
1813         if test -f \$thisthing; then
1814                 echo \$thisthing
1815                 exit 0
1816         elif test -f \$dir/\$thing.exe; then
1817                 if test -n "$DJGPP"; then
1818                         echo \$dir/\$thing.exe
1819                 else
1820                         : on Eunice apparently
1821                         echo \$dir/\$thing
1822                 fi
1823                 exit 0
1824         fi
1825         ;;
1826         esac
1827 done
1828 echo \$dflt
1829 exit 1
1830 EOSC
1831 chmod +x loc
1832 $eunicefix loc
1833 loclist="
1834 awk
1835 cat
1836 comm
1837 cp
1838 echo
1839 expr
1840 grep
1841 ls
1842 make
1843 mkdir
1844 rm
1845 sed
1846 sort
1847 touch
1848 tr
1849 uniq
1850 "
1851 trylist="
1852 Mcc
1853 ar
1854 byacc
1855 cpp
1856 csh
1857 date
1858 egrep
1859 gzip
1860 less
1861 ln
1862 more
1863 nm
1864 nroff
1865 perl
1866 pg
1867 test
1868 uname
1869 zip
1870 "
1871 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1872 pth="$pth /lib /usr/lib"
1873 for file in $loclist; do
1874         eval xxx=\$$file
1875         case "$xxx" in
1876         /*|?:[\\/]*)
1877                 if test -f "$xxx"; then
1878                         : ok
1879                 else
1880                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1881                         xxx=`./loc $file $file $pth`
1882                 fi
1883                 ;;
1884         '') xxx=`./loc $file $file $pth`;;
1885         *) xxx=`./loc $xxx $xxx $pth`;;
1886         esac
1887         eval $file=$xxx
1888         eval _$file=$xxx
1889         case "$xxx" in
1890         /*)
1891                 echo $file is in $xxx.
1892                 ;;
1893         ?:[\\/]*)
1894                 echo $file is in $xxx.
1895                 ;;
1896         *)
1897                 echo "I don't know where '$file' is, and my life depends on it." >&4
1898                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1899                 exit 1
1900                 ;;
1901         esac
1902 done
1903 echo " "
1904 echo "Don't worry if any of the following aren't found..."
1905 say=offhand
1906 for file in $trylist; do
1907         eval xxx=\$$file
1908         case "$xxx" in
1909         /*|?:[\\/]*)
1910                 if test -f "$xxx"; then
1911                         : ok
1912                 else
1913                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1914                         xxx=`./loc $file $file $pth`
1915                 fi
1916                 ;;
1917         '') xxx=`./loc $file $file $pth`;;
1918         *) xxx=`./loc $xxx $xxx $pth`;;
1919         esac
1920         eval $file=$xxx
1921         eval _$file=$xxx
1922         case "$xxx" in
1923         /*)
1924                 echo $file is in $xxx.
1925                 ;;
1926         ?:[\\/]*)
1927                 echo $file is in $xxx.
1928                 ;;
1929         *)
1930                 echo "I don't see $file out there, $say."
1931                 say=either
1932                 ;;
1933         esac
1934 done
1935 case "$egrep" in
1936 egrep)
1937         echo "Substituting grep for egrep."
1938         egrep=$grep
1939         ;;
1940 esac
1941 case "$ln" in
1942 ln)
1943         echo "Substituting cp for ln."
1944         ln=$cp
1945         ;;
1946 esac
1947 case "$test" in
1948 test)
1949         echo "Hopefully test is built into your sh."
1950         ;;
1951 *)
1952         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1953                 echo "Using the test built into your sh."
1954                 test=test
1955                 _test=test
1956         fi
1957         ;;
1958 esac
1959 case "$echo" in
1960 echo)
1961         echo "Hopefully echo is built into your sh."
1962         ;;
1963 '') ;;
1964 *)
1965         echo " "
1966 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1967         $echo $n "hi there$c" >foo1
1968         echo $n "hi there$c" >foo2
1969         if cmp foo1 foo2 >/dev/null 2>&1; then
1970                 echo "They are compatible.  In fact, they may be identical."
1971         else
1972                 case "$n" in
1973                 '-n') n='' c='\c';;
1974                 *) n='-n' c='';;
1975                 esac
1976                 cat <<FOO
1977 They are not compatible!  You are probably running ksh on a non-USG system.
1978 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1979 have echo built in and we may have to run some Bourne shell scripts.  That
1980 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1981
1982 FOO
1983                 $echo $n "The star should be here-->$c"
1984                 $echo "*"
1985         fi
1986         $rm -f foo1 foo2
1987         ;;
1988 esac
1989
1990 : determine whether symbolic links are supported
1991 echo " "
1992 $touch blurfl
1993 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1994         echo "Symbolic links are supported." >&4
1995         lns="$ln -s"
1996 else
1997         echo "Symbolic links are NOT supported." >&4
1998         lns="$ln"
1999 fi
2000 $rm -f blurfl sym
2001
2002 : see whether [:lower:] and [:upper:] are supported character classes
2003 echo " "
2004 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2005 ABYZ)
2006         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2007         up='[:upper:]'
2008         low='[:lower:]'
2009         ;;
2010 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2011         # (0xc9 and 0xd1), therefore that is a nice testing point.
2012         if test "X$up" = X -o "X$low" = X; then
2013             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2014             ij) up='[A-Z]'
2015                 low='[a-z]'
2016                 ;;
2017             esac
2018         fi
2019         if test "X$up" = X -o "X$low" = X; then
2020             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2021             ij) up='A-Z'
2022                 low='a-z'
2023                 ;;
2024             esac
2025         fi
2026         if test "X$up" = X -o "X$low" = X; then
2027             case "`echo IJ | od -x 2>/dev/null`" in
2028             *C9D1*|*c9d1*)
2029                 echo "Hey, this might be EBCDIC." >&4
2030                 if test "X$up" = X -o "X$low" = X; then
2031                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2032                     ij) up='[A-IJ-RS-Z]'
2033                         low='[a-ij-rs-z]'
2034                         ;;
2035                     esac
2036                 fi
2037                 if test "X$up" = X -o "X$low" = X; then
2038                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2039                     ij) up='A-IJ-RS-Z'
2040                         low='a-ij-rs-z'
2041                         ;;
2042                     esac
2043                 fi
2044                 ;;
2045             esac
2046         fi
2047 esac
2048 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2049 ij)
2050     echo "Using $up and $low to convert case." >&4
2051     ;;
2052 *)
2053     echo "I don't know how to translate letters from upper to lower case." >&4
2054     echo "Your tr is not acting any way I know of." >&4
2055     exit 1
2056     ;;
2057 esac
2058 : set up the translation script tr, must be called with ./tr of course
2059 cat >tr <<EOSC
2060 $startsh
2061 case "\$1\$2" in
2062 '[A-Z][a-z]') exec $tr '$up' '$low';;
2063 '[a-z][A-Z]') exec $tr '$low' '$up';;
2064 esac
2065 exec $tr "\$@"
2066 EOSC
2067 chmod +x tr
2068 $eunicefix tr
2069
2070 : Try to determine whether config.sh was made on this system
2071 case "$config_sh" in
2072 '')
2073 myuname=`$uname -a 2>/dev/null`
2074 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2075 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2076 # because the A-Z/a-z are not consecutive.
2077 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2078         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2079 newmyuname="$myuname"
2080 dflt=n
2081 case "$knowitall" in
2082 '')
2083         if test -f ../config.sh; then
2084                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2085                         eval "`grep myuname= ../config.sh`"
2086                 fi
2087                 if test "X$myuname" = "X$newmyuname"; then
2088                         dflt=y
2089                 fi
2090         fi
2091         ;;
2092 *) dflt=y;;
2093 esac
2094
2095 : Get old answers from old config file if Configure was run on the
2096 : same system, otherwise use the hints.
2097 hint=default
2098 cd ..
2099 if test -f config.sh; then
2100         echo " "
2101         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2102         . UU/myread
2103         case "$ans" in
2104         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2105         *)  echo "Fetching default answers from your old config.sh file..." >&4
2106                 tmp_n="$n"
2107                 tmp_c="$c"
2108                 tmp_sh="$sh"
2109                 . ./config.sh
2110                 cp config.sh UU
2111                 n="$tmp_n"
2112                 c="$tmp_c"
2113                 : Older versions did not always set $sh.  Catch re-use of such
2114                 : an old config.sh.
2115                 case "$sh" in
2116                 '') sh="$tmp_sh" ;;
2117                 esac
2118                 hint=previous
2119                 ;;
2120         esac
2121 fi
2122 if test ! -f config.sh; then
2123         $cat <<EOM
2124
2125 First time through, eh?  I have some defaults handy for some systems
2126 that need some extra help getting the Configure answers right:
2127
2128 EOM
2129         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2130         dflt=''
2131         : Half the following guesses are probably wrong... If you have better
2132         : tests or hints, please send them to perlbug@perl.com
2133         : The metaconfig authors would also appreciate a copy...
2134         $test -f /irix && osname=irix
2135         $test -f /xenix && osname=sco_xenix
2136         $test -f /dynix && osname=dynix
2137         $test -f /dnix && osname=dnix
2138         $test -f /lynx.os && osname=lynxos
2139         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2140         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2141         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2142         $test -f /bin/mips && /bin/mips && osname=mips
2143         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2144                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2145         $test -d /usr/apollo/bin && osname=apollo
2146         $test -f /etc/saf/_sactab && osname=svr4
2147         $test -d /usr/include/minix && osname=minix
2148         if $test -d /MachTen -o -d /MachTen_Folder; then
2149                 osname=machten
2150                 if $test -x /sbin/version; then
2151                         osvers=`/sbin/version | $awk '{print $2}' |
2152                         $sed -e 's/[A-Za-z]$//'`
2153                 elif $test -x /usr/etc/version; then
2154                         osvers=`/usr/etc/version | $awk '{print $2}' |
2155                         $sed -e 's/[A-Za-z]$//'`
2156                 else
2157                         osvers="$2.$3"
2158                 fi
2159         fi
2160
2161         $test -f /sys/posix.dll &&
2162                 $test -f /usr/bin/what &&
2163                 set X `/usr/bin/what /sys/posix.dll` &&
2164                 $test "$3" = UWIN &&
2165                 osname=uwin &&
2166                 osvers="$5"
2167
2168         if $test -f $uname; then
2169                 set X $myuname
2170                 shift
2171
2172                 case "$5" in
2173                 fps*) osname=fps ;;
2174                 mips*)
2175                         case "$4" in
2176                         umips) osname=umips ;;
2177                         *) osname=mips ;;
2178                         esac;;
2179                 [23]100) osname=mips ;;
2180                 next*) osname=next ;;
2181                 i386*)
2182                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2183                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2184                                 osname='sco'
2185                                 osvers=$tmp
2186                         elif $test -f /etc/kconfig; then
2187                                 osname=isc
2188                                 if test "$lns" = "$ln -s"; then
2189                                         osvers=4
2190                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2191                                         osvers=3
2192                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2193                                         osvers=2
2194                                 fi
2195                         fi
2196                         tmp=''
2197                         ;;
2198                 pc*)
2199                         if test -n "$DJGPP"; then
2200                                 osname=dos
2201                                 osvers=djgpp
2202                         fi
2203                         ;;
2204                 esac
2205
2206                 case "$1" in
2207                 aix) osname=aix
2208                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2209                         case "$tmp" in
2210                         'not found') osvers="$4"."$3" ;;
2211                         '<3240'|'<>3240') osvers=3.2.0 ;;
2212                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2213                         '=3250'|'>3250') osvers=3.2.5 ;;
2214                         *) osvers=$tmp;;
2215                         esac
2216                         ;;
2217                 bsd386) osname=bsd386
2218                         osvers=`$uname -r`
2219                         ;;
2220                 cygwin*) osname=cygwin
2221                         osvers="$3"
2222                         ;;
2223                 *dc.osx) osname=dcosx
2224                         osvers="$3"
2225                         ;;
2226                 dnix) osname=dnix
2227                         osvers="$3"
2228                         ;;
2229                 domainos) osname=apollo
2230                         osvers="$3"
2231                         ;;
2232                 dgux) osname=dgux 
2233                         osvers="$3"
2234                         ;;
2235                 dynixptx*) osname=dynixptx
2236                         osvers=`echo "$4"|sed 's/^v//'`
2237                         ;;
2238                 freebsd) osname=freebsd 
2239                         osvers="$3" ;;
2240                 genix) osname=genix ;;
2241                 hp*) osname=hpux 
2242                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2243                         ;;
2244                 irix*) osname=irix
2245                         case "$3" in
2246                         4*) osvers=4 ;;
2247                         5*) osvers=5 ;;
2248                         *)      osvers="$3" ;;
2249                         esac
2250                         ;;
2251                 linux) osname=linux
2252                         case "$3" in
2253                         *)      osvers="$3" ;;
2254                         esac
2255                         ;;
2256                 MiNT) osname=mint
2257                         ;;
2258                 netbsd*) osname=netbsd
2259                         osvers="$3"
2260                         ;;
2261                 news-os) osvers="$3"
2262                         case "$3" in
2263                         4*) osname=newsos4 ;;
2264                         *) osname=newsos ;;
2265                         esac
2266                         ;;
2267                 next*) osname=next ;;
2268                 POSIX-BC | posix-bc ) osname=posix-bc
2269                         osvers="$3"
2270                         ;;
2271                 powerux | power_ux | powermax_os | powermaxos | \
2272                 powerunix | power_unix) osname=powerux
2273                         osvers="$3"
2274                         ;;
2275                 qnx) osname=qnx
2276                         osvers="$4"
2277                         ;;
2278                 solaris) osname=solaris
2279                         case "$3" in
2280                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2281                         *)      osvers="$3" ;;
2282                         esac
2283                         ;;
2284                 sunos) osname=sunos
2285                         case "$3" in
2286                         5*) osname=solaris
2287                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2288                         *)      osvers="$3" ;;
2289                         esac
2290                         ;;
2291                 titanos) osname=titanos
2292                         case "$3" in
2293                         1*) osvers=1 ;;
2294                         2*) osvers=2 ;;
2295                         3*) osvers=3 ;;
2296                         4*) osvers=4 ;;
2297                         *)      osvers="$3" ;;
2298                         esac
2299                         ;;
2300                 ultrix) osname=ultrix
2301                         osvers="$3"
2302                         ;;
2303                 osf1|mls+)      case "$5" in
2304                                 alpha)
2305                                         osname=dec_osf
2306                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2307                                         ;;
2308                         hp*)    osname=hp_osf1  ;;
2309                         mips)   osname=mips_osf1 ;;
2310                         esac
2311                         ;;
2312                 unixware) osname=svr5
2313                         osvers="$4"
2314                         ;;
2315                 uts) osname=uts
2316                         osvers="$3"
2317                         ;;
2318                 $2) case "$osname" in
2319                         *isc*) ;;
2320                         *freebsd*) ;;
2321                         svr*)
2322                                 : svr4.x or possibly later
2323                                 case "svr$3" in 
2324                                 ${osname}*)
2325                                         osname=svr$3
2326                                         osvers=$4
2327                                         ;;
2328                                 esac
2329                                 case "$osname" in
2330                                 svr4.0)
2331                                         : Check for ESIX
2332                                         if test -f /stand/boot ; then
2333                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2334                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2335                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2336                                                         if test -n "$isesix"; then
2337                                                                 osname=esix4
2338                                                         fi
2339                                                 fi
2340                                         fi
2341                                         ;;
2342                                 esac
2343                                 ;;
2344                         *)      if test -f /etc/systemid; then
2345                                         osname=sco
2346                                         set `echo $3 | $sed 's/\./ /g'` $4
2347                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2348                                                 osvers=$1.$2.$3
2349                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2350                                                 osvers=$1.$2
2351                                         elif $test -f $src/hints/sco_$1.sh; then
2352                                                 osvers=$1
2353                                         fi
2354                                 else
2355                                         case "$osname" in
2356                                         '') : Still unknown.  Probably a generic Sys V.
2357                                                 osname="sysv"
2358                                                 osvers="$3"
2359                                                 ;;
2360                                         esac
2361                                 fi
2362                                 ;;
2363                         esac
2364                         ;;
2365                 *)      case "$osname" in
2366                         '') : Still unknown.  Probably a generic BSD.
2367                                 osname="$1"
2368                                 osvers="$3"
2369                                 ;;
2370                         esac
2371                         ;;
2372                 esac
2373         else
2374                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2375                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2376                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2377                                 osname=news_os
2378                         fi
2379                         $rm -f UU/kernel.what
2380                 elif test -d c:/.; then
2381                         set X $myuname
2382                         osname=os2
2383                         osvers="$5"
2384                 fi
2385         fi
2386         
2387         : Now look for a hint file osname_osvers, unless one has been
2388         : specified already.
2389         case "$hintfile" in
2390         ''|' ')
2391                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2392                 : Also try without trailing minor version numbers.
2393                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2394                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2395                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2396                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2397                 case "$file" in
2398                 '') dflt=none ;;
2399                 *)  case "$osvers" in
2400                         '') dflt=$file
2401                                 ;;
2402                         *)  if $test -f $src/hints/$file.sh ; then
2403                                         dflt=$file
2404                                 elif $test -f $src/hints/$xfile.sh ; then
2405                                         dflt=$xfile
2406                                 elif $test -f $src/hints/$xxfile.sh ; then
2407                                         dflt=$xxfile
2408                                 elif $test -f $src/hints/$xxxfile.sh ; then
2409                                         dflt=$xxxfile
2410                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2411                                         dflt=$xxxxfile
2412                                 elif $test -f "$src/hints/${osname}.sh" ; then
2413                                         dflt="${osname}"
2414                                 else
2415                                         dflt=none
2416                                 fi
2417                                 ;;
2418                         esac
2419                         ;;
2420                 esac
2421                 if $test -f Policy.sh ; then
2422                         case "$dflt" in
2423                         *Policy*) ;;
2424                         none) dflt="Policy" ;;
2425                         *) dflt="Policy $dflt" ;;
2426                         esac
2427                 fi
2428                 ;;
2429         *)
2430                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2431                 ;;
2432         esac
2433
2434         if $test -f Policy.sh ; then
2435                 $cat <<EOM
2436
2437 There's also a Policy hint file available, which should make the
2438 site-specific (policy) questions easier to answer.
2439 EOM
2440
2441         fi
2442
2443         $cat <<EOM
2444
2445 You may give one or more space-separated answers, or "none" if appropriate.
2446 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2447 is a good thing.  DO NOT give a wrong version or a wrong OS.
2448
2449 EOM
2450
2451         rp="Which of these apply, if any?"
2452         . UU/myread
2453         tans=$ans
2454         for file in $tans; do
2455                 if $test X$file = XPolicy -a -f Policy.sh; then
2456                         . Policy.sh
2457                         $cat Policy.sh >> UU/config.sh
2458                 elif $test -f $src/hints/$file.sh; then
2459                         . $src/hints/$file.sh
2460                         $cat $src/hints/$file.sh >> UU/config.sh
2461                 elif $test X$tans = X -o X$tans = Xnone ; then
2462                         : nothing
2463                 else
2464                         : Give one chance to correct a possible typo.
2465                         echo "$file.sh does not exist"
2466                         dflt=$file
2467                         rp="hint to use instead?"
2468                         . UU/myread
2469                         for file in $ans; do
2470                                 if $test -f "$src/hints/$file.sh"; then
2471                                         . $src/hints/$file.sh
2472                                         $cat $src/hints/$file.sh >> UU/config.sh
2473                                 elif $test X$ans = X -o X$ans = Xnone ; then
2474                                         : nothing
2475                                 else
2476                                         echo "$file.sh does not exist -- ignored."
2477                                 fi
2478                         done
2479                 fi
2480         done
2481
2482         hint=recommended
2483         : Remember our hint file for later.
2484         if $test -f "$src/hints/$file.sh" ; then
2485                 hintfile="$file"
2486         else
2487                 hintfile=''
2488         fi
2489 fi
2490 cd UU
2491 ;;
2492 *)
2493         echo " "
2494         echo "Fetching default answers from $config_sh..." >&4
2495         tmp_n="$n"
2496         tmp_c="$c"
2497         cd ..
2498         cp $config_sh config.sh 2>/dev/null
2499         chmod +w config.sh
2500         . ./config.sh
2501         cd UU
2502         cp ../config.sh .
2503         n="$tmp_n"
2504         c="$tmp_c"
2505         hint=previous
2506         ;;
2507 esac
2508 test "$override" && . ./optdef.sh
2509 myuname="$newmyuname"
2510
2511 : Restore computed paths
2512 for file in $loclist $trylist; do
2513         eval $file="\$_$file"
2514 done
2515
2516 cat << EOM
2517
2518 Configure uses the operating system name and version to set some defaults.
2519 The default value is probably right if the name rings a bell. Otherwise,
2520 since spelling matters for me, either accept the default or answer "none"
2521 to leave it blank.
2522
2523 EOM
2524 case "$osname" in
2525         ''|' ')
2526                 case "$hintfile" in
2527                 ''|' '|none) dflt=none ;;
2528                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2529                 esac
2530                 ;;
2531         *) dflt="$osname" ;;
2532 esac
2533 rp="Operating system name?"
2534 . ./myread
2535 case "$ans" in
2536 none)  osname='' ;;
2537 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2538 esac
2539 echo " "
2540 case "$osvers" in
2541         ''|' ')
2542                 case "$hintfile" in
2543                 ''|' '|none) dflt=none ;;
2544                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2545                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2546                         case "$dflt" in
2547                         ''|' ') dflt=none ;;
2548                         esac
2549                         ;;
2550                 esac
2551                 ;;
2552         *) dflt="$osvers" ;;
2553 esac
2554 rp="Operating system version?"
2555 . ./myread
2556 case "$ans" in
2557 none)  osvers='' ;;
2558 *) osvers="$ans" ;;
2559 esac
2560
2561
2562 . ./posthint.sh
2563
2564 : who configured the system
2565 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2566 cf_by=`(logname) 2>/dev/null`
2567 case "$cf_by" in
2568 "")
2569         cf_by=`(whoami) 2>/dev/null`
2570         case "$cf_by" in
2571         "") cf_by=unknown ;;
2572         esac ;;
2573 esac
2574
2575 : set up the script used to warn in case of inconsistency
2576 cat <<EOS >whoa
2577 $startsh
2578 EOS
2579 cat <<'EOSC' >>whoa
2580 dflt=y
2581 echo " "
2582 echo "*** WHOA THERE!!! ***" >&4
2583 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2584 rp="    Keep the $hint value?"
2585 . ./myread
2586 case "$ans" in
2587 y) td=$was; tu=$was;;
2588 esac
2589 EOSC
2590
2591 : function used to set $1 to $val
2592 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2593 case "$val$was" in
2594 $define$undef) . ./whoa; eval "$var=\$td";;
2595 $undef$define) . ./whoa; eval "$var=\$tu";;
2596 *) eval "$var=$val";;
2597 esac'
2598
2599 cat <<EOM
2600
2601 Perl can be built to take advantage of threads on some systems.
2602 To do so, Configure must be run with -Dusethreads.
2603
2604 Note that threading is a highly experimental feature, and
2605 some known race conditions still remain.  If you choose to try
2606 it, be very sure to not actually deploy it for production
2607 purposes.  README.threads has more details, and is required
2608 reading if you enable threads.
2609 EOM
2610 case "$usethreads" in
2611 $define|true|[yY]*)     dflt='y';;
2612 *) dflt='n';;
2613 esac
2614 rp='Build a threading Perl?'
2615 . ./myread
2616 case "$ans" in
2617 y|Y)    val="$define" ;;
2618 *)      val="$undef" ;;
2619 esac
2620 set usethreads
2621 eval $setvar
2622
2623 case "$usethreads" in
2624 $define)
2625         $cat <<EOM
2626
2627 As of 5.5.640, Perl has two different internal threading implementations,
2628 the 5.005 version (5005threads) and an interpreter-based version
2629 (ithreads) that has one interpreter per thread.  Both are very 
2630 experimental.  This arrangement exists to help developers work out
2631 which one is better.
2632
2633 If you're a casual user, you probably don't want interpreter-threads
2634 at this time.  There doesn't yet exist a way to create threads from
2635 within Perl in this model, i.e., "use Thread;" will NOT work.
2636 EOM
2637         : Default to ithreads unless overridden on command line or with
2638         : old config.sh
2639         dflt='y'
2640         case "$use5005threads" in
2641                 $define|true|[yY]*) dflt='n';;
2642         esac
2643         case "$useithreads" in
2644                 $undef|false|[nN]*) dflt='n';;
2645         esac
2646         rp='Use interpreter-based ithreads?'
2647         . ./myread
2648         case "$ans" in
2649         y|Y)    val="$define" ;;
2650         *)      val="$undef" ;;
2651         esac
2652         set useithreads
2653         eval $setvar
2654         : Now set use5005threads to the opposite value.
2655         case "$useithreads" in
2656         $define) val="$undef" ;;
2657         *) val="$define" ;;
2658         esac
2659         set use5005threads
2660         eval $setvar
2661         ;;
2662 *)
2663         useithreads="$undef"
2664         use5005threads="$undef"
2665         ;;
2666 esac
2667
2668 case "$d_oldpthreads" in
2669 '')     : Configure tests would be welcome here.  For now, assume undef.
2670         val="$undef" ;;
2671 *)      val="$d_oldpthreads" ;;
2672 esac
2673 set d_oldpthreads
2674 eval $setvar
2675
2676
2677 case "$usethreads" in
2678 "$define"|true|[yY]*)
2679 : Look for a hint-file generated 'call-back-unit'.  If the
2680 : user has specified that a threading perl is to be built,
2681 : we may need to set or change some other defaults.
2682         if $test -f usethreads.cbu; then
2683                 echo "Your platform has some specific hints for threaded builds, using them..."
2684                 . ./usethreads.cbu
2685         else
2686                 $cat <<EOM
2687 (Your platform doesn't have any specific hints for threaded builds.
2688  Assuming POSIX threads, then.)
2689 EOM
2690         fi
2691         ;;
2692 esac
2693
2694 cat <<EOM
2695
2696 Perl can be built so that multiple Perl interpreters can coexist
2697 within the same Perl executable.
2698 EOM
2699
2700 case "$useithreads" in
2701 $define)
2702         cat <<EOM
2703 This multiple interpreter support is required for interpreter-based threads.
2704 EOM
2705         val="$define"
2706         ;;
2707 *)
2708         echo 'Normally you do not need this and you should answer no.'
2709         case "$usemultiplicity" in
2710         $define|true|[yY]*)     dflt='y';;
2711         *) dflt='n';;
2712         esac
2713         rp='Build Perl for multiplicity?'
2714         . ./myread
2715         case "$ans" in
2716         y|Y)    val="$define" ;;
2717         *)      val="$undef" ;;
2718         esac
2719         ;;
2720 esac
2721 set usemultiplicity
2722 eval $setvar
2723
2724 : determine where manual pages are on this system
2725 echo " "
2726 case "$sysman" in
2727 '') 
2728         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2729         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2730         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2731         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2732         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2733         sysman=`./loc . /usr/man/man1 $syspath`
2734         ;;
2735 esac
2736 if $test -d "$sysman"; then
2737         echo "System manual is in $sysman." >&4
2738 else
2739         echo "Could not find manual pages in source form." >&4
2740 fi
2741
2742 : see what memory models we can support
2743 case "$models" in
2744 '')
2745         $cat >pdp11.c <<'EOP'
2746 int main() {
2747 #ifdef pdp11
2748         exit(0);
2749 #else
2750         exit(1);
2751 #endif
2752 }
2753 EOP
2754         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2755         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2756                 dflt='unsplit split'
2757         else
2758                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2759                 case "$tans" in
2760                 X) dflt='none';;
2761                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2762                                 dflt='small'
2763                         else
2764                                 dflt=''
2765                         fi
2766                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2767                                 dflt="$dflt medium"
2768                         fi
2769                         if $test -d /lib/large || $test -d /usr/lib/large; then
2770                                 dflt="$dflt large"
2771                         fi
2772                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2773                                 dflt="$dflt huge"
2774                         fi
2775                 esac
2776         fi;;
2777 *) dflt="$models";;
2778 esac
2779 $cat <<EOM
2780  
2781 Some systems have different model sizes.  On most systems they are called
2782 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2783 split.  If your system doesn't support different memory models, say "none".
2784 If you wish to force everything to one memory model, say "none" here and
2785 put the appropriate flags later when it asks you for other cc and ld flags.
2786 Venix systems may wish to put "none" and let the compiler figure things out.
2787 (In the following question multiple model names should be space separated.)
2788
2789 The default for most systems is "none".
2790
2791 EOM
2792 rp="Which memory models are supported?"
2793 . ./myread
2794 models="$ans"
2795
2796 case "$models" in
2797 none)
2798         small=''
2799         medium=''
2800         large=''
2801         huge=''
2802         unsplit=''
2803         split=''
2804         ;;
2805 *split)
2806         case "$split" in
2807         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2808                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2809                         dflt='-i'
2810                 else
2811                         dflt='none'
2812                 fi;;
2813         *) dflt="$split";;
2814         esac
2815         rp="What flag indicates separate I and D space?"
2816         . ./myread
2817         tans="$ans"
2818         case "$tans" in
2819         none) tans='';;
2820         esac
2821         split="$tans"
2822         unsplit='';;
2823 *large*|*small*|*medium*|*huge*)
2824         case "$models" in
2825         *large*)
2826                 case "$large" in
2827                 '') dflt='-Ml';;
2828                 *) dflt="$large";;
2829                 esac
2830         rp="What flag indicates large model?"
2831         . ./myread
2832         tans="$ans"
2833         case "$tans" in
2834         none) tans='';
2835         esac
2836         large="$tans";;
2837         *) large='';;
2838         esac
2839         case "$models" in
2840         *huge*) case "$huge" in
2841                 '') dflt='-Mh';;
2842                 *) dflt="$huge";;
2843                 esac
2844                 rp="What flag indicates huge model?"
2845                 . ./myread
2846                 tans="$ans"
2847                 case "$tans" in
2848                 none) tans='';
2849                 esac
2850                 huge="$tans";;
2851         *) huge="$large";;
2852         esac
2853         case "$models" in
2854         *medium*) case "$medium" in
2855                 '') dflt='-Mm';;
2856                 *) dflt="$medium";;
2857                 esac
2858                 rp="What flag indicates medium model?"
2859                 . ./myread
2860                 tans="$ans"
2861                 case "$tans" in
2862                 none) tans='';
2863                 esac
2864                 medium="$tans";;
2865         *) medium="$large";;
2866         esac
2867         case "$models" in
2868         *small*) case "$small" in
2869                 '') dflt='none';;
2870                 *) dflt="$small";;
2871                 esac
2872                 rp="What flag indicates small model?"
2873                 . ./myread
2874                 tans="$ans"
2875                 case "$tans" in
2876                 none) tans='';
2877                 esac
2878                 small="$tans";;
2879         *) small='';;
2880         esac
2881         ;;
2882 *)
2883         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2884         ;;
2885 esac
2886 $rm -f pdp11.* pdp11
2887
2888 : make some quick guesses about what we are up against
2889 echo " "
2890 $echo $n "Hmm...  $c"
2891 echo exit 1 >bsd
2892 echo exit 1 >usg
2893 echo exit 1 >v7
2894 echo exit 1 >osf1
2895 echo exit 1 >eunice
2896 echo exit 1 >xenix
2897 echo exit 1 >venix
2898 echo exit 1 >os2
2899 d_bsd="$undef"
2900 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2901 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2902 then
2903         echo "Looks kind of like an OSF/1 system, but we'll see..."
2904         echo exit 0 >osf1
2905 elif test `echo abc | tr a-z A-Z` = Abc ; then
2906         xxx=`./loc addbib blurfl $pth`
2907         if $test -f $xxx; then
2908         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2909                 echo exit 0 >bsd
2910                 echo exit 0 >usg
2911         else
2912                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2913                         echo "Looks kind of like an extended USG system, but we'll see..."
2914                 else
2915                         echo "Looks kind of like a USG system, but we'll see..."
2916                 fi
2917                 echo exit 0 >usg
2918         fi
2919 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2920         echo "Looks kind of like a BSD system, but we'll see..."
2921         d_bsd="$define"
2922         echo exit 0 >bsd
2923 else
2924         echo "Looks kind of like a Version 7 system, but we'll see..."
2925         echo exit 0 >v7
2926 fi
2927 case "$eunicefix" in
2928 *unixtovms*)
2929         $cat <<'EOI'
2930 There is, however, a strange, musty smell in the air that reminds me of
2931 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2932 EOI
2933         echo exit 0 >eunice
2934         d_eunice="$define"
2935 : it so happens the Eunice I know will not run shell scripts in Unix format
2936         ;;
2937 *)
2938         echo " "
2939         echo "Congratulations.  You aren't running Eunice."
2940         d_eunice="$undef"
2941         ;;
2942 esac
2943 : Detect OS2.  The p_ variable is set above in the Head.U unit.
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 EOI
2951         echo exit 0 >os2
2952         ;;
2953 esac
2954 if test -f /xenix; then
2955         echo "Actually, this looks more like a XENIX system..."
2956         echo exit 0 >xenix
2957         d_xenix="$define"
2958 else
2959         echo " "
2960         echo "It's not Xenix..."
2961         d_xenix="$undef"
2962 fi
2963 chmod +x xenix
2964 $eunicefix xenix
2965 if test -f /venix; then
2966         echo "Actually, this looks more like a VENIX system..."
2967         echo exit 0 >venix
2968 else
2969         echo " "
2970         if ./xenix; then
2971                 : null
2972         else
2973                 echo "Nor is it Venix..."
2974         fi
2975 fi
2976 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2977 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2978 $rm -f foo
2979
2980 : see if we need a special compiler
2981 echo " "
2982 if ./usg; then
2983         case "$cc" in
2984         '') case "$Mcc" in
2985                 /*) dflt='Mcc';;
2986                 *) case "$large" in
2987                         -M*) dflt='cc';;
2988                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2989                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2990                                                 dflt='cc'
2991                                         else
2992                                                 dflt='cc -M'
2993                                         fi
2994                                 else
2995                                         dflt='cc'
2996                                 fi;;
2997                         esac;;
2998                 esac;;
2999         *)  dflt="$cc";;
3000         esac
3001         case "$dflt" in
3002         *M*)    $cat <<'EOM'
3003 On some older systems the default C compiler will not resolve multiple global
3004 references that happen to have the same name.  On some such systems the "Mcc"
3005 command may be used to force these to be resolved.  On other systems a "cc -M"
3006 command is required.  (Note that the -M flag on other systems indicates a
3007 memory model to use!) If you have the Gnu C compiler, you might wish to use
3008 that instead.
3009
3010 EOM
3011         ;;
3012         esac
3013         rp="Use which C compiler?"
3014         . ./myread
3015         cc="$ans"
3016 else
3017         case "$cc" in
3018         '') dflt=cc;;
3019         *) dflt="$cc";;
3020         esac
3021         rp="Use which C compiler?"
3022         . ./myread
3023         cc="$ans"
3024 fi
3025 : Look for a hint-file generated 'call-back-unit'.  Now that the
3026 : user has specified the compiler, we may need to set or change some
3027 : other defaults.
3028 if $test -f cc.cbu; then
3029     . ./cc.cbu
3030 fi
3031 echo " "
3032 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3033 $cat >gccvers.c <<EOM
3034 #include <stdio.h>
3035 int main() {
3036 #ifdef __GNUC__
3037 #ifdef __VERSION__
3038         printf("%s\n", __VERSION__);
3039 #else
3040         printf("%s\n", "1");
3041 #endif
3042 #endif
3043         exit(0);
3044 }
3045 EOM
3046 if $cc -o gccvers gccvers.c; then
3047         gccversion=`./gccvers`
3048         case "$gccversion" in
3049         '') echo "You are not using GNU cc." ;;
3050         *)  echo "You are using GNU cc $gccversion."
3051             ;;
3052         esac
3053 else
3054         echo " "
3055         echo "*** WHOA THERE!!! ***" >&4
3056         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3057         case "$knowitall" in
3058         '')
3059         echo "    You'd better start hunting for one and let me know about it." >&4
3060                 exit 1
3061                 ;;
3062         esac
3063 fi
3064 $rm -f gccvers*
3065 case "$gccversion" in
3066 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3067 esac
3068
3069 : decide how portable to be.  Allow command line overrides.
3070 case "$d_portable" in
3071 "$undef") ;;
3072 *)      d_portable="$define" ;;
3073 esac
3074
3075 : set up shell script to do ~ expansion
3076 cat >filexp <<EOSS
3077 $startsh
3078 : expand filename
3079 case "\$1" in
3080  ~/*|~)
3081         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3082         ;;
3083  ~*)
3084         if $test -f /bin/csh; then
3085                 /bin/csh -f -c "glob \$1"
3086                 failed=\$?
3087                 echo ""
3088                 exit \$failed
3089         else
3090                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3091                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3092                 if $test ! -d "\$dir"; then
3093                         me=\`basename \$0\`
3094                         echo "\$me: can't locate home directory for: \$name" >&2
3095                         exit 1
3096                 fi
3097                 case "\$1" in
3098                 */*)
3099                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3100                         ;;
3101                 *)
3102                         echo \$dir
3103                         ;;
3104                 esac
3105         fi
3106         ;;
3107 *)
3108         echo \$1
3109         ;;
3110 esac
3111 EOSS
3112 chmod +x filexp
3113 $eunicefix filexp
3114
3115 : now set up to get a file name
3116 cat <<EOS >getfile
3117 $startsh
3118 EOS
3119 cat <<'EOSC' >>getfile
3120 tilde=''
3121 fullpath=''
3122 already=''
3123 skip=''
3124 none_ok=''
3125 exp_file=''
3126 nopath_ok=''
3127 orig_rp="$rp"
3128 orig_dflt="$dflt"
3129 case "$gfpth" in
3130 '') gfpth='.' ;;
3131 esac
3132
3133 case "$fn" in
3134 *\(*)
3135         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3136         fn=`echo $fn | sed 's/(.*)//'`
3137         ;;
3138 esac
3139
3140 case "$fn" in
3141 *:*)
3142         loc_file=`expr $fn : '.*:\(.*\)'`
3143         fn=`expr $fn : '\(.*\):.*'`
3144         ;;
3145 esac
3146
3147 case "$fn" in
3148 *~*) tilde=true;;
3149 esac
3150 case "$fn" in
3151 */*) fullpath=true;;
3152 esac
3153 case "$fn" in
3154 *+*) skip=true;;
3155 esac
3156 case "$fn" in
3157 *n*) none_ok=true;;
3158 esac
3159 case "$fn" in
3160 *e*) exp_file=true;;
3161 esac
3162 case "$fn" in
3163 *p*) nopath_ok=true;;
3164 esac
3165
3166 case "$fn" in
3167 *f*) type='File';;
3168 *d*) type='Directory';;
3169 *l*) type='Locate';;
3170 esac
3171
3172 what="$type"
3173 case "$what" in
3174 Locate) what='File';;
3175 esac
3176
3177 case "$exp_file" in
3178 '')
3179         case "$d_portable" in
3180         "$define") ;;
3181         *) exp_file=true;;
3182         esac
3183         ;;
3184 esac
3185
3186 cd ..
3187 while test "$type"; do
3188         redo=''
3189         rp="$orig_rp"
3190         dflt="$orig_dflt"
3191         case "$tilde" in
3192         true) rp="$rp (~name ok)";;
3193         esac
3194         . UU/myread
3195         if test -f UU/getfile.ok && \
3196                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3197         then
3198                 value="$ans"
3199                 ansexp="$ans"
3200                 break
3201         fi
3202         case "$ans" in
3203         none)
3204                 value=''
3205                 ansexp=''
3206                 case "$none_ok" in
3207                 true) type='';;
3208                 esac
3209                 ;;
3210         *)
3211                 case "$tilde" in
3212                 '') value="$ans"
3213                         ansexp="$ans";;
3214                 *)
3215                         value=`UU/filexp $ans`
3216                         case $? in
3217                         0)
3218                                 if test "$ans" != "$value"; then
3219                                         echo "(That expands to $value on this system.)"
3220                                 fi
3221                                 ;;
3222                         *) value="$ans";;
3223                         esac
3224                         ansexp="$value"
3225                         case "$exp_file" in
3226                         '') value="$ans";;
3227                         esac
3228                         ;;
3229                 esac
3230                 case "$fullpath" in
3231                 true)
3232                         case "$ansexp" in
3233                         /*) value="$ansexp" ;;
3234                         *)
3235                                 redo=true
3236                                 case "$already" in
3237                                 true)
3238                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3239                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3240                                         ;;
3241                                 *)
3242                                 echo "Please give a full path name, starting with slash." >&4
3243                                         case "$tilde" in
3244                                         true)
3245                                 echo "Note that using ~name is ok provided it expands well." >&4
3246                                                 already=true
3247                                                 ;;
3248                                         esac
3249                                 esac
3250                                 ;;
3251                         esac
3252                         ;;
3253                 esac
3254                 case "$redo" in
3255                 '')
3256                         case "$type" in
3257                         File)
3258                                 for fp in $gfpth; do
3259                                         if test "X$fp" = X.; then
3260                                             pf="$ansexp"
3261                                         else    
3262                                             pf="$fp/$ansexp"
3263                                         fi
3264                                         if test -f "$pf"; then
3265                                                 type=''
3266                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3267                                         then
3268                                                 echo "($value is not a plain file, but that's ok.)"
3269                                                 type=''
3270                                         fi
3271                                         if test X"$type" = X; then
3272                                             value="$pf"
3273                                             break
3274                                         fi
3275                                 done
3276                                 ;;
3277                         Directory)
3278                                 for fp in $gfpth; do
3279                                         if test "X$fp" = X.; then
3280                                             pf="$ansexp"
3281                                         else    
3282                                             pf="$fp/$ansexp"
3283                                         fi
3284                                         if test -d "$pf"; then
3285                                                 type=''
3286                                                 value="$pf"
3287                                                 break
3288                                         fi
3289                                 done
3290                                 ;;
3291                         Locate)
3292                                 if test -d "$ansexp"; then
3293                                         echo "(Looking for $loc_file in directory $value.)"
3294                                         value="$value/$loc_file"
3295                                         ansexp="$ansexp/$loc_file"
3296                                 fi
3297                                 if test -f "$ansexp"; then
3298                                         type=''
3299                                 fi
3300                                 case "$nopath_ok" in
3301                                 true)   case "$value" in
3302                                         */*) ;;
3303                                         *)      echo "Assuming $value will be in people's path."
3304                                                 type=''
3305                                                 ;;
3306                                         esac
3307                                         ;;
3308                                 esac
3309                                 ;;
3310                         esac
3311
3312                         case "$skip" in
3313                         true) type='';
3314                         esac
3315
3316                         case "$type" in
3317                         '') ;;
3318                         *)
3319                                 if test "$fastread" = yes; then
3320                                         dflt=y
3321                                 else
3322                                         dflt=n
3323                                 fi
3324                                 rp="$what $value doesn't exist.  Use that name anyway?"
3325                                 . UU/myread
3326                                 dflt=''
3327                                 case "$ans" in
3328                                 y*) type='';;
3329                                 *) echo " ";;
3330                                 esac
3331                                 ;;
3332                         esac
3333                         ;;
3334                 esac
3335                 ;;
3336         esac
3337 done
3338 cd UU
3339 ans="$value"
3340 rp="$orig_rp"
3341 dflt="$orig_dflt"
3342 rm -f getfile.ok
3343 test "X$gfpthkeep" != Xy && gfpth=""
3344 EOSC
3345
3346 : What should the include directory be ?
3347 echo " "
3348 $echo $n "Hmm...  $c"
3349 dflt='/usr/include'
3350 incpath=''
3351 mips_type=''
3352 if $test -f /bin/mips && /bin/mips; then
3353         echo "Looks like a MIPS system..."
3354         $cat >usr.c <<'EOCP'
3355 #ifdef SYSTYPE_BSD43
3356 /bsd43
3357 #endif
3358 EOCP
3359         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3360                 dflt='/bsd43/usr/include'
3361                 incpath='/bsd43'
3362                 mips_type='BSD 4.3'
3363         else
3364                 mips_type='System V'
3365         fi
3366         $rm -f usr.c usr.out
3367         echo "and you're compiling with the $mips_type compiler and libraries."
3368         xxx_prompt=y
3369         echo "exit 0" >mips
3370 else
3371         echo "Doesn't look like a MIPS system."
3372         xxx_prompt=n
3373         echo "exit 1" >mips
3374 fi
3375 chmod +x mips
3376 $eunicefix mips
3377 case "$usrinc" in
3378 '') ;;
3379 *) dflt="$usrinc";;
3380 esac
3381 case "$xxx_prompt" in
3382 y)      fn=d/
3383         echo " "
3384         rp='Where are the include files you want to use?'
3385         . ./getfile
3386         usrinc="$ans"
3387         ;;
3388 *)      usrinc="$dflt"
3389         ;;
3390 esac
3391
3392 : see how we invoke the C preprocessor
3393 echo " "
3394 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3395 cat <<'EOT' >testcpp.c
3396 #define ABC abc
3397 #define XYZ xyz
3398 ABC.XYZ
3399 EOT
3400 cd ..
3401 if test ! -f cppstdin; then
3402         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3403                 # AIX cc -E doesn't show the absolute headerfile
3404                 # locations but we'll cheat by using the -M flag.
3405                 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
3406         else
3407                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3408         fi
3409 else
3410         echo "Keeping your $hint cppstdin wrapper."
3411 fi
3412 chmod 755 cppstdin
3413 wrapper=`pwd`/cppstdin
3414 ok='false'
3415 cd UU
3416
3417 if $test "X$cppstdin" != "X" && \
3418         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3419         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3420 then
3421         echo "You used to use $cppstdin $cppminus so we'll use that again."
3422         case "$cpprun" in
3423         '') echo "But let's see if we can live without a wrapper..." ;;
3424         *)
3425                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3426                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3427                 then
3428                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3429                         ok='true'
3430                 else
3431                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3432                 fi
3433                 ;;
3434         esac
3435 else
3436         case "$cppstdin" in
3437         '') ;;
3438         *)
3439                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3440                 ;;
3441         esac
3442 fi
3443
3444 if $ok; then
3445         : nothing
3446 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3447         $cc -E <testcpp.c >testcpp.out 2>&1; \
3448         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3449         echo "Yup, it does."
3450         x_cpp="$cc -E"
3451         x_minus='';
3452 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3453         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3454         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3455         echo "Yup, it does."
3456         x_cpp="$cc -E"
3457         x_minus='-';
3458 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3459         $cc -P <testcpp.c >testcpp.out 2>&1; \
3460         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3461         echo "Yipee, that works!"
3462         x_cpp="$cc -P"
3463         x_minus='';
3464 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3465         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3466         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3467         echo "At long last!"
3468         x_cpp="$cc -P"
3469         x_minus='-';
3470 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3471         $cpp <testcpp.c >testcpp.out 2>&1; \
3472         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3473         echo "It works!"
3474         x_cpp="$cpp"
3475         x_minus='';
3476 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3477         $cpp - <testcpp.c >testcpp.out 2>&1; \
3478         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3479         echo "Hooray, it works!  I was beginning to wonder."
3480         x_cpp="$cpp"
3481         x_minus='-';
3482 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3483         $wrapper <testcpp.c >testcpp.out 2>&1; \
3484         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3485         x_cpp="$wrapper"
3486         x_minus=''
3487         echo "Eureka!"
3488 else
3489         dflt=''
3490         rp="No dice.  I can't find a C preprocessor.  Name one:"
3491         . ./myread
3492         x_cpp="$ans"
3493         x_minus=''
3494         $x_cpp <testcpp.c >testcpp.out 2>&1
3495         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3496                 echo "OK, that will do." >&4
3497         else
3498 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3499                 exit 1
3500         fi
3501 fi
3502
3503 case "$ok" in
3504 false)
3505         cppstdin="$x_cpp"
3506         cppminus="$x_minus"
3507         cpprun="$x_cpp"
3508         cpplast="$x_minus"
3509         set X $x_cpp
3510         shift
3511         case "$1" in
3512         "$cpp")
3513                 echo "Perhaps can we force $cc -E using a wrapper..."
3514                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3515                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3516                 then
3517                         echo "Yup, we can."
3518                         cppstdin="$wrapper"
3519                         cppminus='';
3520                 else
3521                         echo "Nope, we'll have to live without it..."
3522                 fi
3523                 ;;
3524         esac
3525         case "$cpprun" in
3526         "$wrapper")
3527                 cpprun=''
3528                 cpplast=''
3529                 ;;
3530         esac
3531         ;;
3532 esac
3533
3534 case "$cppstdin" in
3535 "$wrapper"|'cppstdin') ;;
3536 *) $rm -f $wrapper;;
3537 esac
3538 $rm -f testcpp.c testcpp.out
3539
3540 : Set private lib path
3541 case "$plibpth" in
3542 '') if ./mips; then
3543                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3544         fi;;
3545 esac
3546 case "$libpth" in
3547 ' ') dlist='';;
3548 '') dlist="$loclibpth $plibpth $glibpth";;
3549 *) dlist="$libpth";;
3550 esac
3551
3552 : Now check and see which directories actually exist, avoiding duplicates
3553 libpth=''
3554 for xxx in $dlist
3555 do
3556     if $test -d $xxx; then
3557                 case " $libpth " in
3558                 *" $xxx "*) ;;
3559                 *) libpth="$libpth $xxx";;
3560                 esac
3561     fi
3562 done
3563 $cat <<'EOM'
3564
3565 Some systems have incompatible or broken versions of libraries.  Among
3566 the directories listed in the question below, please remove any you
3567 know not to be holding relevant libraries, and add any that are needed.
3568 Say "none" for none.
3569
3570 EOM
3571 case "$libpth" in
3572 '') dflt='none';;
3573 *)
3574         set X $libpth
3575         shift
3576         dflt=${1+"$@"}
3577         ;;
3578 esac
3579 rp="Directories to use for library searches?"
3580 . ./myread
3581 case "$ans" in
3582 none) libpth=' ';;
3583 *) libpth="$ans";;
3584 esac
3585
3586 : compute shared library extension
3587 case "$so" in
3588 '')
3589         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3590                 dflt='sl'
3591         else
3592                 dflt='so'
3593         fi
3594         ;;
3595 *) dflt="$so";;
3596 esac
3597 $cat <<EOM
3598
3599 On some systems, shared libraries may be available.  Answer 'none' if
3600 you want to suppress searching of shared libraries for the remainder
3601 of this configuration.
3602
3603 EOM
3604 rp='What is the file extension used for shared libraries?'
3605 . ./myread
3606 so="$ans"
3607
3608 : Define several unixisms.
3609 : Hints files or command line option can be used to override them.
3610 : The convoluted testing is in case hints files set either the old
3611 : or the new name.
3612 case "$_exe" in
3613 '')     case "$exe_ext" in
3614     '') ;;
3615         *)      _exe="$exe_ext" ;;
3616         esac
3617         ;;
3618 esac
3619 case "$_a" in
3620 '')     case "$lib_ext" in
3621     '') _a='.a';;
3622         *)      _a="$lib_ext" ;;
3623         esac
3624         ;;
3625 esac
3626 case "$_o" in
3627 '') case "$obj_ext" in
3628         '')     _o='.o';;
3629         *)      _o="$obj_ext";;
3630         esac
3631         ;;
3632 esac
3633 case "$p_" in
3634 '') case "$path_sep" in
3635         '')     p_=':';;
3636         *)      p_="$path_sep";;
3637         esac
3638         ;;
3639 esac
3640 exe_ext=$_exe
3641 lib_ext=$_a
3642 obj_ext=$_o
3643 path_sep=$p_
3644
3645 : Which makefile gets called first.  This is used by make depend.
3646 case "$firstmakefile" in
3647 '') firstmakefile='makefile';;
3648 esac
3649
3650 cat <<EOM
3651
3652 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3653 Configure must be run with -Dusesocks.
3654
3655 Normally you do not need this and you should answer no.
3656
3657 EOM
3658 case "$usesocks" in
3659 $define|true|[yY]*)     dflt='y';;
3660 *) dflt='n';;
3661 esac
3662 rp='Build Perl for SOCKS?'
3663 . ./myread
3664 case "$ans" in
3665 y|Y)    val="$define" ;;     
3666 *)      val="$undef" ;;
3667 esac
3668 set usesocks
3669 eval $setvar
3670
3671 : Looking for optional libraries
3672 echo " "
3673 echo "Checking for optional libraries..." >&4
3674 case "$libs" in
3675 ' '|'') dflt='';;
3676 *) dflt="$libs";;
3677 esac
3678 case "$libswanted" in
3679 '') libswanted='c_s';;
3680 esac
3681 case "$usesocks" in
3682 $define)
3683         libswanted="$libswanted socks5 socks5_sh"
3684         ;;
3685 esac
3686 for thislib in $libswanted; do
3687         
3688         libname="$thislib"
3689         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3690                 if $test "X$ignore_versioned_solibs" = "X"; then
3691                         xxx=/ignored$xxx
3692                 else
3693                         libstyle=shared
3694                 fi
3695         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3696                 libstyle=shared
3697         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3698                 libstyle=static
3699         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3700                 libstyle=static
3701         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3702                 libstyle=static
3703                 libname=${thislib}_s
3704         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3705                 libstyle="static"
3706         fi
3707         if $test -f "$xxx"; then
3708                 eval $libscheck
3709         fi
3710         if $test -f "$xxx"; then
3711                 case "$libstyle" in
3712                 shared) echo "Found -l$libname (shared)." ;;
3713                 static) echo "Found -l$libname." ;;
3714                 *)      echo "Found -l$libname ($libstyle)." ;;
3715                 esac
3716                 case " $dflt " in
3717                 *"-l$thislib "*);;
3718                 *) dflt="$dflt -l$libname"
3719                    libsfound="$libsfound $xxx"
3720                    yyy=`basename $xxx`
3721                    libsfiles="$libsfiles $yyy"
3722                    yyy=`echo $xxx|sed "s@/$yyy\\$@@"`
3723                    case " $libsdirs " in
3724                    *" $yyy "*) ;;
3725                    *) libsdirs="$libsdirs $yyy" ;;
3726                    esac
3727                    ;;
3728                 esac
3729         else
3730                 echo "No -l$thislib."
3731         fi
3732 done
3733 set X $dflt
3734 shift
3735 dflt="$*"
3736 case "$libs" in
3737 '') dflt="$dflt";;
3738 *) dflt="$libs";;
3739 esac
3740 case "$dflt" in
3741 ' '|'') dflt='none';;
3742 esac
3743
3744 case "$libsfound" in
3745 *libm*) ;;
3746 *) cat <<EOM >&4
3747
3748 I could not find -lm, the mathematics library.
3749 This means that something went awfully wrong.
3750
3751 EOM
3752    exit 1
3753    ;;
3754 esac
3755
3756 $cat <<EOM
3757
3758 In order to compile $package on your machine, a number of libraries
3759 are usually needed.  Include any other special libraries here as well.
3760 Say "none" for none.  The default list is almost always right.
3761 EOM
3762
3763 echo " "
3764 rp="What libraries to use?"
3765 . ./myread
3766 case "$ans" in
3767 none) libs=' ';;
3768 *) libs="$ans";;
3769 esac
3770
3771 : determine optimization, if desired, or use for debug flag also
3772 case "$optimize" in
3773 ' '|$undef) dflt='none';;
3774 '') dflt='-O';;
3775 *) dflt="$optimize";;
3776 esac
3777 $cat <<EOH
3778
3779 By default, $package compiles with the -O flag to use the optimizer.
3780 Alternately, you might want to use the symbolic debugger, which uses
3781 the -g flag (on traditional Unix systems).  Either flag can be
3782 specified here.  To use neither flag, specify the word "none".
3783
3784 EOH
3785 rp="What optimizer/debugger flag should be used?"
3786 . ./myread
3787 optimize="$ans"
3788 case "$optimize" in
3789 'none') optimize=" ";;
3790 esac
3791
3792 dflt=''
3793 : We will not override a previous value, but we might want to
3794 : augment a hint file
3795 case "$hint" in
3796 default|recommended)
3797         case "$gccversion" in
3798         1*) dflt='-fpcc-struct-return' ;;
3799         esac
3800         case "$optimize" in
3801         *-g*) dflt="$dflt -DDEBUGGING";;
3802         esac
3803         case "$gccversion" in
3804         2*) if test -d /etc/conf/kconfig.d &&
3805                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3806                 then
3807                         dflt="$dflt -posix"
3808                 fi
3809                 ;;
3810         esac
3811         case "$gccversion" in
3812         1*) ;;
3813         2.[0-8]*) ;;
3814         ?*)     echo " "
3815                 echo "Checking if your compiler accepts -fno-strict-aliasing" 2>&1
3816                 echo 'int main(void) { return 0; }' > gcctest.c
3817                 if $cc -O2 -fno-strict-aliasing -o gcctest gcctest.c; then
3818                         echo "Yes, it does." 2>&1
3819                         case "$ccflags" in
3820                         *strict-aliasing*) 
3821                                 echo "Leaving current flags $ccflags alone." 2>&1
3822                                 ;;
3823                         *) dflt="$dflt -fno-strict-aliasing" ;;
3824                         esac
3825                 else
3826                         echo "Nope, it doesn't, but that's ok." 2>&1
3827                 fi
3828                 ;;
3829         esac
3830         ;;
3831 esac
3832
3833 case "$mips_type" in
3834 *BSD*|'') inclwanted="$locincpth $usrinc";;
3835 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3836 esac
3837 for thisincl in $inclwanted; do
3838         if $test -d $thisincl; then
3839                 if $test x$thisincl != x$usrinc; then
3840                         case "$dflt" in
3841                         *$thisincl*);;
3842                         *) dflt="$dflt -I$thisincl";;
3843                         esac
3844                 fi
3845         fi
3846 done
3847
3848 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3849         xxx=true;
3850 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3851         xxx=true;
3852 else
3853         xxx=false;
3854 fi;
3855 if $xxx; then
3856         case "$dflt" in
3857         *$2*);;
3858         *) dflt="$dflt -D$2";;
3859         esac;
3860 fi'
3861
3862 set signal.h LANGUAGE_C; eval $inctest
3863
3864 case "$usesocks" in
3865 $define)
3866         ccflags="$ccflags -DSOCKS"
3867         ;;
3868 esac
3869
3870 case "$hint" in
3871 default|recommended) dflt="$ccflags $dflt" ;;
3872 *) dflt="$ccflags";;
3873 esac
3874
3875 case "$dflt" in
3876 ''|' ') dflt=none;;
3877 esac
3878 $cat <<EOH
3879
3880 Your C compiler may want other flags.  For this question you should include
3881 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3882 but you should NOT include libraries or ld flags like -lwhatever.  If you
3883 want $package to honor its debug switch, you should include -DDEBUGGING here.
3884 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
3885
3886 To use no flags, specify the word "none".
3887
3888 EOH
3889 set X $dflt
3890 shift
3891 dflt=${1+"$@"}
3892 rp="Any additional cc flags?"
3893 . ./myread
3894 case "$ans" in
3895 none) ccflags='';;
3896 *) ccflags="$ans";;
3897 esac
3898
3899 : the following weeds options from ccflags that are of no interest to cpp
3900 cppflags="$ccflags"
3901 case "$gccversion" in
3902 1*) cppflags="$cppflags -D__GNUC__"
3903 esac
3904 case "$mips_type" in
3905 '');;
3906 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3907 esac
3908 case "$cppflags" in
3909 '');;
3910 *)
3911         echo " "
3912         echo "Let me guess what the preprocessor flags are..." >&4
3913         set X $cppflags
3914         shift
3915         cppflags=''
3916         $cat >cpp.c <<'EOM'
3917 #define BLURFL foo
3918
3919 BLURFL xx LFRULB
3920 EOM
3921         previous=''
3922         for flag in $*
3923         do
3924                 case "$flag" in
3925                 -*) ftry="$flag";;
3926                 *) ftry="$previous $flag";;
3927                 esac
3928                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
3929                         >cpp1.out 2>/dev/null && \
3930                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
3931                         >cpp2.out 2>/dev/null && \
3932                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3933                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3934                 then
3935                         cppflags="$cppflags $ftry"
3936                         previous=''
3937                 else
3938                         previous="$flag"
3939                 fi
3940         done
3941         set X $cppflags
3942         shift
3943         cppflags=${1+"$@"}
3944         case "$cppflags" in
3945         *-*)  echo "They appear to be: $cppflags";;
3946         esac
3947         $rm -f cpp.c cpp?.out
3948         ;;
3949 esac
3950
3951 : flags used in final linking phase
3952 case "$ldflags" in
3953 '') if ./venix; then
3954                 dflt='-i -z'
3955         else
3956                 dflt=''
3957         fi
3958         case "$ccflags" in
3959         *-posix*) dflt="$dflt -posix" ;;
3960         esac
3961         ;;
3962 *) dflt="$ldflags";;
3963 esac
3964
3965 : Try to guess additional flags to pick up local libraries.
3966 for thislibdir in $libpth; do
3967         case " $loclibpth " in
3968         *" $thislibdir "*)
3969                 case "$dflt " in 
3970                 *"-L$thislibdir "*) ;;
3971                 *)  dflt="$dflt -L$thislibdir" ;;
3972                 esac
3973                 ;;
3974         esac
3975 done
3976
3977 case "$dflt" in
3978 '') dflt='none' ;;
3979 esac
3980
3981 $cat <<EOH
3982
3983 Your C linker may need flags.  For this question you should
3984 include -L/whatever and any other flags used by the C linker, but you
3985 should NOT include libraries like -lwhatever.
3986
3987 Make sure you include the appropriate -L/path flags if your C linker
3988 does not normally search all of the directories you specified above,
3989 namely
3990         $libpth
3991 To use no flags, specify the word "none".
3992
3993 EOH
3994
3995 rp="Any additional ld flags (NOT including libraries)?"
3996 . ./myread
3997 case "$ans" in
3998 none) ldflags='';;
3999 *) ldflags="$ans";;
4000 esac
4001 rmlist="$rmlist pdp11"
4002
4003 : coherency check
4004 echo " "
4005 echo "Checking your choice of C compiler and flags for coherency..." >&4
4006 $cat > try.c <<'EOF'
4007 #include <stdio.h>
4008 int main() { printf("Ok\n"); exit(0); }
4009 EOF
4010 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4011 shift
4012 $cat >try.msg <<'EOM'
4013 I've tried to compile and run the following simple program:
4014
4015 EOM
4016 $cat try.c >> try.msg
4017
4018 $cat >> try.msg <<EOM
4019
4020 I used the command:
4021
4022         $*
4023         ./try
4024
4025 and I got the following output:
4026
4027 EOM
4028 dflt=y
4029 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4030         if sh -c './try' >>try.msg 2>&1; then
4031                 xxx=`./try`
4032                 case "$xxx" in
4033                 "Ok") dflt=n ;;
4034                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4035                         case " $libs " in
4036                         *" -lsfio "*)
4037                                 cat >> try.msg <<'EOQS'
4038 If $libs contains -lsfio, and sfio is mis-configured, then it
4039 sometimes (apparently) runs and exits with a 0 status, but with no
4040 output!  It may have to do with sfio's use of _exit vs. exit.
4041
4042 EOQS
4043                                 rp="You have a big problem.  Shall I abort Configure"
4044                                 dflt=y
4045                                 ;;
4046                         esac
4047                         ;;
4048                 esac
4049         else
4050                 echo "The program compiled OK, but exited with status $?." >>try.msg
4051                 rp="You have a problem.  Shall I abort Configure"
4052                 dflt=y
4053         fi
4054 else
4055         echo "I can't compile the test program." >>try.msg
4056         rp="You have a BIG problem.  Shall I abort Configure"
4057         dflt=y
4058 fi
4059 case "$dflt" in
4060 y)
4061         $cat try.msg >&4
4062         case "$knowitall" in
4063         '')
4064                 echo "(The supplied flags or libraries might be incorrect.)"
4065                 ;;
4066         *) dflt=n;;
4067         esac
4068         echo " "
4069         . ./myread
4070         case "$ans" in
4071         n*|N*) ;;
4072         *)      echo "Ok.  Stopping Configure." >&4
4073                 exit 1
4074                 ;;
4075         esac
4076         ;;
4077 n) echo "OK, that should do.";;
4078 esac
4079 $rm -f try try.* core
4080
4081 : define an is-a-typedef? function
4082 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4083 case "$inclist" in
4084 "") inclist="sys/types.h";;
4085 esac;
4086 eval "varval=\$$var";
4087 case "$varval" in
4088 "")
4089         $rm -f temp.c;
4090         for inc in $inclist; do
4091                 echo "#include <$inc>" >>temp.c;
4092         done;
4093         echo "#ifdef $type" >> temp.c;
4094         echo "printf(\"We have $type\");" >> temp.c;
4095         echo "#endif" >> temp.c;
4096         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4097         if $contains $type temp.E >/dev/null 2>&1; then
4098                 eval "$var=\$type";
4099         else
4100                 eval "$var=\$def";
4101         fi;
4102         $rm -f temp.?;;
4103 *) eval "$var=\$varval";;
4104 esac'
4105
4106 : define an is-a-typedef? function that prompts if the type is not available.
4107 typedef_ask='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
4108 case "$inclist" in
4109 "") inclist="sys/types.h";;
4110 esac;
4111 eval "varval=\$$var";
4112 case "$varval" in
4113 "")
4114         $rm -f temp.c;
4115         for inc in $inclist; do
4116                 echo "#include <$inc>" >>temp.c;
4117         done;
4118         echo "#ifdef $type" >> temp.c;
4119         echo "printf(\"We have $type\");" >> temp.c;
4120         echo "#endif" >> temp.c;
4121         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
4122         echo " " ;
4123         echo "$rp" | $sed -e "s/What is/Looking for/" -e "s/?/./";
4124         if $contains $type temp.E >/dev/null 2>&1; then
4125                 echo "$type found." >&4;
4126                 eval "$var=\$type";
4127         else
4128                 echo "$type NOT found." >&4;
4129                 dflt="$def";
4130                 . ./myread ;
4131                 eval "$var=\$ans";
4132         fi;
4133         $rm -f temp.?;;
4134 *) eval "$var=\$varval";;
4135 esac'
4136
4137 : define a shorthand compile call
4138 compile='
4139 mc_file=$1;
4140 shift;
4141 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4142 : define a shorthand compile call for compilations that should be ok.
4143 compile_ok='
4144 mc_file=$1;
4145 shift;
4146 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4147
4148 : check for lengths of integral types
4149 echo " "
4150 case "$intsize" in
4151 '')
4152         echo "Checking to see how big your integers are..." >&4
4153         $cat >intsize.c <<'EOCP'
4154 #include <stdio.h>
4155 int main()
4156 {
4157         printf("intsize=%d;\n", (int)sizeof(int));
4158         printf("longsize=%d;\n", (int)sizeof(long));
4159         printf("shortsize=%d;\n", (int)sizeof(short));
4160         exit(0);
4161 }
4162 EOCP
4163         set intsize
4164         if eval $compile_ok && ./intsize > /dev/null; then
4165                 eval `./intsize`
4166                 echo "Your integers are $intsize bytes long."
4167                 echo "Your long integers are $longsize bytes long."
4168                 echo "Your short integers are $shortsize bytes long."
4169         else
4170                 $cat >&4 <<EOM
4171 !
4172 Help! I can't compile and run the intsize test program: please enlighten me!
4173 (This is probably a misconfiguration in your system or libraries, and
4174 you really ought to fix it.  Still, I'll try anyway.)
4175 !
4176 EOM
4177                 dflt=4
4178                 rp="What is the size of an integer (in bytes)?"
4179                 . ./myread
4180                 intsize="$ans"
4181                 dflt=$intsize
4182                 rp="What is the size of a long integer (in bytes)?"
4183                 . ./myread
4184                 longsize="$ans"
4185                 dflt=2
4186                 rp="What is the size of a short integer (in bytes)?"
4187                 . ./myread
4188                 shortsize="$ans"
4189         fi
4190         ;;
4191 esac
4192 $rm -f intsize intsize.*
4193
4194 : see what type lseek is declared as in the kernel
4195 rp="What is the type used for lseek's offset on this system?"
4196 set off_t lseektype long stdio.h sys/types.h
4197 eval $typedef_ask
4198
4199 echo " "
4200 $echo $n "Checking to see how big your file offsets are...$c" >&4
4201 $cat >try.c <<EOCP
4202 #include <sys/types.h>
4203 #include <stdio.h>
4204 int main()
4205 {
4206     printf("%d\n", (int)sizeof($lseektype));
4207     return(0); 
4208 }
4209 EOCP
4210 set try
4211 if eval $compile_ok; then
4212         lseeksize=`./try`
4213         $echo " $lseeksize bytes." >&4
4214 else
4215         dflt=$longsize
4216         echo " "
4217         echo "(I can't seem to compile the test program.  Guessing...)"
4218         rp="What is the size of your file offsets (in bytes)?"
4219         . ./myread
4220         lseeksize="$ans"
4221 fi
4222 $rm -f try.c try
4223
4224 : see what type file positions are declared as in the library
4225 rp="What is the type for file position used by fsetpos()?"
4226 set fpos_t fpostype long stdio.h sys/types.h
4227 eval $typedef_ask
4228
4229 echo " "
4230 case "$fpostype" in
4231 *_t) zzz="$fpostype"    ;;
4232 *)   zzz="fpos_t"       ;;
4233 esac
4234 $echo $n "Checking the size of $zzz...$c" >&4 
4235 cat > try.c <<EOCP
4236 #include <sys/types.h>
4237 #include <stdio.h>
4238 int main() {
4239     printf("%d\n", (int)sizeof($fpostype));
4240     exit(0);
4241 }
4242 EOCP
4243 set try
4244 if eval $compile_ok; then
4245         yyy=`./try`
4246         case "$yyy" in
4247         '')     fpossize=4
4248                 echo " "
4249                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4250                 ;;
4251         *)      fpossize=$yyy
4252                 echo " $fpossize bytes."
4253                 ;;
4254         esac
4255 else
4256         dflt="$longsize"
4257         echo " "
4258         echo "(I can't compile the test program.  Guessing...)" >&4
4259         rp="What is the size of your file positions (in bytes)?"
4260         . ./myread
4261         fpossize="$ans"
4262 fi
4263
4264
4265
4266 case "$lseeksize:$fpossize" in
4267 8:8) cat <<EOM
4268
4269 You can have files larger than 2 gigabytes.
4270 EOM
4271    val="$define" ;;
4272 *) cat <<EOM
4273
4274 Perl can be built to understand large files (files larger than 2 gigabytes)
4275 on some systems.  To do so, Configure must be run with -Duselargefiles.
4276
4277 If this doesn't make any sense to you, just accept the default 'y'.
4278 EOM
4279    case "$uselargefiles" in
4280    "$undef"|false|[nN]*) dflt='n' ;;
4281    *)   dflt='y' ;;
4282    esac
4283    rp='Try to understand large files, if available?'
4284    . ./myread
4285    case "$ans" in
4286    y|Y)         val="$define" ;;
4287    *)           val="$undef"  ;;
4288    esac
4289    ;;
4290 esac
4291 set uselargefiles
4292 eval $setvar
4293 case "$uselargefiles" in
4294 "$define")
4295 : Look for a hint-file generated 'call-back-unit'.  If the
4296 : user has specified that a large files perl is to be built,
4297 : we may need to set or change some other defaults.
4298         if $test -f uselfs.cbu; then
4299                 echo "Your platform has some specific hints for large file builds, using them..."
4300                 . ./uselfs.cbu
4301                 echo " "
4302                 $echo $n "Rechecking to see how big your file offsets are...$c" >&4
4303                 $cat >try.c <<EOCP
4304 #include <sys/types.h>
4305 #include <stdio.h>
4306 int main()
4307 {
4308     printf("%d\n", (int)sizeof($lseektype));
4309     return(0); 
4310 }
4311 EOCP
4312                 set try
4313                 if eval $compile_ok; then
4314                         lseeksize=`./try`
4315                         $echo " $lseeksize bytes." >&4
4316                 else
4317                         dflt="$lseeksize"
4318                         echo " "
4319                         echo "(I can't seem to compile the test program.  Guessing...)"
4320                         rp="What is the size of your file offsets (in bytes)?"
4321                         . ./myread
4322                         lseeksize="$ans"
4323                 fi
4324                 case "$fpostype" in
4325                 *_t) zzz="$fpostype"    ;;
4326                 *)   zzz="fpos_t"       ;;
4327                 esac
4328                 $echo $n "Rechecking the size of $zzz...$c" >&4 
4329                 $cat > try.c <<EOCP
4330 #include <sys/types.h>
4331 #include <stdio.h>
4332 int main() {
4333     printf("%d\n", (int)sizeof($fpostype));
4334     exit(0);
4335 }
4336 EOCP
4337                 set try
4338                 if eval $compile_ok; then
4339                         yyy=`./try`
4340                         dflt="$lseeksize"
4341                         case "$yyy" in
4342                         '')     echo " "
4343                                 echo "(I can't execute the test program--guessing $fpossize.)" >&4
4344                                 ;;
4345                         *)      fpossize=$yyy
4346                                 echo " $fpossize bytes."
4347                                 ;;
4348                         esac
4349                 else
4350                         dflt="$fpossize"
4351                         echo " "
4352                         echo "(I can't compile the test program.  Guessing...)" >&4
4353                         rp="What is the size of your file positions (in bytes)?"
4354                         . ./myread
4355                         fpossize="$ans"
4356                 fi
4357                 $rm -f try.c try
4358         fi
4359         ;;
4360 esac
4361
4362
4363 case "$usemorebits" in
4364 "$define"|true|[yY]*)
4365         use64bits="$define"
4366         uselongdouble="$define"
4367         usemorebits="$define"
4368         ;;
4369 *)      usemorebits="$undef"
4370         ;;
4371 esac
4372
4373
4374 case "$intsize:$longsize" in
4375 8:*|*:8) cat <<EOM
4376
4377 You have natively 64-bit integers.
4378 EOM
4379    val="$define" ;;
4380 *) cat <<EOM
4381
4382 Perl can be built to take advantage of 64-bit integer types
4383 on some systems.  To do so, Configure must be run with -Duse64bits.
4384
4385 If this doesn't make any sense to you, just accept the default.
4386 EOM
4387   case "$use64bits" in
4388   $define|true|[yY]*)   dflt='y';;
4389   *) dflt='n';;
4390   esac
4391   rp='Try to use 64-bit integers, if available?'
4392   . ./myread
4393   case "$ans" in
4394   y|Y) val="$define" ;;
4395   *)   val="$undef"  ;;
4396   esac
4397   ;;
4398 esac
4399 set use64bits
4400 eval $setvar
4401
4402 case "$archname64" in
4403 '') archname64='' ;;    # not a typo
4404 esac
4405
4406 case "$use64bits" in
4407 "$define"|true|[yY]*)
4408 : Look for a hint-file generated 'call-back-unit'.  If the
4409 : user has specified that a 64-bit perl is to be built,
4410 : we may need to set or change some other defaults.
4411         if $test -f use64bits.cbu; then
4412                 echo "Your platform has some specific hints for 64-bit builds, using them..."
4413                 . ./use64bits.cbu
4414         else
4415                 $cat <<EOM
4416 (Your platform doesn't have any specific hints for 64-bit builds.)
4417 EOM
4418                 case "$intsize:$longsize" in
4419 8:*|*:8) cat <<EOM
4420 (This is probably okay, as your system is a natively 64-bit system.)
4421 EOM
4422                   ;;
4423                 esac
4424                 case "$gccversion" in
4425                 '')     ;;
4426                 *)      case "$ccflags" in
4427                         *-DUSE_LONG_LONG*) ;;
4428                         *) $cat <<EOM
4429 But since you seem to be using gcc, I will now add -DUSE_LONG_LONG
4430 to the compilation flags.
4431 EOM
4432                            ccflags="$ccflags -DUSE_LONG_LONG"
4433                            ;;
4434                         esac
4435                         ;;
4436                 esac
4437         fi
4438         ;;
4439 esac
4440
4441 : determine the architecture name
4442 echo " "
4443 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
4444         tarch=`arch`"-$osname"
4445 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
4446         if uname -m > tmparch 2>&1 ; then
4447                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
4448                         -e 's/$/'"-$osname/" tmparch`
4449         else
4450                 tarch="$osname"
4451         fi
4452         $rm -f tmparch
4453 else
4454         tarch="$osname"
4455 fi
4456 case "$myarchname" in
4457 ''|"$tarch") ;;
4458 *)
4459         echo "(Your architecture name used to be $myarchname.)"
4460         archname=''
4461         ;;
4462 esac
4463 myarchname="$tarch"
4464 case "$archname" in
4465 '') dflt="$tarch";;
4466 *) dflt="$archname";;
4467 esac
4468 rp='What is your architecture name'
4469 . ./myread
4470 archname="$ans"
4471 case "$usethreads" in
4472 $define)
4473         echo "Threads selected." >&4
4474         case "$archname" in
4475         *-thread*) echo "...and architecture name already has -thread." >&4
4476                 ;;
4477         *)      archname="$archname-thread"
4478                 echo "...setting architecture name to $archname." >&4
4479                 ;;
4480         esac
4481         ;;
4482 esac
4483 case "$usemultiplicity" in
4484 $define)
4485         echo "Multiplicity selected." >&4
4486         case "$archname" in
4487         *-multi*) echo "...and architecture name already has -multi." >&4
4488                 ;;
4489         *)      archname="$archname-multi"
4490                 echo "...setting architecture name to $archname." >&4
4491                 ;;
4492         esac
4493         ;;
4494 esac
4495 case "$use64bits" in
4496 $define)
4497         case "$archname64" in
4498         '')
4499                 ;;
4500         *)
4501                 case "$archname" in
4502                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
4503                         ;;
4504                 *)      archname="$archname-$archname64"
4505                         echo "...setting architecture name to $archname." >&4
4506                         ;;
4507                 esac
4508                 ;;
4509         esac
4510 esac
4511
4512 : determine root of directory hierarchy where package will be installed.
4513 case "$prefix" in
4514 '')
4515         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4516         ;;
4517 *)
4518         dflt="$prefix"
4519         ;;
4520 esac
4521 $cat <<EOM
4522
4523 By default, $package will be installed in $dflt/bin, manual pages
4524 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4525 installation directories. Typically this is something like /usr/local.
4526 If you wish to have binaries under /usr/bin but other parts of the
4527 installation under /usr/local, that's ok: you will be prompted
4528 separately for each of the installation directories, the prefix being
4529 only used to set the defaults.
4530
4531 EOM
4532 fn=d~
4533 rp='Installation prefix to use?'
4534 . ./getfile
4535 oldprefix=''
4536 case "$prefix" in
4537 '') ;;
4538 *)
4539         case "$ans" in
4540         "$prefix") ;;
4541         *) oldprefix="$prefix";;
4542         esac
4543         ;;
4544 esac
4545 prefix="$ans"
4546 prefixexp="$ansexp"
4547
4548 : is AFS running?
4549 echo " "
4550 case "$afs" in
4551 $define|true)   afs=true ;;
4552 $undef|false)   afs=false ;;
4553 *)      if test -d /afs; then
4554                 afs=true
4555         else
4556                 afs=false
4557         fi
4558         ;;
4559 esac
4560 if $afs; then
4561         echo "AFS may be running... I'll be extra cautious then..." >&4
4562 else
4563         echo "AFS does not seem to be running..." >&4
4564 fi
4565
4566 : determine installation prefix for where package is to be installed.
4567 if $afs; then 
4568 $cat <<EOM
4569
4570 Since you are running AFS, I need to distinguish the directory in which
4571 files will reside from the directory in which they are installed (and from
4572 which they are presumably copied to the former directory by occult means).
4573
4574 EOM
4575         case "$installprefix" in
4576         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4577         *) dflt="$installprefix";;
4578         esac
4579 else
4580 $cat <<EOM
4581
4582 In some special cases, particularly when building $package for distribution,
4583 it is convenient to distinguish between the directory in which files should 
4584 be installed from the directory ($prefix) in which they 
4585 will eventually reside.  For most users, these two directories are the same.
4586
4587 EOM
4588         case "$installprefix" in
4589         '') dflt=$prefix ;;
4590         *) dflt=$installprefix;;
4591         esac
4592 fi
4593 fn=d~
4594 rp='What installation prefix should I use for installing files?'
4595 . ./getfile
4596 installprefix="$ans"
4597 installprefixexp="$ansexp"
4598
4599 : set the prefixit variable, to compute a suitable default value
4600 prefixit='case "$3" in
4601 ""|none)
4602         case "$oldprefix" in
4603         "") eval "$1=\"\$$2\"";;
4604         *)
4605                 case "$3" in
4606                 "") eval "$1=";;
4607                 none)
4608                         eval "tp=\"\$$2\"";
4609                         case "$tp" in
4610                         ""|" ") eval "$1=\"\$$2\"";;
4611                         *) eval "$1=";;
4612                         esac;;
4613                 esac;;
4614         esac;;
4615 *)
4616         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
4617         case "$tp" in
4618         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
4619         /*-$oldprefix/*|\~*-$oldprefix/*)
4620                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
4621         *) eval "$1=\"\$$2\"";;
4622         esac;;
4623 esac'
4624
4625 : set the base revision
4626 baserev=5.0
4627
4628
4629 : get the patchlevel
4630 echo " "
4631 echo "Getting the current patchlevel..." >&4
4632 if $test -r $rsrc/patchlevel.h;then
4633         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4634         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4635         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4636         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4637         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4638 else
4639         patchlevel=0
4640         subversion=0
4641         api_revision=0
4642         api_version=0
4643         api_subversion=0
4644 fi
4645 $echo $n "(You have $package" $c
4646 case "$package" in
4647 "*$baserev")    ;;
4648 *)              $echo $n " $baserev" $c ;;
4649 esac
4650 $echo $n " patchlevel $patchlevel" $c
4651 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
4652 echo ".)"
4653 case "$osname" in
4654 dos|vms)
4655         : XXX Should be a Configure test for double-dots in filenames.
4656         version=`echo $baserev $patchlevel $subversion | \
4657                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4658         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4659                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4660         ;;
4661 *)
4662         version=`echo $baserev $patchlevel $subversion | \
4663                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4664         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4665                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4666         ;;
4667 esac
4668 : Special case the 5.005_xx maintenance series, which used 5.005
4669 : without any subversion label as a subdirectory in $sitelib
4670 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4671         api_versionstring='5.005'
4672 fi
4673
4674 : determine installation style
4675 : For now, try to deduce it from prefix unless it is already set.
4676 : Reproduce behavior of 5.005 and earlier, maybe drop that in 5.7.
4677 case "$installstyle" in
4678 '')     case "$prefix" in
4679                 *perl*) dflt='lib';;
4680                 *) dflt='lib/perl5' ;;
4681         esac
4682         ;;
4683 *)      dflt='lib/perl5' ;;
4684 esac
4685 : Probably not worth prompting for this since we prompt for all
4686 : the directories individually, and the prompt would be too long and
4687 : confusing anyway.
4688 installstyle=$dflt
4689
4690 : determine where private library files go
4691 : Usual default is /usr/local/lib/perl5/$version.
4692 : Also allow things like /opt/perl/lib/$version, since 
4693 : /opt/perl/lib/perl5... would be redundant.
4694 : The default "style" setting is made in installstyle.U
4695 case "$installstyle" in
4696 *lib/perl5*) set dflt privlib lib/$package/$version ;;
4697 *)       set dflt privlib lib/$version ;;
4698 esac
4699 eval $prefixit
4700 $cat <<EOM
4701
4702 There are some auxiliary files for $package that need to be put into a
4703 private library directory that is accessible by everyone.
4704
4705 EOM
4706 fn=d~+
4707 rp='Pathname where the private library files will reside?'
4708 . ./getfile
4709 privlib="$ans"
4710 privlibexp="$ansexp"
4711 : Change installation prefix, if necessary.
4712 if $test X"$prefix" != X"$installprefix"; then
4713         installprivlib=`echo $privlibexp | sed "s#^$prefix#$installprefix#"`
4714 else
4715         installprivlib="$privlibexp"
4716 fi
4717
4718 : set the prefixup variable, to restore leading tilda escape
4719 prefixup='case "$prefixexp" in
4720 "$prefix") ;;
4721 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
4722 esac'
4723
4724 : determine where public architecture dependent libraries go
4725 set archlib archlib
4726 eval $prefixit
4727 : privlib default is /usr/local/lib/$package/$version
4728 : archlib default is /usr/local/lib/$package/$version/$archname
4729 : privlib may have an optional trailing /share.
4730 tdflt=`echo $privlib | $sed 's,/share$,,'`
4731 tdflt=$tdflt/$archname
4732 case "$archlib" in
4733 '')     dflt=$tdflt
4734         ;;
4735 *)      dflt="$archlib"
4736     ;;
4737 esac
4738 $cat <<EOM
4739
4740 $spackage contains architecture-dependent library files.  If you are
4741 sharing libraries in a heterogeneous environment, you might store
4742 these files in a separate location.  Otherwise, you can just include
4743 them with the rest of the public library files.
4744
4745 EOM
4746 fn=d+~
4747 rp='Where do you want to put the public architecture-dependent libraries?'
4748 . ./getfile
4749 archlib="$ans"
4750 archlibexp="$ansexp"
4751 if $test X"$archlib" = X"$privlib"; then
4752         d_archlib="$undef"
4753 else
4754         d_archlib="$define"
4755 fi
4756 : Change installation prefix, if necessary.
4757 if $test X"$prefix" != X"$installprefix"; then
4758         installarchlib=`echo $archlibexp | sed "s#^$prefix#$installprefix#"`
4759 else
4760         installarchlib="$archlibexp"
4761 fi
4762
4763
4764 : Binary compatibility with 5.005 is not possible for builds
4765 : with advanced features
4766 case "$usethreads$usemultiplicity" in
4767 *define*)
4768         bincompat5005="$undef"
4769         d_bincompat5005="$undef"
4770         ;;
4771 *)      $cat <<EOM
4772
4773 Perl 5.006 can be compiled for binary compatibility with 5.005.
4774 If you decide to do so, you will be able to continue using most
4775 of the extensions that were compiled for Perl 5.005.
4776
4777 EOM
4778         case "$bincompat5005$d_bincompat5005" in
4779         *"$undef"*) dflt=n ;;
4780         *) dflt=y ;;
4781         esac
4782         rp='Binary compatibility with Perl 5.005?'
4783         . ./myread
4784         case "$ans" in
4785         y*) val="$define" ;;
4786         *)  val="$undef" ;;
4787         esac
4788         set d_bincompat5005
4789         eval $setvar
4790         case "$d_bincompat5005" in
4791         "$define")
4792                 bincompat5005="$define"
4793                 ;;
4794         *)      bincompat5005="$undef"
4795                 d_bincompat5005="$undef"
4796                 ;;
4797         esac
4798         ;;
4799 esac
4800
4801
4802 : see if setuid scripts can be secure
4803 $cat <<EOM
4804
4805 Some kernels have a bug that prevents setuid #! scripts from being
4806 secure.  Some sites have disabled setuid #! scripts because of this.
4807
4808 First let's decide if your kernel supports secure setuid #! scripts.
4809 (If setuid #! scripts would be secure but have been disabled anyway,
4810 don't say that they are secure if asked.)
4811
4812 EOM
4813
4814 val="$undef"
4815 if $test -d /dev/fd; then
4816         echo "#!$ls" >reflect
4817         chmod +x,u+s reflect
4818         ./reflect >flect 2>&1
4819         if $contains "/dev/fd" flect >/dev/null; then
4820                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
4821                 val="$define"
4822         else
4823                 $cat <<EOM
4824 If you are not sure if they are secure, I can check but I'll need a
4825 username and password different from the one you are using right now.
4826 If you don't have such a username or don't want me to test, simply
4827 enter 'none'.
4828
4829 EOM
4830                 rp='Other username to test security of setuid scripts with?'
4831                 dflt='none'
4832                 . ./myread
4833                 case "$ans" in
4834                 n|none)
4835                         case "$d_suidsafe" in
4836                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
4837                                 dflt=n;;
4838                         "$undef")
4839                                 echo "Well, the $hint value is *not* secure." >&4
4840                                 dflt=n;;
4841                         *)      echo "Well, the $hint value *is* secure." >&4
4842                                 dflt=y;;
4843                         esac
4844                         ;;
4845                 *)
4846                         $rm -f reflect flect
4847                         echo "#!$ls" >reflect
4848                         chmod +x,u+s reflect
4849                         echo >flect
4850                         chmod a+w flect
4851                         echo '"su" will (probably) prompt you for '"$ans's password."
4852                         su $ans -c './reflect >flect'
4853                         if $contains "/dev/fd" flect >/dev/null; then
4854                                 echo "Okay, it looks like setuid scripts are secure." >&4
4855                                 dflt=y
4856                         else
4857                                 echo "I don't think setuid scripts are secure." >&4
4858                                 dflt=n
4859                         fi
4860                         ;;
4861                 esac
4862                 rp='Does your kernel have *secure* setuid scripts?'
4863                 . ./myread
4864                 case "$ans" in
4865                 [yY]*)  val="$define";;
4866                 *)      val="$undef";;
4867                 esac
4868         fi
4869 else
4870         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
4871         echo "(That's for file descriptors, not floppy disks.)"
4872         val="$undef"
4873 fi
4874 set d_suidsafe
4875 eval $setvar
4876
4877 $rm -f reflect flect
4878
4879 : now see if they want to do setuid emulation
4880 echo " "
4881 val="$undef"
4882 case "$d_suidsafe" in
4883 "$define")
4884         val="$undef"
4885         echo "No need to emulate SUID scripts since they are secure here." >& 4
4886         ;;
4887 *)
4888         $cat <<EOM
4889 Some systems have disabled setuid scripts, especially systems where
4890 setuid scripts cannot be secure.  On systems where setuid scripts have
4891 been disabled, the setuid/setgid bits on scripts are currently
4892 useless.  It is possible for $package to detect those bits and emulate
4893 setuid/setgid in a secure fashion.  This emulation will only work if
4894 setuid scripts have been disabled in your kernel.
4895
4896 EOM
4897         case "$d_dosuid" in
4898         "$define") dflt=y ;;
4899         *) dflt=n ;;
4900         esac
4901         rp="Do you want to do setuid/setgid emulation?"
4902         . ./myread
4903         case "$ans" in
4904         [yY]*)  val="$define";;
4905         *)      val="$undef";;
4906         esac
4907         ;;
4908 esac
4909 set d_dosuid
4910 eval $setvar
4911
4912 : determine filename position in cpp output
4913 echo " "
4914 echo "Computing filename position in cpp output for #include directives..." >&4
4915 echo '#include <stdio.h>' > foo.c
4916 $cat >fieldn <<EOF
4917 $startsh
4918 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4919 $grep '^[       ]*#.*stdio\.h' | \
4920 while read cline; do
4921         pos=1
4922         set \$cline
4923         while $test \$# -gt 0; do
4924                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4925                         echo "\$pos"
4926                         exit 0
4927                 fi
4928                 shift
4929                 pos=\`expr \$pos + 1\`
4930         done
4931 done
4932 EOF
4933 chmod +x fieldn
4934 fieldn=`./fieldn`
4935 $rm -f foo.c fieldn
4936 case $fieldn in
4937 '') pos='???';;
4938 1) pos=first;;
4939 2) pos=second;;
4940 3) pos=third;;
4941 *) pos="${fieldn}th";;
4942 esac
4943 echo "Your cpp writes the filename in the $pos field of the line."
4944
4945 : locate header file
4946 $cat >findhdr <<EOF
4947 $startsh
4948 wanted=\$1
4949 name=''
4950 for usrincdir in $usrinc
4951 do
4952         if test -f \$usrincdir/\$wanted; then
4953                 echo "\$usrincdir/\$wanted"
4954                 exit 0
4955         fi
4956 done
4957 awkprg='{ print \$$fieldn }'
4958 echo "#include <\$wanted>" > foo\$\$.c
4959 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4960 $grep "^[       ]*#.*\$wanted" | \
4961 while read cline; do
4962         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4963         case "\$name" in
4964         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
4965         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
4966         *) exit 2;;
4967         esac;
4968 done;
4969 #
4970 # status = 0: grep returned 0 lines, case statement not executed
4971 # status = 1: headerfile found
4972 # status = 2: while loop executed, no headerfile found
4973 #
4974 status=\$?
4975 $rm -f foo\$\$.c;
4976 if test \$status -eq 1; then
4977         exit 0;
4978 fi
4979 exit 1
4980 EOF
4981 chmod +x findhdr
4982
4983 : define an alternate in-header-list? function
4984 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4985 cont=true; xxf="echo \"<\$1> found.\" >&4";
4986 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4987 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4988 esac;
4989 case $# in 4) instead=instead;; *) instead="at last";; esac;
4990 while $test "$cont"; do
4991         xxx=`./findhdr $1`
4992         var=$2; eval "was=\$$2";
4993         if $test "$xxx" && $test -r "$xxx";
4994         then eval $xxf;
4995         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4996                 cont="";
4997         else eval $xxnf;
4998         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4999         set $yyy; shift; shift; yyy=$@;
5000         case $# in 0) cont="";;
5001         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5002                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5003         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5004                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5005         esac;
5006 done;
5007 while $test "$yyy";
5008 do set $yyy; var=$2; eval "was=\$$2";
5009         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5010         set $yyy; shift; shift; yyy=$@;
5011 done'
5012
5013 : see if this is a malloc.h system
5014 set malloc.h i_malloc
5015 eval $inhdr
5016
5017 : see if stdlib is available
5018 set stdlib.h i_stdlib
5019 eval $inhdr
5020
5021 : determine which malloc to compile in
5022 echo " "
5023 case "$usemymalloc" in
5024 ''|[yY]*|true|$define)  dflt='y' ;;
5025 *)      dflt='n' ;;
5026 esac
5027 rp="Do you wish to attempt to use the malloc that comes with $package?"
5028 . ./myread
5029 usemymalloc="$ans"
5030 case "$ans" in
5031 y*|true)
5032         usemymalloc='y'
5033         mallocsrc='malloc.c'
5034         mallocobj="malloc$_o"
5035         d_mymalloc="$define"
5036         case "$libs" in
5037         *-lmalloc*)
5038                 : Remove malloc from list of libraries to use
5039                 echo "Removing unneeded -lmalloc from library list" >&4
5040                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
5041                 shift
5042                 libs="$*"
5043                 echo "libs = $libs" >&4
5044                 ;;
5045         esac
5046         ;;
5047 *)
5048         usemymalloc='n'
5049         mallocsrc=''
5050         mallocobj=''
5051         d_mymalloc="$undef"
5052         ;;
5053 esac
5054
5055 : compute the return types of malloc and free
5056 echo " "
5057 $cat >malloc.c <<END
5058 #$i_malloc I_MALLOC
5059 #$i_stdlib I_STDLIB
5060 #include <stdio.h>
5061 #include <sys/types.h>
5062 #ifdef I_MALLOC
5063 #include <malloc.h>
5064 #endif
5065 #ifdef I_STDLIB
5066 #include <stdlib.h>
5067 #endif
5068 #ifdef TRY_MALLOC
5069 void *malloc();
5070 #endif
5071 #ifdef TRY_FREE
5072 void free();
5073 #endif
5074 END
5075 case "$malloctype" in
5076 '')
5077         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
5078                 malloctype='void *'
5079         else
5080                 malloctype='char *'
5081         fi
5082         ;;
5083 esac
5084 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
5085
5086 case "$freetype" in
5087 '')
5088         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
5089                 freetype='void'
5090         else
5091                 freetype='int'
5092         fi
5093         ;;
5094 esac
5095 echo "Your system uses $freetype free(), it would seem." >&4
5096 $rm -f malloc.[co]
5097 $cat <<EOM
5098
5099 The installation process will also create a directory for
5100 vendor-supplied add-ons.  Vendors who supply perl with their system
5101 may find it convenient to place all vendor-supplied files in this
5102 directory rather than in the main distribution directory.  This will
5103 ease upgrades between binary-compatible maintenance versions of perl.
5104
5105 Of course you may also use these directories in whatever way you see
5106 fit.  For example, you might use them to access modules shared over a
5107 company-wide network.
5108
5109 The default answer should be fine for most people.
5110 This causes further questions about vendor add-ons to be skipped
5111 and no vendor-specific directories will be configured for perl.
5112
5113 EOM
5114 rp='Do you want to configure vendor-specific add-on directories?'
5115 case "$usevendorprefix" in
5116 define|true|[yY]*) dflt=y ;;
5117 *) dflt=n ;;
5118 esac
5119 . ./myread
5120 case "$ans" in
5121 [yY]*)  fn=d~+
5122         rp='Installation prefix to use for vendor-supplied add-ons?'
5123         case "$vendorprefix" in
5124         '') dflt='' ;;
5125         *)  dflt=$vendorprefix ;;
5126         esac
5127         . ./getfile
5128         oldvendorprefix=''
5129         case "$vendorprefix" in
5130         '') ;;
5131         *)      case "$ans" in
5132                 "$prefix") ;;
5133                 *) oldvendorprefix="$prefix";;
5134                 esac
5135                 ;;
5136         esac
5137         usevendorprefix="$define"
5138         vendorprefix="$ans"
5139         vendorprefixexp="$ansexp"
5140         ;;
5141 *)      usevendorprefix="$undef"
5142         vendorprefix=''
5143         vendorprefixexp=''
5144         ;;
5145 esac
5146
5147 case "$vendorprefix" in
5148 '')     d_vendorlib="$undef"
5149         vendorlib=''
5150         vendorlibexp=''
5151         ;;
5152 *)      d_vendorlib="$define"
5153         : determine where vendor-supplied modules go.
5154         : Usual default is /usr/local/lib/perl5/vendor_perl/$version
5155         prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5156         case "$installstyle" in
5157         *lib/perl5*) dflt=$vendorprefix/lib/$package/vendor_$prog/$version ;;
5158         *)           dflt=$vendorprefix/lib/vendor_$prog/$version ;;
5159         esac
5160         fn=d~+
5161         rp='Pathname for the vendor-supplied library files?'
5162         . ./getfile
5163         vendorlib="$ans"
5164         vendorlibexp="$ansexp"
5165         : Change installation prefix, if necessary.
5166         if $test X"$prefix" != X"$installprefix"; then
5167                 installvendorlib=`echo $vendorlibexp | $sed "s#^$prefix#$installprefix#"`
5168         else
5169                 installvendorlib="$vendorlibexp"
5170         fi
5171         ;;
5172 esac
5173
5174 : Cruising for prototypes
5175 echo " "
5176 echo "Checking out function prototypes..." >&4
5177 $cat >prototype.c <<'EOCP'
5178 int main(int argc, char *argv[]) {
5179         exit(0);}
5180 EOCP
5181 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
5182         echo "Your C compiler appears to support function prototypes."
5183         val="$define"
5184 else
5185         echo "Your C compiler doesn't seem to understand function prototypes."
5186         val="$undef"
5187 fi
5188 set prototype
5189 eval $setvar
5190 $rm -f prototype*
5191
5192 case "$prototype" in
5193 "$define") ;;
5194 *)      ansi2knr='ansi2knr'
5195         echo " "
5196         cat <<EOM >&4
5197
5198 $me:  FATAL ERROR:
5199 This version of $package can only be compiled by a compiler that 
5200 understands function prototypes.  Unfortunately, your C compiler 
5201         $cc $ccflags
5202 doesn't seem to understand them.  Sorry about that.
5203
5204 If GNU cc is available for your system, perhaps you could try that instead.  
5205
5206 Eventually, we hope to support building Perl with pre-ANSI compilers.
5207 If you would like to help in that effort, please contact <perlbug@perl.org>.
5208
5209 Aborting Configure now.
5210 EOM
5211         exit 2
5212         ;;
5213 esac
5214
5215 : determine where public executables go
5216 echo " "
5217 set dflt bin bin
5218 eval $prefixit
5219 fn=d~
5220 rp='Pathname where the public executables will reside?'
5221 . ./getfile
5222 if $test "X$ansexp" != "X$binexp"; then
5223         installbin=''
5224 fi
5225 bin="$ans"
5226 binexp="$ansexp"
5227 : Change installation prefix, if necessary.
5228 : XXX Bug? -- ignores Configure -Dinstallprefix setting.
5229 if $test X"$prefix" != X"$installprefix"; then
5230         installbin=`echo $binexp | sed "s#^$prefix#$installprefix#"`
5231 else
5232         installbin="$binexp"
5233 fi
5234
5235 $cat <<EOM
5236
5237 After $package is installed, you may wish to install various
5238 add-on modules and utilities.  Typically, these add-ons will
5239 be installed under $prefix with the rest
5240 of this package.  However, you may wish to install such add-ons
5241 elsewhere under a different prefix.
5242
5243 If you do not wish to put everything under a single prefix, that's
5244 ok.  You will be prompted for the individual locations; this siteprefix
5245 is only used to suggest the defaults.
5246
5247 The default should be fine for most people.
5248
5249 EOM
5250 fn=d~+
5251 rp='Installation prefix to use for add-on modules and utilities?'
5252 : XXX Here might be another good place for an installstyle setting.
5253 case "$siteprefix" in
5254 '') dflt=$prefix ;;
5255 *)  dflt=$siteprefix ;;
5256 esac
5257 . ./getfile
5258 oldsiteprefix=''
5259 case "$siteprefix" in
5260 '') ;;
5261 *)
5262         case "$ans" in
5263         "$prefix") ;;
5264         *) oldsiteprefix="$prefix";;
5265         esac
5266         ;;
5267 esac
5268 siteprefix="$ans"
5269 siteprefixexp="$ansexp"
5270
5271 : determine where site specific libraries go.
5272 : Usual default is /usr/local/lib/perl5/site_perl/$version
5273 : The default "style" setting is made in installstyle.U
5274 : XXX No longer works with Prefixit stuff.
5275 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
5276 case "$installstyle" in
5277 *lib/perl5*) dflt=$siteprefix/lib/$package/site_$prog/$version ;;
5278 *)       dflt=$siteprefix/lib/site_$prog/$version ;;
5279 esac
5280 $cat <<EOM
5281
5282 The installation process will create a directory for
5283 site-specific extensions and modules.  Most users find it convenient
5284 to place all site-specific files in this directory rather than in the
5285 main distribution directory.
5286
5287 EOM
5288 fn=d~+
5289 rp='Pathname for the site-specific library files?'
5290 . ./getfile
5291 sitelib="$ans"
5292 sitelibexp="$ansexp"
5293 : Change installation prefix, if necessary.
5294 if $test X"$prefix" != X"$installprefix"; then
5295         installsitelib=`echo $sitelibexp | sed "s#^$prefix#$installprefix#"`
5296 else
5297         installsitelib="$sitelibexp"
5298 fi
5299
5300 : Determine list of previous versions to include in @INC
5301 $cat > getverlist <<EOPL
5302 #!$perl -w
5303 use File::Basename;
5304 \$api_versionstring = "$api_versionstring";
5305 \$version = "$version";
5306 \$sitelib = "$sitelib";
5307 \$archname = "$archname";
5308 EOPL
5309         $cat >> getverlist <<'EOPL'
5310 # Can't have leading @ because metaconfig interprets it as a command!
5311 ;@inc_version_list=();
5312 $stem=dirname($sitelib);
5313 # Redo to do opendir/readdir? 
5314 if (-d $stem) {
5315     chdir($stem);
5316     ;@candidates = glob("5.*");
5317 }
5318 else {
5319     ;@candidates = ();
5320 }
5321
5322 # XXX ToDo:  These comparisons must be reworked when two-digit
5323 # subversions come along, so that 5.7.10 compares as greater than
5324 # 5.7.3!  By that time, hope that 5.6.x is sufficiently
5325 # widespread that we can use the built-in version vectors rather
5326 # than reinventing them here.  For 5.6.0, however, we must
5327 # assume this script will likely be run by 5.005_0x.  --AD 1/2000.
5328 foreach $d (@candidates) {
5329     if ($d lt $version) {
5330         if ($d ge $api_versionstring) {
5331             unshift(@inc_version_list, "$d/$archname", $d);
5332         }
5333         elsif ($d ge "5.005") {
5334             unshift(@inc_version_list, $d);
5335         }
5336     }
5337     else {
5338         # Skip newer version.  I.e. don't look in
5339         # 5.7.0 if we're installing 5.6.1.
5340     }
5341 }
5342
5343 if (@inc_version_list) {
5344     print join(' ', @inc_version_list);
5345 }
5346 else {
5347     # Blank space to preserve value for next Configure run.
5348     print " ";
5349 }
5350 EOPL
5351 chmod +x getverlist
5352 case "$inc_version_list" in
5353 '')     if test -x $perl; then
5354                 dflt=`$perl getverlist`
5355         else
5356                 dflt='none'
5357         fi
5358         ;;
5359 $undef) dflt='none' ;;
5360 *)  dflt="$inc_version_list" ;;
5361 esac
5362 $cat <<'EOM'
5363
5364 In order to ease the process of upgrading, this version of perl 
5365 can be configured to use modules built and installed with earlier 
5366 versions of perl that were installed under $prefix.  Specify here
5367 the list of earlier versions that this version of perl should check.
5368 If Configure detected no earlier versions of perl installed under
5369 $prefix, then the list will be empty.  Answer 'none' to tell perl
5370 to not search earlier versions.
5371
5372 The default should almost always be sensible, so if you're not sure,
5373 just accept the default.
5374 EOM
5375
5376 rp='List of earlier versions to include in @INC?'
5377 . ./myread
5378 case "$ans" in
5379 [Nn]one) inc_version_list=' ' ;;
5380 *) inc_version_list="$ans" ;;
5381 esac
5382 case "$inc_version_list" in
5383 ''|' ') 
5384         inc_version_list_init='0';;
5385 *)      inc_version_list_init=`echo $inc_version_list |
5386                 $sed -e 's/^/"/' -e 's/ /","/g' -e 's/$/",0/'`
5387         ;;
5388 esac
5389 $rm -f getverlist
5390
5391 : determine whether to install perl also as /usr/bin/perl
5392
5393 echo " "
5394 if $test -d /usr/bin -a "X$installbin" != X/usr/bin; then
5395         $cat <<EOM
5396 Many scripts expect to perl to be installed as /usr/bin/perl.
5397 I can install the perl you are about to compile also as /usr/bin/perl
5398 (in addition to $installbin/perl).
5399 EOM
5400         case "$installusrbinperl" in
5401         "$undef"|[nN]*) dflt='n';;
5402         *)              dflt='y';;
5403         esac
5404         rp="Do you want to install perl as /usr/bin/perl?"
5405         . ./myread
5406         case "$ans" in
5407         [yY]*)  val="$define";;
5408         *)      val="$undef" ;;
5409         esac
5410 else
5411         val="$undef"
5412 fi
5413 set installusrbinperl
5414 eval $setvar
5415
5416 echo " "
5417 echo "Checking for GNU C Library..." >&4
5418 cat >gnulibc.c <<EOM
5419 #include <stdio.h>
5420 int main()
5421 {
5422 #ifdef __GLIBC__
5423     exit(0);
5424 #else
5425     exit(1);
5426 #endif
5427 }
5428 EOM
5429 set gnulibc
5430 if eval $compile_ok && ./gnulibc; then
5431         val="$define"
5432         echo "You are using the GNU C Library"
5433 else
5434         val="$undef"
5435         echo "You are not using the GNU C Library"
5436 fi
5437 $rm -f gnulibc*
5438 set d_gnulibc
5439 eval $setvar
5440
5441 : see if nm is to be used to determine whether a symbol is defined or not
5442 case "$usenm" in
5443 '')
5444         dflt=''
5445         case "$d_gnulibc" in
5446         "$define")
5447                 echo " "
5448                 echo "nm probably won't work on the GNU C Library." >&4
5449                 dflt=n
5450                 ;;
5451         esac
5452         case "$dflt" in
5453         '') 
5454                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
5455                         echo " "
5456                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
5457                         echo "'nm' won't be sufficient on this sytem." >&4
5458                         dflt=n
5459                 fi
5460                 ;;
5461         esac
5462         case "$dflt" in
5463         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
5464                 if $test $dflt -gt 20; then
5465                         dflt=y
5466                 else
5467                         dflt=n
5468                 fi
5469                 ;;
5470         esac
5471         ;;
5472 *)
5473         case "$usenm" in
5474         true|$define) dflt=y;;
5475         *) dflt=n;;
5476         esac
5477         ;;
5478 esac
5479 $cat <<EOM
5480
5481 I can use $nm to extract the symbols from your C libraries. This
5482 is a time consuming task which may generate huge output on the disk (up
5483 to 3 megabytes) but that should make the symbols extraction faster. The
5484 alternative is to skip the 'nm' extraction part and to compile a small
5485 test program instead to determine whether each symbol is present. If
5486 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
5487 this may be the best solution.
5488
5489 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
5490
5491 EOM
5492 rp="Shall I use $nm to extract C symbols from the libraries?"
5493 . ./myread
5494 case "$ans" in
5495 [Nn]*) usenm=false;;
5496 *) usenm=true;;
5497 esac
5498
5499 runnm=$usenm
5500 case "$reuseval" in
5501 true) runnm=false;;
5502 esac
5503
5504 : nm options which may be necessary
5505 case "$nm_opt" in
5506 '') if $test -f /mach_boot; then
5507                 nm_opt=''       # Mach
5508         elif $test -d /usr/ccs/lib; then
5509                 nm_opt='-p'     # Solaris (and SunOS?)
5510         elif $test -f /dgux; then
5511                 nm_opt='-p'     # DG-UX
5512         elif $test -f /lib64/rld; then
5513                 nm_opt='-p'     # 64-bit Irix
5514         else
5515                 nm_opt=''
5516         fi;;
5517 esac
5518
5519 : nm options which may be necessary for shared libraries but illegal
5520 : for archive libraries.  Thank you, Linux.
5521 case "$nm_so_opt" in
5522 '')     case "$myuname" in
5523         *linux*)
5524                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
5525                         nm_so_opt='--dynamic'
5526                 fi
5527                 ;;
5528         esac
5529         ;;
5530 esac
5531
5532 case "$runnm" in
5533 true)
5534 : get list of predefined functions in a handy place
5535 echo " "
5536 case "$libc" in
5537 '') libc=unknown
5538         case "$libs" in
5539         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
5540         esac
5541         ;;
5542 esac
5543 libnames='';
5544 case "$libs" in
5545 '') ;;
5546 *)  for thislib in $libs; do
5547         case "$thislib" in
5548         -lc|-lc_s)
5549                 : Handle C library specially below.
5550                 ;;
5551         -l*)
5552                 thislib=`echo $thislib | $sed -e 's/^-l//'`
5553                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
5554                         :
5555                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
5556                         :
5557                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
5558                         :
5559                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
5560                         :
5561                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
5562                         :
5563                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
5564                         :
5565                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
5566                         :
5567                 else
5568                         try=''
5569                 fi
5570                 libnames="$libnames $try"
5571                 ;;
5572         *) libnames="$libnames $thislib" ;;
5573         esac
5574         done
5575         ;;
5576 esac
5577 xxx=normal
5578 case "$libc" in
5579 unknown)
5580         set /lib/libc.$so
5581         for xxx in $libpth; do
5582                 $test -r $1 || set $xxx/libc.$so
5583                 : The messy sed command sorts on library version numbers.
5584                 $test -r $1 || \
5585                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
5586                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
5587                                 h
5588                                 s/[0-9][0-9]*/0000&/g
5589                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
5590                                 G
5591                                 s/\n/ /' | \
5592                          sort | $sed -e 's/^.* //'`
5593                 eval set \$$#
5594         done
5595         $test -r $1 || set /usr/ccs/lib/libc.$so
5596         $test -r $1 || set /lib/libsys_s$_a
5597         ;;
5598 *)
5599         set blurfl
5600         ;;
5601 esac
5602 if $test -r "$1"; then
5603         echo "Your (shared) C library seems to be in $1."
5604         libc="$1"
5605 elif $test -r /lib/libc && $test -r /lib/clib; then
5606         echo "Your C library seems to be in both /lib/clib and /lib/libc."
5607         xxx=apollo
5608         libc='/lib/clib /lib/libc'
5609         if $test -r /lib/syslib; then
5610                 echo "(Your math library is in /lib/syslib.)"
5611                 libc="$libc /lib/syslib"
5612         fi
5613 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5614         echo "Your C library seems to be in $libc, as you said before."
5615 elif $test -r $incpath/usr/lib/libc$_a; then
5616         libc=$incpath/usr/lib/libc$_a;
5617         echo "Your C library seems to be in $libc.  That's fine."
5618 elif $test -r /lib/libc$_a; then
5619         libc=/lib/libc$_a;
5620         echo "Your C library seems to be in $libc.  You're normal."
5621 else
5622         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
5623                 :
5624         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
5625                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
5626         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
5627                 :
5628         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5629                 :
5630         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
5631                 :
5632         else
5633                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
5634         fi
5635         if $test -r "$tans"; then
5636                 echo "Your C library seems to be in $tans, of all places."
5637                 libc=$tans
5638         else
5639                 libc='blurfl'
5640         fi
5641 fi
5642 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
5643         dflt="$libc"
5644         cat <<EOM
5645
5646 If the guess above is wrong (which it might be if you're using a strange
5647 compiler, or your machine supports multiple models), you can override it here.
5648
5649 EOM
5650 else
5651         dflt=''
5652         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
5653         cat >&4 <<EOM
5654 I can't seem to find your C library.  I've looked in the following places:
5655
5656 EOM
5657         $sed 's/^/      /' libpath
5658         cat <<EOM
5659
5660 None of these seems to contain your C library. I need to get its name...
5661
5662 EOM
5663 fi
5664 fn=f
5665 rp='Where is your C library?'
5666 . ./getfile
5667 libc="$ans"
5668
5669 echo " "
5670 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
5671 set X `cat libnames`
5672 shift
5673 xxx=files
5674 case $# in 1) xxx=file; esac
5675 echo "Extracting names from the following $xxx for later perusal:" >&4
5676 echo " "
5677 $sed 's/^/      /' libnames >&4
5678 echo " "
5679 $echo $n "This may take a while...$c" >&4
5680
5681 for file in $*; do
5682         case $file in
5683         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
5684         *) $nm $nm_opt $file 2>/dev/null;;
5685         esac
5686 done >libc.tmp
5687
5688 $echo $n ".$c"
5689 $grep fprintf libc.tmp > libc.ptf
5690 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
5691 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
5692 xxx='[ADTSIW]'
5693 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
5694         eval $xscan;\
5695         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5696                 eval $xrun
5697 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
5698         eval $xscan;\
5699         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5700                 eval $xrun
5701 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
5702         eval $xscan;\
5703         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5704                 eval $xrun
5705 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
5706         eval $xscan;\
5707         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5708                 eval $xrun
5709 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
5710         eval $xscan;\
5711         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5712                 eval $xrun
5713 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
5714         eval $xscan;\
5715         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5716                 eval $xrun
5717 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
5718                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
5719         eval $xscan;\
5720         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5721                 eval $xrun
5722 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
5723         eval $xscan;\
5724         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5725                 eval $xrun
5726 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
5727         eval $xscan;\
5728         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5729                 eval $xrun
5730 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
5731         eval $xscan;\
5732         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5733                 eval $xrun
5734 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
5735         eval $xscan;\
5736         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5737                 eval $xrun
5738 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
5739         eval $xscan;\
5740         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5741                 eval $xrun
5742 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
5743         eval $xscan;\
5744         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5745                 eval $xrun
5746 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
5747         eval $xscan;\
5748         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
5749                 eval $xrun
5750 else
5751         $nm -p $* 2>/dev/null >libc.tmp
5752         $grep fprintf libc.tmp > libc.ptf
5753         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
5754                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
5755         then
5756                 nm_opt='-p'
5757                 eval $xrun
5758         else
5759                 echo " "
5760                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
5761                 com=''
5762                 if $ar t $libc > libc.tmp && $contains '^fprintf$' libc.tmp >/dev/null 2>&1; then
5763                         for thisname in $libnames $libc; do
5764                                 $ar t $thisname >>libc.tmp
5765                         done
5766                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
5767                         echo "Ok." >&4
5768                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
5769                         # Repeat libc to extract forwarders to DLL entries too
5770                         for thisname in $libnames $libc; do
5771                                 $ar tv $thisname >>libc.tmp
5772                                 # Revision 50 of EMX has bug in $ar.
5773                                 # it will not extract forwarders to DLL entries
5774                                 # Use emximp which will extract exactly them.
5775                                 emximp -o tmp.imp $thisname \
5776                                     2>/dev/null && \
5777                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
5778                                     < tmp.imp >>libc.tmp
5779                                 $rm tmp.imp
5780                         done
5781                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
5782                         echo "Ok." >&4
5783                 else
5784                         echo "$ar didn't seem to work right." >&4
5785                         echo "Maybe this is a Cray...trying bld instead..." >&4
5786                         if bld t $libc | $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list
5787                         then
5788                                 for thisname in $libnames; do
5789                                         bld t $libnames | \
5790                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
5791                                         $ar t $thisname >>libc.tmp
5792                                 done
5793                                 echo "Ok." >&4
5794                         else
5795                                 echo "That didn't work either.  Giving up." >&4
5796                                 exit 1
5797                         fi
5798                 fi
5799         fi
5800 fi
5801 nm_extract="$com"
5802 if $test -f /lib/syscalls.exp; then
5803         echo " "
5804         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
5805         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*$/\1/p' /lib/syscalls.exp >>libc.list
5806 fi
5807 ;;
5808 esac
5809 $rm -f libnames libpath
5810
5811 : see if dld is available
5812 set dld.h i_dld
5813 eval $inhdr
5814
5815 : is a C symbol defined?
5816 csym='tlook=$1;
5817 case "$3" in
5818 -v) tf=libc.tmp; tc=""; tdc="";;
5819 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
5820 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
5821 esac;
5822 tx=yes;
5823 case "$reuseval-$4" in
5824 true-) ;;
5825 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
5826 esac;
5827 case "$tx" in
5828 yes)
5829         case "$runnm" in
5830         true)
5831                 if $contains $tlook $tf >/dev/null 2>&1;
5832                 then tval=true;
5833                 else tval=false;
5834                 fi;;
5835         *)
5836                 echo "int main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
5837                 if $cc $optimize $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
5838                 then tval=true;
5839                 else tval=false;
5840                 fi;
5841                 $rm -f t t.c;;
5842         esac;;
5843 *)
5844         case "$tval" in
5845         $define) tval=true;;
5846         *) tval=false;;
5847         esac;;
5848 esac;
5849 eval "$2=$tval"'
5850
5851 : define an is-in-libc? function
5852 inlibc='echo " "; td=$define; tu=$undef;
5853 sym=$1; var=$2; eval "was=\$$2";
5854 tx=yes;
5855 case "$reuseval$was" in
5856 true) ;;
5857 true*) tx=no;;
5858 esac;
5859 case "$tx" in
5860 yes)
5861         set $sym tres -f;
5862         eval $csym;
5863         case "$tres" in
5864         true)
5865                 echo "$sym() found." >&4;
5866                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
5867         *)
5868                 echo "$sym() NOT found." >&4;
5869                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
5870         esac;;
5871 *)
5872         case "$was" in
5873         $define) echo "$sym() found." >&4;;
5874         *) echo "$sym() NOT found." >&4;;
5875         esac;;
5876 esac'
5877
5878 : see if dlopen exists
5879 xxx_runnm="$runnm"
5880 runnm=false
5881 set dlopen d_dlopen
5882 eval $inlibc
5883 runnm="$xxx_runnm"
5884
5885 : determine which dynamic loading, if any, to compile in
5886 echo " "
5887 dldir="ext/DynaLoader"
5888 case "$usedl" in
5889 $define|y|true)
5890         dflt='y'
5891         usedl="$define"
5892         ;;
5893 $undef|n|false)
5894         dflt='n'
5895         usedl="$undef"
5896         ;;
5897 *) 
5898         dflt='n'
5899         case "$d_dlopen" in
5900             $define) dflt='y' ;;
5901         esac
5902         case "$i_dld" in
5903             $define) dflt='y' ;;
5904         esac
5905         : Does a dl_xxx.xs file exist for this operating system
5906         $test -f $rsrc/$dldir/dl_${osname}.xs && dflt='y'
5907         ;;
5908 esac
5909 rp="Do you wish to use dynamic loading?"
5910 . ./myread
5911 usedl="$ans"
5912 case "$ans" in
5913 y*) usedl="$define"
5914         case "$dlsrc" in
5915         '')
5916                 if $test -f $rsrc/$dldir/dl_${osname}.xs ; then
5917                         dflt="$dldir/dl_${osname}.xs"
5918                 elif $test "$d_dlopen" = "$define" ; then
5919                         dflt="$dldir/dl_dlopen.xs"
5920                 elif $test "$i_dld" = "$define" ; then
5921                         dflt="$dldir/dl_dld.xs"
5922                 else
5923                         dflt=''
5924                 fi
5925                 ;;
5926         *)      dflt="$dldir/$dlsrc"
5927                 ;;
5928         esac
5929     echo "The following dynamic loading files are available:"
5930         : Can not go over to $dldir because getfile has path hard-coded in.
5931         tdir=`pwd`; cd $rsrc; $ls -C $dldir/dl*.xs; cd $tdir
5932         rp="Source file to use for dynamic loading"
5933         fn="fne"
5934         gfpth="$src"
5935         . ./getfile
5936         usedl="$define"
5937         : emulate basename
5938         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
5939
5940         $cat << EOM
5941
5942 Some systems may require passing special flags to $cc -c to
5943 compile modules that will be used to create a shared library.
5944 To use no flags, say "none".
5945
5946 EOM
5947     case "$cccdlflags" in
5948     '') case "$gccversion" in
5949                 '') case "$osname" in
5950                         hpux)   dflt='+z' ;;
5951                         next)   dflt='none' ;;
5952                         irix*)  dflt='-KPIC' ;;
5953                         svr4*|esix*|solaris) dflt='-KPIC' ;;
5954                         sunos)  dflt='-pic' ;;
5955                         *)      dflt='none' ;;
5956                     esac
5957                         ;;
5958                 *)  case "$osname" in
5959                         svr4*|esix*|solaris) dflt='-fPIC' ;;
5960                         *)      dflt='-fpic' ;;
5961                     esac ;;
5962             esac ;;
5963         ' ') dflt='none' ;;
5964     *)  dflt="$cccdlflags" ;;
5965     esac
5966     rp="Any special flags to pass to $cc -c to compile shared library modules?"
5967     . ./myread
5968     case "$ans" in
5969     none) cccdlflags=' ' ;;
5970     *) cccdlflags="$ans" ;;
5971     esac
5972
5973     cat << EOM
5974
5975 Some systems use ld to create libraries that can be dynamically loaded,
5976 while other systems (such as those using ELF) use $cc.
5977
5978 EOM
5979         case "$ld" in
5980         '')     $cat >try.c <<'EOM'
5981 /* Test for whether ELF binaries are produced */
5982 #include <fcntl.h>
5983 #include <stdlib.h>
5984 int main() {
5985         char b[4];
5986         int i = open("a.out",O_RDONLY);
5987         if(i == -1) 
5988                 exit(1); /* fail */
5989         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
5990                 exit(0); /* succeed (yes, it's ELF) */
5991         else
5992                 exit(1); /* fail */
5993 }
5994 EOM
5995                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
5996                         cat <<EOM
5997 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
5998 EOM
5999                         dflt="$cc"
6000                 else
6001                         echo "I'll use ld to build dynamic libraries."
6002                         dflt='ld'
6003                 fi
6004                 rm -f try.c a.out
6005                 ;;
6006         *)      dflt="$ld"
6007                 ;;
6008         esac
6009
6010     rp="What command should be used to create dynamic libraries?"
6011     . ./myread
6012         ld="$ans"
6013
6014     cat << EOM
6015
6016 Some systems may require passing special flags to $ld to create a
6017 library that can be dynamically loaded.  If your ld flags include
6018 -L/other/path options to locate libraries outside your loader's normal
6019 search path, you may need to specify those -L options here as well.  To
6020 use no flags, say "none".
6021
6022 EOM
6023     case "$lddlflags" in
6024     '') case "$osname" in
6025                         beos) dflt='-nostart' ;;
6026                         hpux)  dflt='-b' ;;
6027                         linux|irix*)    dflt='-shared' ;;
6028                         next)  dflt='none' ;;
6029                         solaris) dflt='-G' ;;
6030                         sunos) dflt='-assert nodefinitions' ;;
6031                         svr4*|esix*) dflt="-G $ldflags" ;;
6032                 *)     dflt='none' ;;
6033                         esac
6034                         ;;
6035     *) dflt="$lddlflags" ;;
6036     esac
6037
6038         : Try to guess additional flags to pick up local libraries.
6039         : Be careful not to append to a plain 'none'
6040         case "$dflt" in
6041         none) dflt='' ;;
6042         esac
6043         for thisflag in $ldflags; do
6044                 case "$thisflag" in
6045                 -L*)
6046                         case " $dflt " in
6047                         *" $thisflag "*) ;;
6048                         *) dflt="$dflt $thisflag" ;;
6049                         esac
6050                         ;;
6051                 esac
6052         done
6053
6054         case "$dflt" in
6055         ''|' ') dflt='none' ;;
6056         esac
6057
6058     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
6059     . ./myread
6060     case "$ans" in
6061     none) lddlflags=' ' ;;
6062     *) lddlflags="$ans" ;;
6063     esac
6064
6065         cat <<EOM
6066
6067 Some systems may require passing special flags to $cc to indicate that
6068 the resulting executable will use dynamic linking.  To use no flags,
6069 say "none".
6070
6071 EOM
6072     case "$ccdlflags" in
6073     '') case "$osname" in
6074                 hpux)   dflt='-Wl,-E' ;;
6075                 linux)  dflt='-rdynamic' ;;
6076                 next)   dflt='none' ;;
6077                 sunos)  dflt='none' ;;
6078                 *)      dflt='none' ;;
6079             esac ;;
6080     ' ')  dflt='none' ;;
6081     *)  dflt="$ccdlflags" ;;
6082     esac
6083     rp="Any special flags to pass to $cc to use dynamic linking?"
6084     . ./myread
6085     case "$ans" in
6086     none) ccdlflags=' ' ;;
6087     *) ccdlflags="$ans" ;;
6088     esac
6089     ;;
6090 *)  usedl="$undef"
6091         ld='ld'
6092     dlsrc='dl_none.xs'
6093     lddlflags=''
6094     ccdlflags=''
6095     ;;
6096 esac
6097
6098 also=''
6099 case "$usedl" in
6100 $undef)
6101         # No dynamic loading being used, so don't bother even to prompt.
6102         useshrplib='false'
6103         ;;
6104 *)      case "$useshrplib" in
6105         '')     case "$osname" in
6106                 svr4*|dgux|dynixptx|esix|powerux|beos|cygwin*)
6107                         dflt=y
6108                         also='Building a shared libperl is required for dynamic loading to work on your system.'
6109                         ;;
6110                 next*)
6111                         case "$osvers" in
6112                         4*)     dflt=y
6113                                 also='Building a shared libperl is needed for MAB support.'
6114                                 ;;
6115                         *)      dflt=n
6116                                 ;;
6117                         esac
6118                         ;;
6119                 *)      dflt=n
6120                         ;;
6121                 esac
6122                 ;;
6123         $define|true|[Yy]*)
6124                 dflt=y
6125                 ;;
6126         *)      dflt=n
6127                 ;;
6128         esac
6129         $cat << EOM
6130
6131 The perl executable is normally obtained by linking perlmain.c with
6132 libperl${_a}, any static extensions (usually just DynaLoader), and
6133 any other libraries needed on this system (such as -lm, etc.).  Since
6134 your system supports dynamic loading, it is probably possible to build
6135 a shared libperl.$so.  If you will have more than one executable linked
6136 to libperl.$so, this will significantly reduce the size of each
6137 executable, but it may have a noticeable affect on performance.  The
6138 default is probably sensible for your system.
6139 $also
6140
6141 EOM
6142         rp="Build a shared libperl.$so (y/n)"
6143         . ./myread
6144         case "$ans" in
6145         true|$define|[Yy]*)
6146                 useshrplib='true'  ;;
6147         *)      useshrplib='false' ;;
6148         esac
6149         ;;
6150 esac
6151
6152 case "$useshrplib" in
6153 true)
6154         case "$libperl" in
6155         '')
6156                 # Figure out a good name for libperl.so.  Since it gets stored in
6157                 # a version-specific architecture-dependent library, the version
6158                 # number isn't really that important, except for making cc/ld happy.
6159                 #
6160                 # A name such as libperl.so.3.1
6161                 majmin="libperl.$so.$patchlevel.$subversion"
6162                 # A name such as libperl.so.301
6163                 majonly=`echo $patchlevel $subversion |
6164                         $awk '{printf "%d%02d", $1, $2}'`
6165                 majonly=libperl.$so.$majonly
6166                 # I'd prefer to keep the os-specific stuff here to a minimum, and
6167                 # rely on figuring it out from the naming of libc.
6168                 case "${osname}${osvers}" in
6169                 next4*)
6170                         dflt=libperl.5.$so
6171                         # XXX How handle the --version stuff for MAB?
6172                         ;;
6173                 linux*)  # ld won't link with a bare -lperl otherwise.
6174                         dflt=libperl.$so
6175                         ;;
6176                 cygwin*) # include version
6177                         dflt=`echo libperl$version | sed -e 's/\./_/g'`$lib_ext
6178                         ;;
6179                 *)      # Try to guess based on whether libc has major.minor.
6180                         case "$libc" in
6181                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
6182                         *libc.$so.[0-9]*) dflt=$majonly ;;
6183                         *)      dflt=libperl.$so ;;
6184                         esac
6185                         ;;
6186                 esac
6187                 ;;
6188         *)      dflt=$libperl
6189                 ;;
6190         esac
6191         cat << EOM
6192
6193 I need to select a good name for the shared libperl.  If your system uses
6194 library names with major and minor numbers, then you might want something
6195 like $majmin.  Alternatively, if your system uses a single version
6196 number for shared libraries, then you might want to use $majonly.
6197 Or, your system might be quite happy with a simple libperl.$so.
6198
6199 Since the shared libperl will get installed into a version-specific
6200 architecture-dependent directory, the version number of the shared perl
6201 library probably isn't important, so the default should be o.k.
6202
6203 EOM
6204         rp='What name do you want to give to the shared libperl?'
6205         . ./myread
6206         libperl=$ans
6207         echo "Ok, I'll use $libperl"
6208         ;;
6209 *)
6210         libperl="libperl${_a}"
6211         ;;
6212 esac
6213
6214 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
6215 case "$shrpdir" in
6216 '') ;;
6217 *)      $cat >&4 <<EOM
6218 WARNING:  Use of the shrpdir variable for the installation location of
6219 the shared $libperl is not supported.  It was never documented and
6220 will not work in this version.  Let me (perlbug@perl.com)
6221 know of any problems this may cause.
6222
6223 EOM
6224         case "$shrpdir" in
6225         "$archlibexp/CORE")
6226                 $cat >&4 <<EOM
6227 But your current setting of $shrpdir is
6228 the default anyway, so it's harmless.
6229 EOM
6230                 ;;
6231         *)
6232                 $cat >&4 <<EOM
6233 Further, your current attempted setting of $shrpdir
6234 conflicts with the value of $archlibexp/CORE
6235 that installperl will use.
6236 EOM
6237                 ;;
6238         esac
6239         ;;
6240 esac
6241
6242 # How will the perl executable find the installed shared $libperl?
6243 # Add $xxx to ccdlflags.
6244 # If we can't figure out a command-line option, use $shrpenv to
6245 # set env LD_RUN_PATH.  The main perl makefile uses this.
6246 shrpdir=$archlibexp/CORE
6247 xxx=''
6248 tmp_shrpenv=''
6249 if "$useshrplib"; then
6250     case "$osname" in 
6251         aix)
6252                 # We'll set it in Makefile.SH...
6253                 ;;
6254         solaris|netbsd)
6255                 xxx="-R $shrpdir"
6256                 ;;
6257         freebsd)
6258                 xxx="-Wl,-R$shrpdir"
6259                 ;;
6260         linux|irix*|dec_osf)
6261                 xxx="-Wl,-rpath,$shrpdir"
6262                 ;;
6263         next)
6264                 # next doesn't like the default...
6265                 ;;
6266         beos)
6267                 # beos doesn't like the default, either.
6268                 ;;
6269         hpux*)
6270                 # hpux doesn't like the default, either.
6271                 tmp_shrpenv="env LDOPTS=\"+s +b${shrpdir}\""
6272                 ;;
6273         *)
6274                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
6275                 ;;
6276         esac
6277         case "$xxx" in
6278         '') ;;
6279         *)      
6280                 # Only add $xxx if it isn't already in ccdlflags.
6281                 case " $ccdlflags " in
6282                 *" $xxx "*)     ;;
6283                 *)      ccdlflags="$ccdlflags $xxx"
6284                         cat <<EOM >&4
6285
6286 Adding $xxx to the flags
6287 passed to $ld so that the perl executable will find the 
6288 installed shared $libperl.
6289
6290 EOM
6291                         ;;
6292                 esac
6293                 ;;
6294         esac
6295 fi
6296 # Fix ccdlflags in AIX for building external extensions.
6297 # (For building Perl itself bare -bE:perl.exp is needed,
6298 #  Makefile.SH takes care of this.)
6299 case "$osname" in
6300 aix) ccdlflags="$ccdlflags -bE:$installarchlib/CORE/perl.exp" ;;
6301 esac
6302 # Respect a hint or command-line value.
6303 case "$shrpenv" in
6304 '') shrpenv="$tmp_shrpenv" ;;
6305 esac
6306 case "$ldlibpthname" in
6307 '')     ldlibpthname=LD_LIBRARY_PATH ;;
6308 none)   ldlibpthname='' ;;
6309 esac
6310
6311 : determine where manual pages go
6312 set man1dir man1dir none
6313 eval $prefixit
6314 $cat <<EOM
6315
6316 $spackage has manual pages available in source form.
6317 EOM
6318 case "$nroff" in
6319 nroff)
6320         echo "However, you don't have nroff, so they're probably useless to you."
6321         case "$man1dir" in
6322         '') man1dir="none";;
6323         esac;;
6324 esac
6325 echo "If you don't want the manual sources installed, answer 'none'."
6326 case "$man1dir" in
6327 ' ') dflt=none
6328         ;;
6329 '')
6330         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
6331         lookpath="$lookpath $prefixexp/man/p_man/man1"
6332         lookpath="$lookpath $prefixexp/man/u_man/man1"
6333         lookpath="$lookpath $prefixexp/man/man.1"
6334         case "$sysman" in
6335         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
6336         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
6337         esac
6338         set dflt
6339         eval $prefixup
6340         ;;
6341 *)  dflt="$man1dir"
6342         ;;
6343 esac
6344 echo " "
6345 fn=dn+~
6346 rp="Where do the main $spackage manual pages (source) go?"
6347 . ./getfile
6348 if $test "X$man1direxp" != "X$ansexp"; then
6349         installman1dir=''
6350 fi
6351 man1dir="$ans"
6352 man1direxp="$ansexp"
6353 case "$man1dir" in
6354 '')     man1dir=' '
6355         installman1dir='';;
6356 esac
6357
6358 : Change installation prefix, if necessary.
6359 if $test X"$prefix" != X"$installprefix"; then
6360         installman1dir=`echo $man1direxp | $sed "s#^$prefix#$installprefix#"`
6361 else
6362         installman1dir="$man1direxp"
6363 fi
6364
6365 : What suffix to use on installed man pages
6366
6367 case "$man1dir" in
6368 ' ')
6369         man1ext='0'
6370         ;;
6371 *)
6372         rp="What suffix should be used for the main $spackage man pages?"
6373         case "$man1ext" in
6374         '')     case "$man1dir" in
6375                 *1)  dflt=1 ;;
6376                 *1p) dflt=1p ;;
6377                 *1pm) dflt=1pm ;;
6378                 *l) dflt=l;;
6379                 *n) dflt=n;;
6380                 *o) dflt=o;;
6381                 *p) dflt=p;;
6382                 *C) dflt=C;;
6383                 *L) dflt=L;;
6384                 *L1) dflt=L1;;
6385                 *) dflt=1;;
6386                 esac
6387                 ;;
6388         *)      dflt="$man1ext";;
6389         esac
6390         . ./myread
6391         man1ext="$ans"
6392         ;;
6393 esac
6394
6395 : see if we can have long filenames
6396 echo " "
6397 rmlist="$rmlist /tmp/cf$$"
6398 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
6399 first=123456789abcdef
6400 second=/tmp/cf$$/$first
6401 $rm -f $first $second
6402 if (echo hi >$first) 2>/dev/null; then
6403         if $test -f 123456789abcde; then
6404                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
6405                 val="$undef"
6406         else
6407                 if (echo hi >$second) 2>/dev/null; then
6408                         if $test -f /tmp/cf$$/123456789abcde; then
6409                                 $cat <<'EOM'
6410 That's peculiar... You can have filenames longer than 14 characters, but only
6411 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
6412 I shall consider your system cannot support long filenames at all.
6413 EOM
6414                                 val="$undef"
6415                         else
6416                                 echo 'You can have filenames longer than 14 characters.' >&4
6417                                 val="$define"
6418                         fi
6419                 else
6420                         $cat <<'EOM'
6421 How confusing! Some of your filesystems are sane enough to allow filenames
6422 longer than 14 characters but some others like /tmp can't even think about them.
6423 So, for now on, I shall assume your kernel does not allow them at all.
6424 EOM
6425                         val="$undef"
6426                 fi
6427         fi
6428 else
6429         $cat <<'EOM'
6430 You can't have filenames longer than 14 chars.  You can't even think about them!
6431 EOM
6432         val="$undef"
6433 fi 
6434 set d_flexfnam
6435 eval $setvar
6436 $rm -rf /tmp/cf$$ 123456789abcde*
6437
6438 : determine where library module manual pages go
6439 set man3dir man3dir none
6440 eval $prefixit
6441 $cat <<EOM
6442
6443 $spackage has manual pages for many of the library modules.
6444 EOM
6445
6446 case "$nroff" in
6447 nroff)
6448         $cat <<'EOM'
6449 However, you don't have nroff, so they're probably useless to you.
6450 EOM
6451         case "$man3dir" in
6452         '') man3dir="none";;
6453         esac;;
6454 esac
6455
6456 case "$d_flexfnam" in
6457 undef)
6458         $cat <<'EOM'
6459 However, your system can't handle the long file names like File::Basename.3. 
6460 EOM
6461         case "$man3dir" in
6462         '') man3dir="none";;
6463         esac;;
6464 esac
6465
6466 echo "If you don't want the manual sources installed, answer 'none'."
6467 prog=`echo $package | $sed 's/-*[0-9.]*$//'`
6468 case "$man3dir" in
6469 '')     dflt=`echo $man1dir | $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'`
6470         if $test -d "$privlib/man/man3"; then
6471                 cat <<EOM >&4
6472
6473 WARNING:  Previous versions of perl installed man3 pages into
6474 $privlib/man/man3.  This version will suggest a 
6475 new default of $dflt.  
6476 EOM
6477                 tdflt=$dflt
6478                 dflt='n'
6479                 rp='Do you wish to preserve the old behavior?(y/n)'
6480                 . ./myread
6481                 case "$ans" in
6482                 y*) dflt="$privlib/man/man3" ;;
6483                 *)  dflt=$tdflt ;;
6484                 esac
6485     fi
6486         ;;
6487 ' ') dflt=none;;
6488 *)      dflt="$man3dir" ;;
6489 esac
6490 echo " "
6491 fn=dn+~
6492 rp="Where do the $package library man pages (source) go?"
6493 . ./getfile
6494 man3dir="$ans"
6495 man3direxp="$ansexp"
6496 case "$man1dir" in
6497 '')     man3dir=' '
6498         installman3dir='';;
6499 esac
6500
6501 : Change installation prefix, if necessary.
6502 if $test X"$prefix" != X"$installprefix"; then
6503         installman3dir=`echo $man3direxp | $sed "s#^$prefix#$installprefix#"`
6504 else
6505         installman3dir="$man3direxp"
6506 fi
6507
6508 : What suffix to use on installed man pages
6509 case "$man3dir" in
6510 ' ')
6511         man3ext='0'
6512         ;;
6513 *)
6514         rp="What suffix should be used for the $package library man pages?"
6515         case "$man3ext" in
6516         '')     case "$man3dir" in
6517                 *3)  dflt=3 ;;
6518                 *3p) dflt=3p ;;
6519                 *3pm) dflt=3pm ;;
6520                 *l) dflt=l;;
6521                 *n) dflt=n;;
6522                 *o) dflt=o;;
6523                 *p) dflt=p;;
6524                 *C) dflt=C;;
6525                 *L) dflt=L;;
6526                 *L3) dflt=L3;;
6527                 *) dflt=3;;
6528                 esac
6529                 ;;
6530         *)      dflt="$man3ext";;
6531         esac
6532         . ./myread
6533         man3ext="$ans"
6534         ;;
6535 esac
6536
6537 : see if we have to deal with yellow pages, now NIS.
6538 if $test -d /usr/etc/yp || $test -d /etc/yp; then
6539         if $test -f /usr/etc/nibindd; then
6540                 echo " "
6541                 echo "I'm fairly confident you're on a NeXT."
6542                 echo " "
6543                 rp='Do you get the hosts file via NetInfo?'
6544                 dflt=y
6545                 case "$hostcat" in
6546                 nidump*) ;;
6547                 '') ;;
6548                 *) dflt=n;;
6549                 esac
6550                 . ./myread
6551                 case "$ans" in
6552                 y*) hostcat='nidump hosts .';;
6553                 *)      case "$hostcat" in
6554                         nidump*) hostcat='';;
6555                         esac
6556                         ;;
6557                 esac
6558         fi
6559         case "$hostcat" in
6560         nidump*) ;;
6561         *)
6562                 case "$hostcat" in
6563                 *ypcat*) dflt=y;;
6564                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
6565                                 dflt=y
6566                         else
6567                                 dflt=n
6568                         fi;;
6569                 *) dflt=n;;
6570                 esac
6571                 echo " "
6572                 rp='Are you getting the hosts file via yellow pages?'
6573                 . ./myread
6574                 case "$ans" in
6575                 y*) hostcat='ypcat hosts';;
6576                 *) hostcat='cat /etc/hosts';;
6577                 esac
6578                 ;;
6579         esac
6580 fi
6581 case "$hostcat" in
6582 '') test -f /etc/hosts && hostcat='cat /etc/hosts';;
6583 esac
6584 case "$groupcat" in
6585 '') test -f /etc/group && groupcat='cat /etc/group';;
6586 esac
6587 case "$passcat" in
6588 '') test -f /etc/passwd && passcat='cat /etc/passwd';;
6589 esac
6590
6591 : now get the host name
6592 echo " "
6593 echo "Figuring out host name..." >&4
6594 case "$myhostname" in
6595 '') cont=true
6596         echo 'Maybe "hostname" will work...'
6597         if tans=`sh -c hostname 2>&1` ; then
6598                 myhostname=$tans
6599                 phostname=hostname
6600                 cont=''
6601         fi
6602         ;;
6603 *) cont='';;
6604 esac
6605 if $test "$cont"; then
6606         if ./xenix; then
6607                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
6608                 if tans=`cat /etc/systemid 2>&1` ; then
6609                         myhostname=$tans
6610                         phostname='cat /etc/systemid'
6611                         echo "Whadyaknow.  Xenix always was a bit strange..."
6612                         cont=''
6613                 fi
6614         elif $test -r /etc/systemid; then
6615                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
6616         fi
6617 fi
6618 if $test "$cont"; then
6619         echo 'No, maybe "uuname -l" will work...'
6620         if tans=`sh -c 'uuname -l' 2>&1` ; then
6621                 myhostname=$tans
6622                 phostname='uuname -l'
6623         else
6624                 echo 'Strange.  Maybe "uname -n" will work...'
6625                 if tans=`sh -c 'uname -n' 2>&1` ; then
6626                         myhostname=$tans
6627                         phostname='uname -n'
6628                 else
6629                         echo 'Oh well, maybe I can mine it out of whoami.h...'
6630                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
6631                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
6632                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
6633                         else
6634                                 case "$myhostname" in
6635                                 '') echo "Does this machine have an identity crisis or something?"
6636                                         phostname='';;
6637                                 *)
6638                                         echo "Well, you said $myhostname before..."
6639                                         phostname='echo $myhostname';;
6640                                 esac
6641                         fi
6642                 fi
6643         fi
6644 fi
6645 : you do not want to know about this
6646 set $myhostname
6647 myhostname=$1
6648
6649 : verify guess
6650 if $test "$myhostname" ; then
6651         dflt=y
6652         rp='Your host name appears to be "'$myhostname'".'" Right?"
6653         . ./myread
6654         case "$ans" in
6655         y*) ;;
6656         *) myhostname='';;
6657         esac
6658 fi
6659
6660 : bad guess or no guess
6661 while $test "X$myhostname" = X ; do
6662         dflt=''
6663         rp="Please type the (one word) name of your host:"
6664         . ./myread
6665         myhostname="$ans"
6666 done
6667
6668 : translate upper to lower if necessary
6669 case "$myhostname" in
6670 *[A-Z]*)
6671         echo "(Normalizing case in your host name)"
6672         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
6673         ;;
6674 esac
6675
6676 case "$myhostname" in
6677 *.*)
6678         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
6679         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
6680         echo "(Trimming domain name from host name--host name is now $myhostname)"
6681         ;;
6682 *) case "$mydomain" in
6683         '')
6684                 {
6685                         test "X$hostcat" = "Xypcat hosts" &&
6686                         ypmatch "$myhostname" hosts 2>/dev/null |\
6687                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
6688                         $test -s hosts
6689                 } || {
6690                         test "X$hostcat" != "X" &&
6691                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
6692                                         /[       ]$myhostname[  . ]/p" > hosts
6693                 }
6694                 tmp_re="[       . ]"
6695                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
6696                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
6697                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
6698                         hosts | $sort | $uniq | \
6699                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
6700                 case `$echo X$dflt` in
6701                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
6702                         dflt=.
6703                         ;;
6704                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
6705                         ;;
6706                 esac
6707                 case "$dflt" in
6708                 .)
6709                         tans=`./loc resolv.conf X /etc /usr/etc`
6710                         if $test -f "$tans"; then
6711                                 echo "(Attempting domain name extraction from $tans)"
6712                                 dflt=.`$sed -n -e 's/   / /g' \
6713                                   -e 's/^search  *\([^ ]*\).*/\1/p' $tans \
6714                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6715                                 case "$dflt" in
6716                                 .) dflt=.`$sed -n -e 's/        / /g' \
6717                                      -e 's/^domain  *\([^ ]*\).*/\1/p' $tans \
6718                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
6719                                         ;;
6720                                 esac
6721                         fi
6722                         ;;
6723                 esac
6724                 case "$dflt" in
6725                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
6726                         dflt=.`sh -c domainname 2>/dev/null`
6727                         case "$dflt" in
6728                         '') dflt='.';;
6729                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
6730                         esac
6731                         ;;
6732                 esac
6733                 case "$dflt" in
6734                 .) echo "(Lost all hope -- silly guess then)"
6735                         dflt='.uucp'
6736                         ;;
6737                 esac
6738                 $rm -f hosts
6739                 ;;
6740         *) dflt="$mydomain";;
6741         esac;;
6742 esac
6743 echo " "
6744 rp="What is your domain name?"
6745 . ./myread
6746 tans="$ans"
6747 case "$ans" in
6748 '') ;;
6749 .*) ;;
6750 *) tans=".$tans";;
6751 esac
6752 mydomain="$tans"
6753
6754 : translate upper to lower if necessary
6755 case "$mydomain" in
6756 *[A-Z]*)
6757         echo "(Normalizing case in your domain name)"
6758         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
6759         ;;
6760 esac
6761
6762 : a little sanity check here
6763 case "$phostname" in
6764 '') ;;
6765 *)
6766         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
6767         $myhostname$mydomain|$myhostname) ;;
6768         *)
6769                 case "$phostname" in
6770                 sed*)
6771                         echo "(That doesn't agree with your whoami.h file, by the way.)"
6772                         ;;
6773                 *)
6774                         echo "(That doesn't agree with your $phostname command, by the way.)"
6775                         ;;
6776                 esac
6777         ;;
6778         esac
6779         ;;
6780 esac
6781
6782 $cat <<EOM
6783
6784 I need to get your e-mail address in Internet format if possible, i.e.
6785 something like user@host.domain. Please answer accurately since I have
6786 no easy means to double check it. The default value provided below
6787 is most probably close to reality but may not be valid from outside
6788 your organization...
6789
6790 EOM
6791 cont=x
6792 while test "$cont"; do
6793         case "$cf_email" in
6794         '') dflt="$cf_by@$myhostname$mydomain";;
6795         *) dflt="$cf_email";;
6796         esac
6797         rp='What is your e-mail address?'
6798         . ./myread
6799         cf_email="$ans"
6800         case "$cf_email" in
6801         *@*.*) cont='' ;;
6802         *)
6803                 rp='Address does not look like an Internet one.  Use it anyway?'
6804                 case "$fastread" in
6805                 yes) dflt=y ;;
6806                 *) dflt=n ;;
6807                 esac
6808                 . ./myread
6809                 case "$ans" in
6810                 y*) cont='' ;;
6811                 *) echo " " ;;
6812                 esac
6813                 ;;
6814         esac
6815 done
6816
6817 $cat <<EOM
6818
6819 If you or somebody else will be maintaining perl at your site, please
6820 fill in the correct e-mail address here so that they may be contacted
6821 if necessary. Currently, the "perlbug" program included with perl
6822 will send mail to this address in addition to perlbug@perl.com. You may
6823 enter "none" for no administrator.
6824
6825 EOM
6826 case "$perladmin" in
6827 '') dflt="$cf_email";;
6828 *) dflt="$perladmin";;
6829 esac
6830 rp='Perl administrator e-mail address'
6831 . ./myread
6832 perladmin="$ans"
6833
6834 : figure out how to guarantee perl startup
6835 case "$startperl" in
6836 '')
6837         case "$sharpbang" in
6838         *!)
6839                 $cat <<EOH
6840
6841 I can use the #! construct to start perl on your system. This will
6842 make startup of perl scripts faster, but may cause problems if you
6843 want to share those scripts and perl is not in a standard place
6844 ($binexp/perl) on all your platforms. The alternative is to force
6845 a shell by starting the script with a single ':' character.
6846
6847 EOH
6848                 dflt="$binexp/perl"
6849                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
6850                 . ./myread
6851                 case "$ans" in
6852                 none)   startperl=": # use perl";;
6853                 *)      startperl="#!$ans"
6854                         if $test 30 -lt `echo "$ans" | wc -c`; then
6855                                 $cat >&4 <<EOM
6856
6857 WARNING:  Some systems limit the #! command to 32 characters.
6858 If you experience difficulty running Perl scripts with #!, try
6859 installing Perl in a directory with a shorter pathname.
6860
6861 EOM
6862                         fi ;;
6863                 esac
6864                 ;;
6865         *) startperl=": # use perl"
6866                 ;;
6867         esac
6868         ;;
6869 esac
6870 echo "I'll use $startperl to start perl scripts."
6871
6872 : figure best path for perl in scripts
6873 case "$perlpath" in
6874 '')
6875         perlpath="$binexp/perl"
6876         case "$startperl" in
6877         *!*) ;;
6878         *)
6879                 $cat <<EOH
6880
6881 I will use the "eval 'exec'" idiom to start Perl on your system.
6882 I can use the full path of your Perl binary for this purpose, but
6883 doing so may cause problems if you want to share those scripts and
6884 Perl is not always in a standard place ($binexp/perl).
6885
6886 EOH
6887                 dflt="$binexp/perl"
6888                 rp="What path shall I use in \"eval 'exec'\"?"
6889                 . ./myread
6890                 perlpath="$ans"
6891                 ;;
6892         esac
6893         ;;
6894 esac
6895 case "$startperl" in
6896 *!*)    ;;
6897 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
6898 esac
6899
6900 : determine where public executable scripts go
6901 set scriptdir scriptdir
6902 eval $prefixit
6903 case "$scriptdir" in
6904 '')
6905         dflt="$bin"
6906         : guess some guesses
6907         $test -d /usr/share/scripts && dflt=/usr/share/scripts
6908         $test -d /usr/share/bin     && dflt=/usr/share/bin
6909         $test -d /usr/local/script  && dflt=/usr/local/script
6910         $test -d /usr/local/scripts && dflt=/usr/local/scripts
6911         $test -d $prefixexp/script  && dflt=$prefixexp/script
6912         set dflt
6913         eval $prefixup
6914         ;;
6915 *)  dflt="$scriptdir"
6916         ;;
6917 esac
6918 $cat <<EOM
6919  
6920 Some installations have a separate directory just for executable scripts so
6921 that they can mount it across multiple architectures but keep the scripts in
6922 one spot.  You might, for example, have a subdirectory of /usr/share for this.
6923 Or you might just lump your scripts in with all your other executables.
6924  
6925 EOM
6926 fn=d~
6927 rp='Where do you keep publicly executable scripts?'
6928 . ./getfile
6929 if $test "X$ansexp" != "X$scriptdirexp"; then
6930         installscript=''
6931 fi
6932 scriptdir="$ans"
6933 scriptdirexp="$ansexp"
6934 : Change installation prefix, if necessary.
6935 if $test X"$prefix" != X"$installprefix"; then
6936         installscript=`echo $scriptdirexp | sed "s#^$prefix#$installprefix#"`
6937 else
6938         installscript="$scriptdirexp"
6939 fi
6940
6941 : determine where site specific architecture-dependent libraries go.
6942 : sitelib  default is /usr/local/lib/perl5/site_perl/$version
6943 : sitearch default is /usr/local/lib/perl5/site_perl/$version/$archname
6944 : sitelib may have an optional trailing /share.
6945 tdflt=`echo $sitelib | $sed 's,/share$,,'`
6946 tdflt="$tdflt/$archname"
6947 set sitearch sitearch none
6948 eval $prefixit
6949 case "$sitearch" in
6950 '')     dflt="$tdflt" ;;
6951 *)      dflt="$sitearch" ;;
6952 esac
6953 $cat <<EOM
6954
6955 The installation process will also create a directory for
6956 architecture-dependent site-specific extensions and modules.
6957
6958 EOM
6959 fn=nd~+
6960 rp='Pathname for the site-specific architecture-dependent library files?'
6961 . ./getfile
6962 sitearch="$ans"
6963 sitearchexp="$ansexp"
6964 : Change installation prefix, if necessary.
6965 if $test X"$prefix" != X"$installprefix"; then
6966         installsitearch=`echo $sitearchexp | sed "s#^$prefix#$installprefix#"`
6967 else
6968         installsitearch="$sitearchexp"
6969 fi
6970
6971 : determine where add-on public executables go
6972 case "$sitebin" in
6973 '')     dflt=$siteprefix/bin ;;
6974 *)      dflt=$sitebin ;;
6975 esac
6976 fn=d~
6977 rp='Pathname where the add-on public executables should be installed?'
6978 . ./getfile
6979 sitebin="$ans"
6980 sitebinexp="$ansexp"
6981 : Change installation prefix, if necessary.
6982 if $test X"$prefix" != X"$installprefix"; then
6983         installsitebin=`echo $sitebinexp | sed "s#^$prefix#$installprefix#"`
6984 else
6985         installsitebin="$sitebinexp"
6986 fi
6987
6988 : see if sqrtl exists
6989 set sqrtl d_sqrtl
6990 eval $inlibc
6991
6992 cat <<EOM
6993
6994 Perl can be built to take advantage of long doubles which
6995 (if available) may give more accuracy and range for floating point numbers.
6996
6997 If this doesn't make any sense to you, just accept the default 'n'.
6998 EOM
6999
7000 case "$ccflags" in
7001 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
7002 esac
7003
7004 case "$uselongdouble" in
7005 $define|true|[yY]*)     dflt='y';;
7006 *) dflt='n';;
7007 esac
7008 rp='Try to use long doubles if available?'
7009 . ./myread
7010 case "$ans" in
7011 y|Y)    val="$define"   ;;
7012 *)      val="$undef"    ;;
7013 esac
7014 set uselongdouble
7015 eval $setvar
7016
7017 case "$uselongdouble" in
7018 true|[yY]*) uselongdouble="$define" ;;
7019 esac
7020
7021 case "$uselongdouble" in
7022 $define)
7023 : Look for a hint-file generated 'call-back-unit'.  If the
7024 : user has specified that long doubles should be used,
7025 : we may need to set or change some other defaults.
7026         if $test -f uselongdouble.cbu; then
7027                 echo "Your platform has some specific hints for long doubles, using them..."
7028                 . ./uselongdouble.cbu
7029         else
7030                 $cat <<EOM
7031 (Your platform doesn't have any specific hints for long doubles.)
7032 EOM
7033         fi
7034         ;;
7035 esac
7036
7037 case "$uselongdouble:$d_sqrtl" in
7038 $define:$undef)
7039                 $cat <<EOM >&4
7040
7041 You requested the use of long doubles but you do not seem to have
7042 the mathematic functions for long doubles.  I'm disabling the use
7043 of long doubles.
7044 EOM
7045         uselongdouble=$undef
7046         ;;
7047 esac
7048
7049 cat <<EOM
7050
7051 Perl can be built to take advantage of long longs which
7052 (if available) may give more range for integer numbers.
7053
7054 If this doesn't make any sense to you, just accept the default 'n'.
7055 EOM
7056
7057 case "$ccflags" in
7058 *-DUSE_LONG_LONG*) uselonglong="$define" ;;
7059 esac
7060
7061 case "$uselonglong" in
7062 '')     dflt='y';;
7063 esac
7064 rp='Try to use long longs if available?'
7065 . ./myread
7066 case "$ans" in
7067 y|Y)    val="$define"   ;;
7068 *)      val="$undef"    ;;
7069 esac
7070 set uselonglong
7071 eval $setvar
7072
7073 case "$uselonglong" in
7074 true|[yY]*) uselonglong="$define" ;;
7075 esac
7076
7077 case "$uselonglong" in
7078 $define)
7079 : Look for a hint-file generated 'call-back-unit'.  If the
7080 : user has specified that long longs should be used,
7081 : we may need to set or change some other defaults.
7082         if $test -f uselonglong.cbu; then
7083                 echo "Your platform has some specific hints for long longs, using them..."
7084                 . ./uselonglong.cbu
7085         else
7086                 $cat <<EOM
7087 (Your platform doesn't have any specific hints for long longs.)
7088 EOM
7089         fi
7090         ;;
7091 esac
7092
7093 cat <<EOM
7094
7095 Previous version of $package used the standard IO mechanisms as defined
7096 in <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
7097 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
7098 the default.  This abstraction layer can use AT&T's sfio (if you already
7099 have sfio installed) or regular stdio.  Using PerlIO with sfio may cause
7100 problems with some extension modules.  Using PerlIO with stdio is safe,
7101 but it is slower than plain stdio and therefore is not the default.
7102
7103 If this doesn't make any sense to you, just accept the default 'n'.
7104 EOM
7105 case "$useperlio" in
7106 $define|true|[yY]*)     dflt='y';;
7107 *) dflt='n';;
7108 esac
7109 rp='Use the experimental PerlIO abstraction layer?'
7110 . ./myread
7111 case "$ans" in
7112 y|Y) 
7113         val="$define"
7114         ;;     
7115 *)      
7116         echo "Ok, doing things the stdio way"
7117         val="$undef"
7118         ;;
7119 esac
7120 set useperlio
7121 eval $setvar 
7122
7123 case "$vendorprefix" in
7124 '')     d_vendorbin="$undef"
7125         vendorbin=''
7126         vendorbinexp=''
7127         ;;
7128 *)      d_vendorbin="$define"
7129         : determine where vendor-supplied executables go.
7130         dflt=$vendorprefix/bin
7131         fn=d~+
7132         rp='Pathname for the vendor-supplied executables directory?'
7133         . ./getfile
7134         vendorbin="$ans"
7135         vendorbinexp="$ansexp"
7136         : Change installation prefix, if necessary.
7137         if $test X"$prefix" != X"$installprefix"; then
7138                 installvendorbin=`echo $vendorbinexp | $sed "s#^$prefix#$installprefix#"`
7139         else
7140                 installvendorbin="$vendorbinexp"
7141         fi
7142         ;;
7143 esac
7144
7145 : check for length of double
7146 echo " "
7147 case "$doublesize" in
7148 '')
7149         $echo $n "Checking to see how big your double precision numbers are...$c" >&4
7150         $cat >try.c <<'EOCP'
7151 #include <stdio.h>
7152 int main()
7153 {
7154     printf("%d\n", (int)sizeof(double));
7155     exit(0);
7156 }
7157 EOCP
7158         set try
7159         if eval $compile_ok; then
7160                 doublesize=`./try`
7161                 $echo " $doublesize bytes." >&4
7162         else
7163                 dflt='8'
7164                 echo "(I can't seem to compile the test program.  Guessing...)"
7165                 rp="What is the size of a double precision number (in bytes)?"
7166                 . ./myread
7167                 doublesize="$ans"
7168         fi
7169         ;;
7170 esac
7171 $rm -f try.c try
7172
7173 : check for long doubles
7174 echo " "
7175 $echo $n "Checking to see if your system supports long double..." $c >&4
7176 echo 'int main() { long double x = 7.0; }' > try.c
7177 set try
7178 if eval $compile; then
7179         val="$define"
7180         echo " Yes, it does." >&4
7181 else
7182         val="$undef"
7183         echo " No, it doesn't." >&4
7184 fi
7185 $rm try.*
7186 set d_longdbl
7187 eval $setvar
7188
7189 : check for length of long double
7190 case "${d_longdbl}${longdblsize}" in
7191 $define)
7192         echo " "
7193         $echo $n "Checking to see how big your long doubles are..." $c >&4
7194         $cat >try.c <<'EOCP'
7195 #include <stdio.h>
7196 int main()
7197 {
7198         printf("%d\n", sizeof(long double));
7199 }
7200 EOCP
7201         set try
7202         set try
7203         if eval $compile; then
7204                 longdblsize=`./try$exe_ext`
7205                 $echo " $longdblsize bytes." >&4
7206         else
7207                 dflt='8'
7208                 echo " "
7209                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
7210                 rp="What is the size of a long double (in bytes)?"
7211                 . ./myread
7212                 longdblsize="$ans"
7213         fi
7214         if $test "X$doublesize" = "X$longdblsize"; then
7215                 echo "(That isn't any different from an ordinary double.)"
7216         fi      
7217         ;;
7218 esac
7219 $rm -f try.* try
7220
7221 : Check how to convert floats to strings.
7222 if test "X$d_Gconvert" = X; then
7223         echo " "
7224         echo "Checking for an efficient way to convert floats to strings."
7225         $cat >try.c <<EOP
7226 #ifdef TRY_gconvert
7227 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
7228 char *myname = "gconvert";
7229 #endif
7230 #ifdef TRY_gcvt
7231 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
7232 char *myname = "gcvt";
7233 #endif
7234 #ifdef TRY_qgcvt
7235 #define Gconvert(x,n,t,b) qgcvt((x),(n),(b))
7236 char *myname = "qgcvt";
7237 #define DOUBLETYPE long double
7238 #endif
7239 #ifdef TRY_sprintf
7240 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
7241 char *myname = "sprintf";
7242 #endif
7243
7244 #ifndef DOUBLETYPE
7245 #define DOUBLETYPE double
7246 #endif
7247
7248 #include <stdio.h>
7249
7250 #define I_STDLIB $i_stdlib
7251 #ifdef I_STDLIB
7252 #include <stdlib.h>
7253 #endif
7254
7255 int
7256 checkit(expect, got)
7257 char *expect;
7258 char *got;
7259 {
7260     if (strcmp(expect, got)) {
7261                 printf("%s oddity:  Expected %s, got %s\n",
7262                         myname, expect, got);
7263                 exit(1);
7264         }
7265 }
7266
7267 int main()
7268
7269         char buf[64]; 
7270         buf[63] = '\0';
7271
7272         /* This must be 1st test on (which?) platform */
7273         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
7274         Gconvert((DOUBLETYPE)0.1, 8, 0, buf);
7275         checkit("0.1", buf);
7276
7277         Gconvert((DOUBLETYPE)1.0, 8, 0, buf); 
7278         checkit("1", buf);
7279
7280         Gconvert((DOUBLETYPE)0.0, 8, 0, buf); 
7281         checkit("0", buf);
7282
7283         Gconvert((DOUBLETYPE)-1.0, 8, 0, buf); 
7284         checkit("-1", buf);
7285
7286         /* Some Linux gcvt's give 1.e+5 here. */
7287         Gconvert((DOUBLETYPE)100000.0, 8, 0, buf); 
7288         checkit("100000", buf);
7289         
7290         /* Some Linux gcvt's give -1.e+5 here. */
7291         Gconvert((DOUBLETYPE)-100000.0, 8, 0, buf); 
7292         checkit("-100000", buf);
7293
7294         exit(0);
7295 }
7296 EOP
7297         case "$d_Gconvert" in
7298         gconvert*) xxx_list='gconvert gcvt sprintf' ;;
7299         gcvt*) xxx_list='gcvt gconvert sprintf' ;;
7300         sprintf*) xxx_list='sprintf gconvert gcvt' ;;
7301         *) xxx_list='gconvert gcvt sprintf' ;;
7302         esac
7303
7304         case "$d_longdbl$uselongdouble" in
7305         definedefine) xxx_list="`echo $xxx_list|sed 's/gcvt/qgcvt gcvt/'`" ;;
7306         esac
7307
7308         for xxx_convert in $xxx_list; do
7309                 echo "Trying $xxx_convert..."
7310                 $rm -f try try$_o
7311                 set try -DTRY_$xxx_convert
7312                 if eval $compile; then
7313                         echo "$xxx_convert() found." >&4
7314                         if ./try; then
7315                                 echo "I'll use $xxx_convert to convert floats into a string." >&4
7316                                 break;
7317                         else
7318                                 echo "...But $xxx_convert didn't work as I expected."
7319                         fi
7320                 else
7321                         echo "$xxx_convert NOT found." >&4
7322                 fi
7323         done
7324                 
7325         case "$xxx_convert" in
7326         gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
7327         gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
7328         qgcvt) d_Gconvert='qgcvt((x),(n),(b))' ;;
7329         *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
7330         esac
7331 fi
7332
7333 echo " "
7334
7335 if $test X"$d_longdbl" = X"$define"; then
7336
7337 echo "Checking how to print long doubles..." >&4
7338
7339 if $test X"$sPRIfldbl" = X -a X"$doublesize" = X"$longdblsize"; then
7340         $cat >try.c <<'EOCP'
7341 #include <sys/types.h>
7342 #include <stdio.h>
7343 int main() {
7344   double d = 123.456;
7345   printf("%.3f\n", d);
7346 }
7347 EOCP
7348         set try
7349         if eval $compile; then
7350                 yyy=`./try$exe_ext`
7351                 case "$yyy" in
7352                 123.456)
7353                         sPRIfldbl='"f"'; sPRIgldbl='"g"'; sPRIeldbl='"e"';
7354                         sPRIFldbl='"F"'; sPRIGldbl='"G"'; sPRIEldbl='"E"';
7355                         echo "We will use %f."
7356                         ;;
7357                 esac
7358         fi
7359 fi
7360
7361 if $test X"$sPRIfldbl" = X; then
7362         $cat >try.c <<'EOCP'
7363 #include <sys/types.h>
7364 #include <stdio.h>
7365 int main() {
7366   long double d = 123.456;
7367   printf("%.3llf\n", d);
7368 }
7369 EOCP
7370         set try
7371         if eval $compile; then
7372                 yyy=`./try$exe_ext`
7373                 case "$yyy" in
7374                 123.456)
7375                         sPRIfldbl='"llf"'; sPRIgldbl='"llg"'; sPRIeldbl='"lle"';
7376                         sPRIFldbl='"llF"'; sPRIGldbl='"llG"'; sPRIEldbl='"llE"';
7377                         echo "We will use %llf."
7378                         ;;
7379                 esac
7380         fi
7381 fi
7382
7383 if $test X"$sPRIfldbl" = X; then
7384         $cat >try.c <<'EOCP'
7385 #include <sys/types.h>
7386 #include <stdio.h>
7387 int main() {
7388   long double d = 123.456;
7389   printf("%.3Lf\n", d);
7390 }
7391 EOCP
7392         set try
7393         if eval $compile; then
7394                 yyy=`./try$exe_ext`
7395                 case "$yyy" in
7396                 123.456)
7397                         sPRIfldbl='"Lf"'; sPRIgldbl='"Lg"'; sPRIeldbl='"Le"';
7398                         sPRIFldbl='"LF"'; sPRIGldbl='"LG"'; sPRIEldbl='"LE"';
7399                         echo "We will use %Lf."
7400                         ;;
7401                 esac
7402         fi
7403 fi
7404
7405 if $test X"$sPRIfldbl" = X; then
7406         $cat >try.c <<'EOCP'
7407 #include <sys/types.h>
7408 #include <stdio.h>
7409 int main() {
7410   long double d = 123.456;
7411   printf("%.3lf\n", d);
7412 }
7413 EOCP
7414         set try
7415         if eval $compile; then
7416                 yyy=`./try$exe_ext`
7417                 case "$yyy" in
7418                 123.456)
7419                         sPRIfldbl='"lf"'; sPRIgldbl='"lg"'; sPRIeldbl='"le"';
7420                         sPRIFldbl='"lF"'; sPRIGldbl='"lG"'; sPRIEldbl='"lE"';
7421                         echo "We will use %lf."
7422                         ;;
7423                 esac
7424         fi
7425 fi
7426
7427 if $test X"$sPRIfldbl" = X; then
7428         echo "Cannot figure out how to print long doubles." >&4
7429 fi
7430
7431 $rm -f try try.*
7432
7433 fi # d_longdbl
7434
7435 case "$sPRIfldbl" in
7436 '')     d_PRIfldbl="$undef"; d_PRIgldbl="$undef"; d_PRIeldbl="$undef"; 
7437         d_PRIFldbl="$undef"; d_PRIGldbl="$undef"; d_PRIEldbl="$undef"; 
7438         ;;
7439 *)      d_PRIfldbl="$define"; d_PRIgldbl="$define"; d_PRIeldbl="$define"; 
7440         d_PRIFldbl="$define"; d_PRIGldbl="$define"; d_PRIEldbl="$define"; 
7441         ;;
7442 esac
7443
7444 : Initialize h_fcntl
7445 h_fcntl=false
7446
7447 : Initialize h_sysfile
7448 h_sysfile=false
7449
7450 : access call always available on UNIX
7451 set access d_access
7452 eval $inlibc
7453
7454 : locate the flags for 'access()'
7455 case "$d_access" in
7456 "$define")
7457         echo " "
7458         $cat >access.c <<'EOCP'
7459 #include <sys/types.h>
7460 #ifdef I_FCNTL
7461 #include <fcntl.h>
7462 #endif
7463 #ifdef I_SYS_FILE
7464 #include <sys/file.h>
7465 #endif
7466 #ifdef I_UNISTD
7467 #include <unistd.h>
7468 #endif
7469 int main() {
7470         exit(R_OK);
7471 }
7472 EOCP
7473         : check sys/file.h first, no particular reason here
7474         if $test `./findhdr sys/file.h` && \
7475                 $cc $cppflags -DI_SYS_FILE -o access access.c >/dev/null 2>&1 ; then
7476                 h_sysfile=true;
7477                 echo "<sys/file.h> defines the *_OK access constants." >&4
7478         elif $test `./findhdr fcntl.h` && \
7479                 $cc $cppflags -DI_FCNTL -o access access.c >/dev/null 2>&1 ; then
7480                 h_fcntl=true;
7481                 echo "<fcntl.h> defines the *_OK access constants." >&4
7482         elif $test `./findhdr unistd.h` && \
7483                 $cc $cppflags -DI_UNISTD -o access access.c >/dev/null 2>&1 ; then
7484                 echo "<unistd.h> defines the *_OK access constants." >&4
7485         else
7486                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
7487         fi
7488         ;;
7489 esac
7490 $rm -f access*
7491
7492 : see if accessx exists
7493 set accessx d_accessx
7494 eval $inlibc
7495
7496 : see if alarm exists
7497 set alarm d_alarm
7498 eval $inlibc
7499
7500 : see if atolf exists
7501 set atolf d_atolf
7502 eval $inlibc
7503
7504 : see if atoll exists
7505 set atoll d_atoll
7506 eval $inlibc
7507
7508 : Look for GNU-cc style attribute checking
7509 echo " "
7510 echo "Checking whether your compiler can handle __attribute__ ..." >&4
7511 $cat >attrib.c <<'EOCP'
7512 #include <stdio.h>
7513 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
7514 EOCP
7515 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
7516         if $contains 'warning' attrib.out >/dev/null 2>&1; then
7517                 echo "Your C compiler doesn't fully support __attribute__."
7518                 val="$undef"
7519         else
7520                 echo "Your C compiler supports __attribute__."
7521                 val="$define"
7522         fi
7523 else
7524         echo "Your C compiler doesn't seem to understand __attribute__ at all."
7525         val="$undef"
7526 fi
7527 set d_attribut
7528 eval $setvar
7529 $rm -f attrib*
7530
7531 : see if bcmp exists
7532 set bcmp d_bcmp
7533 eval $inlibc
7534
7535 : see if bcopy exists
7536 set bcopy d_bcopy
7537 eval $inlibc
7538
7539 : see if this is a unistd.h system
7540 set unistd.h i_unistd
7541 eval $inhdr
7542
7543 : see if getpgrp exists
7544 set getpgrp d_getpgrp
7545 eval $inlibc
7546
7547 case "$d_getpgrp" in
7548 "$define")
7549         echo " "
7550         echo "Checking to see which flavor of getpgrp is in use..."
7551         $cat >set.c <<EOP
7552 #$i_unistd I_UNISTD
7553 #include <sys/types.h>
7554 #ifdef I_UNISTD
7555 #  include <unistd.h>
7556 #endif
7557 int main()
7558 {
7559         if (getuid() == 0) {
7560                 printf("(I see you are running Configure as super-user...)\n");
7561                 setuid(1);
7562         }
7563 #ifdef TRY_BSD_PGRP
7564         if (getpgrp(1) == 0)
7565                 exit(0);
7566 #else
7567         if (getpgrp() > 0)
7568                 exit(0);
7569 #endif
7570         exit(1);
7571 }
7572 EOP
7573         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7574                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
7575                 val="$define"
7576         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7577                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
7578                 val="$undef"
7579         else
7580                 echo "I can't seem to compile and run the test program."
7581                 if ./usg; then
7582                         xxx="a USG one, i.e. you use getpgrp()."
7583                 else
7584                         # SVR4 systems can appear rather BSD-ish.
7585                         case "$i_unistd" in
7586                         $undef)
7587                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
7588                                 val="$define"
7589                                 ;;
7590                         $define)
7591                                 xxx="probably a USG one, i.e. you use getpgrp()."
7592                                 val="$undef"
7593                                 ;;
7594                         esac
7595                 fi
7596                 echo "Assuming your getpgrp is $xxx" >&4
7597         fi
7598         ;;
7599 *) val="$undef";;
7600 esac
7601 set d_bsdgetpgrp
7602 eval $setvar
7603 $rm -f set set.c
7604
7605 : see if setpgrp exists
7606 set setpgrp d_setpgrp
7607 eval $inlibc
7608
7609 case "$d_setpgrp" in
7610 "$define")
7611         echo " "
7612         echo "Checking to see which flavor of setpgrp is in use..."
7613         $cat >set.c <<EOP
7614 #$i_unistd I_UNISTD
7615 #include <sys/types.h>
7616 #ifdef I_UNISTD
7617 #  include <unistd.h>
7618 #endif
7619 int main()
7620 {
7621         if (getuid() == 0) {
7622                 printf("(I see you are running Configure as super-user...)\n");
7623                 setuid(1);
7624         }
7625 #ifdef TRY_BSD_PGRP
7626         if (-1 == setpgrp(1, 1))
7627                 exit(0);
7628 #else
7629         if (setpgrp() != -1)
7630                 exit(0);
7631 #endif
7632         exit(1);
7633 }
7634 EOP
7635         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7636                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
7637                 val="$define"
7638         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
7639                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
7640                 val="$undef"
7641         else
7642                 echo "(I can't seem to compile and run the test program.)"
7643                 if ./usg; then
7644                         xxx="a USG one, i.e. you use setpgrp()."
7645                 else
7646                         # SVR4 systems can appear rather BSD-ish.
7647                         case "$i_unistd" in
7648                         $undef)
7649                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
7650                                 val="$define"
7651                                 ;;
7652                         $define)
7653                                 xxx="probably a USG one, i.e. you use setpgrp()."
7654                                 val="$undef"
7655                                 ;;
7656                         esac
7657                 fi
7658                 echo "Assuming your setpgrp is $xxx" >&4
7659         fi
7660         ;;
7661 *) val="$undef";;
7662 esac
7663 set d_bsdsetpgrp
7664 eval $setvar
7665 $rm -f set set.c
7666 : see if bzero exists
7667 set bzero d_bzero
7668 eval $inlibc
7669
7670 : see if signal is declared as pointer to function returning int or void
7671 echo " "
7672 xxx=`./findhdr signal.h`
7673 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
7674 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
7675         echo "You have int (*signal())() instead of void." >&4
7676         val="$undef"
7677 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
7678         echo "You have void (*signal())()." >&4
7679         val="$define"
7680 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
7681         echo "You have int (*signal())() instead of void." >&4
7682         val="$undef"
7683 elif $contains 'void.*\*.*sig' $$.tmp >/dev/null 2>&1 ; then
7684         echo "You have void (*signal())()." >&4
7685         val="$define"
7686 else
7687         case "$d_voidsig" in
7688         '')
7689         echo "I can't determine whether signal handler returns void or int..." >&4
7690                 dflt=void
7691                 rp="What type does your signal handler return?"
7692                 . ./myread
7693                 case "$ans" in
7694                 v*) val="$define";;
7695                 *) val="$undef";;
7696                 esac;;
7697         "$define")
7698                 echo "As you already told me, signal handler returns void." >&4
7699                 val="$define"
7700                 ;;
7701         *)      echo "As you already told me, signal handler returns int." >&4
7702                 val="$undef"
7703                 ;;
7704         esac
7705 fi
7706 set d_voidsig
7707 eval $setvar
7708 case "$d_voidsig" in
7709 "$define") signal_t="void";;
7710 *) signal_t="int";;
7711 esac
7712 $rm -f $$.tmp
7713
7714 : check for ability to cast large floats to 32-bit ints.
7715 echo " "
7716 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
7717 if $test "$intsize" -ge 4; then
7718         xxx=int
7719 else
7720         xxx=long
7721 fi
7722 $cat >try.c <<EOCP
7723 #include <stdio.h>
7724 #include <sys/types.h>
7725 #include <signal.h>
7726 $signal_t blech(s) int s; { exit(3); }
7727 int main()
7728 {
7729         $xxx i32;
7730         double f, g;
7731         int result = 0;
7732         char str[16];
7733         signal(SIGFPE, blech);
7734
7735         /* Don't let compiler optimize the test away.  Store the number 
7736            in a writable string for gcc to pass to sscanf under HP/UX.
7737         */
7738         sprintf(str, "2147483647");
7739         sscanf(str, "%lf", &f); /* f = (double) 0x7fffffff; */
7740         g = 10 * f;
7741         i32  = ($xxx) g;
7742
7743         /* x86 processors will probably give 0x8000 0000, which is a
7744        sign change.  We don't want that.  We want to mimic SPARC
7745            behavior here, which is to preserve the sign and give
7746            back 0x7fff ffff.
7747         */
7748         if (i32 != ($xxx) f)
7749                 result |= 1;
7750         exit(result);
7751 }
7752 EOCP
7753 set try
7754 if eval $compile_ok; then
7755         ./try
7756         yyy=$?
7757 else
7758         echo "(I can't seem to compile the test program--assuming it can't)"
7759         yyy=1
7760 fi
7761 case "$yyy" in
7762 0)      val="$define"
7763         echo "Yup, it can."
7764         ;;
7765 *)      val="$undef"
7766         echo "Nope, it can't."
7767         ;;
7768 esac
7769 set d_casti32
7770 eval $setvar
7771 $rm -f try try.*
7772
7773 : check for ability to cast negative floats to unsigned
7774 echo " "
7775 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
7776 $cat >try.c <<EOCP
7777 #include <stdio.h>
7778 #include <sys/types.h>
7779 #include <signal.h>
7780 $signal_t blech(s) int s; { exit(7); }
7781 $signal_t blech_in_list(s) int s; { exit(4); }
7782 unsigned long dummy_long(p) unsigned long p; { return p; }
7783 unsigned int dummy_int(p) unsigned int p; { return p; }
7784 unsigned short dummy_short(p) unsigned short p; { return p; }
7785 int main()
7786 {
7787         double f;
7788         unsigned long along;
7789         unsigned int aint;
7790         unsigned short ashort;
7791         int result = 0;
7792         char str[16];
7793         
7794         /* Frustrate gcc-2.7.2's optimizer which failed this test with
7795            a direct f = -123. assignment.  gcc-2.8.0 reportedly
7796            optimized the whole file away
7797         */
7798         /* Store the number in a writable string for gcc to pass to 
7799            sscanf under HP/UX.
7800         */
7801         sprintf(str, "-123");
7802         sscanf(str, "%lf", &f);  /* f = -123.; */
7803
7804         signal(SIGFPE, blech);
7805         along = (unsigned long)f;
7806         aint = (unsigned int)f;
7807         ashort = (unsigned short)f;
7808         if (along != (unsigned long)-123)
7809                 result |= 1;
7810         if (aint != (unsigned int)-123)
7811                 result |= 1;
7812         if (ashort != (unsigned short)-123)
7813                 result |= 1;
7814         sprintf(str, "1073741824.");
7815         sscanf(str, "%lf", &f); /* f = (double)0x40000000; */
7816         f = f + f;
7817         along = 0;
7818         along = (unsigned long)f;
7819         if (along != 0x80000000)
7820                 result |= 2;
7821         f -= 1.;
7822         along = 0;
7823         along = (unsigned long)f;
7824         if (along != 0x7fffffff)
7825                 result |= 1;
7826         f += 2.;
7827         along = 0;
7828         along = (unsigned long)f;
7829         if (along != 0x80000001)
7830                 result |= 2;
7831         if (result)
7832                 exit(result);
7833         signal(SIGFPE, blech_in_list);
7834         sprintf(str, "123.");
7835         sscanf(str, "%lf", &f);  /* f = 123.; */
7836         along = dummy_long((unsigned long)f);
7837         aint = dummy_int((unsigned int)f);
7838         ashort = dummy_short((unsigned short)f);
7839         if (along != (unsigned long)123)
7840                 result |= 4;
7841         if (aint != (unsigned int)123)
7842                 result |= 4;
7843         if (ashort != (unsigned short)123)
7844                 result |= 4;
7845         exit(result);
7846
7847 }
7848 EOCP
7849 set try
7850 if eval $compile_ok; then
7851         ./try
7852         castflags=$?
7853 else
7854         echo "(I can't seem to compile the test program--assuming it can't)"
7855         castflags=7
7856 fi
7857 case "$castflags" in
7858 0)      val="$define"
7859         echo "Yup, it can."
7860         ;;
7861 *)      val="$undef"
7862         echo "Nope, it can't."
7863         ;;
7864 esac
7865 set d_castneg
7866 eval $setvar
7867 $rm -f try.*
7868
7869 : see if vprintf exists
7870 echo " "
7871 if set vprintf val -f d_vprintf; eval $csym; $val; then
7872         echo 'vprintf() found.' >&4
7873         val="$define"
7874         $cat >vprintf.c <<'EOF'
7875 #include <varargs.h>
7876
7877 int main() { xxx("foo"); }
7878
7879 xxx(va_alist)
7880 va_dcl
7881 {
7882         va_list args;
7883         char buf[10];
7884
7885         va_start(args);
7886         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
7887 }
7888 EOF
7889         set vprintf
7890         if eval $compile && ./vprintf; then
7891                 echo "Your vsprintf() returns (int)." >&4
7892                 val2="$undef"
7893         else
7894                 echo "Your vsprintf() returns (char*)." >&4
7895                 val2="$define"
7896         fi
7897 else
7898         echo 'vprintf() NOT found.' >&4
7899                 val="$undef"
7900                 val2="$undef"
7901 fi
7902 set d_vprintf
7903 eval $setvar
7904 val=$val2
7905 set d_charvspr
7906 eval $setvar
7907
7908 : see if chown exists
7909 set chown d_chown
7910 eval $inlibc
7911
7912 : see if chroot exists
7913 set chroot d_chroot
7914 eval $inlibc
7915
7916 : see if chsize exists
7917 set chsize d_chsize
7918 eval $inlibc
7919
7920 : check for const keyword
7921 echo " "
7922 echo 'Checking to see if your C compiler knows about "const"...' >&4
7923 $cat >const.c <<'EOCP'
7924 typedef struct spug { int drokk; } spug;
7925 int main()
7926 {
7927         const char *foo;
7928         const spug y;
7929 }
7930 EOCP
7931 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
7932         val="$define"
7933         echo "Yup, it does."
7934 else
7935         val="$undef"
7936         echo "Nope, it doesn't."
7937 fi
7938 set d_const
7939 eval $setvar
7940
7941 : see if crypt exists
7942 echo " "
7943 if set crypt val -f d_crypt; eval $csym; $val; then
7944         echo 'crypt() found.' >&4
7945         val="$define"
7946         cryptlib=''
7947 else
7948         cryptlib=`./loc Slibcrypt$_a "" $xlibpth`
7949         if $test -z "$cryptlib"; then
7950                 cryptlib=`./loc Mlibcrypt$_a "" $xlibpth`
7951         else
7952                 cryptlib=-lcrypt
7953         fi
7954         if $test -z "$cryptlib"; then
7955                 cryptlib=`./loc Llibcrypt$_a "" $xlibpth`
7956         else
7957                 cryptlib=-lcrypt
7958         fi
7959         if $test -z "$cryptlib"; then
7960                 cryptlib=`./loc libcrypt$_a "" $libpth`
7961         else
7962                 cryptlib=-lcrypt
7963         fi
7964         if $test -z "$cryptlib"; then
7965                 echo 'crypt() NOT found.' >&4
7966                 val="$undef"
7967         else
7968                 val="$define"
7969         fi
7970 fi
7971 set d_crypt
7972 eval $setvar
7973
7974 : get csh whereabouts
7975 case "$csh" in
7976 'csh') val="$undef" ;;
7977 *) val="$define" ;;
7978 esac
7979 set d_csh
7980 eval $setvar
7981 : Respect a hint or command line value for full_csh.
7982 case "$full_csh" in
7983 '') full_csh=$csh ;;
7984 esac
7985
7986 : see if cuserid exists
7987 set cuserid d_cuserid
7988 eval $inlibc
7989
7990 : see if this is a limits.h system
7991 set limits.h i_limits
7992 eval $inhdr
7993
7994 : see if this is a float.h system
7995 set float.h i_float
7996 eval $inhdr
7997
7998 : See if number of significant digits in a double precision number is known
7999 echo " "
8000 $cat >dbl_dig.c <<EOM
8001 #$i_limits I_LIMITS
8002 #$i_float I_FLOAT
8003 #ifdef I_LIMITS
8004 #include <limits.h>
8005 #endif
8006 #ifdef I_FLOAT
8007 #include <float.h>
8008 #endif
8009 #ifdef DBL_DIG
8010 printf("Contains DBL_DIG");
8011 #endif
8012 EOM
8013 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
8014 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
8015         echo "DBL_DIG found." >&4
8016         val="$define"
8017 else
8018         echo "DBL_DIG NOT found." >&4
8019         val="$undef"
8020 fi
8021 $rm -f dbl_dig.?
8022 set d_dbl_dig
8023 eval $setvar
8024
8025 : see if difftime exists
8026 set difftime d_difftime
8027 eval $inlibc
8028
8029 : see if this is a dirent system
8030 echo " "
8031 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
8032         val="$define"
8033         echo "<dirent.h> found." >&4
8034 else
8035         val="$undef"
8036         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
8037                 echo "<sys/dir.h> found." >&4
8038                 echo " "
8039         else
8040                 xinc=`./findhdr sys/ndir.h`
8041         fi
8042         echo "<dirent.h> NOT found." >&4
8043 fi
8044 set i_dirent
8045 eval $setvar
8046
8047 : Look for type of directory structure.
8048 echo " "
8049 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8050
8051 case "$direntrytype" in
8052 ''|' ')
8053         case "$i_dirent" in
8054         $define) guess1='struct dirent' ;;
8055         *) guess1='struct direct'  ;;
8056         esac
8057         ;;
8058 *)      guess1="$direntrytype"
8059         ;;
8060 esac
8061
8062 case "$guess1" in
8063 'struct dirent') guess2='struct direct' ;;
8064 *) guess2='struct dirent' ;;
8065 esac
8066                 
8067 if $contains "$guess1" try.c >/dev/null 2>&1; then
8068         direntrytype="$guess1"
8069         echo "Your directory entries are $direntrytype." >&4
8070 elif $contains "$guess2" try.c >/dev/null 2>&1; then
8071         direntrytype="$guess2"
8072         echo "Your directory entries seem to be $direntrytype." >&4
8073 else
8074         echo "I don't recognize your system's directory entries." >&4
8075         rp="What type is used for directory entries on this system?"
8076         dflt="$guess1"
8077         . ./myread
8078         direntrytype="$ans"
8079 fi
8080 $rm -f try.c
8081
8082
8083 : see if the directory entry stores field length
8084 echo " "
8085 $cppstdin $cppflags $cppminus < "$xinc" > try.c
8086 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
8087         echo "Good, your directory entry keeps length information in d_namlen." >&4
8088         val="$define"
8089 else
8090         echo "Your directory entry does not know about the d_namlen field." >&4
8091         val="$undef"
8092 fi
8093 set d_dirnamlen
8094 eval $setvar
8095 $rm -f try.c
8096
8097 : see if dlerror exists
8098 xxx_runnm="$runnm"
8099 runnm=false
8100 set dlerror d_dlerror
8101 eval $inlibc
8102 runnm="$xxx_runnm"
8103
8104 : see if dlfcn is available
8105 set dlfcn.h i_dlfcn
8106 eval $inhdr
8107
8108 case "$usedl" in
8109 $define|y|true)
8110         $cat << EOM
8111
8112 On a few systems, the dynamically loaded modules that perl generates and uses
8113 will need a different extension than shared libs. The default will probably
8114 be appropriate.
8115
8116 EOM
8117         case "$dlext" in
8118         '')     dflt="$so" ;;
8119         *)      dflt="$dlext" ;;
8120         esac
8121         rp='What is the extension of dynamically loaded modules'
8122         . ./myread
8123         dlext="$ans"
8124         ;;
8125 *)
8126         dlext="none"
8127         ;;
8128 esac
8129
8130 : Check if dlsym need a leading underscore
8131 echo " "
8132 val="$undef"
8133
8134 case "$dlsrc" in
8135 dl_dlopen.xs)
8136         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
8137         $cat >dyna.c <<'EOM'
8138 fred () { }
8139 EOM
8140
8141 $cat >fred.c<<EOM
8142
8143 #include <stdio.h>
8144 #$i_dlfcn I_DLFCN
8145 #ifdef I_DLFCN
8146 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
8147 #else
8148 #include <sys/types.h>
8149 #include <nlist.h>
8150 #include <link.h>
8151 #endif
8152
8153 extern int fred() ;
8154
8155 int main()
8156 {
8157     void * handle ;
8158     void * symbol ;
8159 #ifndef RTLD_LAZY
8160     int mode = 1 ;
8161 #else
8162     int mode = RTLD_LAZY ;
8163 #endif
8164     handle = dlopen("./dyna.$dlext", mode) ;
8165     if (handle == NULL) {
8166         printf ("1\n") ;
8167         fflush (stdout) ;
8168         exit(0);
8169     }
8170     symbol = dlsym(handle, "fred") ;
8171     if (symbol == NULL) {
8172         /* try putting a leading underscore */
8173         symbol = dlsym(handle, "_fred") ;
8174         if (symbol == NULL) {
8175             printf ("2\n") ;
8176             fflush (stdout) ;
8177             exit(0);
8178         }
8179         printf ("3\n") ;
8180     }
8181     else
8182         printf ("4\n") ;
8183     fflush (stdout) ;
8184     exit(0);
8185 }
8186 EOM
8187         : Call the object file tmp-dyna.o in case dlext=o.
8188         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
8189                 mv dyna${_o} tmp-dyna${_o} > /dev/null 2>&1 && 
8190                 $ld $lddlflags -o dyna.$dlext tmp-dyna${_o} > /dev/null 2>&1 && 
8191                 $cc $ccflags -o fred $ldflags $cccdlflags $ccdlflags fred.c $libs > /dev/null 2>&1; then
8192                 xxx=`./fred`
8193                 case $xxx in
8194                 1)      echo "Test program failed using dlopen." >&4
8195                         echo "Perhaps you should not use dynamic loading." >&4;;
8196                 2)      echo "Test program failed using dlsym." >&4
8197                         echo "Perhaps you should not use dynamic loading." >&4;;
8198                 3)      echo "dlsym needs a leading underscore" >&4
8199                         val="$define" ;;
8200                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
8201                 esac
8202         else
8203                 echo "I can't compile and run the test program." >&4
8204                 echo "I'm guessing that dlsym doesn't need a leading underscore." >&4
8205         fi
8206         ;;
8207 esac
8208                 
8209 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
8210
8211 set d_dlsymun
8212 eval $setvar
8213
8214 hasproto='varname=$1; func=$2; shift; shift;
8215 while $test $# -ge 2; do
8216         case "$1" in
8217         $define) echo "#include <$2>";;
8218         esac ;
8219     shift 2;
8220 done > try.c;
8221 $cppstdin $cppflags $cppminus < try.c > tryout.c 2>/dev/null;
8222 if $contains "$func.*(" tryout.c >/dev/null 2>&1; then
8223         echo "$func() prototype found.";
8224         val="$define";
8225 else
8226         echo "$func() prototype NOT found.";
8227         val="$undef";
8228 fi;
8229 set $varname;
8230 eval $setvar;
8231 $rm -f try.c tryout.c'
8232
8233 : see if prototype for drand48 is available
8234 echo " "
8235 set d_drand48proto drand48 $i_stdlib stdlib.h $i_unistd unistd.h
8236 eval $hasproto
8237
8238 : see if dup2 exists
8239 set dup2 d_dup2
8240 eval $inlibc
8241
8242 : see if eaccess exists
8243 set eaccess d_eaccess
8244 eval $inlibc
8245
8246 : see if endgrent exists
8247 set endgrent d_endgrent
8248 eval $inlibc
8249
8250 : see if endhostent exists
8251 set endhostent d_endhent
8252 eval $inlibc
8253
8254 : see if endnetent exists
8255 set endnetent d_endnent
8256 eval $inlibc
8257
8258 : see if endprotoent exists
8259 set endprotoent d_endpent
8260 eval $inlibc
8261
8262 : see if endpwent exists
8263 set endpwent d_endpwent
8264 eval $inlibc
8265
8266 : see if endservent exists
8267 set endservent d_endsent
8268 eval $inlibc
8269
8270 : see if endspent exists
8271 set endspent d_endspent
8272 eval $inlibc
8273
8274 : Locate the flags for 'open()'
8275 echo " "
8276 $cat >open3.c <<'EOCP'
8277 #include <sys/types.h>
8278 #ifdef I_FCNTL
8279 #include <fcntl.h>
8280 #endif
8281 #ifdef I_SYS_FILE
8282 #include <sys/file.h>
8283 #endif
8284 int main() {
8285         if(O_RDONLY);
8286 #ifdef O_TRUNC
8287         exit(0);
8288 #else
8289         exit(1);
8290 #endif
8291 }
8292 EOCP
8293 : check sys/file.h first to get FREAD on Sun
8294 if $test `./findhdr sys/file.h` && \
8295                 set open3 -DI_SYS_FILE && eval $compile; then
8296         h_sysfile=true;
8297         echo "<sys/file.h> defines the O_* constants..." >&4
8298         if ./open3; then
8299                 echo "and you have the 3 argument form of open()." >&4
8300                 val="$define"
8301         else
8302                 echo "but not the 3 argument form of open().  Oh, well." >&4
8303                 val="$undef"
8304         fi
8305 elif $test `./findhdr fcntl.h` && \
8306                 set open3 -DI_FCNTL && eval $compile; then
8307         h_fcntl=true;
8308         echo "<fcntl.h> defines the O_* constants..." >&4
8309         if ./open3; then
8310                 echo "and you have the 3 argument form of open()." >&4
8311                 val="$define"
8312         else
8313                 echo "but not the 3 argument form of open().  Oh, well." >&4
8314                 val="$undef"
8315         fi
8316 else
8317         val="$undef"
8318         echo "I can't find the O_* constant definitions!  You got problems." >&4
8319 fi
8320 set d_open3
8321 eval $setvar
8322 $rm -f open3*
8323
8324 : see which of string.h or strings.h is needed
8325 echo " "
8326 strings=`./findhdr string.h`
8327 if $test "$strings" && $test -r "$strings"; then
8328         echo "Using <string.h> instead of <strings.h>." >&4
8329         val="$define"
8330 else
8331         val="$undef"
8332         strings=`./findhdr strings.h`
8333         if $test "$strings" && $test -r "$strings"; then
8334                 echo "Using <strings.h> instead of <string.h>." >&4
8335         else
8336                 echo "No string header found -- You'll surely have problems." >&4
8337         fi
8338 fi
8339 set i_string
8340 eval $setvar
8341 case "$i_string" in
8342 "$undef") strings=`./findhdr strings.h`;;
8343 *)        strings=`./findhdr string.h`;;
8344 esac
8345
8346 : check for non-blocking I/O stuff
8347 case "$h_sysfile" in
8348 true) echo "#include <sys/file.h>" > head.c;;
8349 *)
8350         case "$h_fcntl" in
8351         true) echo "#include <fcntl.h>" > head.c;;
8352         *) echo "#include <sys/fcntl.h>" > head.c;;
8353         esac
8354         ;;
8355 esac
8356 echo " "
8357 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
8358 case "$o_nonblock" in
8359 '')
8360         $cat head.c > try.c
8361         $cat >>try.c <<'EOCP'
8362 #include <stdio.h>
8363 int main() {
8364 #ifdef O_NONBLOCK
8365         printf("O_NONBLOCK\n");
8366         exit(0);
8367 #endif
8368 #ifdef O_NDELAY
8369         printf("O_NDELAY\n");
8370         exit(0);
8371 #endif
8372 #ifdef FNDELAY
8373         printf("FNDELAY\n");
8374         exit(0);
8375 #endif
8376         exit(0);
8377 }
8378 EOCP
8379         set try
8380         if eval $compile_ok; then
8381                 o_nonblock=`./try`
8382                 case "$o_nonblock" in
8383                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
8384                 *) echo "Seems like we can use $o_nonblock.";;
8385                 esac
8386         else
8387                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
8388         fi
8389         ;;
8390 *) echo "Using $hint value $o_nonblock.";;
8391 esac
8392 $rm -f try try.* .out core
8393
8394 echo " "
8395 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
8396 case "$eagain" in
8397 '')
8398         $cat head.c > try.c
8399         $cat >>try.c <<EOCP
8400 #include <errno.h>
8401 #include <sys/types.h>
8402 #include <signal.h>
8403 #include <stdio.h> 
8404 #define MY_O_NONBLOCK $o_nonblock
8405 #ifndef errno  /* XXX need better Configure test */
8406 extern int errno;
8407 #endif
8408 #$i_unistd I_UNISTD
8409 #ifdef I_UNISTD
8410 #include <unistd.h>
8411 #endif
8412 #ifdef $i_string
8413 #include <string.h>
8414 #else
8415 #include <strings.h>
8416 #endif
8417 $signal_t blech(x) int x; { exit(3); }
8418 EOCP
8419         $cat >> try.c <<'EOCP'
8420 int main()
8421 {
8422         int pd[2];
8423         int pu[2];
8424         char buf[1];
8425         char string[100];
8426
8427         pipe(pd);       /* Down: child -> parent */
8428         pipe(pu);       /* Up: parent -> child */
8429         if (0 != fork()) {
8430                 int ret;
8431                 close(pd[1]);   /* Parent reads from pd[0] */
8432                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
8433                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
8434                         exit(1);
8435                 signal(SIGALRM, blech);
8436                 alarm(5);
8437                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
8438                         exit(2);
8439                 sprintf(string, "%d\n", ret);
8440                 write(2, string, strlen(string));
8441                 alarm(0);
8442 #ifdef EAGAIN
8443                 if (errno == EAGAIN) {
8444                         printf("EAGAIN\n");
8445                         goto ok;
8446                 }
8447 #endif
8448 #ifdef EWOULDBLOCK
8449                 if (errno == EWOULDBLOCK)
8450                         printf("EWOULDBLOCK\n");
8451 #endif
8452         ok:
8453                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
8454                 sleep(2);                               /* Give it time to close our pipe */
8455                 alarm(5);
8456                 ret = read(pd[0], buf, 1);      /* Should read EOF */
8457                 alarm(0);
8458                 sprintf(string, "%d\n", ret);
8459                 write(3, string, strlen(string));
8460                 exit(0);
8461         }
8462
8463         close(pd[0]);                   /* We write to pd[1] */
8464         close(pu[1]);                   /* We read from pu[0] */
8465         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
8466         close(pd[1]);                   /* Pipe pd is now fully closed! */
8467         exit(0);                                /* Bye bye, thank you for playing! */
8468 }
8469 EOCP
8470         set try
8471         if eval $compile_ok; then
8472                 echo "$startsh" >mtry
8473                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
8474                 chmod +x mtry
8475                 ./mtry >/dev/null 2>&1
8476                 case $? in
8477                 0) eagain=`$cat try.out`;;
8478                 1) echo "Could not perform non-blocking setting!";;
8479                 2) echo "I did a successful read() for something that was not there!";;
8480                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
8481                 *) echo "Something terribly wrong happened during testing.";;
8482                 esac
8483                 rd_nodata=`$cat try.ret`
8484                 echo "A read() system call with no data present returns $rd_nodata."
8485                 case "$rd_nodata" in
8486                 0|-1) ;;
8487                 *)
8488                         echo "(That's peculiar, fixing that to be -1.)"
8489                         rd_nodata=-1
8490                         ;;
8491                 esac
8492                 case "$eagain" in
8493                 '')
8494                         echo "Forcing errno EAGAIN on read() with no data available."
8495                         eagain=EAGAIN
8496                         ;;
8497                 *)
8498                         echo "Your read() sets errno to $eagain when no data is available."
8499                         ;;
8500                 esac
8501                 status=`$cat try.err`
8502                 case "$status" in
8503                 0) echo "And it correctly returns 0 to signal EOF.";;
8504                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
8505                 *) echo "However, your read() returns '$status' on EOF??";;
8506                 esac
8507                 val="$define"
8508                 if test "$status" = "$rd_nodata"; then
8509                         echo "WARNING: you can't distinguish between EOF and no data!"
8510                         val="$undef"
8511                 fi
8512         else
8513                 echo "I can't compile the test program--assuming errno EAGAIN will do."
8514                 eagain=EAGAIN
8515         fi
8516         set d_eofnblk
8517         eval $setvar
8518         ;;
8519 *)
8520         echo "Using $hint value $eagain."
8521         echo "Your read() returns $rd_nodata when no data is present."
8522         case "$d_eofnblk" in
8523         "$define") echo "And you can see EOF because read() returns 0.";;
8524         "$undef") echo "But you can't see EOF status from read() returned value.";;
8525         *)
8526                 echo "(Assuming you can't see EOF status from read anyway.)"
8527                 d_eofnblk=$undef
8528                 ;;
8529         esac
8530         ;;
8531 esac
8532 $rm -f try try.* .out core head.c mtry
8533
8534 : see if fchmod exists
8535 set fchmod d_fchmod
8536 eval $inlibc
8537
8538 : see if fchown exists
8539 set fchown d_fchown
8540 eval $inlibc
8541
8542 : see if this is an fcntl system
8543 set fcntl d_fcntl
8544 eval $inlibc
8545
8546 hasfield='varname=$1; struct=$2; field=$3; shift; shift; shift;
8547 while $test $# -ge 2; do
8548         case "$1" in
8549         $define) echo "#include <$2>";;
8550         esac ;
8551     shift 2;
8552 done > try.c;
8553 echo "int main () { struct $struct foo; char* bar; bar = (char*)foo.$field; }" >> try.c;
8554 set try;
8555 if eval $compile; then
8556         val="$define";
8557 else
8558         val="$undef";
8559 fi;
8560 set $varname;
8561 eval $setvar;
8562 $rm -f try.c try.o'
8563
8564 socketlib=''
8565 sockethdr=''
8566 : see whether socket exists
8567 echo " "
8568 $echo $n "Hmm... $c" >&4
8569 if set socket val -f d_socket; eval $csym; $val; then
8570         echo "Looks like you have Berkeley networking support." >&4
8571         d_socket="$define"
8572         if set setsockopt val -f; eval $csym; $val; then
8573                 d_oldsock="$undef"
8574         else
8575                 echo "...but it uses the old BSD 4.1c interface, rather than 4.2." >&4
8576                 d_oldsock="$define"
8577         fi
8578 else
8579         if $contains socklib libc.list >/dev/null 2>&1; then
8580                 echo "Looks like you have Berkeley networking support." >&4
8581                 d_socket="$define"
8582                 : we will have to assume that it supports the 4.2 BSD interface
8583                 d_oldsock="$undef"
8584         else
8585                 echo "You don't have Berkeley networking in libc$_a..." >&4
8586                 if test "X$d_socket" = "X$define"; then
8587                    echo "...but you seem to believe that you have sockets." >&4
8588                 else
8589                         for net in net socket
8590                         do
8591                                 if test -f /usr/lib/lib$net$_a; then
8592                                         ( ($nm $nm_opt /usr/lib/lib$net$_a | eval $nm_extract) ||  \
8593                                         $ar t /usr/lib/lib$net$_a) 2>/dev/null >> libc.list
8594                                         if $contains socket libc.list >/dev/null 2>&1; then
8595                                                 d_socket="$define"
8596                                                 socketlib="-l$net"
8597                                                 case "$net" in
8598                                                 net)
8599                                                         echo "...but the Wollongong group seems to have hacked it in." >&4
8600                                                         sockethdr="-I/usr/netinclude"
8601                                                         ;;
8602                                                 esac
8603                                                 echo "Found Berkeley sockets interface in lib$net." >& 4 
8604                                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
8605                                                         d_oldsock="$undef"
8606                                                 else
8607                                                         echo "...using the old BSD 4.1c interface, rather than 4.2." >&4
8608                                                         d_oldsock="$define"
8609                                                 fi
8610                                                 break
8611                                         fi
8612                                 fi
8613                         done
8614                         if test "X$d_socket" != "X$define"; then
8615                            echo "or anywhere else I see." >&4
8616                            d_socket="$undef"
8617                            d_oldsock="$undef"
8618                         fi
8619                 fi
8620         fi
8621 fi
8622
8623 : see if socketpair exists
8624 set socketpair d_sockpair
8625 eval $inlibc
8626
8627
8628 echo " "
8629 echo "Checking the availability of certain socket constants..." >& 4
8630 for ENUM in MSG_CTRUNC MSG_DONTROUTE MSG_OOB MSG_PEEK MSG_PROXY SCM_RIGHTS; do
8631         enum=`$echo $ENUM|./tr '[A-Z]' '[a-z]'`
8632         $cat >try.c <<EOF
8633 #include <sys/types.h>
8634 #include <sys/socket.h>
8635 int main() {
8636     int i = $ENUM;
8637 }
8638 EOF
8639         val="$undef"
8640         set try; if eval $compile; then
8641                 val="$define"
8642         fi
8643         set d_${enum}; eval $setvar
8644         $rm -f try.c try
8645 done
8646
8647 : see if sys/select.h has to be included
8648 set sys/select.h i_sysselct
8649 eval $inhdr
8650
8651 : see if we should include time.h, sys/time.h, or both
8652 echo " "
8653 if test "X$timeincl" = X; then
8654         echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8655         $echo $n "I'm now running the test program...$c"
8656         $cat >try.c <<'EOCP'
8657 #include <sys/types.h>
8658 #ifdef I_TIME
8659 #include <time.h>
8660 #endif
8661 #ifdef I_SYSTIME
8662 #ifdef SYSTIMEKERNEL
8663 #define KERNEL
8664 #endif
8665 #include <sys/time.h>
8666 #endif
8667 #ifdef I_SYSSELECT
8668 #include <sys/select.h>
8669 #endif
8670 int main()
8671 {
8672         struct tm foo;
8673 #ifdef S_TIMEVAL
8674         struct timeval bar;
8675 #endif
8676 #ifdef S_TIMEZONE
8677         struct timezone tzp;
8678 #endif
8679         if (foo.tm_sec == foo.tm_sec)
8680                 exit(0);
8681 #ifdef S_TIMEVAL
8682         if (bar.tv_sec == bar.tv_sec)
8683                 exit(0);
8684 #endif
8685         exit(1);
8686 }
8687 EOCP
8688         flags=''
8689         for s_timezone in '-DS_TIMEZONE' ''; do
8690         sysselect=''
8691         for s_timeval in '-DS_TIMEVAL' ''; do
8692         for i_systimek in '' '-DSYSTIMEKERNEL'; do
8693         for i_time in '' '-DI_TIME'; do
8694         for i_systime in '-DI_SYSTIME' ''; do
8695                 case "$flags" in
8696                 '') $echo $n ".$c"
8697                         set try $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone
8698                         if eval $compile; then
8699                                 set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8700                                 shift
8701                                 flags="$*"
8702                                 echo " "
8703                                 $echo $n "Succeeded with $flags$c"
8704                         fi
8705                         ;;
8706                 esac
8707         done
8708         done
8709         done
8710         done
8711         done
8712         timeincl=''
8713         echo " "
8714         case "$flags" in
8715         *SYSTIMEKERNEL*) i_systimek="$define"
8716                 timeincl=`./findhdr sys/time.h`
8717                 echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8718         *) i_systimek="$undef";;
8719         esac
8720         case "$flags" in
8721         *I_TIME*) i_time="$define"
8722                 timeincl=`./findhdr time.h`" $timeincl"
8723                 echo "We'll include <time.h>." >&4;;
8724         *) i_time="$undef";;
8725         esac
8726         case "$flags" in
8727         *I_SYSTIME*) i_systime="$define"
8728                 timeincl=`./findhdr sys/time.h`" $timeincl"
8729                 echo "We'll include <sys/time.h>." >&4;;
8730         *) i_systime="$undef";;
8731         esac
8732         $rm -f try.c try
8733 fi
8734
8735 : check for fd_set items
8736 $cat <<EOM
8737
8738 Checking to see how well your C compiler handles fd_set and friends ...
8739 EOM
8740 $cat >fd_set.c <<EOCP
8741 #$i_systime I_SYS_TIME
8742 #$i_sysselct I_SYS_SELECT
8743 #$d_socket HAS_SOCKET
8744 #include <sys/types.h>
8745 #ifdef HAS_SOCKET
8746 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8747 #endif
8748 #ifdef I_SYS_TIME
8749 #include <sys/time.h>
8750 #endif
8751 #ifdef I_SYS_SELECT
8752 #include <sys/select.h>
8753 #endif
8754 int main() {
8755         fd_set fds;
8756
8757 #ifdef TRYBITS
8758         if(fds.fds_bits);
8759 #endif
8760
8761 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8762         exit(0);
8763 #else
8764         exit(1);
8765 #endif
8766 }
8767 EOCP
8768 set fd_set -DTRYBITS
8769 if eval $compile; then
8770         d_fds_bits="$define"
8771         d_fd_set="$define"
8772         echo "Well, your system knows about the normal fd_set typedef..." >&4
8773         if ./fd_set; then
8774                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8775                 d_fd_macros="$define"
8776         else
8777                 $cat >&4 <<'EOM'
8778 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8779 EOM
8780                 d_fd_macros="$undef"
8781         fi
8782 else
8783         $cat <<'EOM'
8784 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8785 EOM
8786         set fd_set
8787         if eval $compile; then
8788                 d_fds_bits="$undef"
8789                 d_fd_set="$define"
8790                 echo "Well, your system has some sort of fd_set available..." >&4
8791                 if ./fd_set; then
8792                         echo "and you have the normal fd_set macros." >&4
8793                         d_fd_macros="$define"
8794                 else
8795                         $cat <<'EOM'
8796 but not the normal fd_set macros!  Gross!  More work for me...
8797 EOM
8798                         d_fd_macros="$undef"
8799                 fi
8800         else
8801         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8802                 d_fd_set="$undef"
8803                 d_fds_bits="$undef"
8804                 d_fd_macros="$undef"
8805         fi
8806 fi
8807 $rm -f fd_set*
8808
8809 : see if fgetpos exists
8810 set fgetpos d_fgetpos
8811 eval $inlibc
8812
8813 : see if flock exists
8814 set flock d_flock
8815 eval $inlibc
8816
8817 : see if fork exists
8818 set fork d_fork
8819 eval $inlibc
8820
8821 : see if pathconf exists
8822 set pathconf d_pathconf
8823 eval $inlibc
8824
8825 : see if fpathconf exists
8826 set fpathconf d_fpathconf
8827 eval $inlibc
8828
8829
8830 : check for off64_t
8831 echo " "
8832 echo "Checking to see if your system supports off64_t..." >&4
8833 $cat >try.c <<EOCP
8834 #include <sys/types.h>
8835 #include <unistd.h>
8836 int main() { off64_t x = 7; }'
8837 EOCP
8838 set try
8839 if eval $compile; then
8840         val="$define"
8841         echo "Yes, it does."
8842 else
8843         val="$undef"
8844         echo "No, it doesn't."
8845         case "$lseeksize" in
8846         8) echo "(Your off_t is 64 bits, so you could use that.)" ;;
8847         esac
8848 fi
8849 $rm -f try.* try
8850 set d_off64_t
8851 eval $setvar
8852
8853 : check for fpos64_t
8854 echo " "
8855 echo "Checking to see if your system supports fpos64_t..." >&4
8856 $cat >try.c <<EOCP
8857 #include <sys/stdio.h>
8858 int main() { fpos64_t x x = 7; }'
8859 EOCP
8860 set try
8861 if eval $compile; then
8862         val="$define"
8863         echo "Yes, it does."
8864 else
8865         val="$undef"
8866         echo "No, it doesn't."
8867         case "$fpossize" in
8868         8) echo "(Your fpos_t is 64 bits, so you could use that.)" ;;
8869         esac
8870 fi
8871 $rm -f try.* try
8872 set d_fpos64_t
8873 eval $setvar
8874
8875 hasstruct='varname=$1; struct=$2; shift; shift;
8876 while $test $# -ge 2; do
8877         case "$1" in
8878         $define) echo "#include <$2>";;
8879         esac ;
8880     shift 2;
8881 done > try.c;
8882 echo "int main () { struct $struct foo; }" >> try.c;
8883 set try;
8884 if eval $compile; then
8885         val="$define";
8886 else
8887         val="$undef";
8888 fi;
8889 set $varname;
8890 eval $setvar;
8891 $rm -f try.c try.o'
8892
8893 : see if this is a sys/param system
8894 set sys/param.h i_sysparam
8895 eval $inhdr
8896
8897 : see if this is a sys/mount.h system
8898 set sys/mount.h i_sysmount
8899 eval $inhdr
8900
8901 : see if sys/types.h has to be included
8902 set sys/types.h i_systypes
8903 eval $inhdr
8904
8905
8906 echo " "
8907 echo "Checking to see if your system supports struct fs_data..." >&4
8908 set d_fs_data_s fs_data $i_systypes sys/types.h $i_sysparam sys/param.h $i_sysmount sys/mount.h
8909 eval $hasstruct
8910 case "$d_fs_data_s" in
8911 "$define")      echo "Yes, it does."   ;;
8912 *)              echo "No, it doesn't." ;;
8913 esac
8914
8915 : see if fseeko exists
8916 set fseeko d_fseeko
8917 eval $inlibc
8918 case "$longsize" in
8919 8) echo "(Your long is 64 bits, so you could use fseek.)" ;;
8920 esac
8921
8922 : see if fsetpos exists
8923 set fsetpos d_fsetpos
8924 eval $inlibc
8925
8926
8927 : see if fstatfs exists
8928 set fstatfs d_fstatfs
8929 eval $inlibc
8930
8931
8932 : see if statvfs exists
8933 set statvfs d_statvfs
8934 eval $inlibc
8935
8936 : see if fstatvfs exists
8937 set fstatvfs d_fstatvfs
8938 eval $inlibc
8939
8940
8941 : see if ftello exists
8942 set ftello d_ftello
8943 eval $inlibc
8944 case "$longsize" in
8945 8) echo "(Your long is 64 bits, so you could use ftell.)" ;;
8946 esac
8947
8948 : see if getgrent exists
8949 set getgrent d_getgrent
8950 eval $inlibc
8951
8952 : see if gethostbyaddr exists
8953 set gethostbyaddr d_gethbyaddr
8954 eval $inlibc
8955
8956 : see if gethostbyname exists
8957 set gethostbyname d_gethbyname
8958 eval $inlibc
8959
8960 : see if gethostent exists
8961 set gethostent d_gethent
8962 eval $inlibc
8963
8964 : see how we will look up host name
8965 echo " "
8966 call=''
8967 if set gethostname val -f d_gethname; eval $csym; $val; then
8968         echo 'gethostname() found.' >&4
8969         d_gethname="$define"
8970         call=gethostname
8971 fi
8972 if set uname val -f d_uname; eval $csym; $val; then
8973         if ./xenix; then
8974                 $cat <<'EOM'
8975 uname() was found, but you're running xenix, and older versions of xenix
8976 have a broken uname(). If you don't really know whether your xenix is old
8977 enough to have a broken system call, use the default answer.
8978
8979 EOM
8980                 dflt=y
8981                 case "$d_uname" in
8982                 "$define") dflt=n;;
8983                 esac
8984                 rp='Is your uname() broken?'
8985                 . ./myread
8986                 case "$ans" in
8987                 n*) d_uname="$define"; call=uname;;
8988                 esac
8989         else
8990                 echo 'uname() found.' >&4
8991                 d_uname="$define"
8992                 case "$call" in
8993                 '') call=uname ;;
8994                 esac
8995         fi
8996 fi
8997 case "$d_gethname" in
8998 '') d_gethname="$undef";;
8999 esac
9000 case "$d_uname" in
9001 '') d_uname="$undef";;
9002 esac
9003 case "$d_uname$d_gethname" in
9004 *define*)
9005         dflt=n
9006         cat <<EOM
9007  
9008 Every now and then someone has a $call() that lies about the hostname
9009 but can't be fixed for political or economic reasons.  If you wish, I can
9010 pretend $call() isn't there and maybe compute hostname at run-time
9011 thanks to the '$phostname' command.
9012
9013 EOM
9014         rp="Shall I ignore $call() from now on?"
9015         . ./myread
9016         case "$ans" in
9017         y*) d_uname="$undef" d_gethname="$undef"; $echo $n "Okay...$c";;
9018         esac;;
9019 esac
9020 case "$phostname" in
9021 '') aphostname='';;
9022 *) case "$aphostname" in
9023         /*) ;;
9024         *) set X $phostname
9025                 shift
9026                 file=$1
9027                 shift
9028                 file=`./loc $file $file $pth`
9029                 aphostname=`echo $file $*`
9030                 ;;
9031         esac
9032         ;;
9033 esac
9034 case "$d_uname$d_gethname" in
9035 *define*) ;;
9036 *)
9037         case "$phostname" in
9038         '')
9039                 echo "There will be no way for $package to get your hostname." >&4;;
9040         *)
9041         echo "I'll use 'popen("'"'$aphostname'", "r")'"' to get your hostname." >&4
9042                 ;;
9043         esac;;
9044 esac
9045 case "$d_phostname" in
9046 '') d_phostname="$undef";;
9047 esac
9048
9049 : see if this is a netdb.h system
9050 set netdb.h i_netdb
9051 eval $inhdr
9052
9053 : see if prototypes for various gethostxxx netdb.h functions are available
9054 echo " "
9055 set d_gethostprotos gethostent $i_netdb netdb.h
9056 eval $hasproto
9057
9058 : see if getlogin exists
9059 set getlogin d_getlogin
9060 eval $inlibc
9061
9062 : see if getmnt exists
9063 set getmnt d_getmnt
9064 eval $inlibc
9065
9066 : see if getmntent exists
9067 set getmntent d_getmntent
9068 eval $inlibc
9069
9070 : see if getnetbyaddr exists
9071 set getnetbyaddr d_getnbyaddr
9072 eval $inlibc
9073
9074 : see if getnetbyname exists
9075 set getnetbyname d_getnbyname
9076 eval $inlibc
9077
9078 : see if getnetent exists
9079 set getnetent d_getnent
9080 eval $inlibc
9081
9082 : see if prototypes for various getnetxxx netdb.h functions are available
9083 echo " "
9084 set d_getnetprotos getnetent $i_netdb netdb.h
9085 eval $hasproto
9086
9087
9088 : see if getprotobyname exists
9089 set getprotobyname d_getpbyname
9090 eval $inlibc
9091
9092 : see if getprotobynumber exists
9093 set getprotobynumber d_getpbynumber
9094 eval $inlibc
9095
9096 : see if getprotoent exists
9097 set getprotoent d_getpent
9098 eval $inlibc
9099
9100 : see if getpgid exists
9101 set getpgid d_getpgid
9102 eval $inlibc
9103
9104 : see if getpgrp2 exists
9105 set getpgrp2 d_getpgrp2
9106 eval $inlibc
9107
9108 : see if getppid exists
9109 set getppid d_getppid
9110 eval $inlibc
9111
9112 : see if getpriority exists
9113 set getpriority d_getprior
9114 eval $inlibc
9115
9116 : see if prototypes for various getprotoxxx netdb.h functions are available
9117 echo " "
9118 set d_getprotoprotos getprotoent $i_netdb netdb.h
9119 eval $hasproto
9120
9121 : see if getpwent exists
9122 set getpwent d_getpwent
9123 eval $inlibc
9124
9125
9126 : see if getservbyname exists
9127 set getservbyname d_getsbyname
9128 eval $inlibc
9129
9130 : see if getservbyport exists
9131 set getservbyport d_getsbyport
9132 eval $inlibc
9133
9134 : see if getservent exists
9135 set getservent d_getsent
9136 eval $inlibc
9137
9138 : see if prototypes for various getservxxx netdb.h functions are available
9139 echo " "
9140 set d_getservprotos getservent $i_netdb netdb.h
9141 eval $hasproto
9142
9143 : see if getspent exists
9144 set getspent d_getspent
9145 eval $inlibc
9146
9147 : see if getspnam exists
9148 set getspnam d_getspnam
9149 eval $inlibc
9150
9151 : see if gettimeofday or ftime exists
9152 set gettimeofday d_gettimeod
9153 eval $inlibc
9154 case "$d_gettimeod" in
9155 "$undef")
9156         set ftime d_ftime 
9157         eval $inlibc
9158         ;;
9159 *)
9160         val="$undef"; set d_ftime; eval $setvar
9161         ;;
9162 esac
9163 case "$d_gettimeod$d_ftime" in
9164 "$undef$undef")
9165         echo " "
9166         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
9167         ;;
9168 esac
9169
9170 : see if this is an grp system
9171 set grp.h i_grp
9172 eval $inhdr
9173
9174 case "$i_grp" in
9175 $define)
9176         xxx=`./findhdr grp.h`
9177         $cppstdin $cppflags $cppminus < $xxx >$$.h
9178
9179         if $contains 'gr_passwd' $$.h >/dev/null 2>&1; then
9180                 val="$define"
9181         else
9182                 val="$undef"
9183         fi
9184         set d_grpasswd
9185         eval $setvar
9186
9187         $rm -f $$.h
9188         ;;
9189 *)
9190         val="$undef";
9191         set d_grpasswd; eval $setvar
9192         ;;
9193 esac
9194
9195 : see if hasmntopt exists
9196 set hasmntopt d_hasmntopt
9197 eval $inlibc
9198
9199 : see if this is a netinet/in.h or sys/in.h system
9200 set netinet/in.h i_niin sys/in.h i_sysin
9201 eval $inhdr
9202
9203 : see if arpa/inet.h has to be included
9204 set arpa/inet.h i_arpainet
9205 eval $inhdr
9206
9207 : see if htonl --and friends-- exists
9208 val=''
9209 set htonl val
9210 eval $inlibc
9211
9212 : Maybe they are macros.
9213 case "$val" in
9214 $undef)
9215         $cat >htonl.c <<EOM
9216 #include <stdio.h>
9217 #include <sys/types.h>
9218 #$i_niin I_NETINET_IN
9219 #$i_sysin I_SYS_IN
9220 #$i_arpainet I_ARPA_INET
9221 #ifdef I_NETINET_IN
9222 #include <netinet/in.h>
9223 #endif
9224 #ifdef I_SYS_IN
9225 #include <sys/in.h>
9226 #endif
9227 #ifdef I_ARPA_INET
9228 #include <arpa/inet.h>
9229 #endif
9230 #ifdef htonl
9231 printf("Defined as a macro.");
9232 #endif
9233 EOM
9234         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
9235         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
9236                 val="$define"
9237                 echo "But it seems to be defined as a macro." >&4
9238         fi
9239         $rm -f htonl.?
9240         ;;
9241 esac
9242 set d_htonl
9243 eval $setvar
9244
9245 : see if iconv exists
9246 set iconv d_iconv
9247 eval $inlibc
9248
9249 : index or strchr
9250 echo " "
9251 if set index val -f; eval $csym; $val; then
9252         if set strchr val -f d_strchr; eval $csym; $val; then
9253                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
9254                         val="$define"
9255                         vali="$undef"
9256                         echo "strchr() found." >&4
9257                 else
9258                         val="$undef"
9259                         vali="$define"
9260                         echo "index() found." >&4
9261                 fi
9262         else
9263                 val="$undef"
9264                 vali="$define"
9265                 echo "index() found." >&4
9266         fi
9267 else
9268         if set strchr val -f d_strchr; eval $csym; $val; then
9269                 val="$define"
9270                 vali="$undef"
9271                 echo "strchr() found." >&4
9272         else
9273                 echo "No index() or strchr() found!" >&4
9274                 val="$undef"
9275                 vali="$undef"
9276         fi
9277 fi
9278 set d_strchr; eval $setvar
9279 val="$vali"
9280 set d_index; eval $setvar
9281
9282 : check whether inet_aton exists
9283 set inet_aton d_inetaton
9284 eval $inlibc
9285
9286 : Look for isascii
9287 echo " "
9288 $cat >isascii.c <<'EOCP'
9289 #include <stdio.h>
9290 #include <ctype.h>
9291 int main() {
9292         int c = 'A';
9293         if (isascii(c))
9294                 exit(0);
9295         else
9296                 exit(1);
9297 }
9298 EOCP
9299 set isascii
9300 if eval $compile; then
9301         echo "isascii() found." >&4
9302         val="$define"
9303 else
9304         echo "isascii() NOT found." >&4
9305         val="$undef"
9306 fi
9307 set d_isascii
9308 eval $setvar
9309 $rm -f isascii*
9310
9311 : see if killpg exists
9312 set killpg d_killpg
9313 eval $inlibc
9314
9315 : see if lchown exists
9316 echo " "
9317 $cat > try.c <<'EOCP'
9318 /* System header to define __stub macros and hopefully few prototypes,
9319     which can conflict with char lchown(); below.  */
9320 #include <assert.h>
9321 /* Override any gcc2 internal prototype to avoid an error.  */
9322 /* We use char because int might match the return type of a gcc2
9323    builtin and then its argument prototype would still apply.  */
9324 char lchown();
9325 int main() {
9326     /*  The GNU C library defines this for functions which it implements
9327         to always fail with ENOSYS.  Some functions are actually named
9328         something starting with __ and the normal name is an alias.  */
9329 #if defined (__stub_lchown) || defined (__stub___lchown)
9330 choke me
9331 #else
9332 lchown();
9333 #endif
9334 ; return 0; }
9335 EOCP
9336 set try
9337 if eval $compile; then
9338     $echo "lchown() found." >&4
9339     val="$define"
9340 else
9341     $echo "lchown() NOT found." >&4
9342     val="$undef"
9343 fi
9344 set d_lchown
9345 eval $setvar
9346
9347 : See if number of significant digits in a double precision number is known
9348 echo " "
9349 $cat >ldbl_dig.c <<EOM
9350 #$i_limits I_LIMITS
9351 #$i_float I_FLOAT
9352 #ifdef I_LIMITS
9353 #include <limits.h>
9354 #endif
9355 #ifdef I_FLOAT
9356 #include <float.h>
9357 #endif
9358 #ifdef LDBL_DIG
9359 printf("Contains LDBL_DIG");
9360 #endif
9361 EOM
9362 $cppstdin $cppflags $cppminus < ldbl_dig.c >ldbl_dig.E 2>/dev/null
9363 if $contains 'LDBL_DIG' ldbl_dig.E >/dev/null 2>&1; then
9364         echo "LDBL_DIG found." >&4
9365         val="$define"
9366 else
9367         echo "LDBL_DIG NOT found." >&4
9368         val="$undef"
9369 fi
9370 $rm -f ldbl_dig.?
9371 set d_ldbl_dig
9372 eval $setvar
9373
9374 : see if link exists
9375 set link d_link
9376 eval $inlibc
9377
9378 : see if localeconv exists
9379 set localeconv d_locconv
9380 eval $inlibc
9381
9382 : see if lockf exists
9383 set lockf d_lockf
9384 eval $inlibc
9385
9386 : check for long long
9387 echo " "
9388 $echo $n "Checking to see if your system supports long long..." $c >&4
9389 echo 'int main() { long long x = 7; return 0; }' > try.c
9390 set try
9391 if eval $compile; then
9392         val="$define"
9393         echo " Yes, it does." >&4
9394 else
9395         val="$undef"
9396         echo " No, it doesn't." >&4
9397 fi
9398 $rm try.*
9399 set d_longlong
9400 eval $setvar
9401
9402 : check for length of long long
9403 case "${d_longlong}${longlongsize}" in
9404 $define)
9405         echo " "
9406         $echo $n "Checking to see how big your long longs are..." $c >&4
9407         $cat >try.c <<'EOCP'
9408 #include <stdio.h>
9409 int main()
9410 {
9411     printf("%d\n", (int)sizeof(long long));
9412     return(0);
9413 }
9414 EOCP
9415         set try
9416         if eval $compile_ok; then
9417                 longlongsize=`./try$exe_ext`
9418                 $echo " $longlongsize bytes." >&4
9419         else
9420                 dflt='8'
9421                 echo " "
9422                 echo "(I can't seem to compile the test program.  Guessing...)"
9423                 rp="What is the size of a long long (in bytes)?"
9424                 . ./myread
9425                 longlongsize="$ans"
9426         fi
9427         if $test "X$longsize" = "X$longlongsize"; then
9428                 echo "(That isn't any different from an ordinary long.)"
9429         fi      
9430         ;;
9431 esac
9432 $rm -f try.* try
9433
9434 : see if lstat exists
9435 set lstat d_lstat
9436 eval $inlibc
9437
9438 : see if mblen exists
9439 set mblen d_mblen
9440 eval $inlibc
9441
9442 : see if mbstowcs exists
9443 set mbstowcs d_mbstowcs
9444 eval $inlibc
9445
9446 : see if mbtowc exists
9447 set mbtowc d_mbtowc
9448 eval $inlibc
9449
9450 : see if memchr exists
9451 set memchr d_memchr
9452 eval $inlibc
9453
9454 : see if memcmp exists
9455 set memcmp d_memcmp
9456 eval $inlibc
9457
9458 : see if memcpy exists
9459 set memcpy d_memcpy
9460 eval $inlibc
9461
9462 : see if memmove exists
9463 set memmove d_memmove
9464 eval $inlibc
9465
9466 : see if memset exists
9467 set memset d_memset
9468 eval $inlibc
9469
9470 : see if mkdir exists
9471 set mkdir d_mkdir
9472 eval $inlibc
9473
9474 : see if mkfifo exists
9475 set mkfifo d_mkfifo
9476 eval $inlibc
9477
9478 : see if mktime exists
9479 set mktime d_mktime
9480 eval $inlibc
9481
9482 : see if msgctl exists
9483 set msgctl d_msgctl
9484 eval $inlibc
9485
9486 : see if msgget exists
9487 set msgget d_msgget
9488 eval $inlibc
9489
9490 : see if msgsnd exists
9491 set msgsnd d_msgsnd
9492 eval $inlibc
9493
9494 : see if msgrcv exists
9495 set msgrcv d_msgrcv
9496 eval $inlibc
9497
9498 : see how much of the 'msg*(2)' library is present.
9499 h_msg=true
9500 echo " "
9501 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
9502 *"$undef"*) h_msg=false;;
9503 esac
9504 case "$osname" in
9505 freebsd)
9506     case "`ipcs 2>&1`" in
9507     "SVID messages"*"not configured"*)
9508         echo "Your $osname does not have the msg*(2) configured." >&4
9509         h_msg=false
9510         val="$undef"
9511         set msgctl d_msgctl
9512         eval $setvar
9513         set msgget d_msgget
9514         eval $setvar
9515         set msgsnd d_msgsnd
9516         eval $setvar
9517         set msgrcv d_msgrcv
9518         eval $setvar
9519         ;;
9520     esac
9521     ;;
9522 esac
9523 : we could also check for sys/ipc.h ...
9524 if $h_msg && $test `./findhdr sys/msg.h`; then
9525         echo "You have the full msg*(2) library." >&4
9526         val="$define"
9527 else
9528         echo "You don't have the full msg*(2) library." >&4
9529         val="$undef"
9530 fi
9531 set d_msg
9532 eval $setvar
9533
9534 : see if nice exists
9535 set nice d_nice
9536 eval $inlibc
9537
9538 : see if inttypes.h is available
9539 : we want a real compile instead of Inhdr because some systems
9540 : have an inttypes.h which includes non-existent headers
9541 echo " "
9542 $cat >try.c <<EOCP
9543 #include <inttypes.h>
9544 int main() {
9545         static int32_t foo32 = 0x12345678;
9546 }
9547 EOCP
9548 set try
9549 if eval $compile; then
9550         echo "<inttypes.h> found." >&4
9551         val="$define"
9552 else
9553         echo "<inttypes.h> NOT found." >&4
9554         val="$undef"
9555 fi
9556 $rm -f try.c try
9557 set i_inttypes
9558 eval $setvar
9559
9560 : check for int64_t
9561 echo " "
9562 $echo $n "Checking to see if your system supports int64_t...$c" >&4
9563 $cat >try.c <<EOCP
9564 #include <sys/types.h>
9565 #$i_inttypes I_INTTYPES
9566 #ifdef I_INTTYPES
9567 #include <inttypes.h>
9568 #endif
9569 int main() { int64_t x = 7; }
9570 EOCP
9571 set try
9572 if eval $compile; then
9573         val="$define"
9574         echo " Yes, it does." >&4
9575 else
9576         val="$undef"
9577         echo " No, it doesn't." >&4
9578 fi
9579 $rm -f try try.*
9580 set d_int64t
9581 eval $setvar
9582
9583
9584 echo " "
9585 echo "Checking which 64-bit integer type we could use..." >&4
9586
9587 case "$intsize" in
9588 8) val=int
9589    set quadtype
9590    eval $setvar
9591    val='"unsigned int"'
9592    set uquadtype
9593    eval $setvar
9594    quadkind=1
9595    ;;
9596 *) case "$longsize" in
9597    8) val=long
9598       set quadtype
9599       eval $setvar
9600       val='"unsigned long"'
9601       set uquadtype
9602       eval $setvar
9603       quadkind=2
9604       ;;
9605    *) case "$d_longlong:$longlongsize" in
9606       define:8)
9607         val='"long long"'
9608         set quadtype
9609         eval $setvar
9610         val='"unsigned long long"'
9611         set uquadtype
9612         eval $setvar
9613         quadkind=3
9614         ;;
9615       *) case "$d_int64t" in
9616          define)
9617            val=int64_t
9618            set quadtype
9619            eval $setvar
9620            val=uint64_t
9621            set uquadtype
9622            eval $setvar
9623            quadkind=4
9624            ;;
9625          esac
9626          ;;
9627       esac
9628       ;;
9629    esac
9630    ;;
9631 esac
9632
9633 case "$quadtype" in
9634 '')     case "$uselonglong:$d_longlong:$longlongsize" in
9635         undef:define:8)
9636            echo "(You would have 'long long', but you are not using it.)" >&4 ;;
9637         *) echo "Alas, no 64-bit integer types in sight." >&4 ;;
9638         esac
9639         d_quad="$undef"
9640         ;;
9641 *)      if test X"$use64bits" = Xdefine -o X"$longsize" = X8; then
9642             verb="will"
9643         else
9644             verb="could"
9645         fi
9646         echo "We $verb use '$quadtype' for 64-bit integers." >&4
9647         d_quad="$define"
9648         ;;
9649 esac
9650
9651 : check for length of character
9652 echo " "
9653 case "$charsize" in
9654 '')
9655         echo "Checking to see how big your characters are (hey, you never know)..." >&4
9656         $cat >try.c <<'EOCP'
9657 #include <stdio.h>
9658 int main()
9659 {
9660     printf("%d\n", (int)sizeof(char));
9661     exit(0);
9662 }
9663 EOCP
9664         set try
9665         if eval $compile_ok; then
9666                 dflt=`./try`
9667         else
9668                 dflt='1'
9669                 echo "(I can't seem to compile the test program.  Guessing...)"
9670         fi
9671         ;;
9672 *)
9673         dflt="$charsize"
9674         ;;
9675 esac
9676 rp="What is the size of a character (in bytes)?"
9677 . ./myread
9678 charsize="$ans"
9679 $rm -f try.c try
9680
9681
9682 echo " "
9683 $echo "Choosing the C types to be used for Perl's internal types..." >&4
9684
9685 case "$use64bits:$d_quad:$quadtype" in
9686 define:define:?*)
9687         ivtype="$quadtype"
9688         uvtype="$uquadtype"
9689         ivsize=8
9690         uvsize=8
9691         ;;
9692 *)      ivtype="long"
9693         uvtype="unsigned long"
9694         ivsize=$longsize
9695         uvsize=$longsize
9696         ;;
9697 esac
9698
9699 case "$uselongdouble:$d_longdbl" in
9700 define:define)
9701         nvtype="long double"
9702         nvsize=$longdblsize
9703         ;;
9704 *)      nvtype=double
9705         nvsize=$doublesize
9706         ;;
9707 esac
9708
9709 $echo "(IV will be "$ivtype", $ivsize bytes)"
9710 $echo "(UV will be "$uvtype", $uvsize bytes)"
9711 $echo "(NV will be "$nvtype", $nvsize bytes)"
9712
9713 $cat >try.c <<EOCP
9714 #$i_inttypes I_INTTYPES
9715 #ifdef I_INTTYPES
9716 #include <inttypes.h>
9717 #endif
9718 #include <stdio.h>
9719 int main() {
9720 #ifdef INT8
9721    int8_t i =  INT8_MAX;
9722   uint8_t u = UINT8_MAX;
9723   printf("int8_t\n");
9724 #endif
9725 #ifdef INT16
9726    int16_t i =  INT16_MAX;
9727   uint16_t i = UINT16_MAX;
9728   printf("int16_t\n");
9729 #endif
9730 #ifdef INT32
9731    int32_t i =  INT32_MAX;
9732   uint32_t u = UINT32_MAX;
9733   printf("int32_t\n");
9734 #endif
9735 }
9736 EOCP
9737
9738 case "$i8type" in
9739 '')     case "$charsize" in
9740         1)      i8type=char
9741                 u8type="unsigned char"
9742                 i8size=$charsize
9743                 u8size=$charsize
9744                 ;;
9745         esac
9746         ;;
9747 esac
9748 case "$i8type" in
9749 '')     set try -DINT8
9750         if eval $compile; then
9751                 case "`./try$exe_ext`" in
9752                 int8_t) i8type=int8_t
9753                         u8type=uint8_t
9754                         i8size=1
9755                         u8size=1
9756                         ;;
9757                 esac
9758         fi
9759         ;;
9760 esac
9761 case "$i8type" in
9762 '')     if $test $charsize -ge 1; then
9763                 i8type=char
9764                 u8type="unsigned char"
9765                 i8size=$charsize
9766                 u8size=$charsize
9767         fi
9768         ;;
9769 esac
9770
9771 case "$i16type" in
9772 '')     case "$shortsize" in
9773         2)      i16type=short
9774                 u16type="unsigned short"
9775                 i16size=$shortsize
9776                 u16size=$shortsize
9777                 ;;
9778         esac
9779         ;;
9780 esac
9781 case "$i16type" in
9782 '')     set try -DINT16
9783         if eval $compile; then
9784                 case "`./try$exe_ext`" in
9785                 int16_t)
9786                         i16type=int16_t
9787                         u16type=uint16_t
9788                         i16size=2
9789                         u16size=2
9790                         ;;
9791                 esac
9792         fi
9793         ;;
9794 esac
9795 case "$i16type" in
9796 '')     if $test $shortsize -ge 2; then
9797                 i16type=short
9798                 u16type="unsigned short"
9799                 i16size=$shortsize
9800                 u16size=$shortsize
9801         fi
9802         ;;
9803 esac
9804
9805 case "$i32type" in
9806 '')     case "$longsize" in
9807         4)      i32type=long
9808                 u32type="unsigned long"
9809                 i32size=$longsize
9810                 u32size=$longsize
9811                 ;;
9812         *)      case "$intsize" in
9813                 4)      i32type=int
9814                         u32type="unsigned int"
9815                         i32size=$intsize
9816                         u32size=$intsize
9817                         ;;
9818                 esac
9819                 ;;
9820         esac
9821         ;;
9822 esac
9823 case "$i32type" in
9824 '')     set try -DINT32
9825         if eval $compile; then
9826                 case "`./try$exe_ext`" in
9827                 int32_t)
9828                         i32type=int32_t
9829                         u32type=uint32_t
9830                         i32size=4
9831                         u32size=4
9832                         ;;
9833                 esac
9834         fi
9835         ;;
9836 esac
9837 case "$i32type" in
9838 '')     if $test $intsize -ge 4; then
9839                 i32type=int
9840                 u32type="unsigned int"
9841                 i32size=$intsize
9842                 u32size=$intsize
9843         fi
9844         ;;
9845 esac
9846
9847 case "$i64type" in
9848 '')     case "$d_quad:$quadtype" in
9849         define:?*)
9850                 i64type="$quadtype"
9851                 u64type="$uquadtype"
9852                 i64size=8
9853                 u64size=8
9854                 ;;
9855         esac
9856         ;;
9857 esac
9858
9859 $echo "Checking whether your NVs can preserve your UVs..." >&4
9860 $cat <<EOP >try.c
9861 #include <stdio.h>
9862 int main() {
9863     $uvtype k = ($uvtype)~0, l;
9864     $nvtype d;
9865     l = k;
9866     d = ($nvtype)l;
9867     l = ($uvtype)d;
9868     if (l == k)
9869        printf("preserve\n");
9870     exit(0);
9871 }
9872 EOP
9873 set try
9874 if eval $compile; then
9875         case "`./try$exe_ext`" in
9876         preserve) d_nv_preserves_uv="$define" ;;
9877         esac
9878 fi      
9879 case "$d_nv_preserves_uv" in
9880 $define) $echo "Yes, they can."  2>&1 ;;
9881 *)       $echo "No, they can't." 2>&1
9882          d_nv_preserves_uv="$undef"
9883          ;;
9884 esac
9885
9886 $rm -f try.* try
9887
9888 : see if POSIX threads are available
9889 set pthread.h i_pthread
9890 eval $inhdr
9891
9892
9893
9894
9895 : how to create joinable pthreads
9896 if test "X$usethreads" = "X$define" -a "X$i_pthread" = "X$define"; then
9897         echo " "
9898         echo "Checking what constant to use for creating joinable pthreads..." >&4 
9899         $cat >try.c <<'EOCP'
9900 #include <pthread.h>
9901 int main() {
9902     int detachstate = JOINABLE;
9903 }
9904 EOCP
9905         set try -DJOINABLE=PTHREAD_CREATE_JOINABLE
9906         if eval $compile; then
9907                 echo "You seem to use PTHREAD_CREATE_JOINABLE." >&4
9908                 val="$undef" # Yes, undef.
9909                 set d_old_pthread_create_joinable
9910                 eval $setvar
9911                 val=""
9912                 set old_pthread_create_joinable
9913                 eval $setvar
9914         else
9915                 set try -DJOINABLE=PTHREAD_CREATE_UNDETACHED
9916                 if eval $compile; then
9917                         echo "You seem to use PTHREAD_CREATE_UNDETACHED." >&4
9918                         val="$define"
9919                         set d_old_pthread_create_joinable
9920                         eval $setvar
9921                         val=PTHREAD_CREATE_UNDETACHED
9922                         set old_pthread_create_joinable
9923                         eval $setvar
9924                 else            
9925                         set try -DJOINABLE=__UNDETACHED
9926                         if eval $compile; then
9927                                 echo "You seem to use __UNDETACHED." >&4
9928                                 val="$define"
9929                                 set d_old_pthread_create_joinable
9930                                 eval $setvar
9931                                 val=__UNDETACHED
9932                                 set old_pthread_create_joinable
9933                                 eval $setvar
9934                         else
9935                                 echo "Egads, nothing obvious found.  Guessing that you use 0." >&4
9936                                 val="$define"
9937                                 set d_old_pthread_create_joinable
9938                                 eval $setvar
9939                                 val=0
9940                                 set old_pthread_create_joinable
9941                                 eval $setvar
9942                         fi
9943                 fi
9944         fi
9945         $rm -f try try.*
9946 else
9947     d_old_pthread_create_joinable="$undef"
9948     old_pthread_create_joinable=""
9949 fi
9950
9951 : see if pause exists
9952 set pause d_pause
9953 eval $inlibc
9954
9955 : see if pipe exists
9956 set pipe d_pipe
9957 eval $inlibc
9958
9959 : see if poll exists
9960 set poll d_poll
9961 eval $inlibc
9962
9963
9964 : see whether the various POSIXish _yields exist
9965 $cat >try.c <<EOP
9966 #include <pthread.h>
9967 #include <stdio.h>
9968 int main() {
9969 #ifdef SCHED_YIELD
9970         sched_yield();
9971 #else
9972 #ifdef PTHREAD_YIELD
9973         pthread_yield();
9974 #else
9975 #ifdef PTHREAD_YIELD_NULL
9976         pthread_yield(NULL);
9977 #endif
9978 #endif
9979 #endif
9980 }
9981 EOP
9982 : see if sched_yield exists
9983 set try -DSCHED_YIELD
9984 if eval $compile; then
9985     val="$define"
9986     sched_yield='sched_yield()'
9987 else
9988     val="$undef"
9989 fi
9990 case "$usethreads" in
9991 $define)
9992         case "$val" in
9993         $define) echo 'sched_yield() found.' >&4        ;;
9994         *)       echo 'sched_yield() NOT found.' >&4    ;;
9995         esac
9996 esac
9997 set d_sched_yield
9998 eval $setvar
9999
10000 : see if pthread_yield exists
10001 set try -DPTHREAD_YIELD
10002 if eval $compile; then
10003     val="$define"
10004     case "$sched_yield" in
10005     '') sched_yield='pthread_yield()' ;;
10006     esac
10007 else
10008     set try -DPTHREAD_YIELD_NULL
10009     if eval $compile; then
10010         val="$define"
10011         case "$sched_yield" in
10012         '') sched_yield='pthread_yield(NULL)' ;;
10013         esac
10014     else
10015         val="$undef"
10016     fi
10017 fi
10018 case "$usethreads" in
10019 $define)
10020         case "$val" in
10021         $define) echo 'pthread_yield() found.' >&4      ;;
10022         *)       echo 'pthread_yield() NOT found.' >&4  ;;
10023         esac
10024         ;;
10025 esac
10026 set d_pthread_yield
10027 eval $setvar
10028
10029 case "$sched_yield" in
10030 '') sched_yield=undef ;;
10031 esac
10032
10033 $rm -f try try.*
10034
10035 : see if this is a pwd.h system
10036 set pwd.h i_pwd
10037 eval $inhdr
10038
10039 case "$i_pwd" in
10040 $define)
10041         xxx=`./findhdr pwd.h`
10042         $cppstdin $cppflags $cppminus < $xxx >$$.h
10043
10044         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
10045                 val="$define"
10046         else
10047                 val="$undef"
10048         fi
10049         set d_pwquota
10050         eval $setvar
10051
10052         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
10053                 val="$define"
10054         else
10055                 val="$undef"
10056         fi
10057         set d_pwage
10058         eval $setvar
10059
10060         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
10061                 val="$define"
10062         else
10063                 val="$undef"
10064         fi
10065         set d_pwchange
10066         eval $setvar
10067
10068         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
10069                 val="$define"
10070         else
10071                 val="$undef"
10072         fi
10073         set d_pwclass
10074         eval $setvar
10075
10076         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
10077                 val="$define"
10078         else
10079                 val="$undef"
10080         fi
10081         set d_pwexpire
10082         eval $setvar
10083
10084         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
10085                 val="$define"
10086         else
10087                 val="$undef"
10088         fi
10089         set d_pwcomment
10090         eval $setvar
10091
10092         if $contains 'pw_gecos' $$.h >/dev/null 2>&1; then
10093                 val="$define"
10094         else
10095                 val="$undef"
10096         fi
10097         set d_pwgecos
10098         eval $setvar
10099
10100         if $contains 'pw_passwd' $$.h >/dev/null 2>&1; then
10101                 val="$define"
10102         else
10103                 val="$undef"
10104         fi
10105         set d_pwpasswd
10106         eval $setvar
10107
10108         $rm -f $$.h
10109         ;;
10110 *)
10111         val="$undef"; 
10112         set d_pwquota; eval $setvar
10113         set d_pwage; eval $setvar
10114         set d_pwchange; eval $setvar
10115         set d_pwclass; eval $setvar
10116         set d_pwexpire; eval $setvar
10117         set d_pwcomment; eval $setvar
10118         set d_pwgecos; eval $setvar
10119         set d_pwpasswd; eval $setvar
10120         ;;
10121 esac
10122
10123 : see if readdir and friends exist
10124 set readdir d_readdir
10125 eval $inlibc
10126 set seekdir d_seekdir
10127 eval $inlibc
10128 set telldir d_telldir
10129 eval $inlibc
10130 set rewinddir d_rewinddir
10131 eval $inlibc
10132
10133 : see if readlink exists
10134 set readlink d_readlink
10135 eval $inlibc
10136
10137 : see if rename exists
10138 set rename d_rename
10139 eval $inlibc
10140
10141 : see if rmdir exists
10142 set rmdir d_rmdir
10143 eval $inlibc
10144
10145 : see if memory.h is available.
10146 val=''
10147 set memory.h val
10148 eval $inhdr
10149
10150 : See if it conflicts with string.h
10151 case "$val" in
10152 $define)
10153         case "$strings" in
10154         '') ;;
10155         *)
10156                 $cppstdin $cppflags $cppminus < $strings > mem.h
10157                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
10158                         echo " "
10159                         echo "We won't be including <memory.h>."
10160                         val="$undef"
10161                 fi
10162                 $rm -f mem.h
10163                 ;;
10164         esac
10165 esac
10166 set i_memory
10167 eval $setvar
10168
10169 : can bcopy handle overlapping blocks?
10170 val="$undef"
10171 case "$d_bcopy" in
10172 "$define")
10173         echo " "
10174         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
10175         $cat >try.c <<EOCP
10176 #$i_memory I_MEMORY
10177 #$i_stdlib I_STDLIB
10178 #$i_string I_STRING
10179 #$i_unistd I_UNISTD
10180 EOCP
10181         $cat >>try.c <<'EOCP'
10182 #include <stdio.h>
10183 #ifdef I_MEMORY
10184 #  include <memory.h>
10185 #endif
10186 #ifdef I_STDLIB
10187 #  include <stdlib.h>
10188 #endif
10189 #ifdef I_STRING
10190 #  include <string.h>
10191 #else
10192 #  include <strings.h>
10193 #endif
10194 #ifdef I_UNISTD
10195 #  include <unistd.h>  /* Needed for NetBSD */
10196 #endif
10197 int main()
10198 {
10199 char buf[128], abc[128];
10200 char *b;
10201 int len;
10202 int off;
10203 int align;
10204
10205 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
10206
10207 for (align = 7; align >= 0; align--) {
10208         for (len = 36; len; len--) {
10209                 b = buf+align;
10210                 bcopy(abc, b, len);
10211                 for (off = 1; off <= len; off++) {
10212                         bcopy(b, b+off, len);
10213                         bcopy(b+off, b, len);
10214                         if (bcmp(b, abc, len))
10215                                 exit(1);
10216                 }
10217         }
10218 }
10219 exit(0);
10220 }
10221 EOCP
10222         set try
10223         if eval $compile_ok; then
10224                 if ./try 2>/dev/null; then
10225                         echo "Yes, it can."
10226                         val="$define"
10227                 else
10228                         echo "It can't, sorry."
10229                         case "$d_memmove" in
10230                         "$define") echo "But that's Ok since you have memmove()." ;;
10231                         esac
10232                 fi
10233         else
10234                 echo "(I can't compile the test program, so we'll assume not...)"
10235                 case "$d_memmove" in
10236                 "$define") echo "But that's Ok since you have memmove()." ;;
10237                 esac
10238         fi
10239         ;;
10240 esac
10241 $rm -f try.* try core
10242 set d_safebcpy
10243 eval $setvar
10244
10245 : can memcpy handle overlapping blocks?
10246 val="$undef"
10247 case "$d_memcpy" in
10248 "$define")
10249         echo " "
10250         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
10251         $cat >try.c <<EOCP
10252 #$i_memory I_MEMORY
10253 #$i_stdlib I_STDLIB
10254 #$i_string I_STRING
10255 #$i_unistd I_UNISTD
10256 EOCP
10257         $cat >>try.c <<'EOCP'
10258 #include <stdio.h>
10259 #ifdef I_MEMORY
10260 #  include <memory.h>
10261 #endif
10262 #ifdef I_STDLIB
10263 #  include <stdlib.h>
10264 #endif
10265 #ifdef I_STRING
10266 #  include <string.h>
10267 #else
10268 #  include <strings.h>
10269 #endif
10270 #ifdef I_UNISTD
10271 #  include <unistd.h>  /* Needed for NetBSD */
10272 #endif
10273 int main()
10274 {
10275 char buf[128], abc[128];
10276 char *b;
10277 int len;
10278 int off;
10279 int align;
10280
10281 /* Copy "abcde..." string to char abc[] so that gcc doesn't
10282    try to store the string in read-only memory. */
10283 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
10284
10285 for (align = 7; align >= 0; align--) {
10286         for (len = 36; len; len--) {
10287                 b = buf+align;
10288                 memcpy(b, abc, len);
10289                 for (off = 1; off <= len; off++) {
10290                         memcpy(b+off, b, len);
10291                         memcpy(b, b+off, len);
10292                         if (memcmp(b, abc, len))
10293                                 exit(1);
10294                 }
10295         }
10296 }
10297 exit(0);
10298 }
10299 EOCP
10300         set try
10301         if eval $compile_ok; then
10302                 if ./try 2>/dev/null; then
10303                         echo "Yes, it can."
10304                         val="$define"
10305                 else
10306                         echo "It can't, sorry."
10307                         case "$d_memmove" in
10308                         "$define") echo "But that's Ok since you have memmove()." ;;
10309                         esac
10310                 fi
10311         else
10312                 echo "(I can't compile the test program, so we'll assume not...)"
10313                 case "$d_memmove" in
10314                 "$define") echo "But that's Ok since you have memmove()." ;;
10315                 esac
10316         fi
10317         ;;
10318 esac
10319 $rm -f try.* try core
10320 set d_safemcpy
10321 eval $setvar
10322
10323 : can memcmp be trusted to compare relative magnitude?
10324 val="$undef"
10325 case "$d_memcmp" in
10326 "$define")
10327         echo " "
10328         echo "Checking if your memcmp() can compare relative magnitude..." >&4
10329         $cat >try.c <<EOCP
10330 #$i_memory I_MEMORY
10331 #$i_stdlib I_STDLIB
10332 #$i_string I_STRING
10333 #$i_unistd I_UNISTD
10334 EOCP
10335         $cat >>try.c <<'EOCP'
10336 #include <stdio.h>
10337 #ifdef I_MEMORY
10338 #  include <memory.h>
10339 #endif
10340 #ifdef I_STDLIB
10341 #  include <stdlib.h>
10342 #endif
10343 #ifdef I_STRING
10344 #  include <string.h>
10345 #else
10346 #  include <strings.h>
10347 #endif
10348 #ifdef I_UNISTD
10349 #  include <unistd.h>  /* Needed for NetBSD */
10350 #endif
10351 int main()
10352 {
10353 char a = -1;
10354 char b = 0;
10355 if ((a < b) && memcmp(&a, &b, 1) < 0)
10356         exit(1);
10357 exit(0);
10358 }
10359 EOCP
10360         set try
10361         if eval $compile_ok; then
10362                 if ./try 2>/dev/null; then
10363                         echo "Yes, it can."
10364                         val="$define"
10365                 else
10366                         echo "No, it can't (it uses signed chars)."
10367                 fi
10368         else
10369                 echo "(I can't compile the test program, so we'll assume not...)"
10370         fi
10371         ;;
10372 esac
10373 $rm -f try.* try core
10374 set d_sanemcmp
10375 eval $setvar
10376
10377 : see if select exists
10378 set select d_select
10379 eval $inlibc
10380
10381 : see if semctl exists
10382 set semctl d_semctl
10383 eval $inlibc
10384
10385 : see if semget exists
10386 set semget d_semget
10387 eval $inlibc
10388
10389 : see if semop exists
10390 set semop d_semop
10391 eval $inlibc
10392
10393 : see how much of the 'sem*(2)' library is present.
10394 h_sem=true
10395 echo " "
10396 case "$d_semctl$d_semget$d_semop" in
10397 *"$undef"*) h_sem=false;;
10398 esac
10399 case "$osname" in
10400 freebsd)
10401     case "`ipcs 2>&1`" in
10402     "SVID messages"*"not configured"*)
10403         echo "Your $osname does not have the sem*(2) configured." >&4
10404         h_sem=false
10405         val="$undef"
10406         set semctl d_semctl
10407         eval $setvar
10408         set semget d_semget
10409         eval $setvar
10410         set semop d_semop
10411         eval $setvar
10412         ;;
10413     esac
10414     ;;
10415 esac
10416 : we could also check for sys/ipc.h ...
10417 if $h_sem && $test `./findhdr sys/sem.h`; then
10418         echo "You have the full sem*(2) library." >&4
10419         val="$define"
10420 else
10421         echo "You don't have the full sem*(2) library." >&4
10422         val="$undef"
10423 fi
10424 set d_sem
10425 eval $setvar
10426
10427 : see whether sys/sem.h defines union semun
10428 echo " "
10429 $cat > try.c <<'END'
10430 #include <sys/types.h>
10431 #include <sys/ipc.h>
10432 #include <sys/sem.h>
10433 int main () { union semun semun; semun.buf = 0; }
10434 END
10435 set try
10436 if eval $compile; then
10437     echo "You have union semun in <sys/sem.h>." >&4
10438     val="$define"
10439 else
10440     echo "You do not have union semun in <sys/sem.h>." >&4
10441     val="$undef"
10442 fi
10443 $rm -f try try.c try.h
10444 set d_union_semun
10445 eval $setvar
10446
10447 : see how to do semctl IPC_STAT
10448 case "$d_sem" in
10449 $define)
10450     : see whether semctl IPC_STAT can use union semun
10451     echo " "
10452     $cat > try.h <<END
10453 #ifndef S_IRUSR
10454 #   ifdef S_IREAD
10455 #       define S_IRUSR S_IREAD
10456 #       define S_IWUSR S_IWRITE
10457 #       define S_IXUSR S_IEXEC
10458 #   else
10459 #       define S_IRUSR 0400
10460 #       define S_IWUSR 0200
10461 #       define S_IXUSR 0100
10462 #   endif
10463 #   define S_IRGRP (S_IRUSR>>3)
10464 #   define S_IWGRP (S_IWUSR>>3)
10465 #   define S_IXGRP (S_IXUSR>>3)
10466 #   define S_IROTH (S_IRUSR>>6)
10467 #   define S_IWOTH (S_IWUSR>>6)
10468 #   define S_IXOTH (S_IXUSR>>6)
10469 #endif
10470 #ifndef S_IRWXU
10471 #   define S_IRWXU (S_IRUSR|S_IWUSR|S_IXUSR)
10472 #   define S_IRWXG (S_IRGRP|S_IWGRP|S_IXGRP)
10473 #   define S_IRWXO (S_IROTH|S_IWOTH|S_IXOTH)
10474 #endif
10475 END
10476
10477     $cat > try.c <<END
10478 #include <sys/types.h>
10479 #include <sys/ipc.h>
10480 #include <sys/sem.h>
10481 #include <sys/stat.h>
10482 #include <stdio.h>
10483 #include <errno.h>
10484 #include "try.h"
10485 #ifndef errno
10486 extern int errno;
10487 #endif
10488 #$d_union_semun HAS_UNION_SEMUN
10489 int main() {
10490     union semun
10491 #ifndef HAS_UNION_SEMUN
10492     {
10493         int val;
10494         struct semid_ds *buf;
10495         unsigned short *array;
10496     }
10497 #endif
10498     arg;
10499     int sem, st;
10500
10501 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) && defined(S_IRWXO) && defined(IPC_CREAT)
10502     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10503     if (sem > -1) {
10504         struct semid_ds argbuf;
10505         arg.buf = &argbuf;
10506 #       ifdef IPC_STAT
10507         st = semctl(sem, 0, IPC_STAT, arg);
10508         if (st == 0)
10509             printf("semun\n");
10510         else
10511 #       endif /* IPC_STAT */
10512             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10513 #       ifdef IPC_RMID
10514         if (semctl(sem, 0, IPC_RMID, arg) != 0)
10515 #       endif /* IPC_RMID */
10516             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10517     } else
10518 #endif /* IPC_PRIVATE && ... */
10519         printf("semget failed: errno = %d\n", errno);
10520   return 0;
10521 }
10522 END
10523     val="$undef"
10524     set try
10525     if eval $compile; then
10526         xxx=`./try`
10527         case "$xxx" in
10528         semun) val="$define" ;;
10529         esac
10530     fi
10531     $rm -f try try.c
10532     set d_semctl_semun
10533     eval $setvar
10534     case "$d_semctl_semun" in
10535     $define)
10536         echo "You can use union semun for semctl IPC_STAT." >&4
10537         also='also'
10538         ;;
10539     *)  echo "You cannot use union semun for semctl IPC_STAT." >&4
10540         also=''
10541         ;;
10542     esac
10543
10544     : see whether semctl IPC_STAT can use struct semid_ds pointer
10545     $cat > try.c <<'END'
10546 #include <sys/types.h>
10547 #include <sys/ipc.h>
10548 #include <sys/sem.h>
10549 #include <sys/stat.h>
10550 #include "try.h"
10551 #include <stdio.h>
10552 #include <errno.h>
10553 #ifndef errno
10554 extern int errno;
10555 #endif
10556 int main() {
10557     struct semid_ds arg;
10558     int sem, st;
10559
10560 #if defined(IPC_PRIVATE) && defined(S_IRWXU) && defined(S_IRWXG) &&  defined(S_IRWXO) && defined(IPC_CREAT)
10561     sem = semget(IPC_PRIVATE, 1, S_IRWXU|S_IRWXG|S_IRWXO|IPC_CREAT);
10562     if (sem > -1) {
10563 #       ifdef IPC_STAT
10564         st = semctl(sem, 0, IPC_STAT, &arg);
10565         if (st == 0)
10566             printf("semid_ds\n");
10567         else
10568 #       endif /* IPC_STAT */
10569             printf("semctl IPC_STAT failed: errno = %d\n", errno);
10570 #       ifdef IPC_RMID
10571         if (semctl(sem, 0, IPC_RMID, &arg) != 0)
10572 #       endif /* IPC_RMID */
10573             printf("semctl IPC_RMID failed: errno = %d\n", errno);
10574     } else
10575 #endif /* IPC_PRIVATE && ... */
10576         printf("semget failed: errno = %d\n", errno);
10577
10578     return 0;
10579 }
10580 END
10581     val="$undef"
10582     set try
10583     if eval $compile; then
10584         xxx=`./try`
10585         case "$xxx" in
10586         semid_ds) val="$define" ;;
10587         esac
10588     fi
10589     $rm -f try try.c
10590     set d_semctl_semid_ds
10591     eval $setvar
10592     case "$d_semctl_semid_ds" in
10593     $define)
10594         echo "You can $also use struct semid_ds* for semctl IPC_STAT." >&4
10595         ;;
10596     *)  echo "You cannot use struct semid_ds* for semctl IPC_STAT." >&4
10597         ;;
10598     esac
10599     $rm -f try.h
10600     ;;
10601 *)  val="$undef"
10602
10603     # We do not have the full sem*(2) library, so assume we can not
10604     # use either.
10605
10606     set d_semctl_semun
10607     eval $setvar
10608
10609     set d_semctl_semid_ds
10610     eval $setvar
10611     ;;
10612 esac
10613
10614 : see if setegid exists
10615 set setegid d_setegid
10616 eval $inlibc
10617
10618 : see if seteuid exists
10619 set seteuid d_seteuid
10620 eval $inlibc
10621
10622 : see if setgrent exists
10623 set setgrent d_setgrent
10624 eval $inlibc
10625
10626 : see if sethostent exists
10627 set sethostent d_sethent
10628 eval $inlibc
10629
10630 : see if setlinebuf exists
10631 set setlinebuf d_setlinebuf
10632 eval $inlibc
10633
10634 : see if setlocale exists
10635 set setlocale d_setlocale
10636 eval $inlibc
10637
10638 : see if setnetent exists
10639 set setnetent d_setnent
10640 eval $inlibc
10641
10642 : see if setprotoent exists
10643 set setprotoent d_setpent
10644 eval $inlibc
10645
10646 : see if setpgid exists
10647 set setpgid d_setpgid
10648 eval $inlibc
10649
10650 : see if setpgrp2 exists
10651 set setpgrp2 d_setpgrp2
10652 eval $inlibc
10653
10654 : see if setpriority exists
10655 set setpriority d_setprior
10656 eval $inlibc
10657
10658 : see if setpwent exists
10659 set setpwent d_setpwent
10660 eval $inlibc
10661
10662 : see if setregid exists
10663 set setregid d_setregid
10664 eval $inlibc
10665 set setresgid d_setresgid
10666 eval $inlibc
10667
10668 : see if setreuid exists
10669 set setreuid d_setreuid
10670 eval $inlibc
10671 set setresuid d_setresuid
10672 eval $inlibc
10673
10674 : see if setrgid exists
10675 set setrgid d_setrgid
10676 eval $inlibc
10677
10678 : see if setruid exists
10679 set setruid d_setruid
10680 eval $inlibc
10681
10682 : see if setservent exists
10683 set setservent d_setsent
10684 eval $inlibc
10685
10686 : see if setsid exists
10687 set setsid d_setsid
10688 eval $inlibc
10689
10690 : see if setspent exists
10691 set setspent d_setspent
10692 eval $inlibc
10693
10694 : see if setvbuf exists
10695 set setvbuf d_setvbuf
10696 eval $inlibc
10697
10698 : see if sfio.h is available
10699 set sfio.h i_sfio
10700 eval $inhdr
10701
10702
10703 : see if sfio library is available
10704 case "$i_sfio" in
10705 $define)
10706         val=''
10707         set sfreserve val
10708         eval $inlibc
10709         ;;
10710 *)
10711         val="$undef"
10712         ;;
10713 esac
10714 : Ok, but do we want to use it.
10715 case "$val" in
10716 $define)
10717         case "$usesfio" in
10718         true|$define|[yY]*) dflt='y';;
10719         *) dflt='n';;
10720         esac
10721         echo "$package can use the sfio library, but it is experimental."
10722         rp="You seem to have sfio available, do you want to try using it?"
10723         . ./myread
10724         case "$ans" in
10725         y|Y) ;;
10726         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
10727                 val="$undef"
10728                 : Remove sfio from list of libraries to use
10729                 set `echo X $libs | $sed -e 's/-lsfio / /' -e 's/-lsfio$//'`
10730                 shift
10731                 libs="$*"
10732                 echo "libs = $libs" >&4
10733                 ;;
10734         esac
10735         ;;
10736 *)      case "$usesfio" in
10737         true|$define|[yY]*)
10738                 echo "Sorry, cannot find sfio on this machine" >&4
10739                 echo "Ignoring your setting of usesfio=$usesfio" >&4
10740                 ;;
10741         esac
10742         ;;
10743 esac
10744 set d_sfio
10745 eval $setvar
10746 case "$d_sfio" in
10747 $define) usesfio='true';;
10748 *) usesfio='false';;
10749 esac
10750
10751 : see if shmctl exists
10752 set shmctl d_shmctl
10753 eval $inlibc
10754
10755 : see if shmget exists
10756 set shmget d_shmget
10757 eval $inlibc
10758
10759 : see if shmat exists
10760 set shmat d_shmat
10761 eval $inlibc
10762 : see what shmat returns
10763 case "$d_shmat" in
10764 "$define")
10765         $cat >shmat.c <<'END'
10766 #include <sys/shm.h>
10767 void *shmat();
10768 END
10769         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
10770                 shmattype='void *'
10771         else
10772                 shmattype='char *'
10773         fi
10774         echo "and it returns ($shmattype)." >&4
10775         : see if a prototype for shmat is available
10776         xxx=`./findhdr sys/shm.h`
10777         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
10778         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
10779                 val="$define"
10780         else
10781                 val="$undef"
10782         fi
10783         $rm -f shmat.[co]
10784         ;;
10785 *)
10786         val="$undef"
10787         ;;
10788 esac
10789 set d_shmatprototype
10790 eval $setvar
10791
10792 : see if shmdt exists
10793 set shmdt d_shmdt
10794 eval $inlibc
10795
10796 : see how much of the 'shm*(2)' library is present.
10797 h_shm=true
10798 echo " "
10799 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
10800 *"$undef"*) h_shm=false;;
10801 esac
10802 case "$osname" in
10803 freebsd)
10804     case "`ipcs 2>&1`" in
10805     "SVID shared memory"*"not configured"*)
10806         echo "Your $osname does not have the shm*(2) configured." >&4
10807         h_shm=false
10808         val="$undef"
10809         set shmctl d_shmctl
10810         evat $setvar
10811         set shmget d_shmget
10812         evat $setvar
10813         set shmat d_shmat
10814         evat $setvar
10815         set shmdt d_shmdt
10816         evat $setvar
10817         ;;
10818     esac
10819     ;;
10820 esac
10821 : we could also check for sys/ipc.h ...
10822 if $h_shm && $test `./findhdr sys/shm.h`; then
10823         echo "You have the full shm*(2) library." >&4
10824         val="$define"
10825 else
10826         echo "You don't have the full shm*(2) library." >&4
10827         val="$undef"
10828 fi
10829 set d_shm
10830 eval $setvar
10831
10832 echo " "
10833 : see if we have sigaction
10834 if set sigaction val -f d_sigaction; eval $csym; $val; then
10835         echo 'sigaction() found.' >&4
10836         $cat > try.c <<'EOP'
10837 #include <stdio.h>
10838 #include <sys/types.h>
10839 #include <signal.h>
10840 int main()
10841 {
10842     struct sigaction act, oact;
10843     act.sa_flags = 0;
10844     oact.sa_handler = 0;
10845     /* so that act and oact are used */
10846     exit(act.sa_flags == 0 &&  oact.sa_handler == 0);
10847 }
10848 EOP
10849         set try
10850         if eval $compile_ok; then
10851                 val="$define"
10852         else
10853                 echo "But you don't seem to have a useable struct sigaction." >&4
10854                 val="$undef"
10855         fi
10856 else
10857         echo 'sigaction NOT found.' >&4
10858         val="$undef"
10859 fi
10860 set d_sigaction; eval $setvar
10861 $rm -f try try$_o try.c
10862
10863 : see if sigsetjmp exists
10864 echo " "
10865 case "$d_sigsetjmp" in
10866 '')
10867         $cat >try.c <<'EOP'
10868 #include <setjmp.h>
10869 sigjmp_buf env;
10870 int set = 1;
10871 int main()
10872 {
10873         if (sigsetjmp(env,1))
10874                 exit(set);
10875         set = 0;
10876         siglongjmp(env, 1);
10877         exit(1);
10878 }
10879 EOP
10880         set try
10881         if eval $compile; then
10882                 if ./try >/dev/null 2>&1; then
10883                         echo "POSIX sigsetjmp found." >&4
10884                         val="$define"
10885                 else
10886                         $cat >&4 <<EOM
10887 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
10888 I'll ignore them.
10889 EOM
10890                         val="$undef"
10891                 fi
10892         else
10893                 echo "sigsetjmp not found." >&4
10894                 val="$undef"
10895         fi
10896         ;;
10897 *) val="$d_sigsetjmp"
10898         case "$d_sigsetjmp" in
10899         $define) echo "POSIX sigsetjmp found." >&4;;
10900         $undef) echo "sigsetjmp not found." >&4;;
10901         esac
10902         ;;
10903 esac
10904 set d_sigsetjmp
10905 eval $setvar
10906 $rm -f try.c try
10907
10908 : see if sys/stat.h is available
10909 set sys/stat.h i_sysstat
10910 eval $inhdr
10911
10912
10913 : see if stat knows about block sizes
10914 echo " "
10915 echo "Checking to see if your struct stat has st_blocks field..." >&4
10916 set d_statblks stat st_blocks $i_sysstat sys/stat.h
10917 eval $hasfield
10918
10919
10920 : see if this is a sys/vfs.h system
10921 set sys/vfs.h i_sysvfs
10922 eval $inhdr
10923
10924
10925 : see if this is a sys/statfs.h system
10926 set sys/statfs.h i_sysstatfs
10927 eval $inhdr
10928
10929
10930 echo " "
10931 echo "Checking to see if your system supports struct statfs..." >&4
10932 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
10933 eval $hasstruct
10934 case "$d_statfs_s" in
10935 "$define")      echo "Yes, it does."   ;;
10936 *)              echo "No, it doesn't." ;;
10937 esac
10938
10939
10940
10941 : see if struct statfs knows about f_flags
10942 case "$d_statfs_s" in
10943 define) 
10944         echo " "
10945         echo "Checking to see if your struct statfs has f_flags field..." >&4
10946         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
10947         eval $hasfield
10948         ;;
10949 *)      val="$undef"
10950         set d_statfs_f_flags
10951         eval $setvar
10952         ;;
10953 esac
10954 case "$d_statfs_f_flags" in
10955 "$define")      echo "Yes, it does."   ;;
10956 *)              echo "No, it doesn't." ;;
10957 esac
10958
10959 : see if _ptr and _cnt from stdio act std
10960 echo " "
10961 if $contains '_IO_fpos_t' `./findhdr stdio.h` `./findhdr libio.h` >/dev/null 2>&1 ; then
10962         echo "(Looks like you have stdio.h from Linux.)"
10963         case "$stdio_ptr" in
10964         '') stdio_ptr='((fp)->_IO_read_ptr)'
10965                 ptr_lval=$define
10966                 ;;
10967         *)      ptr_lval=$d_stdio_ptr_lval;;
10968         esac
10969         case "$stdio_cnt" in
10970         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
10971                 cnt_lval=$undef
10972                 ;;
10973         *)      cnt_lval=$d_stdio_cnt_lval;;
10974         esac
10975         case "$stdio_base" in
10976         '') stdio_base='((fp)->_IO_read_base)';;
10977         esac
10978         case "$stdio_bufsiz" in
10979         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
10980         esac
10981 else
10982         case "$stdio_ptr" in
10983         '') stdio_ptr='((fp)->_ptr)'
10984                 ptr_lval=$define
10985                 ;;
10986         *)      ptr_lval=$d_stdio_ptr_lval;;
10987         esac
10988         case "$stdio_cnt" in
10989         '') stdio_cnt='((fp)->_cnt)'
10990                 cnt_lval=$define
10991                 ;;
10992         *)      cnt_lval=$d_stdio_cnt_lval;;
10993         esac
10994         case "$stdio_base" in
10995         '') stdio_base='((fp)->_base)';;
10996         esac
10997         case "$stdio_bufsiz" in
10998         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
10999         esac
11000 fi
11001 : test whether _ptr and _cnt really work
11002 echo "Checking how std your stdio is..." >&4
11003 $cat >try.c <<EOP
11004 #include <stdio.h>
11005 #define FILE_ptr(fp)    $stdio_ptr
11006 #define FILE_cnt(fp)    $stdio_cnt
11007 int main() {
11008         FILE *fp = fopen("try.c", "r");
11009         char c = getc(fp);
11010         if (
11011                 18 <= FILE_cnt(fp) &&
11012                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
11013         )
11014                 exit(0);
11015         exit(1);
11016 }
11017 EOP
11018 val="$undef"
11019 set try
11020 if eval $compile; then
11021         if ./try; then
11022                 echo "Your stdio acts pretty std."
11023                 val="$define"
11024         else
11025                 echo "Your stdio isn't very std."
11026         fi
11027 else
11028         echo "Your stdio doesn't appear very std."
11029 fi
11030 $rm -f try.c try
11031 set d_stdstdio
11032 eval $setvar
11033
11034 : Can _ptr be used as an lvalue?
11035 case "$d_stdstdio$ptr_lval" in
11036 $define$define) val=$define ;;
11037 *) val=$undef ;;
11038 esac
11039 set d_stdio_ptr_lval
11040 eval $setvar
11041
11042 : Can _cnt be used as an lvalue?
11043 case "$d_stdstdio$cnt_lval" in
11044 $define$define) val=$define ;;
11045 *) val=$undef ;;
11046 esac
11047 set d_stdio_cnt_lval
11048 eval $setvar
11049
11050 : see if _base is also standard
11051 val="$undef"
11052 case "$d_stdstdio" in
11053 $define)
11054         $cat >try.c <<EOP
11055 #include <stdio.h>
11056 #define FILE_base(fp)   $stdio_base
11057 #define FILE_bufsiz(fp) $stdio_bufsiz
11058 int main() {
11059         FILE *fp = fopen("try.c", "r");
11060         char c = getc(fp);
11061         if (
11062                 19 <= FILE_bufsiz(fp) &&
11063                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
11064         )
11065                 exit(0);
11066         exit(1);
11067 }
11068 EOP
11069         set try
11070         if eval $compile; then
11071                 if ./try; then
11072                         echo "And its _base field acts std."
11073                         val="$define"
11074                 else
11075                         echo "But its _base field isn't std."
11076                 fi
11077         else
11078                 echo "However, it seems to be lacking the _base field."
11079         fi
11080         $rm -f try.c try
11081         ;;
11082 esac
11083 set d_stdiobase
11084 eval $setvar
11085
11086 $cat >&4 <<EOM
11087 Checking how to access stdio streams by file descriptor number...
11088 EOM
11089 case "$stdio_stream_array" in
11090 '')     $cat >try.c <<EOCP
11091 #include <stdio.h>
11092 int main() {
11093   if (&STDIO_STREAM_ARRAY[fileno(stdin)] == stdin)
11094     printf("yes\n");
11095 }
11096 EOCP
11097         for s in _iob __iob __sF
11098         do
11099                 set try -DSTDIO_STREAM_ARRAY=$s
11100                 if eval $compile; then
11101                         case "`./try$exe_ext`" in
11102                         yes)    stdio_stream_array=$s; break ;;
11103                         esac
11104                 fi
11105         done
11106         $rm -f try.* try$exe_ext
11107 esac
11108 case "$stdio_stream_array" in
11109 '')     $cat >&4 <<EOM
11110 I can't figure out how to access stdio streams by file descriptor number.
11111 EOM
11112         d_stdio_stream_array="$undef"
11113         ;;
11114 *)      $cat >&4 <<EOM
11115 You can access stdio streams by file descriptor number by the $stdio_stream_array array.
11116 EOM
11117         d_stdio_stream_array="$define"
11118         ;;
11119 esac
11120
11121 : see if strcoll exists
11122 set strcoll d_strcoll
11123 eval $inlibc
11124
11125 : check for structure copying
11126 echo " "
11127 echo "Checking to see if your C compiler can copy structs..." >&4
11128 $cat >try.c <<'EOCP'
11129 int main()
11130 {
11131         struct blurfl {
11132                 int dyick;
11133         } foo, bar;
11134
11135         foo = bar;
11136 }
11137 EOCP
11138 if $cc -c try.c >/dev/null 2>&1 ; then
11139         val="$define"
11140         echo "Yup, it can."
11141 else
11142         val="$undef"
11143         echo "Nope, it can't."
11144 fi
11145 set d_strctcpy
11146 eval $setvar
11147 $rm -f try.*
11148
11149 : see if strerror and/or sys_errlist[] exist
11150 echo " "
11151 if test "X$d_strerror" = X -o "X$d_syserrlst" = X; then
11152     if set strerror val -f d_strerror; eval $csym; $val; then
11153                 echo 'strerror() found.' >&4
11154                 d_strerror="$define"
11155                 d_strerrm='strerror(e)'
11156                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11157                         echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
11158                         d_syserrlst="$define"
11159                 else
11160                         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
11161                         d_syserrlst="$undef"
11162                 fi
11163     elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
11164                         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
11165                 echo 'strerror() found in string header.' >&4
11166                 d_strerror="$define"
11167                 d_strerrm='strerror(e)'
11168                 if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
11169                         echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
11170                                 d_syserrlst="$define"
11171                 else
11172                         echo "(You don't appear to have any sys_errlist[], how can this be?)"
11173                         d_syserrlst="$undef"
11174                 fi
11175     elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
11176                 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
11177                 d_strerror="$undef"
11178                 d_syserrlst="$define"
11179                 d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
11180     else
11181                 echo 'strerror() and sys_errlist[] NOT found.' >&4
11182                 d_strerror="$undef"
11183                 d_syserrlst="$undef"
11184                 d_strerrm='"unknown"'
11185     fi
11186 fi
11187
11188 : see if strtod exists
11189 set strtod d_strtod
11190 eval $inlibc
11191
11192 : see if strtol exists
11193 set strtol d_strtol
11194 eval $inlibc
11195
11196 : see if strtold exists
11197 set strtold d_strtold
11198 eval $inlibc
11199
11200 : see if strtoll exists
11201 set strtoll d_strtoll
11202 eval $inlibc
11203
11204 : see if strtoul exists
11205 set strtoul d_strtoul
11206 eval $inlibc
11207
11208 : see if strtoull exists
11209 set strtoull d_strtoull
11210 eval $inlibc
11211
11212 : see if strtouq exists
11213 set strtouq d_strtouq
11214 eval $inlibc
11215
11216 : see if strxfrm exists
11217 set strxfrm d_strxfrm
11218 eval $inlibc
11219
11220 : see if symlink exists
11221 set symlink d_symlink
11222 eval $inlibc
11223
11224 : see if syscall exists
11225 set syscall d_syscall
11226 eval $inlibc
11227
11228 : see if sysconf exists
11229 set sysconf d_sysconf
11230 eval $inlibc
11231
11232 : see if system exists
11233 set system d_system
11234 eval $inlibc
11235
11236 : see if tcgetpgrp exists
11237 set tcgetpgrp d_tcgetpgrp
11238 eval $inlibc
11239
11240 : see if tcsetpgrp exists
11241 set tcsetpgrp d_tcsetpgrp
11242 eval $inlibc
11243
11244 : see if prototype for telldir is available
11245 echo " "
11246 set d_telldirproto telldir $i_systypes sys/types.h $i_dirent dirent.h
11247 eval $hasproto
11248
11249 : see if this is a sys/times.h system
11250 set sys/times.h i_systimes
11251 eval $inhdr
11252
11253 : see if times exists
11254 echo " "
11255 if set times val -f d_times; eval $csym; $val; then
11256         echo 'times() found.' >&4
11257         d_times="$define"
11258         inc=''
11259         case "$i_systimes" in
11260         "$define") inc='sys/times.h';;
11261         esac
11262         rp="What is the type returned by times() on this system?"
11263         set clock_t clocktype long stdio.h sys/types.h $inc
11264         eval $typedef_ask
11265 else
11266         echo 'times() NOT found, hope that will do.' >&4
11267         d_times="$undef"
11268         clocktype='int'
11269 fi
11270
11271 : see if truncate exists
11272 set truncate d_truncate
11273 eval $inlibc
11274
11275 : see if tzname[] exists
11276 echo " "
11277 if set tzname val -a d_tzname; eval $csym; $val; then
11278         val="$define"
11279         echo 'tzname[] found.' >&4
11280 else
11281         val="$undef"
11282         echo 'tzname[] NOT found.' >&4
11283 fi
11284 set d_tzname
11285 eval $setvar
11286
11287 : see if umask exists
11288 set umask d_umask
11289 eval $inlibc
11290
11291 : see if ustat exists
11292 set ustat d_ustat
11293 eval $inlibc
11294
11295 : backward compatibility for d_hvfork
11296 if test X$d_hvfork != X; then
11297         d_vfork="$d_hvfork"
11298         d_hvfork=''
11299 fi
11300 : see if there is a vfork
11301 val=''
11302 set vfork val
11303 eval $inlibc
11304
11305 : Ok, but do we want to use it. vfork is reportedly unreliable in 
11306 : perl on Solaris 2.x, and probably elsewhere.
11307 case "$val" in
11308 $define)
11309         echo " "
11310         case "$usevfork" in
11311         false) dflt='n';;
11312         *) dflt='y';;
11313         esac
11314         cat <<'EOM'
11315  
11316 Perl can only use a vfork() that doesn't suffer from strict
11317 restrictions on calling functions or modifying global data in
11318 the child.  For example, glibc-2.1 contains such a vfork()
11319 that is unsuitable.  If your system provides a proper fork()
11320 call, chances are that you do NOT want perl to use vfork().
11321
11322 EOM
11323         rp="Do you still want to use vfork()?"
11324         . ./myread
11325         case "$ans" in
11326         y|Y) ;;
11327         *)
11328                 echo "Ok, we won't use vfork()."
11329                 val="$undef"
11330                 ;;
11331         esac
11332         ;;
11333 esac
11334 set d_vfork
11335 eval $setvar
11336 case "$d_vfork" in
11337 $define) usevfork='true';;
11338 *) usevfork='false';;
11339 esac
11340
11341 : see if this is an sysdir system
11342 set sys/dir.h i_sysdir
11343 eval $inhdr
11344
11345 : see if this is an sysndir system
11346 set sys/ndir.h i_sysndir
11347 eval $inhdr
11348
11349 : see if closedir exists
11350 set closedir d_closedir
11351 eval $inlibc
11352
11353 case "$d_closedir" in
11354 "$define")
11355         echo " "
11356         echo "Checking whether closedir() returns a status..." >&4
11357         cat > closedir.c <<EOM
11358 #$i_dirent I_DIRENT             /**/
11359 #$i_sysdir I_SYS_DIR            /**/
11360 #$i_sysndir I_SYS_NDIR          /**/
11361 #$i_systypes I_SYS_TYPES        /**/
11362
11363 #if defined(I_SYS_TYPES)
11364 #include <sys/types.h>
11365 #endif
11366 #if defined(I_DIRENT)
11367 #include <dirent.h>
11368 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
11369 #include <sys/dir.h>
11370 #endif
11371 #else
11372 #ifdef I_SYS_NDIR
11373 #include <sys/ndir.h>
11374 #else
11375 #ifdef I_SYS_DIR
11376 #ifdef hp9000s500
11377 #include <ndir.h>       /* may be wrong in the future */
11378 #else
11379 #include <sys/dir.h>
11380 #endif
11381 #endif
11382 #endif
11383 #endif 
11384 int main() { return closedir(opendir(".")); }
11385 EOM
11386         set closedir
11387         if eval $compile_ok; then
11388                 if ./closedir > /dev/null 2>&1 ; then
11389                         echo "Yes, it does."
11390                         val="$undef"
11391                 else
11392                         echo "No, it doesn't."
11393                         val="$define"
11394                 fi
11395         else
11396                 echo "(I can't seem to compile the test program--assuming it doesn't)"
11397                 val="$define"
11398         fi
11399         ;;
11400 *)
11401         val="$undef";
11402         ;;
11403 esac
11404 set d_void_closedir
11405 eval $setvar
11406 $rm -f closedir*
11407 : check for volatile keyword
11408 echo " "
11409 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
11410 $cat >try.c <<'EOCP'
11411 int main()
11412 {
11413         typedef struct _goo_struct goo_struct;
11414         goo_struct * volatile goo = ((goo_struct *)0);
11415         struct _goo_struct {
11416                 long long_int;
11417                 int reg_int;
11418                 char char_var;
11419         };
11420         typedef unsigned short foo_t;
11421         char *volatile foo;
11422         volatile int bar;
11423         volatile foo_t blech;
11424         foo = foo;
11425 }
11426 EOCP
11427 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
11428         val="$define"
11429         echo "Yup, it does."
11430 else
11431         val="$undef"
11432         echo "Nope, it doesn't."
11433 fi
11434 set d_volatile
11435 eval $setvar
11436 $rm -f try.*
11437
11438 : see if there is a wait4
11439 set wait4 d_wait4
11440 eval $inlibc
11441
11442 : see if waitpid exists
11443 set waitpid d_waitpid
11444 eval $inlibc
11445
11446 : see if wcstombs exists
11447 set wcstombs d_wcstombs
11448 eval $inlibc
11449
11450 : see if wctomb exists
11451 set wctomb d_wctomb
11452 eval $inlibc
11453
11454 : preserve RCS keywords in files with variable substitution, grrr
11455 Date='$Date'
11456 Id='$Id'
11457 Log='$Log'
11458 RCSfile='$RCSfile'
11459 Revision='$Revision'
11460
11461 case "$crosscompile" in
11462 ''|[nN]*) crosscompile="$undef" ;;
11463 esac
11464
11465 case "$osname" in
11466 next|rhapsody) multiarch="$define" ;;
11467 esac
11468 case "$multiarch" in
11469 ''|[nN]*) multiarch="$undef" ;;
11470 esac
11471
11472 : check for alignment requirements
11473 echo " "
11474 case "$crosscompile$multiarch" in
11475 *$define*)
11476         $cat <<EOM
11477 You seem to be either cross-compiling or doing a multiarchitecture build,
11478 skipping the memory alignment check.
11479
11480 EOM
11481         case "$alignbytes" in
11482         '') alignbytes=8 ;;
11483         esac
11484         ;;
11485 *)
11486         case "$alignbytes" in
11487         '') echo "Checking alignment constraints..." >&4
11488                 $cat >try.c <<'EOCP'
11489 #include <stdio.h>
11490 struct foobar {
11491         char foo;
11492         double bar;
11493 } try_algn;
11494 int main()
11495 {
11496     printf("%d\n", (int)((char *)&try_algn.bar - (char *)&try_algn.foo));
11497     return(0);
11498 }
11499 EOCP
11500                 set try
11501                 if eval $compile_ok; then
11502                         dflt=`./try`
11503                 else
11504                         dflt='8'
11505                         echo "(I can't seem to compile the test program...)"
11506                 fi
11507                 ;;
11508         *) dflt="$alignbytes"
11509                 ;;
11510         esac
11511         rp="Doubles must be aligned on a how-many-byte boundary?"
11512         . ./myread
11513         alignbytes="$ans"
11514         $rm -f try.c try
11515         ;;
11516 esac
11517
11518
11519 : check for ordering of bytes in a long
11520 echo " "
11521 case "$crosscompile$multiarch" in
11522 *$define*)
11523         $cat <<EOM
11524 You seem to be either cross-compiling or doing a multiarchitecture build,
11525 skipping the byteorder check.
11526
11527 EOM
11528         byteorder='0xffff'
11529         ;;
11530 *)
11531         case "$byteorder" in
11532         '')
11533                 $cat <<'EOM'
11534 In the following, larger digits indicate more significance.  A big-endian
11535 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
11536 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
11537 machines may have weird orders like 3412.  A Cray will report 87654321,
11538 an Alpha will report 12345678. If the test program works the default is
11539 probably right.
11540 I'm now running the test program...
11541 EOM
11542                 $cat >try.c <<'EOCP'
11543 #include <stdio.h>
11544 int main()
11545 {
11546         int i;
11547         union {
11548                 unsigned long l;
11549                 char c[sizeof(long)];
11550         } u;
11551
11552         if (sizeof(long) > 4)
11553                 u.l = (0x08070605L << 32) | 0x04030201L;
11554         else
11555                 u.l = 0x04030201L;
11556         for (i = 0; i < sizeof(long); i++)
11557                 printf("%c", u.c[i]+'0');
11558         printf("\n");
11559         exit(0);
11560 }
11561 EOCP
11562                 xxx_prompt=y
11563                 set try
11564                 if eval $compile && ./try > /dev/null; then
11565                         dflt=`./try`
11566                         case "$dflt" in
11567                         [1-4][1-4][1-4][1-4]|12345678|87654321)
11568                                 echo "(The test program ran ok.)"
11569                                 echo "byteorder=$dflt"
11570                                 xxx_prompt=n
11571                         ;;
11572                         ????|????????) echo "(The test program ran ok.)" ;;
11573                         *) echo "(The test program didn't run right for some reason.)" ;;
11574                         esac
11575                 else
11576                         dflt='4321'
11577                         cat <<'EOM'
11578 (I can't seem to compile the test program.  Guessing big-endian...)
11579 EOM
11580                 fi
11581                 case "$xxx_prompt" in
11582                 y)
11583                         rp="What is the order of bytes in a long?"
11584                         . ./myread
11585                         byteorder="$ans"
11586                         ;;
11587                 *)      byteorder=$dflt
11588                         ;;
11589                 esac
11590                 ;;
11591         esac
11592         $rm -f try.c try
11593         ;;
11594 esac
11595
11596
11597 : how do we catenate cpp tokens here?
11598 echo " "
11599 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
11600 $cat >cpp_stuff.c <<'EOCP'
11601 #define RCAT(a,b)a/**/b
11602 #define ACAT(a,b)a ## b
11603 RCAT(Rei,ser)
11604 ACAT(Cir,cus)
11605 EOCP
11606 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
11607 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
11608         echo "Oh!  Smells like ANSI's been here." >&4
11609         echo "We can catify or stringify, separately or together!"
11610         cpp_stuff=42
11611 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
11612         echo "Ah, yes!  The good old days!" >&4
11613         echo "However, in the good old days we don't know how to stringify and"
11614         echo "catify at the same time."
11615         cpp_stuff=1
11616 else
11617         $cat >&4 <<EOM
11618 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
11619 to have to edit the values of CAT[2-5] in config.h...
11620 EOM
11621         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
11622 fi
11623 $rm -f cpp_stuff.*
11624
11625 : see if this is a db.h system
11626 set db.h i_db
11627 eval $inhdr
11628
11629 case "$i_db" in
11630 $define)
11631         : Check db version.
11632         echo " "
11633         echo "Checking Berkeley DB version ..." >&4
11634         $cat >try.c <<EOCP
11635 #$d_const HASCONST
11636 #ifndef HASCONST
11637 #define const
11638 #endif
11639 #include <sys/types.h>
11640 #include <stdio.h>
11641 #include <db.h>
11642 int main()
11643 {
11644 #ifdef DB_VERSION_MAJOR /* DB version >= 2 */
11645     int Major, Minor, Patch ;
11646     unsigned long Version ;
11647     (void)db_version(&Major, &Minor, &Patch) ;
11648     printf("You have Berkeley DB Version 2 or greater\n");
11649
11650     printf("db.h is from Berkeley DB Version %d.%d.%d\n",
11651                 DB_VERSION_MAJOR, DB_VERSION_MINOR, DB_VERSION_PATCH);
11652     printf("libdb is from Berkeley DB Version %d.%d.%d\n",
11653                 Major, Minor, Patch) ;
11654
11655     /* check that db.h & libdb are compatible */
11656     if (DB_VERSION_MAJOR != Major || DB_VERSION_MINOR != Minor || DB_VERSION_PATCH != Patch) {
11657         printf("db.h and libdb are incompatible\n") ;
11658         exit(3);        
11659     }
11660
11661     printf("db.h and libdb are compatible\n") ;
11662
11663     Version = DB_VERSION_MAJOR * 1000000 + DB_VERSION_MINOR * 1000
11664                 + DB_VERSION_PATCH ;
11665
11666     /* needs to be >= 2.3.4 */
11667     if (Version < 2003004) {
11668     /* if (DB_VERSION_MAJOR == 2 && DB_VERSION_MINOR == 0 && DB_VERSION_PATCH < 5) { */
11669         printf("but Perl needs Berkeley DB 2.3.4 or greater\n") ;
11670         exit(2);        
11671     }
11672
11673     exit(0);
11674 #else
11675 #if defined(_DB_H_) && defined(BTREEMAGIC) && defined(HASHMAGIC)
11676     printf("You have Berkeley DB Version 1\n");
11677     exit(0);    /* DB version < 2: the coast is clear. */
11678 #else
11679     exit(1);    /* <db.h> not Berkeley DB? */
11680 #endif
11681 #endif
11682 }
11683 EOCP
11684         set try
11685         if eval $compile_ok && ./try; then
11686                 echo 'Looks OK.' >&4
11687         else
11688                 echo "I can't use Berkeley DB with your <db.h>.  I'll disable Berkeley DB." >&4
11689                 i_db=$undef
11690                 case " $libs " in
11691                 *"-ldb "*)
11692                         : Remove db from list of libraries to use
11693                         echo "Removing unusable -ldb from library list" >&4
11694                         set `echo X $libs | $sed -e 's/-ldb / /' -e 's/-ldb$//'`
11695                         shift
11696                         libs="$*"
11697                         echo "libs = $libs" >&4
11698                         ;;
11699                 esac
11700         fi
11701         $rm -f try.*
11702         ;;
11703 esac
11704
11705 case "$i_db" in
11706 define)
11707         : Check the return type needed for hash 
11708         echo " "
11709         echo "Checking return type needed for hash for Berkeley DB ..." >&4
11710         $cat >try.c <<EOCP
11711 #$d_const HASCONST
11712 #ifndef HASCONST
11713 #define const
11714 #endif
11715 #include <sys/types.h>
11716 #include <db.h>
11717
11718 #ifndef DB_VERSION_MAJOR
11719 u_int32_t hash_cb (ptr, size)
11720 const void *ptr;
11721 size_t size;
11722 {
11723 }
11724 HASHINFO info;
11725 int main()
11726 {
11727         info.hash = hash_cb;
11728 }
11729 #endif
11730 EOCP
11731         if $cc $ccflags -c try.c >try.out 2>&1 ; then
11732                 if $contains warning try.out >>/dev/null 2>&1 ; then
11733                         db_hashtype='int'
11734                 else
11735                         db_hashtype='u_int32_t'
11736                 fi
11737         else
11738                 : XXX Maybe we should just give up here.
11739                 db_hashtype=u_int32_t
11740                 $cat try.out >&4
11741                 echo "Help:  I can't seem to compile the db test program." >&4
11742                 echo "Something's wrong, but I'll assume you use $db_hashtype." >&4
11743         fi
11744         $rm -f try.*
11745         echo "Your version of Berkeley DB uses $db_hashtype for hash."
11746         ;;
11747 *)      db_hashtype=u_int32_t
11748         ;;
11749 esac
11750 case "$i_db" in
11751 define)
11752         : Check the return type needed for prefix 
11753         echo " "
11754         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
11755         cat >try.c <<EOCP
11756 #$d_const HASCONST
11757 #ifndef HASCONST
11758 #define const
11759 #endif
11760 #include <sys/types.h>
11761 #include <db.h>
11762
11763 #ifndef DB_VERSION_MAJOR
11764 size_t prefix_cb (key1, key2)
11765 const DBT *key1;
11766 const DBT *key2;
11767 {
11768 }
11769 BTREEINFO info;
11770 int main()
11771 {
11772         info.prefix = prefix_cb;
11773 }
11774 #endif
11775 EOCP
11776         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
11777                 if $contains warning try.out >>/dev/null 2>&1 ; then
11778                         db_prefixtype='int'
11779                 else
11780                         db_prefixtype='size_t'
11781                 fi
11782         else
11783                 db_prefixtype='size_t'
11784                 : XXX Maybe we should just give up here.
11785                 $cat try.out >&4
11786                 echo "Help:  I can't seem to compile the db test program." >&4
11787                 echo "Something's wrong, but I'll assume you use $db_prefixtype." >&4
11788         fi
11789         $rm -f try.*
11790         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
11791         ;;
11792 *)      db_prefixtype='size_t'
11793         ;;
11794 esac
11795
11796 : check for void type
11797 echo " "
11798 echo "Checking to see how well your C compiler groks the void type..." >&4
11799 case "$voidflags" in
11800 '')
11801         $cat >try.c <<'EOCP'
11802 #if TRY & 1
11803 void sub() {
11804 #else
11805 sub() {
11806 #endif
11807         extern void moo();      /* function returning void */
11808         void (*goo)();          /* ptr to func returning void */
11809 #if TRY & 8
11810         void *hue;              /* generic ptr */
11811 #endif
11812 #if TRY & 2
11813         void (*foo[10])();
11814 #endif
11815
11816 #if TRY & 4
11817         if(goo == moo) {
11818                 exit(0);
11819         }
11820 #endif
11821         exit(0);
11822 }
11823 int main() { sub(); }
11824 EOCP
11825         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
11826                 voidflags=$defvoidused
11827         echo "Good.  It appears to support void to the level $package wants.">&4
11828                 if $contains warning .out >/dev/null 2>&1; then
11829                         echo "However, you might get some warnings that look like this:"
11830                         $cat .out
11831                 fi
11832         else
11833 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
11834                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
11835                         echo "It supports 1..."
11836                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
11837                                 echo "It also supports 2..."
11838                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
11839                                         voidflags=7
11840                                         echo "And it supports 4 but not 8 definitely."
11841                                 else
11842                                         echo "It doesn't support 4..."
11843                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
11844                                                 voidflags=11
11845                                                 echo "But it supports 8."
11846                                         else
11847                                                 voidflags=3
11848                                                 echo "Neither does it support 8."
11849                                         fi
11850                                 fi
11851                         else
11852                                 echo "It does not support 2..."
11853                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
11854                                         voidflags=13
11855                                         echo "But it supports 4 and 8."
11856                                 else
11857                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
11858                                                 voidflags=5
11859                                                 echo "And it supports 4 but has not heard about 8."
11860                                         else
11861                                                 echo "However it supports 8 but not 4."
11862                                         fi
11863                                 fi
11864                         fi
11865                 else
11866                         echo "There is no support at all for void."
11867                         voidflags=0
11868                 fi
11869         fi
11870 esac
11871 case "$voidflags" in
11872 "$defvoidused") ;;
11873 *)      $cat >&4 <<'EOM'
11874   Support flag bits are:
11875     1: basic void declarations.
11876     2: arrays of pointers to functions returning void.
11877     4: operations between pointers to and addresses of void functions.
11878     8: generic void pointers.
11879 EOM
11880         dflt="$voidflags";
11881         rp="Your void support flags add up to what?"
11882         . ./myread
11883         voidflags="$ans"
11884         ;;
11885 esac
11886 $rm -f try.* .out
11887
11888
11889 : How can we generate normalized random numbers ?
11890 echo " "
11891 echo "Looking for a random number function..." >&4
11892 case "$randfunc" in
11893 '')
11894         if set drand48 val -f; eval $csym; $val; then
11895                 dflt="drand48"
11896                 echo "Good, found drand48()." >&4
11897         elif set random val -f; eval $csym; $val; then
11898                 dflt="random"
11899                 echo "OK, found random()." >&4
11900         else
11901                 dflt="rand"
11902                 echo "Yick, looks like I have to use rand()." >&4
11903         fi
11904         echo " "
11905         ;;
11906 *)
11907         dflt="$randfunc"
11908         ;;
11909 esac
11910 cont=true
11911
11912 case "$ccflags" in
11913 *-Dmy_rand=*|*-Dmy_srand=*)
11914         echo "Removing obsolete -Dmy_rand, -Dmy_srand, and -Drandbits from ccflags." >&4
11915         ccflags="`echo $ccflags | sed -e 's/-Dmy_rand=random/ /'`"
11916         ccflags="`echo $ccflags | sed -e 's/-Dmy_srand=srandom/ /'`"
11917         ccflags="`echo $ccflags | sed -e 's/-Drandbits=[0-9][0-9]*/ /'`"
11918         ;;
11919 esac
11920
11921 while $test "$cont"; do
11922         rp="Use which function to generate random numbers?"
11923         . ./myread
11924         if $test "$ans" = "$dflt"; then
11925                 : null
11926         else
11927                 randbits=''
11928         fi
11929         randfunc="$ans"
11930         if set $ans val -f; eval $csym; $val; then
11931                 cont=''
11932         else
11933                 dflt=y
11934                 rp="I cannot find function $ans. Use that name anyway?"
11935                 . ./myread
11936                 dflt=rand
11937                 case "$ans" in
11938                         [yY]*) cont='';;
11939                 esac
11940         fi
11941         case "$cont" in
11942         '')
11943                 case "$randfunc" in
11944                 drand48)
11945                         drand01="drand48()"
11946                         seedfunc="srand48"
11947                         randbits=48
11948                         randseedtype=long
11949                         ;;
11950                 rand|random)
11951                         case "$randbits" in
11952                         '')
11953 echo "Checking to see how many bits your $randfunc() function produces..." >&4
11954                                 $cat >try.c <<EOCP
11955 #$i_unistd I_UNISTD
11956 #$i_stdlib I_STDLIB
11957 #include <stdio.h>
11958 #ifdef I_UNISTD
11959 #  include <unistd.h>
11960 #endif
11961 #ifdef I_STDLIB
11962 #  include <stdlib.h>
11963 #endif
11964 int main()
11965 {
11966         register int i;
11967         register unsigned long tmp;
11968         register unsigned long max = 0L;
11969
11970         for (i = 1000; i; i--) {
11971                 tmp = (unsigned long) $randfunc();
11972                 if (tmp > max) max = tmp;
11973         }
11974         for (i = 0; max; i++)
11975                 max /= 2;
11976         printf("%d\n",i);
11977 }
11978 EOCP
11979                                 set try
11980                                 if eval $compile_ok; then
11981                                         dflt=`try`
11982                                 else
11983                                         dflt='?'
11984                                         echo "(I can't seem to compile the test program...)"
11985                                 fi
11986                                 ;;
11987                         *)
11988                                 dflt="$randbits"
11989                                 ;;
11990                         esac
11991                         rp="How many bits does your $randfunc() function produce?"
11992                         . ./myread
11993                         randbits="$ans"
11994                         $rm -f try.c try
11995                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
11996                         seedfunc="s$randfunc"
11997                         randseedtype=unsigned
11998                         ;;
11999                 *)
12000                         dflt="31"
12001                         rp="How many bits does your $randfunc() function produce?"
12002                         . ./myread
12003                         randbits="$ans"
12004                         seedfunc="s$randfunc"
12005                         drand01="($randfunc() / (double) ((unsigned long)1 << $randbits))"
12006                         if set $seedfunc val -f; eval $csym; $val; then
12007                                 echo "(Using $seedfunc() to seed random generator)"
12008                         else
12009                                 echo "(Warning: no $seedfunc() to seed random generator)"
12010                                 seedfunc=rand
12011                         fi
12012                         randseedtype=unsigned
12013                         ;;
12014                 esac
12015                 ;;
12016         esac
12017 done
12018
12019 echo " "
12020 echo "Determining whether or not we are on an EBCDIC system..." >&4
12021 $cat >tebcdic.c <<'EOM'
12022 int main()
12023 {
12024   if ('M'==0xd4) return 0;
12025   return 1;
12026 }
12027 EOM
12028
12029 val=$undef
12030 set tebcdic
12031 if eval $compile_ok; then
12032         if ./tebcdic; then
12033                 echo "You have EBCDIC." >&4
12034                 val="$define"
12035         else
12036                 echo "Nope, no EBCDIC, probably ASCII or some ISO Latin." >&4
12037         fi
12038 else
12039         echo "I'm unable to compile the test program." >&4
12040         echo "I'll assume ASCII or some ISO Latin." >&4
12041 fi
12042 $rm -f tebcdic.c tebcdic
12043 set ebcdic
12044 eval $setvar
12045
12046 echo " "
12047 $cat >&4 <<EOM
12048 Checking how to flush all pending stdio output...
12049 EOM
12050 # I only know how to find the first 32 possibly open files on SunOS.
12051 # See also hints/sunos_4_1.sh and util.c  --AD
12052 case "$osname" in
12053 sunos) $echo '#define PERL_FFLUSH_ALL_FOPEN_MAX 32' > try.c ;;
12054 esac
12055 $cat >>try.c <<EOCP
12056 #include <stdio.h>
12057 #$i_unistd I_UNISTD
12058 #ifdef I_UNISTD
12059 # include <unistd.h>
12060 #endif
12061 #$d_sysconf HAS_SYSCONF
12062 #$d_stdio_stream_array HAS_STDIO_STREAM_ARRAY
12063 #ifdef HAS_STDIO_STREAM_ARRAY
12064 # define STDIO_STREAM_ARRAY $stdio_stream_array
12065 #endif
12066 int main() {
12067   FILE* p = fopen("try.out", "w");
12068 #ifdef TRY_FPUTC
12069   fputc('x', p);
12070 #else
12071 # ifdef TRY_FPRINTF
12072   fprintf(p, "x");
12073 # endif
12074 #endif
12075 #ifdef TRY_FFLUSH_NULL
12076   fflush(NULL);
12077 #endif
12078 #ifdef TRY_FFLUSH_ALL
12079   {
12080     long open_max = -1;
12081 # ifdef PERL_FFLUSH_ALL_FOPEN_MAX
12082     open_max = PERL_FFLUSH_ALL_FOPEN_MAX;
12083 # else
12084 #  if defined(HAS_SYSCONF) && defined(_SC_OPEN_MAX)
12085     open_max = sysconf(_SC_OPEN_MAX);
12086 #  else
12087 #   ifdef FOPEN_MAX
12088     open_max = FOPEN_MAX;
12089 #   else
12090 #    ifdef OPEN_MAX
12091     open_max = OPEN_MAX;
12092 #    else
12093 #     ifdef _NFILE
12094     open_max = _NFILE;
12095 #     endif
12096 #    endif
12097 #   endif
12098 #  endif
12099 # endif 
12100 # ifdef HAS_STDIO_STREAM_ARRAY
12101     if (open_max > 0) {
12102       long i;
12103       for (i = 0; i < open_max; i++)
12104             if (STDIO_STREAM_ARRAY[i]._file >= 0 &&
12105                 STDIO_STREAM_ARRAY[i]._file < open_max &&
12106                 STDIO_STREAM_ARRAY[i]._flag)
12107                 fflush(&STDIO_STREAM_ARRAY[i]);
12108     }   
12109   }
12110 # endif
12111 #endif
12112   _exit(42);
12113 }
12114 EOCP
12115 : first we have to find out how _not_ to flush
12116 if $test "X$fflushNULL" = X -o "X$fflushall" = X; then
12117     output=''
12118     set try -DTRY_FPUTC
12119     if eval $compile; then
12120             $rm -f try.out
12121             ./try$exe_ext 2>/dev/null
12122             if $test ! -s try.out -a "X$?" = X42; then
12123                 output=-DTRY_FPUTC
12124             fi
12125     fi
12126     case "$output" in
12127     '')
12128             set try -DTRY_FPRINTF
12129             $rm -f try.out
12130             if eval $compile; then
12131                     $rm -f try.out
12132                     ./try$exe_ext 2>/dev/null
12133                     if $test ! -s try.out -a "X$?" = X42; then
12134                         output=-DTRY_FPRINTF
12135                     fi
12136             fi
12137         ;;
12138     esac
12139 fi
12140 : check for fflush NULL behaviour
12141 case "$fflushNULL" in
12142 '')     set try -DTRY_FFLUSH_NULL $output
12143         if eval $compile; then
12144                 $rm -f try.out
12145                 ./try$exe_ext 2>/dev/null
12146                 code="$?"
12147                 if $test -s try.out -a "X$code" = X42; then
12148                         fflushNULL="`$cat try.out`"
12149                 else
12150                         if $test "X$code" != X42; then
12151                                 $cat >&4 <<EOM
12152 (If this test failed, don't worry, we'll try another method shortly.)
12153 EOM
12154                         fi
12155                 fi
12156         fi
12157         $rm -f core try.core core.try.*
12158         case "$fflushNULL" in
12159         x)      $cat >&4 <<EOM
12160 Your fflush(NULL) works okay.
12161 EOM
12162                 fflushNULL="$define"
12163                 ;;
12164         '')     $cat >&4 <<EOM
12165 Your fflush(NULL) isn't working (contrary to ANSI C).
12166 EOM
12167                 fflushNULL="$undef"
12168                 ;;
12169         *)      $cat >&4 <<EOM
12170 Cannot figure out whether your fflush(NULL) works or not.
12171 I'm assuming it doesn't (contrary to ANSI C).
12172 EOM
12173                 fflushNULL="$undef"
12174                 ;;
12175         esac
12176         ;;
12177 $define|true|[yY]*)
12178         fflushNULL="$define"
12179         ;;
12180 *)
12181         fflushNULL="$undef"
12182         ;;
12183 esac
12184 : check explicit looping only if NULL did not work
12185 case "$fflushNULL" in
12186 "$undef")
12187         : check for fflush all behaviour
12188         case "$fflushall" in
12189         '')     set try -DTRY_FFLUSH_ALL $output
12190                 if eval $compile; then
12191                         $cat >&4 <<EOM
12192 (Now testing the other method--but note that also this may fail.)
12193 EOM
12194                         $rm -f try.out
12195                         ./try$exe_ext 2>/dev/null
12196                         if $test -s try.out -a "X$?" = X42; then
12197                                 fflushall="`$cat try.out`"
12198                         fi
12199                 fi
12200                 $rm -f core try.core core.try.*
12201                 case "$fflushall" in
12202                 x)      $cat >&4 <<EOM
12203 Whew. Flushing explicitly all the stdio streams works.
12204 EOM
12205                         fflushall="$define"
12206                         ;;
12207                 '')     $cat >&4 <<EOM
12208 Sigh. Flushing explicitly all the stdio streams doesn't work.
12209 EOM
12210                         fflushall="$undef"
12211                         ;;
12212                 *)      $cat >&4 <<EOM
12213 Cannot figure out whether flushing stdio streams explicitly works or not.
12214 I'm assuming it doesn't.
12215 EOM
12216                         fflushall="$undef"
12217                         ;;
12218                 esac
12219                 ;;
12220         "$define"|true|[yY]*)
12221                 fflushall="$define"
12222                 ;;
12223         *)
12224                 fflushall="$undef"
12225                 ;;
12226         esac
12227         ;;
12228 *)      fflushall="$undef"      
12229         ;;
12230 esac
12231 case "$fflushNULL$fflushall" in
12232 undefundef)
12233         $cat <<EOM
12234 I cannot figure out how to flush pending stdio output.
12235 EOM
12236         ;;
12237 esac
12238 $rm -f try.* try$exe_ext
12239
12240 : Store the full pathname to the ar program for use in the C program
12241 : Respect a hint or command line value for full_ar.
12242 case "$full_ar" in
12243 '') full_ar=$ar ;;
12244 esac
12245
12246 : Store the full pathname to the sed program for use in the C program
12247 full_sed=$sed
12248
12249 : see what type gids are declared as in the kernel
12250 echo " "
12251 echo "Looking for the type for group ids returned by getgid()."
12252 set gid_t gidtype xxx stdio.h sys/types.h
12253 eval $typedef
12254 case "$gidtype" in
12255 xxx)
12256         xxx=`./findhdr sys/user.h`
12257         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
12258         case $1 in
12259         unsigned) dflt="$1 $2" ;;
12260         *) dflt="$1" ;;
12261         esac
12262         ;;
12263 *) dflt="$gidtype";;
12264 esac
12265 case "$gidtype" in
12266 gid_t) echo "gid_t found." ;;
12267 *)      rp="What is the type for group ids returned by getgid()?"
12268         . ./myread
12269         gidtype="$ans"
12270         ;;
12271 esac
12272
12273 echo " "
12274 case "$gidtype" in
12275 *_t) zzz="$gidtype"     ;;
12276 *)   zzz="gid"          ;;
12277 esac
12278 echo "Checking the size of $zzz..." >&4 
12279 cat > try.c <<EOCP
12280 #include <sys/types.h>
12281 #include <stdio.h>
12282 int main() {
12283     printf("%d\n", (int)sizeof($gidtype));
12284     exit(0);
12285 }
12286 EOCP
12287 set try
12288 if eval $compile_ok; then
12289         yyy=`./try`
12290         case "$yyy" in
12291         '')     gidsize=4
12292                 echo "(I can't execute the test program--guessing $gidsize.)" >&4
12293                 ;;
12294         *)      gidsize=$yyy
12295                 echo "Your $zzz size is $gidsize bytes."
12296                 ;;
12297         esac
12298 else
12299         gidsize=4
12300         echo "(I can't compile the test program--guessing $gidsize.)" >&4
12301 fi
12302
12303
12304 echo " "
12305 case "$gidtype" in
12306 *_t) zzz="$gidtype"     ;;
12307 *)   zzz="gid"          ;;
12308 esac
12309 echo "Checking the sign of $zzz..." >&4 
12310 cat > try.c <<EOCP
12311 #include <sys/types.h>
12312 #include <stdio.h>
12313 int main() {
12314         $gidtype foo = -1;
12315         if (foo < 0)
12316                 printf("-1\n");
12317         else
12318                 printf("1\n");
12319 }
12320 EOCP
12321 set try
12322 if eval $compile; then
12323         yyy=`./try`
12324         case "$yyy" in
12325         '')     gidsign=1
12326                 echo "(I can't execute the test program--guessing unsigned.)" >&4
12327                 ;;
12328         *)      gidsign=$yyy
12329                 case "$gidsign" in
12330                  1) echo "Your $zzz is unsigned." ;;
12331                 -1) echo "Your $zzz is signed."   ;;
12332                 esac
12333                 ;;
12334         esac
12335 else
12336         gidsign=1
12337         echo "(I can't compile the test program--guessing unsigned.)" >&4
12338 fi
12339
12340
12341 echo " "
12342
12343 if $test X"$quadtype" != X; then
12344
12345 echo "Checking how to print 64-bit integers..." >&4
12346
12347 if $test X"$sPRId64" = X -a X"$quadtype" = Xint; then
12348         $cat >try.c <<'EOCP'
12349 #include <sys/types.h>
12350 #include <stdio.h>
12351 int main() {
12352   int q = 12345678901;
12353   printf("%ld\n", q);
12354 }
12355 EOCP
12356         set try
12357         if eval $compile; then
12358                 yyy=`./try$exe_ext`
12359                 case "$yyy" in
12360                 12345678901)
12361                         sPRId64='"d"'; sPRIi64='"i"'; sPRIu64='"u"';
12362                         sPRIo64='"o"'; sPRIx64='"x"'; sPRIX64='"X"';
12363                         echo "We will use %d."
12364                         ;;
12365                 esac
12366         fi
12367 fi
12368
12369 if $test X"$sPRId64" = X -a X"$quadtype" = Xlong; then
12370         $cat >try.c <<'EOCP'
12371 #include <sys/types.h>
12372 #include <stdio.h>
12373 int main() {
12374   long q = 12345678901;
12375   printf("%ld\n", q);
12376 }
12377 EOCP
12378         set try
12379         if eval $compile; then
12380                 yyy=`./try$exe_ext`
12381                 case "$yyy" in
12382                 12345678901)
12383                         sPRId64='"ld"'; sPRIi64='"li"'; sPRIu64='"lu"';
12384                         sPRIo64='"lo"'; sPRIx64='"lx"'; sPRIX64='"lX"';
12385                         echo "We will use %ld."
12386                         ;;
12387                 esac
12388         fi
12389 fi
12390
12391 if $test X"$sPRId64" = X -a X"$i_inttypes" = X"$define" -a X"$quadtype" = Xint64_t; then
12392         $cat >try.c <<'EOCP'
12393 #include <sys/types.h>
12394 #include <inttypes.h>
12395 #include <stdio.h>
12396 int main() {
12397   int64_t q = 12345678901;
12398   printf("%" PRId64 "\n", q);
12399 }
12400 EOCP
12401         set try
12402         if eval $compile; then
12403                 yyy=`./try$exe_ext`
12404                 case "$yyy" in
12405                 12345678901)
12406                         sPRId64=PRId64; sPRIi64=PRIi64; sPRIu64=PRIu64;
12407                         sPRIo64=PRIo64; sPRIx64=PRIx64; sPRIX64=PRIX64;
12408                         echo "We will use the C9X style."
12409                         ;;
12410                 esac
12411         fi
12412 fi
12413
12414 if $test X"$sPRId64" = X -a X"$quadtype" = X"long long"; then
12415         $cat >try.c <<'EOCP'
12416 #include <sys/types.h>
12417 #include <stdio.h>
12418 int main() {
12419   long long q = 12345678901LL; /* AIX cc requires the LL prefix. */
12420   printf("%lld\n", q);
12421 }
12422 EOCP
12423         set try
12424         if eval $compile; then
12425                 yyy=`./try$exe_ext`
12426                 case "$yyy" in
12427                 12345678901)
12428                         sPRId64='"lld"'; sPRIi64='"lli"'; sPRIu64='"llu"';
12429                         sPRIo64='"llo"'; sPRIx64='"llx"'; sPRIX64='"llX"';
12430                         echo "We will use the %lld style."
12431                         ;;
12432                 esac
12433         fi
12434 fi
12435
12436 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12437         $cat >try.c <<EOCP
12438 #include <sys/types.h>
12439 #include <stdio.h>
12440 int main() {
12441   $quadtype q = 12345678901;
12442   printf("%Ld\n", q);
12443 }
12444 EOCP
12445         set try
12446         if eval $compile; then
12447                 yyy=`./try$exe_ext`
12448                 case "$yyy" in
12449                 12345678901)
12450                         sPRId64='"Ld"'; sPRIi64='"Li"'; sPRIu64='"Lu"';
12451                         sPRIo64='"Lo"'; sPRIx64='"Lx"'; sPRIX64='"LX"';
12452                         echo "We will use %Ld."
12453                         ;;
12454                 esac
12455         fi
12456 fi
12457
12458 if $test X"$sPRId64" = X -a X"$quadtype" != X; then
12459         $cat >try.c <<EOCP
12460 #include <sys/types.h>
12461 #include <stdio.h>
12462 int main() {
12463   $quadtype q = 12345678901;
12464   printf("%qd\n", q);
12465 }
12466 EOCP
12467         set try
12468         if eval $compile; then
12469                 yyy=`./try$exe_ext`
12470                 case "$yyy" in
12471                 12345678901)
12472                         sPRId64='"qd"'; sPRIi64='"qi"'; sPRIu64='"qu"';
12473                         sPRIo64='"qo"'; sPRIx64='"qx"'; sPRIX64='"qX"';
12474                         echo "We will use %qd."
12475                         ;;
12476                 esac
12477         fi
12478 fi
12479
12480 if $test X"$sPRId64" = X; then
12481         echo "Cannot figure out how to print 64-bit integers." >&4
12482 fi
12483
12484 $rm -f try try.*
12485
12486 fi
12487
12488 case "$sPRId64" in
12489 '')     d_PRId64="$undef"; d_PRIi64="$undef"; d_PRIu64="$undef"; 
12490         d_PRIo64="$undef"; d_PRIx64="$undef"; d_PRIX64="$undef"; 
12491         ;;
12492 *)      d_PRId64="$define"; d_PRIi64="$define"; d_PRIu64="$define"; 
12493         d_PRIo64="$define"; d_PRIx64="$define"; d_PRIX64="$define"; 
12494         ;;
12495 esac
12496
12497
12498 echo " "
12499 $echo "Checking the format strings to be used for Perl's internal types..." >&4
12500
12501 if $test X"$ivsize" = X8; then
12502         ivdformat="$sPRId64"
12503         uvuformat="$sPRIu64"
12504         uvoformat="$sPRIo64"
12505         uvxformat="$sPRIx64"
12506 else
12507         if $test X"$ivsize" = X"$longsize"; then
12508                 ivdformat='"ld"'
12509                 uvuformat='"lu"'
12510                 uvoformat='"lo"'
12511                 uvxformat='"lx"'
12512         else
12513                 if $test X"$ivsize" = X"$intsize"; then
12514                         ivdformat='"d"'
12515                         uvuformat='"u"'
12516                         uvoformat='"o"'
12517                         uvxformat='"x"'
12518                 else
12519                         : far out
12520                         if $test X"$ivsize" = X"$shortsize"; then
12521                                 ivdformat='"hd"'
12522                                 uvuformat='"hu"'
12523                                 uvoformat='"ho"'
12524                                 uvxformat='"hx"'
12525                         fi
12526                 fi
12527         fi
12528 fi
12529
12530 case "$ivdformat" in
12531 '') echo "$0: Fatal: failed to find format strings, cannot continue." >& 4
12532     exit 1
12533     ;;
12534 esac
12535
12536
12537 echo " "
12538 $echo "Checking the format string to be used for gids..." >&4
12539
12540 case "$gidsign" in
12541 -1)     if $test X"$gidsize" = X"$ivsize"; then
12542                 gidformat="$ivdformat"
12543         else
12544                 if $test X"$gidsize" = X"$longsize"; then
12545                         gidformat='"ld"'
12546                 else
12547                         if $test X"$gidsize" = X"$intsize"; then
12548                                 gidformat='"d"'
12549                         else
12550                                 if $test X"$gidsize" = X"$shortsize"; then
12551                                         gidformat='"hd"'
12552                                 fi
12553                         fi
12554                 fi
12555         fi
12556         ;;
12557 *)      if $test X"$gidsize" = X"$uvsize"; then
12558                 gidformat="$uvuformat"
12559         else
12560                 if $test X"$gidsize" = X"$longsize"; then
12561                         gidformat='"lu"'
12562                 else
12563                         if $test X"$gidsize" = X"$intsize"; then
12564                                 gidformat='"u"'
12565                         else
12566                                 if $test X"$gidsize" = X"$shortsize"; then
12567                                         gidformat='"hu"'
12568                                 fi
12569                         fi
12570                 fi
12571         fi
12572         ;;
12573 esac
12574
12575 : see if getgroups exists
12576 set getgroups d_getgrps
12577 eval $inlibc
12578
12579 : see if setgroups exists
12580 set setgroups d_setgrps
12581 eval $inlibc
12582
12583
12584 : Find type of 2nd arg to 'getgroups()' and 'setgroups()'
12585 echo " "
12586 case "$d_getgrps$d_setgrps" in
12587 *define*)
12588         case "$groupstype" in
12589         '') dflt="$gidtype" ;;
12590         *)  dflt="$groupstype" ;;
12591         esac
12592         $cat <<EOM
12593 What type of pointer is the second argument to getgroups() and setgroups()?
12594 Usually this is the same as group ids, $gidtype, but not always.
12595
12596 EOM
12597         rp='What type pointer is the second argument to getgroups() and setgroups()?'
12598         . ./myread
12599         groupstype="$ans"
12600         ;;
12601 *)  groupstype="$gidtype";;
12602 esac
12603
12604 echo " "
12605 echo "Checking if your $make program sets \$(MAKE)..." >&4
12606 case "$make_set_make" in
12607 '')
12608         $sed 's/^X //' > testmake.mak << 'EOF'
12609 Xall:
12610 X       @echo 'maketemp="$(MAKE)"'
12611 EOF
12612         case "`$make -f testmake.mak 2>/dev/null`" in
12613         *maketemp=*) make_set_make='#' ;;
12614         *)      make_set_make="MAKE=$make" ;;
12615         esac
12616         $rm -f testmake.mak
12617         ;;
12618 esac
12619 case "$make_set_make" in
12620 '#') echo "Yup, it does.";;
12621 *) echo "Nope, it doesn't.";;
12622 esac
12623
12624 : see what type is used for mode_t
12625 rp="What is the type used for file modes for system calls (e.g. fchmod())?"
12626 set mode_t modetype int stdio.h sys/types.h
12627 eval $typedef_ask
12628
12629 : define a fucntion to check prototypes
12630 $cat > protochk <<EOSH
12631 $startsh
12632 cc="$cc"
12633 optimize="$optimize"
12634 ccflags="$ccflags"
12635 prototype="$prototype"
12636 define="$define"
12637 rm=$rm
12638 EOSH
12639
12640 $cat >> protochk <<'EOSH'
12641
12642 $rm -f try.c
12643 foo="$1"
12644 shift
12645 while test $# -ge 2; do
12646         case "$1" in
12647                 $define) echo "#include <$2>" >> try.c ;;
12648                 literal) echo "$2" >> try.c ;;
12649         esac
12650     shift 2
12651 done
12652 test "$prototype" = "$define"  && echo '#define CAN_PROTOTYPE' >> try.c
12653 cat >> try.c <<'EOCP'
12654 #ifdef CAN_PROTOTYPE
12655 #define _(args) args
12656 #else
12657 #define _(args) ()
12658 #endif
12659 EOCP
12660 echo "$foo" >> try.c
12661 echo 'int no_real_function_has_this_name _((void)) { return 0; }' >> try.c
12662 $cc $optimize $ccflags -c try.c > /dev/null 2>&1
12663 status=$?
12664 $rm -f try.[co]
12665 exit $status
12666 EOSH
12667 chmod +x protochk
12668 $eunicefix protochk
12669
12670 : see what type is used for size_t
12671 rp="What is the type used for the length parameter for string functions?"
12672 set size_t sizetype 'unsigned int' stdio.h sys/types.h
12673 eval $typedef_ask
12674
12675 : check for type of arguments to gethostbyaddr. 
12676 if test "X$netdb_host_type" = X -o "X$netdb_hlen_type" = X; then
12677         case "$d_gethbyaddr" in
12678         $define)
12679                 $cat <<EOM
12680
12681 Checking to see what type of arguments are accepted by gethostbyaddr().
12682 EOM
12683                 hdrs="$define sys/types.h
12684                         $d_socket sys/socket.h 
12685                         $i_niin netinet/in.h 
12686                         $i_netdb netdb.h
12687                         $i_unistd unistd.h"
12688                 : The first arg can 'char *' or 'void *'
12689                 : The second arg is some of integral type
12690                 for xxx in in_addr_t 'const void *' 'const char *' 'void *' 'char *'; do
12691                         for yyy in size_t long int; do
12692                                 case "$netdb_host_type" in
12693                                 '')     try="extern struct hostent *gethostbyaddr($xxx, $yyy, int);"
12694                                         if ./protochk "$try" $hdrs; then
12695                                                 echo "Your system accepts $xxx for the first arg."
12696                                                 echo "...and $yyy for the second arg."
12697                                                 netdb_host_type="$xxx"
12698                                                 netdb_hlen_type="$yyy"
12699                                         fi
12700                                         ;;
12701                                 esac
12702                         done
12703                 done
12704                 : In case none of those worked, prompt the user.
12705                 case "$netdb_host_type" in
12706                 '')     rp='What is the type for the 1st argument to gethostbyaddr?'
12707                         dflt='char *'
12708                         . ./myread
12709                         netdb_host_type=$ans
12710                         rp='What is the type for the 2nd argument to gethostbyaddr?'
12711                         dflt="$sizetype"
12712                         . ./myread
12713                         netdb_hlen_type=$ans
12714                         ;;
12715                 esac
12716                 ;;
12717         *)      : no gethostbyaddr, so pick harmless defaults
12718                 netdb_host_type='char *'
12719                 netdb_hlen_type="$sizetype"
12720                 ;;
12721         esac
12722         # Remove the "const" if needed. -- but then we'll have a 
12723         # prototype clash!
12724         # netdb_host_type=`echo "$netdb_host_type" | sed 's/^const //'`
12725 fi
12726
12727 : check for type of argument to gethostbyname. 
12728 if test "X$netdb_name_type" = X ; then
12729         case "$d_gethbyname" in
12730         $define)
12731                 $cat <<EOM
12732
12733 Checking to see what type of argument is accepted by gethostbyname().
12734 EOM
12735                 hdrs="$define sys/types.h
12736                         $d_socket sys/socket.h 
12737                         $i_niin netinet/in.h 
12738                         $i_netdb netdb.h
12739                         $i_unistd unistd.h"
12740                 for xxx in "const char *" "char *"; do
12741                         case "$netdb_name_type" in
12742                         '')     try="extern struct hostent *gethostbyname($xxx);"
12743                                 if ./protochk "$try" $hdrs; then
12744                                         echo "Your system accepts $xxx."
12745                                         netdb_name_type="$xxx"
12746                                 fi
12747                                 ;;
12748                         esac
12749                 done
12750                 : In case none of those worked, prompt the user.
12751                 case "$netdb_name_type" in
12752                 '')     rp='What is the type for the 1st argument to gethostbyname?'
12753                         dflt='char *'
12754                         . ./myread
12755                         netdb_name_type=$ans
12756                         ;;
12757                 esac
12758                 ;;
12759         *)      : no gethostbyname, so pick harmless default
12760                 netdb_name_type='char *'
12761                 ;;
12762         esac
12763 fi
12764
12765 : check for type of 1st argument to getnetbyaddr. 
12766 if test "X$netdb_net_type" = X ; then
12767         case "$d_getnbyaddr" in
12768         $define)
12769                 $cat <<EOM
12770
12771 Checking to see what type of 1st argument is accepted by getnetbyaddr().
12772 EOM
12773                 hdrs="$define sys/types.h
12774                         $d_socket sys/socket.h 
12775                         $i_niin netinet/in.h 
12776                         $i_netdb netdb.h
12777                         $i_unistd unistd.h"
12778                 for xxx in in_addr_t "unsigned long" long "unsigned int" int; do
12779                         case "$netdb_net_type" in
12780                         '')     try="extern struct netent *getnetbyaddr($xxx, int);"
12781                                 if ./protochk "$try" $hdrs; then
12782                                         echo "Your system accepts $xxx."
12783                                         netdb_net_type="$xxx"
12784                                 fi
12785                                 ;;
12786                         esac
12787                 done
12788                 : In case none of those worked, prompt the user.
12789                 case "$netdb_net_type" in
12790                 '')     rp='What is the type for the 1st argument to getnetbyaddr?'
12791                         dflt='long'
12792                         . ./myread
12793                         netdb_net_type=$ans
12794                         ;;
12795                 esac
12796                 ;;
12797         *)      : no getnetbyaddr, so pick harmless default
12798                 netdb_net_type='long'
12799                 ;;
12800         esac
12801 fi
12802 : locate the preferred pager for this system
12803 case "$pager" in
12804 '')
12805         dflt=''
12806         case "$pg" in
12807         /*) dflt=$pg;;
12808         esac
12809         case "$more" in
12810         /*) dflt=$more;;
12811         esac
12812         case "$less" in
12813         /*) dflt=$less;;
12814         esac
12815         case "$dflt" in
12816         '') dflt=/usr/ucb/more;;
12817         esac
12818         ;;
12819 *) dflt="$pager";;
12820 esac
12821 echo " "
12822 fn=f/
12823 rp='What pager is used on your system?'
12824 . ./getfile
12825 pager="$ans"
12826
12827 : see what type pids are declared as in the kernel
12828 rp="What is the type of process ids on this system?"
12829 set pid_t pidtype int stdio.h sys/types.h
12830 eval $typedef_ask
12831
12832 : check for length of pointer
12833 echo " "
12834 case "$ptrsize" in
12835 '')
12836         $echo $n "Checking to see how big your pointers are...$c" >&4
12837         if test "$voidflags" -gt 7; then
12838                 echo '#define VOID_PTR char *' > try.c
12839         else
12840                 echo '#define VOID_PTR void *' > try.c
12841         fi
12842         $cat >>try.c <<'EOCP'
12843 #include <stdio.h>
12844 int main()
12845 {
12846     printf("%d\n", (int)sizeof(VOID_PTR));
12847     exit(0);
12848 }
12849 EOCP
12850         set try
12851         if eval $compile_ok; then
12852                 ptrsize=`./try`
12853                 $echo " $ptrsize bytes." >&4
12854         else
12855                 dflt='4'
12856                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
12857                 rp="What is the size of a pointer (in bytes)?"
12858                 . ./myread
12859                 ptrsize="$ans"
12860         fi
12861         ;;
12862 esac
12863 $rm -f try.c try
12864
12865 : see if ar generates random libraries by itself
12866 echo " "
12867 echo "Checking how to generate random libraries on your machine..." >&4
12868 echo 'int bar1() { return bar2(); }' > bar1.c
12869 echo 'int bar2() { return 2; }' > bar2.c
12870 $cat > foo.c <<'EOP'
12871 int main() { printf("%d\n", bar1()); exit(0); }
12872 EOP
12873 $cc $ccflags -c bar1.c >/dev/null 2>&1
12874 $cc $ccflags -c bar2.c >/dev/null 2>&1
12875 $cc $ccflags -c foo.c >/dev/null 2>&1
12876 $ar rc bar$_a bar2$_o bar1$_o >/dev/null 2>&1
12877 if $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12878         ./foobar >/dev/null 2>&1; then
12879         echo "$ar appears to generate random libraries itself."
12880         orderlib=false
12881         ranlib=":"
12882 elif $ar ts bar$_a >/dev/null 2>&1 &&
12883         $cc $ccflags $ldflags -o foobar foo$_o bar$_a $libs > /dev/null 2>&1 &&
12884         ./foobar >/dev/null 2>&1; then
12885                 echo "a table of contents needs to be added with '$ar ts'."
12886                 orderlib=false
12887                 ranlib="$ar ts"
12888 else
12889         case "$ranlib" in
12890         :) ranlib='';;
12891         '')
12892                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
12893                 $test -f $ranlib || ranlib=''
12894                 ;;
12895         esac
12896         if $test -n "$ranlib"; then
12897                 echo "your system has '$ranlib'; we'll use that."
12898                 orderlib=false
12899         else
12900                 echo "your system doesn't seem to support random libraries"
12901                 echo "so we'll use lorder and tsort to order the libraries."
12902                 orderlib=true
12903                 ranlib=":"
12904         fi
12905 fi
12906 $rm -f foo* bar* 
12907
12908 : check for type of arguments to select. 
12909 case "$selecttype" in
12910 '') case "$d_select" in
12911         $define)
12912                 echo " "
12913                 $cat <<EOM
12914 Checking to see what type of arguments are accepted by select().
12915 EOM
12916                 hdrs="$define sys/types.h
12917                         $i_systime sys/time.h 
12918                         $i_sysselct sys/select.h
12919                         $d_socket sys/socket.h"
12920                 : The first arg can be int, unsigned, or size_t
12921                 : The last arg may or may not be 'const'
12922                 val=''
12923                 : void pointer has been seen but using that
12924                 : breaks the selectminbits test
12925                 for xxx in 'fd_set *' 'int *'; do
12926                         for nfd in 'int' 'size_t' 'unsigned long' 'unsigned' ; do
12927                                 for tmo in 'struct timeval *' 'const struct timeval *'; do
12928                                         case "$val" in
12929                                         '')     try="extern select _(($nfd, $xxx, $xxx, $xxx, $tmo));"
12930                                                 if ./protochk "$try" $hdrs; then
12931                                                         echo "Your system accepts $xxx."
12932                                                         val="$xxx"
12933                                                 fi
12934                                                 ;;
12935                                         esac
12936                                 done
12937                         done
12938                 done
12939                 case "$val" in
12940                 '')     rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
12941                         case "$d_fd_set" in
12942                                 $define) dflt="fd_set *" ;;
12943                                 *)              dflt="int *" ;;
12944                         esac
12945                         . ./myread
12946                         val=$ans
12947                         ;;
12948                 esac
12949                 selecttype="$val"
12950                 ;;
12951         *)      : no select, so pick a harmless default
12952                 selecttype='int *'
12953                 ;;
12954         esac
12955         ;;
12956 esac
12957
12958 : check for the select 'width'
12959 case "$selectminbits" in
12960 '') case "$d_select" in
12961         $define)
12962                 $cat <<EOM
12963
12964 Checking to see on how many bits at a time your select() operates...
12965 EOM
12966                 $cat >try.c <<EOCP
12967 #include <sys/types.h>
12968 #$i_time I_TIME
12969 #$i_systime I_SYS_TIME
12970 #$i_systimek I_SYS_TIME_KERNEL
12971 #ifdef I_TIME
12972 #   include <time.h>
12973 #endif
12974 #ifdef I_SYS_TIME
12975 #   ifdef I_SYS_TIME_KERNEL
12976 #       define KERNEL
12977 #   endif
12978 #   include <sys/time.h>
12979 #   ifdef I_SYS_TIME_KERNEL
12980 #       undef KERNEL
12981 #   endif
12982 #endif
12983 #$i_sysselct I_SYS_SELECT
12984 #ifdef I_SYS_SELECT
12985 #include <sys/select.h>
12986 #endif
12987 #$d_socket HAS_SOCKET
12988 #ifdef HAS_SOCKET
12989 #   include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
12990 #endif
12991 #include <stdio.h>
12992 $selecttype b;
12993 #define S sizeof(*(b))
12994 #define MINBITS 64
12995 #define NBYTES (S * 8 > MINBITS ? S : MINBITS/8)
12996 #define NBITS  (NBYTES * 8)
12997 int main() {
12998     char s[NBYTES];
12999     struct timeval t;
13000     int i;
13001     FILE* fp;
13002     int fd;
13003
13004     fclose(stdin);
13005     fp = fopen("try.c", "r");
13006     if (fp == 0)
13007       exit(1);
13008     fd = fileno(fp);
13009     if (fd < 0)
13010       exit(2);
13011     b = ($selecttype)s;
13012     for (i = 0; i < NBITS; i++)
13013         FD_SET(i, b);
13014     t.tv_sec  = 0;
13015     t.tv_usec = 0;
13016     select(fd + 1, b, 0, 0, &t);
13017     for (i = NBITS - 1; i > fd && FD_ISSET(i, b); i--);
13018     printf("%d\n", i + 1);
13019     return 0;
13020 }
13021 EOCP
13022                 set try
13023                 if eval $compile_ok; then
13024                         selectminbits=`./try`
13025                         case "$selectminbits" in
13026                         '')     cat >&4 <<EOM
13027 Cannot figure out on how many bits at a time your select() operates.
13028 I'll play safe and guess it is 32 bits.
13029 EOM
13030                                 selectminbits=32
13031                                 bits="32 bits"
13032                                 ;;
13033                         1)      bits="1 bit" ;;
13034                         *)      bits="$selectminbits bits" ;;
13035                         esac
13036                         echo "Your select() operates on $bits at a time." >&4
13037                 else
13038                         rp='What is the minimum number of bits your select() operates on?'
13039                         case "$byteorder" in
13040                         1234|12345678)  dflt=32 ;;
13041                         *)              dflt=1  ;;
13042                         esac
13043                         . ./myread
13044                         val=$ans
13045                         selectminbits="$val"
13046                 fi
13047                 $rm -f try.* try
13048                 ;;
13049         *)      : no select, so pick a harmless default
13050                 selectminbits='32'
13051                 ;;
13052         esac
13053         ;;
13054 esac
13055
13056 : Trace out the files included by signal.h, then look for SIGxxx names.
13057 : Remove SIGARRAYSIZE used by HPUX.
13058 : Remove SIGSTKSIZE used by Linux.
13059 : Remove SIGSTKSZ used by Posix.
13060 : Remove SIGTYP void lines used by OS2.
13061 : Some cpps, like os390, dont give the file name anywhere
13062 if [ "X$fieldn" = X ]; then
13063         : Just make some guesses.  We check them later.
13064         xxx='/usr/include/signal.h /usr/include/sys/signal.h'
13065 else
13066         xxx=`echo '#include <signal.h>' |
13067         $cppstdin $cppminus $cppflags 2>/dev/null |
13068         $grep '^[       ]*#.*include' | 
13069         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
13070 fi
13071 : Check this list of files to be sure we have parsed the cpp output ok.
13072 : This will also avoid potentially non-existent files, such 
13073 : as ../foo/bar.h
13074 xxxfiles=''
13075 for xx in $xxx /dev/null ; do
13076         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
13077 done
13078 : If we have found no files, at least try signal.h
13079 case "$xxxfiles" in
13080 '')     xxxfiles=`./findhdr signal.h` ;;
13081 esac
13082 xxx=`awk '
13083 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $2 !~ /SIGSTKSIZE/ && $2 !~ /SIGSTKSZ/ && $3 !~ /void/ {
13084         print substr($2, 4, 20)
13085 }
13086 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
13087         print substr($3, 4, 20)
13088 }' $xxxfiles`
13089 : Append some common names just in case the awk scan failed.
13090 xxx="$xxx ABRT ALRM BUS CANCEL CHLD CLD CONT DIL EMT FPE"
13091 xxx="$xxx FREEZE HUP ILL INT IO IOT KILL LOST LWP PHONE"
13092 xxx="$xxx PIPE POLL PROF PWR QUIT RTMAX RTMIN SEGV STKFLT STOP"
13093 xxx="$xxx SYS TERM THAW TRAP TSTP TTIN TTOU URG USR1 USR2"
13094 xxx="$xxx USR3 USR4 VTALRM WAITING WINCH WIND WINDOW XCPU XFSZ"
13095
13096 : generate a few handy files for later
13097 $cat > signal.c <<'EOCP'
13098 #include <sys/types.h>
13099 #include <signal.h>
13100 #include <stdio.h>
13101 int main() {
13102
13103 /* Strange style to avoid deeply-nested #if/#else/#endif */
13104 #ifndef NSIG
13105 #  ifdef _NSIG
13106 #    define NSIG (_NSIG)
13107 #  endif
13108 #endif
13109
13110 #ifndef NSIG
13111 #  ifdef SIGMAX
13112 #    define NSIG (SIGMAX+1)
13113 #  endif
13114 #endif
13115
13116 #ifndef NSIG
13117 #  ifdef SIG_MAX
13118 #    define NSIG (SIG_MAX+1)
13119 #  endif
13120 #endif
13121
13122 #ifndef NSIG
13123 #  ifdef MAXSIG
13124 #    define NSIG (MAXSIG+1)
13125 #  endif
13126 #endif
13127
13128 #ifndef NSIG
13129 #  ifdef MAX_SIG
13130 #    define NSIG (MAX_SIG+1)
13131 #  endif
13132 #endif
13133
13134 #ifndef NSIG
13135 #  ifdef SIGARRAYSIZE
13136 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
13137 #  endif
13138 #endif
13139
13140 #ifndef NSIG
13141 #  ifdef _sys_nsig
13142 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
13143 #  endif
13144 #endif
13145
13146 /* Default to some arbitrary number that's big enough to get most
13147    of the common signals.
13148 */
13149 #ifndef NSIG
13150 #    define NSIG 50
13151 #endif
13152
13153 printf("NSIG %d\n", NSIG);
13154
13155 #ifndef JUST_NSIG
13156
13157 EOCP
13158
13159 echo $xxx | $tr ' ' $trnl | $sort | $uniq | $awk '
13160 {
13161         printf "#ifdef SIG"; printf $1; printf "\n"
13162         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
13163         printf $1; printf ");\n"
13164         printf "#endif\n"
13165 }
13166 END {
13167         printf "#endif /* JUST_NSIG */\n";
13168         printf "exit(0);\n}\n";
13169 }
13170 ' >>signal.c
13171 $cat >signal.awk <<'EOP'
13172 BEGIN { ndups = 0 }
13173 $1 ~ /^NSIG$/ { nsig = $2 }
13174 ($1 !~ /^NSIG$/) && (NF == 2) {
13175     if ($2 > maxsig) { maxsig = $2 }
13176     if (sig_name[$2]) {
13177         dup_name[ndups] = $1
13178         dup_num[ndups] = $2
13179         ndups++ 
13180     }
13181     else {
13182         sig_name[$2] = $1
13183         sig_num[$2] = $2
13184     }
13185 }
13186 END { 
13187     if (nsig == 0) {
13188         nsig = maxsig + 1
13189     }
13190     printf("NSIG %d\n", nsig);
13191     for (n = 1; n < nsig; n++) {
13192         if (sig_name[n]) {
13193             printf("%s %d\n", sig_name[n], sig_num[n])
13194         }
13195         else {
13196             printf("NUM%d %d\n", n, n) 
13197         }
13198     }
13199     for (n = 0; n < ndups; n++) {
13200         printf("%s %d\n", dup_name[n], dup_num[n])
13201     }
13202 }
13203 EOP
13204 $cat >signal_cmd <<EOS
13205 $startsh
13206 if $test -s signal.lst; then
13207     echo "Using your existing signal.lst file"
13208         exit 0
13209 fi
13210 xxx="$xxx"
13211 EOS
13212 $cat >>signal_cmd <<'EOS'
13213
13214 set signal
13215 if eval $compile_ok; then
13216         ./signal$_exe | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13217 else
13218         echo "(I can't seem be able to compile the whole test program)" >&4
13219         echo "(I'll try it in little pieces.)" >&4
13220         set signal -DJUST_NSIG
13221         if eval $compile_ok; then
13222                 ./signal$_exe > signal.nsg
13223                 $cat signal.nsg
13224         else
13225                 echo "I can't seem to figure out how many signals you have." >&4
13226                 echo "Guessing 50." >&4
13227                 echo 'NSIG 50' > signal.nsg
13228         fi
13229         : Now look at all the signal names, one at a time.
13230         for xx in `echo $xxx | $tr ' ' $trnl | $sort | $uniq`; do
13231                 $cat > signal.c <<EOCP
13232 #include <sys/types.h>
13233 #include <signal.h>
13234 #include <stdio.h>
13235 int main() {
13236 printf("$xx %d\n", SIG${xx});
13237 return 0;
13238 }
13239 EOCP
13240                 set signal
13241                 if eval $compile; then
13242                         echo "SIG${xx} found."
13243                         ./signal$_exe  >> signal.ls1
13244                 else
13245                         echo "SIG${xx} NOT found."
13246                 fi
13247         done
13248         if $test -s signal.ls1; then
13249                 $cat signal.nsg signal.ls1 |
13250                         $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
13251         fi
13252
13253 fi
13254 if $test -s signal.lst; then
13255         :
13256 else
13257         echo "(AAK! I can't compile the test programs -- Guessing)" >&4
13258         echo 'kill -l' >signal
13259         set X `csh -f <signal`
13260         $rm -f signal
13261         shift
13262         case $# in
13263         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
13264         esac
13265         echo $@ | $tr ' ' $trnl | \
13266             $awk '{ printf "%s %d\n", $1, ++s; }
13267                   END { printf "NSIG %d\n", ++s }' >signal.lst
13268 fi
13269 $rm -f signal.c signal$_exe signal$_o signal.nsg signal.ls1
13270 EOS
13271 chmod a+x signal_cmd
13272 $eunicefix signal_cmd
13273
13274 : generate list of signal names
13275 echo " "
13276 case "$sig_name_init" in
13277 '') doinit=yes ;;
13278 *)  case "$sig_num_init" in
13279     ''|*,*) doinit=yes ;;
13280     esac ;;
13281 esac
13282 case "$doinit" in
13283 yes)
13284         echo "Generating a list of signal names and numbers..." >&4
13285         . ./signal_cmd
13286         sig_count=`$awk '/^NSIG/ { printf "%d", $2 }' signal.lst`
13287         sig_name=`$awk 'BEGIN { printf "ZERO " }
13288                         !/^NSIG/ { printf "%s ", $1 }' signal.lst`
13289         sig_num=`$awk  'BEGIN { printf "0 " }
13290                         !/^NSIG/ { printf "%d ", $2 }' signal.lst`
13291         sig_name_init=`$awk 'BEGIN      { printf "\"ZERO\", " }
13292                              !/^NSIG/   { printf "\"%s\", ", $1 }
13293                              END        { printf "0\n" }' signal.lst`
13294         sig_num_init=`$awk  'BEGIN      { printf "0, " }
13295                              !/^NSIG/   { printf "%d, ", $2}
13296                              END        { printf "0\n"}' signal.lst`
13297         ;;
13298 esac
13299 echo "The following $sig_count signals are available:"
13300 echo " "
13301 echo $sig_name | $awk \
13302 'BEGIN { linelen = 0 }
13303 {
13304         for (i = 1; i <= NF; i++) {
13305                 name = "SIG" $i " "
13306                 linelen = linelen + length(name)
13307                 if (linelen > 70) {
13308                         printf "\n"
13309                         linelen = length(name)
13310                 }
13311                 printf "%s", name
13312         }
13313         printf "\n"
13314 }'
13315 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
13316
13317 : see what type is used for signed size_t
13318 set ssize_t ssizetype int stdio.h sys/types.h
13319 eval $typedef
13320 dflt="$ssizetype"
13321 $cat > ssize.c <<EOM
13322 #include <stdio.h>
13323 #include <sys/types.h>
13324 #define Size_t $sizetype
13325 #define SSize_t $dflt
13326 int main()
13327 {
13328         if (sizeof(Size_t) == sizeof(SSize_t))
13329                 printf("$dflt\n");
13330         else if (sizeof(Size_t) == sizeof(int))
13331                 printf("int\n");
13332         else 
13333                 printf("long\n");
13334         exit(0);
13335 }
13336 EOM
13337 echo " "
13338 set ssize
13339 if eval $compile_ok && ./ssize > /dev/null; then
13340         ssizetype=`./ssize`
13341         echo "I'll be using $ssizetype for functions returning a byte count." >&4
13342 else
13343         $cat >&4 <<EOM
13344 Help! I can't compile and run the ssize_t test program: please enlighten me!
13345 (This is probably a misconfiguration in your system or libraries, and
13346 you really ought to fix it.  Still, I'll try anyway.)
13347
13348 I need a type that is the same size as $sizetype, but is guaranteed to
13349 be signed.  Common values are ssize_t, int and long.
13350
13351 EOM
13352         rp="What signed type is the same size as $sizetype?"
13353         . ./myread
13354         ssizetype="$ans"
13355 fi
13356 $rm -f ssize ssize.*
13357
13358 : see what type of char stdio uses.
13359 echo " "
13360 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
13361         echo "Your stdio uses unsigned chars." >&4
13362         stdchar="unsigned char"
13363 else
13364         echo "Your stdio uses signed chars." >&4
13365         stdchar="char"
13366 fi
13367
13368 : see if time exists
13369 echo " "
13370 if test "X$d_time" = X -o X"$timetype" = X; then
13371     if set time val -f d_time; eval $csym; $val; then
13372                 echo 'time() found.' >&4
13373                 val="$define"
13374                 rp="What is the type returned by time() on this system?"
13375                 set time_t timetype long stdio.h sys/types.h
13376                 eval $typedef_ask
13377     else
13378                 echo 'time() not found, hope that will do.' >&4
13379                 val="$undef"
13380                 timetype='int';
13381     fi
13382     set d_time
13383     eval $setvar
13384 fi
13385
13386 : see what type uids are declared as in the kernel
13387 echo " "
13388 echo "Looking for the type for user ids returned by getuid()."
13389 set uid_t uidtype xxx stdio.h sys/types.h
13390 eval $typedef
13391 case "$uidtype" in
13392 xxx)
13393         xxx=`./findhdr sys/user.h`
13394         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
13395         case $1 in
13396         unsigned) dflt="$1 $2" ;;
13397         *) dflt="$1" ;;
13398         esac
13399         ;;
13400 *) dflt="$uidtype";;
13401 esac
13402 case "$uidtype" in
13403 uid_t)  echo "uid_t found." ;;
13404 *)      rp="What is the type for user ids returned by getuid()?"
13405         . ./myread
13406         uidtype="$ans"
13407         ;;
13408 esac
13409
13410 echo " "
13411 case "$uidtype" in
13412 *_t) zzz="$uidtype"     ;;
13413 *)   zzz="uid"          ;;
13414 esac
13415 echo "Checking the size of $zzz..." >&4 
13416 cat > try.c <<EOCP
13417 #include <sys/types.h>
13418 #include <stdio.h>
13419 int main() {
13420     printf("%d\n", (int)sizeof($uidtype));
13421     exit(0);
13422 }
13423 EOCP
13424 set try
13425 if eval $compile_ok; then
13426         yyy=`./try`
13427         case "$yyy" in
13428         '')     uidsize=4
13429                 echo "(I can't execute the test program--guessing $uidsize.)" >&4
13430                 ;;
13431         *)      uidsize=$yyy
13432                 echo "Your $zzz size is $uidsize bytes."
13433                 ;;
13434         esac
13435 else
13436         uidsize=4
13437         echo "(I can't compile the test program--guessing $uidsize.)" >&4
13438 fi
13439
13440 echo " "
13441 case "$uidtype" in
13442 *_t) zzz="$uidtype"     ;;
13443 *)   zzz="uid"          ;;
13444 esac
13445 echo "Checking the sign of $zzz..." >&4
13446 cat > try.c <<EOCP
13447 #include <sys/types.h>
13448 #include <stdio.h>
13449 int main() {
13450         $uidtype foo = -1;
13451         if (foo < 0)
13452                 printf("-1\n");
13453         else
13454                 printf("1\n");
13455 }
13456 EOCP
13457 set try
13458 if eval $compile; then
13459         yyy=`./try`
13460         case "$yyy" in
13461         '')     uidsign=1
13462                 echo "(I can't execute the test program--guessing unsigned.)" >&4
13463                 ;;
13464         *)      uidsign=$yyy
13465                 case "$uidsign" in
13466                  1) echo "Your $zzz is unsigned." ;;
13467                 -1) echo "Your $zzz is signed."   ;;
13468                 esac
13469                 ;;
13470         esac
13471 else
13472         uidsign=1
13473         echo "(I can't compile the test program--guessing unsigned.)" >&4
13474 fi
13475
13476
13477
13478 echo " "
13479 $echo "Checking the format string to be used for uids..." >&4
13480
13481 case "$uidsign" in
13482 -1)     if $test X"$uidsize" = X"$ivsize"; then
13483                 uidformat="$ivdformat"
13484         else
13485                 if $test X"$uidsize" = X"$longsize"; then
13486                         uidformat='"ld"'
13487                 else
13488                         if $test X"$uidsize" = X"$intsize"; then
13489                                 uidformat='"d"'
13490                         else
13491                                 if $test X"$uidsize" = X"$shortsize"; then
13492                                         uidformat='"hd"'
13493                                 fi
13494                         fi
13495                 fi
13496         fi
13497         ;;
13498 *)      if $test X"$uidsize" = X"$uvsize"; then
13499                 uidformat="$uvuformat"
13500         else
13501                 if $test X"$uidsize" = X"$longsize"; then
13502                         uidformat='"lu"'
13503                 else
13504                         if $test X"$uidsize" = X"$intsize"; then
13505                                 uidformat='"u"'
13506                         else
13507                                 if $test X"$uidsize" = X"$shortsize"; then
13508                                         uidformat='"hu"'
13509                                 fi
13510                         fi
13511                 fi
13512         fi
13513         ;;
13514 esac
13515
13516 : see if dbm.h is available
13517 : see if dbmclose exists
13518 set dbmclose d_dbmclose
13519 eval $inlibc
13520
13521 case "$d_dbmclose" in
13522 $define)
13523         set dbm.h i_dbm
13524         eval $inhdr
13525         case "$i_dbm" in
13526         $define)
13527                 val="$undef"
13528                 set i_rpcsvcdbm
13529                 eval $setvar
13530                 ;;
13531         *)      set rpcsvc/dbm.h i_rpcsvcdbm
13532                 eval $inhdr
13533                 ;;
13534         esac
13535         ;;
13536 *)      echo "We won't be including <dbm.h>"
13537         val="$undef"
13538         set i_dbm
13539         eval $setvar
13540         val="$undef"
13541         set i_rpcsvcdbm
13542         eval $setvar
13543         ;;
13544 esac
13545
13546 : see if this is a sys/file.h system
13547 val=''
13548 set sys/file.h val
13549 eval $inhdr
13550
13551 : do we need to include sys/file.h ?
13552 case "$val" in
13553 "$define")
13554         echo " "
13555         if $h_sysfile; then
13556                 val="$define"
13557                 echo "We'll be including <sys/file.h>." >&4
13558         else
13559                 val="$undef"
13560                 echo "We won't be including <sys/file.h>." >&4
13561         fi
13562         ;;
13563 *)
13564         h_sysfile=false
13565         ;;
13566 esac
13567 set i_sysfile
13568 eval $setvar
13569
13570 : see if fcntl.h is there
13571 val=''
13572 set fcntl.h val
13573 eval $inhdr
13574
13575 : see if we can include fcntl.h
13576 case "$val" in
13577 "$define")
13578         echo " "
13579         if $h_fcntl; then
13580                 val="$define"
13581                 echo "We'll be including <fcntl.h>." >&4
13582         else
13583                 val="$undef"
13584                 if $h_sysfile; then
13585         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
13586                 else
13587                         echo "We won't be including <fcntl.h>." >&4
13588                 fi
13589         fi
13590         ;;
13591 *)
13592         h_fcntl=false
13593         val="$undef"
13594         ;;
13595 esac
13596 set i_fcntl
13597 eval $setvar
13598
13599 : see if this is a iconv.h system
13600 set iconv.h i_iconv
13601 eval $inhdr
13602
13603 : see if locale.h is available
13604 set locale.h i_locale
13605 eval $inhdr
13606
13607 : see if mach cthreads are available
13608 if test "X$usethreads" = "X$define"; then
13609         set mach/cthreads.h i_machcthr
13610         eval $inhdr
13611 else
13612         i_machcthr="$undef"
13613 fi
13614
13615
13616
13617 : see if this is a math.h system
13618 set math.h i_math
13619 eval $inhdr
13620
13621 : see if this is a mntent.h system
13622 set mntent.h i_mntent
13623 eval $inhdr
13624
13625 : see if ndbm.h is available
13626 set ndbm.h t_ndbm
13627 eval $inhdr
13628 case "$t_ndbm" in
13629 $define)
13630         : see if dbm_open exists
13631         set dbm_open d_dbm_open
13632         eval $inlibc
13633         case "$d_dbm_open" in
13634         $undef)
13635                 t_ndbm="$undef"
13636                 echo "We won't be including <ndbm.h>"
13637                 ;;
13638         esac
13639         ;;
13640 esac
13641 val="$t_ndbm"
13642 set i_ndbm
13643 eval $setvar
13644
13645 : see if net/errno.h is available
13646 val=''
13647 set net/errno.h val
13648 eval $inhdr
13649
13650 : Unfortunately, it causes problems on some systems.  Arrgh.
13651 case "$val" in
13652 $define)
13653         cat > try.c <<'EOM'
13654 #include <stdio.h>
13655 #include <errno.h>
13656 #include <net/errno.h>
13657 int func()
13658 {
13659         return ENOTSOCK;
13660 }
13661 EOM
13662         if $cc $ccflags -c try.c >/dev/null 2>&1; then
13663                 echo "We'll be including <net/errno.h>." >&4
13664         else
13665                 echo "We won't be including <net/errno.h>." >&4
13666                 val="$undef"
13667         fi
13668         $rm -f try.* try
13669         ;;
13670 esac
13671 set i_neterrno
13672 eval $setvar
13673
13674 : see if netinet/tcp.h is available
13675 set netinet/tcp.h i_netinettcp
13676 eval $inhdr
13677
13678 : see if this is a poll.h system
13679 set poll.h i_poll
13680 eval $inhdr
13681
13682 echo " "
13683 $echo "Guessing which symbols your C compiler and preprocessor define..." >&4 
13684 $cat <<'EOSH' > Cppsym.know
13685 a29k ABI64 aegis AES_SOURCE AIX AIX32 AIX370
13686 AIX41 AIX42 AIX43 AIX_SOURCE aixpc ALL_SOURCE
13687 alliant alpha am29000 AM29000 amiga AMIGAOS AMIX
13688 ansi ANSI_C_SOURCE apollo ardent atarist att386 att3b BeOS
13689 BIG_ENDIAN BIT_MSF bsd BSD bsd43 bsd4_2 bsd4_3 BSD4_3 bsd4_4
13690 BSD_4_3 BSD_4_4 BSD_NET2 BSD_TIME BSD_TYPES BSDCOMPAT bsdi
13691 bull c cadmus clipper CMU COFF COMPILER_VERSION
13692 concurrent convex cpu cray CRAY CRAYMPP ctix CX_UX
13693 CYGWIN DGUX DGUX_SOURCE DJGPP dmert DOLPHIN DPX2 DSO
13694 Dynix DynixPTX ELF encore EPI EXTENSIONS FILE_OFFSET_BITS
13695 FreeBSD GCC_NEW_VARARGS gcos gcx gimpel
13696 GNU_SOURCE GNUC GNUC_MINOR GO32 gould GOULD_PN
13697 H3050R H3050RX hbullx20 hcx host_mips
13698 hp200 hp300 hp700 HP700 hp800 hp9000
13699 hp9000s200 hp9000s300 hp9000s400 hp9000s500
13700 hp9000s700 hp9000s800 hp9k8 hp_osf hppa hpux HPUX_SOURCE
13701 i186 i286 i386 i486 i586 i686 i8086 i80960 i860 I960
13702 iAPX286 ibm ibm032 ibmesa IBMR2 ibmrt ILP32 ILP64
13703 INLINE_INTRINSICS INTRINSICS INT64 interdata is68k ksr1
13704 LANGUAGE_C LARGE_FILE_API LARGEFILE64_SOURCE
13705 LARGEFILE_SOURCE LFS64_LARGEFILE LFS_LARGEFILE
13706 Linux LITTLE_ENDIAN LONG64 LONG_DOUBLE LONG_LONG
13707 LONGDOUBLE LONGLONG LP64 luna luna88k Lynx
13708 M68000 m68k m88100 m88k M88KBCS_TARGET M_COFF
13709 M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM M_SYS3
13710 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX MACH machine MachTen
13711 MATH_HAS_NO_SIDE_EFFECTS
13712 mc300 mc500 mc68000 mc68010 mc68020 mc68030 mc68040
13713 mc68060 mc68k mc68k32 mc700 mc88000 mc88100 merlin
13714 mert MiNT mips MIPS_FPSET MIPS_ISA MIPS_SIM MIPS_SZINT
13715 MIPS_SZLONG MIPS_SZPTR MIPSEB MIPSEL MODERN_C motorola
13716 mpeix MSDOS MTXINU MULTIMAX mvs MVS n16 ncl_el ncl_mr
13717 NetBSD news1500 news1700 news1800 news1900 news3700
13718 news700 news800 news900 NeXT NLS ns16000 ns32000
13719 ns32016 ns32332 ns32k nsc32000
13720 OCS88 OEMVS OpenBSD os OS2 OS390 osf OSF1 OSF_SOURCE
13721 pa_risc PA_RISC1_1 PA_RISC2_0 PARAGON parisc
13722 pc532 pdp11 PGC PIC plexus PORTAR posix
13723 POSIX1B_SOURCE POSIX2_SOURCE POSIX4_SOURCE
13724 POSIX_C_SOURCE POSIX_SOURCE POWER
13725 PROTOTYPES PWB pyr QNX R3000 REENTRANT RES Rhapsody RISC6000
13726 riscix riscos RT scs SCO sequent sgi SGI_SOURCE sinix
13727 SIZE_INT SIZE_LONG SIZE_PTR SOCKET_SOURCE SOCKETS_SOURCE
13728 sony sony_news sonyrisc sparc sparclite spectrum
13729 stardent stdc STDC_EXT stratos sun sun3 sun386
13730 Sun386i svr3 svr4 SVR4_2 SVR4_SOURCE svr5
13731 SX system SYSTYPE_BSD SYSTYPE_BSD43 SYSTYPE_BSD44
13732 SYSTYPE_SVR4 SYSTYPE_SVR5 SYSTYPE_SYSV SYSV SYSV3 SYSV4 SYSV5
13733 sysV68 sysV88 Tek4132 Tek4300 titan
13734 tower tower32 tower32_200 tower32_600 tower32_700
13735 tower32_800 tower32_850 tss
13736 u370 u3b u3b2 u3b20 u3b200 u3b20d u3b5
13737 ultrix UMAXV UnicomPBB UnicomPBD UNICOS UNICOSMK
13738 unix UNIX95 UNIX99 unixpc unos USGr4 USGr4_2
13739 Utek UTek UTS UWIN uxpm uxps vax venix VMESA vms xenix Xenix286
13740 XOPEN_SOURCE XOPEN_SOURCE_EXTENDED XPG2 XPG2_EXTENDED
13741 XPG3 XPG3_EXTENDED XPG4 XPG4_EXTENDED
13742 z8000
13743 EOSH
13744 # Maybe put other stuff here too.
13745 cat <<EOSH >>Cppsym.know
13746 $osname
13747 EOSH
13748 ./tr '[a-z]' '[A-Z]' < Cppsym.know > Cppsym.a
13749 ./tr '[A-Z]' '[a-z]' < Cppsym.know > Cppsym.b
13750 $cat Cppsym.a Cppsym.b | $tr ' ' $trnl | sort | uniq > Cppsym.know
13751 $rm -f Cppsym.a Cppsym.b
13752 cat <<EOSH > Cppsym
13753 $startsh
13754 if $test \$# -gt 0; then
13755     echo \$* | $tr " " "$trnl" | ./Cppsym.try > Cppsym.got
13756     if $test -s Cppsym.got; then
13757         $rm -f Cppsym.got
13758         exit 0
13759     fi
13760     $rm -f Cppsym.got
13761     exit 1
13762 else
13763     $tr " " "$trnl" | ./Cppsym.try
13764     exit 0
13765 fi
13766 EOSH
13767 chmod +x Cppsym
13768 $eunicefix Cppsym
13769 cat <<EOSH > Cppsym.try
13770 $startsh
13771 cat <<'EOCP' > try.c
13772 #include <stdio.h>
13773 int main() {
13774 EOCP
13775 $awk \\
13776 EOSH
13777 cat <<'EOSH' >> Cppsym.try
13778 'length($1) > 0 {
13779     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
13780     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
13781     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
13782     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
13783 }'       >> try.c
13784 echo '}' >> try.c
13785 EOSH
13786 cat <<EOSH >> Cppsym.try
13787 cc="$cc"
13788 optimize="$optimize"
13789 ccflags="$ccflags"
13790 ldflags="$ldflags"
13791 libs="$libs"
13792 exe_ext="$exe_ext"
13793 $cc $optimize $ccflags $ldflags -o try$exe_ext try.c $libs && ./try$exe_ext
13794 EOSH
13795 chmod +x Cppsym.try
13796 $eunicefix Cppsym.try
13797 ./Cppsym < Cppsym.know > Cppsym.true
13798 : now check the C compiler for additional symbols
13799 postprocess_cc_v=''
13800 case "$osname" in
13801 aix) postprocess_cc_v="|$tr , ' '" ;;
13802 esac
13803 $cat >ccsym <<EOS
13804 $startsh
13805 $cat >tmp.c <<EOF
13806 extern int foo;
13807 EOF
13808 for i in \`$cc -v -c tmp.c 2>&1 $postprocess_cc_v\`
13809 do
13810         case "\$i" in
13811         -D*) echo "\$i" | $sed 's/^-D//';;
13812         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
13813         esac
13814 done
13815 $rm -f try.c
13816 EOS
13817 postprocess_cc_v=''
13818 chmod +x ccsym
13819 $eunicefix ccsym
13820 ./ccsym > ccsym1.raw
13821 if $test -s ccsym1.raw; then
13822        $sort ccsym1.raw | $uniq >ccsym.raw
13823 else
13824        mv ccsym1.raw ccsym.raw
13825 fi
13826
13827 $awk '/\=/ { print $0; next }
13828         { print $0"=1" }' ccsym.raw >ccsym.list
13829 $awk '/\=/ { print $0; next }
13830         { print $0"=1" }' Cppsym.true >ccsym.true
13831 $comm -13 ccsym.true ccsym.list >ccsym.own
13832 $comm -12 ccsym.true ccsym.list >ccsym.com
13833 $comm -23 ccsym.true ccsym.list >ccsym.cpp
13834 also=''
13835 if $test -z ccsym.raw; then
13836         echo "Your C compiler doesn't seem to define any symbols!" >&4
13837         echo " "
13838         echo "However, your C preprocessor defines the following symbols:"
13839         $cat Cppsym.true
13840         ccsymbols=''
13841         cppsymbols=`$cat Cppsym.true`
13842         cppsymbols=`echo $cppsymbols`
13843         cppccsymbols="$cppsymbols"
13844 else
13845         if $test -s ccsym.com; then
13846                 echo "Your C compiler and pre-processor define these symbols:"
13847                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
13848                 also='also '
13849                 symbols='ones'
13850                 cppccsymbols=`$cat ccsym.com`
13851                 cppccsymbols=`echo $cppccsymbols`
13852                 $test "$silent" || sleep 1
13853         fi
13854         if $test -s ccsym.cpp; then
13855                 $test "$also" && echo " "
13856                 echo "Your C pre-processor ${also}defines the following symbols:"
13857                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
13858                 also='further '
13859                 cppsymbols=`$cat ccsym.cpp`
13860                 cppsymbols=`echo $cppsymbols`
13861                 $test "$silent" || sleep 1
13862         fi
13863         if $test -s ccsym.own; then
13864                 $test "$also" && echo " "
13865                 echo "Your C compiler ${also}defines the following cpp symbols:"
13866                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
13867                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
13868                 ccsymbols=`$cat ccsym.own`
13869                 ccsymbols=`echo $ccsymbols`
13870                 $test "$silent" || sleep 1
13871         fi
13872 fi
13873 $rm -f ccsym*
13874
13875 : see if this is a termio system
13876 val="$undef"
13877 val2="$undef"
13878 val3="$undef"
13879 if $test `./findhdr termios.h`; then
13880         set tcsetattr i_termios
13881         eval $inlibc
13882         val3="$i_termios"
13883 fi
13884 echo " "
13885 case "$val3" in
13886 "$define") echo "You have POSIX termios.h... good!" >&4;;
13887 *) if ./Cppsym pyr; then
13888                 case "`/bin/universe`" in
13889                 ucb) if $test `./findhdr sgtty.h`; then
13890                                 val2="$define"
13891                                 echo "<sgtty.h> found." >&4
13892                         else
13893                                 echo "System is pyramid with BSD universe."
13894                                 echo "<sgtty.h> not found--you could have problems." >&4
13895                         fi;;
13896                 *) if $test `./findhdr termio.h`; then
13897                                 val="$define"
13898                                 echo "<termio.h> found." >&4
13899                         else
13900                                 echo "System is pyramid with USG universe."
13901                                 echo "<termio.h> not found--you could have problems." >&4
13902                         fi;;
13903                 esac
13904         elif ./usg; then
13905                 if $test `./findhdr termio.h`; then
13906                         echo "<termio.h> found." >&4
13907                         val="$define"
13908                 elif $test `./findhdr sgtty.h`; then
13909                         echo "<sgtty.h> found." >&4
13910                         val2="$define"
13911                 else
13912 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
13913                 fi
13914         else
13915                 if $test `./findhdr sgtty.h`; then
13916                         echo "<sgtty.h> found." >&4
13917                         val2="$define"
13918                 elif $test `./findhdr termio.h`; then
13919                         echo "<termio.h> found." >&4
13920                         val="$define"
13921                 else
13922 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
13923                 fi
13924         fi;;
13925 esac
13926 set i_termio; eval $setvar
13927 val=$val2; set i_sgtty; eval $setvar
13928 val=$val3; set i_termios; eval $setvar
13929
13930 : see if this is a shadow.h system
13931 set shadow.h i_shadow
13932 eval $inhdr
13933
13934 : see if this is a socks.h system
13935 set socks.h i_socks
13936 eval $inhdr
13937
13938 : see if stdarg is available
13939 echo " "
13940 if $test `./findhdr stdarg.h`; then
13941         echo "<stdarg.h> found." >&4
13942         valstd="$define"
13943 else
13944         echo "<stdarg.h> NOT found." >&4
13945         valstd="$undef"
13946 fi
13947
13948 : see if varags is available
13949 echo " "
13950 if $test `./findhdr varargs.h`; then
13951         echo "<varargs.h> found." >&4
13952 else
13953         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
13954 fi
13955
13956 : set up the varargs testing programs
13957 $cat > varargs.c <<EOP
13958 #ifdef I_STDARG
13959 #include <stdarg.h>
13960 #endif
13961 #ifdef I_VARARGS
13962 #include <varargs.h>
13963 #endif
13964
13965 #ifdef I_STDARG
13966 int f(char *p, ...)
13967 #else
13968 int f(va_alist)
13969 va_dcl
13970 #endif
13971 {
13972         va_list ap;
13973 #ifndef I_STDARG
13974         char *p;
13975 #endif
13976 #ifdef I_STDARG
13977         va_start(ap,p);
13978 #else
13979         va_start(ap);
13980         p = va_arg(ap, char *);
13981 #endif
13982         va_end(ap);
13983 }
13984 EOP
13985 $cat > varargs <<EOP
13986 $startsh
13987 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
13988         echo "true"
13989 else
13990         echo "false"
13991 fi
13992 $rm -f varargs$_o
13993 EOP
13994 chmod +x varargs
13995
13996 : now check which varargs header should be included
13997 echo " "
13998 i_varhdr=''
13999 case "$valstd" in
14000 "$define")
14001         if `./varargs I_STDARG`; then
14002                 val='stdarg.h'
14003         elif `./varargs I_VARARGS`; then
14004                 val='varargs.h'
14005         fi
14006         ;;
14007 *)
14008         if `./varargs I_VARARGS`; then
14009                 val='varargs.h'
14010         fi
14011         ;;
14012 esac
14013 case "$val" in
14014 '')
14015 echo "I could not find the definition for va_dcl... You have problems..." >&4
14016         val="$undef"; set i_stdarg; eval $setvar
14017         val="$undef"; set i_varargs; eval $setvar
14018         ;;
14019 *) 
14020         set i_varhdr
14021         eval $setvar
14022         case "$i_varhdr" in
14023         stdarg.h)
14024                 val="$define"; set i_stdarg; eval $setvar
14025                 val="$undef"; set i_varargs; eval $setvar
14026                 ;;
14027         varargs.h)
14028                 val="$undef"; set i_stdarg; eval $setvar
14029                 val="$define"; set i_varargs; eval $setvar
14030                 ;;
14031         esac
14032         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
14033 esac
14034 $rm -f varargs*
14035
14036 : see if stddef is available
14037 set stddef.h i_stddef
14038 eval $inhdr
14039
14040 : see if sys/access.h is available
14041 set sys/access.h i_sysaccess
14042 eval $inhdr
14043
14044 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
14045 set sys/filio.h i_sysfilio
14046 eval $inhdr
14047 echo " "
14048 if $test `./findhdr sys/ioctl.h`; then
14049         val="$define"
14050         echo '<sys/ioctl.h> found.' >&4
14051 else
14052         val="$undef"
14053         if $test $i_sysfilio = "$define"; then
14054             echo '<sys/ioctl.h> NOT found.' >&4
14055         else
14056                 $test $i_sgtty = "$define" && xxx="sgtty.h"
14057                 $test $i_termio = "$define" && xxx="termio.h"
14058                 $test $i_termios = "$define" && xxx="termios.h"
14059 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
14060         fi
14061 fi
14062 set i_sysioctl
14063 eval $setvar
14064
14065 : see if sys/resource.h has to be included
14066 set sys/resource.h i_sysresrc
14067 eval $inhdr
14068
14069 : see if sys/security.h is available
14070 set sys/security.h i_syssecrt
14071 eval $inhdr
14072
14073 : see if this is a sys/statvfs.h system
14074 set sys/statvfs.h i_sysstatvfs
14075 eval $inhdr
14076
14077 : see if this is a sys/uio.h system
14078 set sys/uio.h i_sysuio
14079 eval $inhdr
14080
14081 : see if this is a sys/un.h system
14082 set sys/un.h i_sysun
14083 eval $inhdr
14084
14085 : see if this is a syswait system
14086 set sys/wait.h i_syswait
14087 eval $inhdr
14088
14089 : see if this is a ustat.h system
14090 set ustat.h i_ustat
14091 eval $inhdr
14092
14093 : see if this is an utime system
14094 set utime.h i_utime
14095 eval $inhdr
14096
14097 : see if this is a values.h system
14098 set values.h i_values
14099 eval $inhdr
14100
14101 : see if this is a vfork system
14102 case "$d_vfork" in
14103 "$define")
14104         set vfork.h i_vfork
14105         eval $inhdr
14106         ;;
14107 *)
14108         i_vfork="$undef"
14109         ;;
14110 esac
14111
14112 : see if gdbm.h is available
14113 set gdbm.h t_gdbm
14114 eval $inhdr
14115 case "$t_gdbm" in
14116 $define)
14117         : see if gdbm_open exists
14118         set gdbm_open d_gdbm_open
14119         eval $inlibc
14120         case "$d_gdbm_open" in
14121         $undef)
14122                 t_gdbm="$undef"
14123                 echo "We won't be including <gdbm.h>"
14124                 ;;
14125         esac
14126         ;;
14127 esac
14128 val="$t_gdbm"
14129 set i_gdbm
14130 eval $setvar
14131
14132 echo " "
14133 echo "Looking for extensions..." >&4
14134 : If we are using the old config.sh, known_extensions may contain
14135 : old or inaccurate or duplicate values.
14136 known_extensions=''
14137 nonxs_extensions=''
14138 : We do not use find because it might not be available.
14139 : We do not just use MANIFEST because the user may have dropped
14140 : some additional extensions into the source tree and expect them
14141 : to be built.
14142
14143 : Function to recursively find available extensions, ignoring DynaLoader
14144 : NOTE: recursion limit of 10 to prevent runaway in case of symlink madness
14145 find_extensions='
14146     for xxx in *; do
14147        case "$xxx" in
14148            DynaLoader|dynaload) ;;
14149            *)
14150            if $test -f $xxx/$xxx.xs; then
14151                known_extensions="$known_extensions $1$xxx";
14152            elif $test -f $xxx/Makefile.PL; then
14153                nonxs_extensions="$nonxs_extensions $1$xxx";
14154            else
14155                if $test -d $xxx -a $# -lt 10; then
14156                    set $1$xxx/ $*;
14157                    cd $xxx;
14158                    eval $find_extensions;
14159                    cd ..;
14160                    shift;
14161                fi;
14162            fi
14163            ;;
14164        esac;
14165     done'
14166 tdir=`pwd`
14167 cd $rsrc/ext
14168 set X
14169 shift
14170 eval $find_extensions
14171 set X $nonxs_extensions
14172 shift
14173 nonxs_extensions="$*"
14174 set X $known_extensions
14175 shift
14176 known_extensions="$*"
14177 cd $tdir
14178
14179 : Now see which are supported on this system.
14180 avail_ext=''
14181 for xxx in $known_extensions ; do
14182         case "$xxx" in
14183         DB_File|db_file)
14184                 case "$i_db" in
14185                 $define) avail_ext="$avail_ext $xxx" ;;
14186                 esac
14187                 ;;
14188         GDBM_File|gdbm_fil)
14189                 case "$i_gdbm" in 
14190                 $define) avail_ext="$avail_ext $xxx" ;;
14191                 esac
14192                 ;;
14193         NDBM_File|ndbm_fil)
14194                 case "$i_ndbm" in
14195                 $define) avail_ext="$avail_ext $xxx" ;;
14196                 esac
14197                 ;;
14198         ODBM_File|odbm_fil) 
14199                 case "${i_dbm}${i_rpcsvcdbm}" in
14200                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14201                 esac
14202                 ;;
14203         POSIX|posix)
14204                 case "$useposix" in
14205                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14206                 esac
14207                 ;;
14208         Opcode|opcode)
14209                 case "$useopcode" in
14210                 true|define|y) avail_ext="$avail_ext $xxx" ;;
14211                 esac
14212                 ;;
14213         Socket|socket)
14214                 case "$d_socket" in 
14215                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14216                 esac
14217                 ;;
14218         Thread|thread)
14219                 case "$usethreads" in 
14220                 true|$define|y) avail_ext="$avail_ext $xxx" ;;
14221                 esac
14222                 ;;
14223         IPC/SysV|ipc/sysv)
14224                 : XXX Do we need a useipcsysv variable here
14225                 case "${d_msg}${d_sem}${d_shm}" in 
14226                 *"${define}"*) avail_ext="$avail_ext $xxx" ;;
14227                 esac
14228                 ;;
14229         *)      avail_ext="$avail_ext $xxx"
14230                 ;;
14231         esac
14232 done
14233
14234 set X $avail_ext
14235 shift
14236 avail_ext="$*"
14237
14238 : Now see which nonxs extensions are supported on this system.
14239 : For now assume all are.
14240 nonxs_ext=''
14241 for xxx in $nonxs_extensions ; do
14242         case "$xxx" in
14243         *)      nonxs_ext="$nonxs_ext $xxx"
14244                 ;;
14245         esac
14246 done
14247
14248 set X $nonxs_ext
14249 shift
14250 nonxs_ext="$*"
14251
14252 case $usedl in
14253 $define)
14254         $cat <<EOM
14255 A number of extensions are supplied with $package.  You may choose to
14256 compile these extensions for dynamic loading (the default), compile
14257 them into the $package executable (static loading), or not include
14258 them at all.  Answer "none" to include no extensions.
14259 Note that DynaLoader is always built and need not be mentioned here.
14260
14261 EOM
14262         case "$dynamic_ext" in
14263         '') dflt="$avail_ext" ;;
14264         *)      dflt="$dynamic_ext"
14265                 # Perhaps we are reusing an old out-of-date config.sh.
14266                 case "$hint" in
14267                 previous)
14268                         if test X"$dynamic_ext" != X"$avail_ext"; then
14269                                 $cat <<EOM
14270 NOTICE:  Your previous config.sh list may be incorrect. 
14271 The extensions now available to you are 
14272         ${avail_ext}
14273 but the default list from your previous config.sh is
14274         ${dynamic_ext} 
14275
14276 EOM
14277                         fi
14278                         ;;
14279                 esac
14280                 ;;
14281         esac
14282         case "$dflt" in
14283         '')     dflt=none;;
14284         esac
14285         rp="What extensions do you wish to load dynamically?"
14286         . ./myread
14287         case "$ans" in
14288         none) dynamic_ext=' ' ;;
14289         *) dynamic_ext="$ans" ;;
14290         esac
14291
14292         case "$static_ext" in
14293         '')
14294                 : Exclude those already listed in dynamic linking
14295                 dflt=''
14296                 for xxx in $avail_ext; do
14297                         case " $dynamic_ext " in
14298                         *" $xxx "*) ;;
14299                         *) dflt="$dflt $xxx" ;;
14300                         esac
14301                 done
14302                 set X $dflt
14303                 shift
14304                 dflt="$*"
14305                 ;;
14306         *)  dflt="$static_ext" 
14307                 ;;
14308         esac
14309
14310         case "$dflt" in
14311         '')     dflt=none;;
14312         esac
14313         rp="What extensions do you wish to load statically?"
14314         . ./myread
14315         case "$ans" in
14316         none) static_ext=' ' ;;
14317         *) static_ext="$ans" ;;
14318         esac
14319         ;;
14320 *)
14321         $cat <<EOM
14322 A number of extensions are supplied with $package.  Answer "none" 
14323 to include no extensions. 
14324 Note that DynaLoader is always built and need not be mentioned here.
14325
14326 EOM
14327         case "$static_ext" in
14328         '') dflt="$avail_ext" ;;
14329         *)      dflt="$static_ext"
14330                 # Perhaps we are reusing an old out-of-date config.sh.
14331                 case "$hint" in
14332                 previous)
14333                         if test X"$static_ext" != X"$avail_ext"; then
14334                                 $cat <<EOM
14335 NOTICE:  Your previous config.sh list may be incorrect. 
14336 The extensions now available to you are 
14337         ${avail_ext}
14338 but the default list from your previous config.sh is
14339         ${static_ext} 
14340
14341 EOM
14342                         fi
14343                         ;;
14344                 esac
14345                 ;;
14346         esac
14347         : Exclude those that are not xs extensions
14348         case "$dflt" in
14349         '')     dflt=none;;
14350         esac
14351         rp="What extensions do you wish to include?"
14352         . ./myread
14353         case "$ans" in
14354         none) static_ext=' ' ;;
14355         *) static_ext="$ans" ;;
14356         esac
14357         ;;
14358 esac
14359
14360 set X $dynamic_ext $static_ext $nonxs_ext
14361 shift
14362 extensions="$*"
14363
14364 : Remove build directory name from cppstdin so it can be used from
14365 : either the present location or the final installed location.
14366 echo " "
14367 : Get out of the UU directory to get correct path name.
14368 cd ..
14369 case "$cppstdin" in
14370 `pwd`/cppstdin)
14371         echo "Stripping down cppstdin path name"
14372         cppstdin=cppstdin
14373         ;;
14374 esac
14375 cd UU
14376
14377 : end of configuration questions
14378 echo " "
14379 echo "End of configuration questions."
14380 echo " "
14381
14382 : back to where it started
14383 if test -d ../UU; then
14384         cd ..
14385 fi
14386
14387 : configuration may be patched via a 'config.over' file
14388 if $test -f config.over; then
14389         echo " "
14390         dflt=y
14391         rp='I see a config.over file.  Do you wish to load it?'
14392         . UU/myread
14393         case "$ans" in
14394         n*) echo "OK, I'll ignore it.";;
14395         *)      . ./config.over
14396                 echo "Configuration override changes have been loaded."
14397                 ;;
14398         esac
14399 fi
14400
14401 : in case they want portability, strip down executable paths
14402 case "$d_portable" in
14403 "$define")
14404         echo " "
14405         echo "Stripping down executable paths..." >&4
14406         for file in $loclist $trylist; do
14407                 eval temp=\$$file
14408                 eval $file=`basename $temp`
14409         done
14410         ;;
14411 esac
14412
14413 : create config.sh file
14414 echo " "
14415 echo "Creating config.sh..." >&4
14416 $spitshell <<EOT >config.sh
14417 $startsh
14418 #
14419 # This file was produced by running the Configure script. It holds all the
14420 # definitions figured out by Configure. Should you modify one of these values,
14421 # do not forget to propagate your changes by running "Configure -der". You may
14422 # instead choose to run each of the .SH files by yourself, or "Configure -S".
14423 #
14424
14425 # Package name      : $package
14426 # Source directory  : $src
14427 # Configuration time: $cf_time
14428 # Configured by     : $cf_by
14429 # Target system     : $myuname
14430
14431 Author='$Author'
14432 Date='$Date'
14433 Header='$Header'
14434 Id='$Id'
14435 Locker='$Locker'
14436 Log='$Log'
14437 Mcc='$Mcc'
14438 RCSfile='$RCSfile'
14439 Revision='$Revision'
14440 Source='$Source'
14441 State='$State'
14442 _a='$_a'
14443 _exe='$_exe'
14444 _o='$_o'
14445 afs='$afs'
14446 alignbytes='$alignbytes'
14447 ansi2knr='$ansi2knr'
14448 aphostname='$aphostname'
14449 api_revision='$api_revision'
14450 api_subversion='$api_subversion'
14451 api_version='$api_version'
14452 api_versionstring='$api_versionstring'
14453 ar='$ar'
14454 archlib='$archlib'
14455 archlibexp='$archlibexp'
14456 archname64='$archname64'
14457 archname='$archname'
14458 archobjs='$archobjs'
14459 awk='$awk'
14460 baserev='$baserev'
14461 bash='$bash'
14462 bin='$bin'
14463 bincompat5005='$bincompat5005'
14464 binexp='$binexp'
14465 bison='$bison'
14466 byacc='$byacc'
14467 byteorder='$byteorder'
14468 c='$c'
14469 castflags='$castflags'
14470 cat='$cat'
14471 cc='$cc'
14472 cccdlflags='$cccdlflags'
14473 ccdlflags='$ccdlflags'
14474 ccflags='$ccflags'
14475 ccsymbols='$ccsymbols'
14476 cf_by='$cf_by'
14477 cf_email='$cf_email'
14478 cf_time='$cf_time'
14479 charsize='$charsize'
14480 chgrp='$chgrp'
14481 chmod='$chmod'
14482 chown='$chown'
14483 clocktype='$clocktype'
14484 comm='$comm'
14485 compress='$compress'
14486 contains='$contains'
14487 cp='$cp'
14488 cpio='$cpio'
14489 cpp='$cpp'
14490 cpp_stuff='$cpp_stuff'
14491 cppccsymbols='$cppccsymbols'
14492 cppflags='$cppflags'
14493 cpplast='$cpplast'
14494 cppminus='$cppminus'
14495 cpprun='$cpprun'
14496 cppstdin='$cppstdin'
14497 cppsymbols='$cppsymbols'
14498 crosscompile='$crosscompile'
14499 cryptlib='$cryptlib'
14500 csh='$csh'
14501 d_Gconvert='$d_Gconvert'
14502 d_PRIEldbl='$d_PRIEldbl'
14503 d_PRIFldbl='$d_PRIFldbl'
14504 d_PRIGldbl='$d_PRIGldbl'
14505 d_PRIX64='$d_PRIX64'
14506 d_PRId64='$d_PRId64'
14507 d_PRIeldbl='$d_PRIeldbl'
14508 d_PRIfldbl='$d_PRIfldbl'
14509 d_PRIgldbl='$d_PRIgldbl'
14510 d_PRIi64='$d_PRIi64'
14511 d_PRIo64='$d_PRIo64'
14512 d_PRIu64='$d_PRIu64'
14513 d_PRIx64='$d_PRIx64'
14514 d_access='$d_access'
14515 d_accessx='$d_accessx'
14516 d_alarm='$d_alarm'
14517 d_archlib='$d_archlib'
14518 d_atolf='$d_atolf'
14519 d_atoll='$d_atoll'
14520 d_attribut='$d_attribut'
14521 d_bcmp='$d_bcmp'
14522 d_bcopy='$d_bcopy'
14523 d_bincompat5005='$d_bincompat5005'
14524 d_bsd='$d_bsd'
14525 d_bsdgetpgrp='$d_bsdgetpgrp'
14526 d_bsdsetpgrp='$d_bsdsetpgrp'
14527 d_bzero='$d_bzero'
14528 d_casti32='$d_casti32'
14529 d_castneg='$d_castneg'
14530 d_charvspr='$d_charvspr'
14531 d_chown='$d_chown'
14532 d_chroot='$d_chroot'
14533 d_chsize='$d_chsize'
14534 d_closedir='$d_closedir'
14535 d_const='$d_const'
14536 d_crypt='$d_crypt'
14537 d_csh='$d_csh'
14538 d_cuserid='$d_cuserid'
14539 d_dbl_dig='$d_dbl_dig'
14540 d_difftime='$d_difftime'
14541 d_dirnamlen='$d_dirnamlen'
14542 d_dlerror='$d_dlerror'
14543 d_dlopen='$d_dlopen'
14544 d_dlsymun='$d_dlsymun'
14545 d_dosuid='$d_dosuid'
14546 d_drand48proto='$d_drand48proto'
14547 d_dup2='$d_dup2'
14548 d_eaccess='$d_eaccess'
14549 d_endgrent='$d_endgrent'
14550 d_endhent='$d_endhent'
14551 d_endnent='$d_endnent'
14552 d_endpent='$d_endpent'
14553 d_endpwent='$d_endpwent'
14554 d_endsent='$d_endsent'
14555 d_endspent='$d_endspent'
14556 d_eofnblk='$d_eofnblk'
14557 d_eunice='$d_eunice'
14558 d_fchmod='$d_fchmod'
14559 d_fchown='$d_fchown'
14560 d_fcntl='$d_fcntl'
14561 d_fd_macros='$d_fd_macros'
14562 d_fd_set='$d_fd_set'
14563 d_fds_bits='$d_fds_bits'
14564 d_fgetpos='$d_fgetpos'
14565 d_flexfnam='$d_flexfnam'
14566 d_flock='$d_flock'
14567 d_fork='$d_fork'
14568 d_fpathconf='$d_fpathconf'
14569 d_fpos64_t='$d_fpos64_t'
14570 d_fs_data_s='$d_fs_data_s'
14571 d_fseeko='$d_fseeko'
14572 d_fsetpos='$d_fsetpos'
14573 d_fstatfs='$d_fstatfs'
14574 d_fstatvfs='$d_fstatvfs'
14575 d_ftello='$d_ftello'
14576 d_ftime='$d_ftime'
14577 d_getgrent='$d_getgrent'
14578 d_getgrps='$d_getgrps'
14579 d_gethbyaddr='$d_gethbyaddr'
14580 d_gethbyname='$d_gethbyname'
14581 d_gethent='$d_gethent'
14582 d_gethname='$d_gethname'
14583 d_gethostprotos='$d_gethostprotos'
14584 d_getlogin='$d_getlogin'
14585 d_getmnt='$d_getmnt'
14586 d_getmntent='$d_getmntent'
14587 d_getnbyaddr='$d_getnbyaddr'
14588 d_getnbyname='$d_getnbyname'
14589 d_getnent='$d_getnent'
14590 d_getnetprotos='$d_getnetprotos'
14591 d_getpbyname='$d_getpbyname'
14592 d_getpbynumber='$d_getpbynumber'
14593 d_getpent='$d_getpent'
14594 d_getpgid='$d_getpgid'
14595 d_getpgrp2='$d_getpgrp2'
14596 d_getpgrp='$d_getpgrp'
14597 d_getppid='$d_getppid'
14598 d_getprior='$d_getprior'
14599 d_getprotoprotos='$d_getprotoprotos'
14600 d_getpwent='$d_getpwent'
14601 d_getsbyname='$d_getsbyname'
14602 d_getsbyport='$d_getsbyport'
14603 d_getsent='$d_getsent'
14604 d_getservprotos='$d_getservprotos'
14605 d_getspent='$d_getspent'
14606 d_getspnam='$d_getspnam'
14607 d_gettimeod='$d_gettimeod'
14608 d_gnulibc='$d_gnulibc'
14609 d_grpasswd='$d_grpasswd'
14610 d_hasmntopt='$d_hasmntopt'
14611 d_htonl='$d_htonl'
14612 d_iconv='$d_iconv'
14613 d_index='$d_index'
14614 d_inetaton='$d_inetaton'
14615 d_int64t='$d_int64t'
14616 d_isascii='$d_isascii'
14617 d_killpg='$d_killpg'
14618 d_lchown='$d_lchown'
14619 d_ldbl_dig='$d_ldbl_dig'
14620 d_link='$d_link'
14621 d_locconv='$d_locconv'
14622 d_lockf='$d_lockf'
14623 d_longdbl='$d_longdbl'
14624 d_longlong='$d_longlong'
14625 d_lstat='$d_lstat'
14626 d_mblen='$d_mblen'
14627 d_mbstowcs='$d_mbstowcs'
14628 d_mbtowc='$d_mbtowc'
14629 d_memchr='$d_memchr'
14630 d_memcmp='$d_memcmp'
14631 d_memcpy='$d_memcpy'
14632 d_memmove='$d_memmove'
14633 d_memset='$d_memset'
14634 d_mkdir='$d_mkdir'
14635 d_mkfifo='$d_mkfifo'
14636 d_mktime='$d_mktime'
14637 d_msg='$d_msg'
14638 d_msg_ctrunc='$d_msg_ctrunc'
14639 d_msg_dontroute='$d_msg_dontroute'
14640 d_msg_oob='$d_msg_oob'
14641 d_msg_peek='$d_msg_peek'
14642 d_msg_proxy='$d_msg_proxy'
14643 d_msgctl='$d_msgctl'
14644 d_msgget='$d_msgget'
14645 d_msgrcv='$d_msgrcv'
14646 d_msgsnd='$d_msgsnd'
14647 d_mymalloc='$d_mymalloc'
14648 d_nice='$d_nice'
14649 d_nv_preserves_uv='$d_nv_preserves_uv'
14650 d_off64_t='$d_off64_t'
14651 d_old_pthread_create_joinable='$d_old_pthread_create_joinable'
14652 d_oldpthreads='$d_oldpthreads'
14653 d_oldsock='$d_oldsock'
14654 d_open3='$d_open3'
14655 d_pathconf='$d_pathconf'
14656 d_pause='$d_pause'
14657 d_phostname='$d_phostname'
14658 d_pipe='$d_pipe'
14659 d_poll='$d_poll'
14660 d_portable='$d_portable'
14661 d_pthread_yield='$d_pthread_yield'
14662 d_pwage='$d_pwage'
14663 d_pwchange='$d_pwchange'
14664 d_pwclass='$d_pwclass'
14665 d_pwcomment='$d_pwcomment'
14666 d_pwexpire='$d_pwexpire'
14667 d_pwgecos='$d_pwgecos'
14668 d_pwpasswd='$d_pwpasswd'
14669 d_pwquota='$d_pwquota'
14670 d_quad='$d_quad'
14671 d_readdir='$d_readdir'
14672 d_readlink='$d_readlink'
14673 d_rename='$d_rename'
14674 d_rewinddir='$d_rewinddir'
14675 d_rmdir='$d_rmdir'
14676 d_safebcpy='$d_safebcpy'
14677 d_safemcpy='$d_safemcpy'
14678 d_sanemcmp='$d_sanemcmp'
14679 d_sched_yield='$d_sched_yield'
14680 d_scm_rights='$d_scm_rights'
14681 d_seekdir='$d_seekdir'
14682 d_select='$d_select'
14683 d_sem='$d_sem'
14684 d_semctl='$d_semctl'
14685 d_semctl_semid_ds='$d_semctl_semid_ds'
14686 d_semctl_semun='$d_semctl_semun'
14687 d_semget='$d_semget'
14688 d_semop='$d_semop'
14689 d_setegid='$d_setegid'
14690 d_seteuid='$d_seteuid'
14691 d_setgrent='$d_setgrent'
14692 d_setgrps='$d_setgrps'
14693 d_sethent='$d_sethent'
14694 d_setlinebuf='$d_setlinebuf'
14695 d_setlocale='$d_setlocale'
14696 d_setnent='$d_setnent'
14697 d_setpent='$d_setpent'
14698 d_setpgid='$d_setpgid'
14699 d_setpgrp2='$d_setpgrp2'
14700 d_setpgrp='$d_setpgrp'
14701 d_setprior='$d_setprior'
14702 d_setpwent='$d_setpwent'
14703 d_setregid='$d_setregid'
14704 d_setresgid='$d_setresgid'
14705 d_setresuid='$d_setresuid'
14706 d_setreuid='$d_setreuid'
14707 d_setrgid='$d_setrgid'
14708 d_setruid='$d_setruid'
14709 d_setsent='$d_setsent'
14710 d_setsid='$d_setsid'
14711 d_setspent='$d_setspent'
14712 d_setvbuf='$d_setvbuf'
14713 d_sfio='$d_sfio'
14714 d_shm='$d_shm'
14715 d_shmat='$d_shmat'
14716 d_shmatprototype='$d_shmatprototype'
14717 d_shmctl='$d_shmctl'
14718 d_shmdt='$d_shmdt'
14719 d_shmget='$d_shmget'
14720 d_sigaction='$d_sigaction'
14721 d_sigsetjmp='$d_sigsetjmp'
14722 d_socket='$d_socket'
14723 d_sockpair='$d_sockpair'
14724 d_sqrtl='$d_sqrtl'
14725 d_statblks='$d_statblks'
14726 d_statfs_f_flags='$d_statfs_f_flags'
14727 d_statfs_s='$d_statfs_s'
14728 d_statvfs='$d_statvfs'
14729 d_stdio_cnt_lval='$d_stdio_cnt_lval'
14730 d_stdio_ptr_lval='$d_stdio_ptr_lval'
14731 d_stdio_stream_array='$d_stdio_stream_array'
14732 d_stdiobase='$d_stdiobase'
14733 d_stdstdio='$d_stdstdio'
14734 d_strchr='$d_strchr'
14735 d_strcoll='$d_strcoll'
14736 d_strctcpy='$d_strctcpy'
14737 d_strerrm='$d_strerrm'
14738 d_strerror='$d_strerror'
14739 d_strtod='$d_strtod'
14740 d_strtol='$d_strtol'
14741 d_strtold='$d_strtold'
14742 d_strtoll='$d_strtoll'
14743 d_strtoul='$d_strtoul'
14744 d_strtoull='$d_strtoull'
14745 d_strtouq='$d_strtouq'
14746 d_strxfrm='$d_strxfrm'
14747 d_suidsafe='$d_suidsafe'
14748 d_symlink='$d_symlink'
14749 d_syscall='$d_syscall'
14750 d_sysconf='$d_sysconf'
14751 d_sysernlst='$d_sysernlst'
14752 d_syserrlst='$d_syserrlst'
14753 d_system='$d_system'
14754 d_tcgetpgrp='$d_tcgetpgrp'
14755 d_tcsetpgrp='$d_tcsetpgrp'
14756 d_telldir='$d_telldir'
14757 d_telldirproto='$d_telldirproto'
14758 d_time='$d_time'
14759 d_times='$d_times'
14760 d_truncate='$d_truncate'
14761 d_tzname='$d_tzname'
14762 d_umask='$d_umask'
14763 d_uname='$d_uname'
14764 d_union_semun='$d_union_semun'
14765 d_ustat='$d_ustat'
14766 d_vendorbin='$d_vendorbin'
14767 d_vendorlib='$d_vendorlib'
14768 d_vfork='$d_vfork'
14769 d_void_closedir='$d_void_closedir'
14770 d_voidsig='$d_voidsig'
14771 d_voidtty='$d_voidtty'
14772 d_volatile='$d_volatile'
14773 d_vprintf='$d_vprintf'
14774 d_wait4='$d_wait4'
14775 d_waitpid='$d_waitpid'
14776 d_wcstombs='$d_wcstombs'
14777 d_wctomb='$d_wctomb'
14778 d_xenix='$d_xenix'
14779 date='$date'
14780 db_hashtype='$db_hashtype'
14781 db_prefixtype='$db_prefixtype'
14782 defvoidused='$defvoidused'
14783 direntrytype='$direntrytype'
14784 dlext='$dlext'
14785 dlsrc='$dlsrc'
14786 doublesize='$doublesize'
14787 drand01='$drand01'
14788 dynamic_ext='$dynamic_ext'
14789 eagain='$eagain'
14790 ebcdic='$ebcdic'
14791 echo='$echo'
14792 egrep='$egrep'
14793 emacs='$emacs'
14794 eunicefix='$eunicefix'
14795 exe_ext='$exe_ext'
14796 expr='$expr'
14797 extensions='$extensions'
14798 fflushNULL='$fflushNULL'
14799 fflushall='$fflushall'
14800 find='$find'
14801 firstmakefile='$firstmakefile'
14802 flex='$flex'
14803 fpossize='$fpossize'
14804 fpostype='$fpostype'
14805 freetype='$freetype'
14806 full_ar='$full_ar'
14807 full_csh='$full_csh'
14808 full_sed='$full_sed'
14809 gccversion='$gccversion'
14810 gidformat='$gidformat'
14811 gidsign='$gidsign'
14812 gidsize='$gidsize'
14813 gidtype='$gidtype'
14814 glibpth='$glibpth'
14815 grep='$grep'
14816 groupcat='$groupcat'
14817 groupstype='$groupstype'
14818 gzip='$gzip'
14819 h_fcntl='$h_fcntl'
14820 h_sysfile='$h_sysfile'
14821 hint='$hint'
14822 hostcat='$hostcat'
14823 huge='$huge'
14824 i16size='$i16size'
14825 i16type='$i16type'
14826 i32size='$i32size'
14827 i32type='$i32type'
14828 i64size='$i64size'
14829 i64type='$i64type'
14830 i8size='$i8size'
14831 i8type='$i8type'
14832 i_arpainet='$i_arpainet'
14833 i_bsdioctl='$i_bsdioctl'
14834 i_db='$i_db'
14835 i_dbm='$i_dbm'
14836 i_dirent='$i_dirent'
14837 i_dld='$i_dld'
14838 i_dlfcn='$i_dlfcn'
14839 i_fcntl='$i_fcntl'
14840 i_float='$i_float'
14841 i_gdbm='$i_gdbm'
14842 i_grp='$i_grp'
14843 i_iconv='$i_iconv'
14844 i_inttypes='$i_inttypes'
14845 i_limits='$i_limits'
14846 i_locale='$i_locale'
14847 i_machcthr='$i_machcthr'
14848 i_malloc='$i_malloc'
14849 i_math='$i_math'
14850 i_memory='$i_memory'
14851 i_mntent='$i_mntent'
14852 i_ndbm='$i_ndbm'
14853 i_netdb='$i_netdb'
14854 i_neterrno='$i_neterrno'
14855 i_netinettcp='$i_netinettcp'
14856 i_niin='$i_niin'
14857 i_poll='$i_poll'
14858 i_pthread='$i_pthread'
14859 i_pwd='$i_pwd'
14860 i_rpcsvcdbm='$i_rpcsvcdbm'
14861 i_sfio='$i_sfio'
14862 i_sgtty='$i_sgtty'
14863 i_shadow='$i_shadow'
14864 i_socks='$i_socks'
14865 i_stdarg='$i_stdarg'
14866 i_stddef='$i_stddef'
14867 i_stdlib='$i_stdlib'
14868 i_string='$i_string'
14869 i_sysaccess='$i_sysaccess'
14870 i_sysdir='$i_sysdir'
14871 i_sysfile='$i_sysfile'
14872 i_sysfilio='$i_sysfilio'
14873 i_sysin='$i_sysin'
14874 i_sysioctl='$i_sysioctl'
14875 i_sysmount='$i_sysmount'
14876 i_sysndir='$i_sysndir'
14877 i_sysparam='$i_sysparam'
14878 i_sysresrc='$i_sysresrc'
14879 i_syssecrt='$i_syssecrt'
14880 i_sysselct='$i_sysselct'
14881 i_syssockio='$i_syssockio'
14882 i_sysstat='$i_sysstat'
14883 i_sysstatfs='$i_sysstatfs'
14884 i_sysstatvfs='$i_sysstatvfs'
14885 i_systime='$i_systime'
14886 i_systimek='$i_systimek'
14887 i_systimes='$i_systimes'
14888 i_systypes='$i_systypes'
14889 i_sysuio='$i_sysuio'
14890 i_sysun='$i_sysun'
14891 i_sysvfs='$i_sysvfs'
14892 i_syswait='$i_syswait'
14893 i_termio='$i_termio'
14894 i_termios='$i_termios'
14895 i_time='$i_time'
14896 i_unistd='$i_unistd'
14897 i_ustat='$i_ustat'
14898 i_utime='$i_utime'
14899 i_values='$i_values'
14900 i_varargs='$i_varargs'
14901 i_varhdr='$i_varhdr'
14902 i_vfork='$i_vfork'
14903 ignore_versioned_solibs='$ignore_versioned_solibs'
14904 inc_version_list='$inc_version_list'
14905 inc_version_list_init='$inc_version_list_init'
14906 incpath='$incpath'
14907 inews='$inews'
14908 installarchlib='$installarchlib'
14909 installbin='$installbin'
14910 installman1dir='$installman1dir'
14911 installman3dir='$installman3dir'
14912 installprefix='$installprefix'
14913 installprefixexp='$installprefixexp'
14914 installprivlib='$installprivlib'
14915 installscript='$installscript'
14916 installsitearch='$installsitearch'
14917 installsitebin='$installsitebin'
14918 installsitelib='$installsitelib'
14919 installstyle='$installstyle'
14920 installusrbinperl='$installusrbinperl'
14921 installvendorbin='$installvendorbin'
14922 installvendorlib='$installvendorlib'
14923 intsize='$intsize'
14924 ivdformat='$ivdformat'
14925 ivsize='$ivsize'
14926 ivtype='$ivtype'
14927 known_extensions='$known_extensions'
14928 ksh='$ksh'
14929 large='$large'
14930 ld='$ld'
14931 lddlflags='$lddlflags'
14932 ldflags='$ldflags'
14933 ldlibpthname='$ldlibpthname'
14934 less='$less'
14935 lib_ext='$lib_ext'
14936 libc='$libc'
14937 libperl='$libperl'
14938 libpth='$libpth'
14939 libs='$libs'
14940 libsdirs='$libsdirs'
14941 libsfiles='$libsfiles'
14942 libsfound='$libsfound'
14943 libswanted='$libswanted'
14944 line='$line'
14945 lint='$lint'
14946 lkflags='$lkflags'
14947 ln='$ln'
14948 lns='$lns'
14949 locincpth='$locincpth'
14950 loclibpth='$loclibpth'
14951 longdblsize='$longdblsize'
14952 longlongsize='$longlongsize'
14953 longsize='$longsize'
14954 lp='$lp'
14955 lpr='$lpr'
14956 ls='$ls'
14957 lseeksize='$lseeksize'
14958 lseektype='$lseektype'
14959 mail='$mail'
14960 mailx='$mailx'
14961 make='$make'
14962 make_set_make='$make_set_make'
14963 mallocobj='$mallocobj'
14964 mallocsrc='$mallocsrc'
14965 malloctype='$malloctype'
14966 man1dir='$man1dir'
14967 man1direxp='$man1direxp'
14968 man1ext='$man1ext'
14969 man3dir='$man3dir'
14970 man3direxp='$man3direxp'
14971 man3ext='$man3ext'
14972 medium='$medium'
14973 mips_type='$mips_type'
14974 mkdir='$mkdir'
14975 models='$models'
14976 modetype='$modetype'
14977 more='$more'
14978 multiarch='$multiarch'
14979 mv='$mv'
14980 myarchname='$myarchname'
14981 mydomain='$mydomain'
14982 myhostname='$myhostname'
14983 myuname='$myuname'
14984 n='$n'
14985 netdb_hlen_type='$netdb_hlen_type'
14986 netdb_host_type='$netdb_host_type'
14987 netdb_name_type='$netdb_name_type'
14988 netdb_net_type='$netdb_net_type'
14989 nm='$nm'
14990 nm_opt='$nm_opt'
14991 nm_so_opt='$nm_so_opt'
14992 nonxs_ext='$nonxs_ext'
14993 nroff='$nroff'
14994 nvsize='$nvsize'
14995 nvtype='$nvtype'
14996 o_nonblock='$o_nonblock'
14997 obj_ext='$obj_ext'
14998 old_pthread_create_joinable='$old_pthread_create_joinable'
14999 optimize='$optimize'
15000 orderlib='$orderlib'
15001 osname='$osname'
15002 osvers='$osvers'
15003 package='$package'
15004 pager='$pager'
15005 passcat='$passcat'
15006 patchlevel='$patchlevel'
15007 path_sep='$path_sep'
15008 perl='$perl'
15009 perladmin='$perladmin'
15010 perlpath='$perlpath'
15011 pg='$pg'
15012 phostname='$phostname'
15013 pidtype='$pidtype'
15014 plibpth='$plibpth'
15015 pmake='$pmake'
15016 pr='$pr'
15017 prefix='$prefix'
15018 prefixexp='$prefixexp'
15019 privlib='$privlib'
15020 privlibexp='$privlibexp'
15021 prototype='$prototype'
15022 ptrsize='$ptrsize'
15023 quadkind='$quadkind'
15024 quadtype='$quadtype'
15025 randbits='$randbits'
15026 randfunc='$randfunc'
15027 randseedtype='$randseedtype'
15028 ranlib='$ranlib'
15029 rd_nodata='$rd_nodata'
15030 rm='$rm'
15031 rmail='$rmail'
15032 runnm='$runnm'
15033 sPRIEldbl='$sPRIEldbl'
15034 sPRIFldbl='$sPRIFldbl'
15035 sPRIGldbl='$sPRIGldbl'
15036 sPRIX64='$sPRIX64'
15037 sPRId64='$sPRId64'
15038 sPRIeldbl='$sPRIeldbl'
15039 sPRIfldbl='$sPRIfldbl'
15040 sPRIgldbl='$sPRIgldbl'
15041 sPRIi64='$sPRIi64'
15042 sPRIo64='$sPRIo64'
15043 sPRIu64='$sPRIu64'
15044 sPRIx64='$sPRIx64'
15045 sched_yield='$sched_yield'
15046 scriptdir='$scriptdir'
15047 scriptdirexp='$scriptdirexp'
15048 sed='$sed'
15049 seedfunc='$seedfunc'
15050 selectminbits='$selectminbits'
15051 selecttype='$selecttype'
15052 sendmail='$sendmail'
15053 sh='$sh'
15054 shar='$shar'
15055 sharpbang='$sharpbang'
15056 shmattype='$shmattype'
15057 shortsize='$shortsize'
15058 shrpenv='$shrpenv'
15059 shsharp='$shsharp'
15060 sig_count='$sig_count'
15061 sig_name='$sig_name'
15062 sig_name_init='$sig_name_init'
15063 sig_num='$sig_num'
15064 sig_num_init='$sig_num_init'
15065 signal_t='$signal_t'
15066 sitearch='$sitearch'
15067 sitearchexp='$sitearchexp'
15068 sitebin='$sitebin'
15069 sitebinexp='$sitebinexp'
15070 sitelib='$sitelib'
15071 sitelibexp='$sitelibexp'
15072 siteprefix='$siteprefix'
15073 siteprefixexp='$siteprefixexp'
15074 sizetype='$sizetype'
15075 sleep='$sleep'
15076 smail='$smail'
15077 small='$small'
15078 so='$so'
15079 sockethdr='$sockethdr'
15080 socketlib='$socketlib'
15081 sort='$sort'
15082 spackage='$spackage'
15083 spitshell='$spitshell'
15084 split='$split'
15085 src='$src'
15086 ssizetype='$ssizetype'
15087 startperl='$startperl'
15088 startsh='$startsh'
15089 static_ext='$static_ext'
15090 stdchar='$stdchar'
15091 stdio_base='$stdio_base'
15092 stdio_bufsiz='$stdio_bufsiz'
15093 stdio_cnt='$stdio_cnt'
15094 stdio_filbuf='$stdio_filbuf'
15095 stdio_ptr='$stdio_ptr'
15096 stdio_stream_array='$stdio_stream_array'
15097 strings='$strings'
15098 submit='$submit'
15099 subversion='$subversion'
15100 sysman='$sysman'
15101 tail='$tail'
15102 tar='$tar'
15103 tbl='$tbl'
15104 tee='$tee'
15105 test='$test'
15106 timeincl='$timeincl'
15107 timetype='$timetype'
15108 touch='$touch'
15109 tr='$tr'
15110 trnl='$trnl'
15111 troff='$troff'
15112 u16size='$u16size'
15113 u16type='$u16type'
15114 u32size='$u32size'
15115 u32type='$u32type'
15116 u64size='$u64size'
15117 u64type='$u64type'
15118 u8size='$u8size'
15119 u8type='$u8type'
15120 uidformat='$uidformat'
15121 uidsign='$uidsign'
15122 uidsize='$uidsize'
15123 uidtype='$uidtype'
15124 uname='$uname'
15125 uniq='$uniq'
15126 uquadtype='$uquadtype'
15127 use5005threads='$use5005threads'
15128 use64bits='$use64bits'
15129 usedl='$usedl'
15130 useithreads='$useithreads'
15131 uselargefiles='$uselargefiles'
15132 uselongdouble='$uselongdouble'
15133 uselonglong='$uselonglong'
15134 usemorebits='$usemorebits'
15135 usemultiplicity='$usemultiplicity'
15136 usemymalloc='$usemymalloc'
15137 usenm='$usenm'
15138 useopcode='$useopcode'
15139 useperlio='$useperlio'
15140 useposix='$useposix'
15141 usesfio='$usesfio'
15142 useshrplib='$useshrplib'
15143 usesocks='$usesocks'
15144 usethreads='$usethreads'
15145 usevendorprefix='$usevendorprefix'
15146 usevfork='$usevfork'
15147 usrinc='$usrinc'
15148 uuname='$uuname'
15149 uvoformat='$uvoformat'
15150 uvsize='$uvsize'
15151 uvtype='$uvtype'
15152 uvuformat='$uvuformat'
15153 uvxformat='$uvxformat'
15154 vendorbin='$vendorbin'
15155 vendorbinexp='$vendorbinexp'
15156 vendorlib='$vendorlib'
15157 vendorlibexp='$vendorlibexp'
15158 vendorprefix='$vendorprefix'
15159 vendorprefixexp='$vendorprefixexp'
15160 version='$version'
15161 vi='$vi'
15162 voidflags='$voidflags'
15163 xlibpth='$xlibpth'
15164 zcat='$zcat'
15165 zip='$zip'
15166 EOT
15167
15168 : Add in command line options if available
15169 $test -f UU/cmdline.opt && $cat UU/cmdline.opt >> config.sh
15170
15171 : add special variables
15172 $test -f $src/patchlevel.h && \
15173 awk '/^#define[         ]+PERL_/ {printf "%s=%s\n",$2,$3}' $src/patchlevel.h >>config.sh
15174 echo "CONFIGDOTSH=true" >>config.sh
15175
15176 : propagate old symbols
15177 if $test -f UU/config.sh; then
15178         <UU/config.sh sort | uniq >UU/oldconfig.sh
15179         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
15180         sort | uniq -u >UU/oldsyms
15181         set X `cat UU/oldsyms`
15182         shift
15183         case $# in
15184         0) ;;
15185         *)
15186                 cat <<EOM
15187 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
15188 EOM
15189                 echo "# Variables propagated from previous config.sh file." >>config.sh
15190                 for sym in `cat UU/oldsyms`; do
15191                         echo "    Propagating $hint variable "'$'"$sym..."
15192                         eval 'tmp="$'"${sym}"'"'
15193                         echo "$tmp" | \
15194                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
15195                 done
15196                 ;;
15197         esac
15198 fi
15199
15200 : Finish up by extracting the .SH files
15201 case "$alldone" in
15202 exit)
15203         $rm -rf UU
15204         echo "Done."
15205         exit 0
15206         ;;
15207 cont)
15208         ;;
15209 '')
15210         dflt=''
15211         nostick=true
15212         $cat <<EOM
15213
15214 If you'd like to make any changes to the config.sh file before I begin
15215 to configure things, do it as a shell escape now (e.g. !vi config.sh).
15216
15217 EOM
15218         rp="Press return or use a shell escape to edit config.sh:"
15219         . UU/myread
15220         nostick=''
15221         case "$ans" in
15222         '') ;;
15223         *) : in case they cannot read
15224                 sh 1>&4 -c "$ans";;
15225         esac
15226         ;;
15227 esac
15228
15229 : if this fails, just run all the .SH files by hand
15230 . ./config.sh
15231
15232 echo " "
15233 exec 1>&4
15234 . ./UU/extract
15235
15236 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
15237         dflt=y
15238         case "$silent" in
15239         true) ;;
15240         *)
15241                 $cat <<EOM
15242
15243 Now you need to generate make dependencies by running "$make depend".
15244 You might prefer to run it in background: "$make depend > makedepend.out &"
15245 It can take a while, so you might not want to run it right now.
15246
15247 EOM
15248                 ;;
15249         esac
15250         rp="Run $make depend now?"
15251         . UU/myread
15252         case "$ans" in
15253         y*)
15254                 $make depend && echo "Now you must run a $make."
15255                 ;;
15256         *)
15257                 echo "You must run '$make depend' then '$make'."
15258                 ;;
15259         esac
15260 elif test -f [Mm]akefile; then
15261         echo " "
15262         echo "Now you must run a $make."
15263 else
15264         echo "Done."
15265 fi
15266
15267 if $test -f Policy.sh; then
15268     $cat <<EOM
15269
15270 If you compile $package on a different machine or from a different object
15271 directory, copy the Policy.sh file from this object directory to the
15272 new one before you run Configure -- this will help you with most of
15273 the policy defaults.
15274
15275 EOM
15276 fi
15277 if $test -f config.msg; then
15278     echo "Hmm.  I also noted the following information while running:"
15279     echo " "
15280     $cat config.msg >&4
15281     $rm -f config.msg
15282 fi
15283 $rm -f kit*isdone ark*isdone
15284 $rm -rf UU
15285
15286 : End of Configure
15287