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