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