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