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