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