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