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