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