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