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