This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
MSG_PROXY for GNU/Hurd (previously we believed that
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Sun Nov 22 19:12:18 EET 1998 [metaconfig 3.0 PL70]
24 # (with additional metaconfig patches by jhi@iki.fi)
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 case "$inksh/$needksh" in
112 /[a-z]*)
113                 ENV=''
114                 changesh=true
115                 reason="$needksh"
116         ;;
117 esac
118 case "$inksh/$avoidksh" in
119 true/[a-z]*)
120         changesh=true
121         reason="$avoidksh"
122         ;;
123 esac
124 case "$inksh/$needksh-$avoidksh-" in
125 true/--)
126                 cat <<EOM
127 (I see you are using the Korn shell.  Some ksh's blow up on $me,
128 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
129 EOM
130         ;;
131 esac
132 case "$changesh" in
133 true)
134         echo "(Feeding myself to $newsh $reason.)"
135         case "$0" in
136         Configure|*/Configure) exec $newsh $0 "$@";;
137         *) exec $newsh Configure "$@";;
138         esac
139         ;;
140 esac
141
142 : if needed set CDPATH to a harmless value that is not chatty
143 : avoid bash 2.02 problems with empty CDPATH.
144 case "$CDPATH" in
145 '')     ;;
146 *)      case "$SHELL" in
147         *bash*) CDPATH='.' ;;
148         *)              CDPATH='' ;;
149         esac
150         ;;
151 esac
152 : Configure runs within the UU subdirectory
153 test -d UU || mkdir UU
154 cd UU && rm -f ./*
155
156 dynamic_ext=''
157 extensions=''
158 known_extensions=''
159 nonxs_ext=''
160 static_ext=''
161 useopcode=''
162 useposix=''
163 d_bsd=''
164 d_eunice=''
165 d_xenix=''
166 eunicefix=''
167 Mcc=''
168 ar=''
169 awk=''
170 bash=''
171 bison=''
172 byacc=''
173 cat=''
174 chgrp=''
175 chmod=''
176 chown=''
177 comm=''
178 compress=''
179 cp=''
180 cpio=''
181 cpp=''
182 csh=''
183 date=''
184 echo=''
185 egrep=''
186 emacs=''
187 expr=''
188 find=''
189 flex=''
190 grep=''
191 gzip=''
192 inews=''
193 ksh=''
194 less=''
195 line=''
196 lint=''
197 ln=''
198 lp=''
199 lpr=''
200 ls=''
201 mail=''
202 mailx=''
203 make=''
204 mkdir=''
205 more=''
206 mv=''
207 nm=''
208 nroff=''
209 perl=''
210 pg=''
211 pmake=''
212 pr=''
213 rm=''
214 rmail=''
215 sed=''
216 sendmail=''
217 shar=''
218 sleep=''
219 smail=''
220 sort=''
221 submit=''
222 tail=''
223 tar=''
224 tbl=''
225 tee=''
226 test=''
227 touch=''
228 tr=''
229 troff=''
230 uname=''
231 uniq=''
232 uuname=''
233 vi=''
234 zcat=''
235 zip=''
236 full_sed=''
237 libswanted=''
238 hint=''
239 myuname=''
240 osname=''
241 osvers=''
242 Author=''
243 Date=''
244 Header=''
245 Id=''
246 Locker=''
247 Log=''
248 RCSfile=''
249 Revision=''
250 Source=''
251 State=''
252 _a=''
253 _exe=''
254 _o=''
255 archobjs=''
256 exe_ext=''
257 firstmakefile=''
258 lib_ext=''
259 obj_ext=''
260 path_sep=''
261 afs=''
262 alignbytes=''
263 ansi2knr=''
264 archlib=''
265 archlibexp=''
266 d_archlib=''
267 installarchlib=''
268 archname=''
269 myarchname=''
270 baserev=''
271 bin=''
272 binexp=''
273 installbin=''
274 byteorder=''
275 cc=''
276 gccversion=''
277 ccflags=''
278 cppflags=''
279 ldflags=''
280 lkflags=''
281 locincpth=''
282 optimize=''
283 cf_email=''
284 cf_by=''
285 cf_time=''
286 contains=''
287 cpp_stuff=''
288 cpplast=''
289 cppminus=''
290 cpprun=''
291 cppstdin=''
292 d_access=''
293 d_accessx=''
294 d_alarm=''
295 d_attribut=''
296 d_bcmp=''
297 d_bcopy=''
298 d_bzero=''
299 d_casti32=''
300 castflags=''
301 d_castneg=''
302 d_chown=''
303 d_chroot=''
304 d_chsize=''
305 d_closedir=''
306 d_void_closedir=''
307 d_const=''
308 cryptlib=''
309 d_crypt=''
310 d_csh=''
311 full_csh=''
312 d_cuserid=''
313 d_dbl_dig=''
314 d_difftime=''
315 d_dlerror=''
316 d_dlopen=''
317 d_dlsymun=''
318 d_dosuid=''
319 d_suidsafe=''
320 d_drand48proto=''
321 d_dup2=''
322 d_eaccess=''
323 d_endgrent=''
324 d_endhent=''
325 d_endnent=''
326 d_endpent=''
327 d_endpwent=''
328 d_endsent=''
329 d_fchmod=''
330 d_fchown=''
331 d_fcntl=''
332 d_fd_macros=''
333 d_fd_set=''
334 d_fds_bits=''
335 d_fgetpos=''
336 d_flexfnam=''
337 d_flock=''
338 d_fork=''
339 d_fseeko=''
340 d_fsetpos=''
341 d_ftello=''
342 d_ftime=''
343 d_gettimeod=''
344 d_Gconvert=''
345 d_getgrent=''
346 d_getgrps=''
347 d_gethbyaddr=''
348 d_gethbyname=''
349 d_gethent=''
350 aphostname=''
351 d_gethname=''
352 d_phostname=''
353 d_uname=''
354 d_gethostprotos=''
355 d_getlogin=''
356 d_getnbyaddr=''
357 d_getnbyname=''
358 d_getnent=''
359 d_getnetprotos=''
360 d_getpent=''
361 d_getpgid=''
362 d_getpgrp2=''
363 d_bsdgetpgrp=''
364 d_getpgrp=''
365 d_getppid=''
366 d_getprior=''
367 d_getpbyname=''
368 d_getpbynumber=''
369 d_getprotoprotos=''
370 d_getpwent=''
371 d_getsent=''
372 d_getservprotos=''
373 d_getsbyname=''
374 d_getsbyport=''
375 d_gnulibc=''
376 d_htonl=''
377 d_inetaton=''
378 d_isascii=''
379 d_killpg=''
380 d_lchown=''
381 d_link=''
382 d_locconv=''
383 d_lockf=''
384 d_longdbl=''
385 longdblsize=''
386 d_longlong=''
387 longlongsize=''
388 d_lstat=''
389 d_mblen=''
390 d_mbstowcs=''
391 d_mbtowc=''
392 d_memcmp=''
393 d_memcpy=''
394 d_memmove=''
395 d_memset=''
396 d_mkdir=''
397 d_mkfifo=''
398 d_mktime=''
399 d_msg=''
400 d_msgctl=''
401 d_msgget=''
402 d_msgrcv=''
403 d_msgsnd=''
404 d_nice=''
405 d_open3=''
406 d_fpathconf=''
407 d_pathconf=''
408 d_pause=''
409 d_pipe=''
410 d_poll=''
411 d_portable=''
412 d_pthread_create_joinable=''
413 pthread_create_joinable=''
414 d_pthread_yield=''
415 d_sched_yield=''
416 sched_yield=''
417 d_readdir=''
418 d_rewinddir=''
419 d_seekdir=''
420 d_telldir=''
421 d_readlink=''
422 d_readv=''
423 d_rename=''
424 d_rmdir=''
425 d_safebcpy=''
426 d_safemcpy=''
427 d_sanemcmp=''
428 d_select=''
429 d_sem=''
430 d_semctl=''
431 d_semget=''
432 d_semop=''
433 d_setegid=''
434 d_seteuid=''
435 d_setgrent=''
436 d_setgrps=''
437 d_sethent=''
438 d_setlinebuf=''
439 d_setlocale=''
440 d_setnent=''
441 d_setpent=''
442 d_setpgid=''
443 d_setpgrp2=''
444 d_bsdsetpgrp=''
445 d_setpgrp=''
446 d_setprior=''
447 d_setpwent=''
448 d_setregid=''
449 d_setresgid=''
450 d_setresuid=''
451 d_setreuid=''
452 d_setrgid=''
453 d_setruid=''
454 d_setsent=''
455 d_setsid=''
456 d_setvbuf=''
457 d_sfio=''
458 usesfio=''
459 d_shm=''
460 d_shmat=''
461 d_shmatprototype=''
462 shmattype=''
463 d_shmctl=''
464 d_shmdt=''
465 d_shmget=''
466 d_sigaction=''
467 d_sigsetjmp=''
468 d_cmsghdr_s=''
469 d_msg_ctrunc=''
470 d_msg_dontroute=''
471 d_msg_oob=''
472 d_msg_peek=''
473 d_msg_proxy=''
474 d_msghdr_s=''
475 d_oldsock=''
476 d_recvmsg=''
477 d_scm_rights=''
478 d_sendmsg=''
479 d_socket=''
480 d_sockpair=''
481 sockethdr=''
482 socketlib=''
483 d_statblks=''
484 d_stdio_cnt_lval=''
485 d_stdio_ptr_lval=''
486 d_stdiobase=''
487 d_stdstdio=''
488 stdio_base=''
489 stdio_bufsiz=''
490 stdio_cnt=''
491 stdio_filbuf=''
492 stdio_ptr=''
493 d_index=''
494 d_strchr=''
495 d_strcoll=''
496 d_strctcpy=''
497 d_strerrm=''
498 d_strerror=''
499 d_sysernlst=''
500 d_syserrlst=''
501 d_strtod=''
502 d_strtol=''
503 d_strtoul=''
504 d_strxfrm=''
505 d_symlink=''
506 d_syscall=''
507 d_sysconf=''
508 d_system=''
509 d_tcgetpgrp=''
510 d_tcsetpgrp=''
511 d_time=''
512 timetype=''
513 clocktype=''
514 d_times=''
515 d_truncate=''
516 d_tzname=''
517 d_umask=''
518 d_semctl_semid_ds=''
519 d_semctl_semun=''
520 d_union_semun=''
521 d_vfork=''
522 usevfork=''
523 d_voidsig=''
524 signal_t=''
525 d_volatile=''
526 d_charvspr=''
527 d_vprintf=''
528 d_wait4=''
529 d_waitpid=''
530 d_wcstombs=''
531 d_wctomb=''
532 d_writev=''
533 d_dbmclose64=''
534 d_dbminit64=''
535 d_delete64=''
536 d_fetch64=''
537 d_firstkey64=''
538 d_nextkey64=''
539 d_store64=''
540 dlext=''
541 cccdlflags=''
542 ccdlflags=''
543 dlsrc=''
544 ld=''
545 lddlflags=''
546 usedl=''
547 doublesize=''
548 ebcdic=''
549 fpostype=''
550 gidtype=''
551 groupstype=''
552 h_fcntl=''
553 h_sysfile=''
554 i_arpainet=''
555 db_hashtype=''
556 db_prefixtype=''
557 i_db=''
558 i_dbm=''
559 i_rpcsvcdbm=''
560 d_dirnamlen=''
561 direntrytype=''
562 i_dirent=''
563 i_dld=''
564 i_dlfcn=''
565 i_fcntl=''
566 i_float=''
567 i_gdbm=''
568 d_grpasswd=''
569 i_grp=''
570 d_int64t=''
571 i_inttypes=''
572 i_limits=''
573 i_locale=''
574 i_machcthr=''
575 i_malloc=''
576 i_math=''
577 i_memory=''
578 i_ndbm=''
579 i_netdb=''
580 i_neterrno=''
581 i_niin=''
582 i_sysin=''
583 d_pwage=''
584 d_pwchange=''
585 d_pwclass=''
586 d_pwcomment=''
587 d_pwexpire=''
588 d_pwgecos=''
589 d_pwpasswd=''
590 d_pwquota=''
591 i_pwd=''
592 i_sfio=''
593 i_stddef=''
594 i_stdlib=''
595 i_string=''
596 strings=''
597 i_sysaccess=''
598 i_sysdir=''
599 i_sysfile=''
600 d_voidtty=''
601 i_bsdioctl=''
602 i_sysfilio=''
603 i_sysioctl=''
604 i_syssockio=''
605 i_sysndir=''
606 i_sysparam=''
607 i_sysresrc=''
608 i_syssecrt=''
609 i_sysselct=''
610 i_sysstat=''
611 i_systimes=''
612 i_systypes=''
613 d_iovec_s=''
614 i_sysuio=''
615 i_sysun=''
616 i_syswait=''
617 i_sgtty=''
618 i_termio=''
619 i_termios=''
620 i_systime=''
621 i_systimek=''
622 i_time=''
623 timeincl=''
624 i_unistd=''
625 i_utime=''
626 i_values=''
627 i_stdarg=''
628 i_varargs=''
629 i_varhdr=''
630 i_vfork=''
631 intsize=''
632 longsize=''
633 shortsize=''
634 d_dirent64_s=''
635 d_flock64_s=''
636 d_fstat64=''
637 d_ftruncate64=''
638 d_ino64t=''
639 d_lockf64=''
640 d_lseek64=''
641 d_lstat64=''
642 d_off64t=''
643 d_open64=''
644 d_opendir64=''
645 d_readdir64=''
646 d_seekdir64=''
647 d_stat64=''
648 d_telldir64=''
649 d_truncate64=''
650 libc=''
651 libperl=''
652 shrpenv=''
653 useshrplib=''
654 glibpth=''
655 libpth=''
656 loclibpth=''
657 plibpth=''
658 xlibpth=''
659 ignore_versioned_solibs=''
660 libs=''
661 lns=''
662 lseeksize=''
663 lseektype=''
664 make_set_make=''
665 d_mymalloc=''
666 freetype=''
667 mallocobj=''
668 mallocsrc=''
669 malloctype=''
670 usemymalloc=''
671 installman1dir=''
672 man1dir=''
673 man1direxp=''
674 man1ext=''
675 installman3dir=''
676 man3dir=''
677 man3direxp=''
678 man3ext=''
679 huge=''
680 large=''
681 medium=''
682 models=''
683 small=''
684 split=''
685 modetype=''
686 mydomain=''
687 myhostname=''
688 phostname=''
689 c=''
690 n=''
691 d_eofnblk=''
692 eagain=''
693 o_nonblock=''
694 rd_nodata=''
695 netdb_hlen_type=''
696 netdb_host_type=''
697 netdb_name_type=''
698 netdb_net_type=''
699 groupcat=''
700 hostcat=''
701 passcat=''
702 orderlib=''
703 ranlib=''
704 package=''
705 spackage=''
706 pager=''
707 apiversion=''
708 patchlevel=''
709 subversion=''
710 version=''
711 perladmin=''
712 perlpath=''
713 pidtype=''
714 prefix=''
715 prefixexp=''
716 installprivlib=''
717 privlib=''
718 privlibexp=''
719 prototype=''
720 ptrsize=''
721 drand01=''
722 randbits=''
723 randfunc=''
724 randseedtype=''
725 seedfunc=''
726 installscript=''
727 scriptdir=''
728 scriptdirexp=''
729 selectminbits=''
730 selecttype=''
731 sh=''
732 sig_name=''
733 sig_name_init=''
734 sig_num=''
735 sig_num_init=''
736 installsitearch=''
737 sitearch=''
738 sitearchexp=''
739 installsitelib=''
740 sitelib=''
741 sitelibexp=''
742 sizetype=''
743 so=''
744 sharpbang=''
745 shsharp=''
746 spitshell=''
747 src=''
748 ssizetype=''
749 startperl=''
750 startsh=''
751 stdchar=''
752 d_fgetpos64=''
753 d_fopen64=''
754 d_freopen64=''
755 d_fseek64=''
756 d_fseeko64=''
757 d_fsetpos64=''
758 d_ftell64=''
759 d_ftello64=''
760 d_tmpfile64=''
761 sysman=''
762 trnl=''
763 uidtype=''
764 archname64=''
765 use64bits=''
766 usemultiplicity=''
767 nm_opt=''
768 nm_so_opt=''
769 runnm=''
770 usenm=''
771 useperlio=''
772 d_oldpthreads=''
773 usethreads=''
774 incpath=''
775 mips=''
776 mips_type=''
777 usrinc=''
778 defvoidused=''
779 voidflags=''
780 CONFIG=''
781
782 define='define'
783 undef='undef'
784 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
785 rmlist=''
786
787 : We must find out about Eunice early
788 eunicefix=':'
789 if test -f /etc/unixtovms; then
790         eunicefix=/etc/unixtovms
791 fi
792 if test -f /etc/unixtovms.exe; then
793         eunicefix=/etc/unixtovms.exe
794 fi
795
796 i_whoami=''
797 : change the next line if compiling for Xenix/286 on Xenix/386
798 xlibpth='/usr/lib/386 /lib/386'
799
800 : Possible local library directories to search.
801 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
802 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
803
804 : general looking path for locating libraries
805 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
806 glibpth="$glibpth /lib /usr/lib $xlibpth"
807 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
808 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
809
810 : Private path used by Configure to find libraries.  Its value
811 : is prepended to libpth. This variable takes care of special
812 : machines, like the mips.  Usually, it should be empty.
813 plibpth=''
814
815 : Possible local include directories to search.
816 : Set locincpth to "" in a hint file to defeat local include searches.
817 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
818 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
819 :
820 : no include file wanted by default
821 inclwanted=''
822
823 : list of known cpp symbols, sorted alphabetically
824 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
825 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
826 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
827 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
828 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
829 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
830 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
831 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
832 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
833 al="$al VMS Xenix286"
834 al="$al _AIX _AIX32 _AIX370 _AIX41 _AM29000 _COFF _CRAY _CX_UX _EPI"
835 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET _POWER"
836 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
837 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
838 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
839 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
840 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
841 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
842 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
843 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
844 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
845 al="$al __SVR4_2__ __UMAXV__"
846 al="$al ____386BSD____ __alpha __alpha__ __amiga"
847 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
848 al="$al __host_mips__"
849 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
850 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
851 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
852 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
853 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
854 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
855 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
856 al="$al __mc88100 __mc88100__ __mips __mips__"
857 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
858 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
859 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
860 al="$al _host_mips _mips _unix"
861 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
862 al="$al apollo ardent att386 att3b"
863 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
864 al="$al cadmus clipper concurrent convex cray ctix"
865 al="$al dmert encore gcos gcx gimpel gould"
866 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
867 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
868 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
869 al="$al i186 i286 i386 i486 i8086"
870 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
871 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
872 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
873 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
874 al="$al mc88000 mc88100 merlin mert mips mvs n16"
875 al="$al ncl_el ncl_mr"
876 al="$al news1500 news1700 news1800 news1900 news3700"
877 al="$al news700 news800 news900 ns16000 ns32000"
878 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
879 al="$al parisc pc532 pdp11 plexus posix pyr"
880 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
881 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
882 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
883 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
884 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
885 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
886 al="$al xenix z8000"
887
888 : Trailing extension.  Override this in a hint file, if needed.
889 _exe=''
890 : Extra object files, if any, needed on this platform.
891 archobjs=''
892 groupstype=''
893 : default library list
894 libswanted=''
895 : some systems want to use only the non-versioned libso:s
896 ignore_versioned_solibs=''
897 : full support for void wanted by default
898 defvoidused=15
899
900 : set useposix=false in your hint file to disable the POSIX extension.
901 useposix=true
902 : set useopcode=false in your hint file to disable the Opcode extension.
903 useopcode=true
904 : set usemultiplicity on the Configure command line to enable multiplicity.
905 : set usethreads on the Configure command line to enable threads.
906 : List of libraries we want.
907 : If anyone needs -lnet, put it in a hint file.
908 libswanted='sfio socket inet nsl nm ndbm gdbm dbm db malloc dl'
909 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
910 libswanted="$libswanted ucb bsd BSD PW x"
911 : We probably want to search /usr/shlib before most other libraries.
912 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
913 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
914 glibpth="/usr/shlib $glibpth"
915 : Do not use vfork unless overridden by a hint file.
916 usevfork=false
917
918 : Find the basic shell for Bourne shell scripts
919 case "$sh" in
920 '')
921         case "$SYSTYPE" in
922         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
923         *) xxx='/bin/sh';;
924         esac
925         if test -f "$xxx"; then
926                 sh="$xxx"
927         else
928                 : Build up a list and do a single loop so we can 'break' out.
929                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
930                 for xxx in sh bash ksh pdksh ash; do
931                         for p in $pth; do
932                                 try="$try ${p}/${xxx}"
933                         done
934                 done
935                 for xxx in $try; do
936                         if test -f "$xxx"; then
937                                 sh="$xxx";
938                                 break
939                         elif test -f "$xxx.exe"; then
940                                 sh="$xxx";
941                                 break
942                         fi
943                 done
944         fi
945         ;;
946 esac
947
948 case "$sh" in
949 '')     cat <<EOM >&2
950 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
951
952 Usually it's in /bin/sh.  How did you even get this far?
953 Please contact me (Jarkko Hietaniemi) at jhi@iki.fi and 
954 we'll try to straighten this all out.
955 EOM
956         exit 1
957         ;;
958 esac
959
960 : see if sh knows # comments
961 if `$sh -c '#' >/dev/null 2>&1`; then
962         shsharp=true
963         spitshell=cat
964         xcat=/bin/cat
965         test -f $xcat || xcat=/usr/bin/cat
966         echo "#!$xcat" >try
967         $eunicefix try
968         chmod +x try
969         ./try > today
970         if test -s today; then
971                 sharpbang='#!'
972         else
973                 echo "#! $xcat" > try
974                 $eunicefix try
975                 chmod +x try
976                 ./try > today
977                 if test -s today; then
978                         sharpbang='#! '
979                 else
980                         sharpbang=': use '
981                 fi
982         fi
983 else
984         echo " "
985         echo "Your $sh doesn't grok # comments--I will strip them later on."
986         shsharp=false
987         cd ..
988         echo "exec grep -v '^[  ]*#'" >spitshell
989         chmod +x spitshell
990         $eunicefix spitshell
991         spitshell=`pwd`/spitshell
992         cd UU
993         echo "I presume that if # doesn't work, #! won't work either!"
994         sharpbang=': use '
995 fi
996 rm -f try today
997
998 : figure out how to guarantee sh startup
999 case "$startsh" in
1000 '') startsh=${sharpbang}${sh} ;;
1001 *)
1002 esac
1003 cat >try <<EOSS
1004 $startsh
1005 set abc
1006 test "$?abc" != 1
1007 EOSS
1008
1009 chmod +x try
1010 $eunicefix try
1011 if ./try; then
1012         : echo "Yup, it does."
1013 else
1014         echo "Hmm... '$startsh' does not guarantee sh startup..."
1015         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1016 fi
1017 rm -f try
1018
1019
1020 : Save command line options in file UU/cmdline.opt for later use in
1021 : generating config.sh.
1022 cat > cmdline.opt <<EOSH
1023 # Configure command line arguments.
1024 config_arg0='$0'
1025 config_args='$*'
1026 config_argc=$#
1027 EOSH
1028 argn=1
1029 for arg in "$@"; do
1030         cat >>cmdline.opt <<EOSH
1031 config_arg$argn='$arg'
1032 EOSH
1033         argn=`expr $argn + 1`
1034 done
1035
1036 : produce awk script to parse command line options
1037 cat >options.awk <<'EOF'
1038 BEGIN {
1039         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
1040
1041         len = length(optstr);
1042         for (i = 1; i <= len; i++) {
1043                 c = substr(optstr, i, 1);
1044                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1045                 if (a == ":") {
1046                         arg[c] = 1;
1047                         i++;
1048                 }
1049                 opt[c] = 1;
1050         }
1051 }
1052 {
1053         expect = 0;
1054         str = $0;
1055         if (substr(str, 1, 1) != "-") {
1056                 printf("'%s'\n", str);
1057                 next;
1058         }
1059         len = length($0);
1060         for (i = 2; i <= len; i++) {
1061                 c = substr(str, i, 1);
1062                 if (!opt[c]) {
1063                         printf("-%s\n", substr(str, i));
1064                         next;
1065                 }
1066                 printf("-%s\n", c);
1067                 if (arg[c]) {
1068                         if (i < len)
1069                                 printf("'%s'\n", substr(str, i + 1));
1070                         else
1071                                 expect = 1;
1072                         next;
1073                 }
1074         }
1075 }
1076 END {
1077         if (expect)
1078                 print "?";
1079 }
1080 EOF
1081
1082 : process the command line options
1083 set X `for arg in "$@"; do echo "X$arg"; done |
1084         sed -e s/X// | awk -f options.awk`
1085 eval "set $*"
1086 shift
1087 rm -f options.awk
1088
1089 : set up default values
1090 fastread=''
1091 reuseval=false
1092 config_sh=''
1093 alldone=''
1094 error=''
1095 silent=''
1096 extractsh=''
1097 override=''
1098 knowitall=''
1099 rm -f optdef.sh
1100 cat >optdef.sh <<EOS
1101 $startsh
1102 EOS
1103
1104
1105 : option parsing
1106 while test $# -gt 0; do
1107         case "$1" in
1108         -d) shift; fastread=yes;;
1109         -e) shift; alldone=cont;;
1110         -f)
1111                 shift
1112                 cd ..
1113                 if test -r "$1"; then
1114                         config_sh="$1"
1115                 else
1116                         echo "$me: cannot read config file $1." >&2
1117                         error=true
1118                 fi
1119                 cd UU
1120                 shift;;
1121         -h) shift; error=true;;
1122         -r) shift; reuseval=true;;
1123         -s) shift; silent=true; realsilent=true;;
1124         -E) shift; alldone=exit;;
1125         -K) shift; knowitall=true;;
1126         -O) shift; override=true;;
1127         -S) shift; silent=true; extractsh=true;;
1128         -D)
1129                 shift
1130                 case "$1" in
1131                 *=)
1132                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1133                         echo "$me: ignoring -D $1" >&2
1134                         ;;
1135                 *=*) echo "$1" | \
1136                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1137                 *) echo "$1='define'" >> optdef.sh;;
1138                 esac
1139                 shift
1140                 ;;
1141         -U)
1142                 shift
1143                 case "$1" in
1144                 *=) echo "$1" >> optdef.sh;;
1145                 *=*)
1146                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1147                         echo "$me: ignoring -U $1" >&2
1148                         ;;
1149                 *) echo "$1='undef'" >> optdef.sh;;
1150                 esac
1151                 shift
1152                 ;;
1153         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1154                 exit 0;;
1155         --) break;;
1156         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1157         *) break;;
1158         esac
1159 done
1160
1161 case "$error" in
1162 true)
1163         cat >&2 <<EOM
1164 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1165                  [-U symbol] [-U symbol=]
1166   -d : use defaults for all answers.
1167   -e : go on without questioning past the production of config.sh.
1168   -f : specify an alternate default configuration file.
1169   -h : print this help message and exit (with an error status).
1170   -r : reuse C symbols value if possible (skips costly nm extraction).
1171   -s : silent mode, only echoes questions and essential information.
1172   -D : define symbol to have some value:
1173          -D symbol         symbol gets the value 'define'
1174          -D symbol=value   symbol gets the value 'value'
1175   -E : stop at the end of questions, after having produced config.sh.
1176   -K : do not use unless you know what you are doing.
1177   -O : let -D and -U override definitions from loaded configuration file.
1178   -S : perform variable substitutions on all .SH files (can mix with -f)
1179   -U : undefine symbol:
1180          -U symbol    symbol gets the value 'undef'
1181          -U symbol=   symbol gets completely empty
1182   -V : print version number and exit (with a zero status).
1183 EOM
1184         exit 1
1185         ;;
1186 esac
1187
1188 : Sanity checks
1189 case "$fastread$alldone" in
1190 yescont|yesexit) ;;
1191 *)
1192         if test ! -t 0; then
1193                 echo "Say 'sh Configure', not 'sh <Configure'"
1194                 exit 1
1195         fi
1196         ;;
1197 esac
1198
1199 exec 4>&1
1200 case "$silent" in
1201 true) exec 1>/dev/null;;
1202 esac
1203
1204 : run the defines and the undefines, if any, but leave the file out there...
1205 touch optdef.sh
1206 . ./optdef.sh
1207
1208 : set package name
1209 package=perl5
1210 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1211 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1212 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1213 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1214 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1215 esac
1216
1217 : Some greps do not return status, grrr.
1218 echo "grimblepritz" >grimble
1219 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1220         contains=contains
1221 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1222         contains=grep
1223 else
1224         contains=contains
1225 fi
1226 rm -f grimble
1227 : the following should work in any shell
1228 case "$contains" in
1229 contains*)
1230         echo " "
1231         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1232         cat >contains <<'EOSS'
1233 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1234 EOSS
1235 chmod +x contains
1236 esac
1237
1238 : Find the path to the source tree
1239 case "$src" in
1240 '') case "$0" in
1241     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`;;
1242     *)   src='.';;
1243     esac;;
1244 esac
1245 case "$src" in
1246 '')     src=/
1247         rsrc=/
1248         ;;
1249 /*) rsrc="$src";;
1250 *) rsrc="../$src";;
1251 esac
1252 if test -f $rsrc/Configure && \
1253         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1254 then
1255    : found it, so we are ok.
1256 else
1257         rsrc=''
1258         for src in . .. ../.. ../../.. ../../../..; do
1259                 if test -f ../$src/Configure && \
1260                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1261                 then
1262                         rsrc=../$src
1263                         break
1264                 fi
1265         done
1266 fi
1267 case "$rsrc" in
1268 '')
1269         cat <<EOM >&4
1270
1271 Sorry, I can't seem to locate the source dir for $package.  Please start
1272 Configure with an explicit path -- i.e. /some/path/Configure.
1273
1274 EOM
1275         exit 1
1276         ;;
1277 ../.)   rsrc='..';;
1278 *)
1279         echo " "
1280         echo "Sources for $package found in \"$src\"." >&4
1281         ;;
1282 esac
1283
1284 : script used to extract .SH files with variable substitutions
1285 cat >extract <<'EOS'
1286 CONFIG=true
1287 echo "Doing variable substitutions on .SH files..."
1288 if test -f $src/MANIFEST; then
1289         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1290 else
1291         echo "(Looking for .SH files under the source directory.)"
1292         set x `(cd $src; find . -name "*.SH" -print)`
1293 fi
1294 shift
1295 case $# in
1296 0) set x `(cd $src; echo *.SH)`; shift;;
1297 esac
1298 if test ! -f $src/$1; then
1299         shift
1300 fi
1301 mkdir_p='
1302 name=$1;
1303 create="";
1304 while test $name; do
1305         if test ! -d "$name"; then
1306                 create="$name $create";
1307                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1308                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1309         else
1310                 name="";
1311         fi;
1312 done;
1313 for file in $create; do
1314         mkdir $file;
1315 done
1316 '
1317 for file in $*; do
1318         case "$src" in
1319         ".")
1320                 case "$file" in
1321                 */*)
1322                         dir=`expr X$file : 'X\(.*\)/'`
1323                         file=`expr X$file : 'X.*/\(.*\)'`
1324                         (cd $dir && . ./$file)
1325                         ;;
1326                 *)
1327                         . ./$file
1328                         ;;
1329                 esac
1330                 ;;
1331         *)
1332                 case "$file" in
1333                 */*)
1334                         dir=`expr X$file : 'X\(.*\)/'`
1335                         file=`expr X$file : 'X.*/\(.*\)'`
1336                         (set x $dir; shift; eval $mkdir_p)
1337                         sh <$src/$dir/$file
1338                         ;;
1339                 *)
1340                         sh <$src/$file
1341                         ;;
1342                 esac
1343                 ;;
1344         esac
1345 done
1346 if test -f $src/config_h.SH; then
1347         if test ! -f config.h; then
1348         : oops, they left it out of MANIFEST, probably, so do it anyway.
1349         . $src/config_h.SH
1350         fi
1351 fi
1352 EOS
1353
1354 : extract files and exit if asked to do so
1355 case "$extractsh" in
1356 true)
1357         case "$realsilent" in
1358         true) ;;
1359         *) exec 1>&4;;
1360         esac
1361         case "$config_sh" in
1362         '') config_sh='config.sh';;
1363         esac
1364         echo " "
1365         echo "Fetching answers from $config_sh..."
1366         cd ..
1367         . $config_sh
1368         test "$override" && . ./optdef.sh
1369         echo " "
1370         . UU/extract
1371         rm -rf UU
1372         echo "Done."
1373         exit 0
1374         ;;
1375 esac
1376
1377 : Eunice requires " " instead of "", can you believe it
1378 echo " "
1379 : Here we go...
1380 echo "Beginning of configuration questions for $package."
1381
1382 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1383
1384 : first determine how to suppress newline on echo command
1385 echo " "
1386 echo "Checking echo to see how to suppress newlines..."
1387 (echo "hi there\c" ; echo " ") >.echotmp
1388 if $contains c .echotmp >/dev/null 2>&1 ; then
1389         echo "...using -n."
1390         n='-n'
1391         c=''
1392 else
1393         cat <<'EOM'
1394 ...using \c
1395 EOM
1396         n=''
1397         c='\c'
1398 fi
1399 echo $n "The star should be here-->$c"
1400 echo '*'
1401 rm -f .echotmp
1402
1403 : Now test for existence of everything in MANIFEST
1404 echo " "
1405 if test -f $rsrc/MANIFEST; then
1406         echo "First let's make sure your kit is complete.  Checking..." >&4
1407         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1408         rm -f missing
1409         tmppwd=`pwd`
1410         for filelist in x??; do
1411                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1412         done
1413         if test -s missing; then
1414                 cat missing >&4
1415                 cat >&4 <<'EOM'
1416
1417 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1418
1419 You have the option of continuing the configuration process, despite the
1420 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1421 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1422 and contact the author (jhi@iki.fi).
1423
1424 EOM
1425                 echo $n "Continue? [n] $c" >&4
1426                 read ans
1427                 case "$ans" in
1428                 y*)
1429                         echo "Continuing..." >&4
1430                         rm -f missing
1431                         ;;
1432                 *)
1433                         echo "ABORTING..." >&4
1434                         kill $$
1435                         ;;
1436                 esac
1437         else
1438                 echo "Looks good..."
1439         fi
1440 else
1441         echo "There is no MANIFEST file.  I hope your kit is complete !"
1442 fi
1443 rm -f missing x??
1444
1445 echo " "
1446 : Find the appropriate value for a newline for tr
1447 if test -n "$DJGPP"; then
1448        trnl='\012'
1449 fi
1450 if test X"$trnl" = X; then
1451         case "`echo foo|tr '\n' x 2>/dev/null`" in
1452         foox) trnl='\n' ;;
1453         esac
1454 fi
1455 if test X"$trnl" = X; then
1456         case "`echo foo|tr '\012' x 2>/dev/null`" in
1457         foox) trnl='\012' ;;
1458         esac
1459 fi
1460 if test X"$trnl" = X; then
1461         cat <<EOM >&2
1462
1463 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1464
1465 EOM
1466         exit 1
1467 fi
1468
1469 : compute the number of columns on the terminal for proper question formatting
1470 case "$COLUMNS" in
1471 '') COLUMNS='80';;
1472 esac
1473
1474 : set up the echo used in my read
1475 myecho="case \"\$xxxm\" in
1476 '') echo $n \"\$rp $c\" >&4;;
1477 *) case \"\$rp\" in
1478         '') echo $n \"[\$xxxm] $c\";;
1479         *)
1480                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1481                         echo \"\$rp\" >&4
1482                         echo $n \"[\$xxxm] $c\" >&4
1483                 else
1484                         echo $n \"\$rp [\$xxxm] $c\" >&4
1485                 fi
1486                 ;;
1487         esac;;
1488 esac"
1489
1490 : now set up to do reads with possible shell escape and default assignment
1491 cat <<EOSC >myread
1492 $startsh
1493 xxxm=\$dflt
1494 $myecho
1495 ans='!'
1496 case "\$fastread" in
1497 yes) case "\$dflt" in
1498         '') ;;
1499         *) ans='';
1500                 case "\$silent-\$rp" in
1501                 true-) ;;
1502                 *) echo " " >&4;;
1503                 esac;;
1504         esac;;
1505 *) case "\$silent" in
1506         true) case "\$rp" in
1507                 '') ans='';;
1508                 esac;;
1509         esac;;
1510 esac
1511 while expr "X\$ans" : "X!" >/dev/null; do
1512         read answ
1513         set x \$xxxm
1514         shift
1515         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1516         case  "\$answ" in
1517         "!")
1518                 sh 1>&4
1519                 echo " "
1520                 $myecho
1521                 ;;
1522         !*)
1523                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1524                 shift
1525                 sh 1>&4 -c "\$*"
1526                 echo " "
1527                 $myecho
1528                 ;;
1529         "\$ans")
1530                 case "\$ans" in
1531                 \\&*)
1532                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1533                         shift
1534                         case "\$1" in
1535                         -d)
1536                                 fastread=yes
1537                                 echo "(OK, I'll run with -d after this question.)" >&4
1538                                 ;;
1539                         -*)
1540                                 echo "*** Sorry, \$1 not supported yet." >&4
1541                                 ;;
1542                         esac
1543                         $myecho
1544                         ans=!
1545                         ;;
1546                 esac;;
1547         *)
1548                 case "\$aok" in
1549                 y)
1550                         echo "*** Substitution done -- please confirm."
1551                         xxxm="\$ans"
1552                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1553                         xxxm="\$ans"
1554                         ans=!
1555                         ;;
1556                 *)
1557                         echo "*** Error -- try again."
1558                         ans=!
1559                         ;;
1560                 esac
1561                 $myecho
1562                 ;;
1563         esac
1564         case "\$ans\$xxxm\$nostick" in
1565         '')
1566                 ans=!
1567                 $myecho
1568                 ;;
1569         esac
1570 done
1571 case "\$ans" in
1572 '') ans="\$xxxm";;
1573 esac
1574 EOSC
1575
1576 : create .config dir to save info across Configure sessions
1577 test -d ../.config || mkdir ../.config
1578 cat >../.config/README <<EOF
1579 This directory created by Configure to save information that should
1580 persist across sessions for $package.
1581
1582 You may safely delete it if you wish.
1583 EOF
1584
1585 : general instructions
1586 needman=true
1587 firsttime=true
1588 user=`(logname) 2>/dev/null`
1589 case "$user" in
1590 '') user=`whoami 2>&1`;;
1591 esac
1592 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1593         firsttime=false
1594         echo " "
1595         rp='Would you like to see the instructions?'
1596         dflt=n
1597         . ./myread
1598         case "$ans" in
1599         [yY]*) ;;
1600         *) needman=false;;
1601         esac
1602 fi
1603 if $needman; then
1604         cat <<EOH
1605
1606 This installation shell script will examine your system and ask you questions
1607 to determine how the perl5 package should be installed. If you get
1608 stuck on a question, you may use a ! shell escape to start a subshell or
1609 execute a command.  Many of the questions will have default answers in square
1610 brackets; typing carriage return will give you the default.
1611
1612 On some of the questions which ask for file or directory names you are allowed
1613 to use the ~name construct to specify the login directory belonging to "name",
1614 even if you don't have a shell which knows about that.  Questions where this is
1615 allowed will be marked "(~name ok)".
1616
1617 EOH
1618         rp=''
1619         dflt='Type carriage return to continue'
1620         . ./myread
1621         cat <<'EOH'
1622
1623 The prompter used in this script allows you to use shell variables and
1624 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1625 in the default answer, as if the default line was a set of arguments given to a
1626 script shell.  This means you may also use $* to repeat the whole default line,
1627 so you do not have to re-type everything to add something to the default.
1628
1629 Everytime there is a substitution, you will have to confirm.  If there is an
1630 error (e.g. an unmatched backtick), the default answer will remain unchanged
1631 and you will be prompted again.
1632
1633 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1634 the questions and use the computed defaults (or the previous answers if there
1635 was already a config.sh file). Type 'Configure -h' for a list of options.
1636 You may also start interactively and then answer '& -d' at any prompt to turn
1637 on the non-interactive behaviour for the remainder of the execution.
1638
1639 EOH
1640         . ./myread
1641         cat <<EOH
1642
1643 Much effort has been expended to ensure that this shell script will run on any
1644 Unix system.  If despite that it blows up on yours, your best bet is to edit
1645 Configure and run it again.  If you can't run Configure for some reason,
1646 you'll have to generate a config.sh file by hand.  Whatever problems you
1647 have, let me (jhi@iki.fi) know how I blew it.
1648
1649 This installation script affects things in two ways:
1650
1651 1) it may do direct variable substitutions on some of the files included
1652    in this kit.
1653 2) it builds a config.h file for inclusion in C programs.  You may edit
1654    any of these files as the need arises after running this script.
1655
1656 If you make a mistake on a question, there is no easy way to back up to it
1657 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1658 files.  Configure will offer to let you do this before it runs the SH files.
1659
1660 EOH
1661         dflt='Type carriage return to continue'
1662         . ./myread
1663         case "$firsttime" in
1664         true) echo $user >>../.config/instruct;;
1665         esac
1666 fi
1667
1668 : find out where common programs are
1669 echo " "
1670 echo "Locating common programs..." >&4
1671 cat <<EOSC >loc
1672 $startsh
1673 case \$# in
1674 0) exit 1;;
1675 esac
1676 thing=\$1
1677 shift
1678 dflt=\$1
1679 shift
1680 for dir in \$*; do
1681         case "\$thing" in
1682         .)
1683         if test -d \$dir/\$thing; then
1684                 echo \$dir
1685                 exit 0
1686         fi
1687         ;;
1688         *)
1689         for thisthing in \$dir/\$thing; do
1690                 : just loop through to pick last item
1691         done
1692         if test -f \$thisthing; then
1693                 echo \$thisthing
1694                 exit 0
1695         elif test -f \$dir/\$thing.exe; then
1696                 if test -n "$DJGPP"; then
1697                         echo \$dir/\$thing.exe
1698                 else
1699                         : on Eunice apparently
1700                         echo \$dir/\$thing
1701                 fi
1702                 exit 0
1703         fi
1704         ;;
1705         esac
1706 done
1707 echo \$dflt
1708 exit 1
1709 EOSC
1710 chmod +x loc
1711 $eunicefix loc
1712 loclist="
1713 awk
1714 cat
1715 comm
1716 cp
1717 echo
1718 expr
1719 grep
1720 ls
1721 make
1722 mkdir
1723 rm
1724 sed
1725 sort
1726 touch
1727 tr
1728 uniq
1729 "
1730 trylist="
1731 Mcc
1732 ar
1733 byacc
1734 cpp
1735 csh
1736 date
1737 egrep
1738 gzip
1739 less
1740 ln
1741 more
1742 nm
1743 nroff
1744 pg
1745 tee
1746 test
1747 uname
1748 zip
1749 "
1750 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1751 pth="$pth /lib /usr/lib"
1752 for file in $loclist; do
1753         eval xxx=\$$file
1754         case "$xxx" in
1755         /*|?:[\\/]*)
1756                 if test -f "$xxx"; then
1757                         : ok
1758                 else
1759                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1760                         xxx=`./loc $file $file $pth`
1761                 fi
1762                 ;;
1763         '') xxx=`./loc $file $file $pth`;;
1764         *) xxx=`./loc $xxx $xxx $pth`;;
1765         esac
1766         eval $file=$xxx
1767         eval _$file=$xxx
1768         case "$xxx" in
1769         /*)
1770                 echo $file is in $xxx.
1771                 ;;
1772         ?:[\\/]*)
1773                 echo $file is in $xxx.
1774                 ;;
1775         *)
1776                 echo "I don't know where '$file' is, and my life depends on it." >&4
1777                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1778                 exit 1
1779                 ;;
1780         esac
1781 done
1782 echo " "
1783 echo "Don't worry if any of the following aren't found..."
1784 say=offhand
1785 for file in $trylist; do
1786         eval xxx=\$$file
1787         case "$xxx" in
1788         /*|?:[\\/]*)
1789                 if test -f "$xxx"; then
1790                         : ok
1791                 else
1792                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1793                         xxx=`./loc $file $file $pth`
1794                 fi
1795                 ;;
1796         '') xxx=`./loc $file $file $pth`;;
1797         *) xxx=`./loc $xxx $xxx $pth`;;
1798         esac
1799         eval $file=$xxx
1800         eval _$file=$xxx
1801         case "$xxx" in
1802         /*)
1803                 echo $file is in $xxx.
1804                 ;;
1805         ?:[\\/]*)
1806                 echo $file is in $xxx.
1807                 ;;
1808         *)
1809                 echo "I don't see $file out there, $say."
1810                 say=either
1811                 ;;
1812         esac
1813 done
1814 case "$egrep" in
1815 egrep)
1816         echo "Substituting grep for egrep."
1817         egrep=$grep
1818         ;;
1819 esac
1820 case "$ln" in
1821 ln)
1822         echo "Substituting cp for ln."
1823         ln=$cp
1824         ;;
1825 esac
1826 case "$test" in
1827 test)
1828         echo "Hopefully test is built into your sh."
1829         ;;
1830 *)
1831         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1832                 echo "Using the test built into your sh."
1833                 test=test
1834                 _test=test
1835         fi
1836         ;;
1837 esac
1838 case "$echo" in
1839 echo)
1840         echo "Hopefully echo is built into your sh."
1841         ;;
1842 '') ;;
1843 *)
1844         echo " "
1845 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1846         $echo $n "hi there$c" >foo1
1847         echo $n "hi there$c" >foo2
1848         if cmp foo1 foo2 >/dev/null 2>&1; then
1849                 echo "They are compatible.  In fact, they may be identical."
1850         else
1851                 case "$n" in
1852                 '-n') n='' c='\c';;
1853                 *) n='-n' c='';;
1854                 esac
1855                 cat <<FOO
1856 They are not compatible!  You are probably running ksh on a non-USG system.
1857 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1858 have echo built in and we may have to run some Bourne shell scripts.  That
1859 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1860
1861 FOO
1862                 $echo $n "The star should be here-->$c"
1863                 $echo "*"
1864         fi
1865         $rm -f foo1 foo2
1866         ;;
1867 esac
1868
1869 : determine whether symbolic links are supported
1870 echo " "
1871 $touch blurfl
1872 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1873         echo "Symbolic links are supported." >&4
1874         lns="$ln -s"
1875 else
1876         echo "Symbolic links are NOT supported." >&4
1877         lns="$ln"
1878 fi
1879 $rm -f blurfl sym
1880
1881 : see whether [:lower:] and [:upper:] are supported character classes
1882 echo " "
1883 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1884 ABYZ)
1885         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1886         up='[:upper:]'
1887         low='[:lower:]'
1888         ;;
1889 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
1890         # (0xc9 and 0xd1), therefore that is a nice testing point.
1891         if test "X$up" = X -o "X$low" = X; then
1892             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
1893             ij) up='[A-Z]'
1894                 low='[a-z]'
1895                 ;;
1896             esac
1897         fi
1898         if test "X$up" = X -o "X$low" = X; then
1899             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
1900             ij) up='A-Z'
1901                 low='a-z'
1902                 ;;
1903             esac
1904         fi
1905         if test "X$up" = X -o "X$low" = X; then
1906             case "`echo IJ | od -x 2>/dev/null`" in
1907             *C9D1*|*c9d1*)
1908                 echo "Hey, this might be EBCDIC." >&4
1909                 if test "X$up" = X -o "X$low" = X; then
1910                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
1911                     ij) up='[A-IJ-RS-Z]'
1912                         low='[a-ij-rs-z]'
1913                         ;;
1914                     esac
1915                 fi
1916                 if test "X$up" = X -o "X$low" = X; then
1917                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
1918                     ij) up='A-IJ-RS-Z'
1919                         low='a-ij-rs-z'
1920                         ;;
1921                     esac
1922                 fi
1923                 ;;
1924             esac
1925         fi
1926 esac
1927 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
1928 ij)
1929     echo "Using $up and $low to convert case." >&4
1930     ;;
1931 *)
1932     echo "I don't know how to translate letters from upper to lower case." >&4
1933     echo "Your tr is not acting any way I know of." >&4
1934     exit 1
1935     ;;
1936 esac
1937 : set up the translation script tr, must be called with ./tr of course
1938 cat >tr <<EOSC
1939 $startsh
1940 case "\$1\$2" in
1941 '[A-Z][a-z]') exec $tr '$up' '$low';;
1942 '[a-z][A-Z]') exec $tr '$low' '$up';;
1943 esac
1944 exec $tr "\$@"
1945 EOSC
1946 chmod +x tr
1947 $eunicefix tr
1948
1949 : Try to determine whether config.sh was made on this system
1950 case "$config_sh" in
1951 '')
1952 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1953 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
1954 # because the A-Z/a-z are not consecutive.
1955 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1956         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1957 newmyuname="$myuname"
1958 dflt=n
1959 case "$knowitall" in
1960 '')
1961         if test -f ../config.sh; then
1962                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1963                         eval "`grep myuname= ../config.sh`"
1964                 fi
1965                 if test "X$myuname" = "X$newmyuname"; then
1966                         dflt=y
1967                 fi
1968         fi
1969         ;;
1970 *) dflt=y;;
1971 esac
1972
1973 : Get old answers from old config file if Configure was run on the
1974 : same system, otherwise use the hints.
1975 hint=default
1976 cd ..
1977 if test -f config.sh; then
1978         echo " "
1979         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1980         . UU/myread
1981         case "$ans" in
1982         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1983         *)  echo "Fetching default answers from your old config.sh file..." >&4
1984                 tmp_n="$n"
1985                 tmp_c="$c"
1986                 tmp_sh="$sh"
1987                 . ./config.sh
1988                 cp config.sh UU
1989                 n="$tmp_n"
1990                 c="$tmp_c"
1991                 : Older versions did not always set $sh.  Catch re-use of such
1992                 : an old config.sh.
1993                 case "$sh" in
1994                 '') sh="$tmp_sh" ;;
1995                 esac
1996                 hint=previous
1997                 ;;
1998         esac
1999 fi
2000 if test ! -f config.sh; then
2001         $cat <<EOM
2002
2003 First time through, eh?  I have some defaults handy for some systems
2004 that need some extra help getting the Configure answers right:
2005
2006 EOM
2007         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2008         dflt=''
2009         : Half the following guesses are probably wrong... If you have better
2010         : tests or hints, please send them to jhi@iki.fi
2011         : The metaconfig authors would also appreciate a copy...
2012         $test -f /irix && osname=irix
2013         $test -f /xenix && osname=sco_xenix
2014         $test -f /dynix && osname=dynix
2015         $test -f /dnix && osname=dnix
2016         $test -f /lynx.os && osname=lynxos
2017         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2018         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2019         $test -f /bin/mips && /bin/mips && osname=mips
2020         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2021                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2022         $test -d /usr/apollo/bin && osname=apollo
2023         $test -f /etc/saf/_sactab && osname=svr4
2024         $test -d /usr/include/minix && osname=minix
2025         if $test -d /MachTen -o -d /MachTen_Folder; then
2026                 osname=machten
2027                 if $test -x /sbin/version; then
2028                         osvers=`/sbin/version | $awk '{print $2}' |
2029                         $sed -e 's/[A-Za-z]$//'`
2030                 elif $test -x /usr/etc/version; then
2031                         osvers=`/usr/etc/version | $awk '{print $2}' |
2032                         $sed -e 's/[A-Za-z]$//'`
2033                 else
2034                         osvers="$2.$3"
2035                 fi
2036         fi
2037        $test -f /sys/posix.dll &&
2038                $test -f /usr/bin/what &&
2039                set X `/usr/bin/what /sys/posix.dll` &&
2040                $test "$3" = UWIN &&
2041                osname=uwin &&
2042                osvers="$5"
2043         if $test -f $uname; then
2044                 set X $myuname
2045                 shift
2046
2047                 case "$5" in
2048                 fps*) osname=fps ;;
2049                 mips*)
2050                         case "$4" in
2051                         umips) osname=umips ;;
2052                         *) osname=mips ;;
2053                         esac;;
2054                 [23]100) osname=mips ;;
2055                 next*) osname=next ;;
2056                 i386*)
2057                         if $test -f /etc/kconfig; then
2058                                 osname=isc
2059                                 if test "$lns" = "ln -s"; then
2060                                         osvers=4
2061                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2062                                         osvers=3
2063                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2064                                         osvers=2
2065                                 fi
2066                         fi
2067                         ;;
2068                 pc*)
2069                         if test -n "$DJGPP"; then
2070                                 osname=dos
2071                                 osvers=djgpp
2072                         fi
2073                         ;;
2074                 esac
2075
2076                 case "$1" in
2077                 aix) osname=aix
2078                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2079                         case "$tmp" in
2080                         'not found') osvers="$4"."$3" ;;
2081                         '<3240'|'<>3240') osvers=3.2.0 ;;
2082                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2083                         '=3250'|'>3250') osvers=3.2.5 ;;
2084                         *) osvers=$tmp;;
2085                         esac
2086                         ;;
2087                 *dc.osx) osname=dcosx
2088                         osvers="$3"
2089                         ;;
2090                 dnix) osname=dnix
2091                         osvers="$3"
2092                         ;;
2093                 domainos) osname=apollo
2094                         osvers="$3"
2095                         ;;
2096                 dgux) osname=dgux 
2097                         osvers="$3"
2098                         ;;
2099                 dynixptx*) osname=dynixptx
2100                         osvers=`echo "$4"|sed 's/^v//'`
2101                         ;;
2102                 freebsd) osname=freebsd 
2103                         osvers="$3" ;;
2104                 genix) osname=genix ;;
2105                 hp*) osname=hpux 
2106                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2107                         ;;
2108                 irix*) osname=irix
2109                         case "$3" in
2110                         4*) osvers=4 ;;
2111                         5*) osvers=5 ;;
2112                         *)      osvers="$3" ;;
2113                         esac
2114                         ;;
2115                 linux) osname=linux
2116                         case "$3" in
2117                         *)      osvers="$3" ;;
2118                         esac
2119                         ;;
2120                 MiNT) osname=mint
2121                         ;;
2122                 netbsd*) osname=netbsd
2123                         osvers="$3"
2124                         ;;
2125                 news-os) osvers="$3"
2126                         case "$3" in
2127                         4*) osname=newsos4 ;;
2128                         *) osname=newsos ;;
2129                         esac
2130                         ;;
2131                 bsd386) osname=bsd386
2132                         osvers=`$uname -r`
2133                         ;;
2134                 POSIX-BC | posix-bc ) osname=posix-bc
2135                         osvers="$3"
2136                         ;;
2137                 powerux | power_ux | powermax_os | powermaxos | \
2138                 powerunix | power_unix) osname=powerux
2139                         osvers="$3"
2140                         ;;
2141                 next*) osname=next ;;
2142                 solaris) osname=solaris
2143                         case "$3" in
2144                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2145                         *)      osvers="$3" ;;
2146                         esac
2147                         ;;
2148                 sunos) osname=sunos
2149                         case "$3" in
2150                         5*) osname=solaris
2151                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2152                         *)      osvers="$3" ;;
2153                         esac
2154                         ;;
2155                 titanos) osname=titanos
2156                         case "$3" in
2157                         1*) osvers=1 ;;
2158                         2*) osvers=2 ;;
2159                         3*) osvers=3 ;;
2160                         4*) osvers=4 ;;
2161                         *)      osvers="$3" ;;
2162                         esac
2163                         ;;
2164                 ultrix) osname=ultrix
2165                         osvers="$3"
2166                         ;;
2167                 osf1|mls+)      case "$5" in
2168                                 alpha)
2169                                         osname=dec_osf
2170                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2171                                         ;;
2172                         hp*)    osname=hp_osf1  ;;
2173                         mips)   osname=mips_osf1 ;;
2174                         esac
2175                         ;;
2176                 uts) osname=uts 
2177                         osvers="$3"
2178                         ;;
2179                 qnx) osname=qnx
2180                         osvers="$4"
2181                         ;;
2182                 $2) case "$osname" in
2183                         *isc*) ;;
2184                         *freebsd*) ;;
2185                         svr*)
2186                                 : svr4.x or possibly later
2187                                 case "svr$3" in 
2188                                 ${osname}*)
2189                                         osname=svr$3
2190                                         osvers=$4
2191                                         ;;
2192                                 esac
2193                                 case "$osname" in
2194                                 svr4.0)
2195                                         : Check for ESIX
2196                                         if test -f /stand/boot ; then
2197                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2198                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2199                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2200                                                         if test -n "$isesix"; then
2201                                                                 osname=esix4
2202                                                         fi
2203                                                 fi
2204                                         fi
2205                                         ;;
2206                                 esac
2207                                 ;;
2208                         *)      if test -f /etc/systemid; then
2209                                         osname=sco
2210                                         set `echo $3 | $sed 's/\./ /g'` $4
2211                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2212                                                 osvers=$1.$2.$3
2213                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2214                                                 osvers=$1.$2
2215                                         elif $test -f $src/hints/sco_$1.sh; then
2216                                                 osvers=$1
2217                                         fi
2218                                 else
2219                                         case "$osname" in
2220                                         '') : Still unknown.  Probably a generic Sys V.
2221                                                 osname="sysv"
2222                                                 osvers="$3"
2223                                                 ;;
2224                                         esac
2225                                 fi
2226                                 ;;
2227                         esac
2228                         ;;
2229                 *)      case "$osname" in
2230                         '') : Still unknown.  Probably a generic BSD.
2231                                 osname="$1"
2232                                 osvers="$3"
2233                                 ;;
2234                         esac
2235                         ;;
2236                 esac
2237         else
2238                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2239                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2240                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2241                                 osname=news_os
2242                         fi
2243                         $rm -f UU/kernel.what
2244                 elif test -d c:/.; then
2245                         set X $myuname
2246                         osname=os2
2247                         osvers="$5"
2248                 fi
2249         fi
2250         
2251         : Now look for a hint file osname_osvers, unless one has been
2252         : specified already.
2253         case "$hintfile" in
2254         ''|' ')
2255                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
2256                 : Also try without trailing minor version numbers.
2257                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
2258                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
2259                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
2260                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
2261                 case "$file" in
2262                 '') dflt=none ;;
2263                 *)  case "$osvers" in
2264                         '') dflt=$file
2265                                 ;;
2266                         *)  if $test -f $src/hints/$file.sh ; then
2267                                         dflt=$file
2268                                 elif $test -f $src/hints/$xfile.sh ; then
2269                                         dflt=$xfile
2270                                 elif $test -f $src/hints/$xxfile.sh ; then
2271                                         dflt=$xxfile
2272                                 elif $test -f $src/hints/$xxxfile.sh ; then
2273                                         dflt=$xxxfile
2274                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2275                                         dflt=$xxxxfile
2276                                 elif $test -f "$src/hints/${osname}.sh" ; then
2277                                         dflt="${osname}"
2278                                 else
2279                                         dflt=none
2280                                 fi
2281                                 ;;
2282                         esac
2283                         ;;
2284                 esac
2285                 if $test -f Policy.sh ; then
2286                         case "$dflt" in
2287                         *Policy*) ;;
2288                         none) dflt="Policy" ;;
2289                         *) dflt="Policy $dflt" ;;
2290                         esac
2291                 fi
2292                 ;;
2293         *)
2294                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2295                 ;;
2296         esac
2297
2298         if $test -f Policy.sh ; then
2299                 $cat <<EOM
2300
2301 There's also a Policy hint file available, which should make the
2302 site-specific (policy) questions easier to answer.
2303 EOM
2304
2305         fi
2306
2307         $cat <<EOM
2308
2309 You may give one or more space-separated answers, or "none" if appropriate.
2310 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2311 is a good thing.  DO NOT give a wrong version.
2312
2313 EOM
2314
2315         rp="Which of these apply, if any?"
2316         . UU/myread
2317         tans=$ans
2318         for file in $tans; do
2319                 if $test X$file = XPolicy -a -f Policy.sh; then
2320                         . Policy.sh
2321                         $cat Policy.sh >> UU/config.sh
2322                 elif $test -f $src/hints/$file.sh; then
2323                         . $src/hints/$file.sh
2324                         $cat $src/hints/$file.sh >> UU/config.sh
2325                 elif $test X$tans = X -o X$tans = Xnone ; then
2326                         : nothing
2327                 else
2328                         : Give one chance to correct a possible typo.
2329                         echo "$file.sh does not exist"
2330                         dflt=$file
2331                         rp="hint to use instead?"
2332                         . UU/myread
2333                         for file in $ans; do
2334                                 if $test -f "$src/hints/$file.sh"; then
2335                                         . $src/hints/$file.sh
2336                                         $cat $src/hints/$file.sh >> UU/config.sh
2337                                 elif $test X$ans = X -o X$ans = Xnone ; then
2338                                         : nothing
2339                                 else
2340                                         echo "$file.sh does not exist -- ignored."
2341                                 fi
2342                         done
2343                 fi
2344         done
2345
2346         hint=recommended
2347         : Remember our hint file for later.
2348         if $test -f "$src/hints/$file.sh" ; then
2349                 hintfile="$file"
2350         else
2351                 hintfile=''
2352         fi
2353 fi
2354 cd UU
2355 ;;
2356 *)
2357         echo " "
2358         echo "Fetching default answers from $config_sh..." >&4
2359         tmp_n="$n"
2360         tmp_c="$c"
2361         cd ..
2362         cp $config_sh config.sh 2>/dev/null
2363         chmod +w config.sh
2364         . ./config.sh
2365         cd UU
2366         cp ../config.sh .
2367         n="$tmp_n"
2368         c="$tmp_c"
2369         hint=previous
2370         ;;
2371 esac
2372 test "$override" && . ./optdef.sh
2373 myuname="$newmyuname"
2374
2375 : Restore computed paths
2376 for file in $loclist $trylist; do
2377         eval $file="\$_$file"
2378 done
2379
2380 cat << EOM
2381
2382 Configure uses the operating system name and version to set some defaults.
2383 The default value is probably right if the name rings a bell. Otherwise,
2384 since spelling matters for me, either accept the default or answer "none"
2385 to leave it blank.
2386
2387 EOM
2388 case "$osname" in
2389         ''|' ')
2390                 case "$hintfile" in
2391                 ''|' '|none) dflt=none ;;
2392                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2393                 esac
2394                 ;;
2395         *) dflt="$osname" ;;
2396 esac
2397 rp="Operating system name?"
2398 . ./myread
2399 case "$ans" in
2400 none)  osname='' ;;
2401 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2402 esac
2403 echo " "
2404 case "$osvers" in
2405         ''|' ')
2406                 case "$hintfile" in
2407                 ''|' '|none) dflt=none ;;
2408                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2409                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2410                         case "$dflt" in
2411                         ''|' ') dflt=none ;;
2412                         esac
2413                         ;;
2414                 esac
2415                 ;;
2416         *) dflt="$osvers" ;;
2417 esac
2418 rp="Operating system version?"
2419 . ./myread
2420 case "$ans" in
2421 none)  osvers='' ;;
2422 *) osvers="$ans" ;;
2423 esac
2424
2425 : who configured the system
2426 cf_time=`LC_ALL=C; export LC_ALL; $date 2>&1`
2427 cf_by=`(logname) 2>/dev/null`
2428 case "$cf_by" in
2429 "")
2430         cf_by=`(whoami) 2>/dev/null`
2431         case "$cf_by" in
2432         "") cf_by=unknown ;;
2433         esac ;;
2434 esac
2435
2436 : set up the script used to warn in case of inconsistency
2437 cat <<EOS >whoa
2438 $startsh
2439 EOS
2440 cat <<'EOSC' >>whoa
2441 dflt=y
2442 echo " "
2443 echo "*** WHOA THERE!!! ***" >&4
2444 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2445 rp="    Keep the $hint value?"
2446 . ./myread
2447 case "$ans" in
2448 y) td=$was; tu=$was;;
2449 esac
2450 EOSC
2451
2452 : function used to set $1 to $val
2453 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2454 case "$val$was" in
2455 $define$undef) . ./whoa; eval "$var=\$td";;
2456 $undef$define) . ./whoa; eval "$var=\$tu";;
2457 *) eval "$var=$val";;
2458 esac'
2459
2460 cat <<EOM
2461
2462 Perl can be built to take advantage of threads, on some systems.
2463 To do so, Configure must be run with -Dusethreads.
2464 (See README.threads for details.)
2465 EOM
2466 case "$usethreads" in
2467 $define|true|[yY]*)     dflt='y';;
2468 *) dflt='n';;
2469 esac
2470 rp='Build a threading Perl?'
2471 . ./myread
2472 case "$ans" in
2473 y|Y)    val="$define" ;;     
2474 *)      val="$undef" ;;
2475 esac
2476 set usethreads
2477 eval $setvar 
2478 : Look for a hint-file generated 'call-back-unit'.  Now that the
2479 : user has specified if a threading perl is to be built, we may need 
2480 : to set or change some other defaults.
2481 if $test -f usethreads.cbu; then
2482     . ./usethreads.cbu
2483 fi
2484 case "$d_oldpthreads" in
2485 '')     : Configure tests would be welcome here.  For now, assume undef.
2486         val="$undef" ;;
2487 *)      val="$d_oldpthreads" ;;
2488 esac
2489 set d_oldpthreads
2490 eval $setvar
2491
2492 cat <<EOM
2493
2494 Perl can be built so that multiple Perl interpreters can coexist
2495 within the same Perl executable.  To do so, Configure must be run with
2496 -Dusemultiplicity.
2497
2498 Normally you do not need this and you should answer no.
2499
2500 EOM
2501 case "$usemultiplicity" in
2502 $define|true|[yY]*)     dflt='y';;
2503 *) dflt='n';;
2504 esac
2505 rp='Build Perl for multiplicity?'
2506 . ./myread
2507 case "$ans" in
2508 y|Y)    val="$define" ;;     
2509 *)      val="$undef" ;;
2510 esac
2511 set usemultiplicity
2512 eval $setvar 
2513
2514 cat <<EOM
2515
2516 Perl can be built to take advantage of explicit 64-bit interfaces,
2517 on some systems.  To do so, Configure must be run with -Duse64bits.
2518
2519 If this doesn't make any sense to you, just accept the default 'n'.
2520 EOM
2521 case "$use64bits" in
2522 $define|true|[yY]*)     dflt='y';;
2523 *) dflt='n';;
2524 esac
2525 rp='Try to use explicit 64-bit interfaces, if available?'
2526 . ./myread
2527 case "$ans" in
2528 y|Y) 
2529         val="$define"
2530         ;;     
2531 *)      
2532         val="$undef"
2533         ;;
2534 esac
2535 set use64bits
2536 eval $setvar
2537
2538 archname64=''
2539
2540 : determine the architecture name
2541 echo " "
2542 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2543         tarch=`arch`"-$osname"
2544 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2545         if uname -m > tmparch 2>&1 ; then
2546                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2547                         -e 's/$/'"-$osname/" tmparch`
2548         else
2549                 tarch="$osname"
2550         fi
2551         $rm -f tmparch
2552 else
2553         tarch="$osname"
2554 fi
2555 case "$myarchname" in
2556 ''|"$tarch") ;;
2557 *)
2558         echo "(Your architecture name used to be $myarchname.)"
2559         archname=''
2560         ;;
2561 esac
2562 myarchname="$tarch"
2563 case "$archname" in
2564 '') dflt="$tarch";;
2565 *) dflt="$archname";;
2566 esac
2567 rp='What is your architecture name'
2568 . ./myread
2569 archname="$ans"
2570 case "$usethreads" in
2571 $define)
2572         echo "Threads selected." >&4
2573         case "$archname" in
2574         *-thread*) echo "...and architecture name already has -thread." >&4
2575                 ;;
2576         *)      archname="$archname-thread"
2577                 echo "...setting architecture name to $archname." >&4
2578                 ;;
2579         esac
2580         ;;
2581 esac
2582 case "$usemultiplicity" in
2583 $define)
2584         echo "Multiplicity selected." >&4
2585         case "$archname" in
2586         *-multi*) echo "...and architecture name already has -multi." >&4
2587                 ;;
2588         *)      archname="$archname-multi"
2589                 echo "...setting architecture name to $archname." >&4
2590                 ;;
2591         esac
2592         ;;
2593 esac
2594 case "$use64bits" in
2595 $define)
2596         echo "Explicit 64-bitness selected." >&4
2597         case "$archname64" in
2598         '')
2599                 ;;
2600         *)
2601                 case "$archname" in
2602                 *-$archname64*) echo "...and architecture name already has $archname64." >&4
2603                         ;;
2604                 *)      archname="$archname-$archname64"
2605                         echo "...setting architecture name to $archname." >&4
2606                         ;;
2607                 esac
2608                 ;;
2609         esac
2610 esac
2611
2612 : is AFS running?
2613 echo " "
2614 case "$afs" in
2615 $define|true)   afs=true ;;
2616 $undef|false)   afs=false ;;
2617 *)      if test -d /afs; then
2618                 afs=true
2619         else
2620                 afs=false
2621         fi
2622         ;;
2623 esac
2624 if $afs; then
2625         echo "AFS may be running... I'll be extra cautious then..." >&4
2626 else
2627         echo "AFS does not seem to be running..." >&4
2628 fi
2629
2630 : decide how portable to be.  Allow command line overrides.
2631 case "$d_portable" in
2632 "$undef") ;;
2633 *)      d_portable="$define" ;;
2634 esac
2635
2636 : set up shell script to do ~ expansion
2637 cat >filexp <<EOSS
2638 $startsh
2639 : expand filename
2640 case "\$1" in
2641  ~/*|~)
2642         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2643         ;;
2644  ~*)
2645         if $test -f /bin/csh; then
2646                 /bin/csh -f -c "glob \$1"
2647                 failed=\$?
2648                 echo ""
2649                 exit \$failed
2650         else
2651                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2652                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2653                 if $test ! -d "\$dir"; then
2654                         me=\`basename \$0\`
2655                         echo "\$me: can't locate home directory for: \$name" >&2
2656                         exit 1
2657                 fi
2658                 case "\$1" in
2659                 */*)
2660                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2661                         ;;
2662                 *)
2663                         echo \$dir
2664                         ;;
2665                 esac
2666         fi
2667         ;;
2668 *)
2669         echo \$1
2670         ;;
2671 esac
2672 EOSS
2673 chmod +x filexp
2674 $eunicefix filexp
2675
2676 : now set up to get a file name
2677 cat <<EOS >getfile
2678 $startsh
2679 EOS
2680 cat <<'EOSC' >>getfile
2681 tilde=''
2682 fullpath=''
2683 already=''
2684 skip=''
2685 none_ok=''
2686 exp_file=''
2687 nopath_ok=''
2688 orig_rp="$rp"
2689 orig_dflt="$dflt"
2690
2691 case "$fn" in
2692 *\(*)
2693         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
2694         fn=`echo $fn | sed 's/(.*)//'`
2695         ;;
2696 esac
2697
2698 case "$fn" in
2699 *:*)
2700         loc_file=`expr $fn : '.*:\(.*\)'`
2701         fn=`expr $fn : '\(.*\):.*'`
2702         ;;
2703 esac
2704
2705 case "$fn" in
2706 *~*) tilde=true;;
2707 esac
2708 case "$fn" in
2709 */*) fullpath=true;;
2710 esac
2711 case "$fn" in
2712 *+*) skip=true;;
2713 esac
2714 case "$fn" in
2715 *n*) none_ok=true;;
2716 esac
2717 case "$fn" in
2718 *e*) exp_file=true;;
2719 esac
2720 case "$fn" in
2721 *p*) nopath_ok=true;;
2722 esac
2723
2724 case "$fn" in
2725 *f*) type='File';;
2726 *d*) type='Directory';;
2727 *l*) type='Locate';;
2728 esac
2729
2730 what="$type"
2731 case "$what" in
2732 Locate) what='File';;
2733 esac
2734
2735 case "$exp_file" in
2736 '')
2737         case "$d_portable" in
2738         "$define") ;;
2739         *) exp_file=true;;
2740         esac
2741         ;;
2742 esac
2743
2744 cd ..
2745 while test "$type"; do
2746         redo=''
2747         rp="$orig_rp"
2748         dflt="$orig_dflt"
2749         case "$tilde" in
2750         true) rp="$rp (~name ok)";;
2751         esac
2752         . UU/myread
2753         if test -f UU/getfile.ok && \
2754                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2755         then
2756                 value="$ans"
2757                 ansexp="$ans"
2758                 break
2759         fi
2760         case "$ans" in
2761         none)
2762                 value=''
2763                 ansexp=''
2764                 case "$none_ok" in
2765                 true) type='';;
2766                 esac
2767                 ;;
2768         *)
2769                 case "$tilde" in
2770                 '') value="$ans"
2771                         ansexp="$ans";;
2772                 *)
2773                         value=`UU/filexp $ans`
2774                         case $? in
2775                         0)
2776                                 if test "$ans" != "$value"; then
2777                                         echo "(That expands to $value on this system.)"
2778                                 fi
2779                                 ;;
2780                         *) value="$ans";;
2781                         esac
2782                         ansexp="$value"
2783                         case "$exp_file" in
2784                         '') value="$ans";;
2785                         esac
2786                         ;;
2787                 esac
2788                 case "$fullpath" in
2789                 true)
2790                         case "$ansexp" in
2791                         /*) value="$ansexp" ;;
2792                         *)
2793                                 redo=true
2794                                 case "$already" in
2795                                 true)
2796                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2797                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2798                                         ;;
2799                                 *)
2800                                 echo "Please give a full path name, starting with slash." >&4
2801                                         case "$tilde" in
2802                                         true)
2803                                 echo "Note that using ~name is ok provided it expands well." >&4
2804                                                 already=true
2805                                                 ;;
2806                                         esac
2807                                 esac
2808                                 ;;
2809                         esac
2810                         ;;
2811                 esac
2812                 case "$redo" in
2813                 '')
2814                         case "$type" in
2815                         File)
2816                                 if test -f "$ansexp"; then
2817                                         type=''
2818                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2819                                 then
2820                                         echo "($value is not a plain file, but that's ok.)"
2821                                         type=''
2822                                 fi
2823                                 ;;
2824                         Directory)
2825                                 if test -d "$ansexp"; then
2826                                         type=''
2827                                 fi
2828                                 ;;
2829                         Locate)
2830                                 if test -d "$ansexp"; then
2831                                         echo "(Looking for $loc_file in directory $value.)"
2832                                         value="$value/$loc_file"
2833                                         ansexp="$ansexp/$loc_file"
2834                                 fi
2835                                 if test -f "$ansexp"; then
2836                                         type=''
2837                                 fi
2838                                 case "$nopath_ok" in
2839                                 true)   case "$value" in
2840                                         */*) ;;
2841                                         *)      echo "Assuming $value will be in people's path."
2842                                                 type=''
2843                                                 ;;
2844                                         esac
2845                                         ;;
2846                                 esac
2847                                 ;;
2848                         esac
2849
2850                         case "$skip" in
2851                         true) type='';
2852                         esac
2853
2854                         case "$type" in
2855                         '') ;;
2856                         *)
2857                                 if test "$fastread" = yes; then
2858                                         dflt=y
2859                                 else
2860                                         dflt=n
2861                                 fi
2862                                 rp="$what $value doesn't exist.  Use that name anyway?"
2863                                 . UU/myread
2864                                 dflt=''
2865                                 case "$ans" in
2866                                 y*) type='';;
2867                                 *) echo " ";;
2868                                 esac
2869                                 ;;
2870                         esac
2871                         ;;
2872                 esac
2873                 ;;
2874         esac
2875 done
2876 cd UU
2877 ans="$value"
2878 rp="$orig_rp"
2879 dflt="$orig_dflt"
2880 rm -f getfile.ok
2881 EOSC
2882
2883 : determine root of directory hierarchy where package will be installed.
2884 case "$prefix" in
2885 '')
2886         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2887         ;;
2888 *)
2889         dflt="$prefix"
2890         ;;
2891 esac
2892 $cat <<EOM
2893
2894 By default, $package will be installed in $dflt/bin, manual
2895 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2896 all installation directories. Typically set to /usr/local, but you
2897 may choose /usr if you wish to install $package among your system
2898 binaries. If you wish to have binaries under /bin but manual pages
2899 under /usr/local/man, that's ok: you will be prompted separately
2900 for each of the installation directories, the prefix being only used
2901 to set the defaults.
2902
2903 EOM
2904 fn=d~
2905 rp='Installation prefix to use?'
2906 . ./getfile
2907 oldprefix=''
2908 case "$prefix" in
2909 '') ;;
2910 *)
2911         case "$ans" in
2912         "$prefix") ;;
2913         *) oldprefix="$prefix";;
2914         esac
2915         ;;
2916 esac
2917 prefix="$ans"
2918 prefixexp="$ansexp"
2919
2920 : set the prefixit variable, to compute a suitable default value
2921 prefixit='case "$3" in
2922 ""|none)
2923         case "$oldprefix" in
2924         "") eval "$1=\"\$$2\"";;
2925         *)
2926                 case "$3" in
2927                 "") eval "$1=";;
2928                 none)
2929                         eval "tp=\"\$$2\"";
2930                         case "$tp" in
2931                         ""|" ") eval "$1=\"\$$2\"";;
2932                         *) eval "$1=";;
2933                         esac;;
2934                 esac;;
2935         esac;;
2936 *)
2937         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2938         case "$tp" in
2939         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2940         /*-$oldprefix/*|\~*-$oldprefix/*)
2941                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2942         *) eval "$1=\"\$$2\"";;
2943         esac;;
2944 esac'
2945
2946 : set the base revision
2947 baserev=5.0
2948
2949 : get the patchlevel
2950 echo " "
2951 echo "Getting the current patchlevel..." >&4
2952 if $test -r $rsrc/patchlevel.h;then
2953         patchlevel=`awk '/define[       ]+PATCHLEVEL/ {print $3}' $rsrc/patchlevel.h`
2954         subversion=`awk '/define[       ]+SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
2955 else
2956         patchlevel=0
2957         subversion=0
2958 fi
2959 $echo $n "(You have $package" $c
2960 case "$package" in
2961 "*$baserev")    ;;
2962 *)              $echo $n " $baserev" $c ;;
2963 esac
2964 $echo $n " patchlevel $patchlevel" $c
2965 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2966 echo ".)"
2967
2968 if test 0 -eq "$subversion"; then
2969         version=`LC_ALL=C; export LC_ALL; \
2970                  echo $baserev $patchlevel | \
2971                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2972 else
2973         version=`LC_ALL=C; export LC_ALL; \
2974                  echo $baserev $patchlevel $subversion | \
2975                  $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
2976 fi
2977 : Figure out perl API version.  Perhaps this should be in patchlevel.h
2978 if test "$subversion" -lt 50; then
2979         apiversion=`LC_ALL=C; export LC_ALL; \
2980                  echo $baserev $patchlevel | \
2981                  $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2982 else
2983         apiversion="$version"
2984 fi
2985
2986 : determine where private library files go
2987 : Usual default is /usr/local/lib/perl5/$version.
2988 : Also allow things like /opt/perl/lib/$version, since 
2989 : /opt/perl/lib/perl5... would be redundant.
2990 case "$prefix" in
2991 *perl*) set dflt privlib lib/$version ;;
2992 *)       set dflt privlib lib/$package/$version ;;
2993 esac
2994 eval $prefixit
2995 $cat <<EOM
2996
2997 There are some auxiliary files for $package that need to be put into a
2998 private library directory that is accessible by everyone.
2999
3000 EOM
3001 fn=d~+
3002 rp='Pathname where the private library files will reside?'
3003 . ./getfile
3004 if $test "X$privlibexp" != "X$ansexp"; then
3005         installprivlib=''
3006 fi
3007 privlib="$ans"
3008 privlibexp="$ansexp"
3009 if $afs; then
3010         $cat <<EOM
3011
3012 Since you are running AFS, I need to distinguish the directory in which
3013 private files reside from the directory in which they are installed (and from
3014 which they are presumably copied to the former directory by occult means).
3015
3016 EOM
3017         case "$installprivlib" in
3018         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3019         *) dflt="$installprivlib";;
3020         esac
3021         fn=de~
3022         rp='Where will private files be installed?'
3023         . ./getfile
3024         installprivlib="$ans"
3025 else
3026         installprivlib="$privlibexp"
3027 fi
3028
3029 : set the prefixup variable, to restore leading tilda escape
3030 prefixup='case "$prefixexp" in
3031 "$prefix") ;;
3032 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3033 esac'
3034
3035 : determine where public architecture dependent libraries go
3036 set archlib archlib
3037 eval $prefixit
3038 : privlib default is /usr/local/lib/$package/$version
3039 : archlib default is /usr/local/lib/$package/$version/$archname
3040 : privlib may have an optional trailing /share.
3041 tdflt=`echo $privlib | $sed 's,/share$,,'`
3042 tdflt=$tdflt/$archname
3043 case "$archlib" in
3044 '')     dflt=$tdflt
3045         ;;
3046 *)      dflt="$archlib"
3047     ;;
3048 esac
3049 cat <<EOM
3050
3051 $spackage contains architecture-dependent library files.  If you are
3052 sharing libraries in a heterogeneous environment, you might store
3053 these files in a separate location.  Otherwise, you can just include
3054 them with the rest of the public library files.
3055
3056 EOM
3057 fn=d+~
3058 rp='Where do you want to put the public architecture-dependent libraries?'
3059 . ./getfile
3060 archlib="$ans"
3061 archlibexp="$ansexp"
3062
3063 if $afs; then
3064         $cat <<EOM
3065
3066 Since you are running AFS, I need to distinguish the directory in
3067 which architecture-dependent library files reside from the directory
3068 in which they are installed (and from which they are presumably copied
3069 to the former directory by occult means).
3070
3071 EOM
3072         case "$installarchlib" in
3073         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3074         *) dflt="$installarchlib";;
3075         esac
3076         fn=de~
3077         rp='Where will architecture-dependent library files be installed?'
3078         . ./getfile
3079         installarchlib="$ans"
3080 else
3081         installarchlib="$archlibexp"
3082 fi
3083 if $test X"$archlib" = X"$privlib"; then
3084         d_archlib="$undef"
3085 else
3086         d_archlib="$define"
3087 fi
3088
3089 : make some quick guesses about what we are up against
3090 echo " "
3091 $echo $n "Hmm...  $c"
3092 echo exit 1 >bsd
3093 echo exit 1 >usg
3094 echo exit 1 >v7
3095 echo exit 1 >osf1
3096 echo exit 1 >eunice
3097 echo exit 1 >xenix
3098 echo exit 1 >venix
3099 echo exit 1 >os2
3100 d_bsd="$undef"
3101 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
3102 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
3103 then
3104         echo "Looks kind of like an OSF/1 system, but we'll see..."
3105         echo exit 0 >osf1
3106 elif test `echo abc | tr a-z A-Z` = Abc ; then
3107         xxx=`./loc addbib blurfl $pth`
3108         if $test -f $xxx; then
3109         echo "Looks kind of like a USG system with BSD features, but we'll see..."
3110                 echo exit 0 >bsd
3111                 echo exit 0 >usg
3112         else
3113                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
3114                         echo "Looks kind of like an extended USG system, but we'll see..."
3115                 else
3116                         echo "Looks kind of like a USG system, but we'll see..."
3117                 fi
3118                 echo exit 0 >usg
3119         fi
3120 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
3121         echo "Looks kind of like a BSD system, but we'll see..."
3122         d_bsd="$define"
3123         echo exit 0 >bsd
3124 else
3125         echo "Looks kind of like a Version 7 system, but we'll see..."
3126         echo exit 0 >v7
3127 fi
3128 case "$eunicefix" in
3129 *unixtovms*)
3130         $cat <<'EOI'
3131 There is, however, a strange, musty smell in the air that reminds me of
3132 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
3133 EOI
3134         echo exit 0 >eunice
3135         d_eunice="$define"
3136 : it so happens the Eunice I know will not run shell scripts in Unix format
3137         ;;
3138 *)
3139         echo " "
3140         echo "Congratulations.  You aren't running Eunice."
3141         d_eunice="$undef"
3142         ;;
3143 esac
3144 : Detect OS2.  The p_ variable is set above in the Head.U unit.
3145 case "$p_" in
3146 :) ;;
3147 *)
3148         $cat <<'EOI'
3149 I have the feeling something is not exactly right, however...don't tell me...
3150 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
3151 EOI
3152         echo exit 0 >os2
3153         ;;
3154 esac
3155 if test -f /xenix; then
3156         echo "Actually, this looks more like a XENIX system..."
3157         echo exit 0 >xenix
3158         d_xenix="$define"
3159 else
3160         echo " "
3161         echo "It's not Xenix..."
3162         d_xenix="$undef"
3163 fi
3164 chmod +x xenix
3165 $eunicefix xenix
3166 if test -f /venix; then
3167         echo "Actually, this looks more like a VENIX system..."
3168         echo exit 0 >venix
3169 else
3170         echo " "
3171         if ./xenix; then
3172                 : null
3173         else
3174                 echo "Nor is it Venix..."
3175         fi
3176 fi
3177 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3178 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3179 $rm -f foo
3180
3181 : see if setuid scripts can be secure
3182 $cat <<EOM
3183
3184 Some kernels have a bug that prevents setuid #! scripts from being
3185 secure.  Some sites have disabled setuid #! scripts because of this.
3186
3187 First let's decide if your kernel supports secure setuid #! scripts.
3188 (If setuid #! scripts would be secure but have been disabled anyway,
3189 don't say that they are secure if asked.)
3190
3191 EOM
3192
3193 val="$undef"
3194 if $test -d /dev/fd; then
3195         echo "#!$ls" >reflect
3196         chmod +x,u+s reflect
3197         ./reflect >flect 2>&1
3198         if $contains "/dev/fd" flect >/dev/null; then
3199                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
3200                 val="$define"
3201         else
3202                 $cat <<EOM
3203 If you are not sure if they are secure, I can check but I'll need a
3204 username and password different from the one you are using right now.
3205 If you don't have such a username or don't want me to test, simply
3206 enter 'none'.
3207
3208 EOM
3209                 rp='Other username to test security of setuid scripts with?'
3210                 dflt='none'
3211                 . ./myread
3212                 case "$ans" in
3213                 n|none)
3214                         case "$d_suidsafe" in
3215                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
3216                                 dflt=n;;
3217                         "$undef")
3218                                 echo "Well, the $hint value is *not* secure." >&4
3219                                 dflt=n;;
3220                         *)      echo "Well, the $hint value *is* secure." >&4
3221                                 dflt=y;;
3222                         esac
3223                         ;;
3224                 *)
3225                         $rm -f reflect flect
3226                         echo "#!$ls" >reflect
3227                         chmod +x,u+s reflect
3228                         echo >flect
3229                         chmod a+w flect
3230                         echo '"su" will (probably) prompt you for '"$ans's password."
3231                         su $ans -c './reflect >flect'
3232                         if $contains "/dev/fd" flect >/dev/null; then
3233                                 echo "Okay, it looks like setuid scripts are secure." >&4
3234                                 dflt=y
3235                         else
3236                                 echo "I don't think setuid scripts are secure." >&4
3237                                 dflt=n
3238                         fi
3239                         ;;
3240                 esac
3241                 rp='Does your kernel have *secure* setuid scripts?'
3242                 . ./myread
3243                 case "$ans" in
3244                 [yY]*)  val="$define";;
3245                 *)      val="$undef";;
3246                 esac
3247         fi
3248 else
3249         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
3250         echo "(That's for file descriptors, not floppy disks.)"
3251         val="$undef"
3252 fi
3253 set d_suidsafe
3254 eval $setvar
3255
3256 $rm -f reflect flect
3257
3258 : now see if they want to do setuid emulation
3259 echo " "
3260 val="$undef"
3261 case "$d_suidsafe" in
3262 "$define")
3263         val="$undef"
3264         echo "No need to emulate SUID scripts since they are secure here." >& 4
3265         ;;
3266 *)
3267         $cat <<EOM
3268 Some systems have disabled setuid scripts, especially systems where
3269 setuid scripts cannot be secure.  On systems where setuid scripts have
3270 been disabled, the setuid/setgid bits on scripts are currently
3271 useless.  It is possible for $package to detect those bits and emulate
3272 setuid/setgid in a secure fashion.  This emulation will only work if
3273 setuid scripts have been disabled in your kernel.
3274
3275 EOM
3276         case "$d_dosuid" in
3277         "$define") dflt=y ;;
3278         *) dflt=n ;;
3279         esac
3280         rp="Do you want to do setuid/setgid emulation?"
3281         . ./myread
3282         case "$ans" in
3283         [yY]*)  val="$define";;
3284         *)      val="$undef";;
3285         esac
3286         ;;
3287 esac
3288 set d_dosuid
3289 eval $setvar
3290
3291 : determine where manual pages are on this system
3292 echo " "
3293 case "$sysman" in
3294 '') 
3295         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
3296         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
3297         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
3298         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
3299         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
3300         sysman=`./loc . /usr/man/man1 $syspath`
3301         ;;
3302 esac
3303 if $test -d "$sysman"; then
3304         echo "System manual is in $sysman." >&4
3305 else
3306         echo "Could not find manual pages in source form." >&4
3307 fi
3308
3309 : see what memory models we can support
3310 case "$models" in
3311 '')
3312         $cat >pdp11.c <<'EOP'
3313 main() {
3314 #ifdef pdp11
3315         exit(0);
3316 #else
3317         exit(1);
3318 #endif
3319 }
3320 EOP
3321         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
3322         if $test -f pdp11 && ./pdp11 2>/dev/null; then
3323                 dflt='unsplit split'
3324         else
3325                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3326                 case "$tans" in
3327                 X) dflt='none';;
3328                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3329                                 dflt='small'
3330                         else
3331                                 dflt=''
3332                         fi
3333                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
3334                                 dflt="$dflt medium"
3335                         fi
3336                         if $test -d /lib/large || $test -d /usr/lib/large; then
3337                                 dflt="$dflt large"
3338                         fi
3339                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
3340                                 dflt="$dflt huge"
3341                         fi
3342                 esac
3343         fi;;
3344 *) dflt="$models";;
3345 esac
3346 $cat <<EOM
3347  
3348 Some systems have different model sizes.  On most systems they are called
3349 small, medium, large, and huge.  On the PDP11 they are called unsplit and
3350 split.  If your system doesn't support different memory models, say "none".
3351 If you wish to force everything to one memory model, say "none" here and
3352 put the appropriate flags later when it asks you for other cc and ld flags.
3353 Venix systems may wish to put "none" and let the compiler figure things out.
3354 (In the following question multiple model names should be space separated.)
3355
3356 The default for most systems is "none".
3357
3358 EOM
3359 rp="Which memory models are supported?"
3360 . ./myread
3361 models="$ans"
3362
3363 case "$models" in
3364 none)
3365         small=''
3366         medium=''
3367         large=''
3368         huge=''
3369         unsplit=''
3370         split=''
3371         ;;
3372 *split)
3373         case "$split" in
3374         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3375                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3376                         dflt='-i'
3377                 else
3378                         dflt='none'
3379                 fi;;
3380         *) dflt="$split";;
3381         esac
3382         rp="What flag indicates separate I and D space?"
3383         . ./myread
3384         tans="$ans"
3385         case "$tans" in
3386         none) tans='';;
3387         esac
3388         split="$tans"
3389         unsplit='';;
3390 *large*|*small*|*medium*|*huge*)
3391         case "$models" in
3392         *large*)
3393                 case "$large" in
3394                 '') dflt='-Ml';;
3395                 *) dflt="$large";;
3396                 esac
3397         rp="What flag indicates large model?"
3398         . ./myread
3399         tans="$ans"
3400         case "$tans" in
3401         none) tans='';
3402         esac
3403         large="$tans";;
3404         *) large='';;
3405         esac
3406         case "$models" in
3407         *huge*) case "$huge" in
3408                 '') dflt='-Mh';;
3409                 *) dflt="$huge";;
3410                 esac
3411                 rp="What flag indicates huge model?"
3412                 . ./myread
3413                 tans="$ans"
3414                 case "$tans" in
3415                 none) tans='';
3416                 esac
3417                 huge="$tans";;
3418         *) huge="$large";;
3419         esac
3420         case "$models" in
3421         *medium*) case "$medium" in
3422                 '') dflt='-Mm';;
3423                 *) dflt="$medium";;
3424                 esac
3425                 rp="What flag indicates medium model?"
3426                 . ./myread
3427                 tans="$ans"
3428                 case "$tans" in
3429                 none) tans='';
3430                 esac
3431                 medium="$tans";;
3432         *) medium="$large";;
3433         esac
3434         case "$models" in
3435         *small*) case "$small" in
3436                 '') dflt='none';;
3437                 *) dflt="$small";;
3438                 esac
3439                 rp="What flag indicates small model?"
3440                 . ./myread
3441                 tans="$ans"
3442                 case "$tans" in
3443                 none) tans='';
3444                 esac
3445                 small="$tans";;
3446         *) small='';;
3447         esac
3448         ;;
3449 *)
3450         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3451         ;;
3452 esac
3453 $rm -f pdp11.* pdp11
3454
3455 : see if we need a special compiler
3456 echo " "
3457 if ./usg; then
3458         case "$cc" in
3459         '') case "$Mcc" in
3460                 /*) dflt='Mcc';;
3461                 *) case "$large" in
3462                         -M*) dflt='cc';;
3463                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3464                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3465                                                 dflt='cc'
3466                                         else
3467                                                 dflt='cc -M'
3468                                         fi
3469                                 else
3470                                         dflt='cc'
3471                                 fi;;
3472                         esac;;
3473                 esac;;
3474         *)  dflt="$cc";;
3475         esac
3476         case "$dflt" in
3477         *M*)    $cat <<'EOM'
3478 On some older systems the default C compiler will not resolve multiple global
3479 references that happen to have the same name.  On some such systems the "Mcc"
3480 command may be used to force these to be resolved.  On other systems a "cc -M"
3481 command is required.  (Note that the -M flag on other systems indicates a
3482 memory model to use!) If you have the Gnu C compiler, you might wish to use
3483 that instead.
3484
3485 EOM
3486         ;;
3487         esac
3488         rp="Use which C compiler?"
3489         . ./myread
3490         cc="$ans"
3491 else
3492         case "$cc" in
3493         '') dflt=cc;;
3494         *) dflt="$cc";;
3495         esac
3496         rp="Use which C compiler?"
3497         . ./myread
3498         cc="$ans"
3499 fi
3500 : Look for a hint-file generated 'call-back-unit'.  Now that the
3501 : user has specified the compiler, we may need to set or change some
3502 : other defaults.
3503 if $test -f cc.cbu; then
3504     . ./cc.cbu
3505 fi
3506 echo " "
3507 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3508 $cat >gccvers.c <<EOM
3509 #include <stdio.h>
3510 int main() {
3511 #ifdef __GNUC__
3512 #ifdef __VERSION__
3513         printf("%s\n", __VERSION__);
3514 #else
3515         printf("%s\n", "1");
3516 #endif
3517 #endif
3518         exit(0);
3519 }
3520 EOM
3521 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3522         gccversion=`./gccvers`
3523         case "$gccversion" in
3524         '') echo "You are not using GNU cc." ;;
3525         *)  echo "You are using GNU cc $gccversion." ;;
3526         esac
3527 else
3528         echo " "
3529         echo "*** WHOA THERE!!! ***" >&4
3530         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3531         case "$knowitall" in
3532         '')
3533         echo "    You'd better start hunting for one and let me know about it." >&4
3534                 exit 1
3535                 ;;
3536         esac
3537 fi
3538 $rm -f gccvers*
3539 case "$gccversion" in
3540 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3541 esac
3542
3543 : What should the include directory be ?
3544 echo " "
3545 $echo $n "Hmm...  $c"
3546 dflt='/usr/include'
3547 incpath=''
3548 mips_type=''
3549 if $test -f /bin/mips && /bin/mips; then
3550         echo "Looks like a MIPS system..."
3551         $cat >usr.c <<'EOCP'
3552 #ifdef SYSTYPE_BSD43
3553 /bsd43
3554 #endif
3555 EOCP
3556         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3557                 dflt='/bsd43/usr/include'
3558                 incpath='/bsd43'
3559                 mips_type='BSD 4.3'
3560         else
3561                 mips_type='System V'
3562         fi
3563         $rm -f usr.c usr.out
3564         echo "and you're compiling with the $mips_type compiler and libraries."
3565         xxx_prompt=y
3566         echo "exit 0" >mips
3567 else
3568         echo "Doesn't look like a MIPS system."
3569         xxx_prompt=n
3570         echo "exit 1" >mips
3571 fi
3572 chmod +x mips
3573 $eunicefix mips
3574 case "$usrinc" in
3575 '') ;;
3576 *) dflt="$usrinc";;
3577 esac
3578 case "$xxx_prompt" in
3579 y)      fn=d/
3580         echo " "
3581         rp='Where are the include files you want to use?'
3582         . ./getfile
3583         usrinc="$ans"
3584         ;;
3585 *)      usrinc="$dflt"
3586         ;;
3587 esac
3588
3589 : see how we invoke the C preprocessor
3590 echo " "
3591 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3592 cat <<'EOT' >testcpp.c
3593 #define ABC abc
3594 #define XYZ xyz
3595 ABC.XYZ
3596 EOT
3597 cd ..
3598 if test ! -f cppstdin; then
3599         echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3600 else
3601         echo "Keeping your $hint cppstdin wrapper."
3602 fi
3603 chmod 755 cppstdin
3604 wrapper=`pwd`/cppstdin
3605 ok='false'
3606 cd UU
3607
3608 if $test "X$cppstdin" != "X" && \
3609         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3610         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3611 then
3612         echo "You used to use $cppstdin $cppminus so we'll use that again."
3613         case "$cpprun" in
3614         '') echo "But let's see if we can live without a wrapper..." ;;
3615         *)
3616                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3617                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3618                 then
3619                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3620                         ok='true'
3621                 else
3622                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3623                 fi
3624                 ;;
3625         esac
3626 else
3627         case "$cppstdin" in
3628         '') ;;
3629         *)
3630                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3631                 ;;
3632         esac
3633 fi
3634
3635 if $ok; then
3636         : nothing
3637 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3638         $cc -E <testcpp.c >testcpp.out 2>&1; \
3639         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3640         echo "Yup, it does."
3641         x_cpp="$cc -E"
3642         x_minus='';
3643 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3644         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3645         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3646         echo "Yup, it does."
3647         x_cpp="$cc -E"
3648         x_minus='-';
3649 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3650         $cc -P <testcpp.c >testcpp.out 2>&1; \
3651         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3652         echo "Yipee, that works!"
3653         x_cpp="$cc -P"
3654         x_minus='';
3655 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3656         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3657         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3658         echo "At long last!"
3659         x_cpp="$cc -P"
3660         x_minus='-';
3661 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3662         $cpp <testcpp.c >testcpp.out 2>&1; \
3663         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3664         echo "It works!"
3665         x_cpp="$cpp"
3666         x_minus='';
3667 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3668         $cpp - <testcpp.c >testcpp.out 2>&1; \
3669         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3670         echo "Hooray, it works!  I was beginning to wonder."
3671         x_cpp="$cpp"
3672         x_minus='-';
3673 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3674         $wrapper <testcpp.c >testcpp.out 2>&1; \
3675         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3676         x_cpp="$wrapper"
3677         x_minus=''
3678         echo "Eureka!"
3679 else
3680         dflt=''
3681         rp="No dice.  I can't find a C preprocessor.  Name one:"
3682         . ./myread
3683         x_cpp="$ans"
3684         x_minus=''
3685         $x_cpp <testcpp.c >testcpp.out 2>&1
3686         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3687                 echo "OK, that will do." >&4
3688         else
3689 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3690                 exit 1
3691         fi
3692 fi
3693
3694 case "$ok" in
3695 false)
3696         cppstdin="$x_cpp"
3697         cppminus="$x_minus"
3698         cpprun="$x_cpp"
3699         cpplast="$x_minus"
3700         set X $x_cpp
3701         shift
3702         case "$1" in
3703         "$cpp")
3704                 echo "Perhaps can we force $cc -E using a wrapper..."
3705                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3706                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3707                 then
3708                         echo "Yup, we can."
3709                         cppstdin="$wrapper"
3710                         cppminus='';
3711                 else
3712                         echo "Nope, we'll have to live without it..."
3713                 fi
3714                 ;;
3715         esac
3716         case "$cpprun" in
3717         "$wrapper")
3718                 cpprun=''
3719                 cpplast=''
3720                 ;;
3721         esac
3722         ;;
3723 esac
3724
3725 case "$cppstdin" in
3726 "$wrapper") ;;
3727 *) $rm -f $wrapper;;
3728 esac
3729 $rm -f testcpp.c testcpp.out
3730
3731 : Set private lib path
3732 case "$plibpth" in
3733 '') if ./mips; then
3734                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3735         fi;;
3736 esac
3737 case "$libpth" in
3738 ' ') dlist='';;
3739 '') dlist="$loclibpth $plibpth $glibpth";;
3740 *) dlist="$libpth";;
3741 esac
3742
3743 : Now check and see which directories actually exist, avoiding duplicates
3744 libpth=''
3745 for xxx in $dlist
3746 do
3747     if $test -d $xxx; then
3748                 case " $libpth " in
3749                 *" $xxx "*) ;;
3750                 *) libpth="$libpth $xxx";;
3751                 esac
3752     fi
3753 done
3754 $cat <<'EOM'
3755
3756 Some systems have incompatible or broken versions of libraries.  Among
3757 the directories listed in the question below, please remove any you
3758 know not to be holding relevant libraries, and add any that are needed.
3759 Say "none" for none.
3760
3761 EOM
3762 case "$libpth" in
3763 '') dflt='none';;
3764 *)
3765         set X $libpth
3766         shift
3767         dflt=${1+"$@"}
3768         ;;
3769 esac
3770 rp="Directories to use for library searches?"
3771 . ./myread
3772 case "$ans" in
3773 none) libpth=' ';;
3774 *) libpth="$ans";;
3775 esac
3776
3777 : compute shared library extension
3778 case "$so" in
3779 '')
3780         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3781                 dflt='sl'
3782         else
3783                 dflt='so'
3784         fi
3785         ;;
3786 *) dflt="$so";;
3787 esac
3788 $cat <<EOM
3789
3790 On some systems, shared libraries may be available.  Answer 'none' if
3791 you want to suppress searching of shared libraries for the remaining
3792 of this configuration.
3793
3794 EOM
3795 rp='What is the file extension used for shared libraries?'
3796 . ./myread
3797 so="$ans"
3798
3799 : Define several unixisms.
3800 : Hints files or command line option can be used to override them.
3801 : The convoluted testing is in case hints files set either the old
3802 : or the new name.
3803 case "$_exe" in
3804 '')     case "$exe_ext" in
3805     '') ;;
3806         *)      _exe="$exe_ext" ;;
3807         esac
3808         ;;
3809 esac
3810 case "$_a" in
3811 '')     case "$lib_ext" in
3812     '') _a='.a';;
3813         *)      _a="$lib_ext" ;;
3814         esac
3815         ;;
3816 esac
3817 case "$_o" in
3818 '') case "$obj_ext" in
3819         '')     _o='.o';;
3820         *)      _o="$obj_ext";;
3821         esac
3822         ;;
3823 esac
3824 case "$p_" in
3825 '') case "$path_sep" in
3826         '')     p_=':';;
3827         *)      p_="$path_sep";;
3828         esac
3829         ;;
3830 esac
3831 exe_ext=$_exe
3832 lib_ext=$_a
3833 obj_ext=$_o
3834 path_sep=$p_
3835
3836 : Which makefile gets called first.  This is used by make depend.
3837 case "$firstmakefile" in
3838 '') firstmakefile='makefile';;
3839 esac
3840
3841 : Looking for optional libraries
3842 echo " "
3843 echo "Checking for optional libraries..." >&4
3844 case "$libs" in
3845 ' '|'') dflt='';;
3846 *) dflt="$libs";;
3847 esac
3848 case "$libswanted" in
3849 '') libswanted='c_s';;
3850 esac
3851 for thislib in $libswanted; do
3852         
3853         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`;
3854                 $test -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
3855                 echo "Found -l$thislib (shared)."
3856                 case " $dflt " in
3857                 *"-l$thislib "*);;
3858                 *) dflt="$dflt -l$thislib";;
3859                 esac
3860         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3861                 echo "Found -l$thislib (shared)."
3862                 case " $dflt " in
3863                 *"-l$thislib "*);;
3864                 *) dflt="$dflt -l$thislib";;
3865                 esac
3866         elif xxx=`./loc lib$thislib$_a X $libpth`; $test -f "$xxx"; then
3867                 echo "Found -l$thislib."
3868                 case " $dflt " in
3869                 *"-l$thislib "*);;
3870                 *) dflt="$dflt -l$thislib";;
3871                 esac
3872         elif xxx=`./loc $thislib$_a X $libpth`; $test -f "$xxx"; then
3873                 echo "Found -l$thislib."
3874                 case " $dflt " in
3875                 *"-l$thislib "*);;
3876                 *) dflt="$dflt -l$thislib";;
3877                 esac
3878         elif xxx=`./loc lib${thislib}_s$_a X $libpth`; $test -f "$xxx"; then
3879                 echo "Found -l${thislib}_s."
3880                 case " $dflt " in
3881                 *"-l$thislib "*);;
3882                 *) dflt="$dflt -l${thislib}_s";;
3883                 esac
3884         elif xxx=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$xxx"; then
3885                 echo "Found -l$thislib."
3886                 case " $dflt " in
3887                 *"-l$thislib "*);;
3888                 *) dflt="$dflt -l$thislib";;
3889                 esac
3890         else
3891                 echo "No -l$thislib."
3892         fi
3893 done
3894 set X $dflt
3895 shift
3896 dflt="$*"
3897 case "$libs" in
3898 '') dflt="$dflt";;
3899 *) dflt="$libs";;
3900 esac
3901 case "$dflt" in
3902 ' '|'') dflt='none';;
3903 esac
3904
3905 $cat <<EOM
3906  
3907 Some versions of Unix support shared libraries, which make executables smaller
3908 but make load time slightly longer.
3909
3910 On some systems, mostly System V Release 3's, the shared library is included
3911 by putting the option "-lc_s" as the last thing on the cc command line when
3912 linking.  Other systems use shared libraries by default.  There may be other
3913 libraries needed to compile $package on your machine as well.  If your system
3914 needs the "-lc_s" option, include it here.  Include any other special libraries
3915 here as well.  Say "none" for none.
3916 EOM
3917
3918 echo " "
3919 rp="Any additional libraries?"
3920 . ./myread
3921 case "$ans" in
3922 none) libs=' ';;
3923 *) libs="$ans";;
3924 esac
3925
3926 : determine optimize, if desired, or use for debug flag also
3927 case "$optimize" in
3928 ' '|$undef) dflt='none';;
3929 '') dflt='-O';;
3930 *) dflt="$optimize";;
3931 esac
3932 $cat <<EOH
3933
3934 Some C compilers have problems with their optimizers.  By default, $package
3935 compiles with the -O flag to use the optimizer.  Alternately, you might want
3936 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3937 systems).  Either flag can be specified here.  To use neither flag, specify
3938 the word "none".
3939
3940 EOH
3941 rp="What optimizer/debugger flag should be used?"
3942 . ./myread
3943 optimize="$ans"
3944 case "$optimize" in
3945 'none') optimize=" ";;
3946 esac
3947
3948 dflt=''
3949 : We will not override a previous value, but we might want to
3950 : augment a hint file
3951 case "$hint" in
3952 none|recommended)
3953         case "$gccversion" in
3954         1*) dflt='-fpcc-struct-return' ;;
3955         esac
3956         case "$optimize" in
3957         *-g*) dflt="$dflt -DDEBUGGING";;
3958         esac
3959         case "$gccversion" in
3960         2*) if test -d /etc/conf/kconfig.d &&
3961                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3962                 then
3963                         dflt="$dflt -posix"
3964                 fi
3965                 ;;
3966         esac
3967         ;;
3968 esac
3969
3970 case "$mips_type" in
3971 *BSD*|'') inclwanted="$locincpth $usrinc";;
3972 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3973 esac
3974 for thisincl in $inclwanted; do
3975         if $test -d $thisincl; then
3976                 if $test x$thisincl != x$usrinc; then
3977                         case "$dflt" in
3978                         *$thisincl*);;
3979                         *) dflt="$dflt -I$thisincl";;
3980                         esac
3981                 fi
3982         fi
3983 done
3984
3985 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3986         xxx=true;
3987 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3988         xxx=true;
3989 else
3990         xxx=false;
3991 fi;
3992 if $xxx; then
3993         case "$dflt" in
3994         *$2*);;
3995         *) dflt="$dflt -D$2";;
3996         esac;
3997 fi'
3998
3999 if ./osf1; then
4000         set signal.h __LANGUAGE_C__; eval $inctest
4001 else
4002         set signal.h LANGUAGE_C; eval $inctest
4003 fi
4004
4005 case "$hint" in
4006 none|recommended) dflt="$ccflags $dflt" ;;
4007 *) dflt="$ccflags";;
4008 esac
4009
4010 case "$dflt" in
4011 ''|' ') dflt=none;;
4012 esac
4013 $cat <<EOH
4014
4015 Your C compiler may want other flags.  For this question you should include
4016 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
4017 but you should NOT include libraries or ld flags like -lwhatever.  If you
4018 want $package to honor its debug switch, you should include -DDEBUGGING here.
4019 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
4020
4021 To use no flags, specify the word "none".
4022
4023 EOH
4024 set X $dflt
4025 shift
4026 dflt=${1+"$@"}
4027 rp="Any additional cc flags?"
4028 . ./myread
4029 case "$ans" in
4030 none) ccflags='';;
4031 *) ccflags="$ans";;
4032 esac
4033
4034 : the following weeds options from ccflags that are of no interest to cpp
4035 cppflags="$ccflags"
4036 case "$gccversion" in
4037 1*) cppflags="$cppflags -D__GNUC__"
4038 esac
4039 case "$mips_type" in
4040 '');;
4041 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
4042 esac
4043 case "$cppflags" in
4044 '');;
4045 *)
4046         echo " "
4047         echo "Let me guess what the preprocessor flags are..." >&4
4048         set X $cppflags
4049         shift
4050         cppflags=''
4051         $cat >cpp.c <<'EOM'
4052 #define BLURFL foo
4053
4054 BLURFL xx LFRULB
4055 EOM
4056         previous=''
4057         for flag in $*
4058         do
4059                 case "$flag" in
4060                 -*) ftry="$flag";;
4061                 *) ftry="$previous $flag";;
4062                 esac
4063                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
4064                         >cpp1.out 2>/dev/null && \
4065                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
4066                         >cpp2.out 2>/dev/null && \
4067                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
4068                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
4069                 then
4070                         cppflags="$cppflags $ftry"
4071                         previous=''
4072                 else
4073                         previous="$flag"
4074                 fi
4075         done
4076         set X $cppflags
4077         shift
4078         cppflags=${1+"$@"}
4079         case "$cppflags" in
4080         *-*)  echo "They appear to be: $cppflags";;
4081         esac
4082         $rm -f cpp.c cpp?.out
4083         ;;
4084 esac
4085
4086 : flags used in final linking phase
4087 case "$ldflags" in
4088 '') if ./venix; then
4089                 dflt='-i -z'
4090         else
4091                 dflt=''
4092         fi
4093         case "$ccflags" in
4094         *-posix*) dflt="$dflt -posix" ;;
4095         esac
4096         ;;
4097 *) dflt="$ldflags";;
4098 esac
4099
4100 : Try to guess additional flags to pick up local libraries.
4101 for thislibdir in $libpth; do
4102         case " $loclibpth " in
4103         *" $thislibdir "*)
4104                 case "$dflt " in 
4105                 *"-L$thislibdir "*) ;;
4106                 *)  dflt="$dflt -L$thislibdir" ;;
4107                 esac
4108                 ;;
4109         esac
4110 done
4111
4112 case "$dflt" in
4113 '') dflt='none' ;;
4114 esac
4115
4116 $cat <<EOH
4117
4118 Your C linker may need flags.  For this question you should
4119 include -L/whatever and any other flags used by the C linker, but you
4120 should NOT include libraries like -lwhatever.
4121
4122 Make sure you include the appropriate -L/path flags if your C linker
4123 does not normally search all of the directories you specified above,
4124 namely
4125         $libpth
4126 To use no flags, specify the word "none".
4127
4128 EOH
4129
4130 rp="Any additional ld flags (NOT including libraries)?"
4131 . ./myread
4132 case "$ans" in
4133 none) ldflags='';;
4134 *) ldflags="$ans";;
4135 esac
4136 rmlist="$rmlist pdp11"
4137
4138 : coherency check
4139 echo " "
4140 echo "Checking your choice of C compiler and flags for coherency..." >&4
4141 $cat > try.c <<'EOF'
4142 #include <stdio.h>
4143 main() { printf("Ok\n"); exit(0); }
4144 EOF
4145 set X $cc $optimize $ccflags -o try $ldflags try.c $libs
4146 shift
4147 $cat >try.msg <<'EOM'
4148 I've tried to compile and run the following simple program:
4149
4150 EOM
4151 $cat try.c
4152
4153 $cat >> try.msg <<EOM
4154
4155 I used the command:
4156
4157         $*
4158         ./try
4159
4160 and I got the following output:
4161
4162 EOM
4163 dflt=y
4164 if sh -c "$cc $optimize $ccflags -o try $ldflags try.c $libs" >>try.msg 2>&1; then
4165         if sh -c './try' >>try.msg 2>&1; then
4166                 xxx=`./try`
4167                 case "$xxx" in
4168                 "Ok") dflt=n ;;
4169                 *)      echo 'The program compiled OK, but produced no output.' >> try.msg
4170                         case " $libs " in
4171                         *" -lsfio "*)
4172                                 cat >> try.msg <<'EOQS'
4173 If $libs contains -lsfio, and sfio is mis-configured, then it
4174 sometimes (apparently) runs and exits with a 0 status, but with no
4175 output!  It may have to do with sfio's use of _exit vs. exit.
4176
4177 EOQS
4178                                 rp="You have a big problem.  Shall I abort Configure"
4179                                 dflt=y
4180                                 ;;
4181                         esac
4182                         ;;
4183                 esac
4184         else
4185                 echo "The program compiled OK, but exited with status $?." >>try.msg
4186                 rp="You have a problem.  Shall I abort Configure"
4187                 dflt=y
4188         fi
4189 else
4190         echo "I can't compile the test program." >>try.msg
4191         rp="You have a BIG problem.  Shall I abort Configure"
4192         dflt=y
4193 fi
4194 case "$dflt" in
4195 y)
4196         $cat try.msg >&4
4197         case "$knowitall" in
4198         '')
4199                 echo "(The supplied flags or libraries might be incorrect.)"
4200                 ;;
4201         *) dflt=n;;
4202         esac
4203         echo " "
4204         . ./myread
4205         case "$ans" in
4206         n*|N*) ;;
4207         *)      echo "Ok.  Stopping Configure." >&4
4208                 exit 1
4209                 ;;
4210         esac
4211         ;;
4212 n) echo "OK, that should do.";;
4213 esac
4214 $rm -f try try.* core
4215
4216 : determine filename position in cpp output
4217 echo " "
4218 echo "Computing filename position in cpp output for #include directives..." >&4
4219 echo '#include <stdio.h>' > foo.c
4220 $cat >fieldn <<EOF
4221 $startsh
4222 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4223 $grep '^[       ]*#.*stdio\.h' | \
4224 while read cline; do
4225         pos=1
4226         set \$cline
4227         while $test \$# -gt 0; do
4228                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4229                         echo "\$pos"
4230                         exit 0
4231                 fi
4232                 shift
4233                 pos=\`expr \$pos + 1\`
4234         done
4235 done
4236 EOF
4237 chmod +x fieldn
4238 fieldn=`./fieldn`
4239 $rm -f foo.c fieldn
4240 case $fieldn in
4241 '') pos='???';;
4242 1) pos=first;;
4243 2) pos=second;;
4244 3) pos=third;;
4245 *) pos="${fieldn}th";;
4246 esac
4247 echo "Your cpp writes the filename in the $pos field of the line."
4248
4249 : locate header file
4250 $cat >findhdr <<EOF
4251 $startsh
4252 wanted=\$1
4253 name=''
4254 if test -f $usrinc/\$wanted; then
4255         echo "$usrinc/\$wanted"
4256         exit 0
4257 fi
4258 awkprg='{ print \$$fieldn }'
4259 echo "#include <\$wanted>" > foo\$\$.c
4260 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4261 $grep "^[       ]*#.*\$wanted" | \
4262 while read cline; do
4263         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4264         case "\$name" in
4265         */\$wanted) echo "\$name"; exit 0;;
4266         *) name='';;
4267         esac;
4268 done;
4269 $rm -f foo\$\$.c;
4270 case "\$name" in
4271 '') exit 1;;
4272 esac
4273 EOF
4274 chmod +x findhdr
4275
4276 : define an alternate in-header-list? function
4277 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4278 cont=true; xxf="echo \"<\$1> found.\" >&4";
4279 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4280 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4281 esac;
4282 case $# in 4) instead=instead;; *) instead="at last";; esac;
4283 while $test "$cont"; do
4284         xxx=`./findhdr $1`
4285         var=$2; eval "was=\$$2";
4286         if $test "$xxx" && $test -r "$xxx";
4287         then eval $xxf;
4288         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4289                 cont="";
4290         else eval $xxnf;
4291         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4292         set $yyy; shift; shift; yyy=$@;
4293         case $# in 0) cont="";;
4294         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4295                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4296         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4297                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4298         esac;
4299 done;
4300 while $test "$yyy";
4301 do set $yyy; var=$2; eval "was=\$$2";
4302         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4303         set $yyy; shift; shift; yyy=$@;
4304 done'
4305
4306 : see if this is a malloc.h system
4307 set malloc.h i_malloc
4308 eval $inhdr
4309
4310 : see if stdlib is available
4311 set stdlib.h i_stdlib
4312 eval $inhdr
4313
4314 : determine which malloc to compile in
4315 echo " "
4316 case "$usemymalloc" in
4317 ''|[yY]*|true|$define)  dflt='y' ;;
4318 *)      dflt='n' ;;
4319 esac
4320 rp="Do you wish to attempt to use the malloc that comes with $package?"
4321 . ./myread
4322 usemymalloc="$ans"
4323 case "$ans" in
4324 y*|true)
4325         usemymalloc='y'
4326         mallocsrc='malloc.c'
4327         mallocobj="malloc$_o"
4328         d_mymalloc="$define"
4329         case "$libs" in
4330         *-lmalloc*)
4331                 : Remove malloc from list of libraries to use
4332                 echo "Removing unneeded -lmalloc from library list" >&4
4333                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
4334                 shift
4335                 libs="$*"
4336                 echo "libs = $libs" >&4
4337                 ;;
4338         esac
4339         ;;
4340 *)
4341         usemymalloc='n'
4342         mallocsrc=''
4343         mallocobj=''
4344         d_mymalloc="$undef"
4345         ;;
4346 esac
4347
4348 : compute the return types of malloc and free
4349 echo " "
4350 $cat >malloc.c <<END
4351 #$i_malloc I_MALLOC
4352 #$i_stdlib I_STDLIB
4353 #include <stdio.h>
4354 #include <sys/types.h>
4355 #ifdef I_MALLOC
4356 #include <malloc.h>
4357 #endif
4358 #ifdef I_STDLIB
4359 #include <stdlib.h>
4360 #endif
4361 #ifdef TRY_MALLOC
4362 void *malloc();
4363 #endif
4364 #ifdef TRY_FREE
4365 void free();
4366 #endif
4367 END
4368 case "$malloctype" in
4369 '')
4370         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
4371                 malloctype='void *'
4372         else
4373                 malloctype='char *'
4374         fi
4375         ;;
4376 esac
4377 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
4378
4379 case "$freetype" in
4380 '')
4381         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
4382                 freetype='void'
4383         else
4384                 freetype='int'
4385         fi
4386         ;;
4387 esac
4388 echo "Your system uses $freetype free(), it would seem." >&4
4389 $rm -f malloc.[co]
4390 : Cruising for prototypes
4391 echo " "
4392 echo "Checking out function prototypes..." >&4
4393 $cat >prototype.c <<'EOCP'
4394 main(int argc, char *argv[]) {
4395         exit(0);}
4396 EOCP
4397 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
4398         echo "Your C compiler appears to support function prototypes."
4399         val="$define"
4400 else
4401         echo "Your C compiler doesn't seem to understand function prototypes."
4402         val="$undef"
4403 fi
4404 set prototype
4405 eval $setvar
4406 $rm -f prototype*
4407
4408 case "$prototype" in
4409 "$define") ;;
4410 *)      ansi2knr='ansi2knr'
4411         echo " "
4412         cat <<EOM >&4
4413
4414 $me:  FATAL ERROR:
4415 This version of $package can only be compiled by a compiler that 
4416 understands function prototypes.  Unfortunately, your C compiler 
4417         $cc $ccflags
4418 doesn't seem to understand them.  Sorry about that.
4419
4420 If GNU cc is available for your system, perhaps you could try that instead.  
4421
4422 Eventually, we hope to support building Perl with pre-ANSI compilers.
4423 If you would like to help in that effort, please contact <perlbug@perl.org>.
4424
4425 Aborting Configure now.
4426 EOM
4427         exit 2
4428         ;;
4429 esac
4430
4431 : determine where public executables go
4432 echo " "
4433 set dflt bin bin
4434 eval $prefixit
4435 fn=d~
4436 rp='Pathname where the public executables will reside?'
4437 . ./getfile
4438 if $test "X$ansexp" != "X$binexp"; then
4439         installbin=''
4440 fi
4441 bin="$ans"
4442 binexp="$ansexp"
4443 if $afs; then
4444         $cat <<EOM
4445
4446 Since you are running AFS, I need to distinguish the directory in which
4447 executables reside from the directory in which they are installed (and from
4448 which they are presumably copied to the former directory by occult means).
4449
4450 EOM
4451         case "$installbin" in
4452         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
4453         *) dflt="$installbin";;
4454         esac
4455         fn=de~
4456         rp='Where will public executables be installed?'
4457         . ./getfile
4458         installbin="$ans"
4459 else
4460         installbin="$binexp"
4461 fi
4462
4463 : define a shorthand compile call
4464 compile='
4465 mc_file=$1;
4466 shift;
4467 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs > /dev/null 2>&1;'
4468 : define a shorthand compile call for compilations that should be ok.
4469 compile_ok='
4470 mc_file=$1;
4471 shift;
4472 $cc $optimize $ccflags $ldflags -o ${mc_file} $* ${mc_file}.c $libs;'
4473
4474 echo " "
4475 echo "Checking for GNU C Library..." >&4
4476 cat >gnulibc.c <<EOM
4477 #include <stdio.h>
4478 int
4479 main()
4480 {
4481 #ifdef __GLIBC__
4482     exit(0);
4483 #else
4484     exit(1);
4485 #endif
4486 }
4487 EOM
4488 set gnulibc
4489 if eval $compile_ok && ./gnulibc; then
4490         val="$define"
4491         echo "You are using the GNU C Library"
4492 else
4493         val="$undef"
4494         echo "You are not using the GNU C Library"
4495 fi
4496 $rm -f gnulibc*
4497 set d_gnulibc
4498 eval $setvar
4499
4500 : see if nm is to be used to determine whether a symbol is defined or not
4501 case "$usenm" in
4502 '')
4503         dflt=''
4504         case "$d_gnulibc" in
4505         "$define")
4506                 echo " "
4507                 echo "nm probably won't work on the GNU C Library." >&4
4508                 dflt=n
4509                 ;;
4510         esac
4511         case "$dflt" in
4512         '') 
4513                 if $test "$osname" = aix -a ! -f /lib/syscalls.exp; then
4514                         echo " "
4515                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
4516                         echo "'nm' won't be sufficient on this sytem." >&4
4517                         dflt=n
4518                 fi
4519                 ;;
4520         esac
4521         case "$dflt" in
4522         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
4523                 if $test $dflt -gt 20; then
4524                         dflt=y
4525                 else
4526                         dflt=n
4527                 fi
4528                 ;;
4529         esac
4530         ;;
4531 *)
4532         case "$usenm" in
4533         true|$define) dflt=y;;
4534         *) dflt=n;;
4535         esac
4536         ;;
4537 esac
4538 $cat <<EOM
4539
4540 I can use $nm to extract the symbols from your C libraries. This
4541 is a time consuming task which may generate huge output on the disk (up
4542 to 3 megabytes) but that should make the symbols extraction faster. The
4543 alternative is to skip the 'nm' extraction part and to compile a small
4544 test program instead to determine whether each symbol is present. If
4545 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
4546 this may be the best solution.
4547
4548 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
4549
4550 EOM
4551 rp="Shall I use $nm to extract C symbols from the libraries?"
4552 . ./myread
4553 case "$ans" in
4554 [Nn]*) usenm=false;;
4555 *) usenm=true;;
4556 esac
4557
4558 runnm=$usenm
4559 case "$reuseval" in
4560 true) runnm=false;;
4561 esac
4562
4563 : nm options which may be necessary
4564 case "$nm_opt" in
4565 '') if $test -f /mach_boot; then
4566                 nm_opt=''       # Mach
4567         elif $test -d /usr/ccs/lib; then
4568                 nm_opt='-p'     # Solaris (and SunOS?)
4569         elif $test -f /dgux; then
4570                 nm_opt='-p'     # DG-UX
4571         elif $test -f /lib64/rld; then
4572                 nm_opt='-p'     # 64-bit Irix
4573         else
4574                 nm_opt=''
4575         fi;;
4576 esac
4577
4578 : nm options which may be necessary for shared libraries but illegal
4579 : for archive libraries.  Thank you, Linux.
4580 case "$nm_so_opt" in
4581 '')     case "$myuname" in
4582         *linux*)
4583                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
4584                         nm_so_opt='--dynamic'
4585                 fi
4586                 ;;
4587         esac
4588         ;;
4589 esac
4590
4591 case "$runnm" in
4592 true)
4593 : get list of predefined functions in a handy place
4594 echo " "
4595 case "$libc" in
4596 '') libc=unknown
4597         case "$libs" in
4598         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
4599         esac
4600         ;;
4601 esac
4602 libnames='';
4603 case "$libs" in
4604 '') ;;
4605 *)  for thislib in $libs; do
4606         case "$thislib" in
4607         -lc|-lc_s)
4608                 : Handle C library specially below.
4609                 ;;
4610         -l*)
4611                 thislib=`echo $thislib | $sed -e 's/^-l//'`
4612                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
4613                         :
4614                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
4615                         :
4616                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
4617                         :
4618                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
4619                         :
4620                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
4621                         :
4622                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
4623                         :
4624                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
4625                         :
4626                 else
4627                         try=''
4628                 fi
4629                 libnames="$libnames $try"
4630                 ;;
4631         *) libnames="$libnames $thislib" ;;
4632         esac
4633         done
4634         ;;
4635 esac
4636 xxx=normal
4637 case "$libc" in
4638 unknown)
4639         set /lib/libc.$so
4640         for xxx in $libpth; do
4641                 $test -r $1 || set $xxx/libc.$so
4642                 : The messy sed command sorts on library version numbers.
4643                 $test -r $1 || \
4644                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
4645                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
4646                                 h
4647                                 s/[0-9][0-9]*/0000&/g
4648                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
4649                                 G
4650                                 s/\n/ /' | \
4651                          sort | $sed -e 's/^.* //'`
4652                 eval set \$$#
4653         done
4654         $test -r $1 || set /usr/ccs/lib/libc.$so
4655         $test -r $1 || set /lib/libsys_s$_a
4656         ;;
4657 *)
4658         set blurfl
4659         ;;
4660 esac
4661 if $test -r "$1"; then
4662         echo "Your (shared) C library seems to be in $1."
4663         libc="$1"
4664 elif $test -r /lib/libc && $test -r /lib/clib; then
4665         echo "Your C library seems to be in both /lib/clib and /lib/libc."
4666         xxx=apollo
4667         libc='/lib/clib /lib/libc'
4668         if $test -r /lib/syslib; then
4669                 echo "(Your math library is in /lib/syslib.)"
4670                 libc="$libc /lib/syslib"
4671         fi
4672 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4673         echo "Your C library seems to be in $libc, as you said before."
4674 elif $test -r $incpath/usr/lib/libc$_a; then
4675         libc=$incpath/usr/lib/libc$_a;
4676         echo "Your C library seems to be in $libc.  That's fine."
4677 elif $test -r /lib/libc$_a; then
4678         libc=/lib/libc$_a;
4679         echo "Your C library seems to be in $libc.  You're normal."
4680 else
4681         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
4682                 :
4683         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4684                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4685         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4686                 :
4687         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4688                 :
4689         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
4690                 :
4691         else
4692                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
4693         fi
4694         if $test -r "$tans"; then
4695                 echo "Your C library seems to be in $tans, of all places."
4696                 libc=$tans
4697         else
4698                 libc='blurfl'
4699         fi
4700 fi
4701 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4702         dflt="$libc"
4703         cat <<EOM
4704
4705 If the guess above is wrong (which it might be if you're using a strange
4706 compiler, or your machine supports multiple models), you can override it here.
4707
4708 EOM
4709 else
4710         dflt=''
4711         echo $libpth | tr ' ' $trnl | sort | uniq > libpath
4712         cat >&4 <<EOM
4713 I can't seem to find your C library.  I've looked in the following places:
4714
4715 EOM
4716         $sed 's/^/      /' libpath
4717         cat <<EOM
4718
4719 None of these seems to contain your C library. I need to get its name...
4720
4721 EOM
4722 fi
4723 fn=f
4724 rp='Where is your C library?'
4725 . ./getfile
4726 libc="$ans"
4727
4728 echo " "
4729 echo $libc $libnames | tr ' ' $trnl | sort | uniq > libnames
4730 set X `cat libnames`
4731 shift
4732 xxx=files
4733 case $# in 1) xxx=file; esac
4734 echo "Extracting names from the following $xxx for later perusal:" >&4
4735 echo " "
4736 $sed 's/^/      /' libnames >&4
4737 echo " "
4738 $echo $n "This may take a while...$c" >&4
4739
4740 for file in $*; do
4741         case $file in
4742         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
4743         *) $nm $nm_opt $file 2>/dev/null;;
4744         esac
4745 done >libc.tmp
4746
4747 $echo $n ".$c"
4748 $grep fprintf libc.tmp > libc.ptf
4749 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4750 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4751 xxx='[ADTSIW]'
4752 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4753         eval $xscan;\
4754         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4755                 eval $xrun
4756 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4757         eval $xscan;\
4758         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4759                 eval $xrun
4760 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4761         eval $xscan;\
4762         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4763                 eval $xrun
4764 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4765         eval $xscan;\
4766         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4767                 eval $xrun
4768 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4769         eval $xscan;\
4770         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4771                 eval $xrun
4772 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4773         eval $xscan;\
4774         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4775                 eval $xrun
4776 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4777                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4778         eval $xscan;\
4779         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4780                 eval $xrun
4781 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4782         eval $xscan;\
4783         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4784                 eval $xrun
4785 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4786         eval $xscan;\
4787         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4788                 eval $xrun
4789 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
4790         eval $xscan;\
4791         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4792                 eval $xrun
4793 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\