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