[inseparable changes from patch from perl5.003_17 to perl5.003_18]
[p5sagit/p5-mst-13.2.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # (Note: this Configure script was generated automatically. Rather than
15 # working with this copy of Configure, you may wish to get metaconfig.
16 # The dist-3.0 package (which contains metaconfig) was posted in
17 # comp.sources.misc so you may fetch it yourself from your nearest
18 # archive site. Check with Archie if you don't know where that can be.)
19 #
20
21 # $Id: Head.U,v 3.0.1.8 1995/07/25 13:40:02 ram Exp $
22 #
23 # Generated on Tue Dec 17 14:33:33 EST 1996 [metaconfig 3.0 PL60]
24
25 cat >/tmp/c1$$ <<EOF
26 ARGGGHHHH!!!!!
27
28 SCO csh still thinks true is false.  Write to SCO today and tell them that next
29 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
30
31 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
32 we'd have to do is go in and swap the && and || tokens, wherever they are.)
33
34 [End of diatribe. We now return you to your regularly scheduled programming...]
35 EOF
36 cat >/tmp/c2$$ <<EOF
37
38 OOPS!  You naughty creature!  You didn't run Configure with sh!
39 I will attempt to remedy the situation by running sh for you...
40 EOF
41
42 true || cat /tmp/c1$$ /tmp/c2$$
43 true || exec sh $0 $argv:q
44
45 (exit $?0) || cat /tmp/c2$$
46 (exit $?0) || exec sh $0 $argv:q
47 rm -f /tmp/c1$$ /tmp/c2$$
48
49 : compute my invocation name
50 me=$0
51 case "$0" in
52 */*)
53         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
54         test "$me" || me=$0
55         ;;
56 esac
57
58 : Proper PATH separator
59 p_=:
60 : On OS/2 this directory should exist if this is not floppy only system :-]
61 if test -d c:/. -a -n "$OS2_SHELL"; then
62         p_=\;
63         PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
64         OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
65 fi
66
67 : Proper PATH setting
68 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
69 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
70 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
71 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
72 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
73 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
74 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
75 paths="$paths /sbin /usr/sbin /usr/libexec"
76
77 for p in $paths
78 do
79         case "$p_$PATH$p_" in
80         *$p_$p$p_*) ;;
81         *) test -d $p && PATH=$PATH$p_$p ;;
82         esac
83 done
84
85 PATH=.$p_$PATH
86 export PATH
87
88 : Sanity checks
89 if test ! -t 0; then
90         echo "Say 'sh $me', not 'sh <$me'"
91         exit 1
92 fi
93
94 : On HP-UX, large Configure scripts may exercise a bug in /bin/sh
95 if test -f /hp-ux -a -f /bin/ksh; then
96         if (PATH=.; alias -x) >/dev/null 2>&1; then
97                 : already under /bin/ksh
98         else
99                 cat <<'EOM'
100 (Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
101 EOM
102                 unset ENV
103                 exec /bin/ksh $0 "$@"
104         fi
105 else
106         : Warn them if they use ksh on other systems
107         (PATH=.; alias -x) >/dev/null 2>&1 && \
108                 cat <<EOM
109 (I see you are using the Korn shell.  Some ksh's blow up on $me,
110 especially on older exotic systems.  If yours does, try the Bourne 
111 shell instead.)
112 EOM
113 fi
114
115 : Configure runs within the UU subdirectory
116 test -d UU || mkdir UU
117 cd UU && rm -f ./*
118
119 dynamic_ext=''
120 extensions=''
121 known_extensions=''
122 static_ext=''
123 useopcode=''
124 useposix=''
125 d_bsd=''
126 d_eunice=''
127 d_xenix=''
128 eunicefix=''
129 Mcc=''
130 awk=''
131 bash=''
132 bison=''
133 byacc=''
134 cat=''
135 chgrp=''
136 chmod=''
137 chown=''
138 comm=''
139 compress=''
140 cp=''
141 cpio=''
142 cpp=''
143 csh=''
144 date=''
145 echo=''
146 egrep=''
147 emacs=''
148 expr=''
149 find=''
150 flex=''
151 gcc=''
152 grep=''
153 gzip=''
154 inews=''
155 ksh=''
156 less=''
157 line=''
158 lint=''
159 ln=''
160 lp=''
161 lpr=''
162 ls=''
163 mail=''
164 mailx=''
165 mkdir=''
166 more=''
167 mv=''
168 nroff=''
169 perl=''
170 pg=''
171 pmake=''
172 pr=''
173 rm=''
174 rmail=''
175 sed=''
176 sendmail=''
177 shar=''
178 sleep=''
179 smail=''
180 sort=''
181 submit=''
182 tail=''
183 tar=''
184 tbl=''
185 test=''
186 touch=''
187 tr=''
188 troff=''
189 uname=''
190 uniq=''
191 uuname=''
192 vi=''
193 zcat=''
194 zip=''
195 full_sed=''
196 libswanted=''
197 hint=''
198 myuname=''
199 osname=''
200 osvers=''
201 Author=''
202 Date=''
203 Header=''
204 Id=''
205 Locker=''
206 Log=''
207 RCSfile=''
208 Revision=''
209 Source=''
210 State=''
211 ar=''
212 archobjs=''
213 exe_ext=''
214 firstmakefile=''
215 lib_ext=''
216 obj_ext=''
217 path_sep=''
218 afs=''
219 alignbytes=''
220 archlib=''
221 archlibexp=''
222 d_archlib=''
223 installarchlib=''
224 archname=''
225 myarchname=''
226 baserev=''
227 bin=''
228 binexp=''
229 installbin=''
230 bincompat3=''
231 d_bincompat3=''
232 byteorder=''
233 cc=''
234 gccversion=''
235 ccflags=''
236 cppflags=''
237 ldflags=''
238 lkflags=''
239 locincpth=''
240 optimize=''
241 cf_email=''
242 cf_by=''
243 cf_time=''
244 contains=''
245 cpp_stuff=''
246 cpplast=''
247 cppminus=''
248 cpprun=''
249 cppstdin=''
250 d_access=''
251 d_alarm=''
252 d_attribut=''
253 d_bcmp=''
254 d_bcopy=''
255 d_bzero=''
256 d_casti32=''
257 castflags=''
258 d_castneg=''
259 d_chown=''
260 d_chroot=''
261 d_chsize=''
262 d_closedir=''
263 d_void_closedir=''
264 d_const=''
265 cryptlib=''
266 d_crypt=''
267 d_csh=''
268 full_csh=''
269 d_cuserid=''
270 d_dbl_dig=''
271 d_difftime=''
272 d_dlerror=''
273 d_dlopen=''
274 d_dlsymun=''
275 d_dosuid=''
276 d_suidsafe=''
277 d_dup2=''
278 d_fchmod=''
279 d_fchown=''
280 d_fcntl=''
281 d_fd_macros=''
282 d_fd_set=''
283 d_fds_bits=''
284 d_fgetpos=''
285 d_flexfnam=''
286 d_flock=''
287 d_fork=''
288 d_fsetpos=''
289 d_ftime=''
290 d_gettimeod=''
291 d_Gconvert=''
292 d_getgrps=''
293 d_gethent=''
294 aphostname=''
295 d_gethname=''
296 d_phostname=''
297 d_uname=''
298 d_getlogin=''
299 d_getpgid=''
300 d_getpgrp2=''
301 d_bsdgetpgrp=''
302 d_getpgrp=''
303 d_getppid=''
304 d_getprior=''
305 d_gnulibc=''
306 d_htonl=''
307 d_inetaton=''
308 d_isascii=''
309 d_killpg=''
310 d_link=''
311 d_locconv=''
312 d_lockf=''
313 d_lstat=''
314 d_mblen=''
315 d_mbstowcs=''
316 d_mbtowc=''
317 d_memcmp=''
318 d_memcpy=''
319 d_memmove=''
320 d_memset=''
321 d_mkdir=''
322 d_mkfifo=''
323 d_mktime=''
324 d_msg=''
325 d_msgctl=''
326 d_msgget=''
327 d_msgrcv=''
328 d_msgsnd=''
329 d_nice=''
330 d_open3=''
331 d_fpathconf=''
332 d_pathconf=''
333 d_pause=''
334 d_pipe=''
335 d_poll=''
336 d_portable=''
337 d_readdir=''
338 d_rewinddir=''
339 d_seekdir=''
340 d_telldir=''
341 d_readlink=''
342 d_rename=''
343 d_rmdir=''
344 d_safebcpy=''
345 d_safemcpy=''
346 d_sanemcmp=''
347 d_select=''
348 d_sem=''
349 d_semctl=''
350 d_semget=''
351 d_semop=''
352 d_setegid=''
353 d_seteuid=''
354 d_setlinebuf=''
355 d_setlocale=''
356 d_setpgid=''
357 d_setpgrp2=''
358 d_bsdpgrp=''
359 d_bsdsetpgrp=''
360 d_setpgrp=''
361 d_setprior=''
362 d_setregid=''
363 d_setresgid=''
364 d_setresuid=''
365 d_setreuid=''
366 d_setrgid=''
367 d_setruid=''
368 d_setsid=''
369 d_sfio=''
370 usesfio=''
371 d_shm=''
372 d_shmat=''
373 d_shmatprototype=''
374 shmattype=''
375 d_shmctl=''
376 d_shmdt=''
377 d_shmget=''
378 d_sigaction=''
379 d_sigsetjmp=''
380 d_oldsock=''
381 d_socket=''
382 d_sockpair=''
383 sockethdr=''
384 socketlib=''
385 d_statblks=''
386 d_stdio_cnt_lval=''
387 d_stdio_ptr_lval=''
388 d_stdiobase=''
389 d_stdstdio=''
390 stdio_base=''
391 stdio_bufsiz=''
392 stdio_cnt=''
393 stdio_filbuf=''
394 stdio_ptr=''
395 d_index=''
396 d_strchr=''
397 d_strcoll=''
398 d_strctcpy=''
399 d_strerrm=''
400 d_strerror=''
401 d_sysernlst=''
402 d_syserrlst=''
403 d_strtod=''
404 d_strtol=''
405 d_strtoul=''
406 d_strxfrm=''
407 d_symlink=''
408 d_syscall=''
409 d_sysconf=''
410 d_system=''
411 d_tcgetpgrp=''
412 d_tcsetpgrp=''
413 d_time=''
414 timetype=''
415 clocktype=''
416 d_times=''
417 d_truncate=''
418 d_tzname=''
419 d_umask=''
420 d_vfork=''
421 usevfork=''
422 d_voidsig=''
423 signal_t=''
424 d_volatile=''
425 d_charvspr=''
426 d_vprintf=''
427 d_wait4=''
428 d_waitpid=''
429 d_wcstombs=''
430 d_wctomb=''
431 dlext=''
432 cccdlflags=''
433 ccdlflags=''
434 dlsrc=''
435 ld=''
436 lddlflags=''
437 usedl=''
438 fpostype=''
439 gidtype=''
440 groupstype=''
441 h_fcntl=''
442 h_sysfile=''
443 db_hashtype=''
444 db_prefixtype=''
445 i_db=''
446 i_dbm=''
447 i_rpcsvcdbm=''
448 d_dirnamlen=''
449 direntrytype=''
450 i_dirent=''
451 i_dld=''
452 i_dlfcn=''
453 i_fcntl=''
454 i_float=''
455 i_gdbm=''
456 i_grp=''
457 i_limits=''
458 i_locale=''
459 i_malloc=''
460 i_math=''
461 i_memory=''
462 i_ndbm=''
463 i_neterrno=''
464 i_niin=''
465 i_sysin=''
466 d_pwage=''
467 d_pwchange=''
468 d_pwclass=''
469 d_pwcomment=''
470 d_pwexpire=''
471 d_pwquota=''
472 i_pwd=''
473 i_sfio=''
474 i_stddef=''
475 i_stdlib=''
476 i_string=''
477 strings=''
478 i_sysdir=''
479 i_sysfile=''
480 d_voidtty=''
481 i_bsdioctl=''
482 i_sysfilio=''
483 i_sysioctl=''
484 i_syssockio=''
485 i_sysndir=''
486 i_sysparam=''
487 i_sysresrc=''
488 i_sysselct=''
489 i_sysstat=''
490 i_systimes=''
491 i_systypes=''
492 i_sysun=''
493 i_syswait=''
494 i_sgtty=''
495 i_termio=''
496 i_termios=''
497 i_systime=''
498 i_systimek=''
499 i_time=''
500 timeincl=''
501 i_unistd=''
502 i_utime=''
503 i_values=''
504 i_stdarg=''
505 i_varargs=''
506 i_varhdr=''
507 i_vfork=''
508 intsize=''
509 libc=''
510 libperl=''
511 shrpenv=''
512 useshrplib=''
513 glibpth=''
514 libpth=''
515 loclibpth=''
516 plibpth=''
517 xlibpth=''
518 libs=''
519 lns=''
520 lseektype=''
521 make=''
522 make_set_make=''
523 d_mymalloc=''
524 freetype=''
525 mallocobj=''
526 mallocsrc=''
527 malloctype=''
528 usemymalloc=''
529 installman1dir=''
530 man1dir=''
531 man1direxp=''
532 man1ext=''
533 installman3dir=''
534 man3dir=''
535 man3direxp=''
536 man3ext=''
537 huge=''
538 large=''
539 medium=''
540 models=''
541 small=''
542 split=''
543 modetype=''
544 mydomain=''
545 myhostname=''
546 phostname=''
547 c=''
548 n=''
549 d_eofnblk=''
550 eagain=''
551 o_nonblock=''
552 rd_nodata=''
553 groupcat=''
554 hostcat=''
555 passcat=''
556 d_oldarchlib=''
557 oldarchlib=''
558 oldarchlibexp=''
559 orderlib=''
560 ranlib=''
561 package=''
562 spackage=''
563 pager=''
564 patchlevel=''
565 subversion=''
566 perladmin=''
567 perlpath=''
568 prefix=''
569 prefixexp=''
570 installprivlib=''
571 privlib=''
572 privlibexp=''
573 prototype=''
574 randbits=''
575 installscript=''
576 scriptdir=''
577 scriptdirexp=''
578 selecttype=''
579 sh=''
580 sig_name=''
581 sig_num=''
582 installsitearch=''
583 sitearch=''
584 sitearchexp=''
585 installsitelib=''
586 sitelib=''
587 sitelibexp=''
588 sizetype=''
589 so=''
590 sharpbang=''
591 shsharp=''
592 spitshell=''
593 ssizetype=''
594 startperl=''
595 startsh=''
596 stdchar=''
597 sysman=''
598 uidtype=''
599 nm_opt=''
600 nm_so_opt=''
601 runnm=''
602 usenm=''
603 useperlio=''
604 incpath=''
605 mips=''
606 mips_type=''
607 usrinc=''
608 defvoidused=''
609 voidflags=''
610 CONFIG=''
611
612 define='define'
613 undef='undef'
614 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
615 rmlist=''
616
617 : We must find out about Eunice early
618 eunicefix=':'
619 if test -f /etc/unixtovms; then
620         eunicefix=/etc/unixtovms
621 fi
622 if test -f /etc/unixtovms.exe; then
623         eunicefix=/etc/unixtovms.exe
624 fi
625
626 : list of known cpp symbols, sorted alphabetically
627 al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
628 al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
629 al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
630 al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
631 al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
632 al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
633 al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
634 al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
635 al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
636 al="$al VMS Xenix286"
637 al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
638 al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
639 al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
640 al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
641 al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
642 al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
643 al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
644 al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
645 al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
646 al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
647 al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
648 al="$al __SVR4_2__ __UMAXV__"
649 al="$al ____386BSD____ __alpha __alpha__ __amiga"
650 al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
651 al="$al __host_mips__"
652 al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
653 al="$al __hp9000s500 __hp9000s700 __hp9000s800"
654 al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
655 al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
656 al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
657 al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
658 al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
659 al="$al __mc88100 __mc88100__ __mips __mips__"
660 al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
661 al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
662 al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
663 al="$al _host_mips _mips _unix"
664 al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
665 al="$al apollo ardent att386 att3b"
666 al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
667 al="$al cadmus clipper concurrent convex cray ctix"
668 al="$al dmert encore gcos gcx gimpel gould"
669 al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
670 al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
671 al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
672 al="$al i186 i286 i386 i486 i8086"
673 al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
674 al="$al ksr1 linux luna luna88k m68k m88100 m88k"
675 al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
676 al="$al mc68040 mc68060 mc68k mc68k32 mc700"
677 al="$al mc88000 mc88100 merlin mert mips mvs n16"
678 al="$al ncl_el ncl_mr"
679 al="$al news1500 news1700 news1800 news1900 news3700"
680 al="$al news700 news800 news900 ns16000 ns32000"
681 al="$al ns32016 ns32332 ns32k nsc32000 os osf"
682 al="$al parisc pc532 pdp11 plexus posix pyr"
683 al="$al riscix riscos scs sequent sgi sinix sony sony_news"
684 al="$al sonyrisc sparc sparclite spectrum stardent stratos"
685 al="$al sun sun3 sun386 svr4 sysV68 sysV88"
686 al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
687 al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
688 al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
689 al="$al xenix z8000"
690
691 groupstype=''
692 i_whoami=''
693 : default library list
694 libswanted=''
695 : set useposix=false in your hint file to disable the POSIX extension.
696 useposix=true
697 : set useopcode=false in your hint file to disable the Opcode extension.
698 useopcode=true
699 : Define several unixisms.  These can be used in hint files.
700 exe_ext='' 
701 : Extra object files, if any, needed on this platform.
702 archobjs=''
703 : Possible local include directories to search.
704 : Set locincpth to "" in a hint file to defeat local include searches.
705 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
706 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
707 :
708 : no include file wanted by default
709 inclwanted=''
710
711 : change the next line if compiling for Xenix/286 on Xenix/386
712 xlibpth='/usr/lib/386 /lib/386'
713
714 : Possible local library directories to search.
715 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
716 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
717
718 : general looking path for locating libraries
719 glibpth="/shlib /usr/shlib /lib/pa1.1 /usr/lib/large"
720 glibpth="$glibpth /lib /usr/lib $xlibpth"
721 glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
722 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
723
724 : Private path used by Configure to find libraries.  Its value
725 : is prepended to libpth. This variable takes care of special
726 : machines, like the mips.  Usually, it should be empty.
727 plibpth=''
728
729 : full support for void wanted by default
730 defvoidused=15
731
732 : List of libraries we want.
733 libswanted='sfio net socket inet nsl nm ndbm gdbm dbm db malloc dl'
734 libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
735 libswanted="$libswanted ucb bsd BSD PW x"
736 : We probably want to search /usr/shlib before most other libraries.
737 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
738 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
739 glibpth="/usr/shlib $glibpth"
740 : Do not use vfork unless overridden by a hint file.
741 usevfork=false
742
743 : Find the basic shell for Bourne shell scripts
744 case "$sh" in
745 '')
746         : SYSTYPE is for some older MIPS systems. 
747         : I do not know if it is still needed.
748         case "$SYSTYPE" in
749         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
750         *) xxx='/bin/sh';;
751         esac
752         if test -f "$xxx"; then
753                 sh="$xxx"
754         else
755                 : Build up a list and do a single loop so we can 'break' out.
756                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
757                 for xxx in sh bash ksh pdksh ash; do
758                         for p in $pth; do
759                                 try="$try ${p}/${xxx}"
760                         done
761                 done
762                 for xxx in $try; do
763                         if test -f "$xxx"; then
764                                 sh="$xxx";
765                                 echo "Your Bourne shell appears to be in $sh."
766                                 break
767                         elif test -f "$xxx.exe"; then
768                                 sh="$xxx";
769                                 echo "Hmm.  Your Bourne shell appears to be in $sh."
770                                 break
771                         fi
772                 done
773         fi
774         ;;
775 esac
776
777 case "$sh" in
778 '')     cat <<EOM >&2
779 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
780 Usually it's in /bin/sh.  How did you even get this far?
781 Please contact me (Chip Salzenberg) at chip@atlantic.net and 
782 we'll try to straigten this all out.
783 EOM
784         exit 1
785         ;;
786 esac
787
788 : see if sh knows # comments
789 if `$sh -c '#' >/dev/null 2>&1`; then
790         shsharp=true
791         spitshell=cat
792         echo " "
793         xcat=/bin/cat
794         test -f $xcat || xcat=/usr/bin/cat
795         echo "#!$xcat" >try
796         $eunicefix try
797         chmod +x try
798         ./try > today
799         if test -s today; then
800                 sharpbang='#!'
801         else
802                 echo "#! $xcat" > try
803                 $eunicefix try
804                 chmod +x try
805                 ./try > today
806                 if test -s today; then
807                         sharpbang='#! '
808                 else
809                         echo "Okay, let's see if #! works on this system..."
810                         echo "It's just a comment."
811                         sharpbang=': use '
812                 fi
813         fi
814 else
815         echo "Your $sh doesn't grok # comments--I will strip them later on."
816         shsharp=false
817         cd ..
818         echo "exec grep -v '^[  ]*#'" >spitshell
819         chmod +x spitshell
820         $eunicefix spitshell
821         spitshell=`pwd`/spitshell
822         cd UU
823         echo "I presume that if # doesn't work, #! won't work either!"
824         sharpbang=': use '
825 fi
826 rm -f try today
827
828 : figure out how to guarantee sh startup
829 case "$startsh" in
830 '') startsh=${sharpbang}${sh} ;;
831 *)
832 esac
833 cat >try <<EOSS
834 $startsh
835 set abc
836 test "$?abc" != 1
837 EOSS
838
839 chmod +x try
840 $eunicefix try
841 if ./try; then
842         : echo "Yup, it does."
843 else
844         echo "Hmm.  '$startsh' didn't work."
845         echo "You may have to fix up the shell scripts to make sure sh runs them."
846 fi
847 rm -f try
848
849 : script used to extract .SH files with variable substitutions
850 cat >extract <<EOS
851 $startsh
852 EOS
853 cat >>extract <<'EOS'
854 CONFIG=true
855 echo "Doing variable substitutions on .SH files..."
856 if test -f MANIFEST; then
857         shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
858         : Pick up possible extension manifests.
859         for dir in ext/* ; do
860                 if test -f $dir/MANIFEST; then
861                         xxx=`awk '{print $1}' < $dir/MANIFEST | 
862                                 sed -n "/\.SH$/ s@^@$dir/@p"`
863                         shlist="$shlist $xxx"
864                 fi
865         done
866         set x $shlist
867 else
868         echo "(Looking for .SH files under the current directory.)"
869         set x `find . -name "*.SH" -print`
870 fi
871 shift
872 case $# in
873 0) set x *.SH; shift;;
874 esac
875 if test ! -f $1; then
876         shift
877 fi
878 for file in $*; do
879         case "$file" in
880         */*)
881                 dir=`expr X$file : 'X\(.*\)/'`
882                 file=`expr X$file : 'X.*/\(.*\)'`
883                 (cd $dir && . ./$file)
884                 ;;
885         *)
886                 . ./$file
887                 ;;
888         esac
889 done
890 if test -f config_h.SH; then
891         if test ! -f config.h; then
892         : oops, they left it out of MANIFEST, probably, so do it anyway.
893         . ./config_h.SH
894         fi
895 fi
896 EOS
897
898 : produce awk script to parse command line options
899 cat >options.awk <<'EOF'
900 BEGIN {
901         optstr = "dD:eEf:hKOrsSU:V";    # getopt-style specification
902
903         len = length(optstr);
904         for (i = 1; i <= len; i++) {
905                 c = substr(optstr, i, 1);
906                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
907                 if (a == ":") {
908                         arg[c] = 1;
909                         i++;
910                 }
911                 opt[c] = 1;
912         }
913 }
914 {
915         expect = 0;
916         str = $0;
917         if (substr(str, 1, 1) != "-") {
918                 printf("'%s'\n", str);
919                 next;
920         }
921         len = length($0);
922         for (i = 2; i <= len; i++) {
923                 c = substr(str, i, 1);
924                 if (!opt[c]) {
925                         printf("-%s\n", substr(str, i));
926                         next;
927                 }
928                 printf("-%s\n", c);
929                 if (arg[c]) {
930                         if (i < len)
931                                 printf("'%s'\n", substr(str, i + 1));
932                         else
933                                 expect = 1;
934                         next;
935                 }
936         }
937 }
938 END {
939         if (expect)
940                 print "?";
941 }
942 EOF
943
944 : process the command line options
945 set X `for arg in "$@"; do echo "X$arg"; done |
946         sed -e s/X// | awk -f options.awk`
947 eval "set $*"
948 shift
949 rm -f options.awk
950
951 : set up default values
952 fastread=''
953 reuseval=false
954 config_sh=''
955 alldone=''
956 error=''
957 silent=''
958 extractsh=''
959 override=''
960 knowitall=''
961 rm -f optdef.sh
962
963 : option parsing
964 while test $# -gt 0; do
965         case "$1" in
966         -d) shift; fastread=yes;;
967         -e) shift; alldone=cont;;
968         -f)
969                 shift
970                 cd ..
971                 if test -r "$1"; then
972                         config_sh="$1"
973                 else
974                         echo "$me: cannot read config file $1." >&2
975                         error=true
976                 fi
977                 cd UU
978                 shift;;
979         -h) shift; error=true;;
980         -r) shift; reuseval=true;;
981         -s) shift; silent=true;;
982         -E) shift; alldone=exit;;
983         -K) shift; knowitall=true;;
984         -O) shift; override=true;;
985         -S) shift; extractsh=true;;
986         -D)
987                 shift
988                 case "$1" in
989                 *=)
990                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
991                         echo "$me: ignoring -D $1" >&2
992                         ;;
993                 *=*) echo "$1" | \
994                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
995                 *) echo "$1='define'" >> optdef.sh;;
996                 esac
997                 shift
998                 ;;
999         -U)
1000                 shift
1001                 case "$1" in
1002                 *=) echo "$1" >> optdef.sh;;
1003                 *=*)
1004                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1005                         echo "$me: ignoring -U $1" >&2
1006                         ;;
1007                 *) echo "$1='undef'" >> optdef.sh;;
1008                 esac
1009                 shift
1010                 ;;
1011         -V) echo "$me generated by metaconfig 3.0 PL60." >&2
1012                 exit 0;;
1013         --) break;;
1014         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1015         *) break;;
1016         esac
1017 done
1018
1019 case "$error" in
1020 true)
1021         cat >&2 <<EOM
1022 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1023                  [-U symbol] [-U symbol=]
1024   -d : use defaults for all answers.
1025   -e : go on without questioning past the production of config.sh.
1026   -f : specify an alternate default configuration file.
1027   -h : print this help message and exit (with an error status).
1028   -r : reuse C symbols value if possible (skips costly nm extraction).
1029   -s : silent mode, only echoes questions and essential information.
1030   -D : define symbol to have some value:
1031          -D symbol         symbol gets the value 'define'
1032          -D symbol=value   symbol gets the value 'value'
1033   -E : stop at the end of questions, after having produced config.sh.
1034   -K : do not use unless you know what you are doing.
1035   -O : let -D and -U override definitions from loaded configuration file.
1036   -S : perform variable substitutions on all .SH files (can mix with -f)
1037   -U : undefine symbol:
1038          -U symbol    symbol gets the value 'undef'
1039          -U symbol=   symbol gets completely empty
1040   -V : print version number and exit (with a zero status).
1041 EOM
1042         exit 1
1043         ;;
1044 esac
1045
1046 exec 4>&1
1047 case "$silent" in
1048 true) exec 1>/dev/null;;
1049 esac
1050
1051 : run the defines and the undefines, if any, but leave the file out there...
1052 touch optdef.sh
1053 . ./optdef.sh
1054
1055 case "$extractsh" in
1056 true)
1057         case "$config_sh" in
1058         '') config_sh='config.sh'; config='./config.sh';;
1059         /*) config="$config_sh";;
1060         *) config="./$config_sh";;
1061         esac
1062         echo " "
1063         echo "Fetching answers from $config_sh..."
1064         cd ..
1065         . $config
1066         test "$override" && . ./optdef.sh
1067         echo " "
1068         . ./UU/extract
1069         rm -rf UU
1070         echo "Done."
1071         exit 0
1072         ;;
1073 esac
1074
1075 : set package name
1076 package=perl5
1077 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1078 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1079 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1080 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1081 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1082 esac
1083
1084 : Eunice requires " " instead of "", can you believe it
1085 echo " "
1086 : Here we go...
1087 echo "Beginning of configuration questions for $package."
1088
1089 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1090
1091 : Some greps do not return status, grrr.
1092 echo "grimblepritz" >grimble
1093 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1094         contains=contains
1095 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1096         contains=grep
1097 else
1098         contains=contains
1099 fi
1100 rm -f grimble
1101 : the following should work in any shell
1102 case "$contains" in
1103 contains*)
1104         echo " "
1105         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1106         cat >contains <<'EOSS'
1107 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1108 EOSS
1109 chmod +x contains
1110 esac
1111
1112 : first determine how to suppress newline on echo command
1113 echo " "
1114 echo "Checking echo to see how to suppress newlines..."
1115 (echo "hi there\c" ; echo " ") >.echotmp
1116 if $contains c .echotmp >/dev/null 2>&1 ; then
1117         echo "...using -n."
1118         n='-n'
1119         c=''
1120 else
1121         cat <<'EOM'
1122 ...using \c
1123 EOM
1124         n=''
1125         c='\c'
1126 fi
1127 echo $n "The star should be here-->$c"
1128 echo '*'
1129 rm -f .echotmp
1130
1131 : Now test for existence of everything in MANIFEST
1132 echo " "
1133 if test -f ../MANIFEST; then
1134         echo "First let's make sure your kit is complete.  Checking..." >&4
1135         awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
1136         rm -f missing
1137         for filelist in x??; do
1138                 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
1139         done
1140         if test -s missing; then
1141                 cat missing >&4
1142                 cat >&4 <<'EOM'
1143
1144 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1145
1146 You have the option of continuing the configuration process, despite the
1147 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1148 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1149 and contact the author (chip@atlantic.net).
1150
1151 EOM
1152                 echo $n "Continue? [n] $c" >&4
1153                 read ans
1154                 case "$ans" in
1155                 y*)
1156                         echo "Continuing..." >&4
1157                         rm -f missing
1158                         ;;
1159                 *)
1160                         echo "ABORTING..." >&4
1161                         kill $$
1162                         ;;
1163                 esac
1164         else
1165                 echo "Looks good..." >&4
1166         fi
1167 else
1168         echo "There is no MANIFEST file.  I hope your kit is complete !"
1169 fi
1170 rm -f missing x??
1171
1172 : compute the number of columns on the terminal for proper question formatting
1173 case "$COLUMNS" in
1174 '') COLUMNS='80';;
1175 esac
1176
1177 : set up the echo used in my read
1178 myecho="case \"\$xxxm\" in
1179 '') echo $n \"\$rp $c\" >&4;;
1180 *) case \"\$rp\" in
1181         '') echo $n \"[\$xxxm] $c\";;
1182         *)
1183                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
1184                         echo \"\$rp\" >&4
1185                         echo $n \"[\$xxxm] $c\" >&4
1186                 else
1187                         echo $n \"\$rp [\$xxxm] $c\" >&4
1188                 fi
1189                 ;;
1190         esac;;
1191 esac"
1192
1193 : now set up to do reads with possible shell escape and default assignment
1194 cat <<EOSC >myread
1195 xxxm=\$dflt
1196 $myecho
1197 ans='!'
1198 case "\$fastread" in
1199 yes) case "\$dflt" in
1200         '') ;;
1201         *) ans='';
1202                 case "\$silent-\$rp" in
1203                 true-) ;;
1204                 *) echo " " >&4;;
1205                 esac;;
1206         esac;;
1207 *) case "\$silent" in
1208         true) case "\$rp" in
1209                 '') ans='';;
1210                 esac;;
1211         esac;;
1212 esac
1213 while expr "X\$ans" : "X!" >/dev/null; do
1214         read answ
1215         set x \$xxxm
1216         shift
1217         aok=''; eval "ans=\"\$answ\"" && aok=y
1218         case  "\$answ" in
1219         "\$ans")
1220                 case "\$ans" in
1221                 \\&*)
1222                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1223                         shift
1224                         case "\$1" in
1225                         -d)
1226                                 fastread=yes
1227                                 echo "(OK, I'll run with -d after this question.)" >&4
1228                                 ;;
1229                         -*)
1230                                 echo "*** Sorry, \$1 not supported yet." >&4
1231                                 ;;
1232                         esac
1233                         $myecho
1234                         ans=!
1235                         ;;
1236                 "!")
1237                         sh 1>&4
1238                         echo " "
1239                         $myecho
1240                         ;;
1241                 !*)
1242                         set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1243                         shift
1244                         sh 1>&4 -c "\$*"
1245                         echo " "
1246                         $myecho
1247                         ;;
1248                 esac;;
1249         *)
1250                 case "\$aok" in
1251                 y)
1252                         echo "*** Substitution done -- please confirm."
1253                         xxxm="\$ans"
1254                         ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1255                         xxxm="\$ans"
1256                         ans=!
1257                         ;;
1258                 *)
1259                         echo "*** Error -- try again."
1260                         ans=!
1261                         ;;
1262                 esac
1263                 $myecho
1264                 ;;
1265         esac
1266         case "\$ans\$xxxm\$nostick" in
1267         '')
1268                 ans=!
1269                 $myecho
1270                 ;;
1271         esac
1272 done
1273 case "\$ans" in
1274 '') ans="\$xxxm";;
1275 esac
1276 EOSC
1277
1278 : create .config dir to save info across Configure sessions
1279 test -d ../.config || mkdir ../.config
1280 cat >../.config/README <<EOF
1281 This directory created by Configure to save information that should
1282 persist across sessions.
1283
1284 You may safely delete it if you wish.
1285 EOF
1286
1287 : general instructions
1288 needman=true
1289 firsttime=true
1290 user=`(logname) 2>/dev/null`
1291 case "$user" in "")
1292         user=`whoami 2>&1` ;;
1293 esac
1294 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1295         firsttime=false
1296         echo " "
1297         rp='Would you like to see the instructions?'
1298         dflt=n
1299         . ./myread
1300         case "$ans" in
1301         [yY]*) ;;
1302         *) needman=false;;
1303         esac
1304 fi
1305 if $needman; then
1306         cat <<EOH
1307  
1308 This installation shell script will examine your system and ask you questions
1309 to determine how the perl5 package should be installed. If you get
1310 stuck on a question, you may use a ! shell escape to start a subshell or
1311 execute a command.  Many of the questions will have default answers in square
1312 brackets; typing carriage return will give you the default.
1313
1314 On some of the questions which ask for file or directory names you are allowed
1315 to use the ~name construct to specify the login directory belonging to "name",
1316 even if you don't have a shell which knows about that.  Questions where this is
1317 allowed will be marked "(~name ok)".
1318
1319 EOH
1320         rp=''
1321         dflt='Type carriage return to continue'
1322         . ./myread
1323         cat <<'EOH'
1324
1325 The prompter used in this script allows you to use shell variables and
1326 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
1327 in the default answer, as if the default line was a set of arguments given to a
1328 script shell.  This means you may also use $* to repeat the whole default line,
1329 so you do not have to re-type everything to add something to the default.
1330
1331 Everytime there is a substitution, you will have to confirm.  If there is an
1332 error (e.g. an unmatched backtick), the default answer will remain unchanged
1333 and you will be prompted again.
1334
1335 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
1336 the questions and use the computed defaults (or the previous answers if there
1337 was already a config.sh file). Type 'Configure -h' for a list of options.
1338 You may also start interactively and then answer '& -d' at any prompt to turn
1339 on the non-interactive behaviour for the remaining of the execution.
1340
1341 EOH
1342         . ./myread
1343         cat <<EOH
1344
1345 Much effort has been expended to ensure that this shell script will run on any
1346 Unix system.  If despite that it blows up on yours, your best bet is to edit
1347 Configure and run it again.  If you can't run Configure for some reason,
1348 you'll have to generate a config.sh file by hand.  Whatever problems you
1349 have, let me (chip@atlantic.net) know how I blew it.
1350
1351 This installation script affects things in two ways:
1352
1353 1) it may do direct variable substitutions on some of the files included
1354    in this kit.
1355 2) it builds a config.h file for inclusion in C programs.  You may edit
1356    any of these files as the need arises after running this script.
1357
1358 If you make a mistake on a question, there is no easy way to back up to it
1359 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
1360 files.  Configure will offer to let you do this before it runs the SH files.
1361
1362 EOH
1363         dflt='Type carriage return to continue'
1364         . ./myread
1365         case "$firsttime" in
1366         true) echo $user >>../.config/instruct;;
1367         esac
1368 fi
1369
1370 : find out where common programs are
1371 echo " "
1372 echo "Locating common programs..." >&4
1373 cat <<EOSC >loc
1374 $startsh
1375 case \$# in
1376 0) exit 1;;
1377 esac
1378 thing=\$1
1379 shift
1380 dflt=\$1
1381 shift
1382 for dir in \$*; do
1383         case "\$thing" in
1384         .)
1385         if test -d \$dir/\$thing; then
1386                 echo \$dir
1387                 exit 0
1388         fi
1389         ;;
1390         *)
1391         for thisthing in \$dir/\$thing; do
1392                 : just loop through to pick last item
1393         done
1394         if test -f \$thisthing; then
1395                 echo \$thisthing
1396                 exit 0
1397         elif test -f \$dir/\$thing.exe; then
1398                 : on Eunice apparently
1399                 echo \$dir/\$thing
1400                 exit 0
1401         fi
1402         ;;
1403         esac
1404 done
1405 echo \$dflt
1406 exit 1
1407 EOSC
1408 chmod +x loc
1409 $eunicefix loc
1410 loclist="
1411 awk
1412 cat
1413 comm
1414 cp
1415 echo
1416 expr
1417 find
1418 grep
1419 ls
1420 mkdir
1421 rm
1422 sed
1423 sort
1424 touch
1425 tr
1426 uniq
1427 "
1428 trylist="
1429 Mcc
1430 byacc
1431 cpp
1432 csh
1433 date
1434 egrep
1435 gzip
1436 less
1437 line
1438 ln
1439 more
1440 nroff
1441 perl
1442 pg
1443 sendmail
1444 test
1445 uname
1446 zip
1447 "
1448 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1449 pth="$pth /lib /usr/lib"
1450 for file in $loclist; do
1451         xxx=`./loc $file $file $pth`
1452         eval $file=$xxx
1453         eval _$file=$xxx
1454         case "$xxx" in
1455         /*)
1456                 echo $file is in $xxx.
1457                 ;;
1458         ?:[\\/]*)
1459                 echo $file is in $xxx.
1460                 ;;
1461         *)
1462                 echo "I don't know where '$file' is, and my life depends on it." >&4
1463                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
1464                 exit 1
1465                 ;;
1466         esac
1467 done
1468 echo " "
1469 echo "Don't worry if any of the following aren't found..."
1470 say=offhand
1471 for file in $trylist; do
1472         xxx=`./loc $file $file $pth`
1473         eval $file=$xxx
1474         eval _$file=$xxx
1475         case "$xxx" in
1476         /*)
1477                 echo $file is in $xxx.
1478                 ;;
1479         ?:[\\/]*)
1480                 echo $file is in $xxx.
1481                 ;;
1482         *)
1483                 echo "I don't see $file out there, $say."
1484                 say=either
1485                 ;;
1486         esac
1487 done
1488 case "$egrep" in
1489 egrep)
1490         echo "Substituting grep for egrep."
1491         egrep=$grep
1492         ;;
1493 esac
1494 case "$ln" in
1495 ln)
1496         echo "Substituting cp for ln."
1497         ln=$cp
1498         ;;
1499 esac
1500 case "$test" in
1501 test)
1502         echo "Hopefully test is built into your sh."
1503         ;;
1504 *)
1505         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
1506                 echo "Using the test built into your sh."
1507                 test=test
1508                 _test=test
1509         fi
1510         ;;
1511 esac
1512 case "$echo" in
1513 echo)
1514         echo "Hopefully echo is built into your sh."
1515         ;;
1516 '') ;;
1517 *)
1518         echo " "
1519 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1520         $echo $n "hi there$c" >foo1
1521         echo $n "hi there$c" >foo2
1522         if cmp foo1 foo2 >/dev/null 2>&1; then
1523                 echo "They are compatible.  In fact, they may be identical."
1524         else
1525                 case "$n" in
1526                 '-n') n='' c='\c';;
1527                 *) n='-n' c='';;
1528                 esac
1529                 cat <<FOO
1530 They are not compatible!  You are probably running ksh on a non-USG system.
1531 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1532 have echo built in and we may have to run some Bourne shell scripts.  That
1533 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
1534
1535 FOO
1536                 $echo $n "The star should be here-->$c"
1537                 $echo "*"
1538         fi
1539         $rm -f foo1 foo2
1540         ;;
1541 esac
1542
1543 : determine whether symbolic links are supported
1544 echo " "
1545 $touch blurfl
1546 if $ln -s blurfl sym > /dev/null 2>&1 ; then
1547         echo "Symbolic links are supported." >&4
1548         lns="$ln -s"
1549 else
1550         echo "Symbolic links are NOT supported." >&4
1551         lns="$ln"
1552 fi
1553 $rm -f blurfl sym
1554
1555 : see whether [:lower:] and [:upper:] are supported character classes
1556 echo " "
1557 up='[A-Z]'
1558 low='[a-z]'
1559 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1560 ABYZ)
1561         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1562         up='[:upper:]'
1563         low='[:lower:]'
1564         ;;
1565 *)
1566         echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1567         ;;
1568 esac
1569 : set up the translation script tr, must be called with ./tr of course
1570 cat >tr <<EOSC
1571 $startsh
1572 case "\$1\$2" in
1573 '[A-Z][a-z]') exec $tr '$up' '$low';;
1574 '[a-z][A-Z]') exec $tr '$low' '$up';;
1575 esac
1576 exec $tr "\$@"
1577 EOSC
1578 chmod +x tr
1579 $eunicefix tr
1580
1581 : Try to determine whether config.sh was made on this system
1582 case "$config_sh" in
1583 '')
1584 myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
1585 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
1586         ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1587 newmyuname="$myuname"
1588 dflt=n
1589 case "$knowitall" in
1590 '')
1591         if test -f ../config.sh; then
1592                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1593                         eval "`grep myuname= ../config.sh`"
1594                 fi
1595                 if test "X$myuname" = "X$newmyuname"; then
1596                         dflt=y
1597                 fi
1598         fi
1599         ;;
1600 *) dflt=y;;
1601 esac
1602
1603 : Get old answers from old config file if Configure was run on the
1604 : same system, otherwise use the hints.
1605 hint=default
1606 cd ..
1607 if test -f config.sh; then
1608         echo " "
1609         rp="I see a config.sh file.  Shall I use it to set the defaults?"
1610         . UU/myread
1611         case "$ans" in
1612         n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1613         *)  echo "Fetching default answers from your old config.sh file..." >&4
1614                 tmp_n="$n"
1615                 tmp_c="$c"
1616                 tmp_sh="$sh"
1617                 . ./config.sh
1618                 cp config.sh UU
1619                 n="$tmp_n"
1620                 c="$tmp_c"
1621                 : Older versions did not always set $sh.  Catch re-use of such
1622                 : an old config.sh.
1623                 case "$sh" in
1624                 '') sh="$tmp_sh" ;;
1625                 esac
1626                 hint=previous
1627                 ;;
1628         esac
1629 fi
1630 if test ! -f config.sh; then
1631         $cat <<EOM
1632
1633 First time through, eh?  I have some defaults handy for the following systems:
1634
1635 EOM
1636         cd hints; ls -C *.sh | $sed 's/\.sh/   /g' >&4
1637         dflt=''
1638         : Half the following guesses are probably wrong... If you have better
1639         : tests or hints, please send them to chip@atlantic.net
1640         : The metaconfig authors would also appreciate a copy...
1641         $test -f /irix && osname=irix
1642         $test -f /xenix && osname=sco_xenix
1643         $test -f /dynix && osname=dynix
1644         $test -f /dnix && osname=dnix
1645         $test -f /lynx.os && osname=lynxos
1646         $test -f /unicos && osname=unicos && osvers=`$uname -r`
1647         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
1648         $test -f /bin/mips && /bin/mips && osname=mips
1649         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1650                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
1651         $test -d /usr/apollo/bin && osname=apollo
1652         $test -f /etc/saf/_sactab && osname=svr4
1653         $test -d /usr/include/minix && osname=minix
1654         if $test -d /MachTen; then
1655                 osname=machten 
1656                 if $test -x /sbin/version; then
1657                         osvers=`/sbin/version | $awk '{print $2}' | 
1658                         $sed -e 's/[A-Za-z]$//'`
1659                 elif $test -x /usr/etc/version; then
1660                         osvers=`/usr/etc/version | $awk '{print $2}' | 
1661                         $sed -e 's/[A-Za-z]$//'`
1662                 else
1663                         osvers="$2.$3"
1664                 fi
1665         fi
1666         if $test -f $uname; then
1667                 set X $myuname
1668                 shift
1669
1670                 case "$5" in
1671                 fps*) osname=fps ;;
1672                 mips*)
1673                         case "$4" in
1674                         umips) osname=umips ;;
1675                         *) osname=mips ;;
1676                         esac;;
1677                 [23]100) osname=mips ;;
1678                 next*) osname=next ;;
1679                 news*) osname=news ;;
1680                 i386*)
1681                         if $test -f /etc/kconfig; then
1682                                 osname=isc
1683                                 if test "$lns" = "ln -s"; then
1684                                         osvers=4
1685                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1686                                         osvers=3
1687                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
1688                                         osvers=2
1689                                 fi
1690                         fi
1691                         ;;
1692                 esac
1693
1694                 case "$1" in
1695                 aix) osname=aix
1696                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1697                         case "$tmp" in
1698                         'not found') osvers="$4"."$3" ;;
1699                         '<3240'|'<>3240') osvers=3.2.0 ;;
1700                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1701                         '=3250'|'>3250') osvers=3.2.5 ;;
1702                         *) osvers=$tmp;;
1703                         esac
1704                         ;;
1705                 dnix) osname=dnix
1706                         osvers="$3"
1707                         ;;
1708                 domainos) osname=apollo
1709                         osvers="$3"
1710                         ;;
1711                 dgux) osname=dgux 
1712                         osvers="$3"
1713                         ;;
1714                 dynixptx*) osname=dynixptx
1715                         osvers="$3"
1716                         ;;
1717                 freebsd) osname=freebsd 
1718                         osvers="$3" ;;
1719                 genix) osname=genix ;;
1720                 hp*) osname=hpux 
1721                         case "$3" in
1722                         *.08.*) osvers=9 ;;
1723                         *.09.*) osvers=9 ;;
1724                         *.10.*) osvers=10 ;;
1725                         *)      osvers="$3" ;;
1726                         esac
1727                         ;;
1728                 irix*) osname=irix
1729                         case "$3" in
1730                         4*) osvers=4 ;;
1731                         5*) osvers=5 ;;
1732                         *)      osvers="$3" ;;
1733                         esac
1734                         ;;
1735                 linux) osname=linux
1736                         case "$3" in
1737                         1*) osvers=1 ;;
1738                         *)      osvers="$3" ;;
1739                         esac
1740                         ;;
1741                 netbsd*) osname=netbsd 
1742                         osvers="$3"
1743                         ;;
1744                 bsd386) osname=bsd386
1745                         osvers=`$uname -r`
1746                         ;;
1747                 next*) osname=next ;;
1748                 solaris) osname=solaris
1749                         case "$3" in
1750                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1751                         *)      osvers="$3" ;;
1752                         esac
1753                         ;;
1754                 sunos) osname=sunos
1755                         case "$3" in
1756                         5*) osname=solaris
1757                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
1758                         *)      osvers="$3" ;;
1759                         esac
1760                         ;;
1761                 titanos) osname=titanos
1762                         case "$3" in
1763                         1*) osvers=1 ;;
1764                         2*) osvers=2 ;;
1765                         3*) osvers=3 ;;
1766                         4*) osvers=4 ;;
1767                         *)      osvers="$3" ;;
1768                         esac
1769                         ;;
1770                 ultrix) osname=ultrix
1771                         osvers="$3"
1772                         ;;
1773                 osf1)   case "$5" in
1774                                 alpha)
1775                                         osname=dec_osf
1776                                         osvers=`echo "$3" | sed 's/^[vt]//'`
1777                                         ;;
1778                         hp*)    osname=hp_osf1  ;;
1779                         mips)   osname=mips_osf1 ;;
1780                         esac
1781                         ;;
1782                 uts) osname=uts 
1783                         osvers="$3"
1784                         ;;
1785                 qnx) osname=qnx
1786                         osvers="$4"
1787                         ;;
1788                 $2) case "$osname" in
1789                         *isc*) ;;
1790                         *freebsd*) ;;
1791                         svr*)
1792                                 : svr4.x or possibly later
1793                                 case "svr$3" in 
1794                                 ${osname}*)
1795                                         osname=svr$3
1796                                         osvers=$4
1797                                         ;;
1798                                 esac
1799                                 case "$osname" in
1800                                 svr4.0)
1801                                         : Check for ESIX
1802                                         if test -f /stand/boot ; then
1803                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
1804                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
1805                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1806                                                         if test -n "$isesix"; then
1807                                                                 osname=esix4
1808                                                         fi
1809                                                 fi
1810                                         fi
1811                                         ;;
1812                                 esac
1813                                 ;;
1814                         *)      if test -f /etc/systemid; then
1815                                         osname=sco
1816                                         set `echo $3 | $sed 's/\./ /g'` $4
1817                                         if $test -f sco_$1_$2_$3.sh; then
1818                                                 osvers=$1.$2.$3
1819                                         elif $test -f sco_$1_$2.sh; then
1820                                                 osvers=$1.$2
1821                                         elif $test -f sco_$1.sh; then
1822                                                 osvers=$1
1823                                         fi
1824                                 else
1825                                         case "$osname" in
1826                                         '') : Still unknown.  Probably a generic Sys V.
1827                                                 osname="sysv"
1828                                                 osvers="$3"
1829                                                 ;;
1830                                         esac
1831                                 fi
1832                                 ;;
1833                         esac
1834                         ;;
1835                 *)      case "$osname" in
1836                         '') : Still unknown.  Probably a generic BSD.
1837                                 osname="$1"
1838                                 osvers="$3"
1839                                 ;;
1840                         esac
1841                         ;;
1842                 esac
1843         else
1844                 if test -f /vmunix -a -f news_os.sh; then
1845                         (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
1846                         if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
1847                                 osname=news_os
1848                         fi
1849                         $rm -f ../UU/kernel.what
1850                 elif test -d c:/.; then
1851                         set X $myuname
1852                         osname=os2
1853                         osvers="$5"
1854                 fi
1855         fi
1856         
1857         : Now look for a hint file osname_osvers, unless one has been
1858         : specified already.
1859         case "$hintfile" in
1860         ''|' ')
1861                 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
1862                 : Also try without trailing minor version numbers.
1863                 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1864                 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1865                 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1866                 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
1867                 case "$file" in
1868                 '') dflt=none ;;
1869                 *)  case "$osvers" in
1870                         '') dflt=$file
1871                                 ;;
1872                         *)  if $test -f $file.sh ; then
1873                                         dflt=$file
1874                                 elif $test -f $xfile.sh ; then
1875                                         dflt=$xfile
1876                                 elif $test -f $xxfile.sh ; then
1877                                         dflt=$xxfile
1878                                 elif $test -f $xxxfile.sh ; then
1879                                         dflt=$xxxfile
1880                                 elif $test -f $xxxxfile.sh ; then
1881                                         dflt=$xxxxfile
1882                                 elif $test -f "${osname}.sh" ; then
1883                                         dflt="${osname}"
1884                                 else
1885                                         dflt=none
1886                                 fi
1887                                 ;;
1888                         esac
1889                         ;;
1890                 esac
1891                 ;;
1892         *)
1893                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
1894                 ;;
1895         esac
1896
1897         $cat <<EOM
1898
1899 You may give one or more space-separated answers, or "none" if appropriate.
1900 If your OS version has no hints, DO NOT give a wrong version -- say "none".
1901
1902 EOM
1903         rp="Which of these apply, if any?"
1904         . ../UU/myread
1905         tans=$ans
1906         for file in $tans; do
1907                 if $test -f $file.sh; then
1908                         . ./$file.sh
1909                         $cat $file.sh >> ../UU/config.sh
1910                 elif $test X$tans = X -o X$tans = Xnone ; then
1911                         : nothing
1912                 else
1913                         : Give one chance to correct a possible typo.
1914                         echo "$file.sh does not exist"
1915                         dflt=$file
1916                         rp="hint to use instead?"
1917                         . ../UU/myread
1918                         for file in $ans; do
1919                                 if $test -f "$file.sh"; then
1920                                         . ./$file.sh
1921                                         $cat $file.sh >> ../UU/config.sh
1922                                 elif $test X$ans = X -o X$ans = Xnone ; then
1923                                         : nothing
1924                                 else
1925                                         echo "$file.sh does not exist -- ignored."
1926                                 fi
1927                         done
1928                 fi
1929         done
1930
1931         hint=recommended
1932         : Remember our hint file for later.
1933         if $test -f "$file.sh" ; then
1934                 hintfile="$file"
1935         else
1936                 hintfile=''
1937         fi
1938
1939         cd ..
1940 fi
1941 cd UU
1942 ;;
1943 *)
1944         echo " "
1945         echo "Fetching default answers from $config_sh..." >&4
1946         tmp_n="$n"
1947         tmp_c="$c"
1948         cd ..
1949         cp $config_sh config.sh 2>/dev/null
1950         chmod +w config.sh
1951         . ./config.sh
1952         cd UU
1953         cp ../config.sh .
1954         n="$tmp_n"
1955         c="$tmp_c"
1956         hint=previous
1957         ;;
1958 esac
1959 test "$override" && . ./optdef.sh
1960 myuname="$newmyuname"
1961
1962 : Restore computed paths
1963 for file in $loclist $trylist; do
1964         eval $file="\$_$file"
1965 done
1966
1967 cat << EOM
1968
1969 Configure uses the operating system name and version to set some defaults.
1970 The default value is probably right if the name rings a bell. Otherwise,
1971 since spelling matters for me, either accept the default or answer "none"
1972 to leave it blank.
1973
1974 EOM
1975 case "$osname" in
1976         ''|' ')
1977                 case "$hintfile" in
1978                 ''|' '|none) dflt=none ;;
1979                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
1980                 esac
1981                 ;;
1982         *) dflt="$osname" ;;
1983 esac
1984 rp="Operating system name?"
1985 . ./myread
1986 case "$ans" in
1987 none)  osname='' ;;
1988 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
1989 esac
1990 echo " "
1991 case "$osvers" in
1992         ''|' ')
1993                 case "$hintfile" in
1994                 ''|' '|none) dflt=none ;;
1995                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
1996                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
1997                         case "$dflt" in
1998                         ''|' ') dflt=none ;;
1999                         esac
2000                         ;;
2001                 esac
2002                 ;;
2003         *) dflt="$osvers" ;;
2004 esac
2005 rp="Operating system version?"
2006 . ./myread
2007 case "$ans" in
2008 none)  osvers='' ;;
2009 *) osvers="$ans" ;;
2010 esac
2011
2012
2013
2014 : who configured the system
2015 cf_time=`$date 2>&1`
2016 cf_by=`(logname) 2>/dev/null`
2017 case "$cf_by" in "")
2018         cf_by=`(whoami) 2>/dev/null`
2019         case "$cf_by" in "")
2020                 cf_by=unknown ;;
2021         esac ;;
2022 esac
2023
2024 : determine the architecture name
2025 echo " "
2026 if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2027         tarch=`arch`"-$osname"
2028 elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2029         if uname -m > tmparch 2>&1 ; then
2030                 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
2031                         -e 's/$/'"-$osname/" tmparch`
2032         else
2033                 tarch="$osname"
2034         fi
2035         $rm -f tmparch
2036 else
2037         tarch="$osname"
2038 fi
2039 case "$myarchname" in
2040 ''|"$tarch") ;;
2041 *)
2042         echo "(Your architecture name used to be $myarchname.)"
2043         archname=''
2044         ;;
2045 esac
2046 case "$archname" in
2047 '') dflt="$tarch";;
2048 *) dflt="$archname";;
2049 esac
2050 rp='What is your architecture name'
2051 . ./myread
2052 archname="$ans"
2053 myarchname="$tarch"
2054
2055 : is AFS running?
2056 echo " "
2057 case "$afs" in
2058 $define|true)   afs=true ;;
2059 $undef|false)   afs=false ;;
2060 *)      if test -d /afs; then
2061                 afs=true
2062         else
2063                 afs=false
2064         fi
2065         ;;
2066 esac
2067 if $afs; then
2068         echo "AFS may be running... I'll be extra cautious then..." >&4
2069 else
2070         echo "AFS does not seem to be running..." >&4
2071 fi
2072
2073 : decide how portable to be.  Allow command line overrides.
2074 case "$d_portable" in
2075 "$undef") ;;
2076 *)      d_portable="$define" ;;
2077 esac
2078
2079 : set up shell script to do ~ expansion
2080 cat >filexp <<EOSS
2081 $startsh
2082 : expand filename
2083 case "\$1" in
2084  ~/*|~)
2085         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2086         ;;
2087  ~*)
2088         if $test -f /bin/csh; then
2089                 /bin/csh -f -c "glob \$1"
2090                 failed=\$?
2091                 echo ""
2092                 exit \$failed
2093         else
2094                 name=\`$expr x\$1 : '..\([^/]*\)'\`
2095                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2096                 if $test ! -d "\$dir"; then
2097                         me=\`basename \$0\`
2098                         echo "\$me: can't locate home directory for: \$name" >&2
2099                         exit 1
2100                 fi
2101                 case "\$1" in
2102                 */*)
2103                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2104                         ;;
2105                 *)
2106                         echo \$dir
2107                         ;;
2108                 esac
2109         fi
2110         ;;
2111 *)
2112         echo \$1
2113         ;;
2114 esac
2115 EOSS
2116 chmod +x filexp
2117 $eunicefix filexp
2118
2119 : now set up to get a file name
2120 cat <<'EOSC' >getfile
2121 tilde=''
2122 fullpath=''
2123 already=''
2124 skip=''
2125 none_ok=''
2126 exp_file=''
2127 nopath_ok=''
2128 orig_rp="$rp"
2129 orig_dflt="$dflt"
2130
2131 case "$fn" in
2132 *\(*)
2133         expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2134         fn=`echo $fn | sed 's/(.*)//'`
2135         ;;
2136 esac
2137
2138 case "$fn" in
2139 *:*)
2140         loc_file=`expr $fn : '.*:\(.*\)'`
2141         fn=`expr $fn : '\(.*\):.*'`
2142         ;;
2143 esac
2144
2145 case "$fn" in
2146 *~*) tilde=true;;
2147 esac
2148 case "$fn" in
2149 */*) fullpath=true;;
2150 esac
2151 case "$fn" in
2152 *+*) skip=true;;
2153 esac
2154 case "$fn" in
2155 *n*) none_ok=true;;
2156 esac
2157 case "$fn" in
2158 *e*) exp_file=true;;
2159 esac
2160 case "$fn" in
2161 *p*) nopath_ok=true;;
2162 esac
2163
2164 case "$fn" in
2165 *f*) type='File';;
2166 *d*) type='Directory';;
2167 *l*) type='Locate';;
2168 esac
2169
2170 what="$type"
2171 case "$what" in
2172 Locate) what='File';;
2173 esac
2174
2175 case "$exp_file" in
2176 '')
2177         case "$d_portable" in
2178         "$define") ;;
2179         *) exp_file=true;;
2180         esac
2181         ;;
2182 esac
2183
2184 cd ..
2185 while test "$type"; do
2186         redo=''
2187         rp="$orig_rp"
2188         dflt="$orig_dflt"
2189         case "$tilde" in
2190         true) rp="$rp (~name ok)";;
2191         esac
2192         . UU/myread
2193         if test -f UU/getfile.ok && \
2194                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2195         then
2196                 value="$ans"
2197                 ansexp="$ans"
2198                 break
2199         fi
2200         case "$ans" in
2201         none)
2202                 value=''
2203                 ansexp=''
2204                 case "$none_ok" in
2205                 true) type='';;
2206                 esac
2207                 ;;
2208         *)
2209                 case "$tilde" in
2210                 '') value="$ans"
2211                         ansexp="$ans";;
2212                 *)
2213                         value=`UU/filexp $ans`
2214                         case $? in
2215                         0)
2216                                 if test "$ans" != "$value"; then
2217                                         echo "(That expands to $value on this system.)"
2218                                 fi
2219                                 ;;
2220                         *) value="$ans";;
2221                         esac
2222                         ansexp="$value"
2223                         case "$exp_file" in
2224                         '') value="$ans";;
2225                         esac
2226                         ;;
2227                 esac
2228                 case "$fullpath" in
2229                 true)
2230                         case "$ansexp" in
2231                         /*) value="$ansexp" ;;
2232                         *)
2233                                 redo=true
2234                                 case "$already" in
2235                                 true)
2236                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
2237                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
2238                                         ;;
2239                                 *)
2240                                 echo "Please give a full path name, starting with slash." >&4
2241                                         case "$tilde" in
2242                                         true)
2243                                 echo "Note that using ~name is ok provided it expands well." >&4
2244                                                 already=true
2245                                                 ;;
2246                                         esac
2247                                 esac
2248                                 ;;
2249                         esac
2250                         ;;
2251                 esac
2252                 case "$redo" in
2253                 '')
2254                         case "$type" in
2255                         File)
2256                                 if test -f "$ansexp"; then
2257                                         type=''
2258                                 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2259                                 then
2260                                         echo "($value is not a plain file, but that's ok.)"
2261                                         type=''
2262                                 fi
2263                                 ;;
2264                         Directory)
2265                                 if test -d "$ansexp"; then
2266                                         type=''
2267                                 fi
2268                                 ;;
2269                         Locate)
2270                                 if test -d "$ansexp"; then
2271                                         echo "(Looking for $loc_file in directory $value.)"
2272                                         value="$value/$loc_file"
2273                                         ansexp="$ansexp/$loc_file"
2274                                 fi
2275                                 if test -f "$ansexp"; then
2276                                         type=''
2277                                 fi
2278                                 case "$nopath_ok" in
2279                                 true)   case "$value" in
2280                                         */*) ;;
2281                                         *)      echo "Assuming $value will be in people's path."
2282                                                 type=''
2283                                                 ;;
2284                                         esac
2285                                         ;;
2286                                 esac
2287                                 ;;
2288                         esac
2289
2290                         case "$skip" in
2291                         true) type='';
2292                         esac
2293
2294                         case "$type" in
2295                         '') ;;
2296                         *)
2297                                 if test "$fastread" = yes; then
2298                                         dflt=y
2299                                 else
2300                                         dflt=n
2301                                 fi
2302                                 rp="$what $value doesn't exist.  Use that name anyway?"
2303                                 . UU/myread
2304                                 dflt=''
2305                                 case "$ans" in
2306                                 y*) type='';;
2307                                 *) echo " ";;
2308                                 esac
2309                                 ;;
2310                         esac
2311                         ;;
2312                 esac
2313                 ;;
2314         esac
2315 done
2316 cd UU
2317 ans="$value"
2318 rp="$orig_rp"
2319 dflt="$orig_dflt"
2320 rm -f getfile.ok
2321 EOSC
2322
2323 : determine root of directory hierarchy where package will be installed.
2324 case "$prefix" in
2325 '')
2326         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
2327         ;;
2328 *)
2329         dflt="$prefix"
2330         ;;
2331 esac
2332 $cat <<EOM
2333
2334 By default, $package will be installed in $dflt/bin, manual
2335 pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2336 all installation directories. Typically set to /usr/local, but you
2337 may choose /usr if you wish to install $package among your system
2338 binaries. If you wish to have binaries under /bin but manual pages
2339 under /usr/local/man, that's ok: you will be prompted separately
2340 for each of the installation directories, the prefix being only used
2341 to set the defaults.
2342
2343 EOM
2344 fn=d~
2345 rp='Installation prefix to use?'
2346 . ./getfile
2347 oldprefix=''
2348 case "$prefix" in
2349 '') ;;
2350 *)
2351         case "$ans" in
2352         "$prefix") ;;
2353         *) oldprefix="$prefix";;
2354         esac
2355         ;;
2356 esac
2357 prefix="$ans"
2358 prefixexp="$ansexp"
2359
2360 : set the prefixit variable, to compute a suitable default value
2361 prefixit='case "$3" in
2362 ""|none)
2363         case "$oldprefix" in
2364         "") eval "$1=\"\$$2\"";;
2365         *)
2366                 case "$3" in
2367                 "") eval "$1=";;
2368                 none)
2369                         eval "tp=\"\$$2\"";
2370                         case "$tp" in
2371                         ""|" ") eval "$1=\"\$$2\"";;
2372                         *) eval "$1=";;
2373                         esac;;
2374                 esac;;
2375         esac;;
2376 *)
2377         eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2378         case "$tp" in
2379         --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2380         /*-$oldprefix/*|\~*-$oldprefix/*)
2381                 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2382         *) eval "$1=\"\$$2\"";;
2383         esac;;
2384 esac'
2385
2386 : determine where private library files go
2387 : Usual default is /usr/local/lib/perl5.  Also allow things like 
2388 : /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2389 case "$prefix" in
2390 *perl*) set dflt privlib lib ;;
2391 *)       set dflt privlib lib/$package ;;
2392 esac
2393 eval $prefixit
2394 $cat <<EOM
2395
2396 There are some auxiliary files for $package that need to be put into a
2397 private library directory that is accessible by everyone.
2398
2399 EOM
2400 fn=d~+
2401 rp='Pathname where the private library files will reside?'
2402 . ./getfile
2403 if $test "X$privlibexp" != "X$ansexp"; then
2404         installprivlib=''
2405 fi
2406 privlib="$ans"
2407 privlibexp="$ansexp"
2408 if $afs; then
2409         $cat <<EOM
2410
2411 Since you are running AFS, I need to distinguish the directory in which
2412 private files reside from the directory in which they are installed (and from
2413 which they are presumably copied to the former directory by occult means).
2414
2415 EOM
2416         case "$installprivlib" in
2417         '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2418         *) dflt="$installprivlib";;
2419         esac
2420         fn=de~
2421         rp='Where will private files be installed?'
2422         . ./getfile
2423         installprivlib="$ans"
2424 else
2425         installprivlib="$privlibexp"
2426 fi
2427
2428 : set the base revision
2429 baserev=5
2430
2431 : get the patchlevel
2432 echo " "
2433 echo "Getting the current patchlevel..." >&4
2434 if $test -r ../patchlevel.h;then
2435         patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2436         subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
2437 else
2438         patchlevel=0
2439         subversion=0
2440 fi
2441 $echo $n "(You have $package" $c
2442 case "$package" in
2443 "*$baserev")    ;;
2444 *)              $echo $n " $baserev" $c ;;
2445 esac
2446 $echo $n " patchlevel $patchlevel" $c
2447 test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2448 echo ".)"
2449
2450 : set the prefixup variable, to restore leading tilda escape
2451 prefixup='case "$prefixexp" in
2452 "$prefix") ;;
2453 *) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2454 esac'
2455
2456 : determine where public architecture dependent libraries go
2457 set archlib archlib
2458 eval $prefixit
2459 case "$archlib" in
2460 '')
2461         case "$privlib" in
2462         '')     dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2463                 set dflt
2464                 eval $prefixup
2465                 ;;
2466         *)      if test 0 -eq "$subversion"; then
2467                         version=`echo $baserev $patchlevel | \
2468                                  $awk '{ printf "%d.%03d\n",$1,$2 }'`
2469                 else
2470                         version=`echo $baserev $patchlevel $subversion | \
2471                                  $awk '{ printf "%d.%03d%02d\n",$1,$2,$3 }'`
2472                 fi
2473                 dflt="$privlib/$archname/$version"
2474                 ;;
2475         esac
2476         ;;
2477 *) dflt="$archlib";;
2478 esac
2479 cat <<EOM
2480
2481 $spackage contains architecture-dependent library files.  If you are
2482 sharing libraries in a heterogeneous environment, you might store
2483 these files in a separate location.  Otherwise, you can just include
2484 them with the rest of the public library files.
2485
2486 EOM
2487 fn=d+~
2488 rp='Where do you want to put the public architecture-dependent libraries?'
2489 . ./getfile
2490 archlib="$ans"
2491 archlibexp="$ansexp"
2492
2493 if $afs; then
2494         $cat <<EOM
2495
2496 Since you are running AFS, I need to distinguish the directory in which
2497 private files reside from the directory in which they are installed (and from
2498 which they are presumably copied to the former directory by occult means).
2499
2500 EOM
2501         case "$installarchlib" in
2502         '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2503         *) dflt="$installarchlib";;
2504         esac
2505         fn=de~
2506         rp='Where will architecture-dependent library files be installed?'
2507         . ./getfile
2508         installarchlib="$ans"
2509 else
2510         installarchlib="$archlibexp"
2511 fi
2512 if $test X"$archlib" = X"$privlib"; then
2513         d_archlib="$undef"
2514 else
2515         d_archlib="$define"
2516 fi
2517
2518 : set up the script used to warn in case of inconsistency
2519 cat <<'EOSC' >whoa
2520 dflt=y
2521 echo " "
2522 echo "*** WHOA THERE!!! ***" >&4
2523 echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
2524 rp="    Keep the $hint value?"
2525 . ./myread
2526 case "$ans" in
2527 y) td=$was; tu=$was;;
2528 esac
2529 EOSC
2530
2531 : function used to set $1 to $val
2532 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2533 case "$val$was" in
2534 $define$undef) . ./whoa; eval "$var=\$td";;
2535 $undef$define) . ./whoa; eval "$var=\$tu";;
2536 *) eval "$var=$val";;
2537 esac'
2538
2539 $cat <<EOM
2540
2541 Perl 5.004 can be compiled for binary compatibility with 5.003.
2542 If you decide to do so, you will be able to continue using any
2543 extensions that were compiled for Perl 5.003.  However, binary
2544 compatibility forces Perl to expose some of its internal symbols
2545 in the same way that 5.003 did.  So you may have symbol conflicts
2546 if you embed a binary-compatible Perl in other programs.
2547
2548 EOM
2549 case "$d_bincompat3" in
2550 "$undef") dflt=n ;;
2551 *) dflt=y ;;
2552 esac
2553 rp='Binary compatibility with Perl 5.003?'
2554 . ./myread
2555 case "$ans" in
2556 y*) val="$define" ;;
2557 *)  val="$undef" ;;
2558 esac
2559 set d_bincompat3
2560 eval $setvar
2561 case "$d_bincompat3" in
2562 "$define") bincompat3=y ;;
2563 *) bincompat3=n ;;
2564 esac
2565
2566 : make some quick guesses about what we are up against
2567 echo " "
2568 $echo $n "Hmm...  $c"
2569 echo exit 1 >bsd
2570 echo exit 1 >usg
2571 echo exit 1 >v7
2572 echo exit 1 >osf1
2573 echo exit 1 >eunice
2574 echo exit 1 >xenix
2575 echo exit 1 >venix
2576 echo exit 1 >os2
2577 d_bsd="$undef"
2578 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2579 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2580 then
2581         echo "Looks kind of like an OSF/1 system, but we'll see..."
2582         echo exit 0 >osf1
2583 elif test `echo abc | tr a-z A-Z` = Abc ; then
2584         xxx=`./loc addbib blurfl $pth`
2585         if $test -f $xxx; then
2586         echo "Looks kind of like a USG system with BSD features, but we'll see..."
2587                 echo exit 0 >bsd
2588                 echo exit 0 >usg
2589         else
2590                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2591                         echo "Looks kind of like an extended USG system, but we'll see..."
2592                 else
2593                         echo "Looks kind of like a USG system, but we'll see..."
2594                 fi
2595                 echo exit 0 >usg
2596         fi
2597 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2598         echo "Looks kind of like a BSD system, but we'll see..."
2599         d_bsd="$define"
2600         echo exit 0 >bsd
2601 else
2602         echo "Looks kind of like a Version 7 system, but we'll see..."
2603         echo exit 0 >v7
2604 fi
2605 case "$eunicefix" in
2606 *unixtovms*)
2607         $cat <<'EOI'
2608 There is, however, a strange, musty smell in the air that reminds me of
2609 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2610 EOI
2611         echo exit 0 >eunice
2612         d_eunice="$define"
2613 : it so happens the Eunice I know will not run shell scripts in Unix format
2614         ;;
2615 *)
2616         echo " "
2617         echo "Congratulations.  You aren't running Eunice."
2618         d_eunice="$undef"
2619         ;;
2620 esac
2621 : Detect OS2.  The p_ variable is set above in the Head.U unit.
2622 case "$p_" in
2623 :) ;;
2624 *)
2625         $cat <<'EOI'
2626 I have the feeling something is not exactly right, however...don't tell me...
2627 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2628 EOI
2629         echo exit 0 >os2
2630         ;;
2631 esac
2632 if test -f /xenix; then
2633         echo "Actually, this looks more like a XENIX system..."
2634         echo exit 0 >xenix
2635         d_xenix="$define"
2636 else
2637         echo " "
2638         echo "It's not Xenix..."
2639         d_xenix="$undef"
2640 fi
2641 chmod +x xenix
2642 $eunicefix xenix
2643 if test -f /venix; then
2644         echo "Actually, this looks more like a VENIX system..."
2645         echo exit 0 >venix
2646 else
2647         echo " "
2648         if ./xenix; then
2649                 : null
2650         else
2651                 echo "Nor is it Venix..."
2652         fi
2653 fi
2654 chmod +x bsd usg v7 osf1 eunice xenix venix os2
2655 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
2656 $rm -f foo
2657
2658 : see if setuid scripts can be secure
2659 $cat <<EOM
2660
2661 Some kernels have a bug that prevents setuid #! scripts from being
2662 secure.  Some sites have disabled setuid #! scripts because of this.
2663
2664 First let's decide if your kernel supports secure setuid #! scripts.
2665 (If setuid #! scripts would be secure but have been disabled anyway,
2666 don't say that they are secure if asked.)
2667
2668 EOM
2669
2670 val="$undef"
2671 if $test -d /dev/fd; then
2672         echo "#!$ls" >reflect
2673         chmod +x,u+s reflect
2674         ./reflect >flect 2>&1
2675         if $contains "/dev/fd" flect >/dev/null; then
2676                 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2677                 val="$define"
2678         else
2679                 $cat <<EOM
2680 If you are not sure if they are secure, I can check but I'll need a
2681 username and password different from the one you are using right now.
2682 If you don't have such a username or don't want me to test, simply
2683 enter 'none'.
2684
2685 EOM
2686                 rp='Other username to test security of setuid scripts with?'
2687                 dflt='none'
2688                 . ./myread
2689                 case "$ans" in
2690                 n|none)
2691                         case "$d_suidsafe" in
2692                         '')     echo "I'll assume setuid scripts are *not* secure." >&4
2693                                 dflt=n;;
2694                         "$undef")
2695                                 echo "Well, the $hint value is *not* secure." >&4
2696                                 dflt=n;;
2697                         *)      echo "Well, the $hint value *is* secure." >&4
2698                                 dflt=y;;
2699                         esac
2700                         ;;
2701                 *)
2702                         $rm -f reflect flect
2703                         echo "#!$ls" >reflect
2704                         chmod +x,u+s reflect
2705                         echo >flect
2706                         chmod a+w flect
2707                         echo '"su" will (probably) prompt you for '"$ans's password."
2708                         su $ans -c './reflect >flect'
2709                         if $contains "/dev/fd" flect >/dev/null; then
2710                                 echo "Okay, it looks like setuid scripts are secure." >&4
2711                                 dflt=y
2712                         else
2713                                 echo "I don't think setuid scripts are secure." >&4
2714                                 dflt=n
2715                         fi
2716                         ;;
2717                 esac
2718                 rp='Does your kernel have *secure* setuid scripts?'
2719                 . ./myread
2720                 case "$ans" in
2721                 [yY]*)  val="$define";;
2722                 *)      val="$undef";;
2723                 esac
2724         fi
2725 else
2726         echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
2727         echo "(That's for file descriptors, not floppy disks.)"
2728         val="$undef"
2729 fi
2730 set d_suidsafe
2731 eval $setvar
2732
2733 $rm -f reflect flect
2734
2735 : now see if they want to do setuid emulation
2736 echo " "
2737 val="$undef"
2738 case "$d_suidsafe" in
2739 "$define")
2740         val="$undef"
2741         echo "No need to emulate SUID scripts since they are secure here." >& 4
2742         ;;
2743 *)
2744         $cat <<EOM
2745 Some systems have disabled setuid scripts, especially systems where
2746 setuid scripts cannot be secure.  On systems where setuid scripts have
2747 been disabled, the setuid/setgid bits on scripts are currently
2748 useless.  It is possible for $package to detect those bits and emulate
2749 setuid/setgid in a secure fashion.  This emulation will only work if
2750 setuid scripts have been disabled in your kernel.
2751
2752 EOM
2753         case "$d_dosuid" in
2754         "$define") dflt=y ;;
2755         *) dflt=n ;;
2756         esac
2757         rp="Do you want to do setuid/setgid emulation?"
2758         . ./myread
2759         case "$ans" in
2760         [yY]*)  val="$define";;
2761         *)      val="$undef";;
2762         esac
2763         ;;
2764 esac
2765 set d_dosuid
2766 eval $setvar
2767
2768 : determine where site specific libraries go.
2769 set sitelib sitelib
2770 eval $prefixit
2771 case "$sitelib" in
2772 '')     dflt="$privlib/site_perl" ;;
2773 *)      dflt="$sitelib" ;;
2774 esac
2775 $cat <<EOM
2776
2777 The installation process will also create a directory for
2778 site-specific extensions and modules.  Some users find it convenient
2779 to place all local files in this directory rather than in the main
2780 distribution directory.
2781
2782 EOM
2783 fn=d~+
2784 rp='Pathname for the site-specific library files?'
2785 . ./getfile
2786 if $test "X$sitelibexp" != "X$ansexp"; then
2787         installsitelib=''
2788 fi
2789 sitelib="$ans"
2790 sitelibexp="$ansexp"
2791 if $afs; then
2792         $cat <<EOM
2793
2794 Since you are running AFS, I need to distinguish the directory in which
2795 private files reside from the directory in which they are installed (and from
2796 which they are presumably copied to the former directory by occult means).
2797
2798 EOM
2799         case "$installsitelib" in
2800         '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2801         *) dflt="$installsitelib";;
2802         esac
2803         fn=de~
2804         rp='Where will private files be installed?'
2805         . ./getfile
2806         installsitelib="$ans"
2807 else
2808         installsitelib="$sitelibexp"
2809 fi
2810
2811 : determine where site specific architecture-dependent libraries go.
2812 xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2813 : xxx is usuually lib/site_perl/archname.
2814 set sitearch sitearch none
2815 eval $prefixit
2816 case "$sitearch" in
2817 '')     dflt="$sitelib/$archname" ;;
2818 *)      dflt="$sitearch" ;;
2819 esac
2820 $cat <<EOM
2821
2822 The installation process will also create a directory for
2823 architecture-dependent site-specific extensions and modules.
2824
2825 EOM
2826 fn=nd~+
2827 rp='Pathname for the site-specific architecture-dependent library files?'
2828 . ./getfile
2829 if $test "X$sitearchexp" != "X$ansexp"; then
2830         installsitearch=''
2831 fi
2832 sitearch="$ans"
2833 sitearchexp="$ansexp"
2834 if $afs; then
2835         $cat <<EOM
2836
2837 Since you are running AFS, I need to distinguish the directory in which
2838 private files reside from the directory in which they are installed (and from
2839 which they are presumably copied to the former directory by occult means).
2840
2841 EOM
2842         case "$installsitearch" in
2843         '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2844         *) dflt="$installsitearch";;
2845         esac
2846         fn=de~
2847         rp='Where will private files be installed?'
2848         . ./getfile
2849         installsitearch="$ans"
2850 else
2851         installsitearch="$sitearchexp"
2852 fi
2853
2854 : determine where old public architecture dependent libraries might be
2855 case "$oldarchlib" in
2856 '')     case "$privlib" in
2857         '') ;;
2858         *)      dflt="$privlib/$archname"
2859                 ;;
2860         esac
2861         ;;
2862 *)      dflt="$oldarchlib" 
2863         ;;
2864 esac
2865 if $test ! -d "$dflt/auto"; then
2866         dflt=none
2867 fi
2868 cat <<EOM
2869
2870 In 5.001, Perl stored architecture-dependent library files in a directory
2871 with a name such as $privlib/$archname, 
2872 and this directory contained files from the standard extensions and 
2873 files from any additional extensions you might have added.  Starting 
2874 with version 5.002, all the architecture-dependent standard extensions 
2875 will go into a version-specific directory such as
2876 $archlib, 
2877 while locally-added extensions will go into
2878 $sitearch.
2879
2880 If you wish Perl to continue to search the old architecture-dependent
2881 library for your local extensions, give the path to that directory.
2882 If you do not wish to use your old architecture-dependent library
2883 files, answer 'none'.
2884
2885 EOM
2886 fn=dn~
2887 rp='Directory for your old 5.001 architecture-dependent libraries?'
2888 . ./getfile
2889 oldarchlib="$ans"
2890 oldarchlibexp="$ansexp"
2891 case "$oldarchlib" in
2892 ''|' ') val="$undef" ;;
2893 *) val="$define" ;;
2894 esac
2895 set d_oldarchlib
2896 eval $setvar
2897
2898 : determine where public executables go
2899 echo " "
2900 set dflt bin bin
2901 eval $prefixit
2902 fn=d~
2903 rp='Pathname where the public executables will reside?'
2904 . ./getfile
2905 if $test "X$ansexp" != "X$binexp"; then
2906         installbin=''
2907 fi
2908 bin="$ans"
2909 binexp="$ansexp"
2910 if $afs; then
2911         $cat <<EOM
2912
2913 Since you are running AFS, I need to distinguish the directory in which
2914 executables reside from the directory in which they are installed (and from
2915 which they are presumably copied to the former directory by occult means).
2916
2917 EOM
2918         case "$installbin" in
2919         '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2920         *) dflt="$installbin";;
2921         esac
2922         fn=de~
2923         rp='Where will public executables be installed?'
2924         . ./getfile
2925         installbin="$ans"
2926 else
2927         installbin="$binexp"
2928 fi
2929
2930 : determine where manual pages are on this system
2931 echo " "
2932 case "$sysman" in
2933 '') 
2934         syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2935         syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2936         syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2937         syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2938         syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2939         sysman=`./loc . /usr/man/man1 $syspath`
2940         ;;
2941 esac
2942 if $test -d "$sysman"; then
2943         echo "System manual is in $sysman." >&4
2944 else
2945         echo "Could not find manual pages in source form." >&4
2946 fi
2947
2948 : see what memory models we can support
2949 case "$models" in
2950 '')
2951         $cat >pdp11.c <<'EOP'
2952 main() {
2953 #ifdef pdp11
2954         exit(0);
2955 #else
2956         exit(1);
2957 #endif
2958 }
2959 EOP
2960         cc -o pdp11 pdp11.c >/dev/null 2>&1
2961         if ./pdp11 2>/dev/null; then
2962                 dflt='unsplit split'
2963         else
2964                 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
2965                 case "$tans" in
2966                 X) dflt='none';;
2967                 *) if $test -d /lib/small || $test -d /usr/lib/small; then
2968                                 dflt='small'
2969                         else
2970                                 dflt=''
2971                         fi
2972                         if $test -d /lib/medium || $test -d /usr/lib/medium; then
2973                                 dflt="$dflt medium"
2974                         fi
2975                         if $test -d /lib/large || $test -d /usr/lib/large; then
2976                                 dflt="$dflt large"
2977                         fi
2978                         if $test -d /lib/huge || $test -d /usr/lib/huge; then
2979                                 dflt="$dflt huge"
2980                         fi
2981                 esac
2982         fi;;
2983 *) dflt="$models";;
2984 esac
2985 $cat <<EOM
2986  
2987 Some systems have different model sizes.  On most systems they are called
2988 small, medium, large, and huge.  On the PDP11 they are called unsplit and
2989 split.  If your system doesn't support different memory models, say "none".
2990 If you wish to force everything to one memory model, say "none" here and
2991 put the appropriate flags later when it asks you for other cc and ld flags.
2992 Venix systems may wish to put "none" and let the compiler figure things out.
2993 (In the following question multiple model names should be space separated.)
2994
2995 EOM
2996 rp="Which memory models are supported?"
2997 . ./myread
2998 models="$ans"
2999
3000 case "$models" in
3001 none)
3002         small=''
3003         medium=''
3004         large=''
3005         huge=''
3006         unsplit=''
3007         split=''
3008         ;;
3009 *split)
3010         case "$split" in
3011         '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3012                          $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3013                         dflt='-i'
3014                 else
3015                         dflt='none'
3016                 fi;;
3017         *) dflt="$split";;
3018         esac
3019         rp="What flag indicates separate I and D space?"
3020         . ./myread
3021         tans="$ans"
3022         case "$tans" in
3023         none) tans='';;
3024         esac
3025         split="$tans"
3026         unsplit='';;
3027 *large*|*small*|*medium*|*huge*)
3028         case "$models" in
3029         *large*)
3030                 case "$large" in
3031                 '') dflt='-Ml';;
3032                 *) dflt="$large";;
3033                 esac
3034         rp="What flag indicates large model?"
3035         . ./myread
3036         tans="$ans"
3037         case "$tans" in
3038         none) tans='';
3039         esac
3040         large="$tans";;
3041         *) large='';;
3042         esac
3043         case "$models" in
3044         *huge*) case "$huge" in
3045                 '') dflt='-Mh';;
3046                 *) dflt="$huge";;
3047                 esac
3048                 rp="What flag indicates huge model?"
3049                 . ./myread
3050                 tans="$ans"
3051                 case "$tans" in
3052                 none) tans='';
3053                 esac
3054                 huge="$tans";;
3055         *) huge="$large";;
3056         esac
3057         case "$models" in
3058         *medium*) case "$medium" in
3059                 '') dflt='-Mm';;
3060                 *) dflt="$medium";;
3061                 esac
3062                 rp="What flag indicates medium model?"
3063                 . ./myread
3064                 tans="$ans"
3065                 case "$tans" in
3066                 none) tans='';
3067                 esac
3068                 medium="$tans";;
3069         *) medium="$large";;
3070         esac
3071         case "$models" in
3072         *small*) case "$small" in
3073                 '') dflt='none';;
3074                 *) dflt="$small";;
3075                 esac
3076                 rp="What flag indicates small model?"
3077                 . ./myread
3078                 tans="$ans"
3079                 case "$tans" in
3080                 none) tans='';
3081                 esac
3082                 small="$tans";;
3083         *) small='';;
3084         esac
3085         ;;
3086 *)
3087         echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
3088         ;;
3089 esac
3090
3091 : see if we need a special compiler
3092 echo " "
3093 if ./usg; then
3094         case "$cc" in
3095         '') case "$Mcc" in
3096                 /*) dflt='Mcc';;
3097                 *) case "$large" in
3098                         -M*) dflt='cc';;
3099                         *)      if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3100                                         if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3101                                                 dflt='cc'
3102                                         else
3103                                                 dflt='cc -M'
3104                                         fi
3105                                 else
3106                                         dflt='cc'
3107                                 fi;;
3108                         esac;;
3109                 esac;;
3110         *)  dflt="$cc";;
3111         esac
3112         $cat <<'EOM'
3113 On some systems the default C compiler will not resolve multiple global
3114 references that happen to have the same name.  On some such systems the "Mcc"
3115 command may be used to force these to be resolved.  On other systems a "cc -M"
3116 command is required.  (Note that the -M flag on other systems indicates a
3117 memory model to use!) If you have the Gnu C compiler, you might wish to use
3118 that instead.
3119
3120 EOM
3121         rp="What command will force resolution on this system?"
3122         . ./myread
3123         cc="$ans"
3124 else
3125         case "$cc" in
3126         '') dflt=cc;;
3127         *) dflt="$cc";;
3128         esac
3129         rp="Use which C compiler?"
3130         . ./myread
3131         cc="$ans"
3132 fi
3133 echo " "
3134 echo "Checking for GNU cc in disguise and/or its version number..." >&4
3135 $cat >gccvers.c <<EOM
3136 #include <stdio.h>
3137 int main() {
3138 #ifdef __GNUC__
3139 #ifdef __VERSION__
3140         printf("%s\n", __VERSION__);
3141 #else
3142         printf("%s\n", "1");
3143 #endif
3144 #endif
3145         exit(0);
3146 }
3147 EOM
3148 if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3149         gccversion=`./gccvers`
3150         case "$gccversion" in
3151         '') echo "You are not using GNU cc." ;;
3152         *)  echo "You are using GNU cc $gccversion." ;;
3153         esac
3154 else
3155         echo " "
3156         echo "*** WHOA THERE!!! ***" >&4
3157         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
3158         case "$knowitall" in
3159         '')
3160         echo "    You'd better start hunting for one and let me know about it." >&4
3161                 exit 1
3162                 ;;
3163         esac
3164 fi
3165 $rm -f gccvers*
3166 case "$gccversion" in
3167 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
3168 esac
3169
3170 : What should the include directory be ?
3171 echo " "
3172 $echo $n "Hmm...  $c"
3173 dflt='/usr/include'
3174 incpath=''
3175 mips_type=''
3176 if $test -f /bin/mips && /bin/mips; then
3177         echo "Looks like a MIPS system..."
3178         $cat >usr.c <<'EOCP'
3179 #ifdef SYSTYPE_BSD43
3180 /bsd43
3181 #endif
3182 EOCP
3183         if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3184                 dflt='/bsd43/usr/include'
3185                 incpath='/bsd43'
3186                 mips_type='BSD 4.3'
3187         else
3188                 mips_type='System V'
3189         fi
3190         $rm -f usr.c usr.out
3191         echo "and you're compiling with the $mips_type compiler and libraries."
3192         xxx_prompt=y
3193         echo "exit 0" >mips
3194 else
3195         echo "Doesn't look like a MIPS system."
3196         xxx_prompt=n
3197         echo "exit 1" >mips
3198 fi
3199 chmod +x mips
3200 $eunicefix mips
3201 echo " "
3202 case "$usrinc" in
3203 '') ;;
3204 *) dflt="$usrinc";;
3205 esac
3206 case "$xxx_prompt" in
3207 y)      fn=d/
3208         rp='Where are the include files you want to use?'
3209         . ./getfile
3210         usrinc="$ans"
3211         ;;
3212 *)      usrinc="$dflt"
3213         ;;
3214 esac
3215
3216 : Set private lib path
3217 case "$plibpth" in
3218 '') if ./mips; then
3219                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3220         fi;;
3221 esac
3222 case "$libpth" in
3223 ' ') dlist='';;
3224 '') dlist="$loclibpth $plibpth $glibpth";;
3225 *) dlist="$libpth";;
3226 esac
3227
3228 : Now check and see which directories actually exist, avoiding duplicates
3229 libpth=''
3230 for xxx in $dlist
3231 do
3232     if $test -d $xxx; then
3233                 case " $libpth " in
3234                 *" $xxx "*) ;;
3235                 *) libpth="$libpth $xxx";;
3236                 esac
3237     fi
3238 done
3239 $cat <<'EOM'
3240
3241 Some systems have incompatible or broken versions of libraries.  Among
3242 the directories listed in the question below, please remove any you
3243 know not to be holding relevant libraries, and add any that are needed.
3244 Say "none" for none.
3245
3246 EOM
3247 case "$libpth" in
3248 '') dflt='none';;
3249 *)
3250         set X $libpth
3251         shift
3252         dflt=${1+"$@"}
3253         ;;
3254 esac
3255 rp="Directories to use for library searches?"
3256 . ./myread
3257 case "$ans" in
3258 none) libpth=' ';;
3259 *) libpth="$ans";;
3260 esac
3261
3262 : Define several unixisms. Hints files or command line options
3263 : can be used to override them.
3264 case "$ar" in
3265 '') ar='ar';;
3266 esac
3267 case "$lib_ext" in
3268 '') lib_ext='.a';;
3269 esac
3270 case "$obj_ext" in
3271 '') obj_ext='.o';;
3272 esac
3273 case "$path_sep" in
3274 '') path_sep=':';;
3275 esac
3276 : Which makefile gets called first.  This is used by make depend.
3277 case "$firstmakefile" in
3278 '') firstmakefile='makefile';;
3279 esac
3280
3281 : compute shared library extension
3282 case "$so" in
3283 '')
3284         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3285                 dflt='sl'
3286         else
3287                 dflt='so'
3288         fi
3289         ;;
3290 *) dflt="$so";;
3291 esac
3292 $cat <<EOM
3293
3294 On some systems, shared libraries may be available.  Answer 'none' if
3295 you want to suppress searching of shared libraries for the remaining
3296 of this configuration.
3297
3298 EOM
3299 rp='What is the file extension used for shared libraries?'
3300 . ./myread
3301 so="$ans"
3302
3303 : Looking for optional libraries
3304 echo " "
3305 echo "Checking for optional libraries..." >&4
3306 case "$libs" in
3307 ' '|'') dflt='';;
3308 *) dflt="$libs";;
3309 esac
3310 case "$libswanted" in
3311 '') libswanted='c_s';;
3312 esac
3313 for thislib in $libswanted; do
3314         
3315         if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3316                 echo "Found -l$thislib (shared)."
3317                 case " $dflt " in
3318                 *"-l$thislib "*);;
3319                 *) dflt="$dflt -l$thislib";;
3320                 esac
3321         elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3322                 echo "Found -l$thislib (shared)."
3323                 case " $dflt " in
3324                 *"-l$thislib "*);;
3325                 *) dflt="$dflt -l$thislib";;
3326                 esac
3327         elif xxx=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3328                 echo "Found -l$thislib."
3329                 case " $dflt " in
3330                 *"-l$thislib "*);;
3331                 *) dflt="$dflt -l$thislib";;
3332                 esac
3333         elif xxx=`./loc $thislib$lib_ext X $libpth`; $test -f "$xxx"; then
3334                 echo "Found -l$thislib."
3335                 case " $dflt " in
3336                 *"-l$thislib "*);;
3337                 *) dflt="$dflt -l$thislib";;
3338                 esac
3339         elif xxx=`./loc lib${thislib}_s$lib_ext X $libpth`; $test -f "$xxx"; then
3340                 echo "Found -l${thislib}_s."
3341                 case " $dflt " in
3342                 *"-l$thislib "*);;
3343                 *) dflt="$dflt -l${thislib}_s";;
3344                 esac
3345         elif xxx=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$xxx"; then
3346                 echo "Found -l$thislib."
3347                 case " $dflt " in
3348                 *"-l$thislib "*);;
3349                 *) dflt="$dflt -l$thislib";;
3350                 esac
3351         else
3352                 echo "No -l$thislib."
3353         fi
3354 done
3355 set X $dflt
3356 shift
3357 dflt="$*"
3358 case "$libs" in
3359 '') dflt="$dflt";;
3360 *) dflt="$libs";;
3361 esac
3362 case "$dflt" in
3363 ' '|'') dflt='none';;
3364 esac
3365
3366 $cat <<EOM
3367  
3368 Some versions of Unix support shared libraries, which make executables smaller
3369 but make load time slightly longer.
3370
3371 On some systems, mostly System V Release 3's, the shared library is included
3372 by putting the option "-lc_s" as the last thing on the cc command line when
3373 linking.  Other systems use shared libraries by default.  There may be other
3374 libraries needed to compile $package on your machine as well.  If your system
3375 needs the "-lc_s" option, include it here.  Include any other special libraries
3376 here as well.  Say "none" for none.
3377 EOM
3378
3379 echo " "
3380 rp="Any additional libraries?"
3381 . ./myread
3382 case "$ans" in
3383 none) libs=' ';;
3384 *) libs="$ans";;
3385 esac
3386
3387 : see how we invoke the C preprocessor
3388 echo " "
3389 echo "Now, how can we feed standard input to your C preprocessor..." >&4
3390 cat <<'EOT' >testcpp.c
3391 #define ABC abc
3392 #define XYZ xyz
3393 ABC.XYZ
3394 EOT
3395 cd ..
3396 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3397 chmod 755 cppstdin
3398 wrapper=`pwd`/cppstdin
3399 ok='false'
3400 cd UU
3401
3402 if $test "X$cppstdin" != "X" && \
3403         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3404         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3405 then
3406         echo "You used to use $cppstdin $cppminus so we'll use that again."
3407         case "$cpprun" in
3408         '') echo "But let's see if we can live without a wrapper..." ;;
3409         *)
3410                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3411                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3412                 then
3413                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3414                         ok='true'
3415                 else
3416                         echo "(However, $cpprun $cpplast does not work, let's see...)"
3417                 fi
3418                 ;;
3419         esac
3420 else
3421         case "$cppstdin" in
3422         '') ;;
3423         *)
3424                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3425                 ;;
3426         esac
3427 fi
3428
3429 if $ok; then
3430         : nothing
3431 elif echo 'Maybe "'"$cc"' -E" will work...'; \
3432         $cc -E <testcpp.c >testcpp.out 2>&1; \
3433         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3434         echo "Yup, it does."
3435         x_cpp="$cc -E"
3436         x_minus='';
3437 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3438         $cc -E - <testcpp.c >testcpp.out 2>&1; \
3439         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3440         echo "Yup, it does."
3441         x_cpp="$cc -E"
3442         x_minus='-';
3443 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3444         $cc -P <testcpp.c >testcpp.out 2>&1; \
3445         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3446         echo "Yipee, that works!"
3447         x_cpp="$cc -P"
3448         x_minus='';
3449 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3450         $cc -P - <testcpp.c >testcpp.out 2>&1; \
3451         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3452         echo "At long last!"
3453         x_cpp="$cc -P"
3454         x_minus='-';
3455 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3456         $cpp <testcpp.c >testcpp.out 2>&1; \
3457         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3458         echo "It works!"
3459         x_cpp="$cpp"
3460         x_minus='';
3461 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3462         $cpp - <testcpp.c >testcpp.out 2>&1; \
3463         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3464         echo "Hooray, it works!  I was beginning to wonder."
3465         x_cpp="$cpp"
3466         x_minus='-';
3467 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
3468         $wrapper <testcpp.c >testcpp.out 2>&1; \
3469         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3470         x_cpp="$wrapper"
3471         x_minus=''
3472         echo "Eureka!"
3473 else
3474         dflt=''
3475         rp="No dice.  I can't find a C preprocessor.  Name one:"
3476         . ./myread
3477         x_cpp="$ans"
3478         x_minus=''
3479         $x_cpp <testcpp.c >testcpp.out 2>&1
3480         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3481                 echo "OK, that will do." >&4
3482         else
3483 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
3484                 exit 1
3485         fi
3486 fi
3487
3488 case "$ok" in
3489 false)
3490         cppstdin="$x_cpp"
3491         cppminus="$x_minus"
3492         cpprun="$x_cpp"
3493         cpplast="$x_minus"
3494         set X $x_cpp
3495         shift
3496         case "$1" in
3497         "$cpp")
3498                 echo "Perhaps can we force $cc -E using a wrapper..."
3499                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3500                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3501                 then
3502                         echo "Yup, we can."
3503                         cppstdin="$wrapper"
3504                         cppminus='';
3505                 else
3506                         echo "Nope, we'll have to live without it..."
3507                 fi
3508                 ;;
3509         esac
3510         case "$cpprun" in
3511         "$wrapper")
3512                 cpprun=''
3513                 cpplast=''
3514                 ;;
3515         esac
3516         ;;
3517 esac
3518
3519 case "$cppstdin" in
3520 "$wrapper") ;;
3521 *) $rm -f $wrapper;;
3522 esac
3523 $rm -f testcpp.c testcpp.out
3524
3525 : determine optimize, if desired, or use for debug flag also
3526 case "$optimize" in
3527 ' ') dflt='none';;
3528 '') dflt='-O';;
3529 *) dflt="$optimize";;
3530 esac
3531 $cat <<EOH
3532
3533 Some C compilers have problems with their optimizers.  By default, $package
3534 compiles with the -O flag to use the optimizer.  Alternately, you might want
3535 to use the symbolic debugger, which uses the -g flag (on traditional Unix
3536 systems).  Either flag can be specified here.  To use neither flag, specify
3537 the word "none".
3538
3539 EOH
3540 rp="What optimizer/debugger flag should be used?"
3541 . ./myread
3542 optimize="$ans"
3543 case "$optimize" in
3544 'none') optimize=" ";;
3545 esac
3546
3547 dflt=''
3548 : We will not override a previous value, but we might want to
3549 : augment a hint file
3550 case "$hint" in
3551 none|recommended)
3552         case "$gccversion" in
3553         1*) dflt='-fpcc-struct-return' ;;
3554         esac
3555         case "$optimize" in
3556         *-g*) dflt="$dflt -DDEBUGGING";;
3557         esac
3558         case "$gccversion" in
3559         2*) if test -d /etc/conf/kconfig.d &&
3560                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3561                 then
3562                         dflt="$dflt -posix"
3563                 fi
3564                 ;;
3565         esac
3566         ;;
3567 esac
3568
3569 case "$mips_type" in
3570 *BSD*|'') inclwanted="$locincpth $usrinc";;
3571 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3572 esac
3573 for thisincl in $inclwanted; do
3574         if $test -d $thisincl; then
3575                 if $test x$thisincl != x$usrinc; then
3576                         case "$dflt" in
3577                         *$thisincl*);;
3578                         *) dflt="$dflt -I$thisincl";;
3579                         esac
3580                 fi
3581         fi
3582 done
3583
3584 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3585         xxx=true;
3586 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3587         xxx=true;
3588 else
3589         xxx=false;
3590 fi;
3591 if $xxx; then
3592         case "$dflt" in
3593         *$2*);;
3594         *) dflt="$dflt -D$2";;
3595         esac;
3596 fi'
3597
3598 if ./osf1; then
3599         set signal.h __LANGUAGE_C__; eval $inctest
3600 else
3601         set signal.h LANGUAGE_C; eval $inctest
3602 fi
3603 set signal.h _NO_PROTO; eval $inctest
3604
3605 case "$hint" in
3606 none|recommended) dflt="$ccflags $dflt" ;;
3607 *) dflt="$ccflags";;
3608 esac
3609
3610 case "$dflt" in
3611 ''|' ') dflt=none;;
3612 esac
3613 $cat <<EOH
3614
3615 Your C compiler may want other flags.  For this question you should include
3616 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3617 but you should NOT include libraries or ld flags like -lwhatever.  If you
3618 want $package to honor its debug switch, you should include -DDEBUGGING here.
3619 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3620 -DHIDEMYMALLOC or -DCRIPPLED_CC.
3621
3622 To use no flags, specify the word "none".
3623
3624 EOH
3625 set X $dflt
3626 shift
3627 dflt=${1+"$@"}
3628 rp="Any additional cc flags?"
3629 . ./myread
3630 case "$ans" in
3631 none) ccflags='';;
3632 *) ccflags="$ans";;
3633 esac
3634
3635 : the following weeds options from ccflags that are of no interest to cpp
3636 cppflags="$ccflags"
3637 case "$gccversion" in
3638 1*) cppflags="$cppflags -D__GNUC__"
3639 esac
3640 case "$mips_type" in
3641 '');;
3642 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3643 esac
3644 case "$cppflags" in
3645 '');;
3646 *)
3647         echo " "
3648         echo "Let me guess what the preprocessor flags are..." >&4
3649         set X $cppflags
3650         shift
3651         cppflags=''
3652         $cat >cpp.c <<'EOM'
3653 #define BLURFL foo
3654
3655 BLURFL xx LFRULB
3656 EOM
3657         previous=''
3658         for flag in $*
3659         do
3660                 case "$flag" in
3661                 -*) ftry="$flag";;
3662                 *) ftry="$previous $flag";;
3663                 esac
3664                 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
3665                         >cpp1.out 2>/dev/null && \
3666                         $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3667                         >cpp2.out 2>/dev/null && \
3668                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3669                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3670                 then
3671                         cppflags="$cppflags $ftry"
3672                         previous=''
3673                 else
3674                         previous="$flag"
3675                 fi
3676         done
3677         set X $cppflags
3678         shift
3679         cppflags=${1+"$@"}
3680         case "$cppflags" in
3681         *-*)  echo "They appear to be: $cppflags";;
3682         esac
3683         $rm -f cpp.c cpp?.out
3684         ;;
3685 esac
3686
3687 : flags used in final linking phase
3688
3689 case "$ldflags" in
3690 '') if ./venix; then
3691                 dflt='-i -z'
3692         else
3693                 dflt=''
3694         fi
3695         case "$ccflags" in
3696         *-posix*) dflt="$dflt -posix" ;;
3697         esac
3698         ;;
3699 *) dflt="$ldflags";;
3700 esac
3701
3702 : Try to guess additional flags to pick up local libraries.
3703 for thislibdir in $libpth; do
3704         case " $loclibpth " in
3705         *" $thislibdir "*)
3706                 case "$dflt " in 
3707                 *"-L$thislibdir "*) ;;
3708                 *)  dflt="$dflt -L$thislibdir" ;;
3709                 esac
3710                 ;;
3711         esac
3712 done
3713
3714 case "$dflt" in
3715 '') dflt='none' ;;
3716 esac
3717
3718 $cat <<EOH
3719
3720 Your C linker may need flags.  For this question you should
3721 include -L/whatever and any other flags used by the C linker, but you
3722 should NOT include libraries like -lwhatever.
3723
3724 Make sure you include the appropriate -L/path flags if your C linker
3725 does not normally search all of the directories you specified above,
3726 namely
3727         $libpth
3728 To use no flags, specify the word "none".
3729
3730 EOH
3731
3732 rp="Any additional ld flags (NOT including libraries)?"
3733 . ./myread
3734 case "$ans" in
3735 none) ldflags='';;
3736 *) ldflags="$ans";;
3737 esac
3738 rmlist="$rmlist pdp11"
3739
3740 : coherency check
3741 echo " "
3742 echo "Checking your choice of C compiler and flags for coherency..." >&4
3743 set X $cc $optimize $ccflags $ldflags try.c -o try
3744 shift
3745 $cat >try.msg <<EOM
3746 I've tried to compile and run a simple program with:
3747
3748         $*
3749         ./try
3750
3751 and I got the following output:
3752
3753 EOM
3754 $cat > try.c <<'EOF'
3755 #include <stdio.h>
3756 main() { exit(0); }
3757 EOF
3758 dflt=y
3759 if sh -c "$cc $optimize $ccflags try.c -o try $ldflags" >>try.msg 2>&1; then
3760         if sh -c './try' >>try.msg 2>&1; then
3761                 dflt=n
3762         else
3763                 echo "The program compiled OK, but exited with status $?." >>try.msg
3764                 rp="You have a problem.  Shall I abort Configure"
3765                 dflt=y
3766         fi
3767 else
3768         echo "I can't compile the test program." >>try.msg
3769         rp="You have a BIG problem.  Shall I abort Configure"
3770         dflt=y
3771 fi
3772 case "$dflt" in
3773 y)
3774         $cat try.msg
3775         case "$knowitall" in
3776         '')
3777                 echo "(The supplied flags might be incorrect with this C compiler.)"
3778                 ;;
3779         *) dflt=n;;
3780         esac
3781         echo " "
3782         . ./myread
3783         case "$ans" in
3784         n*|N*) ;;
3785         *)      echo "Ok.  Stopping Configure." >&4
3786                 exit 1
3787                 ;;
3788         esac
3789         ;;
3790 n) echo "OK, that should do.";;
3791 esac
3792 $rm -f try try.* core
3793
3794 echo " "
3795 echo "Checking for GNU C Library..." >&4
3796 cat >gnulibc.c <<EOM
3797 int
3798 main()
3799 {
3800   return __libc_main();
3801 }
3802 EOM
3803 if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3804     ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3805         val="$define"
3806         echo "You are using the GNU C Library"
3807 else
3808         val="$undef"
3809         echo "You are not using the GNU C Library"
3810 fi
3811 $rm -f gnulibc*
3812 set d_gnulibc
3813 eval $setvar
3814
3815 : see if nm is to be used to determine whether a symbol is defined or not
3816 case "$usenm" in
3817 '')
3818         case "$d_gnulibc" in
3819         $define)
3820                 dflt=n
3821                 ;;
3822         *)
3823                 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3824                 if $test $dflt -gt 20; then
3825                         dflt=y
3826                 else
3827                         dflt=n
3828                 fi
3829                 ;;
3830         esac
3831         ;;
3832 *)
3833         case "$usenm" in
3834         true) dflt=y;;
3835         *) dflt=n;;
3836         esac
3837         ;;
3838 esac
3839 $cat <<EOM
3840
3841 I can use 'nm' to extract the symbols from your C libraries. This is a time
3842 consuming task which may generate huge output on the disk (up to 3 megabytes)
3843 but that should make the symbols extraction faster. The alternative is to skip
3844 the 'nm' extraction part and to compile a small test program instead to
3845 determine whether each symbol is present. If you have a fast C compiler and/or
3846 if your 'nm' output cannot be parsed, this may be the best solution.
3847 You shouldn't let me use 'nm' if you have the GNU C Library.
3848
3849 EOM
3850 rp='Shall I use nm to extract C symbols from the libraries?'
3851 . ./myread
3852 case "$ans" in
3853 n|N) usenm=false;;
3854 *) usenm=true;;
3855 esac
3856
3857 runnm=$usenm
3858 case "$reuseval" in
3859 true) runnm=false;;
3860 esac
3861
3862 : nm options which may be necessary
3863 case "$nm_opt" in
3864 '') if $test -f /mach_boot; then
3865                 nm_opt=''
3866         elif $test -d /usr/ccs/lib; then
3867                 nm_opt='-p'
3868         elif $test -f /dgux; then
3869                 nm_opt='-p'
3870         else
3871                 nm_opt=''
3872         fi;;
3873 esac
3874
3875 : nm options which may be necessary for shared libraries but illegal
3876 : for archive libraries.  Thank you, Linux.
3877 case "$nm_so_opt" in
3878 '')     case "$myuname" in
3879         *linux*)
3880                 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3881                         nm_so_opt='--dynamic'
3882                 fi
3883                 ;;
3884         esac
3885         ;;
3886 esac
3887
3888 case "$runnm" in
3889 true)
3890 : get list of predefined functions in a handy place
3891 echo " "
3892 case "$libc" in
3893 '') libc=unknown
3894         case "$libs" in
3895         *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth`
3896         esac
3897         ;;
3898 esac
3899 libnames='';
3900 case "$libs" in
3901 '') ;;
3902 *)  for thislib in $libs; do
3903         case "$thislib" in
3904         -lc|-lc_s)
3905                 : Handle C library specially below.
3906                 ;;
3907         -l*)
3908                 thislib=`echo $thislib | $sed -e 's/^-l//'`
3909                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3910                         :
3911                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3912                         :
3913                 elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then
3914                         :
3915                 elif try=`./loc $thislib$lib_ext X $libpth`; $test -f "$try"; then
3916                         :
3917                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3918                         :
3919                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3920                         :
3921                 elif try=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$try"; then
3922                         :
3923                 else
3924                         try=''
3925                 fi
3926                 libnames="$libnames $try"
3927                 ;;
3928         *) libnames="$libnames $thislib" ;;
3929         esac
3930         done
3931         ;;
3932 esac
3933 xxx=normal
3934 case "$libc" in
3935 unknown)
3936         set /lib/libc.$so
3937         for xxx in $libpth; do
3938                 $test -r $1 || set $xxx/libc.$so
3939                 : The messy sed command sorts on library version numbers.
3940                 $test -r $1 || \
3941                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3942                                 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3943                                 h
3944                                 s/[0-9][0-9]*/0000&/g
3945                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3946                                 G
3947                                 s/\n/ /' | \
3948                         sort | $sed -e 's/^.* //'`
3949                 eval set \$$#
3950         done
3951         $test -r $1 || set /usr/ccs/lib/libc.$so
3952         $test -r $1 || set /lib/libsys_s$lib_ext
3953         ;;
3954 *)
3955         set blurfl
3956         ;;
3957 esac
3958 if $test -r "$1"; then
3959         echo "Your (shared) C library seems to be in $1."
3960         libc="$1"
3961 elif $test -r /lib/libc && $test -r /lib/clib; then
3962         echo "Your C library seems to be in both /lib/clib and /lib/libc."
3963         xxx=apollo
3964         libc='/lib/clib /lib/libc'
3965         if $test -r /lib/syslib; then
3966                 echo "(Your math library is in /lib/syslib.)"
3967                 libc="$libc /lib/syslib"
3968         fi
3969 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3970         echo "Your C library seems to be in $libc, as you said before."
3971 elif $test -r $incpath/usr/lib/libc$lib_ext; then
3972         libc=$incpath/usr/lib/libc$lib_ext;
3973         echo "Your C library seems to be in $libc.  That's fine."
3974 elif $test -r /lib/libc$lib_ext; then
3975         libc=/lib/libc$lib_ext;
3976         echo "Your C library seems to be in $libc.  You're normal."
3977 else
3978         if tans=`./loc libc$lib_ext blurfl/dyick $libpth`; $test -r "$tans"; then
3979                 :
3980         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3981                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3982         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3983                 :
3984         elif tans=`./loc Slibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
3985                 :
3986         elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
3987                 :
3988         else
3989                 tans=`./loc Llibc$lib_ext blurfl/dyick $xlibpth`
3990         fi
3991         if $test -r "$tans"; then
3992                 echo "Your C library seems to be in $tans, of all places."
3993                 libc=$tans
3994         else
3995                 libc='blurfl'
3996         fi
3997 fi
3998 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3999         dflt="$libc"
4000         cat <<EOM
4001
4002 If the guess above is wrong (which it might be if you're using a strange
4003 compiler, or your machine supports multiple models), you can override it here.
4004
4005 EOM
4006 else
4007         dflt=''
4008         echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4009         cat >&4 <<EOM
4010 I can't seem to find your C library.  I've looked in the following places:
4011
4012 EOM
4013         $sed 's/^/      /' libpath
4014         cat <<EOM
4015
4016 None of these seems to contain your C library. I need to get its name...
4017
4018 EOM
4019 fi
4020 fn=f
4021 rp='Where is your C library?'
4022 . ./getfile
4023 libc="$ans"
4024
4025 echo " "
4026 echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4027 set X `cat libnames`
4028 shift
4029 xxx=files
4030 case $# in 1) xxx=file; esac
4031 echo "Extracting names from the following $xxx for later perusal:" >&4
4032 echo " "
4033 $sed 's/^/      /' libnames >&4
4034 echo " "
4035 $echo $n "This may take a while...$c" >&4
4036
4037 : Linux may need the special Dynamic option to nm for shared libraries.
4038 : In general, this is stored in the nm_so_opt variable.
4039 : Unfortunately, that option may be fatal on non-shared libraries.
4040 for nm_libs_ext in $*; do
4041     case $nm_libs_ext in
4042         *$so*)  nm $nm_so_opt $nm_opt $nm_libs_ext 2>/dev/null ;;
4043         *)              nm $nm_opt $nm_libs_ext 2>/dev/null ;;
4044         esac
4045 done > libc.tmp
4046
4047 $echo $n ".$c"
4048 $grep fprintf libc.tmp > libc.ptf
4049 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
4050 xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
4051 xxx='[ADTSIW]'
4052 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *_[_.]*//p' -e 's/^.* $xxx  *//p'";\
4053         eval $xscan;\
4054         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4055                 eval $xrun
4056 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
4057         eval $xscan;\
4058         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4059                 eval $xrun
4060 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
4061         eval $xscan;\
4062         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4063                 eval $xrun
4064 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
4065         eval $xscan;\
4066         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4067                 eval $xrun
4068 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
4069         eval $xscan;\
4070         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4071                 eval $xrun
4072 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
4073         eval $xscan;\
4074         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4075                 eval $xrun
4076 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
4077                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
4078         eval $xscan;\
4079         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4080                 eval $xrun
4081 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
4082         eval $xscan;\
4083         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4084                 eval $xrun
4085 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
4086         eval $xscan;\
4087         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4088                 eval $xrun
4089 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
4090         eval $xscan;\
4091         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4092                 eval $xrun
4093 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
4094         eval $xscan;\
4095         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
4096                 eval $xrun
4097 else
4098         nm -p $* 2>/dev/null >libc.tmp
4099         $grep fprintf libc.tmp > libc.ptf
4100         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
4101                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
4102         then
4103                 nm_opt='-p'
4104                 eval $xrun
4105         else
4106                 echo " "
4107                 echo "nm didn't seem to work right. Trying ar instead..." >&4
4108                 com=''
4109                 if ar t $libc > libc.tmp; then
4110                         for thisname in $libnames; do
4111                                 ar t $thisname >>libc.tmp
4112                         done
4113                         $sed -e 's/\.o$//' < libc.tmp > libc.list
4114                         echo "Ok." >&4
4115                 else
4116                         echo "ar didn't seem to work right." >&4
4117                         echo "Maybe this is a Cray...trying bld instead..." >&4
4118                         if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list
4119                         then
4120                                 for thisname in $libnames; do
4121                                         bld t $libnames | \
4122                                         $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
4123                                         ar t $thisname >>libc.tmp
4124                                 done
4125                                 echo "Ok." >&4
4126                         else
4127                                 echo "That didn't work either.  Giving up." >&4
4128                                 exit 1
4129                         fi
4130                 fi
4131         fi
4132 fi
4133 nm_extract="$com"
4134 if $test -f /lib/syscalls.exp; then
4135         echo " "
4136         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
4137         $sed -n 's/^\([^        ]*\)[   ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
4138 fi
4139 ;;
4140 esac
4141 $rm -f libnames libpath
4142
4143 : determine filename position in cpp output
4144 echo " "
4145 echo "Computing filename position in cpp output for #include directives..." >&4
4146 echo '#include <stdio.h>' > foo.c
4147 $cat >fieldn <<EOF
4148 $startsh
4149 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
4150 $grep '^[       ]*#.*stdio\.h' | \
4151 while read cline; do
4152         pos=1
4153         set \$cline
4154         while $test \$# -gt 0; do
4155                 if $test -r \`echo \$1 | $tr -d '"'\`; then
4156                         echo "\$pos"
4157                         exit 0
4158                 fi
4159                 shift
4160                 pos=\`expr \$pos + 1\`
4161         done
4162 done
4163 EOF
4164 chmod +x fieldn
4165 fieldn=`./fieldn`
4166 $rm -f foo.c fieldn
4167 case $fieldn in
4168 '') pos='???';;
4169 1) pos=first;;
4170 2) pos=second;;
4171 3) pos=third;;
4172 *) pos="${fieldn}th";;
4173 esac
4174 echo "Your cpp writes the filename in the $pos field of the line."
4175
4176 : locate header file
4177 $cat >findhdr <<EOF
4178 $startsh
4179 wanted=\$1
4180 name=''
4181 if test -f $usrinc/\$wanted; then
4182         echo "$usrinc/\$wanted"
4183         exit 0
4184 fi
4185 awkprg='{ print \$$fieldn }'
4186 echo "#include <\$wanted>" > foo\$\$.c
4187 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
4188 $grep "^[       ]*#.*\$wanted" | \
4189 while read cline; do
4190         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
4191         case "\$name" in
4192         */\$wanted) echo "\$name"; exit 0;;
4193         *) name='';;
4194         esac;
4195 done;
4196 $rm -f foo\$\$.c;
4197 case "\$name" in
4198 '') exit 1;;
4199 esac
4200 EOF
4201 chmod +x findhdr
4202
4203 : define an alternate in-header-list? function
4204 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4205 cont=true; xxf="echo \"<\$1> found.\" >&4";
4206 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4207 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4208 esac;
4209 case $# in 4) instead=instead;; *) instead="at last";; esac;
4210 while $test "$cont"; do
4211         xxx=`./findhdr $1`
4212         var=$2; eval "was=\$$2";
4213         if $test "$xxx" && $test -r "$xxx";
4214         then eval $xxf;
4215         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
4216                 cont="";
4217         else eval $xxnf;
4218         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
4219         set $yyy; shift; shift; yyy=$@;
4220         case $# in 0) cont="";;
4221         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4222                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4223         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4224                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4225         esac;
4226 done;
4227 while $test "$yyy";
4228 do set $yyy; var=$2; eval "was=\$$2";
4229         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
4230         set $yyy; shift; shift; yyy=$@;
4231 done'
4232
4233 : see if dld is available
4234 set dld.h i_dld
4235 eval $inhdr
4236
4237 : is a C symbol defined?
4238 csym='tlook=$1;
4239 case "$3" in
4240 -v) tf=libc.tmp; tc=""; tdc="";;
4241 -a) tf=libc.tmp; tc="[0]"; tdc="[]";;
4242 *) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
4243 esac;
4244 tx=yes;
4245 case "$reuseval-$4" in
4246 true-) ;;
4247 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
4248 esac;
4249 case "$tx" in
4250 yes)
4251         case "$runnm" in
4252         true)
4253                 if $contains $tlook $tf >/dev/null 2>&1;
4254                 then tval=true;
4255                 else tval=false;
4256                 fi;;
4257         *)
4258                 echo "main() { extern short $1$tdc; printf(\"%hd\", $1$tc); }" > t.c;
4259                 if $cc $ccflags $ldflags -o t t.c $libs >/dev/null 2>&1;
4260                 then tval=true;
4261                 else tval=false;
4262                 fi;
4263                 $rm -f t t.c;;
4264         esac;;
4265 *)
4266         case "$tval" in
4267         $define) tval=true;;
4268         *) tval=false;;
4269         esac;;
4270 esac;
4271 eval "$2=$tval"'
4272
4273 : define an is-in-libc? function
4274 inlibc='echo " "; td=$define; tu=$undef;
4275 sym=$1; var=$2; eval "was=\$$2";
4276 tx=yes;
4277 case "$reuseval$was" in
4278 true) ;;
4279 true*) tx=no;;
4280 esac;
4281 case "$tx" in
4282 yes)
4283         set $sym tres -f;
4284         eval $csym;
4285         case "$tres" in
4286         true)
4287                 echo "$sym() found." >&4;
4288                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
4289         *)
4290                 echo "$sym() NOT found." >&4;
4291                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
4292         esac;;
4293 *)
4294         case "$was" in
4295         $define) echo "$sym() found." >&4;;
4296         *) echo "$sym() NOT found." >&4;;
4297         esac;;
4298 esac'
4299
4300 : see if dlopen exists
4301 xxx_runnm="$runnm"
4302 runnm=false
4303 set dlopen d_dlopen
4304 eval $inlibc
4305 runnm="$xxx_runnm"
4306
4307 : determine which dynamic loading, if any, to compile in
4308 echo " "
4309 dldir="ext/DynaLoader"
4310 case "$usedl" in
4311 $define|y|true)
4312         dflt='y'
4313         usedl="$define"
4314         ;;
4315 $undef|n|false)
4316         dflt='n'
4317         usedl="$undef"
4318         ;;
4319 *) 
4320         dflt='n'
4321         case "$d_dlopen" in
4322             $define) dflt='y' ;;
4323         esac
4324         case "$i_dld" in
4325             $define) dflt='y' ;;
4326         esac
4327         : Does a dl_xxx.xs file exist for this operating system
4328         $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4329         ;;
4330 esac
4331 rp="Do you wish to use dynamic loading?"
4332 . ./myread
4333 usedl="$ans"
4334 case "$ans" in
4335 y*) usedl="$define"
4336         case "$dlsrc" in
4337         '')
4338                 if $test -f ../$dldir/dl_${osname}.xs ; then
4339                         dflt="$dldir/dl_${osname}.xs"
4340                 elif $test "$d_dlopen" = "$define" ; then
4341                         dflt="$dldir/dl_dlopen.xs"
4342                 elif $test "$i_dld" = "$define" ; then
4343                         dflt="$dldir/dl_dld.xs"
4344                 else
4345                         dflt=''
4346                 fi
4347                 ;;
4348         *)      dflt="$dldir/$dlsrc"
4349                 ;;
4350         esac
4351     echo "The following dynamic loading files are available:"
4352         : Can not go over to $dldir because getfile has path hard-coded in.
4353     cd ..; ls -C $dldir/dl*.xs; cd UU
4354     rp="Source file to use for dynamic loading"
4355     fn="fne"
4356     . ./getfile
4357         usedl="$define"
4358         : emulate basename
4359         dlsrc=`echo $ans | $sed -e 's@.*/\([^/]*\)$@\1@'`
4360
4361     $cat << EOM
4362
4363 Some systems may require passing special flags to $cc -c to
4364 compile modules that will be used to create a shared library.
4365 To use no flags, say "none".
4366
4367 EOM
4368     case "$cccdlflags" in
4369     '') case "$gccversion" in
4370                 '') case "$osname" in
4371                         hpux)   dflt='+z' ;;
4372                         next)   dflt='none' ;;
4373                         solaris|svr4*|esix*) dflt='-Kpic' ;;
4374                         irix*)  dflt='-KPIC' ;;
4375                         sunos)  dflt='-pic' ;;
4376                         *)      dflt='none' ;;
4377                     esac ;;
4378                 *)      dflt='-fpic' ;;
4379             esac ;;
4380     *)  dflt="$cccdlflags" ;;
4381     esac
4382     rp="Any special flags to pass to $cc -c to compile shared library modules?"
4383     . ./myread
4384     case "$ans" in
4385     none) cccdlflags=' ' ;;
4386     *) cccdlflags="$ans" ;;
4387     esac
4388
4389     cat << EOM
4390
4391 Some systems use ld to create libraries that can be dynamically loaded,
4392 while other systems (such as those using ELF) use $cc.
4393
4394 EOM
4395         case "$ld" in
4396         '')     $cat >try.c <<'EOM'
4397 /* Test for whether ELF binaries are produced */
4398 #include <fcntl.h>
4399 #include <stdlib.h>
4400 main() {
4401         char b[4];
4402         int i = open("a.out",O_RDONLY);
4403         if(i == -1) 
4404                 exit(1); /* fail */
4405         if(read(i,b,4)==4 && b[0]==127 && b[1]=='E' && b[2]=='L' && b[3]=='F')
4406                 exit(0); /* succeed (yes, it's ELF) */
4407         else
4408                 exit(1); /* fail */
4409 }
4410 EOM
4411                 if $cc $ccflags try.c >/dev/null 2>&1 && ./a.out; then
4412                         cat <<EOM
4413 You appear to have ELF support.  I'll use $cc to build dynamic libraries.
4414 EOM
4415                         dflt="$cc"
4416                 else
4417                         echo "I'll use ld to build dynamic libraries."
4418                         dflt='ld'
4419                 fi
4420                 rm -f try.c a.out
4421                 ;;
4422         *)      dflt="$ld"
4423                 ;;
4424         esac
4425
4426     rp="What command should be used to create dynamic libraries?"
4427     . ./myread
4428         ld="$ans"
4429
4430     cat << EOM
4431
4432 Some systems may require passing special flags to $ld to create a
4433 library that can be dynamically loaded.  If your ld flags include
4434 -L/other/path options to locate libraries outside your loader's normal
4435 search path, you may need to specify those -L options here as well.  To
4436 use no flags, say "none".
4437
4438 EOM
4439     case "$lddlflags" in
4440     '') case "$osname" in
4441                         hpux)  dflt='-b' ;;
4442                         linux|irix*)    dflt='-shared' ;;
4443                         next)  dflt='none' ;;
4444                         solaris) dflt='-G' ;;
4445                         sunos) dflt='-assert nodefinitions' ;;
4446                         svr4*|esix*) dflt="-G $ldflags" ;;
4447                 *)     dflt='none' ;;
4448                         esac
4449                         ;;
4450     *) dflt="$lddlflags" ;;
4451     esac
4452
4453 : Try to guess additional flags to pick up local libraries.
4454 for thisflag in $ldflags; do
4455         case "$thisflag" in
4456         -L*)
4457                 case " $dflt " in
4458                 *" $thisflag "*) ;;
4459                 *) dflt="$dflt $thisflag" ;;
4460                 esac
4461                 ;;
4462         esac
4463 done
4464
4465 case "$dflt" in
4466 '') dflt='none' ;;
4467 esac
4468
4469     rp="Any special flags to pass to $ld to create a dynamically loaded library?"
4470     . ./myread
4471     case "$ans" in
4472     none) lddlflags=' ' ;;
4473     *) lddlflags="$ans" ;;
4474     esac
4475
4476         cat <<EOM
4477
4478 Some systems may require passing special flags to $cc to indicate that
4479 the resulting executable will use dynamic linking.  To use no flags,
4480 say "none".
4481
4482 EOM
4483     case "$ccdlflags" in
4484     '') case "$osname" in
4485                 hpux)   dflt='-Wl,-E' ;;
4486                 linux)  dflt='-rdynamic' ;;
4487                 next)   dflt='none' ;;
4488                 sunos)  dflt='none' ;;
4489                 *)      dflt='none' ;;
4490             esac ;;
4491     *)  dflt="$ccdlflags" ;;
4492     esac
4493     rp="Any special flags to pass to $cc to use dynamic loading?"
4494     . ./myread
4495     case "$ans" in
4496     none) ccdlflags=' ' ;;
4497     *) ccdlflags="$ans" ;;
4498     esac
4499     ;;
4500 *)  usedl="$undef"
4501         ld='ld'
4502     dlsrc='dl_none.xs'
4503     lddlflags=''
4504     ccdlflags=''
4505     ;;
4506 esac
4507
4508 also=''
4509 case "$usedl" in
4510 $undef)
4511         # No dynamic loading being used, so don't bother even to prompt.
4512         useshrplib='false'
4513         ;;
4514 *)      case "$useshrplib" in
4515         '')     case "$osname" in
4516                 svr4|dgux|dynixptx|esix|powerux)
4517                         dflt='yes'
4518                         also='Building a shared libperl is required for dynamic loading to work on your system.'
4519                         ;;
4520                 next*)
4521                         case "$osvers" in
4522                         4*)     dflt='yes'
4523                                 also='Building a shared libperl is needed for MAB support.'
4524                                 ;;
4525                         *)      dflt='no'
4526                                 ;;
4527                         esac
4528                         ;;
4529                 sunos)
4530                         dflt='no'
4531                         also='Building a shared libperl will definitely not work on SunOS 4.'
4532                         ;;
4533                 *)      dflt='no'
4534                         ;;
4535                 esac
4536                 ;;
4537         $define|true|[Yy]*)
4538                 dflt='yes'
4539                 ;;
4540         *)      dflt='no'
4541                 ;;
4542         esac
4543         $cat << EOM
4544
4545 The perl executable is normally obtained by linking perlmain.c with
4546 libperl${lib_ext}, any static extensions (usually just DynaLoader), and
4547 any other libraries needed on this system (such as -lm, etc.).  Since
4548 your system supports dynamic loading, it is probably possible to build
4549 a shared libperl.$so.  If you will have more than one executable linked
4550 to libperl.$so, this will significantly reduce the size of each
4551 executable, but it may have a noticeable affect on performance.  The
4552 default is probably sensible for your system.
4553 $also
4554
4555 EOM
4556         rp="Build a shared libperl.$so (y/n)"
4557         . ./myread
4558         case "$ans" in
4559         true|$define|[Yy]*)
4560                 useshrplib='true'
4561                 # Why does next4 have to be so different?
4562                 case "${osname}${osvers}" in
4563                 next4*) xxx='DYLD_LIBRARY_PATH' ;;
4564                 *)              xxx='LD_LIBRARY_PATH' ;;
4565                 esac
4566                 $cat <<EOM >&4
4567
4568 To build perl, you must add the current working directory to your
4569 $xxx environtment variable before running make.  You can do
4570 this with
4571    $xxx=\`pwd\`; export $xxx
4572 for Bourne-style shells, or
4573    setenv $xxx \`pwd\`
4574 for Csh-style shells.  You *MUST* do this before running make.
4575
4576 EOM
4577                 ;;
4578         *)      useshrplib='false' ;;
4579         esac
4580         ;;
4581 esac
4582
4583 case "$useshrplib" in
4584 true)
4585         case "$libperl" in
4586         '')
4587                 # Figure out a good name for libperl.so.  Since it gets stored in
4588                 # a version-specific architecture-dependent library, the version
4589                 # number isn't really that important, except for making cc/ld happy.
4590                 #
4591                 # A name such as libperl.so.3.1
4592                 majmin="libperl.$so.$patchlevel.$subversion"
4593                 # A name such as libperl.so.301
4594                 majonly=`echo $patchlevel $subversion |
4595                         $awk '{printf "%d%02d", $1, $2}'`
4596                 majonly=libperl.$so.$majonly
4597                 # I'd prefer to keep the os-specific stuff here to a minimum, and
4598                 # rely on figuring it out from the naming of libc.
4599                 case "${osname}${osvers}" in
4600                 next4*)
4601                         dflt=libperl.5.$so
4602                         # XXX How handle the --version stuff for MAB?
4603                         ;;
4604                 linux*)  # ld won't link with a bare -lperl otherwise.
4605                         dflt=libperl.$so
4606                         ;;
4607                 *)      # Try to guess based on whether libc has major.minor.
4608                         case "$libc" in
4609                         *libc.$so.[0-9]*.[0-9]*) dflt=$majmin ;;
4610                         *libc.$so.[0-9]*) dflt=$majonly ;;
4611                         *)      dflt=libperl.$so ;;
4612                         esac
4613                         ;;
4614                 esac
4615                 ;;
4616         *)      dflt=$libperl
4617                 ;;
4618         esac
4619         cat << EOM
4620
4621 I need to select a good name for the shared libperl.  If your system uses
4622 library names with major and minor numbers, then you might want something
4623 like $majmin.  Alternatively, if your system uses a single version
4624 number for shared libraries, then you might want to use $majonly.
4625 Or, your system might be quite happy with a simple libperl.$so.
4626
4627 Since the shared libperl will get installed into a version-specific
4628 architecture-dependent directory, the version number of the shared perl
4629 library probably isn't important, so the default should be o.k.
4630
4631 EOM
4632         rp='What name do you want to give to the shared libperl?'
4633         . ./myread
4634         libperl=$ans
4635         echo "Ok, I'll use $libperl"
4636         ;;
4637 *)
4638         libperl="libperl${lib_ext}"
4639         ;;
4640 esac
4641
4642 # Detect old use of shrpdir via undocumented Configure -Dshrpdir
4643 case "$shrpdir" in
4644 '') ;;
4645 *)      $cat >&4 <<EOM
4646 WARNING:  Use of the shrpdir variable for the installation location of
4647 the shared $libperl is not supported.  It was never documented and
4648 will not work in this version.  Let me (chip@atlantic.net)
4649 know of any problems this may cause.
4650
4651 EOM
4652         case "$shrpdir" in
4653         "$archlibexp/CORE")
4654                 $cat >&4 <<EOM
4655 But your current setting of $shrpdir is
4656 the default anyway, so it's harmless.
4657 EOM
4658                 ;;
4659         *)
4660                 $cat >&4 <<EOM
4661 Further, your current attempted setting of $shrpdir
4662 conflicts with the value of $archlibexp/CORE
4663 that installperl will use.
4664 EOM
4665                 ;;
4666         esac
4667         ;;
4668 esac
4669
4670 # How will the perl executable find the installed shared $libperl?
4671 # Add $xxx to ccdlflags.
4672 # If we can't figure out a command-line option, use $shrpenv to
4673 # set env LD_RUN_PATH.  The main perl makefile uses this.
4674 shrpdir=$archlibexp/CORE
4675 xxx=''
4676 tmp_shrpenv=''
4677 if "$useshrplib"; then
4678     case "$osname" in 
4679         solaris|netbsd)
4680                 xxx="-R $shrpdir"
4681                 ;;
4682         linux|irix*)
4683                 xxx="-Wl,-rpath,$shrpdir"
4684                 ;;
4685         *)
4686                 tmp_shrpenv="env LD_RUN_PATH=$shrpdir"
4687                 ;;
4688         esac
4689         case "$xxx" in
4690         '') ;;
4691         *)      ccdlflags="$ccdlflags $xxx"
4692                 cat <<EOM >&4
4693
4694 Adding $xxx to the flags
4695 passed to $ld so that the perl executable will find the 
4696 installed shared $libperl.
4697
4698 EOM
4699                 ;;
4700         esac
4701 fi
4702 # Respect a hint or command-line value.
4703 case "$shrpenv" in
4704 '') shrpenv="$tmp_shrpenv" ;;
4705 esac
4706
4707 : determine where manual pages go
4708 set man1dir man1dir none
4709 eval $prefixit
4710 $cat <<EOM
4711
4712 $spackage has manual pages available in source form.
4713 EOM
4714 case "$nroff" in
4715 nroff)
4716         echo "However, you don't have nroff, so they're probably useless to you."
4717         case "$man1dir" in
4718         '') man1dir="none";;
4719         esac;;
4720 esac
4721 echo "If you don't want the manual sources installed, answer 'none'."
4722 case "$man1dir" in
4723 ' ') dflt=none
4724         ;;
4725 '')
4726         lookpath="$prefixexp/man/man1 $prefixexp/man/l_man/man1"
4727         lookpath="$lookpath $prefixexp/man/p_man/man1"
4728         lookpath="$lookpath $prefixexp/man/u_man/man1"
4729         lookpath="$lookpath $prefixexp/man/man.1"
4730         : If prefix contains 'perl' then we want to keep the man pages
4731         : under the prefix directory.  Otherwise, look in a variety of
4732         : other possible places.  This is debatable, but probably a
4733         : good compromise.  Well, apparently not.
4734         : Experience has shown people expect man1dir to be under prefix,
4735         : so we now always put it there.  Users who want other behavior
4736         : can answer interactively or use a command line option.
4737         : Does user have System V-style man paths.
4738         case "$sysman" in
4739         */?_man*)       dflt=`./loc . $prefixexp/l_man/man1 $lookpath` ;;
4740         *)      dflt=`./loc . $prefixexp/man/man1 $lookpath` ;;
4741         esac
4742         set dflt
4743         eval $prefixup
4744         ;;
4745 *)  dflt="$man1dir"
4746         ;;
4747 esac
4748 echo " "
4749 fn=dn+~
4750 rp="Where do the main $spackage manual pages (source) go?"
4751 . ./getfile
4752 if $test "X$man1direxp" != "X$ansexp"; then
4753         installman1dir=''
4754 fi
4755 man1dir="$ans"
4756 man1direxp="$ansexp"
4757 case "$man1dir" in
4758 '') man1dir=' '
4759         installman1dir='';;
4760 esac
4761 if $afs; then
4762         $cat <<EOM
4763
4764 Since you are running AFS, I need to distinguish the directory in which
4765 manual pages reside from the directory in which they are installed (and from
4766 which they are presumably copied to the former directory by occult means).
4767
4768 EOM
4769         case "$installman1dir" in
4770         '') dflt=`echo $man1direxp | sed 's#^/afs/#/afs/.#'`;;
4771         *) dflt="$installman1dir";;
4772         esac
4773         fn=de~
4774         rp='Where will man pages be installed?'
4775         . ./getfile
4776         installman1dir="$ans"
4777 else
4778         installman1dir="$man1direxp"
4779 fi
4780
4781 : What suffix to use on installed man pages
4782
4783 case "$man1dir" in
4784 ' ')
4785         man1ext='0'
4786         ;;
4787 *)
4788         rp="What suffix should be used for the main $spackage man pages?"
4789         case "$man1ext" in
4790         '')     case "$man1dir" in
4791                 *1)  dflt=1 ;;
4792                 *1p) dflt=1p ;;
4793                 *1pm) dflt=1pm ;;
4794                 *l) dflt=l;;
4795                 *n) dflt=n;;
4796                 *o) dflt=o;;
4797                 *p) dflt=p;;
4798                 *C) dflt=C;;
4799                 *L) dflt=L;;
4800                 *L1) dflt=L1;;
4801                 *) dflt=1;;
4802                 esac
4803                 ;;
4804         *)      dflt="$man1ext";;
4805         esac
4806         . ./myread
4807         man1ext="$ans"
4808         ;;
4809 esac
4810
4811 : see if we can have long filenames
4812 echo " "
4813 rmlist="$rmlist /tmp/cf$$"
4814 $test -d /tmp/cf$$ || mkdir /tmp/cf$$
4815 first=123456789abcdef
4816 second=/tmp/cf$$/$first
4817 $rm -f $first $second
4818 if (echo hi >$first) 2>/dev/null; then
4819         if $test -f 123456789abcde; then
4820                 echo 'You cannot have filenames longer than 14 characters.  Sigh.' >&4
4821                 val="$undef"
4822         else
4823                 if (echo hi >$second) 2>/dev/null; then
4824                         if $test -f /tmp/cf$$/123456789abcde; then
4825                                 $cat <<'EOM'
4826 That's peculiar... You can have filenames longer than 14 characters, but only
4827 on some of the filesystems.  Maybe you are using NFS.  Anyway, to avoid problems
4828 I shall consider your system cannot support long filenames at all.
4829 EOM
4830                                 val="$undef"
4831                         else
4832                                 echo 'You can have filenames longer than 14 characters.' >&4
4833                                 val="$define"
4834                         fi
4835                 else
4836                         $cat <<'EOM'
4837 How confusing! Some of your filesystems are sane enough to allow filenames
4838 longer than 14 characters but some others like /tmp can't even think about them.
4839 So, for now on, I shall assume your kernel does not allow them at all.
4840 EOM
4841                         val="$undef"
4842                 fi
4843         fi
4844 else
4845         $cat <<'EOM'
4846 You can't have filenames longer than 14 chars.  You can't even think about them!
4847 EOM
4848         val="$undef"
4849 fi 
4850 set d_flexfnam
4851 eval $setvar
4852 $rm -rf /tmp/cf$$ 123456789abcde*
4853
4854 : determine where library module manual pages go
4855 set man3dir man3dir none
4856 eval $prefixit
4857 $cat <<EOM
4858
4859 $spackage has manual pages for many of the library modules.
4860 EOM
4861
4862 case "$nroff" in
4863 nroff)
4864         $cat <<'EOM'
4865 However, you don't have nroff, so they're probably useless to you.
4866 You can use the supplied perldoc script instead.
4867 EOM
4868         case "$man3dir" in
4869         '') man3dir="none";;
4870         esac;;
4871 esac
4872
4873 case "$d_flexfnam" in
4874 undef)
4875         $cat <<'EOM'
4876 However, your system can't handle the long file names like File::Basename.3. 
4877 You can use the supplied perldoc script instead.
4878 EOM
4879         case "$man3dir" in
4880         '') man3dir="none";;
4881         esac;;
4882 esac
4883
4884 echo "If you don't want the manual sources installed, answer 'none'."
4885 : We dont use /usr/local/man/man3 because some man programs will
4886 : only show the /usr/local/man/man3 contents, and not the system ones,
4887 : thus man less will show the perl module less.pm, but not the system
4888 : less command.  We might also conflict with TCL man pages.
4889 : However, something like /opt/perl/man/man3 is fine.
4890 case "$man3dir" in
4891 '')     case "$prefix" in 
4892         *perl*) dflt=`echo $man1dir | 
4893                         $sed -e 's/man1/man3/g' -e 's/man\.1/man\.3/g'` ;;
4894         *)      dflt="$privlib/man/man3" ;;
4895         esac
4896         ;;
4897 ' ') dflt=none;;
4898 *)      dflt="$man3dir" ;;
4899 esac
4900 echo " "
4901
4902 fn=dn+~
4903 rp="Where do the $spackage library man pages (source) go?"
4904 . ./getfile
4905 if test "X$man3direxp" != "X$ansexp"; then
4906         installman3dir=''
4907 fi
4908
4909 man3dir="$ans"
4910 man3direxp="$ansexp"
4911 case "$man3dir" in
4912 '') man3dir=' '
4913         installman3dir='';;
4914 esac
4915 if $afs; then
4916         $cat <<EOM
4917
4918 Since you are running AFS, I need to distinguish the directory in which
4919 manual pages reside from the directory in which they are installed (and from
4920 which they are presumably copied to the former directory by occult means).
4921
4922 EOM
4923         case "$installman3dir" in
4924         '') dflt=`echo $man3direxp | sed 's#^/afs/#/afs/.#'`;;
4925         *) dflt="$installman3dir";;
4926         esac
4927         fn=de~
4928         rp='Where will man pages be installed?'
4929         . ./getfile
4930         installman3dir="$ans"
4931 else
4932         installman3dir="$man3direxp"
4933 fi
4934
4935 : What suffix to use on installed man pages
4936
4937 case "$man3dir" in
4938 ' ')
4939         man3ext='0'
4940         ;;
4941 *)
4942         rp="What suffix should be used for the $spackage library man pages?"
4943         case "$man3ext" in
4944         '')     case "$man3dir" in
4945                 *3)  dflt=3 ;;
4946                 *3p) dflt=3p ;;
4947                 *3pm) dflt=3pm ;;
4948                 *l) dflt=l;;
4949                 *n) dflt=n;;
4950                 *o) dflt=o;;
4951                 *p) dflt=p;;
4952                 *C) dflt=C;;
4953                 *L) dflt=L;;
4954                 *L3) dflt=L3;;
4955                 *) dflt=3;;
4956                 esac
4957                 ;;
4958         *)      dflt="$man3ext";;
4959         esac
4960         . ./myread
4961         man3ext="$ans"
4962         ;;
4963 esac
4964
4965 : see if we have to deal with yellow pages, now NIS.
4966 if $test -d /usr/etc/yp || $test -d /etc/yp; then
4967         if $test -f /usr/etc/nibindd; then
4968                 echo " "
4969                 echo "I'm fairly confident you're on a NeXT."
4970                 echo " "
4971                 rp='Do you get the hosts file via NetInfo?'
4972                 dflt=y
4973                 case "$hostcat" in
4974                 nidump*) ;;
4975                 '') ;;
4976                 *) dflt=n;;
4977                 esac
4978                 . ./myread
4979                 case "$ans" in
4980                 y*) hostcat='nidump hosts .';;
4981                 *)      case "$hostcat" in
4982                         nidump*) hostcat='';;
4983                         esac
4984                         ;;
4985                 esac
4986         fi
4987         case "$hostcat" in
4988         nidump*) ;;
4989         *)
4990                 case "$hostcat" in
4991                 *ypcat*) dflt=y;;
4992                 '') if $contains '^\+' /etc/passwd >/dev/null 2>&1; then
4993                                 dflt=y
4994                         else
4995                                 dflt=n
4996                         fi;;
4997                 *) dflt=n;;
4998                 esac
4999                 echo " "
5000                 rp='Are you getting the hosts file via yellow pages?'
5001                 . ./myread
5002                 case "$ans" in
5003                 y*) hostcat='ypcat hosts';;
5004                 *) hostcat='cat /etc/hosts';;
5005                 esac
5006                 ;;
5007         esac
5008 fi
5009
5010 : now get the host name
5011 echo " "
5012 echo "Figuring out host name..." >&4
5013 case "$myhostname" in
5014 '') cont=true
5015         echo 'Maybe "hostname" will work...'
5016         if tans=`sh -c hostname 2>&1` ; then
5017                 myhostname=$tans
5018                 phostname=hostname
5019                 cont=''
5020         fi
5021         ;;
5022 *) cont='';;
5023 esac
5024 if $test "$cont"; then
5025         if ./xenix; then
5026                 echo 'Oh, dear.  Maybe "/etc/systemid" is the key...'
5027                 if tans=`cat /etc/systemid 2>&1` ; then
5028                         myhostname=$tans
5029                         phostname='cat /etc/systemid'
5030                         echo "Whadyaknow.  Xenix always was a bit strange..."
5031                         cont=''
5032                 fi
5033         elif $test -r /etc/systemid; then
5034                 echo "(What is a non-Xenix system doing with /etc/systemid?)"
5035         fi
5036 fi
5037 if $test "$cont"; then
5038         echo 'No, maybe "uuname -l" will work...'
5039         if tans=`sh -c 'uuname -l' 2>&1` ; then
5040                 myhostname=$tans
5041                 phostname='uuname -l'
5042         else
5043                 echo 'Strange.  Maybe "uname -n" will work...'
5044                 if tans=`sh -c 'uname -n' 2>&1` ; then
5045                         myhostname=$tans
5046                         phostname='uname -n'
5047                 else
5048                         echo 'Oh well, maybe I can mine it out of whoami.h...'
5049                         if tans=`sh -c $contains' sysname $usrinc/whoami.h' 2>&1` ; then
5050                                 myhostname=`echo "$tans" | $sed 's/^.*"\(.*\)"/\1/'`
5051                                 phostname="sed -n -e '"'/sysname/s/^.*\"\\(.*\\)\"/\1/{'"' -e p -e q -e '}' <$usrinc/whoami.h"
5052                         else
5053                                 case "$myhostname" in
5054                                 '') echo "Does this machine have an identity crisis or something?"
5055                                         phostname='';;
5056                                 *)
5057                                         echo "Well, you said $myhostname before..."
5058                                         phostname='echo $myhostname';;
5059                                 esac
5060                         fi
5061                 fi
5062         fi
5063 fi
5064 : you do not want to know about this
5065 set $myhostname
5066 myhostname=$1
5067
5068 : verify guess
5069 if $test "$myhostname" ; then
5070         dflt=y
5071         rp='Your host name appears to be "'$myhostname'".'" Right?"
5072         . ./myread
5073         case "$ans" in
5074         y*) ;;
5075         *) myhostname='';;
5076         esac
5077 fi
5078
5079 : bad guess or no guess
5080 while $test "X$myhostname" = X ; do
5081         dflt=''
5082         rp="Please type the (one word) name of your host:"
5083         . ./myread
5084         myhostname="$ans"
5085 done
5086
5087 : translate upper to lower if necessary
5088 case "$myhostname" in
5089 *[A-Z]*)
5090         echo "(Normalizing case in your host name)"
5091         myhostname=`echo $myhostname | ./tr '[A-Z]' '[a-z]'`
5092         ;;
5093 esac
5094
5095 case "$myhostname" in
5096 *.*)
5097         dflt=`expr "X$myhostname" : "X[^.]*\(\..*\)"`
5098         myhostname=`expr "X$myhostname" : "X\([^.]*\)\."`
5099         echo "(Trimming domain name from host name--host name is now $myhostname)"
5100         ;;
5101 *) case "$mydomain" in
5102         '')
5103                 {
5104                         : If we use NIS, try ypmatch.
5105                         : Is there some reason why this was not done before?
5106                         test "X$hostcat" = "Xypcat hosts" &&
5107                         ypmatch "$myhostname" hosts 2>/dev/null |\
5108                                 $sed -e 's/[     ]*#.*//; s/$/ /' > hosts && \
5109                         $test -s hosts
5110                 } || {
5111                         : Extract only the relevant hosts, reducing file size,
5112                         : remove comments, insert trailing space for later use.
5113                         $hostcat | $sed -n -e "s/[       ]*#.*//; s/\$/ /
5114                                         /[       ]$myhostname[  . ]/p" > hosts
5115                 }
5116                 tmp_re="[       . ]"
5117                 $test x`$awk "/[0-9].*[  ]$myhostname$tmp_re/ { sum++ }
5118                              END { print sum }" hosts` = x1 || tmp_re="[         ]"
5119                 dflt=.`$awk "/[0-9].*[   ]$myhostname$tmp_re/ {for(i=2; i<=NF;i++) print \\\$i}" \
5120                         hosts | $sort | $uniq | \
5121                         $sed -n -e "s/$myhostname\.\([-a-zA-Z0-9_.]\)/\1/p"`
5122                 case `$echo X$dflt` in
5123                 X*\ *)  echo "(Several hosts in /etc/hosts matched hostname)"
5124                         dflt=.
5125                         ;;
5126                 X.) echo "(You do not have fully-qualified names in /etc/hosts)"
5127                         ;;
5128                 esac
5129                 case "$dflt" in
5130                 .)
5131                         tans=`./loc resolv.conf X /etc /usr/etc`
5132                         if $test -f "$tans"; then
5133                                 echo "(Attempting domain name extraction from $tans)"
5134                                 : Why was there an Egrep here, when Sed works?
5135                                 : Look for either a search or a domain directive.
5136                                 dflt=.`$sed -n -e 's/   / /g' \
5137                                   -e 's/^search.* \([^ ]*\) *$/\1/p' $tans \
5138                                   | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5139                                 case "$dflt" in
5140                                 .) dflt=.`$sed -n -e 's/        / /g' \
5141                                      -e 's/^domain.* \([^ ]*\) *$/\1/p' $tans \
5142                                      | ./tr '[A-Z]' '[a-z]' 2>/dev/null`
5143                                         ;;
5144                                 esac
5145                         fi
5146                         ;;
5147                 esac
5148                 case "$dflt" in
5149                 .) echo "(No help from resolv.conf either -- attempting clever guess)"
5150                         dflt=.`sh -c domainname 2>/dev/null`
5151                         case "$dflt" in
5152                         '') dflt='.';;
5153                         .nis.*|.yp.*|.main.*) dflt=`echo $dflt | $sed -e 's/^\.[^.]*//'`;;
5154                         esac
5155                         ;;
5156                 esac
5157                 case "$dflt" in
5158                 .) echo "(Lost all hope -- silly guess then)"
5159                         dflt='.uucp'
5160                         ;;
5161                 esac
5162                 $rm -f hosts
5163                 ;;
5164         *) dflt="$mydomain";;
5165         esac;;
5166 esac
5167 echo " "
5168 rp="What is your domain name?"
5169 . ./myread
5170 tans="$ans"
5171 case "$ans" in
5172 '') ;;
5173 .*) ;;
5174 *) tans=".$tans";;
5175 esac
5176 mydomain="$tans"
5177
5178 : translate upper to lower if necessary
5179 case "$mydomain" in
5180 *[A-Z]*)
5181         echo "(Normalizing case in your domain name)"
5182         mydomain=`echo $mydomain | ./tr '[A-Z]' '[a-z]'`
5183         ;;
5184 esac
5185
5186 : a little sanity check here
5187 case "$phostname" in
5188 '') ;;
5189 *)
5190         case `$phostname | ./tr '[A-Z]' '[a-z]'` in
5191         $myhostname$mydomain|$myhostname) ;;
5192         *)
5193                 case "$phostname" in
5194                 sed*)
5195                         echo "(That doesn't agree with your whoami.h file, by the way.)"
5196                         ;;
5197                 *)
5198                         echo "(That doesn't agree with your $phostname command, by the way.)"
5199                         ;;
5200                 esac
5201         ;;
5202         esac
5203         ;;
5204 esac
5205
5206 $cat <<EOM
5207
5208 I need to get your e-mail address in Internet format if possible, i.e.
5209 something like user@host.domain. Please answer accurately since I have
5210 no easy means to double check it. The default value provided below
5211 is most probably close to the reality but may not be valid from outside
5212 your organization...
5213
5214 EOM
5215 cont=x
5216 while test "$cont"; do
5217         case "$cf_email" in
5218         '') dflt="$cf_by@$myhostname$mydomain";;
5219         *) dflt="$cf_email";;
5220         esac
5221         rp='What is your e-mail address?'
5222         . ./myread
5223         cf_email="$ans"
5224         case "$cf_email" in
5225         *@*.*) cont='' ;;
5226         *)
5227                 rp='Address does not look like an Internet one.  Use it anyway?'
5228                 case "$fastread" in
5229                 yes) dflt=y ;;
5230                 *) dflt=n ;;
5231                 esac
5232                 . ./myread
5233                 case "$ans" in
5234                 y*) cont='' ;;
5235                 *) echo " " ;;
5236                 esac
5237                 ;;
5238         esac
5239 done
5240
5241 $cat <<EOM
5242
5243 If you or somebody else will be maintaining perl at your site, please
5244 fill in the correct e-mail address here so that they may be contacted
5245 if necessary. Currently, the "perlbug" program included with perl
5246 will send mail to this address in addition to perlbug@perl.com. You may
5247 enter "none" for no administrator.
5248
5249 EOM
5250 case "$perladmin" in
5251 '') dflt="$cf_email";;
5252 *) dflt="$perladmin";;
5253 esac
5254 rp='Perl administrator e-mail address'
5255 . ./myread
5256 perladmin="$ans"
5257
5258 : figure out how to guarantee perl startup
5259 case "$startperl" in
5260 '')
5261         case "$sharpbang" in
5262         *!)
5263                 $cat <<EOH
5264
5265 I can use the #! construct to start perl on your system. This will
5266 make startup of perl scripts faster, but may cause problems if you
5267 want to share those scripts and perl is not in a standard place
5268 ($binexp/perl) on all your platforms. The alternative is to force
5269 a shell by starting the script with a single ':' character.
5270
5271 EOH
5272                 dflt="$binexp/perl"
5273                 rp='What shall I put after the #! to start up perl ("none" to not use #!)?'
5274                 . ./myread
5275                 case "$ans" in
5276                 none) startperl=": # use perl";;
5277                 *) startperl="#!$ans";;
5278                 esac
5279                 ;;
5280         *) startperl=": # use perl"
5281                 ;;
5282         esac
5283         ;;
5284 esac
5285 echo "I'll use $startperl to start perl scripts."
5286
5287 : figure best path for perl in scripts
5288 case "$perlpath" in
5289 '')
5290         perlpath="$binexp/perl"
5291         case "$startperl" in
5292         *!*) ;;
5293         *)
5294                 $cat <<EOH
5295
5296 I will use the "eval 'exec'" idiom to start Perl on your system.
5297 I can use the full path of your Perl binary for this purpose, but
5298 doing so may cause problems if you want to share those scripts and
5299 Perl is not always in a standard place ($binexp/perl).
5300
5301 EOH
5302                 dflt="$binexp/perl"
5303                 rp="What path shall I use in \"eval 'exec'\"?"
5304                 . ./myread
5305                 perlpath="$ans"
5306                 ;;
5307         esac
5308         ;;
5309 esac
5310 case "$startperl" in
5311 *!*)    ;;
5312 *)      echo "I'll use $perlpath in \"eval 'exec'\"" ;;
5313 esac
5314
5315 : determine where public executable scripts go
5316 set scriptdir scriptdir
5317 eval $prefixit
5318 case "$scriptdir" in
5319 '')
5320         dflt="$bin"
5321         : guess some guesses
5322         $test -d /usr/share/scripts && dflt=/usr/share/scripts
5323         $test -d /usr/share/bin && dflt=/usr/share/bin
5324         $test -d /usr/local/script && dflt=/usr/local/script
5325         $test -d $prefixexp/script && dflt=$prefixexp/script
5326         set dflt
5327         eval $prefixup
5328         ;;
5329 *)  dflt="$scriptdir"
5330         ;;
5331 esac
5332 $cat <<EOM
5333  
5334 Some installations have a separate directory just for executable scripts so
5335 that they can mount it across multiple architectures but keep the scripts in
5336 one spot.  You might, for example, have a subdirectory of /usr/share for this.
5337 Or you might just lump your scripts in with all your other executables.
5338  
5339 EOM
5340 fn=d~
5341 rp='Where do you keep publicly executable scripts?'
5342 . ./getfile
5343 if $test "X$ansexp" != "X$scriptdirexp"; then
5344         installscript=''
5345 fi
5346 scriptdir="$ans"
5347 scriptdirexp="$ansexp"
5348 if $afs; then
5349         $cat <<EOM
5350
5351 Since you are running AFS, I need to distinguish the directory in which
5352 scripts reside from the directory in which they are installed (and from
5353 which they are presumably copied to the former directory by occult means).
5354
5355 EOM
5356         case "$installscript" in
5357         '') dflt=`echo $scriptdirexp | sed 's#^/afs/#/afs/.#'`;;
5358         *) dflt="$installscript";;
5359         esac
5360         fn=de~
5361         rp='Where will public scripts be installed?'
5362         . ./getfile
5363         installscript="$ans"
5364 else
5365         installscript="$scriptdirexp"
5366 fi
5367
5368 cat <<EOM
5369
5370 Previous version of $package used the standard IO mechanisms as defined in
5371 <stdio.h>.  Versions 5.003_02 and later of perl allow alternate IO
5372 mechanisms via a "PerlIO" abstraction, but the stdio mechanism is still
5373 the default and is the only supported mechanism.  This abstraction
5374 layer can use AT&T's sfio (if you already have sfio installed) or
5375 fall back on standard IO.  This PerlIO abstraction layer is
5376 experimental and may cause problems with some extension modules.
5377
5378 If this doesn't make any sense to you, just accept the default 'n'.
5379 EOM
5380 case "$useperlio" in
5381 $define|true|[yY]*)     dflt='y';;
5382 *) dflt='n';;
5383 esac
5384 rp='Use the experimental PerlIO abstraction layer?'
5385 . ./myread
5386 case "$ans" in
5387 y|Y) 
5388         val="$define"
5389         ;;     
5390 *)      
5391         echo "Ok, doing things the stdio way"
5392         val="$undef"
5393         ;;
5394 esac
5395 set useperlio
5396 eval $setvar 
5397
5398 : Check how to convert floats to strings.
5399 echo " "
5400 echo "Checking for an efficient way to convert floats to strings."
5401 $cat >try.c <<'EOP'
5402 #ifdef TRY_gconvert
5403 #define Gconvert(x,n,t,b) gconvert((x),(n),(t),(b))
5404 char *myname = "gconvert";
5405 #endif
5406 #ifdef TRY_gcvt
5407 #define Gconvert(x,n,t,b) gcvt((x),(n),(b))
5408 char *myname = "gcvt";
5409 #endif
5410 #ifdef TRY_sprintf
5411 #define Gconvert(x,n,t,b) sprintf((b),"%.*g",(n),(x))
5412 char *myname = "sprintf";
5413 #endif
5414
5415 #include <stdio.h>
5416
5417 int
5418 checkit(expect, got)
5419 char *expect;
5420 char *got;
5421 {
5422     if (strcmp(expect, got)) {
5423                 printf("%s oddity:  Expected %s, got %s\n",
5424                         myname, expect, got);
5425                 exit(1);
5426         }
5427 }
5428
5429 int
5430 main()
5431
5432         char buf[64]; 
5433         buf[63] = '\0';
5434
5435         /* This must be 1st test on (which?) platform */
5436         /* Alan Burlison <AlanBurlsin@unn.unisys.com> */
5437         Gconvert(0.1, 8, 0, buf);
5438         checkit("0.1", buf);
5439
5440         Gconvert(1.0, 8, 0, buf); 
5441         checkit("1", buf);
5442
5443         Gconvert(0.0, 8, 0, buf); 
5444         checkit("0", buf);
5445
5446         Gconvert(-1.0, 8, 0, buf); 
5447         checkit("-1", buf);
5448
5449         /* Some Linux gcvt's give 1.e+5 here. */
5450         Gconvert(100000.0, 8, 0, buf); 
5451         checkit("100000", buf);
5452         
5453         /* Some Linux gcvt's give -1.e+5 here. */
5454         Gconvert(-100000.0, 8, 0, buf); 
5455         checkit("-100000", buf);
5456
5457         exit(0);
5458 }
5459 EOP
5460 case "$d_Gconvert" in
5461 gconvert*) xxx_list='gconvert gcvt sprintf' ;;
5462 gcvt*) xxx_list='gcvt gconvert sprintf' ;;
5463 sprintf*) xxx_list='sprintf gconvert gcvt' ;;
5464 *) xxx_list='gconvert gcvt sprintf' ;;
5465 esac
5466
5467 for xxx_convert in $xxx_list; do
5468         echo "Trying $xxx_convert"
5469         $rm -f try try.o
5470         if $cc $ccflags -DTRY_$xxx_convert $ldflags -o try \
5471                 try.c $libs > /dev/null 2>&1 ; then
5472                 echo "$xxx_convert" found. >&4
5473                 if ./try; then
5474                         echo "I'll use $xxx_convert to convert floats into a string." >&4
5475                         break;
5476                 else
5477                         echo "...But $xxx_convert didn't work as I expected."
5478                 fi
5479         else
5480                 echo "$xxx_convert NOT found." >&4
5481         fi
5482 done
5483                 
5484 case "$xxx_convert" in
5485 gconvert) d_Gconvert='gconvert((x),(n),(t),(b))' ;;
5486 gcvt) d_Gconvert='gcvt((x),(n),(b))' ;;
5487 *) d_Gconvert='sprintf((b),"%.*g",(n),(x))' ;;
5488 esac
5489
5490 : Initialize h_fcntl
5491 h_fcntl=false
5492
5493 : Initialize h_sysfile
5494 h_sysfile=false
5495
5496 : access call always available on UNIX
5497 set access d_access
5498 eval $inlibc
5499
5500 : locate the flags for 'access()'
5501 case "$d_access" in
5502 "$define")
5503         echo " "
5504         $cat >access.c <<'EOCP'
5505 #include <sys/types.h>
5506 #ifdef I_FCNTL
5507 #include <fcntl.h>
5508 #endif
5509 #ifdef I_SYS_FILE
5510 #include <sys/file.h>
5511 #endif
5512 #ifdef I_UNISTD
5513 #include <unistd.h>
5514 #endif
5515 main() {
5516         exit(R_OK);
5517 }
5518 EOCP
5519         : check sys/file.h first, no particular reason here
5520         if $test `./findhdr sys/file.h` && \
5521                 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
5522                 h_sysfile=true;
5523                 echo "<sys/file.h> defines the *_OK access constants." >&4
5524         elif $test `./findhdr fcntl.h` && \
5525                 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
5526                 h_fcntl=true;
5527                 echo "<fcntl.h> defines the *_OK access constants." >&4
5528         elif $test `./findhdr unistd.h` && \
5529                 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
5530                 echo "<unistd.h> defines the *_OK access constants." >&4
5531         else
5532                 echo "I can't find the four *_OK access constants--I'll use mine." >&4
5533         fi
5534         ;;
5535 esac
5536 $rm -f access*
5537
5538 : see if alarm exists
5539 set alarm d_alarm
5540 eval $inlibc
5541
5542 : Look for GNU-cc style attribute checking
5543 echo " "
5544 echo "Checking whether your compiler can handle __attribute__ ..." >&4
5545 $cat >attrib.c <<'EOCP'
5546 #include <stdio.h>
5547 void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
5548 EOCP
5549 if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
5550         if $contains 'warning' attrib.out >/dev/null 2>&1; then
5551                 echo "Your C compiler doesn't fully support __attribute__."
5552                 val="$undef"
5553         else
5554                 echo "Your C compiler supports __attribute__."
5555                 val="$define"
5556         fi
5557 else
5558         echo "Your C compiler doesn't seem to understand __attribute__ at all."
5559         val="$undef"
5560 fi
5561 set d_attribut
5562 eval $setvar
5563 $rm -f attrib*
5564
5565 : see if bcmp exists
5566 set bcmp d_bcmp
5567 eval $inlibc
5568
5569 : see if bcopy exists
5570 set bcopy d_bcopy
5571 eval $inlibc
5572
5573 : see if this is a unistd.h system
5574 set unistd.h i_unistd
5575 eval $inhdr
5576
5577 : see if getpgrp exists
5578 set getpgrp d_getpgrp
5579 eval $inlibc
5580
5581 echo "Checking to see which flavor of getpgrp is in use . . . "
5582 case "$d_getpgrp" in
5583 "$define")
5584         echo " "
5585         $cat >set.c <<EOP
5586 #$i_unistd I_UNISTD
5587 #include <sys/types.h>
5588 #ifdef I_UNISTD
5589 #  include <unistd.h>
5590 #endif
5591 main()
5592 {
5593         if (getuid() == 0) {
5594                 printf("(I see you are running Configure as super-user...)\n");
5595                 setuid(1);
5596         }
5597 #ifdef TRY_BSD_PGRP
5598         if (getpgrp(1) == 0)
5599                 exit(0);
5600 #else
5601         if (getpgrp() > 0)
5602                 exit(0);
5603 #endif
5604         exit(1);
5605 }
5606 EOP
5607         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5608                 echo "You have to use getpgrp(pid) instead of getpgrp()." >&4
5609                 val="$define"
5610         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5611                 echo "You have to use getpgrp() instead of getpgrp(pid)." >&4
5612                 val="$undef"
5613         else
5614                 echo "I can't seem to compile and run the test program."
5615                 if ./usg; then
5616                         xxx="a USG one, i.e. you use getpgrp()."
5617                 else
5618                         # SVR4 systems can appear rather BSD-ish.
5619                         case "$i_unistd" in
5620                         $undef)
5621                                 xxx="a BSD one, i.e. you use getpgrp(pid)."
5622                                 val="$define"
5623                                 ;;
5624                         $define)
5625                                 xxx="probably a USG one, i.e. you use getpgrp()."
5626                                 val="$undef"
5627                                 ;;
5628                         esac
5629                 fi
5630                 echo "Assuming your getpgrp is $xxx" >&4
5631         fi
5632         ;;
5633 *) val="$undef";;
5634 esac
5635 set d_bsdgetpgrp
5636 eval $setvar
5637 $rm -f set set.c
5638
5639 : see if setpgrp exists
5640 set setpgrp d_setpgrp
5641 eval $inlibc
5642
5643 echo "Checking to see which flavor of setpgrp is in use . . . "
5644 case "$d_setpgrp" in
5645 "$define")
5646         echo " "
5647         $cat >set.c <<EOP
5648 #$i_unistd I_UNISTD
5649 #include <sys/types.h>
5650 #ifdef I_UNISTD
5651 #  include <unistd.h>
5652 #endif
5653 main()
5654 {
5655         if (getuid() == 0) {
5656                 printf("(I see you are running Configure as super-user...)\n");
5657                 setuid(1);
5658         }
5659 #ifdef TRY_BSD_PGRP
5660         if (-1 == setpgrp(1, 1))
5661                 exit(0);
5662 #else
5663         if (setpgrp() != -1)
5664                 exit(0);
5665 #endif
5666         exit(1);
5667 }
5668 EOP
5669         if $cc -DTRY_BSD_PGRP $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5670                 echo 'You have to use setpgrp(pid,pgrp) instead of setpgrp().' >&4
5671                 val="$define"
5672         elif $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1 && ./set; then
5673                 echo 'You have to use setpgrp() instead of setpgrp(pid,pgrp).' >&4
5674                 val="$undef"
5675         else
5676                 echo "I can't seem to compile and run the test program."
5677                 if ./usg; then
5678                         xxx="a USG one, i.e. you use setpgrp()."
5679                 else
5680                         # SVR4 systems can appear rather BSD-ish.
5681                         case "$i_unistd" in
5682                         $undef)
5683                                 xxx="a BSD one, i.e. you use setpgrp(pid,pgrp)."
5684                                 val="$define"
5685                                 ;;
5686                         $define)
5687                                 xxx="probably a USG one, i.e. you use setpgrp()."
5688                                 val="$undef"
5689                                 ;;
5690                         esac
5691                 fi
5692                 echo "Assuming your setpgrp is $xxx" >&4
5693         fi
5694         ;;
5695 *) val="$undef";;
5696 esac
5697 set d_bsdsetpgrp
5698 eval $setvar
5699 d_bsdpgrp=$d_bsdsetpgrp
5700 $rm -f set set.c
5701 : see if bzero exists
5702 set bzero d_bzero
5703 eval $inlibc
5704
5705 : check for length of integer
5706 echo " "
5707 case "$intsize" in
5708 '')
5709         echo "Checking to see how big your integers are..." >&4
5710         $cat >try.c <<'EOCP'
5711 #include <stdio.h>
5712 main()
5713 {
5714         printf("%d\n", sizeof(int));
5715         exit(0);
5716 }
5717 EOCP
5718         if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
5719                 intsize=`./try`
5720                 echo "Your integers are $intsize bytes long."
5721         else
5722                 dflt='4'
5723                 echo "(I can't seem to compile the test program.  Guessing...)"
5724                 rp="What is the size of an integer (in bytes)?"
5725                 . ./myread
5726                 intsize="$ans"
5727         fi
5728         ;;
5729 esac
5730 $rm -f try.c try
5731
5732 : see if signal is declared as pointer to function returning int or void
5733 echo " "
5734 xxx=`./findhdr signal.h`
5735 $test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
5736 if $contains 'int.*\*[  ]*signal' $$.tmp >/dev/null 2>&1 ; then
5737         echo "You have int (*signal())() instead of void." >&4
5738         val="$undef"
5739 elif $contains 'void.*\*[       ]*signal' $$.tmp >/dev/null 2>&1 ; then
5740         echo "You have void (*signal())() instead of int." >&4
5741         val="$define"
5742 elif $contains 'extern[         ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
5743         echo "You have int (*signal())() instead of void." >&4
5744         val="$undef"
5745 else
5746         case "$d_voidsig" in
5747         '')
5748         echo "I can't determine whether signal handler returns void or int..." >&4
5749                 dflt=void
5750                 rp="What type does your signal handler return?"
5751                 . ./myread
5752                 case "$ans" in
5753                 v*) val="$define";;
5754                 *) val="$undef";;
5755                 esac;;
5756         "$define")
5757                 echo "As you already told me, signal handler returns void." >&4;;
5758         *)
5759                 echo "As you already told me, signal handler returns int." >&4;;
5760         esac
5761 fi
5762 set d_voidsig
5763 eval $setvar
5764 case "$d_voidsig" in
5765 "$define") signal_t="void";;
5766 *) signal_t="int";;
5767 esac
5768 $rm -f $$.tmp
5769
5770 : check for ability to cast large floats to 32-bit ints.
5771 echo " "
5772 echo 'Checking whether your C compiler can cast large floats to int32.' >&4
5773 if $test "$intsize" -eq 4; then
5774         xxx=int
5775 else
5776         xxx=long
5777 fi
5778 $cat >try.c <<EOCP
5779 #include <sys/types.h>
5780 #include <signal.h>
5781 $signal_t blech() { exit(3); }
5782 main()
5783 {
5784         $xxx i32;
5785         double f;
5786         int result = 0;
5787         signal(SIGFPE, blech);
5788
5789         f = (double) 0x7fffffff;
5790         f = 10 * f;
5791         i32  = ($xxx) f;
5792
5793         if (i32 != ($xxx) f)
5794                 result |= 1;
5795         exit(result);
5796 }
5797 EOCP
5798 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5799         ./try
5800         yyy=$?
5801 else
5802         echo "(I can't seem to compile the test program--assuming it can't)"
5803         yyy=1
5804 fi
5805 case "$yyy" in
5806 0)      val="$define"
5807         echo "Yup, it can."
5808         ;;
5809 *)      val="$undef"
5810         echo "Nope, it can't."
5811         ;;
5812 esac
5813 set d_casti32
5814 eval $setvar
5815 $rm -f try try.*
5816
5817 : check for ability to cast negative floats to unsigned
5818 echo " "
5819 echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
5820 $cat >try.c <<EOCP
5821 #include <sys/types.h>
5822 #include <signal.h>
5823 $signal_t blech() { exit(7); }
5824 $signal_t blech_in_list() { exit(4); }
5825 unsigned long dummy_long(p) unsigned long p; { return p; }
5826 unsigned int dummy_int(p) unsigned int p; { return p; }
5827 unsigned short dummy_short(p) unsigned short p; { return p; }
5828 main()
5829 {
5830         double f = -123.;
5831         unsigned long along;
5832         unsigned int aint;
5833         unsigned short ashort;
5834         int result = 0;
5835
5836         signal(SIGFPE, blech);
5837         along = (unsigned long)f;
5838         aint = (unsigned int)f;
5839         ashort = (unsigned short)f;
5840         if (along != (unsigned long)-123)
5841                 result |= 1;
5842         if (aint != (unsigned int)-123)
5843                 result |= 1;
5844         if (ashort != (unsigned short)-123)
5845                 result |= 1;
5846         f = (double)0x40000000;
5847         f = f + f;
5848         along = 0;
5849         along = (unsigned long)f;
5850         if (along != 0x80000000)
5851                 result |= 2;
5852         f -= 1.;
5853         along = 0;
5854         along = (unsigned long)f;
5855         if (along != 0x7fffffff)
5856                 result |= 1;
5857         f += 2.;
5858         along = 0;
5859         along = (unsigned long)f;
5860         if (along != 0x80000001)
5861                 result |= 2;
5862         if (result)
5863                 exit(result);
5864         signal(SIGFPE, blech_in_list);
5865         f = 123.;
5866         along = dummy_long((unsigned long)f);
5867         aint = dummy_int((unsigned int)f);
5868         ashort = dummy_short((unsigned short)f);
5869         if (along != (unsigned long)123)
5870                 result |= 4;
5871         if (aint != (unsigned int)123)
5872                 result |= 4;
5873         if (ashort != (unsigned short)123)
5874                 result |= 4;
5875         exit(result);
5876
5877 }
5878 EOCP
5879 if $cc -o try $ccflags try.c >/dev/null 2>&1; then
5880         ./try
5881         castflags=$?
5882 else
5883         echo "(I can't seem to compile the test program--assuming it can't)"
5884         castflags=7
5885 fi
5886 case "$castflags" in
5887 0)      val="$define"
5888         echo "Yup, it can."
5889         ;;
5890 *)      val="$undef"
5891         echo "Nope, it can't."
5892         ;;
5893 esac
5894 set d_castneg
5895 eval $setvar
5896 $rm -f try.*
5897
5898 : see if vprintf exists
5899 echo " "
5900 if set vprintf val -f d_vprintf; eval $csym; $val; then
5901         echo 'vprintf() found.' >&4
5902         val="$define"
5903         $cat >vprintf.c <<'EOF'
5904 #include <varargs.h>
5905
5906 main() { xxx("foo"); }
5907
5908 xxx(va_alist)
5909 va_dcl
5910 {
5911         va_list args;
5912         char buf[10];
5913
5914         va_start(args);
5915         exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
5916 }
5917 EOF
5918         if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
5919                 echo "Your vsprintf() returns (int)." >&4
5920                 val2="$undef"
5921         else
5922                 echo "Your vsprintf() returns (char*)." >&4
5923                 val2="$define"
5924         fi
5925 else
5926         echo 'vprintf() NOT found.' >&4
5927                 val="$undef"
5928                 val2="$undef"
5929 fi
5930 set d_vprintf
5931 eval $setvar
5932 val=$val2
5933 set d_charvspr
5934 eval $setvar
5935
5936 : see if chown exists
5937 set chown d_chown
5938 eval $inlibc
5939
5940 : see if chroot exists
5941 set chroot d_chroot
5942 eval $inlibc
5943
5944 : see if chsize exists
5945 set chsize d_chsize
5946 eval $inlibc
5947
5948 : check for const keyword
5949 echo " "
5950 echo 'Checking to see if your C compiler knows about "const"...' >&4
5951 $cat >const.c <<'EOCP'
5952 typedef struct spug { int drokk; } spug;
5953 main()
5954 {
5955         const char *foo;
5956         const spug y;
5957 }
5958 EOCP
5959 if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
5960         val="$define"
5961         echo "Yup, it does."
5962 else
5963         val="$undef"
5964         echo "Nope, it doesn't."
5965 fi
5966 set d_const
5967 eval $setvar
5968
5969 : see if crypt exists
5970 echo " "
5971 if set crypt val -f d_crypt; eval $csym; $val; then
5972         echo 'crypt() found.' >&4
5973         val="$define"
5974         cryptlib=''
5975 else
5976         cryptlib=`./loc Slibcrypt$lib_ext "" $xlibpth`
5977         if $test -z "$cryptlib"; then
5978                 cryptlib=`./loc Mlibcrypt$lib_ext "" $xlibpth`
5979         else
5980                 cryptlib=-lcrypt
5981         fi
5982         if $test -z "$cryptlib"; then
5983                 cryptlib=`./loc Llibcrypt$lib_ext "" $xlibpth`
5984         else
5985                 cryptlib=-lcrypt
5986         fi
5987         if $test -z "$cryptlib"; then
5988                 cryptlib=`./loc libcrypt$lib_ext "" $libpth`
5989         else
5990                 cryptlib=-lcrypt
5991         fi
5992         if $test -z "$cryptlib"; then
5993                 echo 'crypt() NOT found.' >&4
5994                 val="$undef"
5995         else
5996                 val="$define"
5997         fi
5998 fi
5999 set d_crypt
6000 eval $setvar
6001
6002 : get csh whereabouts
6003 case "$csh" in
6004 'csh') val="$undef" ;;
6005 *) val="$define" ;;
6006 esac
6007 set d_csh
6008 eval $setvar
6009 full_csh=$csh
6010
6011 : see if cuserid exists
6012 set cuserid d_cuserid
6013 eval $inlibc
6014
6015 : see if this is a limits.h system
6016 set limits.h i_limits
6017 eval $inhdr
6018
6019 : see if this is a float.h system
6020 set float.h i_float
6021 eval $inhdr
6022
6023 : See if number of significant digits in a double precision number is known
6024 echo " "
6025 $cat >dbl_dig.c <<EOM
6026 #$i_limits I_LIMITS
6027 #$i_float I_FLOAT
6028 #ifdef I_LIMITS
6029 #include <limits.h>
6030 #endif
6031 #ifdef I_FLOAT
6032 #include <float.h>
6033 #endif
6034 #ifdef DBL_DIG
6035 printf("Contains DBL_DIG");
6036 #endif
6037 EOM
6038 $cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
6039 if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
6040         echo "DBL_DIG found." >&4
6041         val="$define"
6042 else
6043         echo "DBL_DIG NOT found." >&4
6044         val="$undef"
6045 fi
6046 $rm -f dbl_dig.?
6047 set d_dbl_dig
6048 eval $setvar
6049
6050 : see if difftime exists
6051 set difftime d_difftime
6052 eval $inlibc
6053
6054 : see if this is a dirent system
6055 echo " "
6056 if xinc=`./findhdr dirent.h`; $test "$xinc"; then
6057         val="$define"
6058         echo "<dirent.h> found." >&4
6059 else
6060         val="$undef"
6061         if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
6062                 echo "<sys/dir.h> found." >&4
6063                 echo " "
6064         else
6065                 xinc=`./findhdr sys/ndir.h`
6066         fi
6067         echo "<dirent.h> NOT found." >&4
6068 fi
6069 set i_dirent
6070 eval $setvar
6071
6072 : Look for type of directory structure.
6073 echo " "
6074 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6075
6076 case "$direntrytype" in
6077 ''|' ')
6078         case "$i_dirent" in
6079         $define) guess1='struct dirent' ;;
6080         *) guess1='struct direct'  ;;
6081         esac
6082         ;;
6083 *)      guess1="$direntrytype"
6084         ;;
6085 esac
6086
6087 case "$guess1" in
6088 'struct dirent') guess2='struct direct' ;;
6089 *) guess2='struct dirent' ;;
6090 esac
6091                 
6092 if $contains "$guess1" try.c >/dev/null 2>&1; then
6093         direntrytype="$guess1"
6094         echo "Your directory entries are $direntrytype." >&4
6095 elif $contains "$guess2" try.c >/dev/null 2>&1; then
6096         direntrytype="$guess2"
6097         echo "Your directory entries seem to be $direntrytype." >&4
6098 else
6099         echo "I don't recognize your system's directory entries." >&4
6100         rp="What type is used for directory entries on this system?"
6101         dflt="$guess1"
6102         . ./myread
6103         direntrytype="$ans"
6104 fi
6105 $rm -f try.c
6106
6107
6108 : see if the directory entry stores field length
6109 echo " "
6110 $cppstdin $cppflags $cppminus < "$xinc" > try.c
6111 if $contains 'd_namlen' try.c >/dev/null 2>&1; then
6112         echo "Good, your directory entry keeps length information in d_namlen." >&4
6113         val="$define"
6114 else
6115         echo "Your directory entry does not know about the d_namlen field." >&4
6116         val="$undef"
6117 fi
6118 set d_dirnamlen
6119 eval $setvar
6120 $rm -f try.c
6121
6122 : see if dlerror exists
6123 xxx_runnm="$runnm"
6124 runnm=false
6125 set dlerror d_dlerror
6126 eval $inlibc
6127 runnm="$xxx_runnm"
6128
6129 : see if dlfcn is available
6130 set dlfcn.h i_dlfcn
6131 eval $inhdr
6132
6133 case "$usedl" in
6134 $define|y|true)
6135         $cat << EOM
6136
6137 On a few systems, the dynamically loaded modules that perl generates and uses
6138 will need a different extension then shared libs. The default will probably
6139 be appropriate.
6140
6141 EOM
6142         case "$dlext" in
6143         '')     dflt="$so" ;;
6144         *)      dflt="$dlext" ;;
6145         esac
6146         rp='What is the extension of dynamically loaded modules'
6147         . ./myread
6148         dlext="$ans"
6149         ;;
6150 *)
6151         dlext="none"
6152         ;;
6153 esac
6154
6155 : Check if dlsym need a leading underscore
6156 echo " "
6157 val="$undef"
6158
6159 case "$dlsrc" in
6160 dl_dlopen.xs)
6161         echo "Checking whether your dlsym() needs a leading underscore ..." >&4
6162         $cat >dyna.c <<'EOM'
6163 fred () { }
6164 EOM
6165
6166 $cat >fred.c<<EOM
6167
6168 #include <stdio.h>
6169 #$i_dlfcn I_DLFCN
6170 #ifdef I_DLFCN
6171 #include <dlfcn.h>      /* the dynamic linker include file for Sunos/Solaris */
6172 #else
6173 #include <sys/types.h>
6174 #include <nlist.h>
6175 #include <link.h>
6176 #endif
6177
6178 extern int fred() ;
6179
6180 main()
6181 {
6182     void * handle ;
6183     void * symbol ;
6184 #ifndef RTLD_LAZY
6185     int mode = 1 ;
6186 #else
6187     int mode = RTLD_LAZY ;
6188 #endif
6189     handle = dlopen("./dyna.$dlext", mode) ;
6190     if (handle == NULL) {
6191         printf ("1\n") ;
6192         fflush (stdout) ;
6193         exit(0);
6194     }
6195     symbol = dlsym(handle, "fred") ;
6196     if (symbol == NULL) {
6197         /* try putting a leading underscore */
6198         symbol = dlsym(handle, "_fred") ;
6199         if (symbol == NULL) {
6200             printf ("2\n") ;
6201             fflush (stdout) ;
6202             exit(0);
6203         }
6204         printf ("3\n") ;
6205     }
6206     else
6207         printf ("4\n") ;
6208     fflush (stdout) ;
6209     exit(0);
6210 }
6211 EOM
6212         : Call the object file tmp-dyna.o in case dlext=o.
6213         if $cc $ccflags $cccdlflags -c dyna.c > /dev/null 2>&1 && 
6214                 mv dyna${obj_ext} tmp-dyna${obj_ext} > /dev/null 2>&1 && 
6215                 $ld $lddlflags -o dyna.$dlext tmp-dyna${obj_ext} > /dev/null 2>&1 && 
6216                 $cc $ccflags $ldflags $cccdlflags $ccdlflags fred.c -o fred $libs > /dev/null 2>&1; then
6217                 xxx=`./fred`
6218                 case $xxx in
6219                 1)      echo "Test program failed using dlopen." >&4
6220                         echo "Perhaps you should not use dynamic loading." >&4;;
6221                 2)      echo "Test program failed using dlsym." >&4
6222                         echo "Perhaps you should not use dynamic loading." >&4;;
6223                 3)      echo "dlsym needs a leading underscore" >&4
6224                         val="$define" ;;
6225                 4)      echo "dlsym doesn't need a leading underscore." >&4;;
6226                 esac
6227         else
6228                 echo "I can't compile and run the test program." >&4
6229         fi
6230         ;;
6231 esac
6232                 
6233 $rm -f fred fred.? dyna.$dlext dyna.? tmp-dyna.?
6234
6235 set d_dlsymun
6236 eval $setvar
6237
6238 : see if dup2 exists
6239 set dup2 d_dup2
6240 eval $inlibc
6241
6242 : Locate the flags for 'open()'
6243 echo " "
6244 $cat >open3.c <<'EOCP'
6245 #include <sys/types.h>
6246 #ifdef I_FCNTL
6247 #include <fcntl.h>
6248 #endif
6249 #ifdef I_SYS_FILE
6250 #include <sys/file.h>
6251 #endif
6252 main() {
6253         if(O_RDONLY);
6254 #ifdef O_TRUNC
6255         exit(0);
6256 #else
6257         exit(1);
6258 #endif
6259 }
6260 EOCP
6261 : check sys/file.h first to get FREAD on Sun
6262 if $test `./findhdr sys/file.h` && \
6263                 $cc $cppflags "-DI_SYS_FILE" open3.c -o open3 >/dev/null 2>&1 ; then
6264         h_sysfile=true;
6265         echo "<sys/file.h> defines the O_* constants..." >&4
6266         if ./open3; then
6267                 echo "and you have the 3 argument form of open()." >&4
6268                 val="$define"
6269         else
6270                 echo "but not the 3 argument form of open().  Oh, well." >&4
6271                 val="$undef"
6272         fi
6273 elif $test `./findhdr fcntl.h` && \
6274                 $cc "-DI_FCNTL" open3.c -o open3 >/dev/null 2>&1 ; then
6275         h_fcntl=true;
6276         echo "<fcntl.h> defines the O_* constants..." >&4
6277         if ./open3; then
6278                 echo "and you have the 3 argument form of open()." >&4
6279                 val="$define"
6280         else
6281                 echo "but not the 3 argument form of open().  Oh, well." >&4
6282                 val="$undef"
6283         fi
6284 else
6285         val="$undef"
6286         echo "I can't find the O_* constant definitions!  You got problems." >&4
6287 fi
6288 set d_open3
6289 eval $setvar
6290 $rm -f open3*
6291
6292 : check for non-blocking I/O stuff
6293 case "$h_sysfile" in
6294 true) echo "#include <sys/file.h>" > head.c;;
6295 *)
6296         case "$h_fcntl" in
6297         true) echo "#include <fcntl.h>" > head.c;;
6298         *) echo "#include <sys/fcntl.h>" > head.c;;
6299         esac
6300         ;;
6301 esac
6302 echo " "
6303 echo "Figuring out the flag used by open() for non-blocking I/O..." >&4
6304 case "$o_nonblock" in
6305 '')
6306         $cat head.c > try.c
6307         $cat >>try.c <<'EOCP'
6308 main() {
6309 #ifdef O_NONBLOCK
6310         printf("O_NONBLOCK\n");
6311         exit(0);
6312 #endif
6313 #ifdef O_NDELAY
6314         printf("O_NDELAY\n");
6315         exit(0);
6316 #endif
6317 #ifdef FNDELAY
6318         printf("FNDELAY\n");
6319         exit(0);
6320 #endif
6321         exit(0);
6322 }
6323 EOCP
6324         if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6325                 o_nonblock=`./try`
6326                 case "$o_nonblock" in
6327                 '') echo "I can't figure it out, assuming O_NONBLOCK will do.";;
6328                 *) echo "Seems like we can use $o_nonblock.";;
6329                 esac
6330         else
6331                 echo "(I can't compile the test program; pray O_NONBLOCK is right!)"
6332         fi
6333         ;;
6334 *) echo "Using $hint value $o_nonblock.";;
6335 esac
6336 $rm -f try try.* .out core
6337
6338 echo " "
6339 echo "Let's see what value errno gets from read() on a $o_nonblock file..." >&4
6340 case "$eagain" in
6341 '')
6342         $cat head.c > try.c
6343         $cat >>try.c <<EOCP
6344 #include <errno.h>
6345 #include <sys/types.h>
6346 #include <signal.h>
6347 #define MY_O_NONBLOCK $o_nonblock
6348 extern int errno;
6349 $signal_t blech(x) int x; { exit(3); }
6350 EOCP
6351         $cat >> try.c <<'EOCP'
6352 main()
6353 {
6354         int pd[2];
6355         int pu[2];
6356         char buf[1];
6357         char string[100];
6358
6359         pipe(pd);       /* Down: child -> parent */
6360         pipe(pu);       /* Up: parent -> child */
6361         if (0 != fork()) {
6362                 int ret;
6363                 close(pd[1]);   /* Parent reads from pd[0] */
6364                 close(pu[0]);   /* Parent writes (blocking) to pu[1] */
6365                 if (-1 == fcntl(pd[0], F_SETFL, MY_O_NONBLOCK))
6366                         exit(1);
6367                 signal(SIGALRM, blech);
6368                 alarm(5);
6369                 if ((ret = read(pd[0], buf, 1)) > 0)    /* Nothing to read! */
6370                         exit(2);
6371                 sprintf(string, "%d\n", ret);
6372                 write(2, string, strlen(string));
6373                 alarm(0);
6374 #ifdef EAGAIN
6375                 if (errno == EAGAIN) {
6376                         printf("EAGAIN\n");
6377                         goto ok;
6378                 }
6379 #endif
6380 #ifdef EWOULDBLOCK
6381                 if (errno == EWOULDBLOCK)
6382                         printf("EWOULDBLOCK\n");
6383 #endif
6384         ok:
6385                 write(pu[1], buf, 1);   /* Unblocks child, tell it to close our pipe */
6386                 sleep(2);                               /* Give it time to close our pipe */
6387                 alarm(5);
6388                 ret = read(pd[0], buf, 1);      /* Should read EOF */
6389                 alarm(0);
6390                 sprintf(string, "%d\n", ret);
6391                 write(3, string, strlen(string));
6392                 exit(0);
6393         }
6394
6395         close(pd[0]);                   /* We write to pd[1] */
6396         close(pu[1]);                   /* We read from pu[0] */
6397         read(pu[0], buf, 1);    /* Wait for parent to signal us we may continue */
6398         close(pd[1]);                   /* Pipe pd is now fully closed! */
6399         exit(0);                                /* Bye bye, thank you for playing! */
6400 }
6401 EOCP
6402         if $cc $ccflags $ldflags try.c -o try >/dev/null 2>&1; then
6403                 echo "$startsh" >mtry
6404                 echo "./try >try.out 2>try.ret 3>try.err || exit 4" >>mtry
6405                 chmod +x mtry
6406                 ./mtry >/dev/null 2>&1
6407                 case $? in
6408                 0) eagain=`$cat try.out`;;
6409                 1) echo "Could not perform non-blocking setting!";;
6410                 2) echo "I did a successful read() for something that was not there!";;
6411                 3) echo "Hmm... non-blocking I/O does not seem to be working!";;
6412                 *) echo "Something terribly wrong happened during testing.";;
6413                 esac
6414                 rd_nodata=`$cat try.ret`
6415                 echo "A read() system call with no data present returns $rd_nodata."
6416                 case "$rd_nodata" in
6417                 0|-1) ;;
6418                 *)
6419                         echo "(That's peculiar, fixing that to be -1.)"
6420                         rd_nodata=-1
6421                         ;;
6422                 esac
6423                 case "$eagain" in
6424                 '')
6425                         echo "Forcing errno EAGAIN on read() with no data available."
6426                         eagain=EAGAIN
6427                         ;;
6428                 *)
6429                         echo "Your read() sets errno to $eagain when no data is available."
6430                         ;;
6431                 esac
6432                 status=`$cat try.err`
6433                 case "$status" in
6434                 0) echo "And it correctly returns 0 to signal EOF.";;
6435                 -1) echo "But it also returns -1 to signal EOF, so be careful!";;
6436                 *) echo "However, your read() returns '$status' on EOF??";;
6437                 esac
6438                 val="$define"
6439                 if test "$status" -eq "$rd_nodata"; then
6440                         echo "WARNING: you can't distinguish between EOF and no data!"
6441                         val="$undef"
6442                 fi
6443         else
6444                 echo "I can't compile the test program--assuming errno EAGAIN will do."
6445                 eagain=EAGAIN
6446         fi
6447         set d_eofnblk
6448         eval $setvar
6449         ;;
6450 *)
6451         echo "Using $hint value $eagain."
6452         echo "Your read() returns $rd_nodata when no data is present."
6453         case "$d_eofnblk" in
6454         "$define") echo "And you can see EOF because read() returns 0.";;
6455         "$undef") echo "But you can't see EOF status from read() returned value.";;
6456         *)
6457                 echo "(Assuming you can't see EOF status from read anyway.)"
6458                 d_eofnblk=$undef
6459                 ;;
6460         esac
6461         ;;
6462 esac
6463 $rm -f try try.* .out core head.c mtry
6464
6465 : see if fchmod exists
6466 set fchmod d_fchmod
6467 eval $inlibc
6468
6469 : see if fchown exists
6470 set fchown d_fchown
6471 eval $inlibc
6472
6473 : see if this is an fcntl system
6474 set fcntl d_fcntl
6475 eval $inlibc
6476
6477 : see if fgetpos exists
6478 set fgetpos d_fgetpos
6479 eval $inlibc
6480
6481 : see if flock exists
6482 set flock d_flock
6483 eval $inlibc
6484
6485 : see if fork exists
6486 set fork d_fork
6487 eval $inlibc
6488
6489 : see if pathconf exists
6490 set pathconf d_pathconf
6491 eval $inlibc
6492
6493 : see if fpathconf exists
6494 set fpathconf d_fpathconf
6495 eval $inlibc
6496
6497 : see if fsetpos exists
6498 set fsetpos d_fsetpos
6499 eval $inlibc
6500
6501 : see if gethostent exists
6502 set gethostent d_gethent
6503 eval $inlibc
6504
6505 : see if getlogin exists
6506 set getlogin d_getlogin
6507 eval $inlibc
6508
6509 : see if getpgid exists
6510 set getpgid d_getpgid
6511 eval $inlibc
6512
6513 : see if getpgrp2 exists
6514 set getpgrp2 d_getpgrp2
6515 eval $inlibc
6516
6517 : see if getppid exists
6518 set getppid d_getppid
6519 eval $inlibc
6520
6521 : see if getpriority exists
6522 set getpriority d_getprior
6523 eval $inlibc
6524
6525 : see if gettimeofday or ftime exists
6526 set gettimeofday d_gettimeod
6527 eval $inlibc
6528 case "$d_gettimeod" in
6529 "$undef")
6530         set ftime d_ftime 
6531         eval $inlibc
6532         ;;
6533 *)
6534         val="$undef"; set d_ftime; eval $setvar
6535         ;;
6536 esac
6537 case "$d_gettimeod$d_ftime" in
6538 "$undef$undef")
6539         echo " "
6540         echo 'No ftime() nor gettimeofday() -- timing may be less accurate.' >&4
6541         ;;
6542 esac
6543
6544 : see if this is a netinet/in.h or sys/in.h system
6545 set netinet/in.h i_niin sys/in.h i_sysin
6546 eval $inhdr
6547
6548 : see if htonl --and friends-- exists
6549 val=''
6550 set htonl val
6551 eval $inlibc
6552
6553 : Maybe they are macros.
6554 case "$val" in
6555 $undef)
6556         $cat >htonl.c <<EOM
6557 #include <stdio.h>
6558 #include <sys/types.h>
6559 #$i_niin I_NETINET_IN
6560 #$i_sysin I_SYS_IN
6561 #ifdef I_NETINET_IN
6562 #include <netinet/in.h>
6563 #endif
6564 #ifdef I_SYS_IN
6565 #include <sys/in.h>
6566 #endif
6567 #ifdef htonl
6568 printf("Defined as a macro.");
6569 #endif
6570 EOM
6571         $cppstdin $cppflags $cppminus < htonl.c >htonl.E 2>/dev/null
6572         if $contains 'Defined as a macro' htonl.E >/dev/null 2>&1; then
6573                 val="$define"
6574                 echo "But it seems to be defined as a macro." >&4
6575         fi
6576         $rm -f htonl.?
6577         ;;
6578 esac
6579 set d_htonl
6580 eval $setvar
6581
6582 : see which of string.h or strings.h is needed
6583 echo " "
6584 strings=`./findhdr string.h`
6585 if $test "$strings" && $test -r "$strings"; then
6586         echo "Using <string.h> instead of <strings.h>." >&4
6587         val="$define"
6588 else
6589         val="$undef"
6590         strings=`./findhdr strings.h`
6591         if $test "$strings" && $test -r "$strings"; then
6592                 echo "Using <strings.h> instead of <string.h>." >&4
6593         else
6594                 echo "No string header found -- You'll surely have problems." >&4
6595         fi
6596 fi
6597 set i_string
6598 eval $setvar
6599 case "$i_string" in
6600 "$undef") strings=`./findhdr strings.h`;;
6601 *)        strings=`./findhdr string.h`;;
6602 esac
6603
6604 : index or strchr
6605 echo " "
6606 if set index val -f; eval $csym; $val; then
6607         if set strchr val -f d_strchr; eval $csym; $val; then
6608                 if $contains strchr "$strings" >/dev/null 2>&1 ; then
6609                         val="$define"
6610                         vali="$undef"
6611                         echo "strchr() found." >&4
6612                 else
6613                         val="$undef"
6614                         vali="$define"
6615                         echo "index() found." >&4
6616                 fi
6617         else
6618                 val="$undef"
6619                 vali="$define"
6620                 echo "index() found." >&4
6621         fi
6622 else
6623         if set strchr val -f d_strchr; eval $csym; $val; then
6624                 val="$define"
6625                 vali="$undef"
6626                 echo "strchr() found." >&4
6627         else
6628                 echo "No index() or strchr() found!" >&4
6629                 val="$undef"
6630                 vali="$undef"
6631         fi
6632 fi
6633 set d_strchr; eval $setvar
6634 val="$vali"
6635 set d_index; eval $setvar
6636
6637 : check whether inet_aton exists
6638 set inet_aton d_inetaton
6639 eval $inlibc
6640
6641 : Look for isascii
6642 echo " "
6643 $cat >isascii.c <<'EOCP'
6644 #include <stdio.h>
6645 #include <ctype.h>
6646 main() {
6647         int c = 'A';
6648         if (isascii(c))
6649                 exit(0);
6650         else
6651                 exit(1);
6652 }
6653 EOCP
6654 if $cc $ccflags $ldflags -o isascii isascii.c $libs >/dev/null 2>&1 ; then
6655         echo "isascii() found." >&4
6656         val="$define"
6657 else
6658         echo "isascii() NOT found." >&4
6659         val="$undef"
6660 fi
6661 set d_isascii
6662 eval $setvar
6663 $rm -f isascii*
6664
6665 : see if killpg exists
6666 set killpg d_killpg
6667 eval $inlibc
6668
6669 : see if link exists
6670 set link d_link
6671 eval $inlibc
6672
6673 : see if localeconv exists
6674 set localeconv d_locconv
6675 eval $inlibc
6676
6677 : see if lockf exists
6678 set lockf d_lockf
6679 eval $inlibc
6680
6681 : see if lstat exists
6682 set lstat d_lstat
6683 eval $inlibc
6684
6685 : see if mblen exists
6686 set mblen d_mblen
6687 eval $inlibc
6688
6689 : see if mbstowcs exists
6690 set mbstowcs d_mbstowcs
6691 eval $inlibc
6692
6693 : see if mbtowc exists
6694 set mbtowc d_mbtowc
6695 eval $inlibc
6696
6697 : see if memcmp exists
6698 set memcmp d_memcmp
6699 eval $inlibc
6700
6701 : see if memcpy exists
6702 set memcpy d_memcpy
6703 eval $inlibc
6704
6705 : see if memmove exists
6706 set memmove d_memmove
6707 eval $inlibc
6708
6709 : see if memset exists
6710 set memset d_memset
6711 eval $inlibc
6712
6713 : see if mkdir exists
6714 set mkdir d_mkdir
6715 eval $inlibc
6716
6717 : see if mkfifo exists
6718 set mkfifo d_mkfifo
6719 eval $inlibc
6720
6721 : see if mktime exists
6722 set mktime d_mktime
6723 eval $inlibc
6724
6725 : see if msgctl exists
6726 set msgctl d_msgctl
6727 eval $inlibc
6728
6729 : see if msgget exists
6730 set msgget d_msgget
6731 eval $inlibc
6732
6733 : see if msgsnd exists
6734 set msgsnd d_msgsnd
6735 eval $inlibc
6736
6737 : see if msgrcv exists
6738 set msgrcv d_msgrcv
6739 eval $inlibc
6740
6741 : see how much of the 'msg*(2)' library is present.
6742 h_msg=true
6743 echo " "
6744 case "$d_msgctl$d_msgget$d_msgsnd$d_msgrcv" in
6745 *"$undef"*) h_msg=false;;
6746 esac
6747 : we could also check for sys/ipc.h ...
6748 if $h_msg && $test `./findhdr sys/msg.h`; then
6749         echo "You have the full msg*(2) library." >&4
6750         val="$define"
6751 else
6752         echo "You don't have the full msg*(2) library." >&4
6753         val="$undef"
6754 fi
6755 set d_msg
6756 eval $setvar
6757
6758 : see if this is a malloc.h system
6759 set malloc.h i_malloc
6760 eval $inhdr
6761
6762 : see if stdlib is available
6763 set stdlib.h i_stdlib
6764 eval $inhdr
6765
6766 : determine which malloc to compile in
6767 echo " "
6768 case "$usemymalloc" in
6769 ''|y*|true)     dflt='y' ;;
6770 n*|false)       dflt='n' ;;
6771 *)      dflt="$usemymalloc" ;;
6772 esac
6773 rp="Do you wish to attempt to use the malloc that comes with $package?"
6774 . ./myread
6775 usemymalloc="$ans"
6776 case "$ans" in
6777 y*|true)
6778         usemymalloc='y'
6779         mallocsrc='malloc.c'
6780         mallocobj='malloc.o'
6781         d_mymalloc="$define"
6782         case "$libs" in
6783         *-lmalloc*)
6784                 : Remove malloc from list of libraries to use
6785                 echo "Removing unneeded -lmalloc from library list" >&4
6786                 set `echo X $libs | $sed -e 's/-lmalloc / /' -e 's/-lmalloc$//'`
6787                 shift
6788                 libs="$*"
6789                 echo "libs = $libs" >&4
6790                 ;;
6791         esac
6792         ;;
6793 *)
6794         usemymalloc='n'
6795         mallocsrc=''
6796         mallocobj=''
6797         d_mymalloc="$undef"
6798         ;;
6799 esac
6800
6801 : compute the return types of malloc and free
6802 echo " "
6803 $cat >malloc.c <<END
6804 #$i_malloc I_MALLOC
6805 #$i_stdlib I_STDLIB
6806 #include <stdio.h>
6807 #include <sys/types.h>
6808 #ifdef I_MALLOC
6809 #include <malloc.h>
6810 #endif
6811 #ifdef I_STDLIB
6812 #include <stdlib.h>
6813 #endif
6814 #ifdef TRY_MALLOC
6815 void *malloc();
6816 #endif
6817 #ifdef TRY_FREE
6818 void free();
6819 #endif
6820 END
6821 case "$malloctype" in
6822 '')
6823         if $cc $ccflags -c -DTRY_MALLOC malloc.c >/dev/null 2>&1; then
6824                 malloctype='void *'
6825         else
6826                 malloctype='char *'
6827         fi
6828         ;;
6829 esac
6830 echo "Your system wants malloc to return '$malloctype', it would seem." >&4
6831
6832 case "$freetype" in
6833 '')
6834         if $cc $ccflags -c -DTRY_FREE malloc.c >/dev/null 2>&1; then
6835                 freetype='void'
6836         else
6837                 freetype='int'
6838         fi
6839         ;;
6840 esac
6841 echo "Your system uses $freetype free(), it would seem." >&4
6842 $rm -f malloc.[co]
6843 : see if nice exists
6844 set nice d_nice
6845 eval $inlibc
6846
6847 : see if pause exists
6848 set pause d_pause
6849 eval $inlibc
6850
6851 : see if pipe exists
6852 set pipe d_pipe
6853 eval $inlibc
6854
6855 : see if poll exists
6856 set poll d_poll
6857 eval $inlibc
6858
6859 : see if this is a pwd.h system
6860 set pwd.h i_pwd
6861 eval $inhdr
6862
6863 case "$i_pwd" in
6864 $define)
6865         xxx=`./findhdr pwd.h`
6866         $cppstdin $cppflags $cppminus < $xxx >$$.h
6867
6868         if $contains 'pw_quota' $$.h >/dev/null 2>&1; then
6869                 val="$define"
6870         else
6871                 val="$undef"
6872         fi
6873         set d_pwquota
6874         eval $setvar
6875
6876         if $contains 'pw_age' $$.h >/dev/null 2>&1; then
6877                 val="$define"
6878         else
6879                 val="$undef"
6880         fi
6881         set d_pwage
6882         eval $setvar
6883
6884         if $contains 'pw_change' $$.h >/dev/null 2>&1; then
6885                 val="$define"
6886         else
6887                 val="$undef"
6888         fi
6889         set d_pwchange
6890         eval $setvar
6891
6892         if $contains 'pw_class' $$.h >/dev/null 2>&1; then
6893                 val="$define"
6894         else
6895                 val="$undef"
6896         fi
6897         set d_pwclass
6898         eval $setvar
6899
6900         if $contains 'pw_expire' $$.h >/dev/null 2>&1; then
6901                 val="$define"
6902         else
6903                 val="$undef"
6904         fi
6905         set d_pwexpire
6906         eval $setvar
6907
6908         if $contains 'pw_comment' $$.h >/dev/null 2>&1; then
6909                 val="$define"
6910         else
6911                 val="$undef"
6912         fi
6913         set d_pwcomment
6914         eval $setvar
6915
6916         $rm -f $$.h
6917         ;;
6918 *)
6919         val="$undef"; 
6920         set d_pwquota; eval $setvar
6921         set d_pwage; eval $setvar
6922         set d_pwchange; eval $setvar
6923         set d_pwclass; eval $setvar
6924         set d_pwexpire; eval $setvar
6925         set d_pwcomment; eval $setvar
6926         ;;
6927 esac
6928
6929 : see if readdir and friends exist
6930 set readdir d_readdir
6931 eval $inlibc
6932 set seekdir d_seekdir
6933 eval $inlibc
6934 set telldir d_telldir
6935 eval $inlibc
6936 set rewinddir d_rewinddir
6937 eval $inlibc
6938
6939 : see if readlink exists
6940 set readlink d_readlink
6941 eval $inlibc
6942
6943 : see if rename exists
6944 set rename d_rename
6945 eval $inlibc
6946
6947 : see if rmdir exists
6948 set rmdir d_rmdir
6949 eval $inlibc
6950
6951 : see if memory.h is available.
6952 val=''
6953 set memory.h val
6954 eval $inhdr
6955
6956 : See if it conflicts with string.h
6957 case "$val" in
6958 $define)
6959         case "$strings" in
6960         '') ;;
6961         *)
6962                 $cppstdin $cppflags $cppminus < $strings > mem.h
6963                 if $contains 'memcpy' mem.h >/dev/null 2>&1; then
6964                         echo " "
6965                         echo "We won't be including <memory.h>."
6966                         val="$undef"
6967                 fi
6968                 $rm -f mem.h
6969                 ;;
6970         esac
6971 esac
6972 set i_memory
6973 eval $setvar
6974
6975 : can bcopy handle overlapping blocks?
6976 val="$undef"
6977 case "$d_bcopy" in
6978 "$define")
6979         echo " "
6980         echo "Checking to see if your bcopy() can do overlapping copies..." >&4
6981         $cat >foo.c <<EOCP
6982 #$i_memory I_MEMORY
6983 #$i_stdlib I_STDLIB
6984 #$i_string I_STRING
6985 #$i_unistd I_UNISTD
6986 EOCP
6987         $cat >>foo.c <<'EOCP'
6988 #include <stdio.h>
6989
6990 #ifdef I_MEMORY
6991 #  include <memory.h>
6992 #endif
6993 #ifdef I_STDLIB
6994 #  include <stdlib.h>
6995 #endif
6996 #ifdef I_STRING
6997 #  include <string.h>
6998 #else
6999 #  include <strings.h>
7000 #endif
7001 #ifdef I_UNISTD
7002 #  include <unistd.h>  /* Needed for NetBSD */
7003 #endif
7004 main()
7005 {
7006 char buf[128], abc[128];
7007 char *b;
7008 int len;
7009 int off;
7010 int align;
7011
7012 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7013    try to store the string in read-only memory.  */
7014 bcopy("abcdefghijklmnopqrstuvwxyz0123456789", abc, 36);
7015
7016 for (align = 7; align >= 0; align--) {
7017         for (len = 36; len; len--) {
7018                 b = buf+align;
7019                 bcopy(abc, b, len);
7020                 for (off = 1; off <= len; off++) {
7021                         bcopy(b, b+off, len);
7022                         bcopy(b+off, b, len);
7023                         if (bcmp(b, abc, len))
7024                                 exit(1);
7025                 }
7026         }
7027 }
7028 exit(0);
7029 }
7030 EOCP
7031         if $cc $ccflags $ldflags foo.c -o safebcpy $libs >/dev/null 2>&1; then
7032                 if ./safebcpy 2>/dev/null; then
7033                         echo "Yes, it can."
7034                         val="$define"
7035                 else
7036                         echo "It can't, sorry."
7037                         case "$d_memmove" in
7038                         "$define") echo "But that's Ok since you have memmove()." ;;
7039                         esac
7040                 fi
7041         else
7042                 echo "(I can't compile the test program, so we'll assume not...)"
7043                 case "$d_memmove" in
7044                 "$define") echo "But that's Ok since you have memmove()." ;;
7045                 esac
7046         fi
7047         ;;
7048 esac
7049 $rm -f foo.* safebcpy core
7050 set d_safebcpy
7051 eval $setvar
7052
7053 : can memcpy handle overlapping blocks?
7054 val="$undef"
7055 case "$d_memcpy" in
7056 "$define")
7057         echo " "
7058         echo "Checking to see if your memcpy() can do overlapping copies..." >&4
7059         $cat >foo.c <<EOCP
7060 #$i_memory I_MEMORY
7061 #$i_stdlib I_STDLIB
7062 #$i_string I_STRING
7063 #$i_unistd I_UNISTD
7064 EOCP
7065         $cat >>foo.c <<'EOCP'
7066 #include <stdio.h>
7067
7068 #ifdef I_MEMORY
7069 #  include <memory.h>
7070 #endif
7071 #ifdef I_STDLIB
7072 #  include <stdlib.h>
7073 #endif
7074 #ifdef I_STRING
7075 #  include <string.h>
7076 #else
7077 #  include <strings.h>
7078 #endif
7079 #ifdef I_UNISTD
7080 #  include <unistd.h>  /* Needed for NetBSD */
7081 #endif
7082 main()
7083 {
7084 char buf[128], abc[128];
7085 char *b;
7086 int len;
7087 int off;
7088 int align;
7089
7090 /* Copy "abcde..." string to char abc[] so that gcc doesn't
7091    try to store the string in read-only memory. */
7092 memcpy(abc, "abcdefghijklmnopqrstuvwxyz0123456789", 36);
7093
7094 for (align = 7; align >= 0; align--) {
7095         for (len = 36; len; len--) {
7096                 b = buf+align;
7097                 memcpy(b, abc, len);
7098                 for (off = 1; off <= len; off++) {
7099                         memcpy(b+off, b, len);
7100                         memcpy(b, b+off, len);
7101                         if (memcmp(b, abc, len))
7102                                 exit(1);
7103                 }
7104         }
7105 }
7106 exit(0);
7107 }
7108 EOCP
7109         if $cc $ccflags $ldflags foo.c -o safemcpy $libs >/dev/null 2>&1; then
7110                 if ./safemcpy 2>/dev/null; then
7111                         echo "Yes, it can."
7112                         val="$define"
7113                 else
7114                         echo "It can't, sorry."
7115                         case "$d_memmove" in
7116                         "$define") echo "But that's Ok since you have memmove()." ;;
7117                         esac
7118                 fi
7119         else
7120                 echo "(I can't compile the test program, so we'll assume not...)"
7121                 case "$d_memmove" in
7122                 "$define") echo "But that's Ok since you have memmove()." ;;
7123                 esac
7124         fi
7125         ;;
7126 esac
7127 $rm -f foo.* safemcpy core
7128 set d_safemcpy
7129 eval $setvar
7130
7131 : can memcmp be trusted to compare relative magnitude?
7132 val="$undef"
7133 case "$d_memcmp" in
7134 "$define")
7135         echo " "
7136         echo "Checking to see if your memcmp() can compare relative magnitude..." >&4
7137         $cat >foo.c <<EOCP
7138 #$i_memory I_MEMORY
7139 #$i_stdlib I_STDLIB
7140 #$i_string I_STRING
7141 #$i_unistd I_UNISTD
7142 EOCP
7143         $cat >>foo.c <<'EOCP'
7144 #include <stdio.h>
7145
7146 #ifdef I_MEMORY
7147 #  include <memory.h>
7148 #endif
7149 #ifdef I_STDLIB
7150 #  include <stdlib.h>
7151 #endif
7152 #ifdef I_STRING
7153 #  include <string.h>
7154 #else
7155 #  include <strings.h>
7156 #endif
7157 #ifdef I_UNISTD
7158 #  include <unistd.h>  /* Needed for NetBSD */
7159 #endif
7160 main()
7161 {
7162 char a = -1;
7163 char b = 0;
7164 if ((a < b) && memcmp(&a, &b, 1) < 0)
7165         exit(1);
7166 exit(0);
7167 }
7168 EOCP
7169         if $cc $ccflags $ldflags foo.c -o sanemcmp $libs >/dev/null 2>&1; then
7170                 if ./sanemcmp 2>/dev/null; then
7171                         echo "Yes, it can."
7172                         val="$define"
7173                 else
7174                         echo "No, it can't (it uses signed chars)."
7175                 fi
7176         else
7177                 echo "(I can't compile the test program, so we'll assume not...)"
7178         fi
7179         ;;
7180 esac
7181 $rm -f foo.* sanemcmp core
7182 set d_sanemcmp
7183 eval $setvar
7184
7185 : see if select exists
7186 set select d_select
7187 eval $inlibc
7188
7189 : see if semctl exists
7190 set semctl d_semctl
7191 eval $inlibc
7192
7193 : see if semget exists
7194 set semget d_semget
7195 eval $inlibc
7196
7197 : see if semop exists
7198 set semop d_semop
7199 eval $inlibc
7200
7201 : see how much of the 'sem*(2)' library is present.
7202 h_sem=true
7203 echo " "
7204 case "$d_semctl$d_semget$d_semop" in
7205 *"$undef"*) h_sem=false;;
7206 esac
7207 : we could also check for sys/ipc.h ...
7208 if $h_sem && $test `./findhdr sys/sem.h`; then
7209         echo "You have the full sem*(2) library." >&4
7210         val="$define"
7211 else
7212         echo "You don't have the full sem*(2) library." >&4
7213         val="$undef"
7214 fi
7215 set d_sem
7216 eval $setvar
7217
7218 : see if setegid exists
7219 set setegid d_setegid
7220 eval $inlibc
7221
7222 : see if seteuid exists
7223 set seteuid d_seteuid
7224 eval $inlibc
7225
7226 : see if setlinebuf exists
7227 set setlinebuf d_setlinebuf
7228 eval $inlibc
7229
7230 : see if setlocale exists
7231 set setlocale d_setlocale
7232 eval $inlibc
7233
7234 : see if setpgid exists
7235 set setpgid d_setpgid
7236 eval $inlibc
7237
7238 : see if setpgrp2 exists
7239 set setpgrp2 d_setpgrp2
7240 eval $inlibc
7241
7242 : see if setpriority exists
7243 set setpriority d_setprior
7244 eval $inlibc
7245
7246 : see if setregid exists
7247 set setregid d_setregid
7248 eval $inlibc
7249 set setresgid d_setresgid
7250 eval $inlibc
7251
7252 : see if setreuid exists
7253 set setreuid d_setreuid
7254 eval $inlibc
7255 set setresuid d_setresuid
7256 eval $inlibc
7257
7258 : see if setrgid exists
7259 set setrgid d_setrgid
7260 eval $inlibc
7261
7262 : see if setruid exists
7263 set setruid d_setruid
7264 eval $inlibc
7265
7266 : see if setsid exists
7267 set setsid d_setsid
7268 eval $inlibc
7269
7270 : see if sfio.h is available
7271 set sfio.h i_sfio
7272 eval $inhdr
7273
7274
7275 : see if sfio library is available
7276 case "$i_sfio" in
7277 $define)
7278         val=''
7279         set sfreserve val
7280         eval $inlibc
7281         ;;
7282 *)
7283         val="$undef"
7284         ;;
7285 esac
7286 : Ok, but do we want to use it.
7287 case "$val" in
7288 $define)
7289         case "$usesfio" in
7290         true|$define|[yY]*) dflt='y';;
7291         *) dflt='n';;
7292         esac
7293         echo "$package can use the sfio library, but it is experimental."
7294         rp="You seem to have sfio available, do you want to try using it?"
7295         . ./myread
7296         case "$ans" in
7297         y|Y) ;;
7298         *)      echo "Ok, avoiding sfio this time.  I'll use stdio instead."
7299                 val="$undef"
7300                 ;;
7301         esac
7302         ;;
7303 *)      case "$usesfio" in
7304         true|$define|[yY]*)
7305                 echo "Sorry, cannot find sfio on this machine" >&4
7306                 echo "Ignoring your setting of usesfio=$usesfio" >&4
7307                 ;;
7308         esac
7309         ;;
7310 esac
7311 set d_sfio
7312 eval $setvar
7313 case "$d_sfio" in
7314 $define) usesfio='true';;
7315 *) usesfio='false';;
7316 esac
7317
7318 : see if shmctl exists
7319 set shmctl d_shmctl
7320 eval $inlibc
7321
7322 : see if shmget exists
7323 set shmget d_shmget
7324 eval $inlibc
7325
7326 : see if shmat exists
7327 set shmat d_shmat
7328 eval $inlibc
7329 : see what shmat returns
7330 case "$d_shmat" in
7331 "$define")
7332         $cat >shmat.c <<'END'
7333 #include <sys/shm.h>
7334 void *shmat();
7335 END
7336         if $cc $ccflags -c shmat.c >/dev/null 2>&1; then
7337                 shmattype='void *'
7338         else
7339                 shmattype='char *'
7340         fi
7341         echo "and it returns ($shmattype)." >&4
7342         : see if a prototype for shmat is available
7343         xxx=`./findhdr sys/shm.h`
7344         $cppstdin $cppflags $cppminus < $xxx > shmat.c 2>/dev/null
7345         if $contains 'shmat.*(' shmat.c >/dev/null 2>&1; then
7346                 val="$define"
7347         else
7348                 val="$undef"
7349         fi
7350         $rm -f shmat.[co]
7351         ;;
7352 *)
7353         val="$undef"
7354         ;;
7355 esac
7356 set d_shmatprototype
7357 eval $setvar
7358
7359 : see if shmdt exists
7360 set shmdt d_shmdt
7361 eval $inlibc
7362
7363 : see how much of the 'shm*(2)' library is present.
7364 h_shm=true
7365 echo " "
7366 case "$d_shmctl$d_shmget$d_shmat$d_shmdt" in
7367 *"$undef"*) h_shm=false;;
7368 esac
7369 : we could also check for sys/ipc.h ...
7370 if $h_shm && $test `./findhdr sys/shm.h`; then
7371         echo "You have the full shm*(2) library." >&4
7372         val="$define"
7373 else
7374         echo "You don't have the full shm*(2) library." >&4
7375         val="$undef"
7376 fi
7377 set d_shm
7378 eval $setvar
7379
7380 echo " "
7381 : see if we have sigaction
7382 if set sigaction val -f d_sigaction; eval $csym; $val; then
7383         echo 'sigaction() found.' >&4
7384         val="$define"
7385 else
7386         echo 'sigaction NOT found.' >&4
7387         val="$undef"
7388 fi
7389
7390 $cat > set.c <<'EOP'
7391 /* Solaris 2.5_x86 with SunWorks Pro C 3.0.1 doesn't have a complete
7392    sigaction structure if compiled with cc -Xc.  This compile test
7393    will fail then.  <doughera@lafcol.lafayette.edu>
7394 */
7395 #include <stdio.h>
7396 #include <sys/types.h>
7397 #include <signal.h>
7398 main()
7399 {
7400     struct sigaction act, oact;
7401 }
7402 EOP
7403
7404 if $cc $ccflags $ldflags -o set set.c $libs >/dev/null 2>&1; then
7405         :
7406 else
7407         echo "But you don't seem to have a useable struct sigaction." >&4
7408         val="$undef"
7409 fi
7410 set d_sigaction; eval $setvar
7411 $rm -f set set.o set.c
7412
7413 : see if sigsetjmp exists
7414 echo " "
7415 case "$d_sigsetjmp" in
7416 '')
7417         $cat >set.c <<'EOP'
7418 #include <setjmp.h>
7419 sigjmp_buf env;
7420 int set = 1;
7421 main()
7422 {
7423         if (sigsetjmp(env,1))
7424                 exit(set);
7425         set = 0;
7426         siglongjmp(env, 1);
7427         exit(1);
7428 }
7429 EOP
7430         if $cc $ccflags $ldflags -o set set.c $libs > /dev/null 2>&1 ; then
7431                 if ./set >/dev/null 2>&1; then
7432                         echo "POSIX sigsetjmp found." >&4
7433                         val="$define"
7434                 else
7435                         $cat >&4 <<EOM
7436 Uh-Oh! You have POSIX sigsetjmp and siglongjmp, but they do not work properly!!
7437 I'll ignore them.
7438 EOM
7439                         val="$undef"
7440                 fi
7441         else
7442                 echo "sigsetjmp not found." >&4
7443                 val="$undef"
7444         fi
7445         ;;
7446 *) val="$d_sigsetjmp"
7447         case "$d_sigsetjmp" in
7448         $define) echo "POSIX sigsetjmp found." >&4;;
7449         $undef) echo "sigsetjmp not found." >&4;;
7450         esac
7451         ;;
7452 esac
7453 set d_sigsetjmp
7454 eval $setvar
7455 $rm -f set.c set
7456
7457 socketlib=''
7458 sockethdr=''
7459 : see whether socket exists
7460 echo " "
7461 $echo $n "Hmm... $c" >&4
7462 if set socket val -f d_socket; eval $csym; $val; then
7463         echo "Looks like you have Berkeley networking support." >&4
7464         d_socket="$define"
7465         if set setsockopt val -f; eval $csym; $val; then
7466                 d_oldsock="$undef"
7467         else
7468                 echo "...but it uses the old 4.1c interface, rather than 4.2" >&4
7469                 d_oldsock="$define"
7470         fi
7471 else
7472         if $contains socklib libc.list >/dev/null 2>&1; then
7473                 echo "Looks like you have Berkeley networking support." >&4
7474                 d_socket="$define"
7475                 : we will have to assume that it supports the 4.2 BSD interface
7476                 d_oldsock="$undef"
7477         else
7478                 echo "You don't have Berkeley networking in libc$lib_ext..." >&4
7479                 if test -f /usr/lib/libnet$lib_ext; then
7480                         ( (nm $nm_opt /usr/lib/libnet$lib_ext | eval $nm_extract) ||  \
7481                         ar t /usr/lib/libnet$lib_ext) 2>/dev/null >> libc.list
7482                         if $contains socket libc.list >/dev/null 2>&1; then
7483                         echo "...but the Wollongong group seems to have hacked it in." >&4
7484                                 socketlib="-lnet"
7485                                 sockethdr="-I/usr/netinclude"
7486                                 d_socket="$define"
7487                                 if $contains setsockopt libc.list >/dev/null 2>&1; then
7488                                         d_oldsock="$undef"
7489                                 else
7490                                         echo "...using the old 4.1c interface, rather than 4.2" >&4
7491                                         d_oldsock="$define"
7492                                 fi
7493                         else
7494                                 echo "or even in libnet$lib_ext, which is peculiar." >&4
7495                                 d_socket="$undef"
7496                                 d_oldsock="$undef"
7497                         fi
7498                 else
7499                         echo "or anywhere else I see." >&4
7500                         d_socket="$undef"
7501                         d_oldsock="$undef"
7502                 fi
7503         fi
7504 fi
7505
7506 : see if socketpair exists
7507 set socketpair d_sockpair
7508 eval $inlibc
7509
7510 : see if stat knows about block sizes
7511 echo " "
7512 xxx=`./findhdr sys/stat.h`
7513 if $contains 'st_blocks;' "$xxx" >/dev/null 2>&1 ; then
7514         if $contains 'st_blksize;' "$xxx" >/dev/null 2>&1 ; then
7515                 echo "Your stat() knows about block sizes." >&4
7516                 val="$define"
7517         else
7518                 echo "Your stat() doesn't know about block sizes." >&4
7519                 val="$undef"
7520         fi
7521 else
7522         echo "Your stat() doesn't know about block sizes." >&4
7523         val="$undef"
7524 fi
7525 set d_statblks
7526 eval $setvar
7527
7528 : see if _ptr and _cnt from stdio act std
7529 echo " "
7530 if $contains '_IO_fpos_t' `./findhdr stdio.h` >/dev/null 2>&1 ; then
7531         echo "(Looks like you have stdio.h from Linux.)"
7532         case "$stdio_ptr" in
7533         '') stdio_ptr='((fp)->_IO_read_ptr)'
7534                 ptr_lval=$define
7535                 ;;
7536         *)      ptr_lval=$d_stdio_ptr_lval;;
7537         esac
7538         case "$stdio_cnt" in
7539         '') stdio_cnt='((fp)->_IO_read_end - (fp)->_IO_read_ptr)'
7540                 cnt_lval=$undef
7541                 ;;
7542         *)      cnt_lval=$d_stdio_cnt_lval;;
7543         esac
7544         case "$stdio_base" in
7545         '') stdio_base='((fp)->_IO_read_base)';;
7546         esac
7547         case "$stdio_bufsiz" in
7548         '') stdio_bufsiz='((fp)->_IO_read_end - (fp)->_IO_read_base)';;
7549         esac
7550 else
7551         case "$stdio_ptr" in
7552         '') stdio_ptr='((fp)->_ptr)'
7553                 ptr_lval=$define
7554                 ;;
7555         *)      ptr_lval=$d_stdio_ptr_lval;;
7556         esac
7557         case "$stdio_cnt" in
7558         '') stdio_cnt='((fp)->_cnt)'
7559                 cnt_lval=$define
7560                 ;;
7561         *)      cnt_lval=$d_stdio_cnt_lval;;
7562         esac
7563         case "$stdio_base" in
7564         '') stdio_base='((fp)->_base)';;
7565         esac
7566         case "$stdio_bufsiz" in
7567         '') stdio_bufsiz='((fp)->_cnt + (fp)->_ptr - (fp)->_base)';;
7568         esac
7569 fi
7570 : test whether _ptr and _cnt really work
7571 echo "Checking how std your stdio is..." >&4
7572 $cat >try.c <<EOP
7573 #include <stdio.h>
7574 #define FILE_ptr(fp)    $stdio_ptr
7575 #define FILE_cnt(fp)    $stdio_cnt
7576 main() {
7577         FILE *fp = fopen("try.c", "r");
7578         char c = getc(fp);
7579         if (
7580                 18 <= FILE_cnt(fp) &&
7581                 strncmp(FILE_ptr(fp), "include <stdio.h>\n", 18) == 0
7582         )
7583                 exit(0);
7584         exit(1);
7585 }
7586 EOP
7587 val="$undef"
7588 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1; then
7589         if ./try; then
7590                 echo "Your stdio acts pretty std."
7591                 val="$define"
7592         else
7593                 echo "Your stdio isn't very std."
7594         fi
7595 else
7596         echo "Your stdio doesn't appear very std."
7597 fi
7598 $rm -f try.c try
7599 set d_stdstdio
7600 eval $setvar
7601
7602 : Can _ptr be used as an lvalue?
7603 case "$d_stdstdio$ptr_lval" in
7604 $define$define) val=$define ;;
7605 *) val=$undef ;;
7606 esac
7607 set d_stdio_ptr_lval
7608 eval $setvar
7609
7610 : Can _cnt be used as an lvalue?
7611 case "$d_stdstdio$cnt_lval" in
7612 $define$define) val=$define ;;
7613 *) val=$undef ;;
7614 esac
7615 set d_stdio_cnt_lval
7616 eval $setvar
7617
7618 : How to access the stdio _filbuf or __filbuf function.
7619 : If this fails, check how the getc macro in stdio.h works.
7620 case "${d_stdio_ptr_lval}${d_stdio_cnt_lval}" in
7621 ${define}${define})
7622         : Try $hint value, if any, then _filbuf, __filbuf, _fill, then punt.
7623         : _fill is for os/2.
7624         xxx='notok'
7625         for filbuf in $stdio_filbuf '_filbuf(fp)' '__filbuf(fp) ' '_fill(fp)' ; do
7626                 $cat >try.c <<EOP
7627 #include <stdio.h>
7628 #define FILE_ptr(fp)    $stdio_ptr
7629 #define FILE_cnt(fp)    $stdio_cnt
7630 #define FILE_filbuf(fp) $filbuf
7631 main() {
7632         FILE *fp = fopen("try.c", "r");
7633         int c;
7634         c = getc(fp);
7635         c = FILE_filbuf(fp);  /* Just looking for linker errors.*/
7636         exit(0);
7637 }
7638 EOP
7639                 if $cc $ccflags $ldflags -o try try.c $libs >/dev/null 2>&1 && ./try; then
7640                         echo "Your stdio appears to use $filbuf"
7641                         stdio_filbuf="$filbuf"
7642                         xxx='ok'
7643                         break
7644                 else
7645                         echo "Hmm.  $filbuf doesn't seem to work."
7646                 fi
7647                 $rm -f try.c try
7648         done
7649         case "$xxx" in
7650         notok)  echo "I can't figure out how to access _filbuf"
7651                         echo "I'll just have to work around it."
7652                         d_stdio_ptr_lval="$undef"
7653                         d_stdio_cnt_lval="$undef"
7654                         ;;
7655         esac
7656         ;;
7657 esac
7658
7659
7660 : see if _base is also standard
7661 val="$undef"
7662 case "$d_stdstdio" in
7663 $define)
7664         $cat >try.c <<EOP
7665 #include <stdio.h>
7666 #define FILE_base(fp)   $stdio_base
7667 #define FILE_bufsiz(fp) $stdio_bufsiz
7668 main() {
7669         FILE *fp = fopen("try.c", "r");
7670         char c = getc(fp);
7671         if (
7672                 19 <= FILE_bufsiz(fp) &&
7673                 strncmp(FILE_base(fp), "#include <stdio.h>\n", 19) == 0
7674         )
7675                 exit(0);
7676         exit(1);
7677 }
7678 EOP
7679         if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
7680                 if ./try; then
7681                         echo "And its _base field acts std."
7682                         val="$define"
7683                 else
7684                         echo "But its _base field isn't std."
7685                 fi
7686         else
7687                 echo "However, it seems to be lacking the _base field."
7688         fi
7689         $rm -f try.c try
7690         ;;
7691 esac
7692 set d_stdiobase
7693 eval $setvar
7694
7695 : see if strcoll exists
7696 set strcoll d_strcoll
7697 eval $inlibc
7698
7699 : check for structure copying
7700 echo " "
7701 echo "Checking to see if your C compiler can copy structs..." >&4
7702 $cat >try.c <<'EOCP'
7703 main()
7704 {
7705         struct blurfl {
7706                 int dyick;
7707         } foo, bar;
7708
7709         foo = bar;
7710 }
7711 EOCP
7712 if $cc -c try.c >/dev/null 2>&1 ; then
7713         val="$define"
7714         echo "Yup, it can."
7715 else
7716         val="$undef"
7717         echo "Nope, it can't."
7718 fi
7719 set d_strctcpy
7720 eval $setvar
7721 $rm -f try.*
7722
7723 : see if strerror and/or sys_errlist[] exist
7724 echo " "
7725 if set strerror val -f d_strerror; eval $csym; $val; then
7726         echo 'strerror() found.' >&4
7727         d_strerror="$define"
7728         d_strerrm='strerror(e)'
7729         if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
7730                 echo "(You also have sys_errlist[], so we could roll our own strerror.)" 
7731                 d_syserrlst="$define"
7732         else
7733         echo "(Since you don't have sys_errlist[], sterror() is welcome.)"
7734                 d_syserrlst="$undef"
7735         fi
7736 elif xxx=`./findhdr string.h`; test "$xxx" || xxx=`./findhdr strings.h`; \
7737         $contains '#[   ]*define.*strerror' "$xxx" >/dev/null 2>&1; then
7738         echo 'strerror() found in string header.' >&4
7739         d_strerror="$define"
7740         d_strerrm='strerror(e)'
7741         if set sys_errlist val -a d_syserrlst; eval $csym; $val; then   
7742                 echo "(Most probably, strerror() uses sys_errlist[] for descriptions.)"
7743                 d_syserrlst="$define"
7744         else
7745                 echo "(You don't appear to have any sys_errlist[], how can this be?)"
7746                 d_syserrlst="$undef"
7747         fi
7748 elif set sys_errlist val -a d_syserrlst; eval $csym; $val; then
7749 echo "strerror() not found, but you have sys_errlist[] so we'll use that." >&4
7750         d_strerror="$undef"
7751         d_syserrlst="$define"
7752         d_strerrm='((e)<0||(e)>=sys_nerr?"unknown":sys_errlist[e])'
7753 else
7754         echo 'strerror() and sys_errlist[] NOT found.' >&4
7755         d_strerror="$undef"
7756         d_syserrlst="$undef"
7757         d_strerrm='"unknown"'
7758 fi
7759
7760 : see if strtod exists
7761 set strtod d_strtod
7762 eval $inlibc
7763
7764 : see if strtol exists
7765 set strtol d_strtol
7766 eval $inlibc
7767
7768 : see if strtoul exists
7769 set strtoul d_strtoul
7770 eval $inlibc
7771
7772 : see if strxfrm exists
7773 set strxfrm d_strxfrm
7774 eval $inlibc
7775
7776 : see if symlink exists
7777 set symlink d_symlink
7778 eval $inlibc
7779
7780 : see if syscall exists
7781 set syscall d_syscall
7782 eval $inlibc
7783
7784 : see if sysconf exists
7785 set sysconf d_sysconf
7786 eval $inlibc
7787
7788 : see if system exists
7789 set system d_system
7790 eval $inlibc
7791
7792 : see if tcgetpgrp exists
7793 set tcgetpgrp d_tcgetpgrp
7794 eval $inlibc
7795
7796 : see if tcsetpgrp exists
7797 set tcsetpgrp d_tcsetpgrp
7798 eval $inlibc
7799
7800 : define an is-a-typedef? function
7801 typedef='type=$1; var=$2; def=$3; shift; shift; shift; inclist=$@;
7802 case "$inclist" in
7803 "") inclist="sys/types.h";;
7804 esac;
7805 eval "varval=\$$var";
7806 case "$varval" in
7807 "")
7808         $rm -f temp.c;
7809         for inc in $inclist; do
7810                 echo "#include <$inc>" >>temp.c;
7811         done;
7812         $cppstdin $cppflags $cppminus < temp.c >temp.E 2>/dev/null;
7813         if $contains $type temp.E >/dev/null 2>&1; then
7814                 eval "$var=\$type";
7815         else
7816                 eval "$var=\$def";
7817         fi;
7818         $rm -f temp.?;;
7819 *) eval "$var=\$varval";;
7820 esac'
7821
7822 : see if this is a sys/times.h system
7823 set sys/times.h i_systimes
7824 eval $inhdr
7825
7826 : see if times exists
7827 echo " "
7828 if set times val -f d_times; eval $csym; $val; then
7829         echo 'times() found.' >&4
7830         d_times="$define"
7831         inc=''
7832         case "$i_systimes" in
7833         "$define") inc='sys/times.h';;
7834         esac
7835         set clock_t clocktype long stdio.h sys/types.h $inc
7836         eval $typedef
7837         dflt="$clocktype"
7838         echo " "
7839         rp="What type is returned by times() on this system?"
7840         . ./myread
7841         clocktype="$ans"
7842 else
7843         echo 'times() NOT found, hope that will do.' >&4
7844         d_times="$undef"
7845         clocktype='int'
7846 fi
7847
7848 : see if truncate exists
7849 set truncate d_truncate
7850 eval $inlibc
7851
7852 : see if tzname[] exists
7853 echo " "
7854 if set tzname val -a d_tzname; eval $csym; $val; then
7855         val="$define"
7856         echo 'tzname[] found.' >&4
7857 else
7858         val="$undef"
7859         echo 'tzname[] NOT found.' >&4
7860 fi
7861 set d_tzname
7862 eval $setvar
7863
7864 : see if umask exists
7865 set umask d_umask
7866 eval $inlibc
7867
7868 : see how we will look up host name
7869 echo " "
7870 if false; then
7871         : dummy stub to allow use of elif
7872 elif set uname val -f d_uname; eval $csym; $val; then
7873         if ./xenix; then
7874                 $cat <<'EOM'
7875 uname() was found, but you're running xenix, and older versions of xenix
7876 have a broken uname(). If you don't really know whether your xenix is old
7877 enough to have a broken system call, use the default answer.
7878
7879 EOM
7880                 dflt=y
7881                 case "$d_uname" in
7882                 "$define") dflt=n;;
7883                 esac
7884                 rp='Is your uname() broken?'
7885                 . ./myread
7886                 case "$ans" in
7887                 n*) d_uname="$define"; call=uname;;
7888                 esac
7889         else
7890                 echo 'uname() found.' >&4
7891                 d_uname="$define"
7892                 call=uname
7893         fi
7894 fi
7895 case "$d_gethname" in
7896 '') d_gethname="$undef";;
7897 esac
7898 case "$d_uname" in
7899 '') d_uname="$undef";;
7900 esac
7901 case "$d_phostname" in
7902 '') d_phostname="$undef";;
7903 esac
7904
7905 : backward compatibility for d_hvfork
7906 if test X$d_hvfork != X; then
7907         d_vfork="$d_hvfork"
7908         d_hvfork=''
7909 fi
7910 : see if there is a vfork
7911 val=''
7912 set vfork val
7913 eval $inlibc
7914
7915 : Ok, but do we want to use it. vfork is reportedly unreliable in 
7916 : perl on Solaris 2.x, and probably elsewhere.
7917 case "$val" in
7918 $define)
7919         echo " "
7920         case "$usevfork" in
7921         false) dflt='n';;
7922         *) dflt='y';;
7923         esac
7924         rp="Some systems have problems with vfork().  Do you want to use it?"
7925         . ./myread
7926         case "$ans" in
7927         y|Y) ;;
7928         *)
7929                 echo "Ok, we won't use vfork()."
7930                 val="$undef"
7931                 ;;
7932         esac
7933         ;;
7934 esac
7935 set d_vfork
7936 eval $setvar
7937 case "$d_vfork" in
7938 $define) usevfork='true';;
7939 *) usevfork='false';;
7940 esac
7941
7942 : see if this is an sysdir system
7943 set sys/dir.h i_sysdir
7944 eval $inhdr
7945
7946 : see if this is an sysndir system
7947 set sys/ndir.h i_sysndir
7948 eval $inhdr
7949
7950 : see if closedir exists
7951 set closedir d_closedir
7952 eval $inlibc
7953
7954 case "$d_closedir" in
7955 "$define")
7956         echo " "
7957         echo "Checking whether closedir() returns a status..." >&4
7958         cat > closedir.c <<EOM
7959 #$i_dirent I_DIRENT             /**/
7960 #$i_sysdir I_SYS_DIR            /**/
7961 #$i_sysndir I_SYS_NDIR          /**/
7962
7963 #if defined(I_DIRENT)
7964 #include <dirent.h>
7965 #if defined(NeXT) && defined(I_SYS_DIR) /* NeXT needs dirent + sys/dir.h */
7966 #include <sys/dir.h>
7967 #endif
7968 #else
7969 #ifdef I_SYS_NDIR
7970 #include <sys/ndir.h>
7971 #else
7972 #ifdef I_SYS_DIR
7973 #ifdef hp9000s500
7974 #include <ndir.h>       /* may be wrong in the future */
7975 #else
7976 #include <sys/dir.h>
7977 #endif
7978 #endif
7979 #endif
7980 #endif 
7981 int main() { return closedir(opendir(".")); }
7982 EOM
7983         if $cc $ccflags $ldflags -o closedir closedir.c $libs > /dev/null 2>&1; then
7984                 if ./closedir > /dev/null 2>&1 ; then
7985                         echo "Yes, it does."
7986                         val="$undef"
7987                 else
7988                         echo "No, it doesn't."
7989                         val="$define"
7990                 fi
7991         else
7992                 echo "(I can't seem to compile the test program--assuming it doesn't)"
7993                 val="$define"
7994         fi
7995         ;;
7996 *)
7997         val="$undef";
7998         ;;
7999 esac
8000 set d_void_closedir
8001 eval $setvar
8002 $rm -f closedir*
8003 : check for volatile keyword
8004 echo " "
8005 echo 'Checking to see if your C compiler knows about "volatile"...' >&4
8006 $cat >try.c <<'EOCP'
8007 main()
8008 {
8009         typedef struct _goo_struct goo_struct;
8010         goo_struct * volatile goo = ((goo_struct *)0);
8011         struct _goo_struct {
8012                 long long_int;
8013                 int reg_int;
8014                 char char_var;
8015         };
8016         typedef unsigned short foo_t;
8017         char *volatile foo;
8018         volatile int bar;
8019         volatile foo_t blech;
8020         foo = foo;
8021 }
8022 EOCP
8023 if $cc -c $ccflags try.c >/dev/null 2>&1 ; then
8024         val="$define"
8025         echo "Yup, it does."
8026 else
8027         val="$undef"
8028         echo "Nope, it doesn't."
8029 fi
8030 set d_volatile
8031 eval $setvar
8032 $rm -f try.*
8033
8034 : see if there is a wait4
8035 set wait4 d_wait4
8036 eval $inlibc
8037
8038 : see if waitpid exists
8039 set waitpid d_waitpid
8040 eval $inlibc
8041
8042 : see if wcstombs exists
8043 set wcstombs d_wcstombs
8044 eval $inlibc
8045
8046 : see if wctomb exists
8047 set wctomb d_wctomb
8048 eval $inlibc
8049
8050 : preserve RCS keywords in files with variable substitution, grrr
8051 Date='$Date'
8052 Id='$Id'
8053 Log='$Log'
8054 RCSfile='$RCSfile'
8055 Revision='$Revision'
8056
8057 : check for alignment requirements
8058 echo " "
8059 case "$alignbytes" in
8060 '') echo "Checking alignment constraints..." >&4
8061         $cat >try.c <<'EOCP'
8062 struct foobar {
8063         char foo;
8064         double bar;
8065 } try;
8066 main()
8067 {
8068         printf("%d\n", (char *)&try.bar - (char *)&try.foo);
8069 }
8070 EOCP
8071         if $cc $ccflags try.c -o try >/dev/null 2>&1; then
8072                 dflt=`./try`
8073         else
8074                 dflt='8'
8075                 echo"(I can't seem to compile the test program...)"
8076         fi
8077         ;;
8078 *) dflt="$alignbytes"
8079         ;;
8080 esac
8081 rp="Doubles must be aligned on a how-many-byte boundary?"
8082 . ./myread
8083 alignbytes="$ans"
8084 $rm -f try.c try
8085
8086 : check for ordering of bytes in a long
8087 case "$byteorder" in
8088 '')
8089         $cat <<'EOM'
8090   
8091 In the following, larger digits indicate more significance.  A big-endian
8092 machine like a Pyramid or a Motorola 680?0 chip will come out to 4321. A
8093 little-endian machine like a Vax or an Intel 80?86 chip would be 1234. Other
8094 machines may have weird orders like 3412.  A Cray will report 87654321. If
8095 the test program works the default is probably right.
8096 I'm now running the test program...
8097 EOM
8098         $cat >try.c <<'EOCP'
8099 #include <stdio.h>
8100 main()
8101 {
8102         int i;
8103         union {
8104                 unsigned long l;
8105                 char c[sizeof(long)];
8106         } u;
8107
8108         if (sizeof(long) > 4)
8109                 u.l = (0x08070605L << 32) | 0x04030201L;
8110         else
8111                 u.l = 0x04030201L;
8112         for (i = 0; i < sizeof(long); i++)
8113                 printf("%c", u.c[i]+'0');
8114         printf("\n");
8115         exit(0);
8116 }
8117 EOCP
8118         xxx_prompt=y
8119         if $cc $ccflags try.c -o try >/dev/null 2>&1 && ./try > /dev/null; then
8120                 dflt=`./try`
8121                 case "$dflt" in
8122                 [1-4][1-4][1-4][1-4]|12345678|87654321)
8123                         echo "(The test program ran ok.)"
8124                         echo "byteorder=$dflt"
8125                         xxx_prompt=n
8126                         ;;
8127                 ????|????????) echo "(The test program ran ok.)" ;;
8128                 *) echo "(The test program didn't run right for some reason.)" ;;
8129                 esac
8130         else
8131                 dflt='4321'
8132                 cat <<'EOM'
8133 (I can't seem to compile the test program.  Guessing big-endian...)
8134 EOM
8135         fi
8136         case "$xxx_prompt" in
8137         y)
8138                 rp="What is the order of bytes in a long?"
8139                 . ./myread
8140                 byteorder="$ans"
8141                 ;;
8142         *)      byteorder=$dflt
8143                 ;;
8144         esac
8145         ;;
8146 esac
8147 $rm -f try.c try
8148
8149 : how do we catenate cpp tokens here?
8150 echo " "
8151 echo "Checking to see how your cpp does stuff like catenate tokens..." >&4
8152 $cat >cpp_stuff.c <<'EOCP'
8153 #define RCAT(a,b)a/**/b
8154 #define ACAT(a,b)a ## b
8155 RCAT(Rei,ser)
8156 ACAT(Cir,cus)
8157 EOCP
8158 $cppstdin $cppflags $cppminus <cpp_stuff.c >cpp_stuff.out 2>&1
8159 if $contains 'Circus' cpp_stuff.out >/dev/null 2>&1; then
8160         echo "Oh!  Smells like ANSI's been here."
8161         echo "We can catify or stringify, separately or together!"
8162         cpp_stuff=42
8163 elif $contains 'Reiser' cpp_stuff.out >/dev/null 2>&1; then
8164         echo "Ah, yes!  The good old days!"
8165         echo "However, in the good old days we don't know how to stringify and"
8166         echo "catify at the same time."
8167         cpp_stuff=1
8168 else
8169         $cat >&4 <<EOM
8170 Hmm, I don't seem to be able to catenate tokens with your cpp.  You're going
8171 to have to edit the values of CAT[2-5] in config.h...
8172 EOM
8173         cpp_stuff="/* Help! How do we handle cpp_stuff? */*/"
8174 fi
8175 $rm -f cpp_stuff.*
8176
8177 : see if this is a db.h system
8178 set db.h i_db
8179 eval $inhdr
8180
8181 case "$i_db" in
8182 define)
8183         : Check the return type needed for hash 
8184         echo " "
8185         echo "Checking return type needed for hash for Berkeley DB ..." >&4
8186         $cat >try.c <<EOCP
8187 #$d_const HASCONST
8188 #ifndef HASCONST
8189 #define const
8190 #endif
8191 #include <sys/types.h>
8192 #include <db.h>
8193 u_int32_t hash_cb (ptr, size)
8194 const void *ptr;
8195 size_t size;
8196 {
8197 }
8198 HASHINFO info;
8199 main()
8200 {
8201         info.hash = hash_cb;
8202 }
8203 EOCP
8204         if $cc $ccflags -c try.c >try.out 2>&1 ; then
8205                 if $contains warning try.out >>/dev/null 2>&1 ; then
8206                         db_hashtype='int'
8207                 else
8208                         db_hashtype='u_int32_t'
8209                 fi
8210         else
8211                 echo "I can't seem to compile the test program." >&4
8212                 db_hashtype=int
8213         fi
8214         $rm -f try.*
8215         echo "Your version of Berkeley DB uses $db_hashtype for hash."
8216         ;;
8217 *)      db_hashtype=int
8218         ;;
8219 esac
8220
8221 case "$i_db" in
8222 define)
8223         : Check the return type needed for prefix 
8224         echo " "
8225         echo "Checking return type needed for prefix for Berkeley DB ..." >&4
8226         cat >try.c <<EOCP
8227 #$d_const HASCONST
8228 #ifndef HASCONST
8229 #define const
8230 #endif
8231 #include <sys/types.h>
8232 #include <db.h>
8233 size_t prefix_cb (key1, key2)
8234 const DBT *key1;
8235 const DBT *key2;
8236 {
8237 }
8238 BTREEINFO info;
8239 main()
8240 {
8241         info.prefix = prefix_cb;
8242 }
8243 EOCP
8244         if $cc $ccflags -c try.c  >try.out 2>&1 ; then
8245                 if $contains warning try.out >>/dev/null 2>&1 ; then
8246                         db_prefixtype='int'
8247                 else
8248                         db_prefixtype='size_t'
8249                 fi
8250         else
8251                 echo "I can't seem to compile the test program." >&4
8252                 db_prefixtype='int'
8253         fi
8254         $rm -f try.*
8255         echo "Your version of Berkeley DB uses $db_prefixtype for prefix."
8256         ;;
8257 *)      db_prefixtype='int'
8258         ;;
8259 esac
8260
8261 : check for void type
8262 echo " "
8263 echo "Checking to see how well your C compiler groks the void type..." >&4
8264 echo " "
8265 $cat >&4 <<EOM
8266   Support flag bits are:
8267     1: basic void declarations.
8268     2: arrays of pointers to functions returning void.
8269     4: operations between pointers to and addresses of void functions.
8270     8: generic void pointers.
8271 EOM
8272 echo " "
8273 case "$voidflags" in
8274 '')
8275         $cat >try.c <<'EOCP'
8276 #if TRY & 1
8277 void sub() {
8278 #else
8279 sub() {
8280 #endif
8281         extern void moo();      /* function returning void */
8282         void (*goo)();          /* ptr to func returning void */
8283 #if TRY & 8
8284         void *hue;              /* generic ptr */
8285 #endif
8286 #if TRY & 2
8287         void (*foo[10])();
8288 #endif
8289
8290 #if TRY & 4
8291         if(goo == moo) {
8292                 exit(0);
8293         }
8294 #endif
8295         exit(0);
8296 }
8297 main() { sub(); }
8298 EOCP
8299         if $cc $ccflags -c -DTRY=$defvoidused try.c >.out 2>&1 ; then
8300                 voidflags=$defvoidused
8301         echo "It appears to support void to the level $package wants ($defvoidused)."
8302                 if $contains warning .out >/dev/null 2>&1; then
8303                         echo "However, you might get some warnings that look like this:"
8304                         $cat .out
8305                 fi
8306         else
8307 echo "Hmm, your compiler has some difficulty with void. Checking further..." >&4
8308                 if $cc $ccflags -c -DTRY=1 try.c >/dev/null 2>&1; then
8309                         echo "It supports 1..."
8310                         if $cc $ccflags -c -DTRY=3 try.c >/dev/null 2>&1; then
8311                                 echo "It also supports 2..."
8312                                 if $cc $ccflags -c -DTRY=7 try.c >/dev/null 2>&1; then
8313                                         voidflags=7
8314                                         echo "And it supports 4 but not 8 definitely."
8315                                 else
8316                                         echo "It doesn't support 4..."
8317                                         if $cc $ccflags -c -DTRY=11 try.c >/dev/null 2>&1; then
8318                                                 voidflags=11
8319                                                 echo "But it supports 8."
8320                                         else
8321                                                 voidflags=3
8322                                                 echo "Neither does it support 8."
8323                                         fi
8324                                 fi
8325                         else
8326                                 echo "It does not support 2..."
8327                                 if $cc $ccflags -c -DTRY=13 try.c >/dev/null 2>&1; then
8328                                         voidflags=13
8329                                         echo "But it supports 4 and 8."
8330                                 else
8331                                         if $cc $ccflags -c -DTRY=5 try.c >/dev/null 2>&1; then
8332                                                 voidflags=5
8333                                                 echo "And it supports 4 but has not heard about 8."
8334                                         else
8335                                                 echo "However it supports 8 but not 4."
8336                                         fi
8337                                 fi
8338                         fi
8339                 else
8340                         echo "There is no support at all for void."
8341                         voidflags=0
8342                 fi
8343         fi
8344 esac
8345 : Only prompt user if support does not match the level we want
8346 case "$voidflags" in
8347 "$defvoidused") ;;
8348 *)
8349         dflt="$voidflags";
8350         rp="Your void support flags add up to what?"
8351         . ./myread
8352         voidflags="$ans"
8353         ;;
8354 esac
8355 $rm -f try.* .out
8356
8357 : see what type file positions are declared as in the library
8358 set fpos_t fpostype long stdio.h sys/types.h
8359 eval $typedef
8360 echo " "
8361 dflt="$fpostype"
8362 rp="What is the type for file position used by fsetpos()?"
8363 . ./myread
8364 fpostype="$ans"
8365
8366 : Store the full pathname to the sed program for use in the C program
8367 full_sed=$sed
8368
8369 : see what type gids are declared as in the kernel
8370 set gid_t gidtype xxx stdio.h sys/types.h
8371 eval $typedef
8372 case "$gidtype" in
8373 xxx)
8374         xxx=`./findhdr sys/user.h`
8375         set `grep 'groups\[NGROUPS\];' "$xxx" 2>/dev/null` unsigned short
8376         case $1 in
8377         unsigned) dflt="$1 $2" ;;
8378         *) dflt="$1" ;;
8379         esac
8380         ;;
8381 *) dflt="$gidtype";;
8382 esac
8383 echo " "
8384 rp="What is the type for group ids returned by getgid()?"
8385 . ./myread
8386 gidtype="$ans"
8387
8388 : see if getgroups exists
8389 set getgroups d_getgrps
8390 eval $inlibc
8391
8392 : Find type of 2nd arg to getgroups
8393 echo " "
8394 case "$d_getgrps" in
8395 'define')
8396         case "$groupstype" in
8397         '') dflt="$gidtype" ;;
8398         *)  dflt="$groupstype" ;;
8399         esac
8400         $cat <<EOM
8401 What is the type of the second argument to getgroups()?  Usually this
8402 is the same as group ids, $gidtype, but not always.
8403
8404 EOM
8405         rp='What type is the second argument to getgroups()?'
8406         . ./myread
8407         groupstype="$ans"
8408         ;;
8409 *)  groupstype="$gidtype";;
8410 esac
8411
8412 : see what type lseek is declared as in the kernel
8413 set off_t lseektype long stdio.h sys/types.h
8414 eval $typedef
8415 echo " "
8416 dflt="$lseektype"
8417 rp="What type is lseek's offset on this system declared as?"
8418 . ./myread
8419 lseektype="$ans"
8420
8421 echo " "
8422 case "$make" in
8423 '')
8424         make=`./loc make make $pth`
8425         case "$make" in
8426         /*)     echo make is in $make.  ;;
8427         ?:[\\/]*)       echo make is in $make.  ;;
8428         *)      echo "I don't know where 'make' is, and my life depends on it." >&4
8429                 echo "Go find a make program or fix your PATH setting!" >&4
8430                 exit 1
8431                 ;;
8432         esac
8433         ;;
8434 *)      echo make is in $make. ;;
8435 esac
8436
8437 $echo $n "Checking if your $make program sets \$(MAKE)... $c" >&4
8438 case "$make_set_make" in
8439 '')
8440         $sed 's/^X //' > testmake.mak << 'EOF'
8441 Xall:
8442 X       @echo 'ac_maketemp="$(MAKE)"'
8443 EOF
8444         : GNU make sometimes prints "make[1]: Entering...", which would confuse us.
8445         case "`$make -f testmake.mak 2>/dev/null`" in
8446         *ac_maketemp=*) make_set_make='#' ;;
8447         *)      make_set_make="MAKE=$make" ;;
8448         esac
8449         $rm -f testmake.mak
8450         ;;
8451 esac
8452 case "$make_set_make" in
8453 '#')    echo "Yup, it does." >&4 ;;
8454 *)      echo "Nope, it doesn't." >&4 ;;
8455 esac
8456
8457 : see what type is used for mode_t
8458 set mode_t modetype int stdio.h sys/types.h
8459 eval $typedef
8460 dflt="$modetype"
8461 echo " "
8462 rp="What type is used for file modes?"
8463 . ./myread
8464 modetype="$ans"
8465
8466 : locate the preferred pager for this system
8467 case "$pager" in
8468 '')
8469         dflt=''
8470         case "$pg" in
8471         /*) dflt=$pg;;
8472         esac
8473         case "$more" in
8474         /*) dflt=$more;;
8475         esac
8476         case "$less" in
8477         /*) dflt=$less;;
8478         esac
8479         case "$dflt" in
8480         '') dflt=/usr/ucb/more;;
8481         esac
8482         ;;
8483 *) dflt="$pager";;
8484 esac
8485 echo " "
8486 fn=f/
8487 rp='What pager is used on your system?'
8488 . ./getfile
8489 pager="$ans"
8490
8491 : Cruising for prototypes
8492 echo " "
8493 echo "Checking out function prototypes..." >&4
8494 $cat >prototype.c <<'EOCP'
8495 main(int argc, char *argv[]) {
8496         exit(0);}
8497 EOCP
8498 if $cc $ccflags -c prototype.c >prototype.out 2>&1 ; then
8499         echo "Your C compiler appears to support function prototypes."
8500         val="$define"
8501 else
8502         echo "Your C compiler doesn't seem to understand function prototypes."
8503         val="$undef"
8504 fi
8505 set prototype
8506 eval $setvar
8507 $rm -f prototype*
8508
8509 : check for size of random number generator
8510 echo " "
8511 case "$randbits" in
8512 '')
8513         echo "Checking to see how many bits your rand function produces..." >&4
8514         $cat >try.c <<EOCP
8515 #$i_unistd I_UNISTD
8516 #$i_stdlib I_STDLIB
8517 #include <stdio.h>
8518 #ifdef I_UNISTD
8519 #  include <unistd.h>
8520 #endif
8521 #ifdef I_STDLIB
8522 #  include <stdlib.h>
8523 #endif
8524 EOCP
8525         $cat >>try.c <<'EOCP'
8526 main()
8527 {
8528         register int i;
8529         register unsigned long tmp;
8530         register unsigned long max = 0L;
8531
8532         for (i = 1000; i; i--) {
8533                 tmp = (unsigned long)rand();
8534                 if (tmp > max) max = tmp;
8535         }
8536         for (i = 0; max; i++)
8537                 max /= 2;
8538         printf("%d\n",i);
8539 }
8540 EOCP
8541         if $cc try.c -o try >/dev/null 2>&1 ; then
8542                 dflt=`try`
8543         else
8544                 dflt='?'
8545                 echo "(I can't seem to compile the test program...)"
8546         fi
8547         ;;
8548 *)
8549         dflt="$randbits"
8550         ;;
8551 esac
8552 rp='How many bits does your rand() function produce?'
8553 . ./myread
8554 randbits="$ans"
8555 $rm -f try.c try
8556
8557 : see if ar generates random libraries by itself
8558 echo " "
8559 echo "Checking how to generate random libraries on your machine..." >&4
8560 echo 'int bar1() { return bar2(); }' > bar1.c
8561 echo 'int bar2() { return 2; }' > bar2.c
8562 $cat > foo.c <<'EOP'
8563 main() { printf("%d\n", bar1()); exit(0); }
8564 EOP
8565 $cc $ccflags -c bar1.c >/dev/null 2>&1
8566 $cc $ccflags -c bar2.c >/dev/null 2>&1
8567 $cc $ccflags -c foo.c >/dev/null 2>&1
8568 ar rc bar$lib_ext bar2.o bar1.o >/dev/null 2>&1
8569 if $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8570         ./foobar >/dev/null 2>&1; then
8571         echo "ar appears to generate random libraries itself."
8572         orderlib=false
8573         ranlib=":"
8574 elif ar ts bar$lib_ext >/dev/null 2>&1 &&
8575         $cc $ccflags $ldflags -o foobar foo.o bar$lib_ext $libs > /dev/null 2>&1 &&
8576         ./foobar >/dev/null 2>&1; then
8577                 echo "a table of contents needs to be added with 'ar ts'."
8578                 orderlib=false
8579                 ranlib="ar ts"
8580 else
8581         case "$ranlib" in
8582         :) ranlib='';;
8583         '')
8584                 ranlib=`./loc ranlib X /usr/bin /bin /usr/local/bin`
8585                 $test -f $ranlib || ranlib=''
8586                 ;;
8587         esac
8588         if $test -n "$ranlib"; then
8589                 echo "your system has '$ranlib'; we'll use that."
8590                 orderlib=false
8591         else
8592                 echo "your system doesn't seem to support random libraries"
8593                 echo "so we'll use lorder and tsort to order the libraries."
8594                 orderlib=true
8595                 ranlib=":"
8596         fi
8597 fi
8598 $rm -f foo* bar* 
8599
8600 : see if sys/select.h has to be included
8601 set sys/select.h i_sysselct
8602 eval $inhdr
8603
8604 : see if we should include time.h, sys/time.h, or both
8605 echo " "
8606 echo "Testing to see if we should include <time.h>, <sys/time.h> or both." >&4
8607 $echo $n "I'm now running the test program...$c"
8608 $cat >try.c <<'EOCP'
8609 #include <sys/types.h>
8610 #ifdef I_TIME
8611 #include <time.h>
8612 #endif
8613 #ifdef I_SYSTIME
8614 #ifdef SYSTIMEKERNEL
8615 #define KERNEL
8616 #endif
8617 #include <sys/time.h>
8618 #endif
8619 #ifdef I_SYSSELECT
8620 #include <sys/select.h>
8621 #endif
8622 main()
8623 {
8624         struct tm foo;
8625 #ifdef S_TIMEVAL
8626         struct timeval bar;
8627 #endif
8628 #ifdef S_TIMEZONE
8629         struct timezone tzp;
8630 #endif
8631         if (foo.tm_sec == foo.tm_sec)
8632                 exit(0);
8633 #ifdef S_TIMEVAL
8634         if (bar.tv_sec == bar.tv_sec)
8635                 exit(0);
8636 #endif
8637         exit(1);
8638 }
8639 EOCP
8640 flags=''
8641 for s_timezone in '-DS_TIMEZONE' ''; do
8642 sysselect=''
8643 for s_timeval in '-DS_TIMEVAL' ''; do
8644 for i_systimek in '' '-DSYSTIMEKERNEL'; do
8645 for i_time in '' '-DI_TIME'; do
8646 for i_systime in '-DI_SYSTIME' ''; do
8647         case "$flags" in
8648         '') $echo $n ".$c"
8649                 if $cc $ccflags \
8650                 $i_time $i_systime $i_systimek $sysselect $s_timeval $s_timezone \
8651                 try.c -o try >/dev/null 2>&1 ; then
8652                         set X $i_time $i_systime $i_systimek $sysselect $s_timeval
8653                         shift
8654                         flags="$*"
8655                         echo " "
8656                         $echo $n "Succeeded with $flags$c"
8657                 fi
8658                 ;;
8659         esac
8660 done
8661 done
8662 done
8663 done
8664 done
8665 timeincl=''
8666 echo " "
8667 case "$flags" in
8668 *SYSTIMEKERNEL*) i_systimek="$define"
8669         timeincl=`./findhdr sys/time.h`
8670         echo "We'll include <sys/time.h> with KERNEL defined." >&4;;
8671 *) i_systimek="$undef";;
8672 esac
8673 case "$flags" in
8674 *I_TIME*) i_time="$define"
8675         timeincl=`./findhdr time.h`" $timeincl"
8676         echo "We'll include <time.h>." >&4;;
8677 *) i_time="$undef";;
8678 esac
8679 case "$flags" in
8680 *I_SYSTIME*) i_systime="$define"
8681         timeincl=`./findhdr sys/time.h`" $timeincl"
8682         echo "We'll include <sys/time.h>." >&4;;
8683 *) i_systime="$undef";;
8684 esac
8685 $rm -f try.c try
8686
8687 : check for fd_set items
8688 $cat <<EOM
8689
8690 Checking to see how well your C compiler handles fd_set and friends ...
8691 EOM
8692 $cat >fd_set.c <<EOCP
8693 #$i_systime I_SYS_TIME
8694 #$i_sysselct I_SYS_SELECT
8695 #$d_socket HAS_SOCKET
8696 #include <sys/types.h>
8697 #ifdef HAS_SOCKET
8698 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8699 #endif
8700 #ifdef I_SYS_TIME
8701 #include <sys/time.h>
8702 #endif
8703 #ifdef I_SYS_SELECT
8704 #include <sys/select.h>
8705 #endif
8706 main() {
8707         fd_set fds;
8708
8709 #ifdef TRYBITS
8710         if(fds.fds_bits);
8711 #endif
8712
8713 #if defined(FD_SET) && defined(FD_CLR) && defined(FD_ISSET) && defined(FD_ZERO)
8714         exit(0);
8715 #else
8716         exit(1);
8717 #endif
8718 }
8719 EOCP
8720 if $cc $ccflags -DTRYBITS fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8721         d_fds_bits="$define"
8722         d_fd_set="$define"
8723         echo "Well, your system knows about the normal fd_set typedef..." >&4
8724         if ./fd_set; then
8725                 echo "and you have the normal fd_set macros (just as I'd expect)." >&4
8726                 d_fd_macros="$define"
8727         else
8728                 $cat >&4 <<'EOM'
8729 but not the normal fd_set macros!  Gaaack!  I'll have to cover for you.
8730 EOM
8731                 d_fd_macros="$undef"
8732         fi
8733 else
8734         $cat <<'EOM'
8735 Hmm, your compiler has some difficulty with fd_set.  Checking further...
8736 EOM
8737         if $cc $ccflags fd_set.c -o fd_set >fd_set.out 2>&1 ; then
8738                 d_fds_bits="$undef"
8739                 d_fd_set="$define"
8740                 echo "Well, your system has some sort of fd_set available..." >&4
8741                 if ./fd_set; then
8742                         echo "and you have the normal fd_set macros." >&4
8743                         d_fd_macros="$define"
8744                 else
8745                         $cat <<'EOM'
8746 but not the normal fd_set macros!  Gross!  More work for me...
8747 EOM
8748                         d_fd_macros="$undef"
8749                 fi
8750         else
8751         echo "Well, you got zip.  That's OK, I can roll my own fd_set stuff." >&4
8752                 d_fd_set="$undef"
8753                 d_fds_bits="$undef"
8754                 d_fd_macros="$undef"
8755         fi
8756 fi
8757 $rm -f fd_set*
8758
8759
8760 : check for type of arguments to select.  This will only really
8761 : work if the system supports prototypes and provides one for
8762 : select.
8763 case "$d_select" in
8764 $define)
8765         : Make initial guess
8766         case "$selecttype" in
8767         ''|' ')
8768                 case "$d_fd_set" in
8769                 $define) xxx='fd_set *' ;;
8770                 *) xxx='int *' ;;
8771                 esac
8772                 ;;
8773         *)      xxx="$selecttype" 
8774                 ;;
8775         esac
8776         : backup guess
8777         case "$xxx" in
8778         'fd_set *') yyy='int *' ;;
8779         'int *') yyy='fd_set *' ;;
8780         esac
8781
8782         $cat <<EOM
8783
8784 Checking to see what type of arguments are expected by select().
8785 EOM
8786         $cat >try.c <<EOCP
8787 #$i_systime I_SYS_TIME
8788 #$i_sysselct I_SYS_SELECT
8789 #$d_socket HAS_SOCKET
8790 #include <sys/types.h>
8791 #ifdef HAS_SOCKET
8792 #include <sys/socket.h> /* Might include <sys/bsdtypes.h> */
8793 #endif
8794 #ifdef I_SYS_TIME
8795 #include <sys/time.h>
8796 #endif
8797 #ifdef I_SYS_SELECT
8798 #include <sys/select.h>
8799 #endif
8800 main()
8801 {
8802         int width;
8803         Select_fd_set_t readfds;
8804         Select_fd_set_t writefds;
8805         Select_fd_set_t exceptfds;
8806         struct timeval timeout;
8807         select(width, readfds, writefds, exceptfds, &timeout);
8808         exit(0);
8809 }
8810 EOCP
8811         if $cc $ccflags -c -DSelect_fd_set_t="$xxx" try.c >/dev/null 2>&1 ; then
8812                 selecttype="$xxx"
8813                 echo "Your system uses $xxx for the arguments to select." >&4
8814         elif $cc $ccflags -c -DSelect_fd_set_t="$yyy" try.c >/dev/null 2>&1 ; then
8815                 selecttype="$yyy"
8816                 echo "Your system uses $yyy for the arguments to select." >&4
8817         else
8818                 rp='What is the type for the 2nd, 3rd, and 4th arguments to select?'
8819                 dflt="$xxx"
8820                 . ./myread
8821                 selecttype="$ans"
8822         fi
8823         $rm -f try.[co]
8824         ;;
8825 *)      selecttype='int *'
8826         ;;
8827 esac
8828
8829 : Trace out the files included by signal.h, then look for SIGxxx names.
8830 : Remove SIGARRAYSIZE used by HPUX.
8831 : Remove SIGTYP void lines used by OS2.
8832 xxx=`echo '#include <signal.h>' |
8833         $cppstdin $cppminus $cppflags 2>/dev/null |
8834         $grep '^[       ]*#.*include' | 
8835         $awk "{print \\$$fieldn}" | $sed 's!"!!g' | $sort | $uniq`
8836 : Check this list of files to be sure we have parsed the cpp output ok.
8837 : This will also avoid potentially non-existent files, such 
8838 : as ../foo/bar.h
8839 xxxfiles=''
8840 for xx in $xxx /dev/null ; do
8841         $test -f "$xx" && xxxfiles="$xxxfiles $xx"
8842 done
8843 : If we have found no files, at least try signal.h
8844 case "$xxxfiles" in
8845 '')     xxxfiles=`./findhdr signal.h` ;;
8846 esac
8847 xxx=`awk '
8848 $1 ~ /^#define$/ && $2 ~ /^SIG[A-Z0-9]*$/ && $2 !~ /SIGARRAYSIZE/ && $3 !~ /void/ {
8849         print substr($2, 4, 20)
8850 }
8851 $1 == "#" && $2 ~ /^define$/ && $3 ~ /^SIG[A-Z0-9]*$/ && $3 !~ /SIGARRAYSIZE/ && $4 !~ /void/ {
8852         print substr($3, 4, 20)
8853 }' $xxxfiles`
8854 : Append some common names just in case the awk scan failed.
8855 xxx="$xxx ABRT ALRM BUS CHLD CLD CONT DIL EMT FPE HUP ILL INT IO IOT KILL"
8856 xxx="$xxx LOST PHONE PIPE POLL PROF PWR QUIT SEGV STKFLT STOP SYS TERM TRAP"
8857 xxx="$xxx TSTP TTIN TTOU URG USR1 USR2 USR3 USR4 VTALRM"
8858 xxx="$xxx WINCH WIND WINDOW XCPU XFSZ"
8859 : generate a few handy files for later
8860 $cat > signal.c <<'EOP'
8861 #include <sys/types.h>
8862 #include <signal.h>
8863 int main() {
8864
8865 /* Strange style to avoid deeply-nested #if/#else/#endif */
8866 #ifndef NSIG
8867 #  ifdef _NSIG
8868 #    define NSIG (_NSIG)
8869 #  endif
8870 #endif
8871
8872 #ifndef NSIG
8873 #  ifdef SIGMAX
8874 #    define NSIG (SIGMAX+1)
8875 #  endif
8876 #endif
8877
8878 #ifndef NSIG
8879 #  ifdef SIG_MAX
8880 #    define NSIG (SIG_MAX+1)
8881 #  endif
8882 #endif
8883
8884 #ifndef NSIG
8885 #  ifdef MAXSIG
8886 #    define NSIG (MAXSIG+1)
8887 #  endif
8888 #endif
8889
8890 #ifndef NSIG
8891 #  ifdef MAX_SIG
8892 #    define NSIG (MAX_SIG+1)
8893 #  endif
8894 #endif
8895
8896 #ifndef NSIG
8897 #  ifdef SIGARRAYSIZE
8898 #    define NSIG (SIGARRAYSIZE+1) /* Not sure of the +1 */
8899 #  endif
8900 #endif
8901
8902 #ifndef NSIG
8903 #  ifdef _sys_nsig
8904 #    define NSIG (_sys_nsig) /* Solaris 2.5 */
8905 #  endif
8906 #endif
8907
8908 /* Default to some arbitrary number that's big enough to get most
8909    of the common signals.
8910 */
8911 #ifndef NSIG
8912 #    define NSIG 50
8913 #endif
8914
8915 printf("NSIG %d\n", NSIG);
8916
8917 EOP
8918 echo $xxx | $tr ' ' '\012' | $sort | $uniq | $awk '
8919 {
8920         printf "#ifdef SIG"; printf $1; printf "\n"
8921         printf "printf(\""; printf $1; printf " %%d\\n\",SIG";
8922         printf $1; printf ");\n"
8923         printf "#endif\n"
8924 }
8925 END {
8926         printf "}\n";
8927 }
8928 ' >>signal.c
8929 $cat >signal.awk <<'EOP'
8930 BEGIN { ndups = 0 }
8931 $1 ~ /^NSIG$/ { nsig = $2 }
8932 ($1 !~ /^NSIG$/) && (NF == 2) {
8933     if ($2 > maxsig) { maxsig = $2 }
8934     if (sig_name[$2]) {
8935         dup_name[ndups] = $1
8936         dup_num[ndups] = $2
8937         ndups++ 
8938     }
8939     else {
8940         sig_name[$2] = $1
8941         sig_num[$2] = $2
8942     }
8943
8944 }
8945 END { 
8946     if (nsig == 0) { nsig = maxsig + 1 }
8947         for (n = 1; n < nsig; n++) {
8948                 if (sig_name[n]) {
8949                         printf("%s %d\n", sig_name[n], sig_num[n])
8950                 }
8951                 else {
8952                         printf("NUM%d %d\n", n, n) 
8953                 }
8954         }
8955     for (n = 0; n < ndups; n++) {
8956                 printf("%s %d\n", dup_name[n], dup_num[n])
8957     }
8958 }
8959 EOP
8960 $cat >signal_cmd <<EOS
8961 $startsh
8962 $test -s signal.lst && exit 0
8963 if $cc $ccflags signal.c -o signal $ldflags >/dev/null 2>&1; then
8964         ./signal | $sort -n +1 | $uniq | $awk -f signal.awk >signal.lst
8965 else
8966         echo "(I can't seem be able to compile the test program -- Guessing)"
8967         echo 'kill -l' >signal
8968         set X \`csh -f <signal\`
8969         $rm -f signal
8970         shift
8971         case \$# in
8972         0) set HUP INT QUIT ILL TRAP ABRT EMT FPE KILL BUS SEGV SYS PIPE ALRM TERM;;
8973         esac
8974         echo \$@ | $tr ' ' '\012' | \
8975                 $awk '{ printf $1; printf " %d\n", ++s; }' >signal.lst
8976 fi
8977 $rm -f signal.c signal signal.o
8978 EOS
8979 chmod a+x signal_cmd
8980 $eunicefix signal_cmd
8981
8982 : generate list of signal names
8983 echo " "
8984 case "$sig_name" in
8985 '')     sig_num='' ;;
8986 esac
8987 case "$sig_num" in
8988 '')     sig_name='' ;;
8989 esac
8990 case "$sig_name" in
8991 '')
8992         echo "Generating a list of signal names and numbers..." >&4
8993         ./signal_cmd
8994         sig_name=`$awk '{printf "%s ", $1}' signal.lst`
8995         sig_name="ZERO $sig_name"
8996         sig_num=`$awk '{printf "%d ", $2}' signal.lst`
8997         sig_num="0 $sig_num"
8998         ;;
8999 esac
9000 echo "The following signals are available:"
9001 echo " "
9002 echo $sig_name | $awk \
9003 'BEGIN { linelen = 0 }
9004 {
9005         for (i = 1; i <= NF; i++) {
9006                 name = "SIG" $i " "
9007                 linelen = linelen + length(name)
9008                 if (linelen > 70) {
9009                         printf "\n"
9010                         linelen = length(name)
9011                 }
9012                 printf "%s", name
9013         }
9014         printf "\n"
9015 }'
9016 $rm -f signal signal.c signal.awk signal.lst signal_cmd 
9017
9018 : see what type is used for size_t
9019 set size_t sizetype 'unsigned int' stdio.h sys/types.h
9020 eval $typedef
9021 dflt="$sizetype"
9022 echo " "
9023 rp="What type is used for the length parameter for string functions?"
9024 . ./myread
9025 sizetype="$ans"
9026
9027 : see what type is used for signed size_t
9028 set ssize_t ssizetype int stdio.h sys/types.h
9029 eval $typedef
9030 dflt="$ssizetype"
9031 $cat > ssize.c <<EOM
9032 #include <stdio.h>
9033 #include <sys/types.h>
9034 #define Size_t $sizetype
9035 #define SSize_t $dflt
9036 main()
9037 {
9038         if (sizeof(Size_t) == sizeof(SSize_t))
9039                 printf("$dflt\n");
9040         else if (sizeof(Size_t) == sizeof(int))
9041                 printf("int\n");
9042         else 
9043                 printf("long\n");
9044         fflush(stdout);
9045         exit(0);
9046 }
9047 EOM
9048 echo " "
9049 if $cc $ccflags $ldflags -o ssize ssize.c $libs > /dev/null 2>&1  &&
9050                 ./ssize > /dev/null 2>&1 ; then
9051         ssizetype=`./ssize`
9052         echo "I'll be using $ssizetype for functions returning a byte count." >&4
9053 else
9054         echo "(I can't compile and run the test program--please enlighten me!)"
9055         $cat <<EOM
9056
9057 I need a type that is the same size as $sizetype, but is guaranteed to
9058 be signed.  Common values are int and long.
9059
9060 EOM
9061         rp="What signed type is the same size as $sizetype?"
9062         . ./myread
9063         ssizetype="$ans"
9064 fi
9065 $rm -f ssize ssize.[co]
9066
9067 : see what type of char stdio uses.
9068 echo " "
9069 if $contains 'unsigned.*char.*_ptr;' `./findhdr stdio.h` >/dev/null 2>&1 ; then
9070         echo "Your stdio uses unsigned chars." >&4
9071         stdchar="unsigned char"
9072 else
9073         echo "Your stdio uses signed chars." >&4
9074         stdchar="char"
9075 fi
9076
9077 : see if time exists
9078 echo " "
9079 if set time val -f d_time; eval $csym; $val; then
9080         echo 'time() found.' >&4
9081         val="$define"
9082         set time_t timetype long stdio.h sys/types.h
9083         eval $typedef
9084         dflt="$timetype"
9085         echo " "
9086         rp="What type is returned by time() on this system?"
9087         . ./myread
9088         timetype="$ans"
9089 else
9090         echo 'time() not found, hope that will do.' >&4
9091         val="$undef"
9092         timetype='int';
9093 fi
9094 set d_time
9095 eval $setvar
9096
9097 : see what type uids are declared as in the kernel
9098 set uid_t uidtype xxx stdio.h sys/types.h
9099 eval $typedef
9100 case "$uidtype" in
9101 xxx)
9102         xxx=`./findhdr sys/user.h`
9103         set `grep '_ruid;' "$xxx" 2>/dev/null` unsigned short
9104         case $1 in
9105         unsigned) dflt="$1 $2" ;;
9106         *) dflt="$1" ;;
9107         esac
9108         ;;
9109 *) dflt="$uidtype";;
9110 esac
9111 echo " "
9112 rp="What is the type for user ids returned by getuid()?"
9113 . ./myread
9114 uidtype="$ans"
9115
9116 : see if dbm.h is available
9117 : see if dbmclose exists
9118 set dbmclose d_dbmclose
9119 eval $inlibc
9120
9121 case "$d_dbmclose" in
9122 $define)
9123         set dbm.h i_dbm
9124         eval $inhdr
9125         case "$i_dbm" in
9126         $define)
9127                 val="$undef"
9128                 set i_rpcsvcdbm
9129                 eval $setvar
9130                 ;;
9131         *)      set rpcsvc/dbm.h i_rpcsvcdbm
9132                 eval $inhdr
9133                 ;;
9134         esac
9135         ;;
9136 *)      echo "We won't be including <dbm.h>"
9137         val="$undef"
9138         set i_dbm
9139         eval $setvar
9140         val="$undef"
9141         set i_rpcsvcdbm
9142         eval $setvar
9143         ;;
9144 esac
9145
9146 : see if this is a sys/file.h system
9147 val=''
9148 set sys/file.h val
9149 eval $inhdr
9150
9151 : do we need to include sys/file.h ?
9152 case "$val" in
9153 "$define")
9154         echo " "
9155         if $h_sysfile; then
9156                 val="$define"
9157                 echo "We'll be including <sys/file.h>." >&4
9158         else
9159                 val="$undef"
9160                 echo "We won't be including <sys/file.h>." >&4
9161         fi
9162         ;;
9163 *)
9164         h_sysfile=false
9165         ;;
9166 esac
9167 set i_sysfile
9168 eval $setvar
9169
9170 : see if fcntl.h is there
9171 val=''
9172 set fcntl.h val
9173 eval $inhdr
9174
9175 : see if we can include fcntl.h
9176 case "$val" in
9177 "$define")
9178         echo " "
9179         if $h_fcntl; then
9180                 val="$define"
9181                 echo "We'll be including <fcntl.h>." >&4
9182         else
9183                 val="$undef"
9184                 if $h_sysfile; then
9185         echo "We don't need to include <fcntl.h> if we include <sys/file.h>." >&4
9186                 else
9187                         echo "We won't be including <fcntl.h>." >&4
9188                 fi
9189         fi
9190         ;;
9191 *)
9192         h_fcntl=false
9193         val="$undef"
9194         ;;
9195 esac
9196 set i_fcntl
9197 eval $setvar
9198
9199 : see if this is an grp system
9200 set grp.h i_grp
9201 eval $inhdr
9202
9203 : see if locale.h is available
9204 set locale.h i_locale
9205 eval $inhdr
9206
9207 : see if this is a math.h system
9208 set math.h i_math
9209 eval $inhdr
9210
9211 : see if ndbm.h is available
9212 set ndbm.h t_ndbm
9213 eval $inhdr
9214 case "$t_ndbm" in
9215 $define)
9216         : see if dbm_open exists
9217         set dbm_open d_dbm_open
9218         eval $inlibc
9219         case "$d_dbm_open" in
9220         $undef)
9221                 t_ndbm="$undef"
9222                 echo "We won't be including <ndbm.h>"
9223                 ;;
9224         esac
9225         ;;
9226 esac
9227 val="$t_ndbm"
9228 set i_ndbm
9229 eval $setvar
9230
9231 : see if net/errno.h is available
9232 val=''
9233 set net/errno.h val
9234 eval $inhdr
9235
9236 : Unfortunately, it causes problems on some systems.  Arrgh.
9237 case "$val" in
9238 $define)
9239         cat > try.c <<'EOM'
9240 #include <stdio.h>
9241 #include <errno.h>
9242 #include <net/errno.h>
9243 int func()
9244 {
9245         return ENOTSOCK;
9246 }
9247 EOM
9248         if $cc $ccflags -c try.c >/dev/null 2>&1; then
9249                 echo "We'll be including <net/errno.h>." >&4
9250         else
9251                 echo "We won't be including <net/errno.h>." >&4
9252                 val="$undef"
9253         fi
9254         $rm -f try.* try
9255         ;;
9256 esac
9257 set i_neterrno
9258 eval $setvar
9259
9260 : get C preprocessor symbols handy
9261 echo " "
9262 $echo $n "Hmm... $c"
9263 echo $al | $tr ' ' '\012' >Cppsym.know
9264 $cat <<EOSS >Cppsym
9265 $startsh
9266 case "\$1" in
9267 -l) list=true
9268         shift
9269         ;;
9270 esac
9271 unknown=''
9272 case "\$list\$#" in
9273 1|2)
9274         for sym do
9275                 if $contains "^\$1$" Cppsym.true >/dev/null 2>&1; then
9276                         exit 0
9277                 elif $contains "^\$1$" Cppsym.know >/dev/null 2>&1; then
9278                         :
9279                 else
9280                         unknown="\$unknown \$sym"
9281                 fi
9282         done
9283         set X \$unknown
9284         shift
9285         ;;
9286 esac
9287 case \$# in
9288 0) exit 1;;
9289 esac
9290 echo \$* | $tr ' ' '\012' | $sed -e 's/\(.*\)/\\
9291 #ifdef \1\\
9292 exit 0; _ _ _ _\1\\      \1\\
9293 #endif\\
9294 /' >Cppsym\$\$
9295 echo "exit 1; _ _ _" >>Cppsym\$\$
9296 $cppstdin $cppminus <Cppsym\$\$ | $grep '^exit [01]; _ _'  >Cppsym2\$\$
9297 case "\$list" in
9298 true) $awk 'NF > 5 {print substr(\$6,2,100)}' <Cppsym2\$\$ ;;
9299 *)
9300         sh Cppsym2\$\$
9301         status=\$?
9302         ;;
9303 esac
9304 $rm -f Cppsym\$\$ Cppsym2\$\$
9305 exit \$status
9306 EOSS
9307 chmod +x Cppsym
9308 $eunicefix Cppsym
9309 ./Cppsym -l $al | $sort | $grep -v '^$' >Cppsym.true
9310
9311 : now check the C compiler for additional symbols
9312 $cat >ccsym <<EOS
9313 $startsh
9314 $cat >tmp.c <<EOF
9315 extern int foo;
9316 EOF
9317 for i in \`$cc -v -c tmp.c 2>&1\`
9318 do
9319         case "\$i" in
9320         -D*) echo "\$i" | $sed 's/^-D//';;
9321         -A*) $test "$gccversion" && echo "\$i" | $sed 's/^-A\(.*\)(\(.*\))/\1=\2/';;
9322         esac
9323 done
9324 $rm -f try.c
9325 EOS
9326 chmod +x ccsym
9327 $eunicefix ccsym
9328 ./ccsym | $sort | $uniq >ccsym.raw
9329 $awk '/\=/ { print $0; next }
9330         { print $0"=1" }' ccsym.raw >ccsym.list
9331 $awk '{ print $0"=1" }' Cppsym.true >ccsym.true
9332 $comm -13 ccsym.true ccsym.list >ccsym.own
9333 $comm -12 ccsym.true ccsym.list >ccsym.com
9334 $comm -23 ccsym.true ccsym.list >ccsym.cpp
9335 also=''
9336 symbols='symbols'
9337 if $test -z ccsym.raw; then
9338         echo "Your C compiler doesn't seem to define any symbol!" >&4
9339         echo " "
9340         echo "However, your C preprocessor defines the following ones:"
9341         $cat Cppsym.true
9342 else
9343         if $test -s ccsym.com; then
9344                 echo "Your C compiler and pre-processor define these symbols:"
9345                 $sed -e 's/\(.*\)=.*/\1/' ccsym.com
9346                 also='also '
9347                 symbols='ones'
9348                 $test "$silent" || sleep 1
9349         fi
9350         if $test -s ccsym.cpp; then
9351                 $test "$also" && echo " "
9352                 echo "Your C pre-processor ${also}defines the following $symbols:"
9353                 $sed -e 's/\(.*\)=.*/\1/' ccsym.cpp
9354                 also='further '
9355                 $test "$silent" || sleep 1
9356         fi
9357         if $test -s ccsym.own; then
9358                 $test "$also" && echo " "
9359                 echo "Your C compiler ${also}defines the following cpp variables:"
9360                 $sed -e 's/\(.*\)=1/\1/' ccsym.own
9361                 $sed -e 's/\(.*\)=.*/\1/' ccsym.own | $uniq >>Cppsym.true
9362                 $test "$silent" || sleep 1
9363         fi
9364 fi
9365 $rm -f ccsym*
9366
9367 : see if this is a termio system
9368 val="$undef"
9369 val2="$undef"
9370 val3="$undef"
9371 if $test `./findhdr termios.h`; then
9372         set tcsetattr i_termios
9373         eval $inlibc
9374         val3="$i_termios"
9375 fi
9376 echo " "
9377 case "$val3" in
9378 "$define") echo "You have POSIX termios.h... good!" >&4;;
9379 *) if ./Cppsym pyr; then
9380                 case "`/bin/universe`" in
9381                 ucb) if $test `./findhdr sgtty.h`; then
9382                                 val2="$define"
9383                                 echo "<sgtty.h> found." >&4
9384                         else
9385                                 echo "System is pyramid with BSD universe."
9386                                 echo "<sgtty.h> not found--you could have problems." >&4
9387                         fi;;
9388                 *) if $test `./findhdr termio.h`; then
9389                                 val="$define"
9390                                 echo "<termio.h> found." >&4
9391                         else
9392                                 echo "System is pyramid with USG universe."
9393                                 echo "<termio.h> not found--you could have problems." >&4
9394                         fi;;
9395                 esac
9396         elif ./usg; then
9397                 if $test `./findhdr termio.h`; then
9398                         echo "<termio.h> found." >&4
9399                         val="$define"
9400                 elif $test `./findhdr sgtty.h`; then
9401                         echo "<sgtty.h> found." >&4
9402                         val2="$define"
9403                 else
9404 echo "Neither <termio.h> nor <sgtty.h> found--you could have problems." >&4
9405                 fi
9406         else
9407                 if $test `./findhdr sgtty.h`; then
9408                         echo "<sgtty.h> found." >&4
9409                         val2="$define"
9410                 elif $test `./findhdr termio.h`; then
9411                         echo "<termio.h> found." >&4
9412                         val="$define"
9413                 else
9414 echo "Neither <sgtty.h> nor <termio.h> found--you could have problems." >&4
9415                 fi
9416         fi;;
9417 esac
9418 set i_termio; eval $setvar
9419 val=$val2; set i_sgtty; eval $setvar
9420 val=$val3; set i_termios; eval $setvar
9421
9422 : see if stdarg is available
9423 echo " "
9424 if $test `./findhdr stdarg.h`; then
9425         echo "<stdarg.h> found." >&4
9426         valstd="$define"
9427 else
9428         echo "<stdarg.h> NOT found." >&4
9429         valstd="$undef"
9430 fi
9431
9432 : see if varags is available
9433 echo " "
9434 if $test `./findhdr varargs.h`; then
9435         echo "<varargs.h> found." >&4
9436 else
9437         echo "<varargs.h> NOT found, but that's ok (I hope)." >&4
9438 fi
9439
9440 : set up the varargs testing programs
9441 $cat > varargs.c <<EOP
9442 #ifdef I_STDARG
9443 #include <stdarg.h>
9444 #endif
9445 #ifdef I_VARARGS
9446 #include <varargs.h>
9447 #endif
9448
9449 #ifdef I_STDARG
9450 int f(char *p, ...)
9451 #else
9452 int f(va_alist)
9453 va_dcl
9454 #endif
9455 {
9456         va_list ap;
9457 #ifndef I_STDARG
9458         char *p;
9459 #endif
9460 #ifdef I_STDARG
9461         va_start(ap,p);
9462 #else
9463         va_start(ap);
9464         p = va_arg(ap, char *);
9465 #endif
9466         va_end(ap);
9467 }
9468 EOP
9469 $cat > varargs <<EOP
9470 $startsh
9471 if $cc -c $ccflags -D\$1 varargs.c >/dev/null 2>&1; then
9472         echo "true"
9473 else
9474         echo "false"
9475 fi
9476 $rm -f varargs.o
9477 EOP
9478 chmod +x varargs
9479
9480 : now check which varargs header should be included
9481 echo " "
9482 i_varhdr=''
9483 case "$valstd" in
9484 "$define")
9485         if `./varargs I_STDARG`; then
9486                 val='stdarg.h'
9487         elif `./varargs I_VARARGS`; then
9488                 val='varargs.h'
9489         fi
9490         ;;
9491 *)
9492         if `./varargs I_VARARGS`; then
9493                 val='varargs.h'
9494         fi
9495         ;;
9496 esac
9497 case "$val" in
9498 '')
9499 echo "I could not find the definition for va_dcl... You have problems..." >&4
9500         val="$undef"; set i_stdarg; eval $setvar
9501         val="$undef"; set i_varargs; eval $setvar
9502         ;;
9503 *) 
9504         set i_varhdr
9505         eval $setvar
9506         case "$i_varhdr" in
9507         stdarg.h)
9508                 val="$define"; set i_stdarg; eval $setvar
9509                 val="$undef"; set i_varargs; eval $setvar
9510                 ;;
9511         varargs.h)
9512                 val="$undef"; set i_stdarg; eval $setvar
9513                 val="$define"; set i_varargs; eval $setvar
9514                 ;;
9515         esac
9516         echo "We'll include <$i_varhdr> to get va_dcl definition." >&4;;
9517 esac
9518 $rm -f varargs*
9519
9520 : see if stddef is available
9521 set stddef.h i_stddef
9522 eval $inhdr
9523
9524 : see if ioctl defs are in sgtty, termio, sys/filio or sys/ioctl
9525 set sys/filio.h i_sysfilio
9526 eval $inhdr
9527 echo " "
9528 if $test `./findhdr sys/ioctl.h`; then
9529         val="$define"
9530         echo '<sys/ioctl.h> found.' >&4
9531 else
9532         val="$undef"
9533         if $test $i_sysfilio = "$define"; then
9534             echo '<sys/ioctl.h> NOT found.' >&4
9535         else
9536                 $test $i_sgtty = "$define" && xxx="sgtty.h"
9537                 $test $i_termio = "$define" && xxx="termio.h"
9538                 $test $i_termios = "$define" && xxx="termios.h"
9539 echo "No <sys/ioctl.h> found, assuming ioctl args are defined in <$xxx>." >&4
9540         fi
9541 fi
9542 set i_sysioctl
9543 eval $setvar
9544
9545 : see if this is a sys/param system
9546 set sys/param.h i_sysparam
9547 eval $inhdr
9548
9549 : see if sys/resource.h has to be included
9550 set sys/resource.h i_sysresrc
9551 eval $inhdr
9552
9553 : see if sys/stat.h is available
9554 set sys/stat.h i_sysstat
9555 eval $inhdr
9556
9557 : see if sys/types.h has to be included
9558 set sys/types.h i_systypes
9559 eval $inhdr
9560
9561 : see if this is a sys/un.h system
9562 set sys/un.h i_sysun
9563 eval $inhdr
9564
9565 : see if this is a syswait system
9566 set sys/wait.h i_syswait
9567 eval $inhdr
9568
9569 : see if this is an utime system
9570 set utime.h i_utime
9571 eval $inhdr
9572
9573 : see if this is a values.h system
9574 set values.h i_values
9575 eval $inhdr
9576
9577 : see if this is a vfork system
9578 case "$d_vfork" in
9579 "$define")
9580         set vfork.h i_vfork
9581         eval $inhdr
9582         ;;
9583 *)
9584         i_vfork="$undef"
9585         ;;
9586 esac
9587
9588 : see if gdbm.h is available
9589 set gdbm.h t_gdbm
9590 eval $inhdr
9591 case "$t_gdbm" in
9592 $define)
9593         : see if gdbm_open exists
9594         set gdbm_open d_gdbm_open
9595         eval $inlibc
9596         case "$d_gdbm_open" in
9597         $undef)
9598                 t_gdbm="$undef"
9599                 echo "We won't be including <gdbm.h>"
9600                 ;;
9601         esac
9602         ;;
9603 esac
9604 val="$t_gdbm"
9605 set i_gdbm
9606 eval $setvar
9607
9608 echo " "
9609 echo "Looking for extensions..." >&4
9610 cd ../ext
9611 : If we are using the old config.sh, known_extensions may contain
9612 : old or inaccurate or duplicate values.
9613 known_extensions=''
9614 : We do not use find because it might not be available.
9615 : We do not just use MANIFEST because the user may have dropped
9616 : some additional extensions into the source tree and expect them
9617 : to be built.
9618 for xxx in * ; do
9619     case "$xxx" in
9620     DynaLoader) ;;
9621     *)  if $test -f $xxx/$xxx.xs; then
9622             known_extensions="$known_extensions $xxx"
9623         else
9624             if $test -d $xxx; then
9625                 cd $xxx
9626                 for yyy in * ; do
9627                     if $test -f $yyy/$yyy.xs; then
9628                         known_extensions="$known_extensions $xxx/$yyy"
9629                     fi
9630                 done
9631                 cd ..
9632             fi
9633         fi ;;
9634     esac
9635 done
9636 set X $known_extensions
9637 shift
9638 known_extensions="$*"
9639 cd ../UU
9640
9641 : Now see which are supported on this system.
9642 avail_ext=''
9643 for xxx in $known_extensions ; do
9644     case "$xxx" in
9645     DB_File) case "$i_db" in 
9646             $define) avail_ext="$avail_ext $xxx" ;;
9647             esac
9648             ;;
9649     GDBM_File) case "$i_gdbm" in 
9650             $define) avail_ext="$avail_ext $xxx" ;;
9651             esac
9652             ;;
9653     NDBM_File) case "$i_ndbm" in 
9654             $define) avail_ext="$avail_ext $xxx" ;;
9655             esac
9656             ;;
9657     ODBM_File) case "${i_dbm}${i_rpcsvcdbm}" in 
9658             *"${define}"*) avail_ext="$avail_ext $xxx" ;;
9659             esac
9660             ;;
9661     POSIX) case "$useposix" in 
9662             true|define|y) avail_ext="$avail_ext $xxx" ;;
9663             esac
9664             ;;
9665     Opcode) case "$useopcode" in 
9666             true|define|y) avail_ext="$avail_ext $xxx" ;;
9667             esac
9668             ;;
9669     Socket) case "$d_socket" in 
9670             $define) avail_ext="$avail_ext $xxx" ;;
9671             esac
9672             ;;
9673     *)      avail_ext="$avail_ext $xxx"
9674             ;;
9675     esac
9676 done
9677
9678 set X $avail_ext
9679 shift
9680 avail_ext="$*"
9681
9682 case $usedl in
9683 $define)
9684         $cat <<EOM
9685 A number of extensions are supplied with $package.  You may choose to
9686 compile these extensions for dynamic loading (the default), compile
9687 them into the $package executable (static loading), or not include
9688 them at all.  Answer "none" to include no extensions.
9689
9690 EOM
9691         case "$dynamic_ext" in
9692         '') dflt="$avail_ext" ;;
9693         *)      dflt="$dynamic_ext" ;;
9694         esac
9695         case "$dflt" in
9696         '')     dflt=none;;
9697         esac
9698         rp="What extensions do you wish to load dynamically?"
9699         . ./myread
9700         case "$ans" in
9701         none) dynamic_ext=' ' ;;
9702         *) dynamic_ext="$ans" ;;
9703         esac
9704
9705         case "$static_ext" in
9706         '')
9707                 : Exclude those already listed in dynamic linking
9708                 dflt=''
9709                 for xxx in $avail_ext; do
9710                         case " $dynamic_ext " in
9711                         *" $xxx "*) ;;
9712                         *) dflt="$dflt $xxx" ;;
9713                         esac
9714                 done
9715                 set X $dflt
9716                 shift
9717                 dflt="$*"
9718                 ;;
9719         *)  dflt="$static_ext" 
9720                 ;;
9721         esac
9722
9723         case "$dflt" in
9724         '')     dflt=none;;
9725         esac
9726         rp="What extensions do you wish to load statically?"
9727         . ./myread
9728         case "$ans" in
9729         none) static_ext=' ' ;;
9730         *) static_ext="$ans" ;;
9731         esac
9732         ;;
9733 *)
9734         $cat <<EOM
9735 A number of extensions are supplied with $package.  Answer "none" 
9736 to include no extensions. 
9737
9738 EOM
9739         case "$static_ext" in
9740         '') dflt="$avail_ext" ;;
9741         *)      dflt="$static_ext" ;;
9742         esac
9743
9744         case "$dflt" in
9745         '')     dflt=none;;
9746         esac
9747         rp="What extensions do you wish to include?"
9748         . ./myread
9749         case "$ans" in
9750         none) static_ext=' ' ;;
9751         *) static_ext="$ans" ;;
9752         esac
9753         ;;
9754 esac
9755
9756 set X $dynamic_ext $static_ext
9757 shift
9758 extensions="$*"
9759
9760 : Remove build directory name from cppstdin so it can be used from
9761 : either the present location or the final installed location.
9762 echo " "
9763 : Get out of the UU directory to get correct path name.
9764 cd ..
9765 case "$cppstdin" in
9766 `pwd`/cppstdin)
9767         echo "Stripping down cppstdin path name"
9768         cppstdin=cppstdin
9769         ;;
9770 esac
9771 cd UU
9772
9773 : end of configuration questions
9774 echo " "
9775 echo "End of configuration questions."
9776 echo " "
9777
9778 : back to where it started
9779 if test -d ../UU; then
9780         cd ..
9781 fi
9782
9783 : configuration may be patched via a 'config.over' file
9784 if $test -f config.over; then
9785         echo " "
9786         dflt=y
9787         rp='I see a config.over file.  Do you wish to load it?'
9788         . UU/myread
9789         case "$ans" in
9790         n*) echo "OK, I'll ignore it.";;
9791         *)      . ./config.over
9792                 echo "Configuration override changes have been loaded."
9793                 ;;
9794         esac
9795 fi
9796
9797 : in case they want portability, strip down executable paths
9798 case "$d_portable" in
9799 "$define")
9800         echo " "
9801         echo "Stripping down executable paths..." >&4
9802         for file in $loclist $trylist; do
9803                 eval $file="\$file"
9804         done
9805         ;;
9806 esac
9807
9808 : create config.sh file
9809 echo " "
9810 echo "Creating config.sh..." >&4
9811 $spitshell <<EOT >config.sh
9812 $startsh
9813 #
9814 # This file was produced by running the Configure script. It holds all the
9815 # definitions figured out by Configure. Should you modify one of these values,
9816 # do not forget to propagate your changes by running "Configure -der". You may
9817 # instead choose to run each of the .SH files by yourself, or "Configure -S".
9818 #
9819
9820 # Configuration time: $cf_time
9821 # Configured by: $cf_by
9822 # Target system: $myuname
9823
9824 Author='$Author'
9825 Date='$Date'
9826 Header='$Header'
9827 Id='$Id'
9828 Locker='$Locker'
9829 Log='$Log'
9830 Mcc='$Mcc'
9831 RCSfile='$RCSfile'
9832 Revision='$Revision'
9833 Source='$Source'
9834 State='$State'
9835 afs='$afs'
9836 alignbytes='$alignbytes'
9837 aphostname='$aphostname'
9838 ar='$ar'
9839 archlib='$archlib'
9840 archlibexp='$archlibexp'
9841 archname='$archname'
9842 archobjs='$archobjs'
9843 awk='$awk'
9844 baserev='$baserev'
9845 bash='$bash'
9846 bin='$bin'
9847 bincompat3='$bincompat3'
9848 binexp='$binexp'
9849 bison='$bison'
9850 byacc='$byacc'
9851 byteorder='$byteorder'
9852 c='$c'
9853 castflags='$castflags'
9854 cat='$cat'
9855 cc='$cc'
9856 cccdlflags='$cccdlflags'
9857 ccdlflags='$ccdlflags'
9858 ccflags='$ccflags'
9859 cf_by='$cf_by'
9860 cf_email='$cf_email'
9861 cf_time='$cf_time'
9862 chgrp='$chgrp'
9863 chmod='$chmod'
9864 chown='$chown'
9865 clocktype='$clocktype'
9866 comm='$comm'
9867 compress='$compress'
9868 contains='$contains'
9869 cp='$cp'
9870 cpio='$cpio'
9871 cpp='$cpp'
9872 cpp_stuff='$cpp_stuff'
9873 cppflags='$cppflags'
9874 cpplast='$cpplast'
9875 cppminus='$cppminus'
9876 cpprun='$cpprun'
9877 cppstdin='$cppstdin'
9878 cryptlib='$cryptlib'
9879 csh='$csh'
9880 d_Gconvert='$d_Gconvert'
9881 d_access='$d_access'
9882 d_alarm='$d_alarm'
9883 d_archlib='$d_archlib'
9884 d_attribut='$d_attribut'
9885 d_bcmp='$d_bcmp'
9886 d_bcopy='$d_bcopy'
9887 d_bincompat3='$d_bincompat3'
9888 d_bsd='$d_bsd'
9889 d_bsdgetpgrp='$d_bsdgetpgrp'
9890 d_bsdpgrp='$d_bsdpgrp'
9891 d_bsdsetpgrp='$d_bsdsetpgrp'
9892 d_bzero='$d_bzero'
9893 d_casti32='$d_casti32'
9894 d_castneg='$d_castneg'
9895 d_charvspr='$d_charvspr'
9896 d_chown='$d_chown'
9897 d_chroot='$d_chroot'
9898 d_chsize='$d_chsize'
9899 d_closedir='$d_closedir'
9900 d_const='$d_const'
9901 d_crypt='$d_crypt'
9902 d_csh='$d_csh'
9903 d_cuserid='$d_cuserid'
9904 d_dbl_dig='$d_dbl_dig'
9905 d_difftime='$d_difftime'
9906 d_dirnamlen='$d_dirnamlen'
9907 d_dlerror='$d_dlerror'
9908 d_dlopen='$d_dlopen'
9909 d_dlsymun='$d_dlsymun'
9910 d_dosuid='$d_dosuid'
9911 d_dup2='$d_dup2'
9912 d_eofnblk='$d_eofnblk'
9913 d_eunice='$d_eunice'
9914 d_fchmod='$d_fchmod'
9915 d_fchown='$d_fchown'
9916 d_fcntl='$d_fcntl'
9917 d_fd_macros='$d_fd_macros'
9918 d_fd_set='$d_fd_set'
9919 d_fds_bits='$d_fds_bits'
9920 d_fgetpos='$d_fgetpos'
9921 d_flexfnam='$d_flexfnam'
9922 d_flock='$d_flock'
9923 d_fork='$d_fork'
9924 d_fpathconf='$d_fpathconf'
9925 d_fsetpos='$d_fsetpos'
9926 d_ftime='$d_ftime'
9927 d_getgrps='$d_getgrps'
9928 d_gethent='$d_gethent'
9929 d_gethname='$d_gethname'
9930 d_getlogin='$d_getlogin'
9931 d_getpgid='$d_getpgid'
9932 d_getpgrp2='$d_getpgrp2'
9933 d_getpgrp='$d_getpgrp'
9934 d_getppid='$d_getppid'
9935 d_getprior='$d_getprior'
9936 d_gettimeod='$d_gettimeod'
9937 d_gnulibc='$d_gnulibc'
9938 d_htonl='$d_htonl'
9939 d_index='$d_index'
9940 d_inetaton='$d_inetaton'
9941 d_isascii='$d_isascii'
9942 d_killpg='$d_killpg'
9943 d_link='$d_link'
9944 d_locconv='$d_locconv'
9945 d_lockf='$d_lockf'
9946 d_lstat='$d_lstat'
9947 d_mblen='$d_mblen'
9948 d_mbstowcs='$d_mbstowcs'
9949 d_mbtowc='$d_mbtowc'
9950 d_memcmp='$d_memcmp'
9951 d_memcpy='$d_memcpy'
9952 d_memmove='$d_memmove'
9953 d_memset='$d_memset'
9954 d_mkdir='$d_mkdir'
9955 d_mkfifo='$d_mkfifo'
9956 d_mktime='$d_mktime'
9957 d_msg='$d_msg'
9958 d_msgctl='$d_msgctl'
9959 d_msgget='$d_msgget'
9960 d_msgrcv='$d_msgrcv'
9961 d_msgsnd='$d_msgsnd'
9962 d_mymalloc='$d_mymalloc'
9963 d_nice='$d_nice'
9964 d_oldarchlib='$d_oldarchlib'
9965 d_oldsock='$d_oldsock'
9966 d_open3='$d_open3'
9967 d_pathconf='$d_pathconf'
9968 d_pause='$d_pause'
9969 d_phostname='$d_phostname'
9970 d_pipe='$d_pipe'
9971 d_poll='$d_poll'
9972 d_portable='$d_portable'
9973 d_pwage='$d_pwage'
9974 d_pwchange='$d_pwchange'
9975 d_pwclass='$d_pwclass'
9976 d_pwcomment='$d_pwcomment'
9977 d_pwexpire='$d_pwexpire'
9978 d_pwquota='$d_pwquota'
9979 d_readdir='$d_readdir'
9980 d_readlink='$d_readlink'
9981 d_rename='$d_rename'
9982 d_rewinddir='$d_rewinddir'
9983 d_rmdir='$d_rmdir'
9984 d_safebcpy='$d_safebcpy'
9985 d_safemcpy='$d_safemcpy'
9986 d_sanemcmp='$d_sanemcmp'
9987 d_seekdir='$d_seekdir'
9988 d_select='$d_select'
9989 d_sem='$d_sem'
9990 d_semctl='$d_semctl'
9991 d_semget='$d_semget'
9992 d_semop='$d_semop'
9993 d_setegid='$d_setegid'
9994 d_seteuid='$d_seteuid'
9995 d_setlinebuf='$d_setlinebuf'
9996 d_setlocale='$d_setlocale'
9997 d_setpgid='$d_setpgid'
9998 d_setpgrp2='$d_setpgrp2'
9999 d_setpgrp='$d_setpgrp'
10000 d_setprior='$d_setprior'
10001 d_setregid='$d_setregid'
10002 d_setresgid='$d_setresgid'
10003 d_setresuid='$d_setresuid'
10004 d_setreuid='$d_setreuid'
10005 d_setrgid='$d_setrgid'
10006 d_setruid='$d_setruid'
10007 d_setsid='$d_setsid'
10008 d_sfio='$d_sfio'
10009 d_shm='$d_shm'
10010 d_shmat='$d_shmat'
10011 d_shmatprototype='$d_shmatprototype'
10012 d_shmctl='$d_shmctl'
10013 d_shmdt='$d_shmdt'
10014 d_shmget='$d_shmget'
10015 d_sigaction='$d_sigaction'
10016 d_sigsetjmp='$d_sigsetjmp'
10017 d_socket='$d_socket'
10018 d_sockpair='$d_sockpair'
10019 d_statblks='$d_statblks'
10020 d_stdio_cnt_lval='$d_stdio_cnt_lval'
10021 d_stdio_ptr_lval='$d_stdio_ptr_lval'
10022 d_stdiobase='$d_stdiobase'
10023 d_stdstdio='$d_stdstdio'
10024 d_strchr='$d_strchr'
10025 d_strcoll='$d_strcoll'
10026 d_strctcpy='$d_strctcpy'
10027 d_strerrm='$d_strerrm'
10028 d_strerror='$d_strerror'
10029 d_strtod='$d_strtod'
10030 d_strtol='$d_strtol'
10031 d_strtoul='$d_strtoul'
10032 d_strxfrm='$d_strxfrm'
10033 d_suidsafe='$d_suidsafe'
10034 d_symlink='$d_symlink'
10035 d_syscall='$d_syscall'
10036 d_sysconf='$d_sysconf'
10037 d_sysernlst='$d_sysernlst'
10038 d_syserrlst='$d_syserrlst'
10039 d_system='$d_system'
10040 d_tcgetpgrp='$d_tcgetpgrp'
10041 d_tcsetpgrp='$d_tcsetpgrp'
10042 d_telldir='$d_telldir'
10043 d_time='$d_time'
10044 d_times='$d_times'
10045 d_truncate='$d_truncate'
10046 d_tzname='$d_tzname'
10047 d_umask='$d_umask'
10048 d_uname='$d_uname'
10049 d_vfork='$d_vfork'
10050 d_void_closedir='$d_void_closedir'
10051 d_voidsig='$d_voidsig'
10052 d_voidtty='$d_voidtty'
10053 d_volatile='$d_volatile'
10054 d_vprintf='$d_vprintf'
10055 d_wait4='$d_wait4'
10056 d_waitpid='$d_waitpid'
10057 d_wcstombs='$d_wcstombs'
10058 d_wctomb='$d_wctomb'
10059 d_xenix='$d_xenix'
10060 date='$date'
10061 db_hashtype='$db_hashtype'
10062 db_prefixtype='$db_prefixtype'
10063 defvoidused='$defvoidused'
10064 direntrytype='$direntrytype'
10065 dlext='$dlext'
10066 dlsrc='$dlsrc'
10067 dynamic_ext='$dynamic_ext'
10068 eagain='$eagain'
10069 echo='$echo'
10070 egrep='$egrep'
10071 emacs='$emacs'
10072 eunicefix='$eunicefix'
10073 exe_ext='$exe_ext'
10074 expr='$expr'
10075 extensions='$extensions'
10076 find='$find'
10077 firstmakefile='$firstmakefile'
10078 flex='$flex'
10079 fpostype='$fpostype'
10080 freetype='$freetype'
10081 full_csh='$full_csh'
10082 full_sed='$full_sed'
10083 gcc='$gcc'
10084 gccversion='$gccversion'
10085 gidtype='$gidtype'
10086 glibpth='$glibpth'
10087 grep='$grep'
10088 groupcat='$groupcat'
10089 groupstype='$groupstype'
10090 gzip='$gzip'
10091 h_fcntl='$h_fcntl'
10092 h_sysfile='$h_sysfile'
10093 hint='$hint'
10094 hostcat='$hostcat'
10095 huge='$huge'
10096 i_bsdioctl='$i_bsdioctl'
10097 i_db='$i_db'
10098 i_dbm='$i_dbm'
10099 i_dirent='$i_dirent'
10100 i_dld='$i_dld'
10101 i_dlfcn='$i_dlfcn'
10102 i_fcntl='$i_fcntl'
10103 i_float='$i_float'
10104 i_gdbm='$i_gdbm'
10105 i_grp='$i_grp'
10106 i_limits='$i_limits'
10107 i_locale='$i_locale'
10108 i_malloc='$i_malloc'
10109 i_math='$i_math'
10110 i_memory='$i_memory'
10111 i_ndbm='$i_ndbm'
10112 i_neterrno='$i_neterrno'
10113 i_niin='$i_niin'
10114 i_pwd='$i_pwd'
10115 i_rpcsvcdbm='$i_rpcsvcdbm'
10116 i_sfio='$i_sfio'
10117 i_sgtty='$i_sgtty'
10118 i_stdarg='$i_stdarg'
10119 i_stddef='$i_stddef'
10120 i_stdlib='$i_stdlib'
10121 i_string='$i_string'
10122 i_sysdir='$i_sysdir'
10123 i_sysfile='$i_sysfile'
10124 i_sysfilio='$i_sysfilio'
10125 i_sysin='$i_sysin'
10126 i_sysioctl='$i_sysioctl'
10127 i_sysndir='$i_sysndir'
10128 i_sysparam='$i_sysparam'
10129 i_sysresrc='$i_sysresrc'
10130 i_sysselct='$i_sysselct'
10131 i_syssockio='$i_syssockio'
10132 i_sysstat='$i_sysstat'
10133 i_systime='$i_systime'
10134 i_systimek='$i_systimek'
10135 i_systimes='$i_systimes'
10136 i_systypes='$i_systypes'
10137 i_sysun='$i_sysun'
10138 i_syswait='$i_syswait'
10139 i_termio='$i_termio'
10140 i_termios='$i_termios'
10141 i_time='$i_time'
10142 i_unistd='$i_unistd'
10143 i_utime='$i_utime'
10144 i_values='$i_values'
10145 i_varargs='$i_varargs'
10146 i_varhdr='$i_varhdr'
10147 i_vfork='$i_vfork'
10148 incpath='$incpath'
10149 inews='$inews'
10150 installarchlib='$installarchlib'
10151 installbin='$installbin'
10152 installman1dir='$installman1dir'
10153 installman3dir='$installman3dir'
10154 installprivlib='$installprivlib'
10155 installscript='$installscript'
10156 installsitearch='$installsitearch'
10157 installsitelib='$installsitelib'
10158 intsize='$intsize'
10159 known_extensions='$known_extensions'
10160 ksh='$ksh'
10161 large='$large'
10162 ld='$ld'
10163 lddlflags='$lddlflags'
10164 ldflags='$ldflags'
10165 less='$less'
10166 lib_ext='$lib_ext'
10167 libc='$libc'
10168 libperl='$libperl'
10169 libpth='$libpth'
10170 libs='$libs'
10171 libswanted='$libswanted'
10172 line='$line'
10173 lint='$lint'
10174 lkflags='$lkflags'
10175 ln='$ln'
10176 lns='$lns'
10177 locincpth='$locincpth'
10178 loclibpth='$loclibpth'
10179 lp='$lp'
10180 lpr='$lpr'
10181 ls='$ls'
10182 lseektype='$lseektype'
10183 mail='$mail'
10184 mailx='$mailx'
10185 make='$make'
10186 make_set_make='$make_set_make'
10187 mallocobj='$mallocobj'
10188 mallocsrc='$mallocsrc'
10189 malloctype='$malloctype'
10190 man1dir='$man1dir'
10191 man1direxp='$man1direxp'
10192 man1ext='$man1ext'
10193 man3dir='$man3dir'
10194 man3direxp='$man3direxp'
10195 man3ext='$man3ext'
10196 medium='$medium'
10197 mips='$mips'
10198 mips_type='$mips_type'
10199 mkdir='$mkdir'
10200 models='$models'
10201 modetype='$modetype'
10202 more='$more'
10203 mv='$mv'
10204 myarchname='$myarchname'
10205 mydomain='$mydomain'
10206 myhostname='$myhostname'
10207 myuname='$myuname'
10208 n='$n'
10209 nm_opt='$nm_opt'
10210 nm_so_opt='$nm_so_opt'
10211 nroff='$nroff'
10212 o_nonblock='$o_nonblock'
10213 obj_ext='$obj_ext'
10214 oldarchlib='$oldarchlib'
10215 oldarchlibexp='$oldarchlibexp'
10216 optimize='$optimize'
10217 orderlib='$orderlib'
10218 osname='$osname'
10219 osvers='$osvers'
10220 package='$package'
10221 pager='$pager'
10222 passcat='$passcat'
10223 patchlevel='$patchlevel'
10224 path_sep='$path_sep'
10225 perl='$perl'
10226 perladmin='$perladmin'
10227 perlpath='$perlpath'
10228 pg='$pg'
10229 phostname='$phostname'
10230 plibpth='$plibpth'
10231 pmake='$pmake'
10232 pr='$pr'
10233 prefix='$prefix'
10234 prefixexp='$prefixexp'
10235 privlib='$privlib'
10236 privlibexp='$privlibexp'
10237 prototype='$prototype'
10238 randbits='$randbits'
10239 ranlib='$ranlib'
10240 rd_nodata='$rd_nodata'
10241 rm='$rm'
10242 rmail='$rmail'
10243 runnm='$runnm'
10244 scriptdir='$scriptdir'
10245 scriptdirexp='$scriptdirexp'
10246 sed='$sed'
10247 selecttype='$selecttype'
10248 sendmail='$sendmail'
10249 sh='$sh'
10250 shar='$shar'
10251 sharpbang='$sharpbang'
10252 shmattype='$shmattype'
10253 shrpenv='$shrpenv'
10254 shsharp='$shsharp'
10255 sig_name='$sig_name'
10256 sig_num='$sig_num'
10257 signal_t='$signal_t'
10258 sitearch='$sitearch'
10259 sitearchexp='$sitearchexp'
10260 sitelib='$sitelib'
10261 sitelibexp='$sitelibexp'
10262 sizetype='$sizetype'
10263 sleep='$sleep'
10264 smail='$smail'
10265 small='$small'
10266 so='$so'
10267 sockethdr='$sockethdr'
10268 socketlib='$socketlib'
10269 sort='$sort'
10270 spackage='$spackage'
10271 spitshell='$spitshell'
10272 split='$split'
10273 ssizetype='$ssizetype'
10274 startperl='$startperl'
10275 startsh='$startsh'
10276 static_ext='$static_ext'
10277 stdchar='$stdchar'
10278 stdio_base='$stdio_base'
10279 stdio_bufsiz='$stdio_bufsiz'
10280 stdio_cnt='$stdio_cnt'
10281 stdio_filbuf='$stdio_filbuf'
10282 stdio_ptr='$stdio_ptr'
10283 strings='$strings'
10284 submit='$submit'
10285 subversion='$subversion'
10286 sysman='$sysman'
10287 tail='$tail'
10288 tar='$tar'
10289 tbl='$tbl'
10290 test='$test'
10291 timeincl='$timeincl'
10292 timetype='$timetype'
10293 touch='$touch'
10294 tr='$tr'
10295 troff='$troff'
10296 uidtype='$uidtype'
10297 uname='$uname'
10298 uniq='$uniq'
10299 usedl='$usedl'
10300 usemymalloc='$usemymalloc'
10301 usenm='$usenm'
10302 useopcode='$useopcode'
10303 useperlio='$useperlio'
10304 useposix='$useposix'
10305 usesfio='$usesfio'
10306 useshrplib='$useshrplib'
10307 usevfork='$usevfork'
10308 usrinc='$usrinc'
10309 uuname='$uuname'
10310 vi='$vi'
10311 voidflags='$voidflags'
10312 xlibpth='$xlibpth'
10313 zcat='$zcat'
10314 zip='$zip'
10315 EOT
10316
10317 : add special variables
10318 $test -f patchlevel.h && \
10319 awk '/^#define/ {printf "%s=%s\n",$2,$3}' patchlevel.h >>config.sh
10320 echo "CONFIG=true" >>config.sh
10321
10322 : propagate old symbols
10323 if $test -f UU/config.sh; then
10324         <UU/config.sh sort | uniq >UU/oldconfig.sh
10325         sed -n 's/^\([a-zA-Z_0-9]*\)=.*/\1/p' config.sh config.sh UU/oldconfig.sh |\
10326         sort | uniq -u >UU/oldsyms
10327         set X `cat UU/oldsyms`
10328         shift
10329         case $# in
10330         0) ;;
10331         *)
10332                 cat <<EOM
10333 Hmm...You had some extra variables I don't know about...I'll try to keep 'em...
10334 EOM
10335                 echo "# Variables propagated from previous config.sh file." >>config.sh
10336                 for sym in `cat UU/oldsyms`; do
10337                         echo "    Propagating $hint variable "'$'"$sym..."
10338                         eval 'tmp="$'"${sym}"'"'
10339                         echo "$tmp" | \
10340                                 sed -e "s/'/'\"'\"'/g" -e "s/^/$sym='/" -e "s/$/'/" >>config.sh
10341                 done
10342                 ;;
10343         esac
10344 fi
10345
10346 : Finish up by extracting the .SH files
10347 case "$alldone" in
10348 exit)
10349         $rm -rf UU
10350         echo "Done."
10351         exit 0
10352         ;;
10353 cont)
10354         ;;
10355 '')
10356         dflt=''
10357         nostick=true
10358         $cat <<EOM
10359
10360 If you'd like to make any changes to the config.sh file before I begin
10361 to configure things, do it as a shell escape now (e.g. !vi config.sh).
10362
10363 EOM
10364         rp="Press return or use a shell escape to edit config.sh:"
10365         . UU/myread
10366         nostick=''
10367         case "$ans" in
10368         '') ;;
10369         *) : in case they cannot read
10370                 sh 1>&4 -c "$ans";;
10371         esac
10372         ;;
10373 esac
10374
10375 : if this fails, just run all the .SH files by hand
10376 . ./config.sh
10377
10378 echo " "
10379 exec 1>&4
10380 . ./UU/extract
10381
10382 if $contains '^depend:' [Mm]akefile >/dev/null 2>&1; then
10383         dflt=y
10384         case "$silent" in
10385         true) ;;
10386         *)
10387                 $cat <<EOM
10388
10389 Now you need to generate make dependencies by running "make depend".
10390 You might prefer to run it in background: "make depend > makedepend.out &"
10391 It can take a while, so you might not want to run it right now.
10392
10393 EOM
10394                 ;;
10395         esac
10396         rp="Run make depend now?"
10397         . UU/myread
10398         case "$ans" in
10399         y*)
10400                 make depend && echo "Now you must run a make."
10401                 ;;
10402         *)
10403                 echo "You must run 'make depend' then 'make'."
10404                 ;;
10405         esac
10406 elif test -f [Mm]akefile; then
10407         echo " "
10408         echo "Now you must run a make."
10409 else
10410         echo "Done."
10411 fi
10412
10413 $rm -f kit*isdone ark*isdone
10414 $rm -rf UU
10415
10416 : End of Configure
10417