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