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