This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
Configure can't find open3 on NeXTstep
[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 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 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 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 118especially on older exotic systems. If yours does, try the Bourne
119shell instead.)
2304df62 120EOM
c90c0ff4 121 unset ENV
ff0cee69 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 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 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 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 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 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 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 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 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 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 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 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 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 ;;
ecfc5424
AD
1707 i386*)
1708 if $test -f /etc/kconfig; then
1709 osname=isc
a0d0e21e
LW
1710 if test "$lns" = "ln -s"; then
1711 osvers=4
1712 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
1713 osvers=3
2304df62 1714 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 1715 osvers=2
ecfc5424
AD
1716 fi
1717 fi
1718 ;;
2304df62
AD
1719 esac
1720
1721 case "$1" in
a0d0e21e
LW
1722 aix) osname=aix
1723 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
1724 case "$tmp" in
1aef975c 1725 'not found') osvers="$4"."$3" ;;
a0d0e21e
LW
1726 '<3240'|'<>3240') osvers=3.2.0 ;;
1727 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
1728 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 1729 *) osvers=$tmp;;
a0d0e21e
LW
1730 esac
1731 ;;
23f87696
SZ
1732 *dc.osx) osname=dcosx
1733 osvers="$3"
1734 ;;
a0d0e21e
LW
1735 dnix) osname=dnix
1736 osvers="$3"
1737 ;;
1738 domainos) osname=apollo
1739 osvers="$3"
1740 ;;
1741 dgux) osname=dgux
1742 osvers="$3"
1743 ;;
760ac839
LW
1744 dynixptx*) osname=dynixptx
1745 osvers="$3"
1746 ;;
a0d0e21e
LW
1747 freebsd) osname=freebsd
1748 osvers="$3" ;;
1749 genix) osname=genix ;;
1750 hp*) osname=hpux
1751 case "$3" in
1752 *.08.*) osvers=9 ;;
1753 *.09.*) osvers=9 ;;
1754 *.10.*) osvers=10 ;;
ecfc5424 1755 *) osvers="$3" ;;
a0d0e21e
LW
1756 esac
1757 ;;
a78b0d02 1758 irix*) osname=irix
a0d0e21e
LW
1759 case "$3" in
1760 4*) osvers=4 ;;
1761 5*) osvers=5 ;;
ecfc5424 1762 *) osvers="$3" ;;
a0d0e21e
LW
1763 esac
1764 ;;
1765 linux) osname=linux
1766 case "$3" in
1767 1*) osvers=1 ;;
1768 *) osvers="$3" ;;
1769 esac
1770 ;;
1771 netbsd*) osname=netbsd
ecfc5424
AD
1772 osvers="$3"
1773 ;;
4e81affe
MM
1774 news-os) osvers="$3"
1775 case "$3" in
1776 4*) osname=newsos4 ;;
1777 *) osname=newsos ;;
1778 esac
1779 ;;
a0d0e21e
LW
1780 bsd386) osname=bsd386
1781 osvers=`$uname -r`
1782 ;;
1783 next*) osname=next ;;
1784 solaris) osname=solaris
1785 case "$3" in
1786 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 1787 *) osvers="$3" ;;
a0d0e21e
LW
1788 esac
1789 ;;
85e6fe83
LW
1790 sunos) osname=sunos
1791 case "$3" in
85e6fe83
LW
1792 5*) osname=solaris
1793 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 1794 *) osvers="$3" ;;
2304df62
AD
1795 esac
1796 ;;
a0d0e21e 1797 titanos) osname=titanos
85e6fe83 1798 case "$3" in
a0d0e21e
LW
1799 1*) osvers=1 ;;
1800 2*) osvers=2 ;;
1801 3*) osvers=3 ;;
1802 4*) osvers=4 ;;
ecfc5424 1803 *) osvers="$3" ;;
2304df62
AD
1804 esac
1805 ;;
85e6fe83 1806 ultrix) osname=ultrix
ecfc5424 1807 osvers="$3"
2304df62 1808 ;;
28757baa 1809 osf1|mls+) case "$5" in
fed7345c
AD
1810 alpha)
1811 osname=dec_osf
1812 osvers=`echo "$3" | sed 's/^[vt]//'`
ecfc5424
AD
1813 ;;
1814 hp*) osname=hp_osf1 ;;
1815 mips) osname=mips_osf1 ;;
85e6fe83
LW
1816 esac
1817 ;;
a0d0e21e
LW
1818 uts) osname=uts
1819 osvers="$3"
1820 ;;
ff68c719 1821 qnx) osname=qnx
1822 osvers="$4"
1823 ;;
85e6fe83 1824 $2) case "$osname" in
2304df62 1825 *isc*) ;;
a0d0e21e 1826 *freebsd*) ;;
5f05dabc 1827 svr*)
a0d0e21e
LW
1828 : svr4.x or possibly later
1829 case "svr$3" in
1830 ${osname}*)
1831 osname=svr$3
1832 osvers=$4
1833 ;;
1834 esac
1835 case "$osname" in
1836 svr4.0)
1837 : Check for ESIX
1838 if test -f /stand/boot ; then
1839 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
1840 if test -n "$INITPROG" -a -f "$INITPROG"; then
1841 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
1842 if test -n "$isesix"; then
a0d0e21e
LW
1843 osname=esix4
1844 fi
1845 fi
1846 fi
1847 ;;
1848 esac
1849 ;;
2304df62 1850 *) if test -f /etc/systemid; then
a0d0e21e
LW
1851 osname=sco
1852 set `echo $3 | $sed 's/\./ /g'` $4
2304df62 1853 if $test -f sco_$1_$2_$3.sh; then
85e6fe83 1854 osvers=$1.$2.$3
2304df62 1855 elif $test -f sco_$1_$2.sh; then
85e6fe83 1856 osvers=$1.$2
2304df62 1857 elif $test -f sco_$1.sh; then
85e6fe83 1858 osvers=$1
2304df62 1859 fi
a0d0e21e
LW
1860 else
1861 case "$osname" in
1862 '') : Still unknown. Probably a generic Sys V.
1863 osname="sysv"
1864 osvers="$3"
1865 ;;
1866 esac
2304df62
AD
1867 fi
1868 ;;
1869 esac
1870 ;;
a0d0e21e
LW
1871 *) case "$osname" in
1872 '') : Still unknown. Probably a generic BSD.
1873 osname="$1"
1874 osvers="$3"
1875 ;;
1876 esac
1877 ;;
2304df62
AD
1878 esac
1879 else
4e81affe 1880 if test -f /vmunix -a -f newsos4.sh; then
ecfc5424 1881 (what /vmunix | ../UU/tr '[A-Z]' '[a-z]') > ../UU/kernel.what 2>&1
2304df62 1882 if $contains news-os ../UU/kernel.what >/dev/null 2>&1; then
4e81affe 1883 osname=newsos4
2304df62
AD
1884 fi
1885 $rm -f ../UU/kernel.what
8e07c86e
AD
1886 elif test -d c:/.; then
1887 set X $myuname
1888 osname=os2
1889 osvers="$5"
2304df62
AD
1890 fi
1891 fi
85e6fe83 1892
a0d0e21e
LW
1893 : Now look for a hint file osname_osvers, unless one has been
1894 : specified already.
1895 case "$hintfile" in
1896 ''|' ')
ecfc5424 1897 file=`echo "${osname}_${osvers}" | $sed -e 's@\.@_@g' -e 's@_$@@'`
a0d0e21e 1898 : Also try without trailing minor version numbers.
ecfc5424
AD
1899 xfile=`echo $file | $sed -e 's@_[^_]*$@@'`
1900 xxfile=`echo $xfile | $sed -e 's@_[^_]*$@@'`
1901 xxxfile=`echo $xxfile | $sed -e 's@_[^_]*$@@'`
1902 xxxxfile=`echo $xxxfile | $sed -e 's@_[^_]*$@@'`
a0d0e21e
LW
1903 case "$file" in
1904 '') dflt=none ;;
1905 *) case "$osvers" in
1906 '') dflt=$file
1907 ;;
1908 *) if $test -f $file.sh ; then
1909 dflt=$file
1910 elif $test -f $xfile.sh ; then
1911 dflt=$xfile
1912 elif $test -f $xxfile.sh ; then
1913 dflt=$xxfile
1914 elif $test -f $xxxfile.sh ; then
1915 dflt=$xxxfile
1916 elif $test -f $xxxxfile.sh ; then
1917 dflt=$xxxxfile
1918 elif $test -f "${osname}.sh" ; then
1919 dflt="${osname}"
1920 else
1921 dflt=none
1922 fi
1923 ;;
1924 esac
85e6fe83
LW
1925 ;;
1926 esac
1927 ;;
a0d0e21e 1928 *)
ecfc5424 1929 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 1930 ;;
2304df62 1931 esac
1aef975c 1932
2304df62
AD
1933 $cat <<EOM
1934
1935You may give one or more space-separated answers, or "none" if appropriate.
1936If your OS version has no hints, DO NOT give a wrong version -- say "none".
1937
1938EOM
1939 rp="Which of these apply, if any?"
1940 . ../UU/myread
85e6fe83
LW
1941 tans=$ans
1942 for file in $tans; do
2304df62
AD
1943 if $test -f $file.sh; then
1944 . ./$file.sh
1945 $cat $file.sh >> ../UU/config.sh
85e6fe83 1946 elif $test X$tans = X -o X$tans = Xnone ; then
2304df62
AD
1947 : nothing
1948 else
85e6fe83
LW
1949 : Give one chance to correct a possible typo.
1950 echo "$file.sh does not exist"
1951 dflt=$file
1952 rp="hint to use instead?"
1953 . ../UU/myread
1954 for file in $ans; do
1955 if $test -f "$file.sh"; then
1956 . ./$file.sh
1957 $cat $file.sh >> ../UU/config.sh
1958 elif $test X$ans = X -o X$ans = Xnone ; then
1959 : nothing
1960 else
1961 echo "$file.sh does not exist -- ignored."
1962 fi
1963 done
2304df62
AD
1964 fi
1965 done
85e6fe83 1966
2304df62 1967 hint=recommended
85e6fe83
LW
1968 : Remember our hint file for later.
1969 if $test -f "$file.sh" ; then
a0d0e21e 1970 hintfile="$file"
85e6fe83 1971 else
a0d0e21e 1972 hintfile=''
85e6fe83
LW
1973 fi
1974
2304df62
AD
1975 cd ..
1976fi
1977cd UU
1978;;
1979*)
1980 echo " "
1981 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
1982 tmp_n="$n"
1983 tmp_c="$c"
2304df62
AD
1984 cd ..
1985 cp $config_sh config.sh 2>/dev/null
a78b0d02 1986 chmod +w config.sh
2304df62
AD
1987 . ./config.sh
1988 cd UU
1989 cp ../config.sh .
ecfc5424
AD
1990 n="$tmp_n"
1991 c="$tmp_c"
2304df62
AD
1992 hint=previous
1993 ;;
1994esac
1aef975c
AD
1995test "$override" && . ./optdef.sh
1996myuname="$newmyuname"
2304df62
AD
1997
1998: Restore computed paths
1999for file in $loclist $trylist; do
2000 eval $file="\$_$file"
2001done
2002
85e6fe83 2003cat << EOM
a0d0e21e 2004
85e6fe83 2005Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
2006The default value is probably right if the name rings a bell. Otherwise,
2007since spelling matters for me, either accept the default or answer "none"
2008to leave it blank.
a0d0e21e 2009
85e6fe83 2010EOM
85e6fe83 2011case "$osname" in
a0d0e21e 2012 ''|' ')
85e6fe83 2013 case "$hintfile" in
a0d0e21e 2014 ''|' '|none) dflt=none ;;
ecfc5424 2015 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
2016 esac
2017 ;;
2018 *) dflt="$osname" ;;
2019esac
2020rp="Operating system name?"
2021. ./myread
2022case "$ans" in
ecfc5424
AD
2023none) osname='' ;;
2024*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 2025esac
8ff267be 2026echo " "
2027case "$osvers" in
2028 ''|' ')
2029 case "$hintfile" in
2030 ''|' '|none) dflt=none ;;
2031 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
2032 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
2033 case "$dflt" in
2034 ''|' ') dflt=none ;;
2035 esac
2036 ;;
2037 esac
2038 ;;
2039 *) dflt="$osvers" ;;
2040esac
2041rp="Operating system version?"
2042. ./myread
2043case "$ans" in
2044none) osvers='' ;;
2045*) osvers="$ans" ;;
2046esac
2047
760ac839
LW
2048
2049
2304df62 2050: who configured the system
7792a3d7 2051cf_time=`LC_ALL=C; export LC_ALL; $date 2>&1`
8ff267be 2052cf_by=`(logname) 2>/dev/null`
2053case "$cf_by" in "")
2054 cf_by=`(whoami) 2>/dev/null`
2055 case "$cf_by" in "")
2056 cf_by=unknown ;;
2057 esac ;;
2058esac
2304df62 2059
4633a7c4 2060: determine the architecture name
2304df62 2061echo " "
4633a7c4
LW
2062if xxx=`./loc arch blurfl $pth`; $test -f "$xxx"; then
2063 tarch=`arch`"-$osname"
2064elif xxx=`./loc uname blurfl $pth`; $test -f "$xxx" ; then
2065 if uname -m > tmparch 2>&1 ; then
7e1af8bc 2066 tarch=`$sed -e 's/ *$//' -e 's/ /_/g' \
5f05dabc 2067 -e 's/$/'"-$osname/" tmparch`
4633a7c4
LW
2068 else
2069 tarch="$osname"
2070 fi
2071 $rm -f tmparch
2072else
2073 tarch="$osname"
2074fi
2075case "$myarchname" in
2076''|"$tarch") ;;
2077*)
2078 echo "(Your architecture name used to be $myarchname.)"
2079 archname=''
2304df62
AD
2080 ;;
2081esac
4633a7c4
LW
2082case "$archname" in
2083'') dflt="$tarch";;
2084*) dflt="$archname";;
2085esac
2086rp='What is your architecture name'
2087. ./myread
2088archname="$ans"
2089myarchname="$tarch"
2090
2091: is AFS running?
2092echo " "
2afac517 2093case "$afs" in
2094$define|true) afs=true ;;
2095$undef|false) afs=false ;;
2096*) if test -d /afs; then
2097 afs=true
2098 else
2099 afs=false
2100 fi
2101 ;;
2102esac
2103if $afs; then
4633a7c4 2104 echo "AFS may be running... I'll be extra cautious then..." >&4
2304df62 2105else
4633a7c4 2106 echo "AFS does not seem to be running..." >&4
2304df62
AD
2107fi
2108
4633a7c4
LW
2109: decide how portable to be. Allow command line overrides.
2110case "$d_portable" in
2111"$undef") ;;
2112*) d_portable="$define" ;;
2304df62 2113esac
2304df62 2114
4633a7c4
LW
2115: set up shell script to do ~ expansion
2116cat >filexp <<EOSS
2117$startsh
2118: expand filename
2119case "\$1" in
2120 ~/*|~)
2121 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
2304df62 2122 ;;
4633a7c4
LW
2123 ~*)
2124 if $test -f /bin/csh; then
2125 /bin/csh -f -c "glob \$1"
2126 failed=\$?
2127 echo ""
2128 exit \$failed
2129 else
2130 name=\`$expr x\$1 : '..\([^/]*\)'\`
2131 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
2132 if $test ! -d "\$dir"; then
2133 me=\`basename \$0\`
2134 echo "\$me: can't locate home directory for: \$name" >&2
2135 exit 1
2136 fi
2137 case "\$1" in
2138 */*)
2139 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
2140 ;;
2141 *)
2142 echo \$dir
2143 ;;
2304df62 2144 esac
4633a7c4 2145 fi
2304df62
AD
2146 ;;
2147*)
4633a7c4 2148 echo \$1
2304df62
AD
2149 ;;
2150esac
4633a7c4
LW
2151EOSS
2152chmod +x filexp
2153$eunicefix filexp
2304df62
AD
2154
2155: now set up to get a file name
28757baa 2156cat <<EOS >getfile
2157$startsh
2158EOS
2159cat <<'EOSC' >>getfile
2304df62
AD
2160tilde=''
2161fullpath=''
2162already=''
2163skip=''
2164none_ok=''
2165exp_file=''
a0d0e21e 2166nopath_ok=''
2304df62
AD
2167orig_rp="$rp"
2168orig_dflt="$dflt"
2169
2170case "$fn" in
ecfc5424
AD
2171*\(*)
2172 expr $fn : '.*(\(.*\)).*' | tr ',' '\012' >getfile.ok
2173 fn=`echo $fn | sed 's/(.*)//'`
2174 ;;
2175esac
2176
2177case "$fn" in
a0d0e21e
LW
2178*:*)
2179 loc_file=`expr $fn : '.*:\(.*\)'`
2180 fn=`expr $fn : '\(.*\):.*'`
2181 ;;
2182esac
2183
2184case "$fn" in
2304df62
AD
2185*~*) tilde=true;;
2186esac
2187case "$fn" in
2188*/*) fullpath=true;;
2189esac
2190case "$fn" in
2191*+*) skip=true;;
2192esac
2193case "$fn" in
2194*n*) none_ok=true;;
2195esac
2196case "$fn" in
2197*e*) exp_file=true;;
2198esac
a0d0e21e
LW
2199case "$fn" in
2200*p*) nopath_ok=true;;
2201esac
2304df62
AD
2202
2203case "$fn" in
2204*f*) type='File';;
2205*d*) type='Directory';;
a0d0e21e 2206*l*) type='Locate';;
2304df62
AD
2207esac
2208
2209what="$type"
2210case "$what" in
2211Locate) what='File';;
2212esac
2213
2214case "$exp_file" in
2215'')
2216 case "$d_portable" in
2217 "$define") ;;
2218 *) exp_file=true;;
2219 esac
2220 ;;
2221esac
2222
2223cd ..
2224while test "$type"; do
2225 redo=''
2226 rp="$orig_rp"
2227 dflt="$orig_dflt"
2228 case "$tilde" in
2229 true) rp="$rp (~name ok)";;
2230 esac
2231 . UU/myread
ecfc5424
AD
2232 if test -f UU/getfile.ok && \
2233 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
2234 then
2235 value="$ans"
2236 ansexp="$ans"
2237 break
2238 fi
2304df62
AD
2239 case "$ans" in
2240 none)
2241 value=''
2242 ansexp=''
2243 case "$none_ok" in
2244 true) type='';;
2245 esac
2246 ;;
2247 *)
2248 case "$tilde" in
2249 '') value="$ans"
2250 ansexp="$ans";;
2251 *)
2252 value=`UU/filexp $ans`
2253 case $? in
2254 0)
2255 if test "$ans" != "$value"; then
ecfc5424 2256 echo "(That expands to $value on this system.)"
2304df62
AD
2257 fi
2258 ;;
2259 *) value="$ans";;
2260 esac
2261 ansexp="$value"
2262 case "$exp_file" in
2263 '') value="$ans";;
2264 esac
2265 ;;
2266 esac
2267 case "$fullpath" in
2268 true)
2269 case "$ansexp" in
2270 /*) value="$ansexp" ;;
2271 *)
2272 redo=true
2273 case "$already" in
2274 true)
2275 echo "I shall only accept a full path name, as in /bin/ls." >&4
2276 echo "Use a ! shell escape if you wish to check pathnames." >&4
2277 ;;
2278 *)
2279 echo "Please give a full path name, starting with slash." >&4
2280 case "$tilde" in
2281 true)
2282 echo "Note that using ~name is ok provided it expands well." >&4
2283 already=true
2284 ;;
2285 esac
2286 esac
2287 ;;
2288 esac
2289 ;;
2290 esac
2291 case "$redo" in
2292 '')
2293 case "$type" in
2294 File)
2295 if test -f "$ansexp"; then
2296 type=''
2297 elif test -r "$ansexp" || (test -h "$ansexp") >/dev/null 2>&1
2298 then
2299 echo "($value is not a plain file, but that's ok.)"
2300 type=''
2301 fi
2302 ;;
2303 Directory)
2304 if test -d "$ansexp"; then
2305 type=''
2306 fi
2307 ;;
2308 Locate)
40000a8c 2309 if test -d "$ansexp"; then
a0d0e21e
LW
2310 echo "(Looking for $loc_file in directory $value.)"
2311 value="$value/$loc_file"
40000a8c 2312 ansexp="$ansexp/$loc_file"
2304df62 2313 fi
40000a8c 2314 if test -f "$ansexp"; then
2304df62
AD
2315 type=''
2316 fi
a0d0e21e
LW
2317 case "$nopath_ok" in
2318 true) case "$value" in
2319 */*) ;;
2320 *) echo "Assuming $value will be in people's path."
2321 type=''
2322 ;;
2323 esac
2324 ;;
2325 esac
2304df62
AD
2326 ;;
2327 esac
2328
2329 case "$skip" in
2330 true) type='';
2331 esac
2332
2333 case "$type" in
2334 '') ;;
2335 *)
2336 if test "$fastread" = yes; then
2337 dflt=y
2338 else
2339 dflt=n
2340 fi
2341 rp="$what $value doesn't exist. Use that name anyway?"
2342 . UU/myread
2343 dflt=''
2344 case "$ans" in
2345 y*) type='';;
2346 *) echo " ";;
2347 esac
2348 ;;
2349 esac
2350 ;;
2351 esac
2352 ;;
2353 esac
2354done
2355cd UU
2356ans="$value"
2357rp="$orig_rp"
2358dflt="$orig_dflt"
ecfc5424 2359rm -f getfile.ok
2304df62
AD
2360EOSC
2361
4633a7c4
LW
2362: determine root of directory hierarchy where package will be installed.
2363case "$prefix" in
2364'')
2365 dflt=`./loc . /usr/local /usr/local /local /opt /usr`
8e07c86e 2366 ;;
4633a7c4
LW
2367*)
2368 dflt="$prefix"
8e07c86e
AD
2369 ;;
2370esac
4633a7c4 2371$cat <<EOM
2304df62 2372
4633a7c4
LW
2373By default, $package will be installed in $dflt/bin, manual
2374pages under $dflt/man, etc..., i.e. with $dflt as prefix for
2375all installation directories. Typically set to /usr/local, but you
2376may choose /usr if you wish to install $package among your system
2377binaries. If you wish to have binaries under /bin but manual pages
2378under /usr/local/man, that's ok: you will be prompted separately
2379for each of the installation directories, the prefix being only used
2380to set the defaults.
8e07c86e
AD
2381
2382EOM
2383fn=d~
2384rp='Installation prefix to use?'
2385. ./getfile
2386oldprefix=''
2387case "$prefix" in
a0d0e21e 2388'') ;;
8e07c86e
AD
2389*)
2390 case "$ans" in
2391 "$prefix") ;;
2392 *) oldprefix="$prefix";;
2393 esac
2394 ;;
a0d0e21e 2395esac
8e07c86e
AD
2396prefix="$ans"
2397prefixexp="$ansexp"
a0d0e21e 2398
8e07c86e
AD
2399: set the prefixit variable, to compute a suitable default value
2400prefixit='case "$3" in
2401""|none)
2402 case "$oldprefix" in
2403 "") eval "$1=\"\$$2\"";;
2404 *)
2405 case "$3" in
2406 "") eval "$1=";;
2407 none)
2408 eval "tp=\"\$$2\"";
2409 case "$tp" in
2410 ""|" ") eval "$1=\"\$$2\"";;
2411 *) eval "$1=";;
2412 esac;;
2413 esac;;
2414 esac;;
2415*)
2416 eval "tp=\"$oldprefix-\$$2-\""; eval "tp=\"$tp\"";
2417 case "$tp" in
2418 --|/*--|\~*--) eval "$1=\"$prefix/$3\"";;
2419 /*-$oldprefix/*|\~*-$oldprefix/*)
2420 eval "$1=\`echo \$$2 | sed \"s,^$oldprefix,$prefix,\"\`";;
2421 *) eval "$1=\"\$$2\"";;
2422 esac;;
2423esac'
a0d0e21e 2424
4633a7c4
LW
2425: determine where private library files go
2426: Usual default is /usr/local/lib/perl5. Also allow things like
2427: /opt/perl/lib, since /opt/perl/lib/perl5 would be redundant.
2428case "$prefix" in
2429*perl*) set dflt privlib lib ;;
2430*) set dflt privlib lib/$package ;;
2431esac
8e07c86e 2432eval $prefixit
4633a7c4
LW
2433$cat <<EOM
2434
2435There are some auxiliary files for $package that need to be put into a
2436private library directory that is accessible by everyone.
2437
2438EOM
2439fn=d~+
2440rp='Pathname where the private library files will reside?'
8e07c86e 2441. ./getfile
4633a7c4
LW
2442if $test "X$privlibexp" != "X$ansexp"; then
2443 installprivlib=''
8e07c86e 2444fi
4633a7c4
LW
2445privlib="$ans"
2446privlibexp="$ansexp"
8e07c86e
AD
2447if $afs; then
2448 $cat <<EOM
2304df62 2449
8e07c86e 2450Since you are running AFS, I need to distinguish the directory in which
4633a7c4 2451private files reside from the directory in which they are installed (and from
8e07c86e 2452which they are presumably copied to the former directory by occult means).
a0d0e21e 2453
8e07c86e 2454EOM
4633a7c4
LW
2455 case "$installprivlib" in
2456 '') dflt=`echo $privlibexp | sed 's#^/afs/#/afs/.#'`;;
2457 *) dflt="$installprivlib";;
8e07c86e
AD
2458 esac
2459 fn=de~
4633a7c4 2460 rp='Where will private files be installed?'
8e07c86e 2461 . ./getfile
4633a7c4 2462 installprivlib="$ans"
8e07c86e 2463else
4633a7c4
LW
2464 installprivlib="$privlibexp"
2465fi
2466
2467: set the base revision
774d564b 2468baserev=5.0
4633a7c4
LW
2469
2470: get the patchlevel
2471echo " "
2472echo "Getting the current patchlevel..." >&4
2473if $test -r ../patchlevel.h;then
760ac839
LW
2474 patchlevel=`awk '/PATCHLEVEL/ {print $3}' ../patchlevel.h`
2475 subversion=`awk '/SUBVERSION/ {print $3}' ../patchlevel.h`
4633a7c4
LW
2476else
2477 patchlevel=0
f55a7265 2478 subversion=0
8e07c86e 2479fi
5f05dabc 2480$echo $n "(You have $package" $c
2481case "$package" in
2482"*$baserev") ;;
2483*) $echo $n " $baserev" $c ;;
2484esac
2485$echo $n " patchlevel $patchlevel" $c
36477c24 2486test 0 -eq "$subversion" || $echo $n " subversion $subversion" $c
2487echo ".)"
2304df62 2488
8e07c86e
AD
2489: set the prefixup variable, to restore leading tilda escape
2490prefixup='case "$prefixexp" in
2491"$prefix") ;;
2492*) eval "$1=\`echo \$$1 | sed \"s,^$prefixexp,$prefix,\"\`";;
2493esac'
2494
4633a7c4
LW
2495: determine where public architecture dependent libraries go
2496set archlib archlib
8e07c86e 2497eval $prefixit
4633a7c4 2498case "$archlib" in
8e07c86e 2499'')
774d564b 2500 case "$privlib" in
2501 '') dflt=`./loc . "." $prefixexp/lib /usr/local/lib /usr/lib /lib`
2502 set dflt
2503 eval $prefixup
8e07c86e 2504 ;;
774d564b 2505 *) if test 0 -eq "$subversion"; then
2506 version=`LC_ALL=C; export LC_ALL; \
2507 echo $baserev $patchlevel | \
2508 $awk '{ printf "%.3f\n", $1 + $2/1000.0 }'`
2509 else
2510 version=`LC_ALL=C; export LC_ALL; \
2511 echo $baserev $patchlevel $subversion | \
2512 $awk '{ printf "%.5f\n", $1 + $2/1000.0 + $3/100000.0 }'`
2513 fi
aa7e9289 2514 dflt="$privlib/$archname/$version"
774d564b 2515 ;;
2516 esac
2517 ;;
2518*)
2519 dflt="$archlib"
2520 ;;
8e07c86e 2521esac
4633a7c4
LW
2522cat <<EOM
2523
2524$spackage contains architecture-dependent library files. If you are
2525sharing libraries in a heterogeneous environment, you might store
2526these files in a separate location. Otherwise, you can just include
2527them with the rest of the public library files.
2528
8e07c86e 2529EOM
4633a7c4
LW
2530fn=d+~
2531rp='Where do you want to put the public architecture-dependent libraries?'
8e07c86e 2532. ./getfile
4633a7c4
LW
2533archlib="$ans"
2534archlibexp="$ansexp"
2535
8e07c86e
AD
2536if $afs; then
2537 $cat <<EOM
2538
7bac28a0 2539Since you are running AFS, I need to distinguish the directory in
2540which architecture-dependent library files reside from the directory
2541in which they are installed (and from which they are presumably copied
2542to the former directory by occult means).
8e07c86e
AD
2543
2544EOM
4633a7c4
LW
2545 case "$installarchlib" in
2546 '') dflt=`echo $archlibexp | sed 's#^/afs/#/afs/.#'`;;
2547 *) dflt="$installarchlib";;
8e07c86e
AD
2548 esac
2549 fn=de~
4633a7c4 2550 rp='Where will architecture-dependent library files be installed?'
8e07c86e 2551 . ./getfile
4633a7c4 2552 installarchlib="$ans"
8e07c86e 2553else
4633a7c4
LW
2554 installarchlib="$archlibexp"
2555fi
2556if $test X"$archlib" = X"$privlib"; then
2557 d_archlib="$undef"
2558else
2559 d_archlib="$define"
8e07c86e
AD
2560fi
2561
40a7a20a 2562: set up the script used to warn in case of inconsistency
28757baa 2563cat <<EOS >whoa
2564$startsh
2565EOS
2566cat <<'EOSC' >>whoa
40a7a20a 2567dflt=y
2568echo " "
2569echo "*** WHOA THERE!!! ***" >&4
2570echo " The $hint value for \$$var on this machine was \"$was\"!" >&4
2571rp=" Keep the $hint value?"
2572. ./myread
2573case "$ans" in
2574y) td=$was; tu=$was;;
2575esac
2576EOSC
2577
2578: function used to set $1 to $val
2579setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
2580case "$val$was" in
2581$define$undef) . ./whoa; eval "$var=\$td";;
2582$undef$define) . ./whoa; eval "$var=\$tu";;
2583*) eval "$var=$val";;
2584esac'
2585
5f05dabc 2586$cat <<EOM
2587
2588Perl 5.004 can be compiled for binary compatibility with 5.003.
2589If you decide to do so, you will be able to continue using any
2590extensions that were compiled for Perl 5.003. However, binary
2591compatibility forces Perl to expose some of its internal symbols
2592in the same way that 5.003 did. So you may have symbol conflicts
2593if you embed a binary-compatible Perl in other programs.
2594
2595EOM
2596case "$d_bincompat3" in
2597"$undef") dflt=n ;;
2598*) dflt=y ;;
2599esac
2600rp='Binary compatibility with Perl 5.003?'
2601. ./myread
2602case "$ans" in
2603y*) val="$define" ;;
2604*) val="$undef" ;;
2605esac
2606set d_bincompat3
2607eval $setvar
2608case "$d_bincompat3" in
2609"$define") bincompat3=y ;;
2610*) bincompat3=n ;;
2611esac
2612
40a7a20a 2613: make some quick guesses about what we are up against
2614echo " "
2615$echo $n "Hmm... $c"
2616echo exit 1 >bsd
2617echo exit 1 >usg
2618echo exit 1 >v7
2619echo exit 1 >osf1
2620echo exit 1 >eunice
2621echo exit 1 >xenix
2622echo exit 1 >venix
8ff267be 2623echo exit 1 >os2
40a7a20a 2624d_bsd="$undef"
2625$cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
2626if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
2627then
2628 echo "Looks kind of like an OSF/1 system, but we'll see..."
2629 echo exit 0 >osf1
2630elif test `echo abc | tr a-z A-Z` = Abc ; then
2631 xxx=`./loc addbib blurfl $pth`
2632 if $test -f $xxx; then
2633 echo "Looks kind of like a USG system with BSD features, but we'll see..."
2634 echo exit 0 >bsd
2635 echo exit 0 >usg
2636 else
2637 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
2638 echo "Looks kind of like an extended USG system, but we'll see..."
2639 else
2640 echo "Looks kind of like a USG system, but we'll see..."
2641 fi
2642 echo exit 0 >usg
2643 fi
2644elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
2645 echo "Looks kind of like a BSD system, but we'll see..."
2646 d_bsd="$define"
2647 echo exit 0 >bsd
2648else
2649 echo "Looks kind of like a Version 7 system, but we'll see..."
2650 echo exit 0 >v7
2651fi
2652case "$eunicefix" in
2653*unixtovms*)
2654 $cat <<'EOI'
2655There is, however, a strange, musty smell in the air that reminds me of
2656something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
2657EOI
2658 echo exit 0 >eunice
2659 d_eunice="$define"
2660: it so happens the Eunice I know will not run shell scripts in Unix format
2661 ;;
2662*)
2663 echo " "
2664 echo "Congratulations. You aren't running Eunice."
2665 d_eunice="$undef"
2666 ;;
2667esac
8ff267be 2668: Detect OS2. The p_ variable is set above in the Head.U unit.
2669case "$p_" in
2670:) ;;
2671*)
2672 $cat <<'EOI'
2673I have the feeling something is not exactly right, however...don't tell me...
2674lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
2675EOI
2676 echo exit 0 >os2
2677 ;;
2678esac
40a7a20a 2679if test -f /xenix; then
2680 echo "Actually, this looks more like a XENIX system..."
2681 echo exit 0 >xenix
2682 d_xenix="$define"
2683else
2684 echo " "
2685 echo "It's not Xenix..."
2686 d_xenix="$undef"
2687fi
2688chmod +x xenix
2689$eunicefix xenix
2690if test -f /venix; then
2691 echo "Actually, this looks more like a VENIX system..."
2692 echo exit 0 >venix
2693else
2694 echo " "
2695 if ./xenix; then
2696 : null
2697 else
2698 echo "Nor is it Venix..."
2699 fi
2700fi
8ff267be 2701chmod +x bsd usg v7 osf1 eunice xenix venix os2
2702$eunicefix bsd usg v7 osf1 eunice xenix venix os2
40a7a20a 2703$rm -f foo
2704
2705: see if setuid scripts can be secure
2706$cat <<EOM
2707
2708Some kernels have a bug that prevents setuid #! scripts from being
2709secure. Some sites have disabled setuid #! scripts because of this.
2710
2711First let's decide if your kernel supports secure setuid #! scripts.
2712(If setuid #! scripts would be secure but have been disabled anyway,
2713don't say that they are secure if asked.)
2714
2715EOM
2716
2717val="$undef"
2718if $test -d /dev/fd; then
2719 echo "#!$ls" >reflect
2720 chmod +x,u+s reflect
2721 ./reflect >flect 2>&1
2722 if $contains "/dev/fd" flect >/dev/null; then
2723 echo "Congratulations, your kernel has secure setuid scripts!" >&4
2724 val="$define"
2725 else
2726 $cat <<EOM
2727If you are not sure if they are secure, I can check but I'll need a
2728username and password different from the one you are using right now.
2729If you don't have such a username or don't want me to test, simply
2730enter 'none'.
2731
2732EOM
2733 rp='Other username to test security of setuid scripts with?'
2734 dflt='none'
2735 . ./myread
2736 case "$ans" in
2737 n|none)
2738 case "$d_suidsafe" in
2739 '') echo "I'll assume setuid scripts are *not* secure." >&4
2740 dflt=n;;
2741 "$undef")
2742 echo "Well, the $hint value is *not* secure." >&4
2743 dflt=n;;
2744 *) echo "Well, the $hint value *is* secure." >&4
2745 dflt=y;;
2746 esac
2747 ;;
2748 *)
2749 $rm -f reflect flect
2750 echo "#!$ls" >reflect
2751 chmod +x,u+s reflect
2752 echo >flect
2753 chmod a+w flect
2754 echo '"su" will (probably) prompt you for '"$ans's password."
2755 su $ans -c './reflect >flect'
2756 if $contains "/dev/fd" flect >/dev/null; then
2757 echo "Okay, it looks like setuid scripts are secure." >&4
2758 dflt=y
2759 else
2760 echo "I don't think setuid scripts are secure." >&4
2761 dflt=n
2762 fi
2763 ;;
2764 esac
2765 rp='Does your kernel have *secure* setuid scripts?'
2766 . ./myread
2767 case "$ans" in
2768 [yY]*) val="$define";;
2769 *) val="$undef";;
2770 esac
2771 fi
2772else
2773 echo "I don't think setuid scripts are secure (no /dev/fd directory)." >&4
760ac839 2774 echo "(That's for file descriptors, not floppy disks.)"
40a7a20a 2775 val="$undef"
2776fi
2777set d_suidsafe
2778eval $setvar
2779
2780$rm -f reflect flect
2781
2782: now see if they want to do setuid emulation
2783echo " "
2784val="$undef"
2785case "$d_suidsafe" in
2786"$define")
2787 val="$undef"
2788 echo "No need to emulate SUID scripts since they are secure here." >& 4
2789 ;;
2790*)
2791 $cat <<EOM
2792Some systems have disabled setuid scripts, especially systems where
2793setuid scripts cannot be secure. On systems where setuid scripts have
2794been disabled, the setuid/setgid bits on scripts are currently
2795useless. It is possible for $package to detect those bits and emulate
2796setuid/setgid in a secure fashion. This emulation will only work if
2797setuid scripts have been disabled in your kernel.
2798
2799EOM
2800 case "$d_dosuid" in
2801 "$define") dflt=y ;;
2802 *) dflt=n ;;
2803 esac
2804 rp="Do you want to do setuid/setgid emulation?"
2805 . ./myread
2806 case "$ans" in
2807 [yY]*) val="$define";;
2808 *) val="$undef";;
2809 esac
2810 ;;
2811esac
2812set d_dosuid
2813eval $setvar
2814
37120919
AD
2815: determine where site specific libraries go.
2816set sitelib sitelib
2817eval $prefixit
2818case "$sitelib" in
2819'') dflt="$privlib/site_perl" ;;
2820*) dflt="$sitelib" ;;
2821esac
2822$cat <<EOM
2823
2824The installation process will also create a directory for
2825site-specific extensions and modules. Some users find it convenient
2826to place all local files in this directory rather than in the main
2827distribution directory.
2828
2829EOM
2830fn=d~+
2831rp='Pathname for the site-specific library files?'
2832. ./getfile
2833if $test "X$sitelibexp" != "X$ansexp"; then
2834 installsitelib=''
2835fi
2836sitelib="$ans"
2837sitelibexp="$ansexp"
2838if $afs; then
2839 $cat <<EOM
2840
7bac28a0 2841Since you are running AFS, I need to distinguish the directory in
2842which site-specific files reside from the directory in which they are
2843installed (and from which they are presumably copied to the former
2844directory by occult means).
37120919
AD
2845
2846EOM
2847 case "$installsitelib" in
2848 '') dflt=`echo $sitelibexp | sed 's#^/afs/#/afs/.#'`;;
2849 *) dflt="$installsitelib";;
2850 esac
2851 fn=de~
7bac28a0 2852 rp='Where will site-specific files be installed?'
37120919
AD
2853 . ./getfile
2854 installsitelib="$ans"
2855else
2856 installsitelib="$sitelibexp"
2857fi
4633a7c4 2858
37120919
AD
2859: determine where site specific architecture-dependent libraries go.
2860xxx=`echo $sitelib/$archname | sed 's!^$prefix!!'`
2861: xxx is usuually lib/site_perl/archname.
2862set sitearch sitearch none
8e07c86e 2863eval $prefixit
37120919
AD
2864case "$sitearch" in
2865'') dflt="$sitelib/$archname" ;;
2866*) dflt="$sitearch" ;;
2867esac
8e07c86e
AD
2868$cat <<EOM
2869
4633a7c4
LW
2870The installation process will also create a directory for
2871architecture-dependent site-specific extensions and modules.
8e07c86e
AD
2872
2873EOM
4633a7c4
LW
2874fn=nd~+
2875rp='Pathname for the site-specific architecture-dependent library files?'
8e07c86e 2876. ./getfile
4633a7c4
LW
2877if $test "X$sitearchexp" != "X$ansexp"; then
2878 installsitearch=''
8e07c86e 2879fi
4633a7c4
LW
2880sitearch="$ans"
2881sitearchexp="$ansexp"
8e07c86e
AD
2882if $afs; then
2883 $cat <<EOM
2884
7bac28a0 2885Since you are running AFS, I need to distinguish the directory in
2886which site-specific architecture-dependent library files reside from
2887the directory in which they are installed (and from which they are
2888presumably copied to the former directory by occult means).
8e07c86e
AD
2889
2890EOM
4633a7c4
LW
2891 case "$installsitearch" in
2892 '') dflt=`echo $sitearchexp | sed 's#^/afs/#/afs/.#'`;;
2893 *) dflt="$installsitearch";;
8e07c86e
AD
2894 esac
2895 fn=de~
7bac28a0 2896 rp='Where will site-specific architecture-dependent files be installed?'
8e07c86e 2897 . ./getfile
4633a7c4 2898 installsitearch="$ans"
8e07c86e 2899else
4633a7c4 2900 installsitearch="$sitearchexp"
8e07c86e
AD
2901fi
2902
4633a7c4
LW
2903: determine where old public architecture dependent libraries might be
2904case "$oldarchlib" in
2905'') case "$privlib" in
2906 '') ;;
2907 *) dflt="$privlib/$archname"
8e07c86e 2908 ;;
8e07c86e
AD
2909 esac
2910 ;;
4633a7c4
LW
2911*) dflt="$oldarchlib"
2912 ;;
8e07c86e 2913esac
4633a7c4
LW
2914if $test ! -d "$dflt/auto"; then
2915 dflt=none
2916fi
8e07c86e
AD
2917cat <<EOM
2918
760ac839 2919In 5.001, Perl stored architecture-dependent library files in a directory
4633a7c4
LW
2920with a name such as $privlib/$archname,
2921and this directory contained files from the standard extensions and
2922files from any additional extensions you might have added. Starting
2923with version 5.002, all the architecture-dependent standard extensions
760ac839
LW
2924will go into a version-specific directory such as
2925$archlib,
4633a7c4
LW
2926while locally-added extensions will go into
2927$sitearch.
2928
2929If you wish Perl to continue to search the old architecture-dependent
2930library for your local extensions, give the path to that directory.
2931If you do not wish to use your old architecture-dependent library
2932files, answer 'none'.
8e07c86e
AD
2933
2934EOM
4633a7c4
LW
2935fn=dn~
2936rp='Directory for your old 5.001 architecture-dependent libraries?'
8e07c86e 2937. ./getfile
4633a7c4
LW
2938oldarchlib="$ans"
2939oldarchlibexp="$ansexp"
2940case "$oldarchlib" in
2941''|' ') val="$undef" ;;
2942*) val="$define" ;;
2943esac
2944set d_oldarchlib
2945eval $setvar
8e07c86e 2946
4633a7c4
LW
2947: determine where public executables go
2948echo " "
2949set dflt bin bin
2950eval $prefixit
2951fn=d~
2952rp='Pathname where the public executables will reside?'
2953. ./getfile
2954if $test "X$ansexp" != "X$binexp"; then
2955 installbin=''
2956fi
2957bin="$ans"
2958binexp="$ansexp"
8e07c86e
AD
2959if $afs; then
2960 $cat <<EOM
2961
2962Since you are running AFS, I need to distinguish the directory in which
4633a7c4 2963executables reside from the directory in which they are installed (and from
8e07c86e
AD
2964which they are presumably copied to the former directory by occult means).
2965
2966EOM
4633a7c4
LW
2967 case "$installbin" in
2968 '') dflt=`echo $binexp | sed 's#^/afs/#/afs/.#'`;;
2969 *) dflt="$installbin";;
8e07c86e
AD
2970 esac
2971 fn=de~
4633a7c4 2972 rp='Where will public executables be installed?'
8e07c86e 2973 . ./getfile
4633a7c4 2974 installbin="$ans"
8e07c86e 2975else
4633a7c4 2976 installbin="$binexp"
8e07c86e
AD
2977fi
2978
2c7991dc 2979: determine where manual pages are on this system
2980echo " "
2981case "$sysman" in
2982'')
2983 syspath='/usr/man/man1 /usr/man/mann /usr/man/manl /usr/man/local/man1'
2984 syspath="$syspath /usr/man/u_man/man1 /usr/share/man/man1"
2985 syspath="$syspath /usr/catman/u_man/man1 /usr/man/l_man/man1"
2986 syspath="$syspath /usr/local/man/u_man/man1 /usr/local/man/l_man/man1"
2987 syspath="$syspath /usr/man/man.L /local/man/man1 /usr/local/man/man1"
2988 sysman=`./loc . /usr/man/man1 $syspath`
2989 ;;
2990esac
2991if $test -d "$sysman"; then
2992 echo "System manual is in $sysman." >&4
2993else
2994 echo "Could not find manual pages in source form." >&4
2995fi
2996
2afac517 2997: see what memory models we can support
2998case "$models" in
2999'')
3000 $cat >pdp11.c <<'EOP'
3001main() {
3002#ifdef pdp11
3003 exit(0);
3004#else
3005 exit(1);
3006#endif
3007}
3008EOP
c90c0ff4 3009 (cc -o pdp11 pdp11.c) >/dev/null 2>&1
3010 if $test -f pdp11 && ./pdp11 2>/dev/null; then
2afac517 3011 dflt='unsplit split'
3012 else
3013 tans=`./loc . X /lib/small /lib/large /usr/lib/small /usr/lib/large /lib/medium /usr/lib/medium /lib/huge`
3014 case "$tans" in
3015 X) dflt='none';;
3016 *) if $test -d /lib/small || $test -d /usr/lib/small; then
3017 dflt='small'
3018 else
3019 dflt=''
3020 fi
3021 if $test -d /lib/medium || $test -d /usr/lib/medium; then
3022 dflt="$dflt medium"
3023 fi
3024 if $test -d /lib/large || $test -d /usr/lib/large; then
3025 dflt="$dflt large"
3026 fi
3027 if $test -d /lib/huge || $test -d /usr/lib/huge; then
3028 dflt="$dflt huge"
3029 fi
3030 esac
3031 fi;;
3032*) dflt="$models";;
3033esac
8e07c86e 3034$cat <<EOM
2afac517 3035
3036Some systems have different model sizes. On most systems they are called
3037small, medium, large, and huge. On the PDP11 they are called unsplit and
3038split. If your system doesn't support different memory models, say "none".
3039If you wish to force everything to one memory model, say "none" here and
3040put the appropriate flags later when it asks you for other cc and ld flags.
3041Venix systems may wish to put "none" and let the compiler figure things out.
3042(In the following question multiple model names should be space separated.)
8e07c86e 3043
8e07c86e 3044EOM
2afac517 3045rp="Which memory models are supported?"
3046. ./myread
3047models="$ans"
3048
3049case "$models" in
3050none)
3051 small=''
3052 medium=''
3053 large=''
3054 huge=''
3055 unsplit=''
3056 split=''
2c7991dc 3057 ;;
2afac517 3058*split)
3059 case "$split" in
3060 '') if $contains '\-i' $sysman/ld.1 >/dev/null 2>&1 || \
3061 $contains '\-i' $sysman/cc.1 >/dev/null 2>&1; then
3062 dflt='-i'
3063 else
3064 dflt='none'
3065 fi;;
3066 *) dflt="$split";;
3067 esac
3068 rp="What flag indicates separate I and D space?"
3069 . ./myread
3070 tans="$ans"
3071 case "$tans" in
3072 none) tans='';;
3073 esac
3074 split="$tans"
3075 unsplit='';;
3076*large*|*small*|*medium*|*huge*)
3077 case "$models" in
3078 *large*)
3079 case "$large" in
3080 '') dflt='-Ml';;
3081 *) dflt="$large";;
3082 esac
3083 rp="What flag indicates large model?"
3084 . ./myread
3085 tans="$ans"
3086 case "$tans" in
3087 none) tans='';
3088 esac
3089 large="$tans";;
3090 *) large='';;
3091 esac
3092 case "$models" in
3093 *huge*) case "$huge" in
3094 '') dflt='-Mh';;
3095 *) dflt="$huge";;
3096 esac
3097 rp="What flag indicates huge model?"
3098 . ./myread
3099 tans="$ans"
3100 case "$tans" in
3101 none) tans='';
3102 esac
3103 huge="$tans";;
3104 *) huge="$large";;
3105 esac
3106 case "$models" in
3107 *medium*) case "$medium" in
3108 '') dflt='-Mm';;
3109 *) dflt="$medium";;
3110 esac
3111 rp="What flag indicates medium model?"
3112 . ./myread
3113 tans="$ans"
3114 case "$tans" in
3115 none) tans='';
3116 esac
3117 medium="$tans";;
3118 *) medium="$large";;
3119 esac
3120 case "$models" in
3121 *small*) case "$small" in
3122 '') dflt='none';;
3123 *) dflt="$small";;
3124 esac
3125 rp="What flag indicates small model?"
3126 . ./myread
3127 tans="$ans"
3128 case "$tans" in
3129 none) tans='';
3130 esac
3131 small="$tans";;
3132 *) small='';;
25f94b33 3133 esac
8e07c86e 3134 ;;
2afac517 3135*)
3136 echo "Unrecognized memory models--you may have to edit Makefile.SH" >&4
8e07c86e
AD
3137 ;;
3138esac
8e07c86e 3139
2afac517 3140: see if we need a special compiler
3141echo " "
3142if ./usg; then
3143 case "$cc" in
3144 '') case "$Mcc" in
3145 /*) dflt='Mcc';;
3146 *) case "$large" in
3147 -M*) dflt='cc';;
3148 *) if $contains '\-M' $sysman/cc.1 >/dev/null 2>&1 ; then
3149 if $contains '\-M' $sysman/cpp.1 >/dev/null 2>&1; then
3150 dflt='cc'
3151 else
3152 dflt='cc -M'
3153 fi
3154 else
3155 dflt='cc'
3156 fi;;
3157 esac;;
3158 esac;;
3159 *) dflt="$cc";;
3160 esac
3161 $cat <<'EOM'
3162On some systems the default C compiler will not resolve multiple global
3163references that happen to have the same name. On some such systems the "Mcc"
3164command may be used to force these to be resolved. On other systems a "cc -M"
3165command is required. (Note that the -M flag on other systems indicates a
3166memory model to use!) If you have the Gnu C compiler, you might wish to use
3167that instead.
8e07c86e
AD
3168
3169EOM
2afac517 3170 rp="What command will force resolution on this system?"
3171 . ./myread
3172 cc="$ans"
8e07c86e 3173else
2afac517 3174 case "$cc" in
3175 '') dflt=cc;;
3176 *) dflt="$cc";;
3177 esac
3178 rp="Use which C compiler?"
3179 . ./myread
3180 cc="$ans"
8e07c86e 3181fi
2afac517 3182echo " "
3183echo "Checking for GNU cc in disguise and/or its version number..." >&4
3184$cat >gccvers.c <<EOM
3185#include <stdio.h>
3186int main() {
3187#ifdef __GNUC__
3188#ifdef __VERSION__
3189 printf("%s\n", __VERSION__);
3190#else
3191 printf("%s\n", "1");
3192#endif
3193#endif
3194 exit(0);
3195}
3196EOM
3197if $cc -o gccvers gccvers.c >/dev/null 2>&1; then
3198 gccversion=`./gccvers`
3199 case "$gccversion" in
3200 '') echo "You are not using GNU cc." ;;
3201 *) echo "You are using GNU cc $gccversion." ;;
3202 esac
3203else
3204 echo " "
3205 echo "*** WHOA THERE!!! ***" >&4
3206 echo " Your C compiler \"$cc\" doesn't seem to be working!" >&4
3207 case "$knowitall" in
3208 '')
3209 echo " You'd better start hunting for one and let me know about it." >&4
3210 exit 1
2c7991dc 3211 ;;
8e07c86e 3212 esac
2afac517 3213fi
3214$rm -f gccvers*
3215case "$gccversion" in
32161*) cpp=`./loc gcc-cpp $cpp $pth` ;;
8e07c86e
AD
3217esac
3218
2afac517 3219: What should the include directory be ?
8e07c86e 3220echo " "
2afac517 3221$echo $n "Hmm... $c"
3222dflt='/usr/include'
3223incpath=''
3224mips_type=''
3225if $test -f /bin/mips && /bin/mips; then
3226 echo "Looks like a MIPS system..."
3227 $cat >usr.c <<'EOCP'
3228#ifdef SYSTYPE_BSD43
3229/bsd43
3230#endif
3231EOCP
3232 if $cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
3233 dflt='/bsd43/usr/include'
3234 incpath='/bsd43'
3235 mips_type='BSD 4.3'
8e07c86e 3236 else
2afac517 3237 mips_type='System V'
8e07c86e 3238 fi
2afac517 3239 $rm -f usr.c usr.out
3240 echo "and you're compiling with the $mips_type compiler and libraries."
3241 xxx_prompt=y
3242 echo "exit 0" >mips
8e07c86e 3243else
2afac517 3244 echo "Doesn't look like a MIPS system."
3245 xxx_prompt=n
3246 echo "exit 1" >mips
3247fi
3248chmod +x mips
3249$eunicefix mips
3250echo " "
3251case "$usrinc" in
3252'') ;;
3253*) dflt="$usrinc";;
3254esac
3255case "$xxx_prompt" in
3256y) fn=d/
3257 rp='Where are the include files you want to use?'
3258 . ./getfile
3259 usrinc="$ans"
3260 ;;
3261*) usrinc="$dflt"
3262 ;;
3263esac
8e07c86e 3264
2afac517 3265: Set private lib path
3266case "$plibpth" in
3267'') if ./mips; then
3268 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
3269 fi;;
3270esac
3271case "$libpth" in
3272' ') dlist='';;
3273'') dlist="$loclibpth $plibpth $glibpth";;
3274*) dlist="$libpth";;
3275esac
8e07c86e 3276
2afac517 3277: Now check and see which directories actually exist, avoiding duplicates
3278libpth=''
3279for xxx in $dlist
3280do
3281 if $test -d $xxx; then
3282 case " $libpth " in
3283 *" $xxx "*) ;;
3284 *) libpth="$libpth $xxx";;
3285 esac
3286 fi
3287done
3288$cat <<'EOM'
8e07c86e 3289
2afac517 3290Some systems have incompatible or broken versions of libraries. Among
3291the directories listed in the question below, please remove any you
3292know not to be holding relevant libraries, and add any that are needed.
3293Say "none" for none.
8e07c86e 3294
8e07c86e 3295EOM
2afac517 3296case "$libpth" in
3297'') dflt='none';;
3298*)
3299 set X $libpth
3300 shift
3301 dflt=${1+"$@"}
4633a7c4 3302 ;;
8e07c86e 3303esac
2afac517 3304rp="Directories to use for library searches?"
3305. ./myread
3306case "$ans" in
3307none) libpth=' ';;
3308*) libpth="$ans";;
3309esac
8e07c86e 3310
5f05dabc 3311: Define several unixisms. Hints files or command line options
3312: can be used to override them.
3313case "$ar" in
3314'') ar='ar';;
3315esac
3316case "$lib_ext" in
3317'') lib_ext='.a';;
3318esac
3319case "$obj_ext" in
3320'') obj_ext='.o';;
3321esac
3322case "$path_sep" in
3323'') path_sep=':';;
3324esac
3325: Which makefile gets called first. This is used by make depend.
3326case "$firstmakefile" in
3327'') firstmakefile='makefile';;
3328esac
3329
2afac517 3330: compute shared library extension
3331case "$so" in
3332'')
3333 if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
3334 dflt='sl'
3335 else
3336 dflt='so'
3337 fi
3338 ;;
3339*) dflt="$so";;
8e07c86e 3340esac
2afac517 3341$cat <<EOM
8e07c86e 3342
2afac517 3343On some systems, shared libraries may be available. Answer 'none' if
3344you want to suppress searching of shared libraries for the remaining
3345of this configuration.
8e07c86e
AD
3346
3347EOM
2afac517 3348rp='What is the file extension used for shared libraries?'
3349. ./myread
3350so="$ans"
8e07c86e 3351
2afac517 3352: Looking for optional libraries
3353echo " "
3354echo "Checking for optional libraries..." >&4
3355case "$libs" in
3356' '|'') dflt='';;
3357*) dflt="$libs";;
8e07c86e 3358esac
2afac517 3359case "$libswanted" in
3360'') libswanted='c_s';;
3361esac
3362for thislib in $libswanted; do
3363
3364 if xxx=`./loc lib$thislib.$so.[0-9]'*' X $libpth`; $test -f "$xxx"; then
3365 echo "Found -l$thislib (shared)."
3366 case " $dflt " in
3367 *"-l$thislib "*);;
3368 *) dflt="$dflt -l$thislib";;
4633a7c4 3369 esac
2afac517 3370 elif xxx=`./loc lib$thislib.$so X $libpth` ; $test -f "$xxx"; then
3371 echo "Found -l$thislib (shared)."
3372 case " $dflt " in
3373 *"-l$thislib "*);;
3374 *) dflt="$dflt -l$thislib";;
3375 esac
5f05dabc 3376 elif xxx=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$xxx"; then
2afac517 3377 echo "Found -l$thislib."
3378 case " $dflt " in
3379 *"-l$thislib "*);;
3380 *) dflt="$dflt -l$thislib";;
3381 esac
5f05dabc 3382 elif xxx=`./loc $thislib$lib_ext X $libpth`; $test -f "$xxx"; then
2afac517 3383 echo "Found -l$thislib."
3384 case " $dflt " in
3385 *"-l$thislib "*);;
3386 *) dflt="$dflt -l$thislib";;
3387 esac
5f05dabc 3388 elif xxx=`./loc lib${thislib}_s$lib_ext X $libpth`; $test -f "$xxx"; then
2afac517 3389 echo "Found -l${thislib}_s."
3390 case " $dflt " in
3391 *"-l$thislib "*);;
3392 *) dflt="$dflt -l${thislib}_s";;
3393 esac
5f05dabc 3394 elif xxx=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$xxx"; then
2afac517 3395 echo "Found -l$thislib."
3396 case " $dflt " in
3397 *"-l$thislib "*);;
3398 *) dflt="$dflt -l$thislib";;
3399 esac
3400 else
3401 echo "No -l$thislib."
3402 fi
3403done
3404set X $dflt
3405shift
3406dflt="$*"
3407case "$libs" in
3408'') dflt="$dflt";;
3409*) dflt="$libs";;
3410esac
3411case "$dflt" in
3412' '|'') dflt='none';;
8e07c86e 3413esac
2afac517 3414
4633a7c4
LW
3415$cat <<EOM
3416
2afac517 3417Some versions of Unix support shared libraries, which make executables smaller
3418but make load time slightly longer.
8e07c86e 3419
2afac517 3420On some systems, mostly System V Release 3's, the shared library is included
3421by putting the option "-lc_s" as the last thing on the cc command line when
3422linking. Other systems use shared libraries by default. There may be other
3423libraries needed to compile $package on your machine as well. If your system
3424needs the "-lc_s" option, include it here. Include any other special libraries
3425here as well. Say "none" for none.
4633a7c4 3426EOM
2afac517 3427
3428echo " "
3429rp="Any additional libraries?"
8e07c86e 3430. ./myread
2afac517 3431case "$ans" in
3432none) libs=' ';;
3433*) libs="$ans";;
3434esac
8e07c86e 3435
4633a7c4 3436: see how we invoke the C preprocessor
2304df62 3437echo " "
4633a7c4
LW
3438echo "Now, how can we feed standard input to your C preprocessor..." >&4
3439cat <<'EOT' >testcpp.c
3440#define ABC abc
3441#define XYZ xyz
3442ABC.XYZ
3443EOT
3444cd ..
3445echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
3446chmod 755 cppstdin
3447wrapper=`pwd`/cppstdin
3448ok='false'
3449cd UU
3450
3451if $test "X$cppstdin" != "X" && \
3452 $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
3453 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3454then
3455 echo "You used to use $cppstdin $cppminus so we'll use that again."
3456 case "$cpprun" in
3457 '') echo "But let's see if we can live without a wrapper..." ;;
3458 *)
3459 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
3460 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3461 then
3462 echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
3463 ok='true'
a0d0e21e 3464 else
4633a7c4 3465 echo "(However, $cpprun $cpplast does not work, let's see...)"
2304df62 3466 fi
2304df62 3467 ;;
2304df62 3468 esac
4633a7c4
LW
3469else
3470 case "$cppstdin" in
3471 '') ;;
3472 *)
3473 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
3474 ;;
3475 esac
3476fi
3477
3478if $ok; then
3479 : nothing
3480elif echo 'Maybe "'"$cc"' -E" will work...'; \
3481 $cc -E <testcpp.c >testcpp.out 2>&1; \
3482 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3483 echo "Yup, it does."
3484 x_cpp="$cc -E"
3485 x_minus='';
3486elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
3487 $cc -E - <testcpp.c >testcpp.out 2>&1; \
3488 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3489 echo "Yup, it does."
3490 x_cpp="$cc -E"
3491 x_minus='-';
3492elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
3493 $cc -P <testcpp.c >testcpp.out 2>&1; \
3494 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3495 echo "Yipee, that works!"
3496 x_cpp="$cc -P"
3497 x_minus='';
3498elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
3499 $cc -P - <testcpp.c >testcpp.out 2>&1; \
3500 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3501 echo "At long last!"
3502 x_cpp="$cc -P"
3503 x_minus='-';
3504elif echo 'No such luck, maybe "'$cpp'" will work...'; \
3505 $cpp <testcpp.c >testcpp.out 2>&1; \
3506 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3507 echo "It works!"
3508 x_cpp="$cpp"
3509 x_minus='';
3510elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
3511 $cpp - <testcpp.c >testcpp.out 2>&1; \
3512 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3513 echo "Hooray, it works! I was beginning to wonder."
3514 x_cpp="$cpp"
3515 x_minus='-';
3516elif echo 'Uh-uh. Time to get fancy. Trying a wrapper...'; \
3517 $wrapper <testcpp.c >testcpp.out 2>&1; \
3518 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3519 x_cpp="$wrapper"
3520 x_minus=''
3521 echo "Eureka!"
3522else
3523 dflt=''
3524 rp="No dice. I can't find a C preprocessor. Name one:"
3525 . ./myread
3526 x_cpp="$ans"
3527 x_minus=''
3528 $x_cpp <testcpp.c >testcpp.out 2>&1
3529 if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
3530 echo "OK, that will do." >&4
3531 else
3532echo "Sorry, I can't get that to work. Go find one and rerun Configure." >&4
3533 exit 1
3534 fi
3535fi
3536
3537case "$ok" in
3538false)
3539 cppstdin="$x_cpp"
3540 cppminus="$x_minus"
3541 cpprun="$x_cpp"
3542 cpplast="$x_minus"
3543 set X $x_cpp
3544 shift
3545 case "$1" in
3546 "$cpp")
3547 echo "Perhaps can we force $cc -E using a wrapper..."
3548 if $wrapper <testcpp.c >testcpp.out 2>&1; \
3549 $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
3550 then
3551 echo "Yup, we can."
3552 cppstdin="$wrapper"
3553 cppminus='';
3554 else
3555 echo "Nope, we'll have to live without it..."
3556 fi
3557 ;;
3558 esac
3559 case "$cpprun" in
3560 "$wrapper")
3561 cpprun=''
3562 cpplast=''
3563 ;;
3564 esac
3565 ;;
3566esac
3567
3568case "$cppstdin" in
3569"$wrapper") ;;
3570*) $rm -f $wrapper;;
3571esac
3572$rm -f testcpp.c testcpp.out
3573
2afac517 3574: determine optimize, if desired, or use for debug flag also
3575case "$optimize" in
2ae324a7 3576' '|$undef) dflt='none';;
2afac517 3577'') dflt='-O';;
3578*) dflt="$optimize";;
4633a7c4 3579esac
2afac517 3580$cat <<EOH
4633a7c4 3581
760ac839 3582Some C compilers have problems with their optimizers. By default, $package
4633a7c4
LW
3583compiles with the -O flag to use the optimizer. Alternately, you might want
3584to use the symbolic debugger, which uses the -g flag (on traditional Unix
3585systems). Either flag can be specified here. To use neither flag, specify
3586the word "none".
3587
3588EOH
3589rp="What optimizer/debugger flag should be used?"
3590. ./myread
3591optimize="$ans"
3592case "$optimize" in
3593'none') optimize=" ";;
3594esac
3595
3596dflt=''
25f94b33
AD
3597: We will not override a previous value, but we might want to
3598: augment a hint file
3599case "$hint" in
3600none|recommended)
4633a7c4
LW
3601 case "$gccversion" in
3602 1*) dflt='-fpcc-struct-return' ;;
3603 esac
3604 case "$optimize" in
3605 *-g*) dflt="$dflt -DDEBUGGING";;
3606 esac
3607 case "$gccversion" in
3608 2*) if test -d /etc/conf/kconfig.d &&
3609 $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
3610 then
3611 dflt="$dflt -posix"
3612 fi
3613 ;;
3614 esac
3615 ;;
3616esac
3617
a4f3eea9 3618case "$mips_type" in
3619*BSD*|'') inclwanted="$locincpth $usrinc";;
3620*) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
3621esac
3622for thisincl in $inclwanted; do
3623 if $test -d $thisincl; then
3624 if $test x$thisincl != x$usrinc; then
3625 case "$dflt" in
3626 *$thisincl*);;
3627 *) dflt="$dflt -I$thisincl";;
3628 esac
3629 fi
3630 fi
3631done
3632
3633inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
3634 xxx=true;
3635elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
3636 xxx=true;
3637else
3638 xxx=false;
3639fi;
3640if $xxx; then
3641 case "$dflt" in
3642 *$2*);;
3643 *) dflt="$dflt -D$2";;
3644 esac;
3645fi'
3646
3647if ./osf1; then
3648 set signal.h __LANGUAGE_C__; eval $inctest
3649else
3650 set signal.h LANGUAGE_C; eval $inctest
3651fi
a4f3eea9 3652
3653case "$hint" in
3654none|recommended) dflt="$ccflags $dflt" ;;
3655*) dflt="$ccflags";;
3656esac
3657
3658case "$dflt" in
3659''|' ') dflt=none;;
3660esac
3661$cat <<EOH
3662
3663Your C compiler may want other flags. For this question you should include
3664-I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
3665but you should NOT include libraries or ld flags like -lwhatever. If you
3666want $package to honor its debug switch, you should include -DDEBUGGING here.
3667Your C compiler might also need additional flags, such as -D_POSIX_SOURCE,
3668-DHIDEMYMALLOC or -DCRIPPLED_CC.
3669
3670To use no flags, specify the word "none".
3671
3672EOH
3673set X $dflt
3674shift
3675dflt=${1+"$@"}
3676rp="Any additional cc flags?"
3677. ./myread
3678case "$ans" in
3679none) ccflags='';;
3680*) ccflags="$ans";;
3681esac
3682
3683: the following weeds options from ccflags that are of no interest to cpp
3684cppflags="$ccflags"
3685case "$gccversion" in
36861*) cppflags="$cppflags -D__GNUC__"
3687esac
3688case "$mips_type" in
3689'');;
3690*BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
3691esac
3692case "$cppflags" in
3693'');;
3694*)
3695 echo " "
3696 echo "Let me guess what the preprocessor flags are..." >&4
3697 set X $cppflags
3698 shift
3699 cppflags=''
3700 $cat >cpp.c <<'EOM'
3701#define BLURFL foo
3702
3703BLURFL xx LFRULB
3704EOM
3705 previous=''
3706 for flag in $*
3707 do
3708 case "$flag" in
3709 -*) ftry="$flag";;
3710 *) ftry="$previous $flag";;
3711 esac
7bac28a0 3712 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
a4f3eea9 3713 >cpp1.out 2>/dev/null && \
3714 $cpprun -DLFRULB=bar $ftry $cpplast <cpp.c \
3715 >cpp2.out 2>/dev/null && \
3716 $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
3717 $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
3718 then
3719 cppflags="$cppflags $ftry"
3720 previous=''
3721 else
3722 previous="$flag"
3723 fi
3724 done
3725 set X $cppflags
3726 shift
3727 cppflags=${1+"$@"}
3728 case "$cppflags" in
3729 *-*) echo "They appear to be: $cppflags";;
3730 esac
3731 $rm -f cpp.c cpp?.out
3732 ;;
3733esac
3734
3735: flags used in final linking phase
3736
3737case "$ldflags" in
3738'') if ./venix; then
3739 dflt='-i -z'
3740 else
3741 dflt=''
3742 fi
3743 case "$ccflags" in
3744 *-posix*) dflt="$dflt -posix" ;;
3745 esac
3746 ;;
3747*) dflt="$ldflags";;
3748esac
3749
3750: Try to guess additional flags to pick up local libraries.
3751for thislibdir in $libpth; do
3752 case " $loclibpth " in
3753 *" $thislibdir "*)
3754 case "$dflt " in
3755 *"-L$thislibdir "*) ;;
3756 *) dflt="$dflt -L$thislibdir" ;;
3757 esac
3758 ;;
3759 esac
3760done
3761
3762case "$dflt" in
3763'') dflt='none' ;;
3764esac
3765
3766$cat <<EOH
3767
3768Your C linker may need flags. For this question you should
3769include -L/whatever and any other flags used by the C linker, but you
3770should NOT include libraries like -lwhatever.
3771
3772Make sure you include the appropriate -L/path flags if your C linker
3773does not normally search all of the directories you specified above,
3774namely
3775 $libpth
3776To use no flags, specify the word "none".
3777
3778EOH
3779
3780rp="Any additional ld flags (NOT including libraries)?"
3781. ./myread
3782case "$ans" in
3783none) ldflags='';;
3784*) ldflags="$ans";;
3785esac
3786rmlist="$rmlist pdp11"
3787
3788: coherency check
3789echo " "
1e422769 3790echo "Checking your choice of C compiler, libs, and flags for coherency..." >&4
3791set X $cc $optimize $ccflags $ldflags -o try try.c $libs
a4f3eea9 3792shift
3793$cat >try.msg <<EOM
3794I've tried to compile and run a simple program with:
3795
3796 $*
3797 ./try
3798
3799and I got the following output:
3800
3801EOM
3802$cat > try.c <<'EOF'
3803#include <stdio.h>
3804main() { exit(0); }
3805EOF
3806dflt=y
1e422769 3807if sh -c "$cc $optimize $ccflags -o try try.c $ldflags $libs" >>try.msg 2>&1; then
a4f3eea9 3808 if sh -c './try' >>try.msg 2>&1; then
3809 dflt=n
3810 else
3811 echo "The program compiled OK, but exited with status $?." >>try.msg
3812 rp="You have a problem. Shall I abort Configure"
3813 dflt=y
3814 fi
3815else
3816 echo "I can't compile the test program." >>try.msg
3817 rp="You have a BIG problem. Shall I abort Configure"
3818 dflt=y
3819fi
3820case "$dflt" in
3821y)
3822 $cat try.msg
3823 case "$knowitall" in
3824 '')
3825 echo "(The supplied flags might be incorrect with this C compiler.)"
3826 ;;
3827 *) dflt=n;;
3828 esac
3829 echo " "
3830 . ./myread
3831 case "$ans" in
3832 n*|N*) ;;
3833 *) echo "Ok. Stopping Configure." >&4
3834 exit 1
3835 ;;
3836 esac
3837 ;;
3838n) echo "OK, that should do.";;
3839esac
3840$rm -f try try.* core
3841
3842echo " "
3843echo "Checking for GNU C Library..." >&4
3844cat >gnulibc.c <<EOM
3845int
3846main()
3847{
3848 return __libc_main();
3849}
3850EOM
3851if $cc $ccflags $ldflags -o gnulibc gnulibc.c $libs >/dev/null 2>&1 && \
3852 ./gnulibc | $contains '^GNU C Library' >/dev/null 2>&1; then
3853 val="$define"
3854 echo "You are using the GNU C Library"
4633a7c4 3855else
a4f3eea9 3856 val="$undef"
3857 echo "You are not using the GNU C Library"
4633a7c4 3858fi
a4f3eea9 3859$rm -f gnulibc*
3860set d_gnulibc
3861eval $setvar
25f94b33 3862
a4f3eea9 3863: see if nm is to be used to determine whether a symbol is defined or not
3864case "$usenm" in
3865'')
3866 case "$d_gnulibc" in
3867 $define)
3868 dflt=n
3869 ;;
3870 *)
3871 dflt=`egrep 'inlibc|csym' ../Configure | wc -l 2>/dev/null`
3872 if $test $dflt -gt 20; then
3873 dflt=y
3874 else
3875 dflt=n
3876 fi
3877 ;;
3878 esac
3879 ;;
3880*)
3881 case "$usenm" in
3882 true) dflt=y;;
3883 *) dflt=n;;
3884 esac
3885 ;;
25f94b33 3886esac
a4f3eea9 3887$cat <<EOM
4633a7c4 3888
a4f3eea9 3889I can use 'nm' to extract the symbols from your C libraries. This is a time
3890consuming task which may generate huge output on the disk (up to 3 megabytes)
3891but that should make the symbols extraction faster. The alternative is to skip
3892the 'nm' extraction part and to compile a small test program instead to
3893determine whether each symbol is present. If you have a fast C compiler and/or
3894if your 'nm' output cannot be parsed, this may be the best solution.
3895You shouldn't let me use 'nm' if you have the GNU C Library.
4633a7c4 3896
a4f3eea9 3897EOM
3898rp='Shall I use nm to extract C symbols from the libraries?'
4633a7c4
LW
3899. ./myread
3900case "$ans" in
a4f3eea9 3901n|N) usenm=false;;
3902*) usenm=true;;
4633a7c4
LW
3903esac
3904
a4f3eea9 3905runnm=$usenm
3906case "$reuseval" in
3907true) runnm=false;;
4633a7c4 3908esac
a4f3eea9 3909
3910: nm options which may be necessary
3911case "$nm_opt" in
3912'') if $test -f /mach_boot; then
1e422769 3913 nm_opt='' # Mach
a4f3eea9 3914 elif $test -d /usr/ccs/lib; then
1e422769 3915 nm_opt='-p' # Solaris (and SunOS?)
a4f3eea9 3916 elif $test -f /dgux; then
1e422769 3917 nm_opt='-p' # DG-UX
2ae324a7 3918 elif $test -f /lib64/rld; then
1e422769 3919 nm_opt='-p' # 64-bit Irix
a4f3eea9 3920 else
3921 nm_opt=''
3922 fi;;
4633a7c4 3923esac
4633a7c4 3924
a4f3eea9 3925: nm options which may be necessary for shared libraries but illegal
3926: for archive libraries. Thank you, Linux.
3927case "$nm_so_opt" in
3928'') case "$myuname" in
3929 *linux*)
3930 if nm --help | $grep 'dynamic' > /dev/null 2>&1; then
3931 nm_so_opt='--dynamic'
4633a7c4 3932 fi
a4f3eea9 3933 ;;
4633a7c4 3934 esac
4633a7c4
LW
3935 ;;
3936esac
3937
a4f3eea9 3938case "$runnm" in
3939true)
3940: get list of predefined functions in a handy place
3941echo " "
3942case "$libc" in
3943'') libc=unknown
3944 case "$libs" in
5f05dabc 3945 *-lc_s*) libc=`./loc libc_s$lib_ext $libc $libpth`
a4f3eea9 3946 esac
3947 ;;
3948esac
3949libnames='';
3950case "$libs" in
3951'') ;;
3952*) for thislib in $libs; do
3953 case "$thislib" in
3954 -lc|-lc_s)
3955 : Handle C library specially below.
3956 ;;
3957 -l*)
3958 thislib=`echo $thislib | $sed -e 's/^-l//'`
3959 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
3960 :
3961 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
3962 :
5f05dabc 3963 elif try=`./loc lib$thislib$lib_ext X $libpth`; $test -f "$try"; then
a4f3eea9 3964 :
d97d40b5
IZ
3965 elif try=`./loc $thislib$lib_ext X $libpth`; $test -f "$try"; then
3966 :
a4f3eea9 3967 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
3968 :
3969 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
3970 :
5f05dabc 3971 elif try=`./loc Slib$thislib$lib_ext X $xlibpth`; $test -f "$try"; then
a4f3eea9 3972 :
3973 else
3974 try=''
3975 fi
3976 libnames="$libnames $try"
3977 ;;
3978 *) libnames="$libnames $thislib" ;;
3979 esac
3980 done
3981 ;;
3982esac
3983xxx=normal
3984case "$libc" in
3985unknown)
3986 set /lib/libc.$so
3987 for xxx in $libpth; do
3988 $test -r $1 || set $xxx/libc.$so
3989 : The messy sed command sorts on library version numbers.
3990 $test -r $1 || \
3991 set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
3992 tr ' ' '\012' | egrep -v '\.[A-Za-z]*$' | $sed -e '
3993 h
3994 s/[0-9][0-9]*/0000&/g
3995 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
3996 G
3997 s/\n/ /' | \
3998 sort | $sed -e 's/^.* //'`
3999 eval set \$$#
4000 done
4001 $test -r $1 || set /usr/ccs/lib/libc.$so
5f05dabc 4002 $test -r $1 || set /lib/libsys_s$lib_ext
a4f3eea9 4003 ;;
4004*)
4005 set blurfl
4006 ;;
4007esac
4008if $test -r "$1"; then
4009 echo "Your (shared) C library seems to be in $1."
4010 libc="$1"
4011elif $test -r /lib/libc && $test -r /lib/clib; then
4012 echo "Your C library seems to be in both /lib/clib and /lib/libc."
4013 xxx=apollo
4014 libc='/lib/clib /lib/libc'
4015 if $test -r /lib/syslib; then
4016 echo "(Your math library is in /lib/syslib.)"
4017 libc="$libc /lib/syslib"
4018 fi
4019elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4020 echo "Your C library seems to be in $libc, as you said before."
5f05dabc 4021elif $test -r $incpath/usr/lib/libc$lib_ext; then
4022 libc=$incpath/usr/lib/libc$lib_ext;
a4f3eea9 4023 echo "Your C library seems to be in $libc. That's fine."
5f05dabc 4024elif $test -r /lib/libc$lib_ext; then
4025 libc=/lib/libc$lib_ext;
a4f3eea9 4026 echo "Your C library seems to be in $libc. You're normal."
4027else
5f05dabc 4028 if tans=`./loc libc$lib_ext blurfl/dyick $libpth`; $test -r "$tans"; then
a4f3eea9 4029 :
4030 elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
4031 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
4032 elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
4033 :
5f05dabc 4034 elif tans=`./loc Slibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 4035 :
5f05dabc 4036 elif tans=`./loc Mlibc$lib_ext blurfl/dyick $xlibpth`; $test -r "$tans"; then
a4f3eea9 4037 :
4633a7c4 4038 else
5f05dabc 4039 tans=`./loc Llibc$lib_ext blurfl/dyick $xlibpth`
4633a7c4 4040 fi
a4f3eea9 4041 if $test -r "$tans"; then
4042 echo "Your C library seems to be in $tans, of all places."
4043 libc=$tans
4044 else
4045 libc='blurfl'
4046 fi
4047fi
4048if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
4049 dflt="$libc"
4050 cat <<EOM
4633a7c4 4051
a4f3eea9 4052If the guess above is wrong (which it might be if you're using a strange
4053compiler, or your machine supports multiple models), you can override it here.
4633a7c4 4054
a4f3eea9 4055EOM
4056else
4057 dflt=''
4058 echo $libpth | tr ' ' '\012' | sort | uniq > libpath
4059 cat >&4 <<EOM
4060I can't seem to find your C library. I've looked in the following places:
4633a7c4 4061
a4f3eea9 4062EOM
4063 $sed 's/^/ /' libpath
4064 cat <<EOM
4633a7c4 4065
a4f3eea9 4066None of these seems to contain your C library. I need to get its name...
4633a7c4 4067
a4f3eea9 4068EOM
4069fi
4070fn=f
4071rp='Where is your C library?'
4072. ./getfile
4073libc="$ans"
4633a7c4 4074
4633a7c4 4075echo " "
a4f3eea9 4076echo $libc $libnames | tr ' ' '\012' | sort | uniq > libnames
4077set X `cat libnames`
4633a7c4 4078shift
a4f3eea9 4079xxx=files