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