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