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