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