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