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