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