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