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