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