This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Too many 64-bitness option combinations.
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc and is available on CPAN under authors/id/RAM so
18 # you may fetch it yourself from your nearest archive site.)
19 #
20
21 # $Id: Head.U,v 3.0.1.9 1997/02/28 15:02:09 ram Exp $
22 #
23 # Generated on Tue Feb 29 17:34:18 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_readdir=''
461 d_rewinddir=''
462 d_seekdir=''
463 d_telldir=''
464 d_readlink=''
465 d_rename=''
466 d_rmdir=''
467 d_safebcpy=''
468 d_safemcpy=''
469 d_sanemcmp=''
470 d_select=''
471 d_sem=''
472 d_semctl=''
473 d_semget=''
474 d_semop=''
475 d_setegid=''
476 d_seteuid=''
477 d_setgrent=''
478 d_setgrps=''
479 d_sethent=''
480 d_setlinebuf=''
481 d_setlocale=''
482 d_setnent=''
483 d_setpent=''
484 d_setpgid=''
485 d_setpgrp2=''
486 d_bsdsetpgrp=''
487 d_setpgrp=''
488 d_setprior=''
489 d_setpwent=''
490 d_setregid=''
491 d_setresgid=''
492 d_setresuid=''
493 d_setreuid=''
494 d_setrgid=''
495 d_setruid=''
496 d_setsent=''
497 d_setsid=''
498 d_setspent=''
499 d_setvbuf=''
500 d_sfio=''
501 usesfio=''
502 d_shm=''
503 d_shmat=''
504 d_shmatprototype=''
505 shmattype=''
506 d_shmctl=''
507 d_shmdt=''
508 d_shmget=''
509 d_sigaction=''
510 d_sigsetjmp=''
511 d_msg_ctrunc=''
512 d_msg_dontroute=''
513 d_msg_oob=''
514 d_msg_peek=''
515 d_msg_proxy=''
516 d_oldsock=''
517 d_scm_rights=''
518 d_socket=''
519 d_sockpair=''
520 sockethdr=''
521 socketlib=''
522 d_socklen_t=''
523 d_sqrtl=''
524 d_statblks=''
525 d_statfs_f_flags=''
526 d_statfs_s=''
527 d_fstatvfs=''
528 d_statvfs=''
529 d_stdio_cnt_lval=''
530 d_stdio_ptr_lval=''
531 d_stdiobase=''
532 d_stdstdio=''
533 stdio_base=''
534 stdio_bufsiz=''
535 stdio_cnt=''
536 stdio_filbuf=''
537 stdio_ptr=''
538 d_index=''
539 d_strchr=''
540 d_strcoll=''
541 d_strctcpy=''
542 d_strerrm=''
543 d_strerror=''
544 d_sysernlst=''
545 d_syserrlst=''
546 d_strtod=''
547 d_strtol=''
548 d_strtold=''
549 d_strtoll=''
550 d_strtoul=''
551 d_strtoull=''
552 d_strtouq=''
553 d_strxfrm=''
554 d_symlink=''
555 d_syscall=''
556 d_sysconf=''
557 d_system=''
558 d_tcgetpgrp=''
559 d_tcsetpgrp=''
560 d_telldirproto=''
561 d_time=''
562 timetype=''
563 clocktype=''
564 d_times=''
565 d_truncate=''
566 d_tzname=''
567 d_umask=''
568 d_semctl_semid_ds=''
569 d_semctl_semun=''
570 d_union_semun=''
571 d_ustat=''
572 d_vfork=''
573 usevfork=''
574 d_voidsig=''
575 signal_t=''
576 d_volatile=''
577 d_charvspr=''
578 d_vprintf=''
579 d_wait4=''
580 d_waitpid=''
581 d_wcstombs=''
582 d_wctomb=''
583 dlext=''
584 cccdlflags=''
585 ccdlflags=''
586 dlsrc=''
587 ld=''
588 lddlflags=''
589 usedl=''
590 doublesize=''
591 ebcdic=''
592 fflushNULL=''
593 fflushall=''
594 fpossize=''
595 fpostype=''
596 gidformat=''
597 gidsign=''
598 gidsize=''
599 gidtype=''
600 groupstype=''
601 h_fcntl=''
602 h_sysfile=''
603 i_arpainet=''
604 db_hashtype=''
605 db_prefixtype=''
606 i_db=''
607 i_dbm=''
608 i_rpcsvcdbm=''
609 d_dirnamlen=''
610 direntrytype=''
611 i_dirent=''
612 i_dld=''
613 i_dlfcn=''
614 i_fcntl=''
615 i_float=''
616 i_gdbm=''
617 d_grpasswd=''
618 i_grp=''
619 i_iconv=''
620 i_inttypes=''
621 i_limits=''
622 i_locale=''
623 i_machcthr=''
624 i_malloc=''
625 i_math=''
626 i_memory=''
627 i_mntent=''
628 i_ndbm=''
629 i_netdb=''
630 i_neterrno=''
631 i_netinettcp=''
632 i_niin=''
633 i_sysin=''
634 i_poll=''
635 i_pthread=''
636 d_pwage=''
637 d_pwchange=''
638 d_pwclass=''
639 d_pwcomment=''
640 d_pwexpire=''
641 d_pwgecos=''
642 d_pwpasswd=''
643 d_pwquota=''
644 i_pwd=''
645 i_sfio=''
646 i_shadow=''
647 i_socks=''
648 i_stddef=''
649 i_stdlib=''
650 i_string=''
651 strings=''
652 i_sysaccess=''
653 i_sysdir=''
654 i_sysfile=''
655 d_voidtty=''
656 i_bsdioctl=''
657 i_sysfilio=''
658 i_sysioctl=''
659 i_syssockio=''
660 i_syslog=''
661 i_sysmman=''
662 i_sysmode=''
663 i_sysmount=''
664 i_sysndir=''
665 i_sysparam=''
666 i_sysresrc=''
667 i_syssecrt=''
668 i_sysselct=''
669 i_sysstat=''
670 i_sysstatfs=''
671 i_sysstatvfs=''
672 i_systimes=''
673 i_systypes=''
674 i_sysuio=''
675 i_sysun=''
676 i_sysutsname=''
677 i_sysvfs=''
678 i_syswait=''
679 i_sgtty=''
680 i_termio=''
681 i_termios=''
682 i_systime=''
683 i_systimek=''
684 i_time=''
685 timeincl=''
686 i_unistd=''
687 i_ustat=''
688 i_utime=''
689 i_values=''
690 i_stdarg=''
691 i_varargs=''
692 i_varhdr=''
693 i_vfork=''
694 inc_version_list=''
695 inc_version_list_init=''
696 installprefix=''
697 installprefixexp=''
698 installstyle=''
699 installusrbinperl=''
700 intsize=''
701 longsize=''
702 shortsize=''
703 libc=''
704 ldlibpthname=''
705 libperl=''
706 shrpenv=''
707 useshrplib=''
708 glibpth=''
709 libpth=''
710 loclibpth=''
711 plibpth=''
712 xlibpth=''
713 ignore_versioned_solibs=''
714 libs=''
715 libsdirs=''
716 libsfiles=''
717 libsfound=''
718 libspath=''
719 lns=''
720 d_PRIEldbl=''
721 d_PRIFldbl=''
722 d_PRIGldbl=''
723 d_PRIeldbl=''
724 d_PRIfldbl=''
725 d_PRIgldbl=''
726 sPRIEldbl=''
727 sPRIFldbl=''
728 sPRIGldbl=''
729 sPRIeldbl=''
730 sPRIfldbl=''
731 sPRIgldbl=''
732 lseeksize=''
733 lseektype=''
734 make_set_make=''
735 d_mymalloc=''
736 freetype=''
737 mallocobj=''
738 mallocsrc=''
739 malloctype=''
740 usemymalloc=''
741 installman1dir=''
742 man1dir=''
743 man1direxp=''
744 man1ext=''
745 installman3dir=''
746 man3dir=''
747 man3direxp=''
748 man3ext=''
749 huge=''
750 large=''
751 medium=''
752 models=''
753 small=''
754 split=''
755 modetype=''
756 multiarch=''
757 mydomain=''
758 myhostname=''
759 phostname=''
760 c=''
761 n=''
762 d_eofnblk=''
763 eagain=''
764 o_nonblock=''
765 rd_nodata=''
766 netdb_hlen_type=''
767 netdb_host_type=''
768 netdb_name_type=''
769 netdb_net_type=''
770 groupcat=''
771 hostcat=''
772 passcat=''
773 orderlib=''
774 ranlib=''
775 package=''
776 spackage=''
777 pager=''
778 api_revision=''
779 api_subversion=''
780 api_version=''
781 api_versionstring=''
782 patchlevel=''
783 revision=''
784 subversion=''
785 version=''
786 perl5=''
787 perladmin=''
788 perlpath=''
789 d_nv_preserves_uv=''
790 i16size=''
791 i16type=''
792 i32size=''
793 i32type=''
794 i64size=''
795 i64type=''
796 i8size=''
797 i8type=''
798 ivsize=''
799 ivtype=''
800 nvsize=''
801 nvtype=''
802 u16size=''
803 u16type=''
804 u32size=''
805 u32type=''
806 u64size=''
807 u64type=''
808 u8size=''
809 u8type=''
810 uvsize=''
811 uvtype=''
812 ivdformat=''
813 uvoformat=''
814 uvuformat=''
815 uvxformat=''
816 pidtype=''
817 prefix=''
818 prefixexp=''
819 installprivlib=''
820 privlib=''
821 privlibexp=''
822 prototype=''
823 ptrsize=''
824 d_PRIX64=''
825 d_PRId64=''
826 d_PRIi64=''
827 d_PRIo64=''
828 d_PRIu64=''
829 d_PRIx64=''
830 sPRIX64=''
831 sPRId64=''
832 sPRIi64=''
833 sPRIo64=''
834 sPRIu64=''
835 sPRIx64=''
836 d_quad=''
837 quadkind=''
838 quadtype=''
839 uquadtype=''
840 drand01=''
841 randbits=''
842 randfunc=''
843 randseedtype=''
844 seedfunc=''
845 installscript=''
846 scriptdir=''
847 scriptdirexp=''
848 selectminbits=''
849 selecttype=''
850 sh=''
851 sig_count=''
852 sig_name=''
853 sig_name_init=''
854 sig_num=''
855 sig_num_init=''
856 installsitearch=''
857 sitearch=''
858 sitearchexp=''
859 installsitebin=''
860 sitebin=''
861 sitebinexp=''
862 installsitelib=''
863 sitelib=''
864 sitelibexp=''
865 siteprefix=''
866 siteprefixexp=''
867 sizetype=''
868 so=''
869 socksizetype=''
870 sharpbang=''
871 shsharp=''
872 spitshell=''
873 src=''
874 ssizetype=''
875 startperl=''
876 startsh=''
877 stdchar=''
878 d_stdio_stream_array=''
879 stdio_stream_array=''
880 sysman=''
881 trnl=''
882 uidformat=''
883 uidsign=''
884 uidsize=''
885 uidtype=''
886 archname64=''
887 use64bitall=''
888 use64bitint=''
889 uselargefiles=''
890 uselongdouble=''
891 usemorebits=''
892 usemultiplicity=''
893 nm_opt=''
894 nm_so_opt=''
895 runnm=''
896 usenm=''
897 useperlio=''
898 usesocks=''
899 d_oldpthreads=''
900 use5005threads=''
901 useithreads=''
902 usethreads=''
903 incpath=''
904 mips_type=''
905 usrinc=''
906 d_vendorbin=''
907 installvendorbin=''
908 vendorbin=''
909 vendorbinexp=''
910 d_vendorlib=''
911 installvendorlib=''
912 vendorlib=''
913 vendorlibexp=''
914 usevendorprefix=''
915 vendorprefix=''
916 vendorprefixexp=''
917 defvoidused=''
918 voidflags=''
919 pm_apiversion=''
920 xs_apiversion=''
921 CONFIG=''
922
923 define='define'
924 undef='undef'
925 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
926 rmlist=''
927
928 : We must find out about Eunice early
929 eunicefix=':'
930 if test -f /etc/unixtovms; then
931         eunicefix=/etc/unixtovms
932 fi
933 if test -f /etc/unixtovms.exe; then
934         eunicefix=/etc/unixtovms.exe
935 fi
936
937 i_whoami=''
938 : set useposix=false in your hint file to disable the POSIX extension.
939 useposix=true
940 : set useopcode=false in your hint file to disable the Opcode extension.
941 useopcode=true
942 : Trailing extension.  Override this in a hint file, if needed.
943 _exe=''
944 : Extra object files, if any, needed on this platform.
945 archobjs=''
946 : Possible local include directories to search.
947 : Set locincpth to "" in a hint file to defeat local include searches.
948 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
949 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
950 :
951 : no include file wanted by default
952 inclwanted=''
953
954 groupstype=''
955 : change the next line if compiling for Xenix/286 on Xenix/386
956 xlibpth='/usr/lib/386 /lib/386'
957 : Possible local library directories to search.
958 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
959 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
960
961 : general looking path for locating libraries
962 glibpth="/usr/lib/large /lib /usr/lib $xlibpth"
963 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
964 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
965 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
966 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
967
968 : Private path used by Configure to find libraries.  Its value
969 : is prepended to libpth. This variable takes care of special
970 : machines, like the mips.  Usually, it should be empty.
971 plibpth=''
972
973 : default library list
974 libswanted=''
975 : some systems want to use only the non-versioned libso:s
976 ignore_versioned_solibs=''
977 : set usemultiplicity on the Configure command line to enable multiplicity.
978 : set usesocks on the Configure command line to enable socks.
979 : set usethreads on the Configure command line to enable threads.
980 : full support for void wanted by default
981 defvoidused=15
982
983 : List of libraries we want.
984 : If anyone needs -lnet, put it in a hint file.
985 libswanted='sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl'
986 libswanted="$libswanted dld ld sun m c cposix posix"
987 libswanted="$libswanted ndir dir crypt sec"
988 libswanted="$libswanted ucb bsd BSD PW x iconv"
989 : We probably want to search /usr/shlib before most other libraries.
990 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
991 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
992 glibpth="/usr/shlib $glibpth"
993 : Do not use vfork unless overridden by a hint file.
994 usevfork=false
995
996 : Find the basic shell for Bourne shell scripts
997 case "$sh" in
998 '')
999         case "$SYSTYPE" in
1000         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1001         *) xxx='/bin/sh';;
1002         esac
1003         if test -f "$xxx"; then
1004                 sh="$xxx"
1005         else
1006                 : Build up a list and do a single loop so we can 'break' out.
1007                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1008                 for xxx in sh bash ksh pdksh ash; do
1009                         for p in $pth; do
1010                                 try="$try ${p}/${xxx}"
1011                         done
1012                 done
1013                 for xxx in $try; do
1014                         if test -f "$xxx"; then
1015                                 sh="$xxx";
1016                                 break
1017                         elif test -f "$xxx.exe"; then
1018                                 sh="$xxx";
1019                                 break
1020                         fi
1021                 done
1022         fi
1023         ;;
1024 esac
1025
1026 case "$sh" in
1027 '')     cat <<EOM >&2
1028 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1029
1030 Usually it's in /bin/sh.  How did you even get this far?
1031 Please contact me (Perl Maintainers) at perlbug@perl.com and 
1032 we'll try to straighten this all out.
1033 EOM
1034         exit 1
1035         ;;
1036 esac
1037
1038 : see if sh knows # comments
1039 if `$sh -c '#' >/dev/null 2>&1`; then
1040         shsharp=true
1041         spitshell=cat
1042         xcat=/bin/cat
1043         test -f $xcat || xcat=/usr/bin/cat
1044         echo "#!$xcat" >try
1045         $eunicefix try
1046         chmod +x try
1047         ./try > today
1048         if test -s today; then
1049                 sharpbang='#!'
1050         else
1051                 echo "#! $xcat" > try
1052                 $eunicefix try
1053                 chmod +x try
1054                 ./try > today
1055                 if test -s today; then
1056                         sharpbang='#! '
1057                 else
1058                         sharpbang=': use '
1059                 fi
1060         fi
1061 else
1062         echo " "
1063         echo "Your $sh doesn't grok # comments--I will strip them later on."
1064         shsharp=false
1065         cd ..
1066         echo "exec grep -v '^[  ]*#'" >spitshell
1067         chmod +x spitshell
1068         $eunicefix spitshell
1069         spitshell=`pwd`/spitshell
1070         cd UU
1071         echo "I presume that if # doesn't work, #! won't work either!"
1072         sharpbang=': use '
1073 fi
1074 rm -f try today
1075
1076 : figure out how to guarantee sh startup
1077 case "$startsh" in
1078 '') startsh=${sharpbang}${sh} ;;
1079 *)
1080 esac
1081 cat >try <<EOSS
1082 $startsh
1083 set abc
1084 test "$?abc" != 1
1085 EOSS
1086
1087 chmod +x try
1088 $eunicefix try
1089 if ./try; then
1090         : echo "Yup, it does."
1091 else
1092         echo "Hmm... '$startsh' does not guarantee sh startup..."
1093         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1094 fi
1095 rm -f try
1096
1097
1098 : Save command line options in file UU/cmdline.opt for later use in
1099 : generating config.sh.
1100 cat > cmdline.opt <<EOSH
1101 # Configure command line arguments.
1102 config_arg0='$0'
1103 config_args='$*'
1104 config_argc=$#
1105 EOSH
1106 argn=1
1107 for arg in "$@"; do
1108         cat >>cmdline.opt <<EOSH
1109 config_arg$argn='$arg'
1110 EOSH
1111         argn=`expr $argn + 1`
1112 done
1113
1114 : produce awk script to parse command line options
1115 cat >options.awk <<'EOF'
1116 BEGIN {
1117         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1118
1119         len = length(optstr);
1120         for (i = 1; i <= len; i++) {
1121                 c = substr(optstr, i, 1);
1122                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1123                 if (a == ":") {
1124                         arg[c] = 1;
1125                         i++;
1126                 }
1127                 opt[c] = 1;
1128         }
1129 }
1130 {
1131         expect = 0;
1132         str = $0;
1133         if (substr(str, 1, 1) != "-") {
1134                 printf("'%s'\n", str);
1135                 next;
1136         }
1137         len = length($0);
1138         for (i = 2; i <= len; i++) {
1139                 c = substr(str, i, 1);
1140                 if (!opt[c]) {
1141                         printf("-%s\n", substr(str, i));
1142                         next;
1143                 }
1144                 printf("-%s\n", c);
1145                 if (arg[c]) {
1146                         if (i < len)
1147                                 printf("'%s'\n", substr(str, i + 1));
1148                         else
1149                                 expect = 1;
1150                         next;
1151                 }
1152         }
1153 }
1154 END {
1155         if (expect)
1156                 print "?";
1157 }
1158 EOF
1159
1160 : process the command line options
1161 set X `for arg in "$@"; do echo "X$arg"; done |
1162         sed -e s/X// | awk -f options.awk`
1163 eval "set $*"
1164 shift
1165 rm -f options.awk
1166
1167 : set up default values
1168 fastread=''
1169 reuseval=false
1170 config_sh=''
1171 alldone=''
1172 error=''
1173 silent=''
1174 extractsh=''
1175 override=''
1176 knowitall=''
1177 rm -f optdef.sh posthint.sh
1178 cat >optdef.sh <<EOS
1179 $startsh
1180 EOS
1181
1182
1183 : option parsing
1184 while test $# -gt 0; do
1185         case "$1" in
1186         -d) shift; fastread=yes;;
1187         -e) shift; alldone=cont;;
1188         -f)
1189                 shift
1190                 cd ..
1191                 if test -r "$1"; then
1192                         config_sh="$1"
1193                 else
1194                         echo "$me: cannot read config file $1." >&2
1195                         error=true
1196                 fi
1197                 cd UU
1198                 shift;;
1199         -h) shift; error=true;;
1200         -r) shift; reuseval=true;;
1201         -s) shift; silent=true; realsilent=true;;
1202         -E) shift; alldone=exit;;
1203         -K) shift; knowitall=true;;
1204         -O) shift; override=true;;
1205         -S) shift; silent=true; extractsh=true;;
1206         -D)
1207                 shift
1208                 case "$1" in
1209                 *=)
1210                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1211                         echo "$me: ignoring -D $1" >&2
1212                         ;;
1213                 *=*) echo "$1" | \
1214                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1215                 *) echo "$1='define'" >> optdef.sh;;
1216                 esac
1217                 shift
1218                 ;;
1219         -U)
1220                 shift
1221                 case "$1" in
1222                 *=) echo "$1" >> optdef.sh;;
1223                 *=*)
1224                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1225                         echo "$me: ignoring -U $1" >&2
1226                         ;;
1227                 *) echo "$1='undef'" >> optdef.sh;;
1228                 esac
1229                 shift
1230                 ;;
1231         -A)
1232             shift
1233             xxx=''
1234             yyy="$1"
1235             zzz=''
1236             uuu=undef
1237             case "$yyy" in
1238             *=*) zzz=`echo $yyy|sed 's!=.*!!'`
1239                  case "$zzz" in
1240                  *:*) zzz='' ;;
1241                  *)   xxx=append
1242                       zzz=" "`echo $yyy|sed 's!^[^=]*=!!'` 
1243                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1244                  esac
1245                  ;;
1246             esac
1247             case "$xxx" in
1248             '')  case "$yyy" in
1249                  *:*) xxx=`echo $yyy|sed 's!:.*!!'`
1250                       yyy=`echo $yyy|sed 's!^[^:]*:!!'`
1251                       zzz=`echo $yyy|sed 's!^[^=]*=!!'`
1252                       yyy=`echo $yyy|sed 's!=.*!!'` ;;
1253                  *)   xxx=`echo $yyy|sed 's!:.*!!'`
1254                       yyy=`echo $yyy|sed 's!^[^:]*:!!'` ;;
1255                  esac
1256                  ;;       
1257             esac
1258             case "$xxx" in
1259             append)
1260                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1261             clear)
1262                 echo "$yyy=''"                  >> posthint.sh ;;
1263             define)
1264                 case "$zzz" in
1265                 '') zzz=define ;;
1266                 esac
1267                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1268             eval)
1269                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1270             prepend)
1271                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1272             undef)
1273                 case "$zzz" in
1274                 '') zzz="$uuu" ;;
1275                 esac
1276                 echo "$yyy=$zzz"                >> posthint.sh ;;
1277             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1278             esac
1279             shift
1280             ;;
1281         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1282             exit 0;;
1283         --) break;;
1284         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1285         *) break;;
1286         esac
1287 done
1288
1289 case "$error" in
1290 true)
1291         cat >&2 <<EOM
1292 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1293                  [-U symbol] [-U symbol=] [-A command:symbol...]
1294   -d : use defaults for all answers.
1295   -e : go on without questioning past the production of config.sh.
1296   -f : specify an alternate default configuration file.
1297   -h : print this help message and exit (with an error status).
1298   -r : reuse C symbols value if possible (skips costly nm extraction).
1299   -s : silent mode, only echoes questions and essential information.
1300   -D : define symbol to have some value:
1301          -D symbol         symbol gets the value 'define'
1302          -D symbol=value   symbol gets the value 'value'
1303   -E : stop at the end of questions, after having produced config.sh.
1304   -K : do not use unless you know what you are doing.
1305   -O : let -D and -U override definitions from loaded configuration file.
1306   -S : perform variable substitutions on all .SH files (can mix with -f)
1307   -U : undefine symbol:
1308          -U symbol    symbol gets the value 'undef'
1309          -U symbol=   symbol gets completely empty
1310   -A : manipulate symbol after the platform specific hints have been applied:
1311          -A symbol=value                append " "value to symbol
1312          -A append:symbol=value         append value to symbol
1313          -A define:symbol=value         define symbol to have value
1314          -A clear:symbol                define symbol to be ''
1315          -A define:symbol               define symbol to be 'define'
1316          -A eval:symbol=value           define symbol to be eval of value
1317          -A prepend:symbol=value        prepend value to symbol
1318          -A undef:symbol                define symbol to be 'undef'
1319          -A undef:symbol=               define symbol to be ''
1320   -V : print version number and exit (with a zero status).
1321 EOM
1322         exit 1
1323         ;;
1324 esac
1325
1326 : Sanity checks
1327 case "$fastread$alldone" in
1328 yescont|yesexit) ;;
1329 *)
1330         if test ! -t 0; then
1331                 echo "Say 'sh Configure', not 'sh <Configure'"
1332                 exit 1
1333         fi
1334         ;;
1335 esac
1336
1337 exec 4>&1
1338 case "$silent" in
1339 true) exec 1>/dev/null;;
1340 esac
1341
1342 : run the defines and the undefines, if any, but leave the file out there...
1343 touch optdef.sh
1344 . ./optdef.sh
1345 : create the posthint manipulation script and leave the file out there...
1346 touch posthint.sh
1347
1348 : set package name
1349 package=perl5
1350 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1351 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1352 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1353 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1354 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1355 esac
1356
1357 : Some greps do not return status, grrr.
1358 echo "grimblepritz" >grimble
1359 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1360         contains=contains
1361 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1362         contains=grep
1363 else
1364         contains=contains
1365 fi
1366 rm -f grimble
1367 : the following should work in any shell
1368 case "$contains" in
1369 contains*)
1370         echo " "
1371         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1372         cat >contains <<'EOSS'
1373 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1374 EOSS
1375 chmod +x contains
1376 esac
1377
1378 : Find the path to the source tree
1379 case "$src" in
1380 '') case "$0" in
1381     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1382          case "$src" in
1383          /*)    ;;
1384          *)     src=`cd ../$src && pwd` ;;
1385          esac
1386          ;;
1387     *)   src='.';;
1388     esac;;
1389 esac
1390 case "$src" in
1391 '')     src=/
1392         rsrc=/
1393         ;;
1394 /*) rsrc="$src";;
1395 *) rsrc="../$src";;
1396 esac
1397 if test -f $rsrc/Configure && \
1398         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1399 then
1400    : found it, so we are ok.
1401 else
1402         rsrc=''
1403         for src in . .. ../.. ../../.. ../../../..; do
1404                 if test -f ../$src/Configure && \
1405                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1406                 then
1407                         rsrc=../$src
1408                         break
1409                 fi
1410         done
1411 fi
1412 case "$rsrc" in
1413 '')
1414         cat <<EOM >&4
1415
1416 Sorry, I can't seem to locate the source dir for $package.  Please start
1417 Configure with an explicit path -- i.e. /some/path/Configure.
1418
1419 EOM
1420         exit 1
1421         ;;
1422 ../.)   rsrc='..';;
1423 *)
1424         echo " "
1425         echo "Sources for $package found in \"$src\"." >&4
1426         ;;
1427 esac
1428
1429 : script used to extract .SH files with variable substitutions
1430 cat >extract <<'EOS'
1431 CONFIGDOTSH=true
1432 echo "Doing variable substitutions on .SH files..."
1433 if test -f $src/MANIFEST; then
1434         set x `awk '{print $1}' <$src/MANIFEST | grep '\.SH$'`
1435 else
1436         echo "(Looking for .SH files under the source directory.)"
1437         set x `(cd $src; find . -name "*.SH" -print)`
1438 fi
1439 shift
1440 case $# in
1441 0) set x `(cd $src; echo *.SH)`; shift;;
1442 esac
1443 if test ! -f $src/$1; then
1444         shift
1445 fi
1446 mkdir_p='
1447 name=$1;
1448 create="";
1449 while test $name; do
1450         if test ! -d "$name"; then
1451                 create="$name $create";
1452                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1453                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1454         else
1455                 name="";
1456         fi;
1457 done;
1458 for file in $create; do
1459         mkdir $file;
1460 done
1461 '
1462 for file in $*; do
1463         case "$src" in
1464         ".")
1465                 case "$file" in
1466                 */*)
1467                         dir=`expr X$file : 'X\(.*\)/'`
1468                         file=`expr X$file : 'X.*/\(.*\)'`
1469                         (cd $dir && . ./$file)
1470                         ;;
1471                 *)
1472                         . ./$file
1473                         ;;
1474                 esac
1475                 ;;
1476         *)
1477                 case "$file" in
1478                 */*)
1479                         dir=`expr X$file : 'X\(.*\)/'`
1480                         file=`expr X$file : 'X.*/\(.*\)'`
1481                         (set x $dir; shift; eval $mkdir_p)
1482                         sh <$src/$dir/$file
1483                         ;;
1484                 *)
1485                         sh <$src/$file
1486                         ;;
1487                 esac
1488                 ;;
1489         esac
1490 done
1491 if test -f $src/config_h.SH; then
1492         if test ! -f config.h; then
1493         : oops, they left it out of MANIFEST, probably, so do it anyway.
1494         . $src/config_h.SH
1495         fi
1496 fi
1497 EOS
1498
1499 : extract files and exit if asked to do so
1500 case "$extractsh" in
1501 true)
1502         case "$realsilent" in
1503         true) ;;
1504         *) exec 1>&4;;
1505         esac
1506         case "$config_sh" in
1507         '') config_sh='config.sh';;
1508         esac
1509         echo " "
1510         echo "Fetching answers from $config_sh..."
1511         cd ..
1512         . $config_sh
1513         test "$override" && . ./optdef.sh
1514         echo " "
1515         . UU/extract
1516         rm -rf UU
1517         echo "Done."
1518         exit 0
1519         ;;
1520 esac
1521
1522 : Eunice requires " " instead of "", can you believe it
1523 echo " "
1524 : Here we go...
1525 echo "Beginning of configuration questions for $package."
1526
1527 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1528
1529 : first determine how to suppress newline on echo command
1530 echo " "
1531 echo "Checking echo to see how to suppress newlines..."
1532 (echo "hi there\c" ; echo " ") >.echotmp
1533 if $contains c .echotmp >/dev/null 2>&1 ; then
1534         echo "...using -n."
1535         n='-n'
1536         c=''
1537 else
1538         cat <<'EOM'
1539 ...using \c
1540 EOM
1541         n=''
1542         c='\c'
1543 fi
1544 echo $n "The star should be here-->$c"
1545 echo '*'
1546 rm -f .echotmp
1547
1548 : Now test for existence of everything in MANIFEST
1549 echo " "
1550 if test -f $rsrc/MANIFEST; then
1551         echo "First let's make sure your kit is complete.  Checking..." >&4
1552         awk '$1 !~ /PACK[A-Z]+/ {print $1}' $rsrc/MANIFEST | split -50
1553         rm -f missing
1554         tmppwd=`pwd`
1555         for filelist in x??; do
1556                 (cd $rsrc; ls `cat $tmppwd/$filelist` >/dev/null 2>>$tmppwd/missing)
1557         done
1558         if test -s missing; then
1559                 cat missing >&4
1560                 cat >&4 <<'EOM'
1561
1562 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1563
1564 You have the option of continuing the configuration process, despite the
1565 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1566 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1567 and contact the author (perlbug@perl.com).
1568
1569 EOM
1570                 echo $n "Continue? [n] $c" >&4
1571                 read ans
1572                 case "$ans" in
1573                 y*)
1574                         echo "Continuing..." >&4
1575                         rm -f missing
1576                         ;;
1577                 *)
1578                         echo "ABORTING..." >&4
1579                         kill $$
1580                         ;;
1581                 esac
1582         else
1583                 echo "Looks good..."
1584         fi
1585 else
1586         echo "There is no MANIFEST file.  I hope your kit is complete !"
1587 fi
1588 rm -f missing x??
1589
1590 echo " "
1591 : Find the appropriate value for a newline for tr
1592 if test -n "$DJGPP"; then
1593        trnl='\012'
1594 fi
1595 if test X"$trnl" = X; then
1596         case "`echo foo|tr '\n' x 2>/dev/null`" in
1597         foox) trnl='\n' ;;
1598         esac
1599 fi
1600 if test X"$trnl" = X; then
1601         case "`echo foo|tr '\012' x 2>/dev/null`" in
1602         foox) trnl='\012' ;;
1603         esac
1604 fi
1605 if test X"$trnl" = X; then
1606         cat <<EOM >&2
1607
1608 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1609
1610 EOM
1611         exit 1
1612 fi
1613
1614 : compute the number of columns on the terminal for proper question formatting
1615 case "$COLUMNS" in
1616 '') COLUMNS='80';;
1617 esac
1618
1619 : set up the echo used in my read
1620 myecho="case \"\$xxxm\" in
1621 '') echo $n \"\$rp $c\" >&4;;
1622 *) case \"\$rp\" in
1623         '') echo $n \"[\$xxxm] $c\";;
1624         *)
1625                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1626                         echo \"\$rp\" >&4
1627                         echo $n \"[\$xxxm] $c\" >&4
1628                 else
1629                         echo $n \"\$rp [\$xxxm] $c\" >&4
1630                 fi
1631                 ;;
1632         esac;;
1633 esac"
1634
1635 : now set up to do reads with possible shell escape and default assignment
1636 cat <<EOSC >myread
1637 $startsh
1638 xxxm=\$dflt
1639 $myecho
1640 ans='!'
1641 case "\$fastread" in
1642 yes) case "\$dflt" in
1643         '') ;;
1644         *) ans='';
1645                 case "\$silent-\$rp" in
1646                 true-) ;;
1647                 *) echo " " >&4;;
1648                 esac;;
1649         esac;;
1650 *) case "\$silent" in
1651         true) case "\$rp" in
1652                 '') ans='';;
1653                 esac;;
1654         esac;;
1655 esac
1656 while expr "X\$ans" : "X!" >/dev/null; do
1657         read answ
1658         set x \$xxxm
1659         shift
1660         aok=''; eval "ans=\\"\$answ\\"" && aok=y
1661         case  "\$answ" in
1662         "!")
1663                 sh 1>&4
1664                 echo " "
1665                 $myecho
1666                 ;;
1667         !*)
1668                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1669                 shift
1670                 sh 1>&4 -c "\$*"
1671                 echo " "
1672                 $myecho
1673                 ;;
1674         "\$ans")
1675                 case "\$ans" in
1676                 \\&*)
1677                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1678                         shift
1679                         case "\$1" in
1680                         -d)
1681                                 fastread=yes
1682                                 echo "(OK, I'll run with -d after this question.)" >&4
1683                                 ;;
1684                         -*)
1685                                 echo "*** Sorry, \$1 not supported yet." >&4
1686                                 ;;
1687                         esac
1688                         $myecho
1689                         ans=!
1690                         ;;
1691                 esac;;
1692         *)
1693                 case "\$aok" in
1694                 y)
1695                         echo "*** Substitution done -- please confirm."
1696                         xxxm="\$ans"
1697                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
1698                         xxxm="\$ans"
1699                         ans=!
1700                         ;;
1701                 *)
1702                         echo "*** Error -- try again."
1703                         ans=!
1704                         ;;
1705                 esac
1706                 $myecho
1707                 ;;
1708         esac
1709         case "\$ans\$xxxm\$nostick" in
1710         '')
1711                 ans=!
1712                 $myecho
1713                 ;;
1714         esac
1715 done
1716 case "\$ans" in
1717 '') ans="\$xxxm";;
1718 esac
1719 EOSC
1720
1721 : create .config dir to save info across Configure sessions
1722 test -d ../.config || mkdir ../.config
1723 cat >../.config/README <<EOF
1724 This directory created by Configure to save information that should
1725 persist across sessions for $package.
1726
1727 You may safely delete it if you wish.
1728 EOF
1729
1730 : general instructions
1731 needman=true
1732 firsttime=true
1733 user=`(logname) 2>/dev/null`
1734 case "$user" in
1735 '') user=`whoami 2>&1`;;
1736 esac
1737 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1738         firsttime=false
1739         echo " "
1740         rp='Would you like to see the instructions?'
1741         dflt=n
1742         . ./myread
1743         case "$ans" in
1744         [yY]*) ;;
1745         *) needman=false;;
1746         esac
1747 fi
1748 if $needman; then
1749         cat <<EOH
1750
1751 This installation shell script will examine your system and ask you questions
1752 to determine how the perl5 package should be installed. If you get
1753 stuck on a question, you may use a ! shell escape to start a subshell or
1754 execute a command.  Many of the questions will have default answers in square
1755 brackets; typing carriage return will give you the default.
1756
1757 On some of the questions which ask for file or directory names you are allowed
1758 to use the ~name construct to specify the login directory belonging to "name",
1759 even if you don't have a shell which knows about that.  Questions where this is
1760 allowed will be marked "(~name ok)".
1761
1762 EOH
1763         rp=''
1764         dflt='Type carriage return to continue'
1765         . ./myread
1766         cat <<'EOH'
1767
1768 The prompter used in this script allows you to use shell variables and
1769 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1770 in the default answer, as if the default line was a set of arguments given to a
1771 script shell.  This means you may also use $* to repeat the whole default line,
1772 so you do not have to re-type everything to add something to the default.
1773
1774 Everytime there is a substitution, you will have to confirm.  If there is an
1775 error (e.g. an unmatched backtick), the default answer will remain unchanged
1776 and you will be prompted again.
1777
1778 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1779 the questions and use the computed defaults (or the previous answers if there
1780 was already a config.sh file). Type 'Configure -h' for a list of options.
1781 You may also start interactively and then answer '& -d' at any prompt to turn
1782 on the non-interactive behaviour for the remainder of the execution.
1783
1784 EOH
1785         . ./myread
1786         cat <<EOH
1787
1788 Much effort has been expended to ensure that this shell script will run on any
1789 Unix system.  If despite that it blows up on yours, your best bet is to edit
1790 Configure and run it again.  If you can't run Configure for some reason,
1791 you'll have to generate a config.sh file by hand.  Whatever problems you
1792 have, let me (perlbug@perl.com) know how I blew it.
1793
1794 This installation script affects things in two ways:
1795
1796 1) it may do direct variable substitutions on some of the files included
1797    in this kit.
1798 2) it builds a config.h file for inclusion in C programs.  You may edit
1799    any of these files as the need arises after running this script.
1800
1801 If you make a mistake on a question, there is no easy way to back up to it
1802 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1803 files.  Configure will offer to let you do this before it runs the SH files.
1804
1805 EOH
1806         dflt='Type carriage return to continue'
1807         . ./myread
1808         case "$firsttime" in
1809         true) echo $user >>../.config/instruct;;
1810         esac
1811 fi
1812
1813 : find out where common programs are
1814 echo " "
1815 echo "Locating common programs..." >&4
1816 cat <<EOSC >loc
1817 $startsh
1818 case \$# in
1819 0) exit 1;;
1820 esac
1821 thing=\$1
1822 shift
1823 dflt=\$1
1824 shift
1825 for dir in \$*; do
1826         case "\$thing" in
1827         .)
1828         if test -d \$dir/\$thing; then
1829                 echo \$dir
1830                 exit 0
1831         fi
1832         ;;
1833         *)
1834         for thisthing in \$dir/\$thing; do
1835                 : just loop through to pick last item
1836         done
1837         if test -f \$thisthing; then
1838                 echo \$thisthing
1839                 exit 0
1840         elif test -f \$dir/\$thing.exe; then
1841                 if test -n "$DJGPP"; then
1842                         echo \$dir/\$thing.exe
1843                 else
1844                         : on Eunice apparently
1845                         echo \$dir/\$thing
1846                 fi
1847                 exit 0
1848         fi
1849         ;;
1850         esac
1851 done
1852 echo \$dflt
1853 exit 1
1854 EOSC
1855 chmod +x loc
1856 $eunicefix loc
1857 loclist="
1858 awk
1859 cat
1860 comm
1861 cp
1862 echo
1863 expr
1864 grep
1865 ls
1866 make
1867 mkdir
1868 rm
1869 sed
1870 sort
1871 touch
1872 tr
1873 uniq
1874 "
1875 trylist="
1876 Mcc
1877 ar
1878 byacc
1879 cpp
1880 csh
1881 date
1882 egrep
1883 gzip
1884 less
1885 ln
1886 more
1887 nm
1888 nroff
1889 pg
1890 test
1891 uname
1892 zip
1893 "
1894 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1895 pth="$pth /lib /usr/lib"
1896 for file in $loclist; do
1897         eval xxx=\$$file
1898         case "$xxx" in
1899         /*|?:[\\/]*)
1900                 if test -f "$xxx"; then
1901                         : ok
1902                 else
1903                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1904                         xxx=`./loc $file $file $pth`
1905                 fi
1906                 ;;
1907         '') xxx=`./loc $file $file $pth`;;
1908         *) xxx=`./loc $xxx $xxx $pth`;;
1909         esac
1910         eval $file=$xxx
1911         eval _$file=$xxx
1912         case "$xxx" in
1913         /*)
1914                 echo $file is in $xxx.
1915                 ;;
1916         ?:[\\/]*)
1917                 echo $file is in $xxx.
1918                 ;;
1919         *)
1920                 echo "I don't know where '$file' is, and my life depends on it." >&4
1921                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1922                 exit 1
1923                 ;;
1924         esac
1925 done
1926 echo " "
1927 echo "Don't worry if any of the following aren't found..."
1928 say=offhand
1929 for file in $trylist; do
1930         eval xxx=\$$file
1931         case "$xxx" in
1932         /*|?:[\\/]*)
1933                 if test -f "$xxx"; then
1934                         : ok
1935                 else
1936                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
1937                         xxx=`./loc $file $file $pth`
1938                 fi
1939                 ;;
1940         '') xxx=`./loc $file $file $pth`;;
1941         *) xxx=`./loc $xxx $xxx $pth`;;
1942         esac
1943         eval $file=$xxx
1944         eval _$file=$xxx
1945         case "$xxx" in
1946         /*)
1947                 echo $file is in $xxx.
1948                 ;;
1949         ?:[\\/]*)
1950                 echo $file is in $xxx.
1951                 ;;
1952         *)
1953                 echo "I don't see $file out there, $say."
1954                 say=either
1955                 ;;
1956         esac
1957 done
1958 case "$egrep" in
1959 egrep)
1960         echo "Substituting grep for egrep."
1961         egrep=$grep
1962         ;;
1963 esac
1964 case "$ln" in
1965 ln)
1966         echo "Substituting cp for ln."
1967         ln=$cp
1968         ;;
1969 esac
1970 case "$test" in
1971 test)
1972         echo "Hopefully test is built into your sh."
1973         ;;
1974 *)
1975         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1976                 echo "Using the test built into your sh."
1977                 test=test
1978                 _test=test
1979         fi
1980         ;;
1981 esac
1982 case "$echo" in
1983 echo)
1984         echo "Hopefully echo is built into your sh."
1985         ;;
1986 '') ;;
1987 *)
1988         echo " "
1989 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1990         $echo $n "hi there$c" >foo1
1991         echo $n "hi there$c" >foo2
1992         if cmp foo1 foo2 >/dev/null 2>&1; then
1993                 echo "They are compatible.  In fact, they may be identical."
1994         else
1995                 case "$n" in
1996                 '-n') n='' c='\c';;
1997                 *) n='-n' c='';;
1998                 esac
1999                 cat <<FOO
2000 They are not compatible!  You are probably running ksh on a non-USG system.
2001 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2002 have echo built in and we may have to run some Bourne shell scripts.  That
2003 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2004
2005 FOO
2006                 $echo $n "The star should be here-->$c"
2007                 $echo "*"
2008         fi
2009         $rm -f foo1 foo2
2010         ;;
2011 esac
2012
2013 : determine whether symbolic links are supported
2014 echo " "
2015 $touch blurfl
2016 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2017         echo "Symbolic links are supported." >&4
2018         lns="$ln -s"
2019 else
2020         echo "Symbolic links are NOT supported." >&4
2021         lns="$ln"
2022 fi
2023 $rm -f blurfl sym
2024
2025 : see whether [:lower:] and [:upper:] are supported character classes
2026 echo " "
2027 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2028 ABYZ)
2029         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2030         up='[:upper:]'
2031         low='[:lower:]'
2032         ;;
2033 *)      # There is a discontinuity in EBCDIC between 'I' and 'J'
2034         # (0xc9 and 0xd1), therefore that is a nice testing point.
2035         if test "X$up" = X -o "X$low" = X; then
2036             case "`echo IJ | $tr '[I-J]' '[i-j]' 2>/dev/null`" in
2037             ij) up='[A-Z]'
2038                 low='[a-z]'
2039                 ;;
2040             esac
2041         fi
2042         if test "X$up" = X -o "X$low" = X; then
2043             case "`echo IJ | $tr I-J i-j 2>/dev/null`" in
2044             ij) up='A-Z'
2045                 low='a-z'
2046                 ;;
2047             esac
2048         fi
2049         if test "X$up" = X -o "X$low" = X; then
2050             case "`echo IJ | od -x 2>/dev/null`" in
2051             *C9D1*|*c9d1*)
2052                 echo "Hey, this might be EBCDIC." >&4
2053                 if test "X$up" = X -o "X$low" = X; then
2054                     case "`echo IJ | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2055                     ij) up='[A-IJ-RS-Z]'
2056                         low='[a-ij-rs-z]'
2057                         ;;
2058                     esac
2059                 fi
2060                 if test "X$up" = X -o "X$low" = X; then
2061                     case "`echo IJ | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
2062                     ij) up='A-IJ-RS-Z'
2063                         low='a-ij-rs-z'
2064                         ;;
2065                     esac
2066                 fi
2067                 ;;
2068             esac
2069         fi
2070 esac
2071 case "`echo IJ | $tr \"$up\" \"$low\" 2>/dev/null`" in
2072 ij)
2073     echo "Using $up and $low to convert case." >&4
2074     ;;
2075 *)
2076     echo "I don't know how to translate letters from upper to lower case." >&4
2077     echo "Your tr is not acting any way I know of." >&4
2078     exit 1
2079     ;;
2080 esac
2081 : set up the translation script tr, must be called with ./tr of course
2082 cat >tr <<EOSC
2083 $startsh
2084 case "\$1\$2" in
2085 '[A-Z][a-z]') exec $tr '$up' '$low';;
2086 '[a-z][A-Z]') exec $tr '$low' '$up';;
2087 esac
2088 exec $tr "\$@"
2089 EOSC
2090 chmod +x tr
2091 $eunicefix tr
2092
2093 : Try to determine whether config.sh was made on this system
2094 case "$config_sh" in
2095 '')
2096 myuname=`$uname -a 2>/dev/null`
2097 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
2098 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
2099 # because the A-Z/a-z are not consecutive.
2100 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
2101         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
2102 newmyuname="$myuname"
2103 dflt=n
2104 case "$knowitall" in
2105 '')
2106         if test -f ../config.sh; then
2107                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
2108                         eval "`grep myuname= ../config.sh`"
2109                 fi
2110                 if test "X$myuname" = "X$newmyuname"; then
2111                         dflt=y
2112                 fi
2113         fi
2114         ;;
2115 *) dflt=y;;
2116 esac
2117
2118 : Get old answers from old config file if Configure was run on the
2119 : same system, otherwise use the hints.
2120 hint=default
2121 cd ..
2122 if test -f config.sh; then
2123         echo " "
2124         rp="I see a config.sh file.  Shall I use it to set the defaults?"
2125         . UU/myread
2126         case "$ans" in
2127         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
2128         *)  echo "Fetching default answers from your old config.sh file..." >&4
2129                 tmp_n="$n"
2130                 tmp_c="$c"
2131                 tmp_sh="$sh"
2132                 . ./config.sh
2133                 cp config.sh UU
2134                 n="$tmp_n"
2135                 c="$tmp_c"
2136                 : Older versions did not always set $sh.  Catch re-use of such
2137                 : an old config.sh.
2138                 case "$sh" in
2139                 '') sh="$tmp_sh" ;;
2140                 esac
2141                 hint=previous
2142                 ;;
2143         esac
2144 fi
2145 if test ! -f config.sh; then
2146         $cat <<EOM
2147
2148 First time through, eh?  I have some defaults handy for some systems
2149 that need some extra help getting the Configure answers right:
2150
2151 EOM
2152         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
2153         dflt=''
2154         : Half the following guesses are probably wrong... If you have better
2155         : tests or hints, please send them to perlbug@perl.com
2156         : The metaconfig authors would also appreciate a copy...
2157         $test -f /irix && osname=irix
2158         $test -f /xenix && osname=sco_xenix
2159         $test -f /dynix && osname=dynix
2160         $test -f /dnix && osname=dnix
2161         $test -f /lynx.os && osname=lynxos
2162         $test -f /unicos && osname=unicos && osvers=`$uname -r`
2163         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
2164         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
2165         $test -f /bin/mips && /bin/mips && osname=mips
2166         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
2167                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
2168         $test -d /usr/apollo/bin && osname=apollo
2169         $test -f /etc/saf/_sactab && osname=svr4
2170         $test -d /usr/include/minix && osname=minix
2171         if $test -d /MachTen -o -d /MachTen_Folder; then
2172                 osname=machten
2173                 if $test -x /sbin/version; then
2174                         osvers=`/sbin/version | $awk '{print $2}' |
2175                         $sed -e 's/[A-Za-z]$//'`
2176                 elif $test -x /usr/etc/version; then
2177                         osvers=`/usr/etc/version | $awk '{print $2}' |
2178                         $sed -e 's/[A-Za-z]$//'`
2179                 else
2180                         osvers="$2.$3"
2181                 fi
2182         fi
2183
2184         $test -f /sys/posix.dll &&
2185                 $test -f /usr/bin/what &&
2186                 set X `/usr/bin/what /sys/posix.dll` &&
2187                 $test "$3" = UWIN &&
2188                 osname=uwin &&
2189                 osvers="$5"
2190
2191         if $test -f $uname; then
2192                 set X $myuname
2193                 shift
2194
2195                 case "$5" in
2196                 fps*) osname=fps ;;
2197                 mips*)
2198                         case "$4" in
2199                         umips) osname=umips ;;
2200                         *) osname=mips ;;
2201                         esac;;
2202                 [23]100) osname=mips ;;
2203                 next*) osname=next ;;
2204                 i386*)
2205                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
2206                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
2207                                 osname='sco'
2208                                 osvers=$tmp
2209                         elif $test -f /etc/kconfig; then
2210                                 osname=isc
2211                                 if test "$lns" = "$ln -s"; then
2212                                         osvers=4
2213                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
2214                                         osvers=3
2215                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
2216                                         osvers=2
2217                                 fi
2218                         fi
2219                         tmp=''
2220                         ;;
2221                 pc*)
2222                         if test -n "$DJGPP"; then
2223                                 osname=dos
2224                                 osvers=djgpp
2225                         fi
2226                         ;;
2227                 esac
2228
2229                 case "$1" in
2230                 aix) osname=aix
2231                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
2232                         case "$tmp" in
2233                         'not found') osvers="$4"."$3" ;;
2234                         '<3240'|'<>3240') osvers=3.2.0 ;;
2235                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
2236                         '=3250'|'>3250') osvers=3.2.5 ;;
2237                         *) osvers=$tmp;;
2238                         esac
2239                         ;;
2240                 bsd386) osname=bsd386
2241                         osvers=`$uname -r`
2242                         ;;
2243                 cygwin*) osname=cygwin
2244                         osvers="$3"
2245                         ;;
2246                 *dc.osx) osname=dcosx
2247                         osvers="$3"
2248                         ;;
2249                 dnix) osname=dnix
2250                         osvers="$3"
2251                         ;;
2252                 domainos) osname=apollo
2253                         osvers="$3"
2254                         ;;
2255                 dgux) osname=dgux 
2256                         osvers="$3"
2257                         ;;
2258                 dynixptx*) osname=dynixptx
2259                         osvers=`echo "$4"|sed 's/^v//'`
2260                         ;;
2261                 freebsd) osname=freebsd 
2262                         osvers="$3" ;;
2263                 genix) osname=genix ;;
2264                 hp*) osname=hpux 
2265                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
2266                         ;;
2267                 irix*) osname=irix
2268                         case "$3" in
2269                         4*) osvers=4 ;;
2270                         5*) osvers=5 ;;
2271                         *)      osvers="$3" ;;
2272                         esac
2273                         ;;
2274                 linux) osname=linux
2275                         case "$3" in
2276                         *)      osvers="$3" ;;
2277                         esac
2278                         ;;
2279                 MiNT) osname=mint
2280                         ;;
2281                 netbsd*) osname=netbsd
2282                         osvers="$3"
2283                         ;;
2284                 news-os) osvers="$3"
2285                         case "$3" in
2286                         4*) osname=newsos4 ;;
2287                         *) osname=newsos ;;
2288                         esac
2289                         ;;
2290                 next*) osname=next ;;
2291                 POSIX-BC | posix-bc ) osname=posix-bc
2292                         osvers="$3"
2293                         ;;
2294                 powerux | power_ux | powermax_os | powermaxos | \
2295                 powerunix | power_unix) osname=powerux
2296                         osvers="$3"
2297                         ;;
2298                 qnx) osname=qnx
2299                         osvers="$4"
2300                         ;;
2301                 solaris) osname=solaris
2302                         case "$3" in
2303                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2304                         *)      osvers="$3" ;;
2305                         esac
2306                         ;;
2307                 sunos) osname=sunos
2308                         case "$3" in
2309                         5*) osname=solaris
2310                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
2311                         *)      osvers="$3" ;;
2312                         esac
2313                         ;;
2314                 titanos) osname=titanos
2315                         case "$3" in
2316                         1*) osvers=1 ;;
2317                         2*) osvers=2 ;;
2318                         3*) osvers=3 ;;
2319                         4*) osvers=4 ;;
2320                         *)      osvers="$3" ;;
2321                         esac
2322                         ;;
2323                 ultrix) osname=ultrix
2324                         osvers="$3"
2325                         ;;
2326                 osf1|mls+)      case "$5" in
2327                                 alpha)
2328                                         osname=dec_osf
2329                                         osvers=`echo "$3" | sed 's/^[xvt]//'`
2330                                         ;;
2331                         hp*)    osname=hp_osf1  ;;
2332                         mips)   osname=mips_osf1 ;;
2333                         esac
2334                         ;;
2335                 unixware) osname=svr5
2336                         osvers="$4"
2337                         ;;
2338                 uts) osname=uts
2339                         osvers="$3"
2340                         ;;
2341                 $2) case "$osname" in
2342                         *isc*) ;;
2343                         *freebsd*) ;;
2344                         svr*)
2345                                 : svr4.x or possibly later
2346                                 case "svr$3" in 
2347                                 ${osname}*)
2348                                         osname=svr$3
2349                                         osvers=$4
2350                                         ;;
2351                                 esac
2352                                 case "$osname" in
2353                                 svr4.0)
2354                                         : Check for ESIX
2355                                         if test -f /stand/boot ; then
2356                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
2357                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
2358                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
2359                                                         if test -n "$isesix"; then
2360                                                                 osname=esix4
2361                                                         fi
2362                                                 fi
2363                                         fi
2364                                         ;;
2365                                 esac
2366                                 ;;
2367                         *)      if test -f /etc/systemid; then
2368                                         osname=sco
2369                                         set `echo $3 | $sed 's/\./ /g'` $4
2370                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
2371                                                 osvers=$1.$2.$3
2372                                         elif $test -f $src/hints/sco_$1_$2.sh; then
2373                                                 osvers=$1.$2
2374                                         elif $test -f $src/hints/sco_$1.sh; then
2375                                                 osvers=$1
2376                                         fi
2377                                 else
2378                                         case "$osname" in
2379                                         '') : Still unknown.  Probably a generic Sys V.
2380                                                 osname="sysv"
2381                                                 osvers="$3"
2382                                                 ;;
2383                                         esac
2384                                 fi
2385                                 ;;
2386                         esac
2387                         ;;
2388                 *)      case "$osname" in
2389                         '') : Still unknown.  Probably a generic BSD.
2390                                 osname="$1"
2391                                 osvers="$3"
2392                                 ;;
2393                         esac
2394                         ;;
2395                 esac
2396         else
2397                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
2398                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
2399                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
2400                                 osname=news_os
2401                         fi
2402                         $rm -f UU/kernel.what
2403                 elif test -d c:/.; then
2404                         set X $myuname
2405                         osname=os2
2406                         osvers="$5"
2407                 fi
2408         fi
2409         
2410         : Now look for a hint file osname_osvers, unless one has been
2411         : specified already.
2412         case "$hintfile" in
2413         ''|' ')
2414                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
2415                 : Also try without trailing minor version numbers.
2416                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
2417                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
2418                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
2419                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
2420                 case "$file" in
2421                 '') dflt=none ;;
2422                 *)  case "$osvers" in
2423                         '') dflt=$file
2424                                 ;;
2425                         *)  if $test -f $src/hints/$file.sh ; then
2426                                         dflt=$file
2427                                 elif $test -f $src/hints/$xfile.sh ; then
2428                                         dflt=$xfile
2429                                 elif $test -f $src/hints/$xxfile.sh ; then
2430                                         dflt=$xxfile
2431                                 elif $test -f $src/hints/$xxxfile.sh ; then
2432                                         dflt=$xxxfile
2433                                 elif $test -f $src/hints/$xxxxfile.sh ; then
2434                                         dflt=$xxxxfile
2435                                 elif $test -f "$src/hints/${osname}.sh" ; then
2436                                         dflt="${osname}"
2437                                 else
2438                                         dflt=none
2439                                 fi
2440                                 ;;
2441                         esac
2442                         ;;
2443                 esac
2444                 if $test -f Policy.sh ; then
2445                         case "$dflt" in
2446                         *Policy*) ;;
2447                         none) dflt="Policy" ;;
2448                         *) dflt="Policy $dflt" ;;
2449                         esac
2450                 fi
2451                 ;;
2452         *)
2453                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
2454                 ;;
2455         esac
2456
2457         if $test -f Policy.sh ; then
2458                 $cat <<EOM
2459
2460 There's also a Policy hint file available, which should make the
2461 site-specific (policy) questions easier to answer.
2462 EOM
2463
2464         fi
2465
2466         $cat <<EOM
2467
2468 You may give one or more space-separated answers, or "none" if appropriate.
2469 A well-behaved OS will have no hints, so answering "none" or just "Policy"
2470 is a good thing.  DO NOT give a wrong version or a wrong OS.
2471
2472 EOM
2473
2474         rp="Which of these apply, if any?"
2475         . UU/myread
2476         tans=$ans
2477         for file in $tans; do
2478                 if $test X$file = XPolicy -a -f Policy.sh; then
2479                         . Policy.sh
2480                         $cat Policy.sh >> UU/config.sh
2481                 elif $test -f $src/hints/$file.sh; then
2482                         . $src/hints/$file.sh
2483                         $cat $src/hints/$file.sh >> UU/config.sh
2484                 elif $test X$tans = X -o X$tans = Xnone ; then
2485                         : nothing
2486                 else
2487                         : Give one chance to correct a possible typo.
2488                         echo "$file.sh does not exist"
2489                         dflt=$file
2490                         rp="hint to use instead?"
2491                         . UU/myread
2492                         for file in $ans; do
2493                                 if $test -f "$src/hints/$file.sh"; then
2494                                         . $src/hints/$file.sh
2495                                         $cat $src/hints/$file.sh >> UU/config.sh
2496                                 elif $test X$ans = X -o X$ans = Xnone ; then
2497                                         : nothing
2498                                 else
2499                                         echo "$file.sh does not exist -- ignored."
2500                                 fi
2501                         done
2502                 fi
2503         done
2504
2505         hint=recommended
2506         : Remember our hint file for later.
2507         if $test -f "$src/hints/$file.sh" ; then
2508                 hintfile="$file"
2509         else
2510                 hintfile=''
2511         fi
2512 fi
2513 cd UU
2514 ;;
2515 *)
2516         echo " "
2517         echo "Fetching default answers from $config_sh..." >&4
2518         tmp_n="$n"
2519         tmp_c="$c"
2520         cd ..
2521         cp $config_sh config.sh 2>/dev/null
2522         chmod +w config.sh
2523         . ./config.sh
2524         cd UU
2525         cp ../config.sh .
2526         n="$tmp_n"
2527         c="$tmp_c"
2528         hint=previous
2529         ;;
2530 esac
2531 test "$override" && . ./optdef.sh
2532 myuname="$newmyuname"
2533
2534 : Restore computed paths
2535 for file in $loclist $trylist; do
2536         eval $file="\$_$file"
2537 done
2538
2539 cat << EOM
2540
2541 Configure uses the operating system name and version to set some defaults.
2542 The default value is probably right if the name rings a bell. Otherwise,
2543 since spelling matters for me, either accept the default or answer "none"
2544 to leave it blank.
2545
2546 EOM
2547 case "$osname" in
2548         ''|' ')
2549                 case "$hintfile" in
2550                 ''|' '|none) dflt=none ;;
2551                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
2552                 esac
2553                 ;;
2554         *) dflt="$osname" ;;
2555 esac
2556 rp="Operating system name?"
2557 . ./myread
2558 case "$ans" in
2559 none)  osname='' ;;
2560 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
2561 esac
2562 echo " "
2563 case "$osvers" in
2564         ''|' ')
2565                 case "$hintfile" in
2566                 ''|' '|none) dflt=none ;;
2567                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2568                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2569                         case "$dflt" in
2570                         ''|' ') dflt=none ;;
2571                         esac
2572                         ;;
2573                 esac
2574                 ;;
2575         *) dflt="$osvers" ;;
2576 esac
2577 rp="Operating system version?"
2578 . ./myread
2579 case "$ans" in
2580 none)  osvers='' ;;
2581 *) osvers="$ans" ;;
2582 esac
2583
2584
2585 . ./posthint.sh
2586
2587 : who configured the system
2588 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
2589 cf_by=`(logname) 2>/dev/null`
2590 case "$cf_by" in
2591 "")
2592         cf_by=`(whoami) 2>/dev/null`
2593         case "$cf_by" in
2594         "") cf_by=unknown ;;
2595         esac ;;
2596 esac
2597
2598 : set up the script used to warn in case of inconsistency
2599 cat <<EOS >whoa
2600 $startsh
2601 EOS
2602 cat <<'EOSC' >>whoa
2603 dflt=y
2604 echo " "
2605 echo "*** WHOA THERE!!! ***" >&4
2606 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2607 rp="    Keep the $hint value?"
2608 . ./myread
2609 case "$ans" in
2610 y) td=$was; tu=$was;;
2611 esac
2612 EOSC
2613
2614 : function used to set $1 to $val
2615 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2616 case "$val$was" in
2617 $define$undef) . ./whoa; eval "$var=\$td";;
2618 $undef$define) . ./whoa; eval "$var=\$tu";;
2619 *) eval "$var=$val";;
2620 esac'
2621
2622 case "$usethreads" in
2623 $define|true|[yY]*)     dflt='y';;
2624 *) dflt='n';;
2625 esac
2626 cat <<EOM
2627
2628 Perl can be built to take advantage of threads on some systems.
2629 To do so, Configure can be run with -Dusethreads.
2630
2631 Note that threading is a highly experimental feature, and
2632 some known race conditions still remain.  If you choose to try
2633 it, be very sure to not actually deploy it for production
2634 purposes.  README.threads has more details, and is required
2635 reading if you enable threads.
2636
2637 If this doesn't make any sense to you, just accept the default '$dflt'.
2638 EOM
2639 rp='Build a threading Perl?'
2640 . ./myread
2641 case "$ans" in
2642 y|Y)    val="$define" ;;
2643 *)      val="$undef" ;;
2644 esac
2645 set usethreads
2646 eval $setvar
2647
2648 case "$usethreads" in
2649 $define)
2650         $cat <<EOM
2651
2652 As of 5.5.640, Perl has two different internal threading implementations,
2653 the 5.005 version (5005threads) and an interpreter-based version
2654 (ithreads) that has one interpreter per thread.  Both are very 
2655 experimental.  This arrangement exists to help developers work out
2656 which one is better.
2657
2658 If you're a casual user, you probably don't want interpreter-threads
2659 at this time.  There doesn't yet exist a way to create threads from
2660 within Perl in this model, i.e., "use Thread;" will NOT work.
2661 EOM
2662         : Default to ithreads unless overridden on command line or with
2663         : old config.sh
2664         dflt='y'
2665         case "$use5005threads" in
2666                 $define|true|[yY]*) dflt='n';;
2667         esac
2668         case "$useithreads" in
2669                 $undef|false|[nN]*) dflt='n';;
2670         esac
2671         rp='Use interpreter-based ithreads?'
2672         . ./myread
2673         case "$ans" in
2674         y|Y)    val="$define" ;;
2675         *)      val="$undef" ;;
2676         esac
2677         set useithreads
2678         eval $setvar
2679         : Now set use5005threads to the opposite value.
2680         case "$useithreads" in
2681         $define) val="$undef" ;;
2682         *) val="$define" ;;
2683         esac
2684         set use5005threads
2685         eval $setvar
2686         ;;
2687 *)
2688         useithreads="$undef"
2689         use5005threads="$undef"
2690         ;;
2691 esac
2692
2693 case "$d_oldpthreads" in
2694 '')     : Configure tests would be welcome here.  For now, assume undef.
2695         val="$undef" ;;
2696 *)      val="$d_oldpthreads" ;;
2697 esac
2698 set d_oldpthreads
2699 eval $setvar
2700
2701
2702 case "$usethreads" in
2703 "$define"|true|[yY]*)
2704 : Look for a hint-file generated 'call-back-unit'.  If the
2705 : user has specified that a threading perl is to be built,
2706 : we may need to set or change some other defaults.
2707         if $test -f usethreads.cbu; then
2708                 echo "Your platform has some specific hints for threaded builds, using them..."
2709                 . ./usethreads.cbu
2710         else
2711                 $cat <<EOM
2712 (Your platform doesn't have any specific hints for threaded builds.
2713  Assuming POSIX threads, then.)
2714 EOM
2715         fi
2716         ;;
2717 esac
2718
2719 cat <<EOM
2720
2721 Perl can be built so that multiple Perl interpreters can coexist
2722 within the same Perl executable.
2723 EOM
2724
2725 case "$useithreads" in
2726 $define)
2727         cat <<EOM
2728 This multiple interpreter support is required for interpreter-based threads.
2729 EOM
2730         val="$define"
2731         ;;
2732 *)      case "$usemultiplicity" in
2733         $define|true|[yY]*)     dflt='y';;
2734         *) dflt='n';;
2735         esac
2736         echo " "
2737         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
2738         rp='Build Perl for multiplicity?'
2739         . ./myread
2740         case "$ans" in
2741         y|Y)    val="$define" ;;
2742         *)      val="$undef" ;;
2743         esac
2744         ;;
2745 esac
2746 set usemultiplicity
2747 eval $setvar
2748
2749 : determine where manual pages are on this system
2750 echo " "
2751 case "$sysman" in
2752 '') 
2753         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2754         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2755         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2756         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2757         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2758         sysman=`./loc . /usr/man/man1 $syspath`
2759         ;;
2760 esac
2761 if $test -d "$sysman"; then
2762         echo "System manual is in $sysman." >&4
2763 else
2764         echo "Could not find manual pages in source form." >&4
2765 fi
2766
2767 : see what memory models we can support
2768 case "$models" in
2769 '')
2770         $cat >pdp11.c <<'EOP'
2771 int main() {
2772 #ifdef pdp11
2773         exit(0);
2774 #else
2775         exit(1);
2776 #endif
2777 }
2778 EOP
2779         ( cc -o pdp11 pdp11.c ) >/dev/null 2>&1
2780         if $test -f pdp11 && ./pdp11 2>/dev/null; then
2781                 dflt='unsplit split'
2782         else
2783                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2784                 case "$tans" in
2785                 X) dflt='none';;
2786                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2787                                 dflt='small'
2788                         else
2789                                 dflt=''
2790                         fi
2791                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2792                                 dflt="$dflt medium"
2793                         fi
2794                         if $test -d /lib/large || $test -d /usr/lib/large; then
2795                                 dflt="$dflt large"
2796                         fi
2797                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2798                                 dflt="$dflt huge"
2799                         fi
2800                 esac
2801         fi;;
2802 *) dflt="$models";;
2803 esac
2804 $cat <<EOM
2805  
2806 Some systems have different model sizes.  On most systems they are called
2807 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2808 split.  If your system doesn't support different memory models, say "none".
2809 If you wish to force everything to one memory model, say "none" here and
2810 put the appropriate flags later when it asks you for other cc and ld flags.
2811 Venix systems may wish to put "none" and let the compiler figure things out.
2812 (In the following question multiple model names should be space separated.)
2813
2814 The default for most systems is "none".
2815
2816 EOM
2817 rp="Which memory models are supported?"
2818 . ./myread
2819 models="$ans"
2820
2821 case "$models" in
2822 none)
2823         small=''
2824         medium=''
2825         large=''
2826         huge=''
2827         unsplit=''
2828         split=''
2829         ;;
2830 *split)
2831         case "$split" in
2832         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
2833                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
2834                         dflt='-i'
2835                 else
2836                         dflt='none'
2837                 fi;;
2838         *) dflt="$split";;
2839         esac
2840         rp="What flag indicates separate I and D space?"
2841         . ./myread
2842         tans="$ans"
2843         case "$tans" in
2844         none) tans='';;
2845         esac
2846         split="$tans"
2847         unsplit='';;
2848 *large*|*small*|*medium*|*huge*)
2849         case "$models" in
2850         *large*)
2851                 case "$large" in
2852                 '') dflt='-Ml';;
2853                 *) dflt="$large";;
2854                 esac
2855         rp="What flag indicates large model?"
2856         . ./myread
2857         tans="$ans"
2858         case "$tans" in
2859         none) tans='';
2860         esac
2861         large="$tans";;
2862         *) large='';;
2863         esac
2864         case "$models" in
2865         *huge*) case "$huge" in
2866                 '') dflt='-Mh';;
2867                 *) dflt="$huge";;
2868                 esac
2869                 rp="What flag indicates huge model?"
2870                 . ./myread
2871                 tans="$ans"
2872                 case "$tans" in
2873                 none) tans='';
2874                 esac
2875                 huge="$tans";;
2876         *) huge="$large";;
2877         esac
2878         case "$models" in
2879         *medium*) case "$medium" in
2880                 '') dflt='-Mm';;
2881                 *) dflt="$medium";;
2882                 esac
2883                 rp="What flag indicates medium model?"
2884                 . ./myread
2885                 tans="$ans"
2886                 case "$tans" in
2887                 none) tans='';
2888                 esac
2889                 medium="$tans";;
2890         *) medium="$large";;
2891         esac
2892         case "$models" in
2893         *small*) case "$small" in
2894                 '') dflt='none';;
2895                 *) dflt="$small";;
2896                 esac
2897                 rp="What flag indicates small model?"
2898                 . ./myread
2899                 tans="$ans"
2900                 case "$tans" in
2901                 none) tans='';
2902                 esac
2903                 small="$tans";;
2904         *) small='';;
2905         esac
2906         ;;
2907 *)
2908         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
2909         ;;
2910 esac
2911 $rm -f pdp11.* pdp11
2912
2913 : make some quick guesses about what we are up against
2914 echo " "
2915 $echo $n "Hmm...  $c"
2916 echo exit 1 >bsd
2917 echo exit 1 >usg
2918 echo exit 1 >v7
2919 echo exit 1 >osf1
2920 echo exit 1 >eunice
2921 echo exit 1 >xenix
2922 echo exit 1 >venix
2923 echo exit 1 >os2
2924 d_bsd="$undef"
2925 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2926 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2927 then
2928         echo "Looks kind of like an OSF/1 system, but we'll see..."
2929         echo exit 0 >osf1
2930 elif test `echo abc | tr a-z A-Z` = Abc ; then
2931         xxx=`./loc addbib blurfl $pth`
2932         if $test -f $xxx; then
2933         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2934                 echo exit 0 >bsd
2935                 echo exit 0 >usg
2936         else
2937                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2938                         echo "Looks kind of like an extended USG system, but we'll see..."
2939                 else
2940                         echo "Looks kind of like a USG system, but we'll see..."
2941                 fi
2942                 echo exit 0 >usg
2943         fi
2944 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2945         echo "Looks kind of like a BSD system, but we'll see..."
2946         d_bsd="$define"
2947         echo exit 0 >bsd
2948 else
2949         echo "Looks kind of like a Version 7 system, but we'll see..."
2950         echo exit 0 >v7
2951 fi
2952 case "$eunicefix" in
2953 *unixtovms*)
2954         $cat <<'EOI'
2955 There is, however, a strange, musty smell in the air that reminds me of
2956 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2957 EOI
2958         echo exit 0 >eunice
2959         d_eunice="$define"
2960 : it so happens the Eunice I know will not run shell scripts in Unix format
2961         ;;
2962 *)
2963         echo " "
2964         echo "Congratulations.  You aren't running Eunice."
2965         d_eunice="$undef"
2966         ;;
2967 esac
2968 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2969 case "$p_" in
2970 :) ;;
2971 *)
2972         $cat <<'EOI'
2973 I have the feeling something is not exactly right, however...don't tell me...
2974 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2975 EOI
2976         echo exit 0 >os2
2977         ;;
2978 esac
2979 if test -f /xenix; then
2980         echo "Actually, this looks more like a XENIX system..."
2981         echo exit 0 >xenix
2982         d_xenix="$define"
2983 else
2984         echo " "
2985         echo "It's not Xenix..."
2986         d_xenix="$undef"
2987 fi
2988 chmod +x xenix
2989 $eunicefix xenix
2990 if test -f /venix; then
2991         echo "Actually, this looks more like a VENIX system..."
2992         echo exit 0 >venix
2993 else
2994         echo " "
2995         if ./xenix; then
2996                 : null
2997         else
2998                 echo "Nor is it Venix..."
2999         fi
3000 fi
3001 chmod +x bsd usg v7 osf1 eunice xenix venix os2
3002 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
3003 $rm -f foo
3004
3005 : see if we need a special compiler
3006 echo " "
3007 if ./usg; then
3008         case "$cc" in
3009         '') case "$Mcc" in
3010                 /*) dflt='Mcc';;
3011                 *) case "$large" in
3012                         -M*) dflt='cc';;
3013                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3014                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3015                                                 dflt='cc'
3016                                         else
3017                                                 dflt='cc -M'
3018                                         fi
3019                                 else
3020                                         dflt='cc'
3021                                 fi;;
3022                         esac;;
3023                 esac;;
3024         *)  dflt="$cc";;
3025         esac
3026         case "$dflt" in
3027         *M*)    $cat <<'EOM'
3028 On some older systems the default C compiler will not resolve multiple global
3029 references that happen to have the same name.  On some such systems the "Mcc"
3030 command may be used to force these to be resolved.  On other systems a "cc -M"
3031 command is required.  (Note that the -M flag on other systems indicates a
3032 memory model to use!) If you have the Gnu C compiler, you might wish to use
3033 that instead.
3034
3035 EOM
3036         ;;
3037         esac
3038         rp="Use which C compiler?"
3039         . ./myread
3040         cc="$ans"
3041 else
3042         case "$cc" in
3043         '') dflt=cc;;
3044         *) dflt="$cc";;
3045         esac
3046         rp="Use which C compiler?"
3047         . ./myread
3048         cc="$ans"
3049 fi
3050 : Look for a hint-file generated 'call-back-unit'.  Now that the
3051 : user has specified the compiler, we may need to set or change some
3052 : other defaults.
3053 if $test -f cc.cbu; then
3054     . ./cc.cbu
3055 fi
3056 echo " "
3057 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3058 $cat >gccvers.c <<EOM
3059 #include <stdio.h>
3060 int main() {
3061 #ifdef __GNUC__
3062 #ifdef __VERSION__
3063         printf("%s\n", __VERSION__);
3064 #else
3065         printf("%s\n", "1");
3066 #endif
3067 #endif
3068         exit(0);
3069 }
3070 EOM
3071 if $cc $ldflags -o gccvers gccvers.c; then
3072         gccversion=`./gccvers`
3073         case "$gccversion" in
3074         '') echo "You are not using GNU cc." ;;
3075         *)  echo "You are using GNU cc $gccversion."
3076             ;;
3077         esac
3078 else
3079         echo " "
3080         echo "*** WHOA THERE!!! ***" >&4
3081         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3082         case "$knowitall" in
3083         '')
3084         echo "    You'd better start hunting for one and let me know about it." >&4
3085                 exit 1
3086                 ;;
3087         esac
3088 fi
3089 $rm -f gccvers*
3090 case "$gccversion" in
3091 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3092 esac
3093
3094 : decide how portable to be.  Allow command line overrides.
3095 case "$d_portable" in
3096 "$undef") ;;
3097 *)      d_portable="$define" ;;
3098 esac
3099
3100 : set up shell script to do ~ expansion
3101 cat >filexp <<EOSS
3102 $startsh
3103 : expand filename
3104 case "\$1" in
3105  ~/*|~)
3106         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3107         ;;
3108  ~*)
3109         if $test -f /bin/csh; then
3110                 /bin/csh -f -c "glob \$1"
3111                 failed=\$?
3112                 echo ""
3113                 exit \$failed
3114         else
3115                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3116                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3117                 if $test ! -d "\$dir"; then
3118                         me=\`basename \$0\`
3119                         echo "\$me: can't locate home directory for: \$name" >&2
3120                         exit 1
3121                 fi
3122                 case "\$1" in
3123                 */*)
3124                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3125                         ;;
3126                 *)
3127                         echo \$dir
3128                         ;;
3129                 esac
3130         fi
3131         ;;
3132 *)
3133         echo \$1
3134         ;;
3135 esac
3136 EOSS
3137 chmod +x filexp
3138 $eunicefix filexp
3139
3140 : now set up to get a file name
3141 cat <<EOS >getfile
3142 $startsh
3143 EOS
3144 cat <<'EOSC' >>getfile
3145 tilde=''
3146 fullpath=''
3147 already=''
3148 skip=''
3149 none_ok=''
3150 exp_file=''
3151 nopath_ok=''
3152 orig_rp="$rp"
3153 orig_dflt="$dflt"
3154 case "$gfpth" in
3155 '') gfpth='.' ;;
3156 esac
3157
3158 case "$fn" in
3159 *\(*)
3160         expr $fn : '.*(\(.*\)).*' | tr ',' $trnl >getfile.ok
3161         fn=`echo $fn | sed 's/(.*)//'`
3162         ;;
3163 esac
3164
3165 case "$fn" in
3166 *:*)
3167         loc_file=`expr $fn : '.*:\(.*\)'`
3168         fn=`expr $fn : '\(.*\):.*'`
3169         ;;
3170 esac
3171
3172 case "$fn" in
3173 *~*) tilde=true;;
3174 esac
3175 case "$fn" in
3176 */*) fullpath=true;;
3177 esac
3178 case "$fn" in
3179 *+*) skip=true;;
3180 esac
3181 case "$fn" in
3182 *n*) none_ok=true;;
3183 esac
3184 case "$fn" in
3185 *e*) exp_file=true;;
3186 esac
3187 case "$fn" in
3188 *p*) nopath_ok=true;;
3189 esac
3190
3191 case "$fn" in
3192 *f*) type='File';;
3193 *d*) type='Directory';;
3194 *l*) type='Locate';;
3195 esac
3196
3197 what="$type"
3198 case "$what" in
3199 Locate) what='File';;
3200 esac
3201
3202 case "$exp_file" in
3203 '')
3204         case "$d_portable" in
3205         "$define") ;;
3206         *) exp_file=true;;
3207         esac
3208         ;;
3209 esac
3210
3211 cd ..
3212 while test "$type"; do
3213         redo=''
3214         rp="$orig_rp"
3215         dflt="$orig_dflt"
3216         case "$tilde" in
3217         true) rp="$rp (~name ok)";;
3218         esac
3219         . UU/myread
3220         if test -f UU/getfile.ok && \
3221                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3222         then
3223                 value="$ans"
3224                 ansexp="$ans"
3225                 break
3226         fi
3227         case "$ans" in
3228         none)
3229                 value=''
3230                 ansexp=''
3231                 case "$none_ok" in
3232                 true) type='';;
3233                 esac
3234                 ;;
3235         *)
3236                 case "$tilde" in
3237                 '') value="$ans"
3238                         ansexp="$ans";;
3239                 *)
3240                         value=`UU/filexp $ans`
3241                         case $? in
3242                         0)
3243                                 if test "$ans" != "$value"; then
3244                                         echo "(That expands to $value on this system.)"
3245                                 fi
3246                                 ;;
3247                         *) value="$ans";;
3248                         esac
3249                         ansexp="$value"
3250                         case "$exp_file" in
3251                         '') value="$ans";;
3252                         esac
3253                         ;;
3254                 esac
3255                 case "$fullpath" in
3256                 true)
3257                         case "$ansexp" in
3258                         /*) value="$ansexp" ;;
3259                         *)
3260                                 redo=true
3261                                 case "$already" in
3262                                 true)
3263                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3264                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3265                                         ;;
3266                                 *)
3267                                 echo "Please give a full path name, starting with slash." >&4
3268                                         case "$tilde" in
3269                                         true)
3270                                 echo "Note that using ~name is ok provided it expands well." >&4
3271                                                 already=true
3272                                                 ;;
3273                                         esac
3274                                 esac
3275                                 ;;
3276                         esac
3277                         ;;
3278                 esac
3279                 case "$redo" in
3280                 '')
3281                         case "$type" in
3282                         File)
3283                                 for fp in $gfpth; do
3284                                         if test "X$fp" = X.; then
3285                                             pf="$ansexp"
3286                                         else    
3287                                             pf="$fp/$ansexp"
3288                                         fi
3289                                         if test -f "$pf"; then
3290                                                 type=''
3291                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3292                                         then
3293                                                 echo "($value is not a plain file, but that's ok.)"
3294                                                 type=''
3295                                         fi
3296                                         if test X"$type" = X; then
3297                                             value="$pf"
3298                                             break
3299                                         fi
3300                                 done
3301                                 ;;
3302                         Directory)
3303                                 for fp in $gfpth; do
3304                                         if test "X$fp" = X.; then
3305                                             pf="$ansexp"
3306                                         else    
3307                                             pf="$fp/$ansexp"
3308                                         fi
3309                                         if test -d "$pf"; then
3310                                                 type=''
3311                                                 value="$pf"
3312                                                 break
3313                                         fi
3314                                 done
3315                                 ;;
3316                         Locate)
3317                                 if test -d "$ansexp"; then
3318                                         echo "(Looking for $loc_file in directory $value.)"
3319                                         value="$value/$loc_file"
3320                                         ansexp="$ansexp/$loc_file"
3321                                 fi
3322                                 if test -f "$ansexp"; then
3323                                         type=''
3324                                 fi
3325                                 case "$nopath_ok" in
3326                                 true)   case "$value" in
3327                                         */*) ;;
3328                                         *)      echo "Assuming $value will be in people's path."
3329                                                 type=''
3330                                                 ;;
3331                                         esac
3332                                         ;;
3333                                 esac
3334                                 ;;
3335                         esac
3336
3337                         case "$skip" in
3338                         true) type='';
3339                         esac
3340
3341                         case "$type" in
3342                         '') ;;
3343                         *)
3344                                 if test "$fastread" = yes; then
3345                                         dflt=y
3346                                 else
3347                                         dflt=n
3348                                 fi
3349                                 rp="$what $value doesn't exist.  Use that name anyway?"
3350                                 . UU/myread
3351                                 dflt=''
3352                                 case "$ans" in
3353                                 y*) type='';;
3354                                 *) echo " ";;
3355                                 esac
3356                                 ;;
3357                         esac
3358                         ;;
3359                 esac
3360                 ;;
3361         esac
3362 done
3363 cd UU
3364 ans="$value"
3365 rp="$orig_rp"
3366 dflt="$orig_dflt"
3367 rm -f getfile.ok
3368 test "X$gfpthkeep" != Xy && gfpth=""
3369 EOSC
3370
3371 : What should the include directory be ?
3372 echo " "
3373 $echo $n "Hmm...  $c"
3374 dflt='/usr/include'
3375 incpath=''
3376 mips_type=''
3377 if $test -f /bin/mips && /bin/mips; then
3378         echo "Looks like a MIPS system..."
3379         $cat >usr.c <<'EOCP'
3380 #ifdef SYSTYPE_BSD43
3381 /bsd43
3382 #endif
3383 EOCP
3384         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3385                 dflt='/bsd43/usr/include'
3386                 incpath='/bsd43'
3387                 mips_type='BSD 4.3'
3388         else
3389                 mips_type='System V'
3390         fi
3391         $rm -f usr.c usr.out
3392         echo "and you're compiling with the $mips_type compiler and libraries."
3393         xxx_prompt=y
3394         echo "exit 0" >mips
3395 else
3396         echo "Doesn't look like a MIPS system."
3397         xxx_prompt=n
3398         echo "exit 1" >mips
3399 fi
3400 chmod +x mips
3401 $eunicefix mips
3402 case "$usrinc" in
3403 '') ;;
3404 *) dflt="$usrinc";;
3405 esac
3406 case "$xxx_prompt" in
3407 y)      fn=d/
3408         echo " "
3409         rp='Where are the include files you want to use?'
3410         . ./getfile
3411         usrinc="$ans"
3412         ;;
3413 *)      usrinc="$dflt"
3414         ;;
3415 esac
3416
3417 : see how we invoke the C preprocessor
3418 echo " "
3419 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3420 cat <<'EOT' >testcpp.c
3421 #define ABC abc
3422 #define XYZ xyz
3423 ABC.XYZ
3424 EOT
3425 cd ..
3426 if test ! -f cppstdin; then
3427         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
3428                 # AIX cc -E doesn't show the absolute headerfile
3429                 # locations but we'll cheat by using the -M flag.
3430                 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
3431         else
3432                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3433         fi
3434 else
3435         echo "Keeping your $hint cppstdin wrapper."
3436 fi
3437 chmod 755 cppstdin
3438 wrapper=`pwd`/cppstdin
3439 ok='false'
3440 cd UU
3441
3442 if $test "X$cppstdin" != "X" && \
3443         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3444         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3445 then
3446         echo "You used to use $cppstdin $cppminus so we'll use that again."
3447         case "$cpprun" in
3448         '') echo "But let's see if we can live without a wrapper..." ;;
3449         *)
3450                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3451                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3452                 then
3453                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3454                         ok='true'
3455                 else
3456                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3457                 fi
3458                 ;;
3459         esac
3460 else
3461         case "$cppstdin" in
3462         '') ;;
3463         *)
3464                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3465                 ;;
3466         esac
3467 fi
3468
3469 if $ok; then
3470         : nothing
3471 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3472         $cc -E <testcpp.c >testcpp.out 2>&1; \
3473         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3474         echo "Yup, it does."
3475         x_cpp="$cc -E"
3476         x_minus='';
3477 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3478         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3479         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3480         echo "Yup, it does."
3481         x_cpp="$cc -E"
3482         x_minus='-';
3483 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3484         $cc -P <testcpp.c >testcpp.out 2>&1; \
3485         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3486         echo "Yipee, that works!"
3487         x_cpp="$cc -P"
3488         x_minus='';
3489 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3490         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3491         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3492         echo "At long last!"
3493         x_cpp="$cc -P"
3494         x_minus='-';
3495 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3496         $cpp <testcpp.c >testcpp.out 2>&1; \
3497         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3498         echo "It works!"
3499         x_cpp="$cpp"
3500         x_minus='';
3501 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3502         $cpp - <testcpp.c >testcpp.out 2>&1; \
3503         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3504         echo "Hooray, it works!  I was beginning to wonder."
3505         x_cpp="$cpp"
3506         x_minus='-';
3507 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3508         $wrapper <testcpp.c >testcpp.out 2>&1; \
3509         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3510         x_cpp="$wrapper"
3511         x_minus=''
3512         echo "Eureka!"
3513 else
3514         dflt=''
3515         rp="No dice.  I can't find a C preprocessor.  Name one:"
3516         . ./myread
3517         x_cpp="$ans"
3518         x_minus=''
3519         $x_cpp <testcpp.c >testcpp.out 2>&1
3520         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3521                 echo "OK, that will do." >&4
3522         else
3523 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3524                 exit 1
3525         fi
3526 fi
3527
3528 case "$ok" in
3529 false)
3530         cppstdin="$x_cpp"
3531         cppminus="$x_minus"
3532         cpprun="$x_cpp"
3533         cpplast="$x_minus"
3534         set X $x_cpp
3535         shift
3536         case "$1" in
3537         "$cpp")
3538                 echo "Perhaps can we force $cc -E using a wrapper..."
3539                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3540                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3541                 then
3542                         echo "Yup, we can."
3543                         cppstdin="$wrapper"
3544                         cppminus='';
3545                 else
3546                         echo "Nope, we'll have to live without it..."
3547                 fi
3548                 ;;
3549         esac
3550         case "$cpprun" in
3551         "$wrapper")
3552                 cpprun=''
3553                 cpplast=''
3554                 ;;
3555         esac
3556         ;;
3557 esac
3558
3559 case "$cppstdin" in
3560 "$wrapper"|'cppstdin') ;;
3561 *) $rm -f $wrapper;;
3562 esac
3563 $rm -f testcpp.c testcpp.out
3564
3565 : Set private lib path
3566 case "$plibpth" in
3567 '') if ./mips; then
3568                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3569         fi;;
3570 esac
3571 case "$libpth" in
3572 ' ') dlist='';;
3573 '') dlist="$loclibpth $plibpth $glibpth";;
3574 *) dlist="$libpth";;
3575 esac
3576
3577 : Now check and see which directories actually exist, avoiding duplicates
3578 libpth=''
3579 for xxx in $dlist
3580 do
3581     if $test -d $xxx; then
3582                 case " $libpth " in
3583                 *" $xxx "*) ;;
3584                 *) libpth="$libpth $xxx";;
3585                 esac
3586     fi
3587 done
3588 $cat <<'EOM'
3589
3590 Some systems have incompatible or broken versions of libraries.  Among
3591 the directories listed in the question below, please remove any you
3592 know not to be holding relevant libraries, and add any that are needed.
3593 Say "none" for none.
3594
3595 EOM
3596 case "$libpth" in
3597 '') dflt='none';;
3598 *)
3599         set X $libpth
3600         shift
3601         dflt=${1+"$@"}
3602         ;;
3603 esac
3604 rp="Directories to use for library searches?"
3605 . ./myread
3606 case "$ans" in
3607 none) libpth=' ';;
3608 *) libpth="$ans";;
3609 esac
3610
3611 : compute shared library extension
3612 case "$so" in
3613 '')
3614         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3615                 dflt='sl'
3616         else
3617                 dflt='so'
3618         fi
3619         ;;
3620 *) dflt="$so";;
3621 esac
3622 $cat <<EOM
3623
3624 On some systems, shared libraries may be available.  Answer 'none' if
3625 you want to suppress searching of shared libraries for the remainder
3626 of this configuration.
3627
3628 EOM
3629 rp='What is the file extension used for shared libraries?'
3630 . ./myread
3631 so="$ans"
3632
3633 : Define several unixisms.
3634 : Hints files or command line option can be used to override them.
3635 : The convoluted testing is in case hints files set either the old
3636 : or the new name.
3637 case "$_exe" in
3638 '')     case "$exe_ext" in
3639     '') ;;
3640         *)      _exe="$exe_ext" ;;
3641         esac
3642         ;;
3643 esac
3644 case "$_a" in
3645 '')     case "$lib_ext" in
3646     '') _a='.a';;
3647         *)      _a="$lib_ext" ;;
3648         esac
3649         ;;
3650 esac
3651 case "$_o" in
3652 '') case "$obj_ext" in
3653         '')     _o='.o';;
3654         *)      _o="$obj_ext";;
3655         esac
3656         ;;
3657 esac
3658 case "$p_" in
3659 '') case "$path_sep" in
3660         '')     p_=':';;
3661         *)      p_="$path_sep";;
3662         esac
3663         ;;
3664 esac
3665 exe_ext=$_exe
3666 lib_ext=$_a
3667 obj_ext=$_o
3668 path_sep=$p_
3669
3670 : Which makefile gets called first.  This is used by make depend.
3671 case "$firstmakefile" in
3672 '') firstmakefile='makefile';;
3673 esac
3674
3675 case "$usesocks" in
3676 $define|true|[yY]*)     dflt='y';;
3677 *) dflt='n';;
3678 esac
3679 cat <<EOM
3680
3681 Perl can be built to use the SOCKS proxy protocol library.  To do so,
3682 Configure must be run with -Dusesocks.
3683
3684 If this doesn't make any sense to you, just accept the default '$dflt'.
3685 EOM
3686 rp='Build Perl for SOCKS?'
3687 . ./myread
3688 case "$ans" in
3689 y|Y)    val="$define" ;;     
3690 *)      val="$undef" ;;
3691 esac
3692 set usesocks
3693 eval $setvar
3694
3695 : Looking for optional libraries
3696 echo " "
3697 echo "Checking for optional libraries..." >&4
3698 case "$libs" in
3699 ' '|'') dflt='';;
3700 *) dflt="$libs";;
3701 esac
3702 case "$libswanted" in
3703 '') libswanted='c_s';;
3704 esac
3705 case "$usesocks" in
3706 $define)
3707         libswanted="$libswanted socks5 socks5_sh"
3708         ;;
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) ccase "$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_