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