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