This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
This is my patch patch.1h for perl5.001.
[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
232e078e 21# $Id: Head.U,v 3.0.1.7 1995/03/21 08:46:15 ram Exp $
2304df62 22#
f0b7e567 23# Generated on Mon Apr 17 15:46:57 EDT 1995 [metaconfig 3.0 PL53]
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
58
59: Proper PATH setting
60paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
232e078e
AD
61paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
62paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
63paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /usr/ccs/bin"
64paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
65paths="$paths /sbin /usr/sbin /usr/libexec"
a0d0e21e
LW
66
67for p in $paths
68do
69 case ":$PATH:" in
70 *:$p:*) ;;
71 *) test -d $p && PATH=$PATH:$p ;;
72 esac
73done
74
75PATH=.:$PATH
2304df62
AD
76export PATH
77
a0d0e21e 78: Sanity checks
2304df62 79if test ! -t 0; then
a0d0e21e 80 echo "Say 'sh $me', not 'sh <$me'"
2304df62
AD
81 exit 1
82fi
83
84: On HP-UX, large Configure scripts may exercise a bug in /bin/sh
85if test -f /hp-ux -a -f /bin/ksh; then
86 if (PATH=.; alias -x) >/dev/null 2>&1; then
87 : already under /bin/ksh
88 else
89 cat <<'EOM'
90(Feeding myself to ksh to avoid nasty sh bug in "here document" expansion.)
91EOM
ecfc5424 92 unset ENV
2304df62
AD
93 exec /bin/ksh $0 "$@"
94 fi
95else
96 : Warn them if they use ksh on other systems
97 (PATH=.; alias -x) >/dev/null 2>&1 && \
a0d0e21e
LW
98 cat <<EOM
99(I see you are using the Korn shell. Some ksh's blow up on $me,
2304df62
AD
100especially on exotic machines. If yours does, try the Bourne shell instead.)
101EOM
102fi
103
104: Configure runs within the UU subdirectory
105test -d UU || mkdir UU
106cd UU && rm -f *
107
a0d0e21e 108dynamic_ext=''
2304df62 109extensions=''
a0d0e21e
LW
110known_extensions=''
111static_ext=''
112useposix=''
ecfc5424 113d_bsd=''
2304df62
AD
114d_eunice=''
115d_xenix=''
116eunicefix=''
117Mcc=''
118awk=''
119bash=''
120bison=''
121byacc=''
122cat=''
123chgrp=''
124chmod=''
125chown=''
ecfc5424 126comm=''
2304df62
AD
127compress=''
128cp=''
129cpio=''
130cpp=''
131csh=''
132date=''
133echo=''
134egrep=''
135emacs=''
136expr=''
137find=''
138flex=''
139gcc=''
140grep=''
141inews=''
142ksh=''
143less=''
144line=''
145lint=''
146ln=''
147lp=''
148lpr=''
149ls=''
150mail=''
151mailx=''
152make=''
153mkdir=''
154more=''
155mv=''
156nroff=''
157perl=''
158pg=''
159pmake=''
160pr=''
161rm=''
162rmail=''
163sed=''
164sendmail=''
165sh=''
166shar=''
167sleep=''
168smail=''
169sort=''
170submit=''
171tail=''
172tar=''
173tbl=''
174test=''
175touch=''
176tr=''
177troff=''
178uname=''
179uniq=''
180uuname=''
181vi=''
182zcat=''
1aef975c 183full_sed=''
a0d0e21e 184libswanted=''
2304df62
AD
185hint=''
186myuname=''
85e6fe83
LW
187osname=''
188osvers=''
2304df62
AD
189Author=''
190Date=''
191Header=''
192Id=''
193Locker=''
194Log=''
195RCSfile=''
196Revision=''
197Source=''
198State=''
199afs=''
a0d0e21e
LW
200alignbytes=''
201archlib=''
202archlibexp=''
a0d0e21e
LW
203d_archlib=''
204installarchlib=''
40000a8c
AD
205archname=''
206myarchname=''
ecfc5424 207baserev=''
2304df62
AD
208bin=''
209binexp=''
210installbin=''
211byteorder=''
212cc=''
213gccversion=''
214ccflags=''
215cppflags=''
216ldflags=''
217lkflags=''
218optimize=''
219cf_by=''
220cf_time=''
221contains=''
a0d0e21e 222cpp_stuff=''
2304df62
AD
223cpplast=''
224cppminus=''
225cpprun=''
226cppstdin=''
227d_access=''
a0d0e21e 228d_alarm=''
ecfc5424 229d_attribut=''
2304df62
AD
230d_bcmp=''
231d_bcopy=''
232d_bzero=''
233d_casti32=''
234castflags=''
235d_castneg=''
a0d0e21e
LW
236d_chown=''
237d_chroot=''
2304df62 238d_chsize=''
a0d0e21e
LW
239d_closedir=''
240d_void_closedir=''
2304df62
AD
241d_const=''
242cryptlib=''
243d_crypt=''
244d_csh=''
1aef975c 245full_csh=''
a0d0e21e
LW
246d_cuserid=''
247d_dbl_dig=''
248d_difftime=''
249d_dlerror=''
250d_dlopen=''
251d_dlsymun=''
2304df62 252d_dosuid=''
a0d0e21e 253d_suidsafe=''
2304df62
AD
254d_dup2=''
255d_fchmod=''
256d_fchown=''
257d_fcntl=''
a0d0e21e
LW
258d_fd_macros=''
259d_fd_set=''
260d_fds_bits=''
261d_fgetpos=''
2304df62
AD
262d_flexfnam=''
263d_flock=''
a0d0e21e
LW
264d_fork=''
265d_fsetpos=''
266d_Gconvert=''
2304df62
AD
267d_getgrps=''
268d_gethent=''
269aphostname=''
270d_gethname=''
271d_phostname=''
272d_uname=''
a0d0e21e 273d_getlogin=''
2304df62
AD
274d_getpgrp2=''
275d_getpgrp=''
a0d0e21e 276d_getppid=''
2304df62
AD
277d_getprior=''
278d_htonl=''
279d_isascii=''
280d_killpg=''
281d_link=''
a0d0e21e
LW
282d_linuxstd=''
283d_locconv=''
284d_lockf=''
2304df62 285d_lstat=''
a0d0e21e
LW
286d_mblen=''
287d_mbstowcs=''
288d_mbtowc=''
2304df62
AD
289d_memcmp=''
290d_memcpy=''
291d_memmove=''
292d_memset=''
293d_mkdir=''
a0d0e21e
LW
294d_mkfifo=''
295d_mktime=''
2304df62
AD
296d_msg=''
297d_msgctl=''
298d_msgget=''
299d_msgrcv=''
300d_msgsnd=''
a0d0e21e 301d_nice=''
2304df62 302d_open3=''
a0d0e21e
LW
303d_fpathconf=''
304d_pathconf=''
305d_pause=''
306d_pipe=''
2304df62
AD
307d_portable=''
308d_readdir=''
85e6fe83
LW
309d_rewinddir=''
310d_seekdir=''
311d_telldir=''
a0d0e21e 312d_readlink=''
2304df62
AD
313d_rename=''
314d_rmdir=''
315d_safebcpy=''
316d_safemcpy=''
317d_select=''
318d_sem=''
319d_semctl=''
320d_semget=''
321d_semop=''
322d_setegid=''
323d_seteuid=''
a0d0e21e 324d_setlinebuf=''
2304df62
AD
325d_setlocale=''
326d_setpgid=''
327d_setpgrp2=''
328d_bsdpgrp=''
329d_setpgrp=''
330d_setprior=''
331d_setregid=''
332d_setresgid=''
333d_setresuid=''
334d_setreuid=''
335d_setrgid=''
336d_setruid=''
337d_setsid=''
338d_shm=''
339d_shmat=''
a0d0e21e
LW
340d_shmatprototype=''
341shmattype=''
2304df62
AD
342d_shmctl=''
343d_shmdt=''
344d_shmget=''
345d_oldsock=''
346d_socket=''
347d_sockpair=''
348sockethdr=''
349socketlib=''
350d_statblks=''
351d_stdstdio=''
352d_index=''
353d_strchr=''
a0d0e21e 354d_strcoll=''
2304df62
AD
355d_strctcpy=''
356d_strerrm=''
357d_strerror=''
358d_sysernlst=''
359d_syserrlst=''
a0d0e21e 360d_strxfrm=''
2304df62
AD
361d_symlink=''
362d_syscall=''
a0d0e21e 363d_sysconf=''
2304df62 364d_system=''
a0d0e21e
LW
365d_tcgetpgrp=''
366d_tcsetpgrp=''
85e6fe83
LW
367d_time=''
368timetype=''
2304df62
AD
369clocktype=''
370d_times=''
371d_truncate=''
a0d0e21e
LW
372d_tzname=''
373d_umask=''
2304df62 374d_vfork=''
a0d0e21e 375usevfork=''
2304df62
AD
376d_voidsig=''
377signal_t=''
378d_volatile=''
379d_charvspr=''
380d_vprintf=''
381d_wait4=''
382d_waitpid=''
a0d0e21e
LW
383d_wcstombs=''
384d_wctomb=''
385dlext=''
85e6fe83
LW
386cccdlflags=''
387ccdlflags=''
ecfc5424 388d_shrplib=''
2304df62 389dlsrc=''
232e078e 390ld=''
85e6fe83 391lddlflags=''
ecfc5424 392shrpdir=''
2304df62 393usedl=''
a0d0e21e 394fpostype=''
2304df62
AD
395gidtype=''
396groupstype=''
397h_fcntl=''
398h_sysfile=''
ecfc5424
AD
399db_hashtype=''
400db_prefixtype=''
a0d0e21e 401i_db=''
2304df62
AD
402i_dbm=''
403d_dirnamlen=''
a0d0e21e 404direntrytype=''
2304df62 405i_dirent=''
a0d0e21e 406i_dld=''
2304df62
AD
407i_dlfcn=''
408i_fcntl=''
a0d0e21e 409i_float=''
2304df62
AD
410i_gdbm=''
411i_grp=''
a0d0e21e
LW
412i_limits=''
413i_malloc=''
414i_math=''
85e6fe83 415i_memory=''
2304df62 416i_ndbm=''
85e6fe83 417i_neterrno=''
2304df62
AD
418i_niin=''
419i_sysin=''
420d_pwage=''
421d_pwchange=''
422d_pwclass=''
423d_pwcomment=''
424d_pwexpire=''
425d_pwquota=''
426i_pwd=''
2304df62 427i_stddef=''
a0d0e21e 428i_stdlib=''
2304df62
AD
429i_string=''
430strings=''
431i_sysdir=''
432i_sysfile=''
433d_voidtty=''
434i_bsdioctl=''
a0d0e21e 435i_sysfilio=''
2304df62
AD
436i_sysioctl=''
437i_syssockio=''
438i_sysndir=''
a0d0e21e 439i_sysparam=''
2304df62 440i_sysselct=''
1aef975c 441i_sysstat=''
a0d0e21e 442i_systimes=''
fed7345c 443i_systypes=''
2304df62
AD
444i_sgtty=''
445i_termio=''
446i_termios=''
447i_systime=''
448i_systimek=''
449i_time=''
450timeincl=''
85e6fe83 451i_unistd=''
2304df62 452i_utime=''
a0d0e21e 453i_stdarg=''
2304df62
AD
454i_varargs=''
455i_varhdr=''
456i_vfork=''
457intsize=''
2304df62 458libc=''
a0d0e21e 459glibpth=''
2304df62
AD
460libpth=''
461plibpth=''
462xlibpth=''
463libs=''
85e6fe83
LW
464lns=''
465lseektype=''
466d_mymalloc=''
94b6baf5 467freetype=''
2304df62
AD
468mallocobj=''
469mallocsrc=''
470malloctype=''
471usemymalloc=''
472installmansrc=''
473manext=''
474mansrc=''
475mansrcexp=''
476huge=''
477large=''
478medium=''
479models=''
480small=''
481split=''
a0d0e21e 482modetype=''
2304df62
AD
483mydomain=''
484myhostname=''
485phostname=''
486c=''
487n=''
488groupcat=''
489hostcat=''
490passcat=''
85e6fe83
LW
491orderlib=''
492ranlib=''
2304df62
AD
493package=''
494spackage=''
ecfc5424 495patchlevel=''
a0d0e21e 496prefix=''
1aef975c 497prefixexp=''
2304df62
AD
498installprivlib=''
499privlib=''
500privlibexp=''
501prototype=''
502randbits=''
503installscript=''
504scriptdir=''
505scriptdirexp=''
a0d0e21e 506selecttype=''
2304df62 507sig_name=''
a0d0e21e
LW
508sizetype=''
509so=''
2304df62
AD
510sharpbang=''
511shsharp=''
512spitshell=''
a0d0e21e 513ssizetype=''
2304df62
AD
514startsh=''
515stdchar=''
516sysman=''
517uidtype=''
518nm_opt=''
519runnm=''
520usenm=''
521incpath=''
522mips=''
523mips_type=''
524usrinc=''
525defvoidused=''
526voidflags=''
2304df62
AD
527CONFIG=''
528
ecfc5424
AD
529define='define'
530undef='undef'
531smallmach='pdp11 i8086 z8000 i80286 iAPX286'
532rmlist=''
533
534: We must find out about Eunice early
535eunicefix=':'
536if test -f /etc/unixtovms; then
537 eunicefix=/etc/unixtovms
538fi
539if test -f /etc/unixtovms.exe; then
540 eunicefix=/etc/unixtovms.exe
541fi
542
543: list of known cpp symbols, sorted alphabetically
544al="AMIX BIT_MSF BSD BSD4_3 BSD_NET2 CMU CRAY DGUX DOLPHIN DPX2"
545al="$al GO32 GOULD_PN HP700 I386 I80960 I960 Lynx M68000 M68K MACH"
546al="$al MIPSEB MIPSEL MSDOS MTXINU MULTIMAX MVS"
547al="$al M_COFF M_I186 M_I286 M_I386 M_I8086 M_I86 M_I86SM"
548al="$al M_SYS3 M_SYS5 M_SYSIII M_SYSV M_UNIX M_XENIX"
549al="$al NeXT OCS88 OSF1 PARISC PC532 PORTAR POSIX"
550al="$al PWB R3000 RES RISC6000 RT Sun386i SVR3 SVR4"
551al="$al SYSTYPE_BSD SYSTYPE_SVR4 SYSTYPE_SYSV Tek4132 Tek4300"
552al="$al UMAXV USGr4 USGr4_2 UTEK UTS UTek UnicomPBB UnicomPBD Utek"
553al="$al VMS Xenix286"
554al="$al _AIX _AIX32 _AIX370 _AM29000 _COFF _CRAY _CX_UX _EPI"
555al="$al _IBMESA _IBMR2 _M88K _M88KBCS_TARGET"
556al="$al _MIPSEB _MIPSEL _M_COFF _M_I86 _M_I86SM _M_SYS3"
557al="$al _M_SYS5 _M_SYSIII _M_SYSV _M_UNIX _M_XENIX _NLS _PGC_ _R3000"
558al="$al _SYSTYPE_BSD _SYSTYPE_BSD43 _SYSTYPE_SVR4"
559al="$al _SYSTYPE_SYSV _SYSV3 _U370 _UNICOS"
560al="$al __386BSD__ __BIG_ENDIAN __BIG_ENDIAN__ __BSD_4_4__"
561al="$al __DGUX__ __DPX2__ __H3050R __H3050RX"
562al="$al __LITTLE_ENDIAN __LITTLE_ENDIAN__ __MACH__"
563al="$al __MIPSEB __MIPSEB__ __MIPSEL __MIPSEL__"
564al="$al __Next__ __OSF1__ __PARAGON__ __PGC__ __PWB __STDC__"
565al="$al __SVR4_2__ __UMAXV__"
566al="$al ____386BSD____ __alpha __alpha__ __amiga"
567al="$al __bsd4_2 __bsd4_2__ __bsdi__ __convex__"
568al="$al __host_mips__"
569al="$al __hp9000s200 __hp9000s300 __hp9000s400 __hp9000s500"
570al="$al __hp9000s500 __hp9000s700 __hp9000s800"
571al="$al __hppa __hpux __hp_osf __i286 __i286__ __i386 __i386__"
572al="$al __i486 __i486__ __i860 __i860__ __ibmesa __ksr1__ __linux__"
573al="$al __m68k __m68k__ __m88100__ __m88k __m88k__"
574al="$al __mc68000 __mc68000__ __mc68020 __mc68020__"
575al="$al __mc68030 __mc68030__ __mc68040 __mc68040__"
576al="$al __mc88100 __mc88100__ __mips __mips__"
577al="$al __motorola__ __osf__ __pa_risc __sparc__ __stdc__"
578al="$al __sun __sun__ __svr3__ __svr4__ __ultrix __ultrix__"
579al="$al __unix __unix__ __uxpm__ __uxps__ __vax __vax__"
580al="$al _host_mips _mips _unix"
581al="$al a29k aegis aix aixpc alliant alpha am29000 amiga ansi ardent"
582al="$al apollo ardent att386 att3b"
583al="$al bsd bsd43 bsd4_2 bsd4_3 bsd4_4 bsdi bull"
584al="$al cadmus clipper concurrent convex cray ctix"
585al="$al dmert encore gcos gcx gimpel gould"
586al="$al hbullx20 hcx host_mips hp200 hp300 hp700 hp800"
587al="$al hp9000 hp9000s300 hp9000s400 hp9000s500"
588al="$al hp9000s700 hp9000s800 hp9k8 hppa hpux"
589al="$al i186 i286 i386 i486 i8086"
590al="$al i80960 i860 iAPX286 ibm ibm032 ibmrt interdata is68k"
591al="$al ksr1 linux luna luna88k m68k m88100 m88k"
592al="$al mc300 mc500 mc68000 mc68010 mc68020 mc68030"
593al="$al mc68040 mc68060 mc68k mc68k32 mc700"
594al="$al mc88000 mc88100 merlin mert mips mvs n16"
595al="$al ncl_el ncl_mr"
596al="$al news1500 news1700 news1800 news1900 news3700"
597al="$al news700 news800 news900 ns16000 ns32000"
598al="$al ns32016 ns32332 ns32k nsc32000 os osf"
599al="$al parisc pc532 pdp11 plexus posix pyr"
600al="$al riscix riscos scs sequent sgi sinix sony sony_news"
601al="$al sonyrisc sparc sparclite spectrum stardent stratos"
602al="$al sun sun3 sun386 svr4 sysV68 sysV88"
603al="$al titan tower tower32 tower32_200 tower32_600 tower32_700"
604al="$al tower32_800 tower32_850 tss u370 u3b u3b2 u3b20 u3b200"
605al="$al u3b20d u3b5 ultrix unix unixpc unos vax venix vms"
606al="$al xenix z8000"
607
ecfc5424
AD
608groupstype=''
609i_whoami=''
610: change the next line if compiling for Xenix/286 on Xenix/386
611xlibpth='/usr/lib/386 /lib/386'
612
613: general looking path for locating libraries
614glibpth="/lib/pa1.1 /usr/lib/large /lib /usr/lib $xlibpth"
615glibpth="$glibpth /lib/large /usr/lib/small /lib/small"
616glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib /usr/shlib"
617
618: Private path used by Configure to find libraries. Its value
619: is prepended to libpth. This variable takes care of special
620: machines, like the mips. Usually, it should be empty.
621plibpth=''
622
623: default library list
624libswanted=''
625: full support for void wanted by default
626defvoidused=15
627
628: set useposix=false in your hint file to disable the POSIX extension.
629useposix=true
630: no include file wanted by default
631inclwanted=''
632
633: List of libraries we want.
634libswanted='net socket inet nsl nm ndbm gdbm dbm db malloc dl'
635libswanted="$libswanted dld ld sun m c cposix posix ndir dir crypt"
636libswanted="$libswanted ucb bsd BSD PW x"
1aef975c 637: We probably want to search /usr/shlib before most other libraries.
94b6baf5 638: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
639glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
640glibpth="/usr/shlib $glibpth"
641: Do not use vfork unless overridden by a hint file.
642usevfork=false
1aef975c
AD
643: We might as well always be portable. It makes no difference for
644: perl5, and makes people happy.
645d_portable=define
ecfc5424 646
2304df62
AD
647: script used to extract .SH files with variable substitutions
648cat >extract <<'EOS'
649CONFIG=true
650echo "Doing variable substitutions on .SH files..."
651if test -f MANIFEST; then
a0d0e21e
LW
652 shlist=`awk '{print $1}' <MANIFEST | grep '\.SH'`
653 : Pick up possible extension manifests.
654 for dir in ext/* ; do
655 if test -f $dir/MANIFEST; then
656 xxx=`awk '{print $1}' < $dir/MANIFEST |
657 sed -n "/\.SH$/ s@^@$dir/@p"`
658 shlist="$shlist $xxx"
659 fi
660 done
661 set x $shlist
2304df62
AD
662else
663 echo "(Looking for .SH files under the current directory.)"
664 set x `find . -name "*.SH" -print`
665fi
666shift
667case $# in
6680) set x *.SH; shift;;
669esac
670if test ! -f $1; then
671 shift
672fi
673for file in $*; do
674 case "$file" in
675 */*)
676 dir=`expr X$file : 'X\(.*\)/'`
677 file=`expr X$file : 'X.*/\(.*\)'`
678 (cd $dir && . ./$file)
679 ;;
680 *)
681 . ./$file
682 ;;
683 esac
684done
685if test -f config_h.SH; then
686 if test ! -f config.h; then
687 : oops, they left it out of MANIFEST, probably, so do it anyway.
688 . ./config_h.SH
689 fi
690fi
691EOS
692
693: produce awk script to parse command line options
694cat >options.awk <<'EOF'
695BEGIN {
ecfc5424 696 optstr = "dD:eEf:hOrsSU:V"; # getopt-style specification
2304df62
AD
697
698 len = length(optstr);
699 for (i = 1; i <= len; i++) {
700 c = substr(optstr, i, 1);
701 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
702 if (a == ":") {
703 arg[c] = 1;
704 i++;
705 }
706 opt[c] = 1;
707 }
708}
709{
710 expect = 0;
711 str = $0;
712 if (substr(str, 1, 1) != "-") {
713 printf("'%s'\n", str);
714 next;
715 }
716 len = length($0);
717 for (i = 2; i <= len; i++) {
718 c = substr(str, i, 1);
719 if (!opt[c]) {
720 printf("-%s\n", substr(str, i));
721 next;
722 }
723 printf("-%s\n", c);
724 if (arg[c]) {
725 if (i < len)
726 printf("'%s'\n", substr(str, i + 1));
727 else
728 expect = 1;
729 next;
730 }
731 }
732}
733END {
734 if (expect)
735 print "?";
736}
737EOF
738
739: process the command line options
740set X `for arg in "$@"; do echo $arg; done | awk -f options.awk`
741eval "set $*"
742shift
743rm -f options.awk
744
745: set up default values
746fastread=''
747reuseval=false
748config_sh=''
749alldone=''
750error=''
751silent=''
752extractsh=''
ecfc5424 753override=''
1aef975c 754rm -f optdef.sh
2304df62
AD
755
756: option parsing
757while test $# -gt 0; do
758 case "$1" in
759 -d) shift; fastread=yes;;
760 -e) shift; alldone=cont;;
761 -f)
762 shift
763 cd ..
764 if test -r "$1"; then
765 config_sh="$1"
766 else
a0d0e21e 767 echo "$me: cannot read config file $1." >&2
2304df62
AD
768 error=true
769 fi
770 cd UU
771 shift;;
772 -h) shift; error=true;;
773 -r) shift; reuseval=true;;
774 -s) shift; silent=true;;
775 -E) shift; alldone=exit;;
ecfc5424 776 -O) shift; override=true;;
2304df62 777 -S) shift; extractsh=true;;
a0d0e21e
LW
778 -D)
779 shift
780 case "$1" in
781 *=)
782 echo "$me: use '-U symbol=', not '-D symbol='." >&2
783 echo "$me: ignoring -D $1" >&2
784 ;;
ecfc5424 785 *=*) echo "$1" | \
1aef975c
AD
786 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
787 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
788 esac
789 shift
790 ;;
791 -U)
792 shift
793 case "$1" in
1aef975c 794 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
795 *=*)
796 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
797 echo "$me: ignoring -U $1" >&2
798 ;;
1aef975c 799 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
800 esac
801 shift
802 ;;
232e078e 803 -V) echo "$me generated by metaconfig 3.0 PL53." >&2
2304df62
AD
804 exit 0;;
805 --) break;;
a0d0e21e 806 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
807 *) break;;
808 esac
809done
810
811case "$error" in
812true)
813 cat >&2 <<EOM
ecfc5424 814Usage: $me [-dehrEOSV] [-f config.sh] [-D symbol] [-D symbol=value]
a0d0e21e 815 [-U symbol] [-U symbol=]
2304df62
AD
816 -d : use defaults for all answers.
817 -e : go on without questioning past the production of config.sh.
818 -f : specify an alternate default configuration file.
819 -h : print this help message and exit (with an error status).
820 -r : reuse C symbols value if possible (skips costly nm extraction).
821 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
822 -D : define symbol to have some value:
823 -D symbol symbol gets the value 'define'
824 -D symbol=value symbol gets the value 'value'
2304df62 825 -E : stop at the end of questions, after having produced config.sh.
ecfc5424 826 -O : let -D and -U override definitions from loaded configuration file.
2304df62 827 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
828 -U : undefine symbol:
829 -U symbol symbol gets the value 'undef'
830 -U symbol= symbol gets completely empty
2304df62
AD
831 -V : print version number and exit (with a zero status).
832EOM
833 exit 1
834 ;;
835esac
836
837exec 4>&1
838case "$silent" in
839true) exec 1>/dev/null;;
840esac
841
ecfc5424 842: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
843touch optdef.sh
844. ./optdef.sh
a0d0e21e 845
2304df62
AD
846case "$extractsh" in
847true)
848 case "$config_sh" in
849 '') config_sh='config.sh'; config='./config.sh';;
850 /*) config="$config_sh";;
851 *) config="./$config_sh";;
852 esac
853 echo " "
854 echo "Fetching answers from $config_sh..."
855 cd ..
856 . $config
1aef975c 857 test "$override" && . ./optdef.sh
2304df62
AD
858 echo " "
859 . ./UU/extract
860 rm -rf UU
861 echo "Done."
862 exit 0
863 ;;
864esac
865
866: set package name
85e6fe83 867package=perl5
1aef975c
AD
868first=`echo $package | sed -e 's/^\(.\).*/\1/'`
869last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
870case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
871ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
872*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
873esac
2304df62
AD
874
875: Eunice requires " " instead of "", can you believe it
876echo " "
877: Here we go...
878echo "Beginning of configuration questions for $package."
879
1aef975c 880trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
2304df62 881
2304df62
AD
882: Some greps do not return status, grrr.
883echo "grimblepritz" >grimble
884if grep blurfldyick grimble >/dev/null 2>&1 ; then
885 contains=contains
886elif grep grimblepritz grimble >/dev/null 2>&1 ; then
887 contains=grep
888else
889 contains=contains
890fi
891rm -f grimble
892: the following should work in any shell
893case "$contains" in
894contains*)
895 echo " "
896 echo "AGH! Grep doesn't return a status. Attempting remedial action."
897 cat >contains <<'EOSS'
898grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
899EOSS
900chmod +x contains
901esac
902
903: first determine how to suppress newline on echo command
904echo " "
905echo "Checking echo to see how to suppress newlines..."
906(echo "hi there\c" ; echo " ") >.echotmp
907if $contains c .echotmp >/dev/null 2>&1 ; then
908 echo "...using -n."
909 n='-n'
910 c=''
911else
912 cat <<'EOM'
913...using \c
914EOM
915 n=''
916 c='\c'
917fi
918echo $n "The star should be here-->$c"
919echo '*'
920rm -f .echotmp
921
922: Now test for existence of everything in MANIFEST
923echo " "
924if test -f ../MANIFEST; then
925 echo "First let's make sure your kit is complete. Checking..." >&4
926 awk '$1 !~ /PACK[A-Z]+/ {print $1}' ../MANIFEST | split -50
927 rm -f missing
928 for filelist in x??; do
929 (cd ..; ls `cat UU/$filelist` >/dev/null 2>>UU/missing)
930 done
931 if test -s missing; then
932 cat missing >&4
933 cat >&4 <<'EOM'
934
935THIS PACKAGE SEEMS TO BE INCOMPLETE.
936
937You have the option of continuing the configuration process, despite the
938distinct possibility that your kit is damaged, by typing 'y'es. If you
939do, don't blame me if something goes wrong. I advise you to type 'n'o
940and contact the author (lwall@netlabs.com).
941
942EOM
943 echo $n "Continue? [n] $c" >&4
944 read ans
945 case "$ans" in
946 y*)
947 echo "Continuing..." >&4
948 rm -f missing
949 ;;
950 *)
951 echo "ABORTING..." >&4
952 kill $$
953 ;;
954 esac
955 else
956 echo "Looks good..." >&4
957 fi
958else
959 echo "There is no MANIFEST file. I hope your kit is complete !"
960fi
961rm -f missing x??
962
963: compute the number of columns on the terminal for proper question formatting
964case "$COLUMNS" in
965'') COLUMNS='80';;
966esac
967
968: set up the echo used in my read
969myecho="case \"\$xxxm\" in
970'') echo $n \"\$rp $c\" >&4;;
971*) case \"\$rp\" in
972 '') echo $n \"[\$xxxm] $c\";;
973 *)
974 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
975 echo \"\$rp\" >&4
976 echo $n \"[\$xxxm] $c\" >&4
977 else
978 echo $n \"\$rp [\$xxxm] $c\" >&4
979 fi
980 ;;
981 esac;;
982esac"
983
984: now set up to do reads with possible shell escape and default assignment
985cat <<EOSC >myread
986xxxm=\$dflt
987$myecho
988ans='!'
989case "\$fastread" in
990yes) case "\$dflt" in
991 '') ;;
992 *) ans='';
993 case "\$silent-\$rp" in
994 true-) ;;
995 *) echo " " >&4;;
996 esac;;
997 esac;;
998*) case "\$silent" in
999 true) case "\$rp" in
1000 '') ans='';;
1001 esac;;
1002 esac;;
1003esac
1004while expr "X\$ans" : "X!" >/dev/null; do
1005 read answ
1006 set x \$xxxm
1007 shift
1008 aok=''; eval "ans=\"\$answ\"" && aok=y
1009 case "\$answ" in
1010 "\$ans")
1011 case "\$ans" in
ecfc5424
AD
1012 \\&*)
1013 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
1014 shift
1015 case "\$1" in
1016 -d)
1017 fastread=yes
1018 echo "(OK, I'll run with -d after this question.)"
1019 ;;
1020 -*)
1021 echo "*** Sorry, \$1 not supported yet."
1022 ;;
1023 esac
1024 $myecho
1025 ans=!
1026 ;;
2304df62
AD
1027 "!")
1028 sh 1>&4
1029 echo " "
1030 $myecho
1031 ;;
1032 !*)
1033 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
1034 shift
1035 sh 1>&4 -c "\$*"
1036 echo " "
1037 $myecho
1038 ;;
1039 esac;;
1040 *)
1041 case "\$aok" in
1042 y)
1043 echo "*** Substitution done -- please confirm."
1044 xxxm="\$ans"
1045 ans=\`echo $n "\$ans$c" | tr '\012' ' '\`
1046 xxxm="\$ans"
1047 ans=!
1048 ;;
1049 *)
1050 echo "*** Error -- try again."
1051 ans=!
1052 ;;
1053 esac
1054 $myecho
1055 ;;
1056 esac
1057 case "\$ans\$xxxm\$nostick" in
1058 '')
1059 ans=!
1060 $myecho
1061 ;;
1062 esac
1063done
1064case "\$ans" in
1065'') ans="\$xxxm";;
1066esac
1067EOSC
1068
1069: create .config dir to save info across Configure sessions
1070test -d ../.config || mkdir ../.config
1071cat >../.config/README <<EOF
1072This directory created by Configure to save information that should
1073persist across sessions.
1074
1075You may safely delete it if you wish.
1076EOF
1077
1078: general instructions
1079needman=true
1080firsttime=true
1081user=`( (logname) 2>/dev/null || whoami) 2>&1`
1082if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
1083 firsttime=false
1084 echo " "
1085 rp='Would you like to see the instructions?'
1086 dflt=n
1087 . ./myread
1088 case "$ans" in
1089 [yY]*) ;;
1090 *) needman=false;;
1091 esac
1092fi
1093if $needman; then
1094 cat <<EOH
1095
1096This installation shell script will examine your system and ask you questions
a0d0e21e 1097to determine how the perl5 package should be installed. If you get
2304df62
AD
1098stuck on a question, you may use a ! shell escape to start a subshell or
1099execute a command. Many of the questions will have default answers in square
1100brackets; typing carriage return will give you the default.
1101
1102On some of the questions which ask for file or directory names you are allowed
1103to use the ~name construct to specify the login directory belonging to "name",
1104even if you don't have a shell which knows about that. Questions where this is
1105allowed will be marked "(~name ok)".
1106
1107EOH
1108 rp=''
1109 dflt='Type carriage return to continue'
1110 . ./myread
1111 cat <<'EOH'
1112
1113The prompter used in this script allows you to use shell variables and
1114backticks in your answers. You may use $1, $2, etc... to refer to the words
1115in the default answer, as if the default line was a set of arguments given to a
1116script shell. This means you may also use $* to repeat the whole default line,
1117so you do not have to re-type everything to add something to the default.
1118
1119Everytime there is a substitution, you will have to confirm. If there is an
1120error (e.g. an unmatched backtick), the default answer will remain unchanged
1121and you will be prompted again.
1122
1123If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
1124the questions and use the computed defaults (or the previous answers if there
1125was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424
AD
1126You may also start interactively and then answer '& -d' at any prompt to turn
1127on the non-interactive behaviour for the remaining of the execution.
2304df62
AD
1128
1129EOH
1130 . ./myread
1131 cat <<EOH
1132
1133Much effort has been expended to ensure that this shell script will run on any
1134Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
1135Configure and run it again. If you can't run Configure for some reason,
1136you'll have to generate a config.sh file by hand. Whatever problems you
1137have, let me (lwall@netlabs.com) know how I blew it.
2304df62
AD
1138
1139This installation script affects things in two ways:
1140
11411) it may do direct variable substitutions on some of the files included
1142 in this kit.
11432) it builds a config.h file for inclusion in C programs. You may edit
1144 any of these files as the need arises after running this script.
1145
1146If you make a mistake on a question, there is no easy way to back up to it
1147currently. The easiest thing to do is to edit config.sh and rerun all the SH
1148files. Configure will offer to let you do this before it runs the SH files.
1149
1150EOH
1151 dflt='Type carriage return to continue'
1152 . ./myread
1153 case "$firsttime" in
1154 true) echo $user >>../.config/instruct;;
1155 esac
1156fi
1157
1158: see if sh knows # comments
1159echo " "
1160echo "Checking your sh to see if it knows about # comments..." >&4
ecfc5424 1161if `sh -c '#' >/dev/null 2>&1`; then
2304df62
AD
1162 echo "Your sh handles # comments correctly."
1163 shsharp=true
1164 spitshell=cat
1165 echo " "
1166 echo "Okay, let's see if #! works on this system..."
a0d0e21e 1167 xcat=/bin/cat
ecfc5424 1168 test -f $xcat || xcat=/usr/bin/cat
a0d0e21e 1169 echo "#!$xcat" >try
2304df62
AD
1170 $eunicefix try
1171 chmod +x try
1172 ./try > today
1173 if test -s today; then
1174 echo "It does."
1175 sharpbang='#!'
1176 else
a0d0e21e 1177 echo "#! $xcat" > try
2304df62
AD
1178 $eunicefix try
1179 chmod +x try
1180 ./try > today
1181 if test -s today; then
1182 echo "It does."
1183 sharpbang='#! '
1184 else
1185 echo "It's just a comment."
1186 sharpbang=': use '
1187 fi
1188 fi
1189else
1190 echo "Your sh doesn't grok # comments--I will strip them later on."
1191 shsharp=false
a0d0e21e 1192 cd ..
2304df62
AD
1193 echo "exec grep -v '^[ ]*#'" >spitshell
1194 chmod +x spitshell
1195 $eunicefix spitshell
1196 spitshell=`pwd`/spitshell
a0d0e21e 1197 cd UU
2304df62
AD
1198 echo "I presume that if # doesn't work, #! won't work either!"
1199 sharpbang=': use '
1200fi
1201rm -f try today
1202
1203: figure out how to guarantee sh startup
1204echo " "
1205echo "Checking out how to guarantee sh startup..." >&4
1206case "$SYSTYPE" in
1207*bsd*|sys5*) startsh=$sharpbang"/$SYSTYPE/bin/sh";;
1208*) startsh=$sharpbang'/bin/sh';;
1209esac
1210echo "Let's see if '$startsh' works..."
1211cat >try <<EOSS
1212$startsh
1213set abc
1214test "$?abc" != 1
1215EOSS
1216
1217chmod +x try
1218$eunicefix try
1219if ./try; then
1220 echo "Yup, it does."
1221else
1222echo "Nope. You may have to fix up the shell scripts to make sure sh runs them."
1223fi
1224rm -f try
1225
1226: find out where common programs are
1227echo " "
1228echo "Locating common programs..." >&4
1229cat <<EOSC >loc
1230$startsh
1231case \$# in
12320) exit 1;;
1233esac
1234thing=\$1
1235shift
1236dflt=\$1
1237shift
1238for dir in \$*; do
1239 case "\$thing" in
1240 .)
1241 if test -d \$dir/\$thing; then
1242 echo \$dir
1243 exit 0
1244 fi
1245 ;;
1246 *)
a0d0e21e 1247 for thisthing in \$dir/\$thing; do
ecfc5424 1248 : just loop through to pick last item
a0d0e21e
LW
1249 done
1250 if test -f \$thisthing; then
1251 echo \$thisthing
2304df62
AD
1252 exit 0
1253 elif test -f \$dir/\$thing.exe; then
1254 : on Eunice apparently
1255 echo \$dir/\$thing
1256 exit 0
1257 fi
1258 ;;
1259 esac
1260done
1261echo \$dflt
1262exit 1
1263EOSC
1264chmod +x loc
1265$eunicefix loc
1266loclist="
1267awk
1268cat
ecfc5424 1269comm
2304df62
AD
1270cp
1271echo
1272expr
a0d0e21e 1273find
2304df62 1274grep
85e6fe83 1275ln
a0d0e21e 1276ls
2304df62 1277mkdir
2304df62
AD
1278rm
1279sed
1280sort
85e6fe83 1281touch
2304df62
AD
1282tr
1283uniq
1284"
1285trylist="
1286Mcc
2304df62
AD
1287byacc
1288cpp
1289csh
1290date
1291egrep
2304df62
AD
1292line
1293nroff
1294perl
1295test
1296uname
1297"
1298pth=`echo $PATH | sed -e 's/:/ /g'`
1299pth="$pth /lib /usr/lib"
1300for file in $loclist; do
1301 xxx=`./loc $file $file $pth`
1302 eval $file=$xxx
1303 eval _$file=$xxx
1304 case "$xxx" in
1305 /*)
1306 echo $file is in $xxx.
1307 ;;
1308 *)
1309 echo "I don't know where $file is. I hope it's in everyone's PATH."
1310 ;;
1311 esac
1312done
1313echo " "
1314echo "Don't worry if any of the following aren't found..."
1315say=offhand
1316for file in $trylist; do
1317 xxx=`./loc $file $file $pth`
1318 eval $file=$xxx
1319 eval _$file=$xxx
1320 case "$xxx" in
1321 /*)
1322 echo $file is in $xxx.
1323 ;;
1324 *)
1325 echo "I don't see $file out there, $say."
1326 say=either
1327 ;;
1328 esac
1329done
1330case "$egrep" in
1331egrep)
1332 echo "Substituting grep for egrep."
1333 egrep=$grep
1334 ;;
1335esac
1336case "$test" in
1337test)
1338 echo "Hopefully test is built into your sh."
1339 ;;
1340*)
ecfc5424 1341 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2304df62
AD
1342 echo "Using the test built into your sh."
1343 test=test
1344 _test=test
1345 fi
1346 ;;
1347esac
1348case "$echo" in
1349echo)
1350 echo "Hopefully echo is built into your sh."
1351 ;;
1352'') ;;
1353*)
1354 echo " "
1355echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
1356 $echo $n "hi there$c" >foo1
1357 echo $n "hi there$c" >foo2
1358 if cmp foo1 foo2 >/dev/null 2>&1; then
1359 echo "They are compatible. In fact, they may be identical."
1360 else
1361 case "$n" in
1362 '-n') n='' c='\c';;
1363 *) n='-n' c='';;
1364 esac
1365 cat <<FOO
1366They are not compatible! You are probably running ksh on a non-USG system.
1367I'll have to use $echo instead of the builtin, since Bourne shell doesn't
1368have echo built in and we may have to run some Bourne shell scripts. That
1369means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
1370
1371FOO
1372 $echo $n "The star should be here-->$c"
1373 $echo "*"
1374 fi
1375 $rm -f foo1 foo2
1376 ;;
1377esac
1378
a0d0e21e
LW
1379: determine whether symbolic links are supported
1380echo " "
1381$touch blurfl
1382if $ln -s blurfl sym > /dev/null 2>&1 ; then
1383 echo "Symbolic links are supported." >&4
1384 lns="$ln -s"
1385else
1386 echo "Symbolic links are NOT supported." >&4
1387 lns="$ln"
1388fi
1389$rm -f blurfl sym
1390
ecfc5424
AD
1391: see whether [:lower:] and [:upper:] are supported character classes
1392echo " "
1393up='[A-Z]'
1394low='[a-z]'
1395case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1396ABYZ)
1397 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
1398 up='[:upper:]'
1399 low='[:lower:]'
1400 ;;
1401*)
1402 echo "Your tr only supports [a-z] and [A-Z] to convert case." >&4
1403 ;;
1404esac
1405: set up the translation script tr, must be called with ./tr of course
1406cat >tr <<EOSC
1407$startsh
1408case "\$1\$2" in
1409'[A-Z][a-z]') exec $tr '$up' '$low';;
1410'[a-z][A-Z]') exec $tr '$low' '$up';;
1411esac
1412exec $tr "\$@"
1413EOSC
1414chmod +x tr
1415$eunicefix tr
1416
2304df62
AD
1417: Try to determine whether config.sh was made on this system
1418case "$config_sh" in
1419'')
1420myuname=`( ($uname -a) 2>/dev/null || hostname) 2>&1`
a0d0e21e 1421myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e 's/\///g' | \
ecfc5424 1422 ./tr '[A-Z]' '[a-z]' | tr '\012' ' '`
1aef975c 1423newmyuname="$myuname"
2304df62 1424dflt=n
232e078e 1425if test -f ../config.sh; then
2304df62 1426 if $contains myuname= ../config.sh >/dev/null 2>&1; then
1aef975c 1427 eval "`grep myuname= ../config.sh`"
2304df62 1428 fi
1aef975c 1429 if test "X$myuname" = "X$newmyuname"; then
2304df62
AD
1430 dflt=y
1431 fi
1432fi
1433
1434: Get old answers from old config file if Configure was run on the
1435: same system, otherwise use the hints.
1436hint=default
1437cd ..
1438if test -f config.sh; then
232e078e
AD
1439 $cat <<EOM
1440
1441I see a config.sh file. Was it built on THIS system with THIS compiler?
1442EOM
1443 rp="Shall I use config.sh to set the defaults?"
2304df62
AD
1444 . UU/myread
1445 case "$ans" in
1446 n*|N*) echo "OK, I'll ignore it."; mv config.sh config.sh.old;;
1447 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
1448 tmp_n="$n"
1449 tmp_c="$c"
2304df62
AD
1450 . ./config.sh
1451 cp config.sh UU
ecfc5424
AD
1452 n="$tmp_n"
1453 c="$tmp_c"
2304df62
AD
1454 hint=previous
1455 ;;
1456 esac
1457fi
1458if test ! -f config.sh; then
1459 $cat <<EOM
1460
1461First time through, eh? I have some defaults handy for the following systems:
1462
1463EOM
1464 cd hints; ls -C *.sh | $sed 's/\.sh/ /g' >&4
1465 dflt=''
1466 : Half the following guesses are probably wrong... If you have better
1467 : tests or hints, please send them to lwall@netlabs.com
1468 : The metaconfig authors would also appreciate a copy...
a0d0e21e 1469 $test -f /irix && osname=irix
85e6fe83
LW
1470 $test -f /xenix && osname=sco_xenix
1471 $test -f /dynix && osname=dynix
1472 $test -f /dnix && osname=dnix
a0d0e21e 1473 $test -f /unicos && osname=unicos && osvers=`$uname -r`
85e6fe83 1474 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
1475 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
1476 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
1477 $test -d /usr/apollo/bin && osname=apollo
1478 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 1479 $test -d /usr/include/minix && osname=minix
fec02dd3
AD
1480 $test -d /MachTen && osname=machten && \
1481 osvers=`/usr/etc/version | $awk '{print $2}' | \
1482 $sed -e 's/[A-Za-z]$//'`
2304df62
AD
1483 if $test -f $uname; then
1484 set X $myuname
1485 shift
1486
2304df62 1487 case "$5" in
85e6fe83 1488 fps*) osname=fps ;;
2304df62
AD
1489 mips*)
1490 case "$4" in
85e6fe83
LW
1491 umips) osname=umips ;;
1492 *) osname=mips ;;
2304df62 1493 esac;;
85e6fe83
LW
1494 [23]100) osname=mips ;;
1495 next*) osname=next ;;
1496 news*) osname=news ;;
ecfc5424
AD
1497 i386*)
1498 if $test -f /etc/kconfig; then
1499 osname=isc
a0d0e21e
LW
1500 if test "$lns" = "ln -s"; then
1501 osvers=4
1502 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1503 osvers=3
2304df62 1504 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 1505 osvers=2
ecfc5424
AD
1506 fi
1507 fi
1508 ;;
2304df62
AD
1509 esac
1510
1511 case "$1" in
a0d0e21e
LW
1512 aix) osname=aix
1513 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1514 case "$tmp" in
1aef975c 1515 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
1516 '<3240'|'<>3240') osvers=3.2.0 ;;
1517 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1518 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 1519 *) osvers=$tmp;;
a0d0e21e
LW
1520 esac
1521 ;;
1522 dnix) osname=dnix
1523 osvers="$3"
1524 ;;
1525 domainos) osname=apollo
1526 osvers="$3"
1527 ;;
1528 dgux) osname=dgux
1529 osvers="$3"
1530 ;;
1531 freebsd) osname=freebsd
1532 osvers="$3" ;;
1533 genix) osname=genix ;;
1534 hp*) osname=hpux
1535 case "$3" in
1536 *.08.*) osvers=9 ;;
1537 *.09.*) osvers=9 ;;
1538 *.10.*) osvers=10 ;;
ecfc5424 1539 *) osvers="$3" ;;
a0d0e21e
LW
1540 esac
1541 ;;
1542 irix) osname=irix
1543 case "$3" in
1544 4*) osvers=4 ;;
1545 5*) osvers=5 ;;
ecfc5424 1546 *) osvers="$3" ;;
a0d0e21e
LW
1547 esac
1548 ;;
1549 linux) osname=linux
1550 case "$3" in
1551 1*) osvers=1 ;;
1552 *) osvers="$3" ;;
1553 esac
1554 ;;
1555 netbsd*) osname=netbsd
ecfc5424
AD
1556 osvers="$3"
1557 ;;
a0d0e21e
LW
1558 bsd386) osname=bsd386
1559 osvers=`$uname -r`
1560 ;;
1561 next*) osname=next ;;
1562 solaris) osname=solaris
1563 case "$3" in
1564 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 1565 *) osvers="$3" ;;
a0d0e21e
LW
1566 esac
1567 ;;
85e6fe83
LW
1568 sunos) osname=sunos
1569 case "$3" in
85e6fe83
LW
1570 5*) osname=solaris
1571 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 1572 *) osvers="$3" ;;
2304df62
AD
1573 esac
1574 ;;
a0d0e21e 1575 titanos) osname=titanos
85e6fe83 1576 case "$3" in
a0d0e21e
LW
1577 1*) osvers=1 ;;
1578 2*) osvers=2 ;;
1579 3*) osvers=3 ;;
1580 4*) osvers=4 ;;
ecfc5424 1581 *) osvers="$3" ;;
2304df62
AD
1582 esac
1583 ;;
85e6fe83 1584 ultrix) osname=ultrix
ecfc5424 1585 osvers="$3"
2304df62 1586 ;;
85e6fe83 1587 osf1) case "$5" in
fed7345c
AD
1588 alpha)
1589 osname=dec_osf
1590 osvers=`echo "$3" | sed 's/^[vt]//'`
ecfc5424
AD
1591 ;;
1592 hp*) osname=hp_osf1 ;;
1593 mips) osname=mips_osf1 ;;
85e6fe83
LW
1594 esac
1595 ;;
a0d0e21e
LW
1596 uts) osname=uts
1597 osvers="$3"
1598 ;;
85e6fe83 1599 $2) case "$osname" in
2304df62 1600 *isc*) ;;
a0d0e21e
LW
1601 *freebsd*) ;;
1602 svr*)
1603 : svr4.x or possibly later
1604 case "svr$3" in
1605 ${osname}*)
1606 osname=svr$3
1607 osvers=$4
1608 ;;
1609 esac
1610 case "$osname" in
1611 svr4.0)
1612 : Check for ESIX
1613 if test -f /stand/boot ; then
1614 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
1615 if test -n "$INITPROG" -a -f "$INITPROG"; then
1616 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1617 if test -n "$isesix"; then
a0d0e21e
LW
1618 osname=esix4
1619 fi
1620 fi
1621 fi
1622 ;;
1623 esac
1624 ;;
2304df62 1625 *) if test -f /etc/systemid; then
a0d0e21e
LW
1626 osname=sco
1627 set `echo $3 | $sed 's/\./ /g'` $4
2304df62 1628 if $test -f sco_$1_$2_$3.sh; then
85e6fe83 1629 osvers=$1.$2.$3
2304df62 1630 elif $test -f sco_$1_$2.sh; then
85e6fe83 1631 osvers=$1.$2
2304df62 1632 elif $test -f sco_$1.sh; then
85e6fe83 1633 osvers=$1
2304df62 1634 fi
a0d0e21e
LW
1635 else
1636 case "$osname" in
1637 '') : Still unknown. Probably a generic Sys V.
1638 osname="sysv"
1639 osvers="$3"
1640 ;;
1641 esac
2304df62
AD
1642 fi
1643 ;;
1644 esac
1645 ;;
a0d0e21e
LW
1646 *) case "$osname" in
1647 '') : Still unknown. Probably a generic BSD.
1648 osname="$1"
1649 osvers="$3"
1650 ;;
1651 esac
1652 ;;
2304df62
AD
1653 esac
1654 else
1655 if test -f /vmunix -a -f news_os.sh; then
ecfc5424 1656 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
2304df62 1657 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
85e6fe83 1658 osname=news_os
2304df62
AD
1659 fi
1660 $rm -f ../UU/kernel.what
1661 fi
1662 fi
85e6fe83 1663
a0d0e21e
LW
1664 : Now look for a hint file osname_osvers, unless one has been
1665 : specified already.
1666 case "$hintfile" in
1667 ''|' ')
ecfc5424 1668 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
a0d0e21e 1669 : Also try without trailing minor version numbers.
ecfc5424
AD
1670 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1671 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1672 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1673 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
a0d0e21e
LW
1674 case "$file" in
1675 '') dflt=none ;;
1676 *) case "$osvers" in
1677 '') dflt=$file
1678 ;;
1679 *) if $test -f $file.sh ; then
1680 dflt=$file
1681 elif $test -f $xfile.sh ; then
1682 dflt=$xfile
1683 elif $test -f $xxfile.sh ; then
1684 dflt=$xxfile
1685 elif $test -f $xxxfile.sh ; then
1686 dflt=$xxxfile
1687 elif $test -f $xxxxfile.sh ; then
1688 dflt=$xxxxfile
1689 elif $test -f "${osname}.sh" ; then
1690 dflt="${osname}"
1691 else
1692 dflt=none
1693 fi
1694 ;;
1695 esac
85e6fe83
LW
1696 ;;
1697 esac
1698 ;;
a0d0e21e 1699 *)
ecfc5424 1700 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 1701 ;;
2304df62 1702 esac
1aef975c 1703
2304df62
AD
1704 $cat <<EOM
1705
1706You may give one or more space-separated answers, or "none" if appropriate.
1707If your OS version has no hints, DO NOT give a wrong version -- say "none".
1708
1709EOM
1710 rp="Which of these apply, if any?"
1711 . ../UU/myread
85e6fe83
LW
1712 tans=$ans
1713 for file in $tans; do
2304df62
AD
1714 if $test -f $file.sh; then
1715 . ./$file.sh
1716 $cat $file.sh >> ../UU/config.sh
85e6fe83 1717 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
1718 : nothing
1719 else
85e6fe83
LW
1720 : Give one chance to correct a possible typo.
1721 echo "$file.sh does not exist"
1722 dflt=$file
1723 rp="hint to use instead?"
1724 . ../UU/myread
1725 for file in $ans; do
1726 if $test -f "$file.sh"; then
1727 . ./$file.sh
1728 $cat $file.sh >> ../UU/config.sh
1729 elif $test X$ans = X -o X$ans = Xnone ; then
1730 : nothing
1731 else
1732 echo "$file.sh does not exist -- ignored."
1733 fi
1734 done
2304df62
AD
1735 fi
1736 done
85e6fe83 1737
2304df62 1738 hint=recommended
85e6fe83
LW
1739 : Remember our hint file for later.
1740 if $test -f "$file.sh" ; then
a0d0e21e 1741 hintfile="$file"
85e6fe83 1742 else
a0d0e21e 1743 hintfile=''
85e6fe83
LW
1744 fi
1745
2304df62
AD
1746 cd ..
1747fi
1748cd UU
1749;;
1750*)
1751 echo " "
1752 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
1753 tmp_n="$n"
1754 tmp_c="$c"
2304df62
AD
1755 cd ..
1756 cp $config_sh config.sh 2>/dev/null
1757 . ./config.sh
1758 cd UU
1759 cp ../config.sh .
ecfc5424
AD
1760 n="$tmp_n"
1761 c="$tmp_c"
2304df62
AD
1762 hint=previous
1763 ;;
1764esac
1aef975c
AD
1765test "$override" && . ./optdef.sh
1766myuname="$newmyuname"
2304df62
AD
1767
1768: Restore computed paths
1769for file in $loclist $trylist; do
1770 eval $file="\$_$file"
1771done
1772
85e6fe83 1773cat << EOM
a0d0e21e 1774
85e6fe83 1775Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
1776The default value is probably right if the name rings a bell. Otherwise,
1777since spelling matters for me, either accept the default or answer "none"
1778to leave it blank.
a0d0e21e 1779
85e6fe83 1780EOM
85e6fe83 1781case "$osname" in
a0d0e21e 1782 ''|' ')
85e6fe83 1783 case "$hintfile" in
a0d0e21e 1784 ''|' '|none) dflt=none ;;
ecfc5424 1785 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
1786 esac
1787 ;;
1788 *) dflt="$osname" ;;
1789esac
1790rp="Operating system name?"
1791. ./myread
1792case "$ans" in
ecfc5424
AD
1793none) osname='' ;;
1794*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 1795esac
2304df62
AD
1796: who configured the system
1797cf_time=`$date 2>&1`
a0d0e21e
LW
1798(logname > .temp) >/dev/null 2>&1
1799$test -s .temp || (whoami > .temp) >/dev/null 2>&1
1800$test -s .temp || echo unknown > .temp
1801cf_by=`$cat .temp`
1802$rm -f .temp
2304df62
AD
1803
1804: determine where manual pages are on this system
1805echo " "
1806case "$sysman" in
1807'')
a0d0e21e 1808 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2304df62
AD
1809 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
1810 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
1811 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
a0d0e21e
LW
1812 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
1813 sysman=`./loc . /usr/man/man1 $syspath`
2304df62
AD
1814 ;;
1815esac
1816if $test -d "$sysman"; then
1817 echo "System manual is in $sysman." >&4
1818else
1819 echo "Could not find manual pages in source form." >&4
1820fi
1821
1822: see what memory models we can support
1823case "$models" in
1824'')
1825 $cat >pdp11.c <<'EOP'
1826main() {
1827#ifdef pdp11
1828 exit(0);
1829#else
1830 exit(1);
1831#endif
1832}
1833EOP
1834 cc -o pdp11 pdp11.c >/dev/null 2>&1
1835 if ./pdp11 2>/dev/null; then
1836 dflt='unsplit split'
1837 else
1838 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
1839 case "$tans" in
1840 X) dflt='none';;
1841 *) if $test -d /lib/small || $test -d /usr/lib/small; then
1842 dflt='small'
1843 else
1844 dflt=''
1845 fi
1846 if $test -d /lib/medium || $test -d /usr/lib/medium; then
1847 dflt="$dflt medium"
1848 fi
1849 if $test -d /lib/large || $test -d /usr/lib/large; then
1850 dflt="$dflt large"
1851 fi
1852 if $test -d /lib/huge || $test -d /usr/lib/huge; then
1853 dflt="$dflt huge"
1854 fi
1855 esac
1856 fi;;
1857*) dflt="$models";;
1858esac
1859$cat <<EOM
1860
1861Some systems have different model sizes. On most systems they are called
1862small, medium, large, and huge. On the PDP11 they are called unsplit and
1863split. If your system doesn't support different memory models, say "none".
1864If you wish to force everything to one memory model, say "none" here and
1865put the appropriate flags later when it asks you for other cc and ld flags.
1866Venix systems may wish to put "none" and let the compiler figure things out.
1867(In the following question multiple model names should be space separated.)
1868
1869EOM
1870rp="Which memory models are supported?"
1871. ./myread
1872models="$ans"
1873
1874case "$models" in
1875none)
1876 small=''
1877 medium=''
1878 large=''
1879 huge=''
1880 unsplit=''
1881 split=''
1882 ;;
1883*split)
1884 case "$split" in
1885 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
1886 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
1887 dflt='-i'
1888 else
1889 dflt='none'
1890 fi;;
1891 *) dflt="$split";;
1892 esac
1893 rp="What flag indicates separate I and D space?"
1894 . ./myread
1895 tans="$ans"
1896 case "$tans" in
1897 none) tans='';;
1898 esac
1899 split="$tans"
1900 unsplit='';;
1901*large*|*small*|*medium*|*huge*)
1902 case "$models" in
1903 *large*)
1904 case "$large" in
1905 '') dflt='-Ml';;
1906 *) dflt="$large";;
1907 esac
1908 rp="What flag indicates large model?"
1909 . ./myread
1910 tans="$ans"
1911 case "$tans" in
1912 none) tans='';
1913 esac
1914 large="$tans";;
1915 *) large='';;
1916 esac
1917 case "$models" in
1918 *huge*) case "$huge" in
1919 '') dflt='-Mh';;
1920 *) dflt="$huge";;
1921 esac
1922 rp="What flag indicates huge model?"
1923 . ./myread
1924 tans="$ans"
1925 case "$tans" in
1926 none) tans='';
1927 esac
1928 huge="$tans";;
1929 *) huge="$large";;
1930 esac
1931 case "$models" in
1932 *medium*) case "$medium" in
1933 '') dflt='-Mm';;
1934 *) dflt="$medium";;
1935 esac
1936 rp="What flag indicates medium model?"
1937 . ./myread
1938 tans="$ans"
1939 case "$tans" in
1940 none) tans='';
1941 esac
1942 medium="$tans";;
1943 *) medium="$large";;
1944 esac
1945 case "$models" in
1946 *small*) case "$small" in
1947 '') dflt='none';;
1948 *) dflt="$small";;
1949 esac
1950 rp="What flag indicates small model?"
1951 . ./myread
1952 tans="$ans"
1953 case "$tans" in
1954 none) tans='';
1955 esac
1956 small="$tans";;
1957 *) small='';;
1958 esac
1959 ;;
1960*)
1961 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
1962 ;;
1963esac
1964
1965: make some quick guesses about what we are up against
1966echo " "
1967$echo $n "Hmm... $c"
1968echo exit 1 >bsd
1969echo exit 1 >usg
1970echo exit 1 >v7
1971echo exit 1 >osf1
1972echo exit 1 >eunice
1973echo exit 1 >xenix
1974echo exit 1 >venix
ecfc5424 1975d_bsd="$undef"
2304df62
AD
1976$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
1977if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
1978then
1979 echo "Looks kind of like an OSF/1 system, but we'll see..."
1980 echo exit 0 >osf1
1981elif test `echo abc | tr a-z A-Z` = Abc ; then
1982 xxx=`./loc addbib blurfl $pth`
1983 if $test -f $xxx; then
1984 echo "Looks kind of like a USG system with BSD features, but we'll see..."
1985 echo exit 0 >bsd
1986 echo exit 0 >usg
1987 else
1988 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
1989 echo "Looks kind of like an extended USG system, but we'll see..."
1990 else
1991 echo "Looks kind of like a USG system, but we'll see..."
1992 fi
1993 echo exit 0 >usg
1994 fi
1995elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
1996 echo "Looks kind of like a BSD system, but we'll see..."
ecfc5424 1997 d_bsd="$define"
2304df62
AD
1998 echo exit 0 >bsd
1999else
2000 echo "Looks kind of like a Version 7 system, but we'll see..."
2001 echo exit 0 >v7
2002fi
2003case "$eunicefix" in
2004*unixtovms*)
2005 $cat <<'EOI'
2006There is, however, a strange, musty smell in the air that reminds me of
2007something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2008EOI
2009 echo exit 0 >eunice
2010 d_eunice="$define"
2011: it so happens the Eunice I know will not run shell scripts in Unix format
2012 ;;
2013*)
2014 echo " "
2015 echo "Congratulations. You aren't running Eunice."
2016 d_eunice="$undef"
2017 ;;
2018esac
2019if test -f /xenix; then
2020 echo "Actually, this looks more like a XENIX system..."
2021 echo exit 0 >xenix
2022 d_xenix="$define"
2023else
2024 echo " "
2025 echo "It's not Xenix..."
2026 d_xenix="$undef"
2027fi
2028chmod +x xenix
2029$eunicefix xenix
2030if test -f /venix; then
2031 echo "Actually, this looks more like a VENIX system..."
2032 echo exit 0 >venix
2033else
2034 echo " "
ecfc5424 2035 if ./xenix; then
2304df62
AD
2036 : null
2037 else
2038 echo "Nor is it Venix..."
2039 fi
2040fi
2041chmod +x bsd usg v7 osf1 eunice xenix venix
2042$eunicefix bsd usg v7 osf1 eunice xenix venix
2043$rm -f foo
2044
2045: see if we need a special compiler
2046echo " "
ecfc5424 2047if ./usg; then
2304df62
AD
2048 case "$cc" in
2049 '') case "$Mcc" in
2050 /*) dflt='Mcc';;
2051 *) case "$large" in
2052 -M*) dflt='cc';;
2053 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
2054 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
2055 dflt='cc'
2056 else
2057 dflt='cc -M'
2058 fi
2059 else
2060 dflt='cc'
2061 fi;;
2062 esac;;
2063 esac;;
2064 *) dflt="$cc";;
2065 esac
2066 $cat <<'EOM'
2067On some systems the default C compiler will not resolve multiple global
2068references that happen to have the same name. On some such systems the "Mcc"
2069command may be used to force these to be resolved. On other systems a "cc -M"
2070command is required. (Note that the -M flag on other systems indicates a
2071memory model to use!) If you have the Gnu C compiler, you might wish to use
2072that instead.
2073
2074EOM
2075 rp="What command will force resolution on this system?"
2076 . ./myread
2077 cc="$ans"
2078else
2079 case "$cc" in
2080 '') dflt=cc;;
2081 *) dflt="$cc";;
2082 esac
2083 rp="Use which C compiler?"
2084 . ./myread
2085 cc="$ans"
2086fi
ecfc5424
AD
2087echo " "
2088echo "Checking for GNU cc in disguise and/or its version number..." >&4
2304df62
AD
2089$cat >gccvers.c <<EOM
2090#include <stdio.h>
a0d0e21e 2091int main() {
2304df62 2092#ifdef __GNUC__
a0d0e21e 2093#ifdef __VERSION__
ecfc5424 2094 printf("%s\n", __VERSION__);
2304df62 2095#else
ecfc5424 2096 printf("%s\n", "1");
2304df62 2097#endif
a0d0e21e 2098#endif
ecfc5424 2099 exit(0);
2304df62
AD
2100}
2101EOM
a0d0e21e
LW
2102if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
2103 gccversion=`./gccvers`
2104 case "$gccversion" in
2105 '') echo "You are not using GNU cc." ;;
2106 *) echo "You are using GNU cc $gccversion." ;;
2107 esac
2108else
ecfc5424 2109 echo "I can't compile the test program -- Assuming it isn't GNU cc."
a0d0e21e
LW
2110fi
2111$rm -f gccvers*
2112case "$gccversion" in
21131*) cpp=`./loc gcc-cpp $cpp $pth` ;;
2304df62 2114esac
a0d0e21e 2115
2304df62
AD
2116: decide how portable to be
2117case "$d_portable" in
2118"$define") dflt=y;;
2119*) dflt=n;;
2120esac
2121$cat <<'EOH'
2122
2123I can set things up so that your shell scripts and binaries are more portable,
2124at what may be a noticable cost in performance. In particular, if you
2125ask to be portable, the following happens:
2126
2127 1) Shell scripts will rely on the PATH variable rather than using
2128 the paths derived above.
2129 2) ~username interpretations will be done at run time rather than
2130 by Configure.
2131
2132EOH
2133rp="Do you expect to run these scripts and binaries on multiple machines?"
2134. ./myread
2135case "$ans" in
2136 y*) d_portable="$define"
2304df62
AD
2137 ;;
2138 *) d_portable="$undef" ;;
2139esac
2140
2141: set up shell script to do ~ expansion
2142cat >filexp <<EOSS
2143$startsh
2144: expand filename
2145case "\$1" in
2146 ~/*|~)
2147 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2148 ;;
2149 ~*)
2150 if $test -f /bin/csh; then
2151 /bin/csh -f -c "glob \$1"
a0d0e21e 2152 failed=\$?
2304df62
AD
2153 echo ""
2154 exit \$failed
2155 else
2156 name=\`$expr x\$1 : '..\([^/]*\)'\`
2157 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2158 if $test ! -d "\$dir"; then
2159 me=\`basename \$0\`
2160 echo "\$me: can't locate home directory for: \$name" >&2
2161 exit 1
2162 fi
2163 case "\$1" in
2164 */*)
2165 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2166 ;;
2167 *)
2168 echo \$dir
2169 ;;
2170 esac
2171 fi
2172 ;;
2173*)
2174 echo \$1
2175 ;;
2176esac
2177EOSS
2178chmod +x filexp
2179$eunicefix filexp
2180
2181: now set up to get a file name
2182cat <<'EOSC' >getfile
2183tilde=''
2184fullpath=''
2185already=''
2186skip=''
2187none_ok=''
2188exp_file=''
a0d0e21e 2189nopath_ok=''
2304df62
AD
2190orig_rp="$rp"
2191orig_dflt="$dflt"
2192
2193case "$fn" in
ecfc5424
AD
2194*\(*)
2195 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2196 fn=`echo $fn | sed 's/(.*)//'`
2197 ;;
2198esac
2199
2200case "$fn" in
a0d0e21e
LW
2201*:*)
2202 loc_file=`expr $fn : '.*:\(.*\)'`
2203 fn=`expr $fn : '\(.*\):.*'`
2204 ;;
2205esac
2206
2207case "$fn" in
2304df62
AD
2208*~*) tilde=true;;
2209esac
2210case "$fn" in
2211*/*) fullpath=true;;
2212esac
2213case "$fn" in
2214*+*) skip=true;;
2215esac
2216case "$fn" in
2217*n*) none_ok=true;;
2218esac
2219case "$fn" in
2220*e*) exp_file=true;;
2221esac
a0d0e21e
LW
2222case "$fn" in
2223*p*) nopath_ok=true;;
2224esac
2304df62
AD
2225
2226case "$fn" in
2227*f*) type='File';;
2228*d*) type='Directory';;
a0d0e21e 2229*l*) type='Locate';;
2304df62
AD
2230esac
2231
2232what="$type"
2233case "$what" in
2234Locate) what='File';;
2235esac
2236
2237case "$exp_file" in
2238'')
2239 case "$d_portable" in
2240 "$define") ;;
2241 *) exp_file=true;;
2242 esac
2243 ;;
2244esac
2245
2246cd ..
2247while test "$type"; do
2248 redo=''
2249 rp="$orig_rp"
2250 dflt="$orig_dflt"
2251 case "$tilde" in
2252 true) rp="$rp (~name ok)";;
2253 esac
2254 . UU/myread
ecfc5424
AD
2255 if test -f UU/getfile.ok && \
2256 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2257 then
2258 value="$ans"
2259 ansexp="$ans"
2260 break
2261 fi
2304df62
AD
2262 case "$ans" in
2263 none)
2264 value=''
2265 ansexp=''
2266 case "$none_ok" in
2267 true) type='';;
2268 esac
2269 ;;
2270 *)
2271 case "$tilde" in
2272 '') value="$ans"
2273 ansexp="$ans";;
2274 *)
2275 value=`UU/filexp $ans`
2276 case $? in
2277 0)
2278 if test "$ans" != "$value"; then
ecfc5424 2279 echo "(That expands to $value on this system.)"
2304df62
AD
2280 fi
2281 ;;
2282 *) value="$ans";;
2283 esac
2284 ansexp="$value"
2285 case "$exp_file" in
2286 '') value="$ans";;
2287 esac
2288 ;;
2289 esac
2290 case "$fullpath" in
2291 true)
2292 case "$ansexp" in
2293 /*) value="$ansexp" ;;
2294 *)
2295 redo=true
2296 case "$already" in
2297 true)
2298 echo "I shall only accept a full path name, as in /bin/ls." >&4
2299 echo "Use a ! shell escape if you wish to check pathnames." >&4
2300 ;;
2301 *)
2302 echo "Please give a full path name, starting with slash." >&4
2303 case "$tilde" in
2304 true)
2305 echo "Note that using ~name is ok provided it expands well." >&4
2306 already=true
2307 ;;
2308 esac
2309 esac
2310 ;;
2311 esac
2312 ;;
2313 esac
2314 case "$redo" in
2315 '')
2316 case "$type" in
2317 File)
2318 if test -f "$ansexp"; then
2319 type=''
2320 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2321 then
2322 echo "($value is not a plain file, but that's ok.)"
2323 type=''
2324 fi
2325 ;;
2326 Directory)
2327 if test -d "$ansexp"; then
2328 type=''
2329 fi
2330 ;;
2331 Locate)
40000a8c 2332 if test -d "$ansexp"; then
a0d0e21e
LW
2333 echo "(Looking for $loc_file in directory $value.)"
2334 value="$value/$loc_file"
40000a8c 2335 ansexp="$ansexp/$loc_file"
2304df62 2336 fi
40000a8c 2337 if test -f "$ansexp"; then
2304df62
AD
2338 type=''
2339 fi
a0d0e21e
LW
2340 case "$nopath_ok" in
2341 true) case "$value" in
2342 */*) ;;
2343 *) echo "Assuming $value will be in people's path."
2344 type=''
2345 ;;
2346 esac
2347 ;;
2348 esac
2304df62
AD
2349 ;;
2350 esac
2351
2352 case "$skip" in
2353 true) type='';
2354 esac
2355
2356 case "$type" in
2357 '') ;;
2358 *)
2359 if test "$fastread" = yes; then
2360 dflt=y
2361 else
2362 dflt=n
2363 fi
2364 rp="$what $value doesn't exist. Use that name anyway?"
2365 . UU/myread
2366 dflt=''
2367 case "$ans" in
2368 y*) type='';;
2369 *) echo " ";;
2370 esac
2371 ;;
2372 esac
2373 ;;
2374 esac
2375 ;;
2376 esac
2377done
2378cd UU
2379ans="$value"
2380rp="$orig_rp"
2381dflt="$orig_dflt"
ecfc5424 2382rm -f getfile.ok
2304df62
AD
2383EOSC
2384
2385: What should the include directory be ?
2386echo " "
2387$echo $n "Hmm... $c"
a0d0e21e 2388dflt='/usr/include'
2304df62
AD
2389incpath=''
2390mips_type=''
2391if $test -f /bin/mips && /bin/mips; then
2392 echo "Looks like a MIPS system..."
2393 $cat >usr.c <<'EOCP'
2394#ifdef SYSTYPE_BSD43
2395/bsd43
2396#endif
2397EOCP
2398 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
2399 dflt='/bsd43/usr/include'
2400 incpath='/bsd43'
2401 mips_type='BSD 4.3'
2402 else
2403 mips_type='System V'
2404 fi
2405 $rm -f usr.c usr.out
2406 echo "and you're compiling with the $mips_type compiler and libraries."
40000a8c 2407 echo "exit 0" >mips
2304df62
AD
2408else
2409 echo "Doesn't look like a MIPS system."
2410 echo "exit 1" >mips
2304df62 2411fi
40000a8c
AD
2412chmod +x mips
2413$eunicefix mips
2304df62 2414echo " "
a0d0e21e
LW
2415case "$usrinc" in
2416'') ;;
2417*) dflt="$usrinc";;
2418esac
2304df62
AD
2419fn=d/
2420rp='Where are the include files you want to use?'
2421. ./getfile
2422usrinc="$ans"
2423
a0d0e21e
LW
2424: see how we invoke the C preprocessor
2425echo " "
2426echo "Now, how can we feed standard input to your C preprocessor..." >&4
2427cat <<'EOT' >testcpp.c
2428#define ABC abc
2429#define XYZ xyz
2430ABC.XYZ
2431EOT
2432cd ..
2433echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
2434chmod 755 cppstdin
2435wrapper=`pwd`/cppstdin
2436ok='false'
2437cd UU
2304df62 2438
a0d0e21e
LW
2439if $test "X$cppstdin" != "X" && \
2440 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
2441 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2442then
2443 echo "You used to use $cppstdin $cppminus so we'll use that again."
2444 case "$cpprun" in
2445 '') echo "But let's see if we can live without a wrapper..." ;;
2446 *)
2447 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
2448 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2304df62 2449 then
a0d0e21e
LW
2450 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
2451 ok='true'
2452 else
2453 echo "(However, $cpprun $cpplast does not work, let's see...)"
2304df62
AD
2454 fi
2455 ;;
2456 esac
2304df62 2457else
a0d0e21e
LW
2458 case "$cppstdin" in
2459 '') ;;
2460 *)
2461 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
2462 ;;
2463 esac
2304df62 2464fi
2304df62 2465
a0d0e21e
LW
2466if $ok; then
2467 : nothing
2468elif echo 'Maybe "'"$cc"' -E" will work...'; \
2469 $cc -E <testcpp.c >testcpp.out 2>&1; \
2470 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2471 echo "Yup, it does."
2472 x_cpp="$cc -E"
2473 x_minus='';
2474elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
2475 $cc -E - <testcpp.c >testcpp.out 2>&1; \
2476 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2477 echo "Yup, it does."
2478 x_cpp="$cc -E"
2479 x_minus='-';
2480elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
2481 $cc -P <testcpp.c >testcpp.out 2>&1; \
2482 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2483 echo "Yipee, that works!"
2484 x_cpp="$cc -P"
2485 x_minus='';
2486elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
2487 $cc -P - <testcpp.c >testcpp.out 2>&1; \
2488 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2489 echo "At long last!"
2490 x_cpp="$cc -P"
2491 x_minus='-';
2492elif echo 'No such luck, maybe "'$cpp'" will work...'; \
2493 $cpp <testcpp.c >testcpp.out 2>&1; \
2494 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2495 echo "It works!"
2496 x_cpp="$cpp"
2497 x_minus='';
2498elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
2499 $cpp - <testcpp.c >testcpp.out 2>&1; \
2500 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2501 echo "Hooray, it works! I was beginning to wonder."
2502 x_cpp="$cpp"
2503 x_minus='-';
2504elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
2505 $wrapper <testcpp.c >testcpp.out 2>&1; \
2506 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2507 x_cpp="$wrapper"
2508 x_minus=''
2509 echo "Eureka!"
2510else
2511 dflt=''
2512 rp="No dice. I can't find a C preprocessor. Name one:"
2513 . ./myread
2514 x_cpp="$ans"
2515 x_minus=''
2516 $x_cpp <testcpp.c >testcpp.out 2>&1
2517 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
2518 echo "OK, that will do." >&4
2519 else
2520echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
2521 exit 1
2522 fi
2523fi
2524
2525case "$ok" in
2526false)
2527 cppstdin="$x_cpp"
2528 cppminus="$x_minus"
2529 cpprun="$x_cpp"
2530 cpplast="$x_minus"
2531 set X $x_cpp
2532 shift
2533 case "$1" in
2534 "$cpp")
2535 echo "Perhaps can we force $cc -E using a wrapper..."
2536 if $wrapper <testcpp.c >testcpp.out 2>&1; \
2537 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
2538 then
2539 echo "Yup, we can."
2540 cppstdin="$wrapper"
2541 cppminus='';
2542 else
2543 echo "Nope, we'll have to live without it..."
2544 fi
2545 ;;
2546 esac
2547 case "$cpprun" in
2548 "$wrapper")
2549 cpprun=''
2550 cpplast=''
2551 ;;
2552 esac
2553 ;;
2554esac
2555
2556case "$cppstdin" in
2557"$wrapper") ;;
2558*) $rm -f $wrapper;;
2559esac
2560$rm -f testcpp.c testcpp.out
2561
2562: determine optimize, if desired, or use for debug flag also
2563case "$optimize" in
2564' ') dflt='none';;
2565'') dflt='-O';;
2566*) dflt="$optimize";;
2567esac
2568$cat <<EOH
2569
2570Some C compilers have problems with their optimizers, by default, $package
2571compiles with the -O flag to use the optimizer. Alternately, you might want
2572to use the symbolic debugger, which uses the -g flag (on traditional Unix
2573systems). Either flag can be specified here. To use neither flag, specify
2574the word "none".
2575
2576EOH
2577rp="What optimizer/debugger flag should be used?"
2578. ./myread
2579optimize="$ans"
2580case "$optimize" in
2581'none') optimize=" ";;
2582esac
2583
2584dflt=''
2585case "$ccflags" in
2586'')
2587 case "$gccversion" in
2588 1*) dflt='-fpcc-struct-return' ;;
2589 esac
2590 case "$optimize" in
2591 *-g*) dflt="$dflt -DDEBUGGING";;
2592 esac
2593 case "$gccversion" in
2594 2*) if test -d /etc/conf/kconfig.d &&
2595 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
2596 then
2597 dflt="$dflt -posix"
2598 fi
2599 ;;
2600 esac
2601 ;;
2602esac
2603
2604case "$mips_type" in
2605*BSD*) ;;
2606'') ;;
2607*) inclwanted="$inclwanted $usrinc/bsd";;
2608esac
2609for thisincl in $inclwanted; do
2610 if $test -d $thisincl; then
2611 if $test x$thisincl != x$usrinc; then
2612 case "$dflt" in
2613 *$thisincl*);;
2614 *) dflt="$dflt -I$thisincl";;
2615 esac
2616 fi
2617 fi
2618done
2619
2620inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
2621 xxx=true;
2622elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
2623 xxx=true;
2624else
2625 xxx=false;
2626fi;
2627if $xxx; then
2628 case "$dflt" in
2629 *$2*);;
2630 *) dflt="$dflt -D$2";;
2631 esac;
2632fi'
2633
2634if ./osf1; then
2635 set signal.h __LANGUAGE_C__; eval $inctest
2636else
2637 set signal.h LANGUAGE_C; eval $inctest
2638fi
2639set signal.h NO_PROTOTYPE; eval $inctest
2640set signal.h _NO_PROTO; eval $inctest
2641
2642case "$dflt" in
2643'') dflt=none;;
2304df62 2644esac
85e6fe83
LW
2645case "$ccflags" in
2646'') ;;
2647*) dflt="$ccflags";;
2648esac
2304df62
AD
2649$cat <<EOH
2650
2651Your C compiler may want other flags. For this question you should include
2652-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
2653but you should NOT include libraries or ld flags like -lwhatever. If you
2654want $package to honor its debug switch, you should include -DDEBUGGING here.
a0d0e21e
LW
2655Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
2656-DHIDEMYMALLOC or -DCRIPPLED_CC.
2657
2304df62
AD
2658To use no flags, specify the word "none".
2659
2304df62
AD
2660EOH
2661set X $dflt
2662shift
2663dflt=${1+"$@"}
2664rp="Any additional cc flags?"
2665. ./myread
2666case "$ans" in
2667none) ccflags='';;
2668*) ccflags="$ans";;
2669esac
2670
2671: the following weeds options from ccflags that are of no interest to cpp
2672cppflags="$ccflags"
a0d0e21e
LW
2673case "$gccversion" in
26741*) cppflags="$cppflags -D__GNUC__"
2304df62
AD
2675esac
2676case "$mips_type" in
2677'');;
2678*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
2679esac
2680case "$cppflags" in
2681'');;
a0d0e21e
LW
2682*)
2683 echo " "
2684 echo "Let me guess what the preprocessor flags are..." >&4
2685 set X $cppflags
2686 shift
2304df62 2687 cppflags=''
a0d0e21e
LW
2688 $cat >cpp.c <<'EOM'
2689#define BLURFL foo
2690
2691BLURFL xx LFRULB
2692EOM
2693 previous=''
2694 for flag in $*
2304df62 2695 do
a0d0e21e
LW
2696 case "$flag" in
2697 -*) ftry="$flag";;
2698 *) ftry="$previous $flag";;
2304df62 2699 esac
a0d0e21e
LW
2700 if $cppstdin -DLFRULB=bar $ftry $cppminus <cpp.c \
2701 >cpp1.out 2>/dev/null && \
2702 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
2703 >cpp2.out 2>/dev/null && \
2704 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
2705 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
2706 then
2707 cppflags="$cppflags $ftry"
2708 previous=''
2709 else
2710 previous="$flag"
2711 fi
2304df62 2712 done
a0d0e21e
LW
2713 set X $cppflags
2714 shift
2715 cppflags=${1+"$@"}
2304df62 2716 case "$cppflags" in
a0d0e21e 2717 *-*) echo "They appear to be: $cppflags";;
2304df62 2718 esac
a0d0e21e 2719 $rm -f cpp.c cpp?.out
2304df62
AD
2720 ;;
2721esac
2722
2723: flags used in final linking phase
2724case "$ldflags" in
ecfc5424 2725'') if ./venix; then
2304df62
AD
2726 dflt='-i -z'
2727 else
a0d0e21e 2728 dflt=''
2304df62 2729 fi
a0d0e21e
LW
2730 case "$ccflags" in
2731 *-posix*) dflt="$dflt -posix" ;;
2732 esac
2733 case "$dflt" in
2734 '') dflt='none' ;;
2735 esac
2304df62
AD
2736 ;;
2737*) dflt="$ldflags";;
2738esac
2739echo " "
2740rp="Any additional ld flags (NOT including libraries)?"
2741. ./myread
2742case "$ans" in
2743none) ldflags='';;
2744*) ldflags="$ans";;
2745esac
2746rmlist="$rmlist pdp11"
2747
2304df62
AD
2748: Set private lib path
2749case "$plibpth" in
ecfc5424 2750'') if ./mips; then
2304df62
AD
2751 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
2752 fi;;
2753esac
a0d0e21e
LW
2754case "$libpth" in
2755' ') dlist='';;
2756'') dlist="$plibpth $glibpth";;
2757*) dlist="$libpth";;
2758esac
2759
2760: Now check and see which directories actually exist, avoiding duplicates
2761libpth=''
2762for xxx in $dlist
2304df62 2763do
a0d0e21e
LW
2764 if $test -d $xxx; then
2765 case " $libpth " in
2766 *" $xxx "*) ;;
2767 *) libpth="$libpth $xxx";;
2768 esac
2304df62
AD
2769 fi
2770done
a0d0e21e 2771$cat <<'EOM'
2304df62 2772
a0d0e21e
LW
2773Some systems have incompatible or broken versions of libraries. Among
2774the directories listed in the question below, please remove any you
2775know not to be holding relevant libraries, and add any that are needed.
2776Say "none" for none.
2777
2778EOM
2779case "$libpth" in
2780'') dflt='none';;
2781*)
2782 set X $libpth
2783 shift
2784 dflt=${1+"$@"}
2785 ;;
2786esac
2304df62
AD
2787rp="Directories to use for library searches?"
2788. ./myread
2789case "$ans" in
2790none) libpth=' ';;
2791*) libpth="$ans";;
2792esac
a0d0e21e
LW
2793
2794: compute shared library extension
2795case "$so" in
2796'')
2797 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
2798 dflt='sl'
2799 else
2800 dflt='so'
2801 fi
2802 ;;
2803*) dflt="$so";;
2804esac
ecfc5424 2805$cat <<EOM
a0d0e21e
LW
2806
2807On some systems, shared libraries may be available. Answer 'none' if
ecfc5424
AD
2808you want to suppress searching of shared libraries for the remaining
2809of this configuration.
2810
a0d0e21e
LW
2811EOM
2812rp='What is the file extension used for shared libraries?'
2813. ./myread
2814so="$ans"
2815
2304df62
AD
2816: Looking for optional libraries
2817echo " "
2818echo "Checking for optional libraries..." >&4
2819case "$libs" in
2820' '|'') dflt='';;
2821*) dflt="$libs";;
2822esac
2823case "$libswanted" in
2824'') libswanted='c_s';;
2825esac
2826for thislib in $libswanted; do
a0d0e21e
LW
2827
2828 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
2829 echo "Found -l$thislib (shared)."
2830 case " $dflt " in
2831 *"-l$thislib "*);;
2832 *) dflt="$dflt -l$thislib";;
2833 esac
2834 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
2835 echo "Found -l$thislib (shared)."
2836 case " $dflt " in
2837 *"-l$thislib "*);;
2838 *) dflt="$dflt -l$thislib";;
2839 esac
2840 elif xxx=`./loc lib$thislib.a X $libpth`; $test -f "$xxx"; then
2304df62 2841 echo "Found -l$thislib."
a0d0e21e
LW
2842 case " $dflt " in
2843 *"-l$thislib "*);;
2304df62
AD
2844 *) dflt="$dflt -l$thislib";;
2845 esac
a0d0e21e
LW
2846 elif xxx=`./loc lib${thislib}_s.a X $libpth`; $test -f "$xxx"; then
2847 echo "Found -l${thislib}_s."
2848 case " $dflt " in
2849 *"-l$thislib "*);;
2850 *) dflt="$dflt -l${thislib}_s";;
2304df62 2851 esac
a0d0e21e
LW
2852 elif xxx=`./loc Slib$thislib.a X $xlibpth`; $test -f "$xxx"; then
2853 echo "Found -l$thislib."
2854 case " $dflt " in
2855 *"-l$thislib "*);;
2304df62
AD
2856 *) dflt="$dflt -l$thislib";;
2857 esac
2858 else
a0d0e21e 2859 echo "No -l$thislib."
2304df62
AD
2860 fi
2861done
2862set X $dflt
2863shift
2864dflt="$*"
2865case "$libs" in
2866'') dflt="$dflt";;
2867*) dflt="$libs";;
2868esac
2869case "$dflt" in
2870' '|'') dflt='none';;
2871esac
2872
2873$cat <<EOM
2874
2875Some versions of Unix support shared libraries, which make executables smaller
2876but make load time slightly longer.
2877
2878On some systems, mostly newer Unix System V's, the shared library is included
2879by putting the option "-lc_s" as the last thing on the cc command line when
2880linking. Other systems use shared libraries by default. There may be other
2881libraries needed to compile $package on your machine as well. If your system
2882needs the "-lc_s" option, include it here. Include any other special libraries
2883here as well. Say "none" for none.
2884EOM
2885
2886echo " "
2887rp="Any additional libraries?"
2888. ./myread
2889case "$ans" in
2890none) libs=' ';;
2891*) libs="$ans";;
2892esac
2893
2894: see if nm is to be used to determine whether a symbol is defined or not
2895case "$usenm" in
2896'')
2897 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
2898 if $test $dflt -gt 20; then
2899 dflt=y
2900 else
2901 dflt=n
2902 fi
2903 ;;
2904*)
2905 case "$usenm" in
2906 true) dflt=y;;
2907 *) dflt=n;;
2908 esac
2909 ;;
2910esac
2911$cat <<EOM
2912
2913I can use 'nm' to extract the symbols from your C libraries. This is a time
2914consuming task which may generate huge output on the disk (up to 3 megabytes)
2915but that should make the symbols extraction faster. The alternative is to skip
2916the 'nm' extraction part and to compile a small test program instead to
2917determine whether each symbol is present. If you have a fast C compiler and/or
2918if your 'nm' output cannot be parsed, this may be the best solution.
2919
2920EOM
2921rp='Shall I use nm to extract C symbols from the libraries?'
2922. ./myread
2923case "$ans" in
2924n|N) usenm=false;;
2925*) usenm=true;;
2926esac
2927
2928runnm=$usenm
2929case "$reuseval" in
2930true) runnm=false;;
2931esac
2932
2933: nm options which may be necessary
2934case "$nm_opt" in
2935'') if $test -f /mach_boot; then
2936 nm_opt=''
2937 elif $test -d /usr/ccs/lib; then
2938 nm_opt='-p'
2939 elif $test -f /dgux; then
2940 nm_opt='-p'
2941 else
2942 nm_opt=''
2943 fi;;
2944esac
2945
2946case "$runnm" in
2947true)
2948: get list of predefined functions in a handy place
2949echo " "
2950case "$libc" in
2951'') libc=unknown
2952 case "$libs" in
2953 *-lc_s*) libc=`./loc libc_s.a $libc $libpth`
2954 esac
2955 ;;
2956esac
2304df62
AD
2957libnames='';
2958case "$libs" in
2959'') ;;
2960*) for thislib in $libs; do
2961 case "$thislib" in
a0d0e21e
LW
2962 -lc|-lc_s)
2963 : Handle C library specially below.
2964 ;;
2304df62 2965 -l*)
ecfc5424 2966 thislib=`echo $thislib | $sed -e 's/^-l//'`
a0d0e21e
LW
2967 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
2968 :
2969 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
2970 :
2971 elif try=`./loc lib$thislib.a X $libpth`; $test -f "$try"; then
2972 :
2973 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
2974 :
2975 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
2976 :
2977 elif try=`./loc Slib$thislib.a X $xlibpth`; $test -f "$try"; then
2978 :
2979 else
2980 try=''
2304df62
AD
2981 fi
2982 libnames="$libnames $try"
2983 ;;
2984 *) libnames="$libnames $thislib" ;;
2985 esac
2986 done
2987 ;;
2988esac
2989xxx=normal
2990case "$libc" in
2991unknown)
a0d0e21e
LW
2992 set /usr/ccs/lib/libc.$so
2993 $test -r $1 || set /usr/lib/libc.$so
2994 $test -r $1 || set /usr/shlib/libc.$so
2995 $test -r $1 || set /usr/lib/libc.$so.[0-9]*
2996 $test -r $1 || set /lib/libc.$so
2304df62
AD
2997 $test -r $1 || set /lib/libsys_s.a
2998 eval set \$$#
2999 ;;
3000*)
3001 set blurfl
3002 ;;
3003esac
3004if $test -r "$1"; then
3005 echo "Your (shared) C library seems to be in $1."
3006 libc="$1"
3007elif $test -r /lib/libc && $test -r /lib/clib; then
3008 echo "Your C library seems to be in both /lib/clib and /lib/libc."
3009 xxx=apollo
3010 libc='/lib/clib /lib/libc'
3011 if $test -r /lib/syslib; then
3012 echo "(Your math library is in /lib/syslib.)"
3013 libc="$libc /lib/syslib"
3014 fi
3015elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3016 echo "Your C library seems to be in $libc, as you said before."
3017elif $test -r $incpath/usr/lib/libc.a; then
3018 libc=$incpath/usr/lib/libc.a;
3019 echo "Your C library seems to be in $libc. That's fine."
3020elif $test -r /lib/libc.a; then
3021 libc=/lib/libc.a;
3022 echo "Your C library seems to be in $libc. You're normal."
3023else
3024 if tans=`./loc libc.a blurfl/dyick $libpth`; $test -r "$tans"; then
3025 :
3026 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
3027 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
3028 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
3029 :
3030 elif tans=`./loc Slibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3031 :
3032 elif tans=`./loc Mlibc.a blurfl/dyick $xlibpth`; $test -r "$tans"; then
3033 :
3034 else
3035 tans=`./loc Llibc.a blurfl/dyick $xlibpth`
3036 fi
3037 if $test -r "$tans"; then
3038 echo "Your C library seems to be in $tans, of all places."
3039 libc=$tans
3040 else
3041 libc='blurfl'
3042 fi
3043fi
3044if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
3045 dflt="$libc"
3046 cat <<EOM
3047
3048If the guess above is wrong (which it might be if you're using a strange
3049compiler, or your machine supports multiple models), you can override it here.
3050
3051EOM
3052else
3053 dflt=''
3054 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
3055 cat >&4 <<EOM
3056I can't seem to find your C library. I've looked in the following places:
3057
3058EOM
3059 $sed 's/^/ /' libpath
3060 cat <<EOM
3061
3062None of these seems to contain your C library. I need to get its name...
3063
3064EOM
3065fi
3066fn=f
3067rp='Where is your C library?'
3068. ./getfile
3069libc="$ans"
3070
3071echo " "
3072echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
3073set X `cat libnames`
3074shift
3075xxx=files
3076case $# in 1) xxx=file; esac
3077echo "Extracting names from the following $xxx for later perusal:" >&4
3078echo " "
3079$sed 's/^/ /' libnames >&4
3080echo " "
3081$echo $n "This may take a while...$c" >&4
ecfc5424 3082
2304df62
AD
3083nm $nm_opt $* 2>/dev/null >libc.tmp
3084$echo $n ".$c"
3085$grep fprintf libc.tmp > libc.ptf
3086xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
3087xrun='eval "<libc.tmp $com >libc.list"; echo "done" >&4'
232e078e 3088if com="$sed -n -e 's/__IO//' -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
2304df62
AD
3089 eval $xscan;\
3090 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3091 eval $xrun
3092elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
3093 eval $xscan;\
3094 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3095 eval $xrun
3096elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
3097 eval $xscan;\
3098 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3099 eval $xrun
3100elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
3101 eval $xscan;\
3102 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3103 eval $xrun
3104elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
3105 eval $xscan;\
3106 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3107 eval $xrun
3108elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
3109 eval $xscan;\
3110 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3111 eval $xrun
3112elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
3113 -e '/ file/d' -e 's/^\([^ ]*\).*/\1/p'";\
3114 eval $xscan;\
3115 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3116 eval $xrun
3117elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
3118 eval $xscan;\
3119 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3120 eval $xrun
3121elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
3122 eval $xscan;\
3123 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3124 eval $xrun
a0d0e21e
LW
3125elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
3126 eval $xscan;\
3127 $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3128 eval $xrun
2304df62
AD
3129else
3130 nm -p $* 2>/dev/null >libc.tmp
232e078e 3131 com="$sed -n -e 's/^.* [ADTSIW] *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
2304df62
AD
3132 eval "<libc.tmp $com >libc.list"
3133 if $contains '^fprintf$' libc.list >/dev/null 2>&1; then
3134 nm_opt='-p'
3135 echo "done" >&4
3136 else
3137 echo " "
3138 echo "nm didn't seem to work right. Trying ar instead..." >&4
3139 com=''
3140 if ar t $libc > libc.tmp; then
3141 for thisname in $libnames; do
3142 ar t $thisname >>libc.tmp
3143 done
3144 $sed -e 's/\.o$//' < libc.tmp > libc.list
3145 echo "Ok." >&4
3146 else
3147 echo "ar didn't seem to work right." >&4
3148 echo "Maybe this is a Cray...trying bld instead..." >&4
3149 if bld t $libc | $sed -e 's/.*\///' -e 's/\.o:.*$//' > libc.list; then
3150 for thisname in $libnames; do
3151 bld t $libnames | \
3152 $sed -e 's/.*\///' -e 's/\.o:.*$//' >>libc.list
3153 ar t $thisname >>libc.tmp
3154 done
3155 echo "Ok." >&4
3156 else
3157 echo "That didn't work either. Giving up." >&4
3158 exit 1
3159 fi
3160 fi
3161 fi
3162fi
3163nm_extract="$com"
3164if $test -f /lib/syscalls.exp; then
3165 echo " "
3166 echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
3167 $sed -n 's/^\([^ ]*\)[ ]*syscall$/\1/p' /lib/syscalls.exp >>libc.list
3168fi
3169;;
3170esac
3171$rm -f libnames libpath
3172
3173: is a C symbol defined?
3174csym='tlook=$1;
3175case "$3" in
3176-v) tf=libc.tmp; tc=""; tdc="";;
3177-a) tf=libc.tmp; tc="[0]"; tdc=[];;
3178*) tlook="^$1\$"; tf=libc.list; tc="()"; tdc="()";;
3179esac;
3180tx=yes;
3181case "$reuseval-$4" in
3182true-) ;;
3183true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
3184esac;
3185case "$tx" in
3186yes)
3187 case "$runnm" in
3188 true)
3189 if $contains $tlook $tf >/dev/null 2>&1;
3190 then tval=true;
3191 else tval=false;
3192 fi;;
3193 *)
3194 echo "main() { extern int $1$tdc; printf(\"%d\", $1$tc); }" > t.c;
3195 if $cc $ccflags -o t t.c $ldflags $libs >/dev/null 2>&1;
3196 then tval=true;
3197 else tval=false;
3198 fi;
3199 $rm -f t t.c;;
3200 esac;;
3201*)
3202 case "$tval" in
3203 $define) tval=true;;
3204 *) tval=false;;
3205 esac;;
3206esac;
3207eval "$2=$tval"'
3208
3209: set up the script used to warn in case of inconsistency
3210cat <<'EOSC' >whoa
3211dflt=y
3212echo " "
3213echo "*** WHOA THERE!!! ***" >&4
3214echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
3215rp=" Keep the $hint value?"
3216. ./myread
3217case "$ans" in
3218y) td=$was; tu=$was;;
3219esac
3220EOSC
3221
3222: define an is-in-libc? function
3223inlibc='echo " "; td=$define; tu=$undef;
3224sym=$1; var=$2; eval "was=\$$2";
3225tx=yes;
3226case "$reuseval$was" in
3227true) ;;
3228true*) tx=no;;
3229esac;
3230case "$tx" in
3231yes)
3232 set $sym tres -f;
3233 eval $csym;
3234 case "$tres" in
3235 true)
3236 echo "$sym() found." >&4;
ecfc5424 3237 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
2304df62
AD
3238 *)
3239 echo "$sym() NOT found." >&4;
ecfc5424 3240 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
2304df62
AD
3241 esac;;
3242*)
3243 case "$was" in
3244 $define) echo "$sym() found." >&4;;
3245 *) echo "$sym() NOT found." >&4;;
3246 esac;;
3247esac'
3248
a0d0e21e
LW
3249: see if gconvert exists
3250set gconvert d_gconvert
3251eval $inlibc
2304df62 3252
a0d0e21e
LW
3253case "$d_gconvert" in
3254$define)
ecfc5424 3255 echo "We'll use it to convert floats into a string then." >&4
a0d0e21e
LW
3256 d_Gconvert="gconvert((x),(n),(t),(b))"
3257 ;;
3258*)
3259 : Maybe we can emulate it with gcvt.
3260 set gcvt d_gcvt
3261 eval $inlibc
2304df62 3262
a0d0e21e
LW
3263 case "$d_gcvt" in
3264 $define)
3265 : Test whether gcvt drops a trailing decimal point
ecfc5424 3266 $cat >try.c <<'EOP'
a0d0e21e 3267main() {
ecfc5424
AD
3268 char buf[64];
3269 gcvt(1.0, 8, buf);
3270 if (buf[0] != '1' || buf[1] != '\0')
3271 exit(1);
3272 gcvt(0.0, 8, buf);
3273 if (buf[0] != '0' || buf[1] != '\0')
3274 exit(1);
3275 gcvt(-1.0, 8, buf);
3276 if (buf[0] != '-' || buf[1] != '1' || buf[2] != '\0')
3277 exit(1);
3278 exit(0);
a0d0e21e
LW
3279}
3280EOP
3281 if $cc $ccflags $ldflags -o try try.c $libs > /dev/null 2>&1; then
3282 if ./try; then
3283 echo "Good, your gcvt() drops a trailing decimal point."
ecfc5424 3284 echo "We'll use it to convert floats into a string." >&4
a0d0e21e
LW
3285 d_Gconvert="gcvt((x),(n),(b))"
3286 else
3287 echo "But your gcvt() keeps a trailing decimal point".
3288 d_Gconvert=''
3289 fi
2304df62 3290 else
a0d0e21e
LW
3291 echo "Hmm. I can't compile the gcvt test program."
3292 d_Gconvert=''
2304df62 3293 fi
a0d0e21e 3294 $rm -f try.c try
2304df62
AD
3295 ;;
3296 esac
a0d0e21e
LW
3297 case "$d_Gconvert" in
3298 '')
ecfc5424 3299 echo "I'll use sprintf instead to convert floats into a string." >&4
a0d0e21e 3300 d_Gconvert='sprintf((b),"%.*g",(n),(x))'
2304df62
AD
3301 ;;
3302 esac
2304df62
AD
3303esac
3304
a0d0e21e
LW
3305: Initialize h_fcntl
3306h_fcntl=false
3307
3308: Initialize h_sysfile
3309h_sysfile=false
2304df62
AD
3310
3311: determine filename position in cpp output
3312echo " "
3313echo "Computing filename position in cpp output for #include directives..." >&4
3314echo '#include <stdio.h>' > foo.c
3315$cat >fieldn <<EOF
3316$startsh
a0d0e21e 3317$cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
2304df62
AD
3318$grep '^[ ]*#.*stdio\.h' | \
3319while read cline; do
3320 pos=1
3321 set \$cline
3322 while $test \$# -gt 0; do
3323 if $test -r \`echo \$1 | $tr -d '"'\`; then
3324 echo "\$pos"
3325 exit 0
3326 fi
3327 shift
3328 pos=\`expr \$pos + 1\`
3329 done
3330done
3331EOF
3332chmod +x fieldn
3333fieldn=`./fieldn`
3334$rm -f foo.c fieldn
3335case $fieldn in
3336'') pos='???';;
33371) pos=first;;
33382) pos=second;;
33393) pos=third;;
3340*) pos="${fieldn}th";;
3341esac
3342echo "Your cpp writes the filename in the $pos field of the line."
3343
3344: locate header file
3345$cat >findhdr <<EOF
3346$startsh
3347wanted=\$1
3348name=''
3349if test -f $usrinc/\$wanted; then
3350 echo "$usrinc/\$wanted"
3351 exit 0
3352fi
3353awkprg='{ print \$$fieldn }'
3354echo "#include <\$wanted>" > foo\$\$.c
3355$cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
3356$grep "^[ ]*#.*\$wanted" | \
3357while read cline; do
3358 name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
3359 case "\$name" in
3360 */\$wanted) echo "\$name"; exit 0;;
3361 *) name='';;
3362 esac;
3363done;
3364$rm -f foo\$\$.c;
3365case "\$name" in
3366'') exit 1;;
3367esac
3368EOF
3369chmod +x findhdr
3370
3371: access call always available on UNIX
3372set access d_access
3373eval $inlibc
3374
3375: locate the flags for 'access()'
3376case "$d_access" in
3377"$define")
3378 echo " "
3379 $cat >access.c <<'EOCP'
3380#include <sys/types.h>
3381#ifdef I_FCNTL
3382#include <fcntl.h>
3383#endif
3384#ifdef I_SYS_FILE
3385#include <sys/file.h>
3386#endif
3387#ifdef I_UNISTD
3388#include <unistd.h>
3389#endif
3390main() {
3391 exit(R_OK);
3392}
3393EOCP
3394 : check sys/file.h first, no particular reason here
3395 if $test `./findhdr sys/file.h` && \
3396 $cc $cppflags -DI_SYS_FILE access.c -o access >/dev/null 2>&1 ; then
3397 h_sysfile=true;
3398 echo "<sys/file.h> defines the *_OK access constants." >&4
3399 elif $test `./findhdr fcntl.h` && \
3400 $cc $cppflags -DI_FCNTL access.c -o access >/dev/null 2>&1 ; then
3401 h_fcntl=true;
3402 echo "<fcntl.h> defines the *_OK access constants." >&4
85e6fe83
LW
3403 elif $test `./findhdr unistd.h` && \
3404 $cc $cppflags -DI_UNISTD access.c -o access >/dev/null 2>&1 ; then
3405 echo "<unistd.h> defines the *_OK access constants." >&4
2304df62
AD
3406 else
3407 echo "I can't find the four *_OK access constants--I'll use mine." >&4
3408 fi
3409 ;;
3410esac
3411$rm -f access*
3412
a0d0e21e
LW
3413: see if alarm exists
3414set alarm d_alarm
2304df62
AD
3415eval $inlibc
3416
40000a8c
AD
3417: determine the architecture name
3418echo " "
3419if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
3420 tarch=`arch`"-$osname"
3421elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
3422 if uname -m > tmparch 2>&1 ; then
94b6baf5 3423 tarch=`$sed -e 's/ /_/g' -e 's/$/'"-$osname/" tmparch`
40000a8c
AD
3424 else
3425 tarch="$osname"
3426 fi
3427 $rm -f tmparch
3428else
3429 tarch="$osname"
3430fi
3431case "$myarchname" in
3432''|"$tarch") ;;
3433*)
3434 echo "(Your architecture name used to be $myarchname.)"
3435 archname=''
3436 ;;
3437esac
3438case "$archname" in
3439'') dflt="$tarch";;
3440*) dflt="$archname";;
3441esac
3442rp='What is your architecture name'
3443. ./myread
3444archname="$ans"
3445myarchname="$tarch"
3446
a0d0e21e
LW
3447: is AFS running?
3448echo " "
3449if test -d /afs; then
3450 echo "AFS may be running... I'll be extra cautious then..." >&4
3451 afs=true
3452else
3453 echo "AFS does not seem to be running..." >&4
3454 afs=false
3455fi
2304df62 3456
a0d0e21e
LW
3457: determine root of directory hierarchy where package will be installed.
3458case "$prefix" in
3459'')
3460 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3461 ;;
3462*)
3463 dflt="$prefix"
3464 ;;
3465esac
3466$cat <<EOM
2304df62 3467
a0d0e21e
LW
3468By default, $package will be installed in $dflt/bin, manual
3469pages under $dflt/man, etc..., i.e. with $dflt as prefix for
3470all installation directories. Typically set to /usr/local, but you
3471may choose /usr if you wish to install $package among your system
3472binaries. If you wish to have binaries under /bin but manual pages
3473under /usr/local/man, that's ok: you will be prompted separately
3474for each of the installation directories, the prefix being only used
1aef975c 3475to set the defaults.
a0d0e21e
LW
3476
3477EOM
3478fn=d~
3479rp='Installation prefix to use?'
3480. ./getfile
1aef975c
AD
3481oldprefix=''
3482case "$prefix" in
3483'') ;;
3484*)
3485 case "$ans" in
3486 "$prefix") ;;
3487 *) oldprefix="$prefix";;
3488 esac
3489 ;;
3490esac
a0d0e21e 3491prefix="$ans"
1aef975c
AD
3492prefixexp="$ansexp"
3493
3494: set the prefixit variable, to compute a suitable default value
3495prefixit='case "$3" in
3496""|none)
3497 case "$oldprefix" in
3498 "") eval "$1=\"\$$2\"";;
3499 *)
3500 case "$3" in
3501 "") eval "$1=";;
3502 none)
3503 eval "tp=\"\$$2\"";
3504 case "$tp" in
3505 ""|" ") eval "$1=\"\$$2\"";;
3506 *) eval "$1=";;
3507 esac;;
3508 esac;;
3509 esac;;
3510*)
3511 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
3512 case "$tp" in
3513 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
3514 /*-$oldprefix/*|\~*-$oldprefix/*)
3515 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
3516 *) eval "$1=\"\$$2\"";;
3517 esac;;
3518esac'
a0d0e21e
LW
3519
3520: determine where private executables go
1aef975c
AD
3521set dflt privlib lib/$package
3522eval $prefixit
a0d0e21e
LW
3523$cat <<EOM
3524
3525There are some auxiliary files for $package that need to be put into a
3526private library directory that is accessible by everyone.
3527
3528EOM
3529fn=d~+
1aef975c 3530rp='Pathname where the private library files will reside?'
a0d0e21e 3531. ./getfile
1aef975c
AD
3532if $test "X$privlibexp" != "X$ansexp"; then
3533 installprivlib=''
3534fi
a0d0e21e
LW
3535privlib="$ans"
3536privlibexp="$ansexp"
3537if $afs; then
3538 $cat <<EOM
3539
3540Since you are running AFS, I need to distinguish the directory in which
3541private files reside from the directory in which they are installed (and from
3542which they are presumably copied to the former directory by occult means).
3543
3544EOM
3545 case "$installprivlib" in
3546 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
3547 *) dflt="$installprivlib";;
3548 esac
3549 fn=de~
3550 rp='Where will private files be installed?'
3551 . ./getfile
3552 installprivlib="$ans"
3553else
3554 installprivlib="$privlibexp"
3555fi
3556
1aef975c
AD
3557: set the prefixup variable, to restore leading tilda escape
3558prefixup='case "$prefixexp" in
3559"$prefix") ;;
3560*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
3561esac'
3562
a0d0e21e 3563: determine where public architecture dependent libraries go
1aef975c
AD
3564set archlib archlib
3565eval $prefixit
ecfc5424
AD
3566case "$archlib" in
3567'')
3568 case "$privlib" in
1aef975c
AD
3569 '')
3570 dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
3571 set dflt
3572 eval $prefixup
3573 ;;
ecfc5424
AD
3574 *) dflt="$privlib/$archname";;
3575 esac
3576 ;;
3577*) dflt="$archlib";;
a0d0e21e 3578esac
a0d0e21e
LW
3579cat <<EOM
3580
1aef975c 3581$spackage contains architecture-dependent library files. If you are
a0d0e21e
LW
3582sharing libraries in a heterogeneous environment, you might store
3583these files in a separate location. Otherwise, you can just include
3584them with the rest of the public library files.
3585
3586EOM
ecfc5424 3587fn=d~
a0d0e21e
LW
3588rp='Where do you want to put the public architecture-dependent libraries?'
3589. ./getfile
3590archlib="$ans"
3591archlibexp="$ansexp"
3592
3593if $afs; then
3594 $cat <<EOM
3595
3596Since you are running AFS, I need to distinguish the directory in which
3597private files reside from the directory in which they are installed (and from
3598which they are presumably copied to the former directory by occult means).
3599
3600EOM
3601 case "$installarchlib" in
3602 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
3603 *) dflt="$installarchlib";;
3604 esac
3605 fn=de~
3606 rp='Where will architecture-dependent library files be installed?'
3607 . ./getfile
3608 installarchlib="$ans"
3609else
3610 installarchlib="$archlibexp"
3611fi
3612if $test X"$archlib" = X"$privlib"; then
3613 d_archlib="$undef"
3614else
3615 d_archlib="$define"
3616fi
3617
2304df62
AD
3618: function used to set $1 to $val
3619setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
3620case "$val$was" in
ecfc5424
AD
3621$define$undef) . ./whoa; eval "$var=\$td";;
3622$undef$define) . ./whoa; eval "$var=\$tu";;
2304df62
AD
3623*) eval "$var=$val";;
3624esac'
3625
ecfc5424 3626: Look for GNU-cc style attribute checking
2304df62 3627echo " "
a0d0e21e
LW
3628echo "Checking whether your compiler can handle __attribute__ ..." >&4
3629$cat >attrib.c <<'EOCP'
1aef975c 3630#include <stdio.h>
ecfc5424 3631void croak (char* pat,...) __attribute__((format(printf,1,2),noreturn));
a0d0e21e
LW
3632EOCP
3633if $cc $ccflags -c attrib.c >attrib.out 2>&1 ; then
3634 if $contains 'warning' attrib.out >/dev/null 2>&1; then
ecfc5424 3635 echo "Your C compiler doesn't fully support __attribute__."
a0d0e21e
LW
3636 val="$undef"
3637 else
ecfc5424 3638 echo "Your C compiler supports __attribute__."
a0d0e21e
LW
3639 val="$define"
3640 fi
3641else
ecfc5424 3642 echo "Your C compiler doesn't seem to understand __attribute__ at all."
a0d0e21e
LW
3643 val="$undef"
3644fi
ecfc5424 3645set d_attribut
a0d0e21e
LW
3646eval $setvar
3647$rm -f attrib*
3648
3649: see if bcmp exists
3650set bcmp d_bcmp
3651eval $inlibc
3652
3653: see if bcopy exists
3654set bcopy d_bcopy
3655eval $inlibc
3656
3657: see if setpgrp exists
3658set setpgrp d_setpgrp
3659eval $inlibc
3660
3661: see which flavor of setpgrp is in use
3662case "$d_setpgrp" in
3663"$define")
3664 echo " "
3665 $cat >set.c <<EOP
3666main()
3667{
3668 if (getuid() == 0) {
3669 printf("(I see you are running Configure as super-user...)\n");
3670 setuid(1);
3671 }
3672 if (-1 == setpgrp(1, 1))
3673 exit(1);
3674 exit(0);
3675}
3676EOP
ecfc5424 3677 if $cc $ccflags -o set set.c $ldflags $libs >/dev/null 2>&1; then
a0d0e21e
LW
3678 ./set 2>/dev/null
3679 case $? in
3680 0) echo "You have to use setpgrp() instead of setpgrp(pid, pgrp)." >&4
3681 val="$undef";;
3682 *) echo "You have to use setpgrp(pid, pgrp) instead of setpgrp()." >&4
3683 val="$define";;
3684 esac
3685 else
ecfc5424 3686 if ./usg; then
a0d0e21e
LW
3687 xxx="USG one, i.e. you use setpgrp()."
3688 val="$undef"
3689 else
3690 xxx="BSD one, i.e. you use setpgrp(pid, pgrp)."
3691 val="$define"
3692 fi
3693 echo "Assuming your setpgrp is a $xxx" >&4
3694 fi
3695 ;;
3696*) val="$undef";;
3697esac
3698set d_bsdpgrp
3699eval $setvar
3700$rm -f set set.c
3701
3702: see if bzero exists
3703set bzero d_bzero
3704eval $inlibc
3705
3706: check for length of integer
3707echo " "
3708case "$intsize" in
3709'')
3710 echo "Checking to see how big your integers are..." >&4
3711 $cat >try.c <<'EOCP'
3712#include <stdio.h>
3713main()
3714{
3715 printf("%d\n", sizeof(int));
3716}
3717EOCP
3718 if $cc $ccflags try.c -o try >/dev/null 2>&1 ; then
3719 dflt=`./try`
3720 else
3721 dflt='4'
3722 echo "(I can't seem to compile the test program. Guessing...)"
3723 fi
3724 ;;
3725*)
3726 dflt="$intsize"
3727 ;;
3728esac
3729rp="What is the size of an integer (in bytes)?"
3730. ./myread
3731intsize="$ans"
3732$rm -f try.c try
3733
ecfc5424 3734: see if signal is declared as pointer to function returning int or void
a0d0e21e 3735echo " "
ecfc5424
AD
3736xxx=`./findhdr signal.h`
3737$test "$xxx" && $cppstdin $cppminus $cppflags < $xxx >$$.tmp 2>/dev/null
3738if $contains 'int.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
3739 echo "You have int (*signal())() instead of void." >&4
3740 val="$undef"
3741elif $contains 'void.*\*[ ]*signal' $$.tmp >/dev/null 2>&1 ; then
3742 echo "You have void (*signal())() instead of int." >&4
3743 val="$define"
3744elif $contains 'extern[ ]*[(\*]*signal' $$.tmp >/dev/null 2>&1 ; then
3745 echo "You have int (*signal())() instead of void." >&4
3746 val="$undef"
a0d0e21e 3747else
ecfc5424
AD
3748 case "$d_voidsig" in
3749 '')
3750 echo "I can't determine whether signal handler returns void or int..." >&4
3751 dflt=void
3752 rp="What type does your signal handler return?"
3753 . ./myread
3754 case "$ans" in
3755 v*) val="$define";;
3756 *) val="$undef";;
3757 esac;;
3758 "$define")
3759 echo "As you already told me, signal handler returns void." >&4;;
3760 *)
3761 echo "As you already told me, signal handler returns int." >&4;;
3762 esac
3763fi
3764set d_voidsig
3765eval $setvar
3766case "$d_voidsig" in
3767"$define") signal_t="void";;
3768*) signal_t="int";;
3769esac
3770$rm -f $$.tmp
3771
3772: check for ability to cast large floats to 32-bit ints.
3773echo " "
3774echo 'Checking whether your C compiler can cast large floats to int32.' >&4
3775if $test "$intsize" -eq 4; then
3776 xxx=int
3777else
3778 xxx=long
3779fi
3780$cat >try.c <<EOCP
3781#include <sys/types.h>
3782#include <signal.h>
3783$signal_t blech() { exit(3); }
3784main()
2304df62 3785{
a0d0e21e 3786 $xxx i32;
2304df62
AD
3787 double f;
3788 int result = 0;
3789 signal(SIGFPE, blech);
3790
3791 f = (double) 0x7fffffff;
3792 f = 10 * f;
a0d0e21e 3793 i32 = ($xxx) f;
2304df62 3794
a0d0e21e 3795 if (i32 != ($xxx) f)
2304df62
AD
3796 result |= 1;
3797 exit(result);
3798}
3799EOCP
3800if $cc -o try $ccflags try.c >/dev/null 2>&1; then
3801 ./try
3802 yyy=$?
3803else
a0d0e21e 3804 echo "(I can't seem to compile the test program--assuming it can't)"
2304df62
AD
3805 yyy=1
3806fi
3807case "$yyy" in
38080) val="$define"
3809 echo "Yup, it can."
3810 ;;
3811*) val="$undef"
3812 echo "Nope, it can't."
3813 ;;
3814esac
3815set d_casti32
3816eval $setvar
85e6fe83 3817$rm -f try try.*
a0d0e21e 3818
2304df62
AD
3819: check for ability to cast negative floats to unsigned
3820echo " "
3821echo 'Checking whether your C compiler can cast negative float to unsigned.' >&4
ecfc5424
AD
3822$cat >try.c <<EOCP
3823#include <sys/types.h>
2304df62 3824#include <signal.h>
232e078e
AD
3825$signal_t blech() { exit(7); }
3826$signal_t blech_in_list() { exit(4); }
3827unsigned long dummy_long(p) unsigned long p; { return p; }
3828unsigned int dummy_int(p) unsigned int p; { return p; }
3829unsigned short dummy_short(p) unsigned short p; { return p; }
2304df62
AD
3830main()
3831{
232e078e 3832 double f = -123.;
2304df62
AD
3833 unsigned long along;
3834 unsigned int aint;
3835 unsigned short ashort;
3836 int result = 0;
3837
3838 signal(SIGFPE, blech);
3839 along = (unsigned long)f;
3840 aint = (unsigned int)f;
3841 ashort = (unsigned short)f;
3842 if (along != (unsigned long)-123)
3843 result |= 1;
3844 if (aint != (unsigned int)-123)
3845 result |= 1;
3846 if (ashort != (unsigned short)-123)
3847 result |= 1;
3848 f = (double)0x40000000;
3849 f = f + f;
3850 along = 0;
3851 along = (unsigned long)f;
3852 if (along != 0x80000000)
3853 result |= 2;
3854 f -= 1.;
3855 along = 0;
3856 along = (unsigned long)f;
3857 if (along != 0x7fffffff)
3858 result |= 1;
3859 f += 2.;
3860 along = 0;
3861 along = (unsigned long)f;
3862 if (along != 0x80000001)
3863 result |= 2;
232e078e
AD
3864 if (result)
3865 exit(result);
3866 signal(SIGFPE, blech_in_list);
3867 f = 123.;
3868 along = dummy_long((unsigned long)f);
3869 aint = dummy_int((unsigned int)f);
3870 ashort = dummy_short((unsigned short)f);
3871 if (along != (unsigned long)123)
3872 result |= 4;
3873 if (aint != (unsigned int)123)
3874 result |= 4;
3875 if (ashort != (unsigned short)123)
3876 result |= 4;
2304df62
AD
3877 exit(result);
3878
3879}
3880EOCP
3881if $cc -o try $ccflags try.c >/dev/null 2>&1; then
3882 ./try
3883 castflags=$?
3884else
ecfc5424 3885 echo "(I can't seem to compile the test program--assuming it can't)"
232e078e 3886 castflags=7
2304df62
AD
3887fi
3888case "$castflags" in
38890) val="$define"
3890 echo "Yup, it can."
3891 ;;
3892*) val="$undef"
3893 echo "Nope, it can't."
3894 ;;
3895esac
3896set d_castneg
3897eval $setvar
3898$rm -f try.*
3899
2304df62
AD
3900: see if vprintf exists
3901echo " "
3902if set vprintf val -f d_vprintf; eval $csym; $val; then
3903 echo 'vprintf() found.' >&4
3904 val="$define"
3905 $cat >vprintf.c <<'EOF'
3906#include <varargs.h>
3907
3908main() { xxx("foo"); }
3909
3910xxx(va_alist)
3911va_dcl
3912{
3913 va_list args;
3914 char buf[10];
3915
3916 va_start(args);
3917 exit((unsigned long)vsprintf(buf,"%s",args) > 10L);
3918}
3919EOF
3920 if $cc $ccflags vprintf.c -o vprintf >/dev/null 2>&1 && ./vprintf; then
3921 echo "Your vsprintf() returns (int)." >&4
3922 val2="$undef"
3923 else
3924 echo "Your vsprintf() returns (char*)." >&4
3925 val2="$define"
3926 fi
3927else
3928 echo 'vprintf() NOT found.' >&4
3929 val="$undef"
3930 val2="$undef"
3931fi
3932set d_vprintf
3933eval $setvar
3934val=$val2
3935set d_charvspr
3936eval $setvar
3937
a0d0e21e
LW
3938: see if chown exists
3939set chown d_chown
3940eval $inlibc
3941
3942: see if chroot exists
3943set chroot d_chroot
3944eval $inlibc
3945
2304df62
AD
3946: see if chsize exists
3947set chsize d_chsize
3948eval $inlibc
3949
3950: check for const keyword
3951echo " "
3952echo 'Checking to see if your C compiler knows about "const"...' >&4
3953$cat >const.c <<'EOCP'
3954typedef struct spug { int drokk; } spug;
3955main()
3956{
3957 const char *foo;
3958 const spug y;
3959}
3960EOCP
3961if $cc -c $ccflags const.c >/dev/null 2>&1 ; then
3962 val="$define"
3963 echo "Yup, it does."
3964else
3965 val="$undef"
3966 echo "Nope, it doesn't."
3967fi
3968set d_const
3969eval $setvar
3970
3971: see if crypt exists
3972echo " "
3973if set crypt val -f d_crypt; eval $csym; $val; then
3974 echo 'crypt() found.' >&4
3975 val="$define"
3976 cryptlib=''
3977else
3978 cryptlib=`./loc Slibcrypt.a "" $xlibpth`
3979 if $test -z "$cryptlib"; then
3980 cryptlib=`./loc Mlibcrypt.a "" $xlibpth`
3981 else
3982 cryptlib=-lcrypt
3983 fi
3984 if $test -z "$cryptlib"; then
3985 cryptlib=`./loc Llibcrypt.a "" $xlibpth`
3986 else
3987 cryptlib=-lcrypt
3988 fi
3989 if $test -z "$cryptlib"; then
3990 cryptlib=`./loc libcrypt.a "" $libpth`
3991 else
3992 cryptlib=-lcrypt
3993 fi
3994 if $test -z "$cryptlib"; then
3995 echo 'crypt() NOT found.' >&4
3996 val="$undef"
3997 else
3998 val="$define"
3999 fi
4000fi
4001set d_crypt
4002eval $setvar
4003
4004: get csh whereabouts
4005case "$csh" in
4006'csh') val="$undef" ;;
4007*) val="$define" ;;
4008esac
4009set d_csh
4010eval $setvar
1aef975c 4011full_csh=$csh
2304df62 4012
a0d0e21e
LW
4013: see if cuserid exists
4014set cuserid d_cuserid
2304df62
AD
4015eval $inlibc
4016
85e6fe83
LW
4017: define an alternate in-header-list? function
4018inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
4019cont=true; xxf="echo \"<\$1> found.\" >&4";
4020case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
4021*) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
4022esac;
4023case $# in 4) instead=instead;; *) instead="at last";; esac;
4024while $test "$cont"; do
4025 xxx=`./findhdr $1`
4026 var=$2; eval "was=\$$2";
4027 if $test "$xxx" && $test -r "$xxx";
4028 then eval $xxf;
fec02dd3 4029 eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
85e6fe83
LW
4030 cont="";
4031 else eval $xxnf;
fec02dd3 4032 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
85e6fe83
LW
4033 set $yyy; shift; shift; yyy=$@;
4034 case $# in 0) cont="";;
4035 2) xxf="echo \"but I found <\$1> $instead.\" >&4";
4036 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
4037 *) xxf="echo \"but I found <\$1\> instead.\" >&4";
4038 xxnf="echo \"there is no <\$1>, ...\" >&4";;
4039 esac;
4040done;
4041while $test "$yyy";
4042do set $yyy; var=$2; eval "was=\$$2";
ecfc5424 4043 eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
85e6fe83
LW
4044 set $yyy; shift; shift; yyy=$@;
4045done'
4046
a0d0e21e
LW
4047: see if this is a limits.h system
4048set limits.h i_limits
85e6fe83
LW
4049eval $inhdr
4050
a0d0e21e
LW
4051: see if this is a float.h system
4052set float.h i_float
4053eval $inhdr
4054
4055: See if number of significant digits in a double precision number is known
4056echo " "
4057$cat >dbl_dig.c <<EOM
4058#$i_limits I_LIMITS
4059#$i_float I_FLOAT
4060#ifdef I_LIMITS
4061#include <limits.h>
85e6fe83 4062#endif
a0d0e21e
LW
4063#ifdef I_FLOAT
4064#include <float.h>
4065#endif
4066#ifdef DBL_DIG
4067printf("Contains DBL_DIG");
85e6fe83 4068#endif
85e6fe83 4069EOM
a0d0e21e
LW
4070$cppstdin $cppflags $cppminus < dbl_dig.c >dbl_dig.E 2>/dev/null
4071if $contains 'DBL_DIG' dbl_dig.E >/dev/null 2>&1; then
4072 echo "DBL_DIG found." >&4
4073 val="$define"
2304df62 4074else
a0d0e21e
LW
4075 echo "DBL_DIG NOT found." >&4
4076 val="$undef"
2304df62 4077fi
a0d0e21e
LW
4078$rm -f dbl_dig.?
4079set d_dbl_dig
2304df62 4080eval $setvar
2304df62 4081
a0d0e21e
LW
4082: see if difftime exists
4083set difftime d_difftime
2304df62
AD
4084eval $inlibc
4085
a0d0e21e
LW
4086: see if this is a dirent system
4087echo " "
4088if xinc=`./findhdr dirent.h`; $test "$xinc"; then
4089 val="$define"
4090 echo "<dirent.h> found." >&4
4091else
4092 val="$undef"
4093 if xinc=`./findhdr sys/dir.h`; $test "$xinc"; then
4094 echo "<sys/dir.h> found." >&4
4095 echo " "
4096 else
4097 xinc=`./findhdr sys/ndir.h`
4098 fi
4099 echo "<dirent.h> NOT found." >&4
4100fi
4101set i_dirent
4102eval $setvar
4103
4104: Look for type of directory structure.
4105echo " "
4106$cppstdin $cppflags $cppminus < "$xinc" > try.c
4107
4108case "$direntrytype" in
4109''|' ')
4110 case "$i_dirent" in
4111 $define) guess1='struct dirent' ;;
4112 *) guess1='struct direct' ;;
4113 esac
4114 ;;
4115*) guess1="$direntrytype"
4116 ;;
4117esac
4118
4119case "$guess1" in
4120'struct dirent') guess2='struct direct' ;;
4121*) guess2='struct dirent' ;;
4122esac
4123
4124if $contains "$guess1" try.c >/dev/null 2>&1; then
4125 direntrytype="$guess1"
4126 echo "Your directory entries are $direntrytype." >&4
4127elif $contains "$guess2" try.c >/dev/null 2>&1; then
4128 direntrytype="$guess2"
4129 echo "Your directory entries seem to be $direntrytype." >&4
4130else
4131 echo "I don't recognize your system's directory entries." >&4
4132 rp="What type is used for directory entries on this system?"
4133 dflt="$guess1"
4134 . ./myread
4135 direntrytype="$ans"
4136fi
4137$rm -f try.c
4138
4139
4140: see if the directory entry stores field length
4141echo " "
ecfc5424
AD
4142$cppstdin $cppflags $cppminus < "$xinc" > try.c
4143if $contains 'd_namlen' try.c >/dev/null 2>&1; then
a0d0e21e
LW
4144 echo "Good, your directory entry keeps length information in d_namlen." >&4
4145 val="$define"
4146else
4147 echo "Your directory entry does not know about the d_namlen field." >&4
4148 val="$undef"
4149fi
4150set d_dirnamlen
4151eval $setvar
ecfc5424 4152$rm -f try.c
a0d0e21e
LW
4153
4154: see if dlerror exists
4155set dlerror d_dlerror
4156eval $inlibc
4157
4158: see if dld is available
4159set dld.h i_dld
4160eval $inhdr
4161
4162: see if dlopen exists
4163set dlopen d_dlopen
4164eval $inlibc
4165
4166: determine which dynamic loading, if any, to compile in
4167echo " "
4168dldir="ext/DynaLoader"
4169case "$usedl" in
4170$define|y|true)
4171 dflt='y'
4172 usedl="$define"
4173 ;;
4174$undef|n|false)
4175 dflt='n'
4176 usedl="$undef"
4177 ;;
4178*)
4179 dflt='n'
4180 case "$d_dlopen" in
ecfc5424
AD
4181 $define) dflt='y' ;;
4182 esac
a0d0e21e 4183 case "$i_dld" in
ecfc5424
AD
4184 $define) dflt='y' ;;
4185 esac
4186 : Does a dl_xxx.xs file exist for this operating system
4187 $test -f ../$dldir/dl_${osname}.xs && dflt='y'
4188 ;;
a0d0e21e
LW
4189esac
4190rp="Do you wish to use dynamic loading?"
4191. ./myread
4192usedl="$ans"
4193case "$ans" in
4194y*) usedl="$define"
4195 case "$dlsrc" in
4196 '')
4197 if $test -f ../$dldir/dl_${osname}.xs ; then
4198 dflt="$dldir/dl_${osname}.xs"
4199 elif $test "$d_dlopen" = "$define" ; then
4200 dflt="$dldir/dl_dlopen.xs"
4201 elif $test "$i_dld" = "$define" ; then
4202 dflt="$dldir/dl_dld.xs"
4203 else
4204 dflt=''
4205 fi
4206 ;;
4207 *) dflt="$dldir/$dlsrc"