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