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