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