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