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