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