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