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