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