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