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