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