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