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