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