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