This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
perldelta for [perl #19135]
[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#
613d6c3e 14# Note: this Configure script was generated automatically. Rather than
2304df62 15# working with this copy of Configure, you may wish to get metaconfig.
613d6c3e
MB
16# The dist package (which contains metaconfig) is available via SVN:
17# svn co https://svn.sourceforge.net/svnroot/dist/trunk/dist
2304df62 18#
6f5be6d1
MB
19# Though this script was generated by metaconfig from metaunits, it is
20# OK to send patches against Configure itself. It's up to the Configure
21# pumpkin to backport the patch to the metaunits if it is accepted.
4471067f
JV
22# For more information on patching Configure, see pod/perlhack.pod
23#
6f5be6d1
MB
24# The metaunits are also available from the public git repository:
25# http://perl5.git.perl.org/metaconfig.git/ or
26# $ git clone git://perl5.git.perl.org/metaconfig.git metaconfig
5cadb3f3 27#
5cadb3f3
MB
28# See Porting/pumpkin.pod for more information on metaconfig.
29#
2304df62 30
613d6c3e 31# $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
2304df62 32#
9e08e8f0 33# Generated on Thu Aug 12 11:38:08 CEST 2010 [metaconfig 3.5 PL0]
7f2de2d2 34# (with additional metaconfig patches by perlbug@perl.org)
2304df62 35
283fdd21 36cat >c1$$ <<EOF
2304df62
AD
37ARGGGHHHH!!!!!
38
39SCO csh still thinks true is false. Write to SCO today and tell them that next
40year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
41
42(Actually, Configure ought to just patch csh in place. Hmm. Hmmmmm. All
43we'd have to do is go in and swap the && and || tokens, wherever they are.)
44
45[End of diatribe. We now return you to your regularly scheduled programming...]
46EOF
283fdd21 47cat >c2$$ <<EOF
2304df62
AD
48
49OOPS! You naughty creature! You didn't run Configure with sh!
50I will attempt to remedy the situation by running sh for you...
51EOF
52
283fdd21 53true || cat c1$$ c2$$
2304df62
AD
54true || exec sh $0 $argv:q
55
283fdd21 56(exit $?0) || cat c2$$
2304df62 57(exit $?0) || exec sh $0 $argv:q
283fdd21 58rm -f c1$$ c2$$
2304df62 59
f6538904 60if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
d03b3b00 61 cat <<EOF
cbee2ce6
JH
62***
63*** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
64*** Configure that well. (Plan 9 is close to UNIX but not close enough.)
65*** Please read the README.plan9 for further instructions.
66*** Cannot continue, aborting.
67***
68EOF
69 exit 1
70fi
71
f8e2af1d 72if test ! -c /dev/null ; then
d03b3b00 73 cat <<EOF
f8e2af1d
MC
74***
75*** I'm sorry, but /dev/null appears to be a file rather than a device.
76*** Please consult your operating sytem's notes for making a device
77*** in /dev.
78*** Cannot continue, aborting.
79***
80EOF
81 exit 1
82fi
83
a0d0e21e
LW
84: compute my invocation name
85me=$0
86case "$0" in
87*/*)
88 me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
89 test "$me" || me=$0
90 ;;
91esac
92
dfe9444c 93: Proper separator for the PATH environment variable
8e07c86e 94p_=:
613d6c3e 95: On OS/2 this directory should exist if this is not floppy only system ":-]"
5c728af0 96if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
613d6c3e 97 if test -n "$OS2_SHELL"; then
dfe9444c
AD
98 p_=\;
99 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
100 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
5c728af0 101 is_os2=yes
c4f23d77 102 elif test -n "$DJGPP"; then
495e2cbe
MB
103 case "X${MACHTYPE:-nonesuchmach}" in
104 *cygwin) ;;
105 *) p_=\; ;;
106 esac
dfe9444c 107 fi
39e571d4 108fi
a0d0e21e
LW
109
110: Proper PATH setting
111paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
16d20bd9 112paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
232e078e 113paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
16d20bd9 114paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
232e078e 115paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
87bdd940 116paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
232e078e
AD
117paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
118paths="$paths /sbin /usr/sbin /usr/libexec"
3c728e00 119paths="$paths /system/gnu_library/bin"
a0d0e21e
LW
120
121for p in $paths
122do
8e07c86e
AD
123 case "$p_$PATH$p_" in
124 *$p_$p$p_*) ;;
125 *) test -d $p && PATH=$PATH$p_$p ;;
a0d0e21e
LW
126 esac
127done
128
8e07c86e 129PATH=.$p_$PATH
2304df62
AD
130export PATH
131
dfe9444c
AD
132: shall we be using ksh?
133inksh=''
134needksh=''
135avoidksh=''
136newsh=/bin/ksh
137changesh=''
ff0cee69 138if (PATH=.; alias -x) >/dev/null 2>&1; then
dfe9444c
AD
139 inksh=true
140fi
141if test -f /hp-ux -a -f /bin/ksh; then
142 needksh='to avoid sh bug in "here document" expansion'
143fi
144if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
145 if test X`/usr/bin/uname -v` = X4; then
146 avoidksh="to avoid AIX 4's /bin/sh"
147 newsh=/usr/bin/bsh
2304df62 148 fi
dfe9444c 149fi
cf04f91f
JH
150if test -f /osf_boot -a -f /usr/sbin/setld; then
151 if test X`/usr/bin/uname -s` = XOSF1; then
613d6c3e
MB
152 avoidksh="to avoid Digital UNIX' ksh"
153 newsh=/bin/sh
154 unset BIN_SH
cf04f91f
JH
155 fi
156fi
dfe9444c
AD
157case "$inksh/$needksh" in
158/[a-z]*)
c4f23d77 159 ENV=''
dfe9444c
AD
160 changesh=true
161 reason="$needksh"
162 ;;
163esac
164case "$inksh/$avoidksh" in
165true/[a-z]*)
166 changesh=true
167 reason="$avoidksh"
168 ;;
169esac
170case "$inksh/$needksh-$avoidksh-" in
171true/--)
a0d0e21e
LW
172 cat <<EOM
173(I see you are using the Korn shell. Some ksh's blow up on $me,
dfe9444c 174mainly on older exotic systems. If yours does, try the Bourne shell instead.)
ff0cee69 175EOM
dfe9444c
AD
176 ;;
177esac
178case "$changesh" in
179true)
2e2a97a6 180 export newsh
dfe9444c
AD
181 echo "(Feeding myself to $newsh $reason.)"
182 case "$0" in
183 Configure|*/Configure) exec $newsh $0 "$@";;
184 *) exec $newsh Configure "$@";;
185 esac
186 ;;
187esac
7730b9f4 188test -x "${newsh}" || unset newsh
2304df62 189
613d6c3e 190: if needed, set CDPATH to a harmless value that is not chatty
bfb7748a
AD
191: avoid bash 2.02 problems with empty CDPATH.
192case "$CDPATH" in
193'') ;;
194*) case "$SHELL" in
613d6c3e
MB
195 *bash*) CDPATH='.' ;;
196 *) CDPATH='' ;;
bfb7748a
AD
197 esac
198 ;;
199esac
613d6c3e 200
2304df62
AD
201: Configure runs within the UU subdirectory
202test -d UU || mkdir UU
8e07c86e 203cd UU && rm -f ./*
2304df62 204
6b356c8e
JH
205ccname=''
206ccversion=''
b4eb6b3d
JH
207ccsymbols=''
208cppccsymbols=''
209cppsymbols=''
5440bc8e
JH
210from=''
211run=''
212targetarch=''
213to=''
214usecrosscompile=''
61c26d18 215extern_C=''
6b34ded5 216mistrustnm=''
1be1b388 217usedevel=''
9c839522 218perllibs=''
b4eb6b3d
JH
219dynamic_ext=''
220extensions=''
221known_extensions=''
222nonxs_ext=''
223static_ext=''
224useopcode=''
225useposix=''
6fcddf3b 226extras=''
ecfc5424 227d_bsd=''
40a7a20a 228d_eunice=''
2304df62
AD
229d_xenix=''
230eunicefix=''
dfe9444c 231ar=''
2304df62
AD
232awk=''
233bash=''
234bison=''
235byacc=''
236cat=''
237chgrp=''
238chmod=''
239chown=''
ecfc5424 240comm=''
2304df62
AD
241compress=''
242cp=''
243cpio=''
244cpp=''
245csh=''
246date=''
247echo=''
248egrep=''
249emacs=''
250expr=''
251find=''
252flex=''
3c728e00 253gmake=''
2304df62 254grep=''
8ff267be 255gzip=''
2304df62
AD
256inews=''
257ksh=''
258less=''
259line=''
260lint=''
261ln=''
262lp=''
263lpr=''
264ls=''
265mail=''
266mailx=''
dfe9444c 267make=''
2304df62
AD
268mkdir=''
269more=''
270mv=''
693762b4 271nm=''
2304df62
AD
272nroff=''
273perl=''
274pg=''
275pmake=''
276pr=''
277rm=''
278rmail=''
279sed=''
280sendmail=''
2304df62
AD
281shar=''
282sleep=''
283smail=''
284sort=''
285submit=''
286tail=''
287tar=''
288tbl=''
693762b4 289tee=''
2304df62
AD
290test=''
291touch=''
292tr=''
293troff=''
294uname=''
295uniq=''
296uuname=''
297vi=''
298zcat=''
8ff267be 299zip=''
b4eb6b3d
JH
300full_ar=''
301full_sed=''
a0d0e21e 302libswanted=''
2304df62
AD
303hint=''
304myuname=''
85e6fe83
LW
305osname=''
306osvers=''
2304df62
AD
307Author=''
308Date=''
309Header=''
310Id=''
311Locker=''
312Log=''
313RCSfile=''
314Revision=''
315Source=''
316State=''
dfe9444c
AD
317_a=''
318_exe=''
319_o=''
4633a7c4
LW
320archobjs=''
321exe_ext=''
322firstmakefile=''
323lib_ext=''
324obj_ext=''
325path_sep=''
5b813a60 326rm_try=''
b4eb6b3d 327afs=''
a6d26a0d 328afsroot=''
b4eb6b3d
JH
329alignbytes=''
330ansi2knr=''
331archlib=''
332archlibexp=''
333d_archlib=''
334installarchlib=''
335archname=''
336myarchname=''
337d_atolf=''
338d_atoll=''
339baserev=''
340bin=''
341binexp=''
f3f1a2d8 342initialinstalllocation=''
b4eb6b3d 343installbin=''
f3f1a2d8 344userelocatableinc=''
b4eb6b3d 345byteorder=''
2304df62 346cc=''
2304df62
AD
347ccflags=''
348cppflags=''
349ldflags=''
350lkflags=''
8e07c86e 351locincpth=''
2304df62 352optimize=''
b4eb6b3d 353cf_email=''
2304df62
AD
354cf_by=''
355cf_time=''
c193ef60
MB
356charbits=''
357charsize=''
2304df62 358contains=''
b4eb6b3d 359cpp_stuff=''
2304df62
AD
360cpplast=''
361cppminus=''
362cpprun=''
363cppstdin=''
74cac757 364d__fwalk=''
b4eb6b3d
JH
365d_access=''
366d_accessx=''
55954f19 367d_aintl=''
b4eb6b3d 368d_alarm=''
10bc17b6
JH
369asctime_r_proto=''
370d_asctime_r=''
fcdf39cf 371d_attribute_deprecated=''
0dbb1585
AL
372d_attribute_format=''
373d_attribute_malloc=''
374d_attribute_nonnull=''
375d_attribute_noreturn=''
376d_attribute_pure=''
377d_attribute_unused=''
378d_attribute_warn_unused_result=''
dcb594bc 379d_printf_format_null=''
b4eb6b3d
JH
380d_bcmp=''
381d_bcopy=''
635aebb7
AL
382d_builtin_choose_expr=''
383d_builtin_expect=''
b4eb6b3d 384d_bzero=''
a2d23ec2 385d_c99_variadic_macros=''
b4eb6b3d
JH
386d_casti32=''
387castflags=''
388d_castneg=''
389d_chown=''
390d_chroot=''
391d_chsize=''
758a5d79 392d_class=''
b0a2e8e6 393d_clearenv=''
b4eb6b3d
JH
394d_closedir=''
395d_void_closedir=''
4e0554ec 396d_cmsghdr_s=''
b4eb6b3d 397d_const=''
36adc09b 398d_copysignl=''
666ea192 399d_cplusplus=''
b4eb6b3d
JH
400cryptlib=''
401d_crypt=''
10bc17b6
JH
402crypt_r_proto=''
403d_crypt_r=''
b4eb6b3d
JH
404d_csh=''
405full_csh=''
13cfc98d 406d_ctermid=''
10bc17b6
JH
407ctermid_r_proto=''
408d_ctermid_r=''
409ctime_r_proto=''
410d_ctime_r=''
b4eb6b3d
JH
411d_cuserid=''
412d_dbl_dig=''
2ef53570 413d_dbminitproto=''
b4eb6b3d 414d_difftime=''
de52168c 415d_dir_dd_fd=''
ae0e3d3b 416d_dirfd=''
b4eb6b3d 417d_dlerror=''
a0d0e21e 418d_dlopen=''
b4eb6b3d
JH
419d_dlsymun=''
420d_dosuid=''
421d_suidsafe=''
10bc17b6
JH
422d_drand48_r=''
423drand48_r_proto=''
b4eb6b3d
JH
424d_drand48proto=''
425d_dup2=''
426d_eaccess=''
427d_endgrent=''
10bc17b6
JH
428d_endgrent_r=''
429endgrent_r_proto=''
b4eb6b3d 430d_endhent=''
10bc17b6
JH
431d_endhostent_r=''
432endhostent_r_proto=''
b4eb6b3d 433d_endnent=''
10bc17b6
JH
434d_endnetent_r=''
435endnetent_r_proto=''
b4eb6b3d 436d_endpent=''
10bc17b6
JH
437d_endprotoent_r=''
438endprotoent_r_proto=''
b4eb6b3d 439d_endpwent=''
10bc17b6
JH
440d_endpwent_r=''
441endpwent_r_proto=''
b4eb6b3d 442d_endsent=''
10bc17b6
JH
443d_endservent_r=''
444endservent_r_proto=''
15b61c98 445d_faststdio=''
b363b713 446d_fchdir=''
b4eb6b3d
JH
447d_fchmod=''
448d_fchown=''
449d_fcntl=''
9d9004a9 450d_fcntl_can_lock=''
b4eb6b3d
JH
451d_fd_macros=''
452d_fd_set=''
453d_fds_bits=''
454d_fgetpos=''
758a5d79
JH
455d_finite=''
456d_finitel=''
b4eb6b3d
JH
457d_flexfnam=''
458d_flock=''
2ef53570 459d_flockproto=''
b4eb6b3d 460d_fork=''
758a5d79
JH
461d_fp_class=''
462d_fpclass=''
463d_fpclassify=''
464d_fpclassl=''
b4eb6b3d
JH
465d_fpos64_t=''
466d_frexpl=''
467d_fs_data_s=''
468d_fseeko=''
469d_fsetpos=''
470d_fstatfs=''
411ab01c 471d_fsync=''
b4eb6b3d
JH
472d_ftello=''
473d_ftime=''
474d_gettimeod=''
dc814df1 475d_futimes=''
b4eb6b3d 476d_Gconvert=''
5086dff9 477d_getaddrinfo=''
b4eb6b3d
JH
478d_getcwd=''
479d_getespwnam=''
480d_getfsstat=''
481d_getgrent=''
10bc17b6
JH
482d_getgrent_r=''
483getgrent_r_proto=''
484d_getgrgid_r=''
485getgrgid_r_proto=''
486d_getgrnam_r=''
487getgrnam_r_proto=''
b4eb6b3d
JH
488d_getgrps=''
489d_gethbyaddr=''
490d_gethbyname=''
491d_gethent=''
492aphostname=''
493d_gethname=''
494d_phostname=''
495d_uname=''
10bc17b6
JH
496d_gethostbyaddr_r=''
497gethostbyaddr_r_proto=''
498d_gethostbyname_r=''
499gethostbyname_r_proto=''
500d_gethostent_r=''
501gethostent_r_proto=''
b4eb6b3d 502d_gethostprotos=''
4e0554ec 503d_getitimer=''
b4eb6b3d 504d_getlogin=''
10bc17b6
JH
505d_getlogin_r=''
506getlogin_r_proto=''
b4eb6b3d
JH
507d_getmnt=''
508d_getmntent=''
5086dff9 509d_getnameinfo=''
b4eb6b3d
JH
510d_getnbyaddr=''
511d_getnbyname=''
512d_getnent=''
10bc17b6
JH
513d_getnetbyaddr_r=''
514getnetbyaddr_r_proto=''
515d_getnetbyname_r=''
516getnetbyname_r_proto=''
517d_getnetent_r=''
518getnetent_r_proto=''
b4eb6b3d 519d_getnetprotos=''
0c0643d0 520d_getpagsz=''
b4eb6b3d
JH
521d_getpent=''
522d_getpgid=''
523d_getpgrp2=''
524d_bsdgetpgrp=''
525d_getpgrp=''
526d_getppid=''
527d_getprior=''
528d_getpbyname=''
529d_getpbynumber=''
10bc17b6
JH
530d_getprotobyname_r=''
531getprotobyname_r_proto=''
532d_getprotobynumber_r=''
533getprotobynumber_r_proto=''
534d_getprotoent_r=''
535getprotoent_r_proto=''
b4eb6b3d
JH
536d_getprotoprotos=''
537d_getprpwnam=''
538d_getpwent=''
10bc17b6
JH
539d_getpwent_r=''
540getpwent_r_proto=''
541d_getpwnam_r=''
542getpwnam_r_proto=''
543d_getpwuid_r=''
544getpwuid_r_proto=''
b4eb6b3d 545d_getsent=''
10bc17b6
JH
546d_getservbyname_r=''
547getservbyname_r_proto=''
548d_getservbyport_r=''
549getservbyport_r_proto=''
550d_getservent_r=''
551getservent_r_proto=''
b4eb6b3d
JH
552d_getservprotos=''
553d_getspnam=''
10bc17b6
JH
554d_getspnam_r=''
555getspnam_r_proto=''
b4eb6b3d
JH
556d_getsbyname=''
557d_getsbyport=''
10bc17b6
JH
558d_gmtime_r=''
559gmtime_r_proto=''
a4f3eea9 560d_gnulibc=''
5f6e0ee4 561gnulibc_version=''
b4eb6b3d
JH
562d_hasmntopt=''
563d_htonl=''
55954f19 564d_ilogbl=''
b4eb6b3d 565d_inetaton=''
5086dff9
MB
566d_inetntop=''
567d_inetpton=''
b4eb6b3d
JH
568d_int64_t=''
569d_isascii=''
758a5d79
JH
570d_isfinite=''
571d_isinf=''
b4eb6b3d
JH
572d_isnan=''
573d_isnanl=''
574d_killpg=''
575d_lchown=''
576d_ldbl_dig=''
0a0abfba 577d_libm_lib_version=''
b4eb6b3d 578d_link=''
10bc17b6 579d_localtime_r=''
8572b25d 580d_localtime_r_needs_tzset=''
10bc17b6 581localtime_r_proto=''
b4eb6b3d
JH
582d_locconv=''
583d_lockf=''
584d_longdbl=''
585longdblsize=''
586d_longlong=''
587longlongsize=''
588d_lseekproto=''
589d_lstat=''
590d_madvise=''
7dd121ae
MB
591d_malloc_good_size=''
592d_malloc_size=''
b4eb6b3d
JH
593d_mblen=''
594d_mbstowcs=''
595d_mbtowc=''
596d_memchr=''
597d_memcmp=''
598d_memcpy=''
599d_memmove=''
600d_memset=''
601d_mkdir=''
602d_mkdtemp=''
603d_mkfifo=''
604d_mkstemp=''
605d_mkstemps=''
606d_mktime=''
607d_mmap=''
608mmaptype=''
609d_modfl=''
e67aeab1 610d_modfl_pow32_bug=''
bc9a1b2c 611d_modflproto=''
b4eb6b3d
JH
612d_mprotect=''
613d_msg=''
614d_msgctl=''
615d_msgget=''
4e0554ec 616d_msghdr_s=''
b4eb6b3d
JH
617d_msgrcv=''
618d_msgsnd=''
619d_msync=''
620d_munmap=''
621d_nice=''
2765b840 622d_nl_langinfo=''
b4eb6b3d
JH
623d_off64_t=''
624d_open3=''
625d_fpathconf=''
626d_pathconf=''
627d_pause=''
628d_pipe=''
629d_poll=''
2304df62 630d_portable=''
c796e3db
MB
631d_prctl=''
632d_prctl_set_name=''
a33c94aa 633d_procselfexe=''
f24dbf84 634procselfexe=''
b4eb6b3d
JH
635d_old_pthread_create_joinable=''
636old_pthread_create_joinable=''
d6483fcc 637d_pthread_atfork=''
58d975c3 638d_pthread_attr_setscope=''
b4eb6b3d
JH
639d_pthread_yield=''
640d_sched_yield=''
641sched_yield=''
642d_qgcvt=''
10bc17b6
JH
643d_random_r=''
644random_r_proto=''
645d_readdir64_r=''
646readdir64_r_proto=''
b4eb6b3d
JH
647d_readdir=''
648d_rewinddir=''
649d_seekdir=''
650d_telldir=''
10bc17b6
JH
651d_readdir_r=''
652readdir_r_proto=''
b4eb6b3d 653d_readlink=''
4e0554ec
JH
654d_readv=''
655d_recvmsg=''
b4eb6b3d
JH
656d_rename=''
657d_rmdir=''
658d_safebcpy=''
659d_safemcpy=''
660d_sanemcmp=''
ef9f17be 661d_sbrkproto=''
55954f19 662d_scalbnl=''
b4eb6b3d
JH
663d_select=''
664d_sem=''
665d_semctl=''
666d_semget=''
667d_semop=''
4e0554ec 668d_sendmsg=''
b4eb6b3d
JH
669d_setegid=''
670d_seteuid=''
671d_setgrent=''
10bc17b6
JH
672d_setgrent_r=''
673setgrent_r_proto=''
b4eb6b3d
JH
674d_setgrps=''
675d_sethent=''
10bc17b6
JH
676d_sethostent_r=''
677sethostent_r_proto=''
4e0554ec 678d_setitimer=''
b4eb6b3d
JH
679d_setlinebuf=''
680d_setlocale=''
10bc17b6
JH
681d_setlocale_r=''
682setlocale_r_proto=''
b4eb6b3d 683d_setnent=''
10bc17b6
JH
684d_setnetent_r=''
685setnetent_r_proto=''
b4eb6b3d
JH
686d_setpent=''
687d_setpgid=''
688d_setpgrp2=''
689d_bsdsetpgrp=''
690d_setpgrp=''
691d_setprior=''
692d_setproctitle=''
10bc17b6
JH
693d_setprotoent_r=''
694setprotoent_r_proto=''
b4eb6b3d 695d_setpwent=''
10bc17b6
JH
696d_setpwent_r=''
697setpwent_r_proto=''
b4eb6b3d
JH
698d_setregid=''
699d_setresgid=''
700d_setresuid=''
701d_setreuid=''
702d_setrgid=''
703d_setruid=''
704d_setsent=''
10bc17b6
JH
705d_setservent_r=''
706setservent_r_proto=''
b4eb6b3d
JH
707d_setsid=''
708d_setvbuf=''
709d_sfio=''
710usesfio=''
711d_shm=''
712d_shmat=''
713d_shmatprototype=''
714shmattype=''
715d_shmctl=''
716d_shmdt=''
717d_shmget=''
718d_sigaction=''
ed140128 719d_signbit=''
983dbef6 720d_sigprocmask=''
b4eb6b3d 721d_sigsetjmp=''
5f106f9c 722usesitecustomize=''
4f5da3e9
SP
723d_snprintf=''
724d_vsnprintf=''
49a78c82 725d_sockatmark=''
2ef53570 726d_sockatmarkproto=''
b4eb6b3d
JH
727d_msg_ctrunc=''
728d_msg_dontroute=''
729d_msg_oob=''
730d_msg_peek=''
731d_msg_proxy=''
732d_oldsock=''
733d_scm_rights=''
734d_socket=''
735d_sockpair=''
736sockethdr=''
737socketlib=''
738d_socklen_t=''
739d_socks5_init=''
360321b3 740d_sprintf_returns_strlen=''
b4eb6b3d 741d_sqrtl=''
10bc17b6
JH
742d_srand48_r=''
743srand48_r_proto=''
744d_srandom_r=''
745srandom_r_proto=''
eef837ea 746d_sresgproto=''
640374d0 747d_sresuproto=''
b4eb6b3d
JH
748d_statblks=''
749d_statfs_f_flags=''
750d_statfs_s=''
17a6c8e3
AD
751d_static_inline=''
752perl_static_inline=''
b4eb6b3d
JH
753d_fstatvfs=''
754d_statvfs=''
755d_stdio_cnt_lval=''
756d_stdio_ptr_lval=''
a7ffa9b9
NC
757d_stdio_ptr_lval_nochange_cnt=''
758d_stdio_ptr_lval_sets_cnt=''
b4eb6b3d
JH
759d_stdiobase=''
760d_stdstdio=''
761stdio_base=''
762stdio_bufsiz=''
763stdio_cnt=''
764stdio_filbuf=''
765stdio_ptr=''
766d_index=''
767d_strchr=''
768d_strcoll=''
769d_strctcpy=''
770d_strerrm=''
771d_strerror=''
772d_sysernlst=''
773d_syserrlst=''
10bc17b6
JH
774d_strerror_r=''
775strerror_r_proto=''
b3c85772 776d_strftime=''
08c92000
MB
777d_strlcat=''
778d_strlcpy=''
b4eb6b3d
JH
779d_strtod=''
780d_strtol=''
781d_strtold=''
782d_strtoll=''
28e5dec8 783d_strtoq=''
b4eb6b3d
JH
784d_strtoul=''
785d_strtoull=''
786d_strtouq=''
787d_strxfrm=''
788d_symlink=''
789d_syscall=''
2ef53570 790d_syscallproto=''
b4eb6b3d
JH
791d_sysconf=''
792d_system=''
793d_tcgetpgrp=''
794d_tcsetpgrp=''
795d_telldirproto=''
796d_time=''
797timetype=''
96938616
MB
798d_asctime64=''
799d_ctime64=''
800d_difftime64=''
801d_gmtime64=''
802d_localtime64=''
803d_mktime64=''
cbb9e8a7 804d_timegm=''
b4eb6b3d
JH
805clocktype=''
806d_times=''
10bc17b6
JH
807d_tmpnam_r=''
808tmpnam_r_proto=''
b4eb6b3d 809d_truncate=''
10bc17b6
JH
810d_ttyname_r=''
811ttyname_r_proto=''
b4eb6b3d 812d_tzname=''
4e0554ec
JH
813d_u32align=''
814d_ualarm=''
b4eb6b3d
JH
815d_umask=''
816d_semctl_semid_ds=''
817d_semctl_semun=''
818d_union_semun=''
758a5d79 819d_unordered=''
bdf33aa7 820d_unsetenv=''
4e0554ec 821d_usleep=''
2ef53570 822d_usleepproto=''
b4eb6b3d 823d_ustat=''
233e16ce 824d_pseudofork=''
b4eb6b3d
JH
825d_vfork=''
826usevfork=''
827d_voidsig=''
828signal_t=''
829d_volatile=''
830d_charvspr=''
831d_vprintf=''
832d_wait4=''
833d_waitpid=''
834d_wcstombs=''
835d_wctomb=''
4e0554ec 836d_writev=''
b4eb6b3d 837dlext=''
f1ce3bf1 838bin_ELF=''
85e6fe83
LW
839cccdlflags=''
840ccdlflags=''
2304df62 841dlsrc=''
232e078e 842ld=''
85e6fe83 843lddlflags=''
2304df62 844usedl=''
b4eb6b3d
JH
845doublesize=''
846ebcdic=''
847fflushNULL=''
848fflushall=''
849fpossize=''
850fpostype=''
2d736872 851gccansipedantic=''
5b463ca7 852gccosandvers=''
8a27cf78 853gccversion=''
b4eb6b3d
JH
854gidformat=''
855gidsign=''
856gidsize=''
857gidtype=''
858groupstype=''
859h_fcntl=''
860h_sysfile=''
6e1038e0
MB
861html1dir=''
862html1direxp=''
863installhtml1dir=''
864html3dir=''
865html3direxp=''
866installhtml3dir=''
b4eb6b3d 867i_arpainet=''
c0bacbef 868i_assert=''
10bc17b6 869i_crypt=''
b4eb6b3d
JH
870db_hashtype=''
871db_prefixtype=''
640374d0
JH
872db_version_major=''
873db_version_minor=''
874db_version_patch=''
b4eb6b3d
JH
875i_db=''
876i_dbm=''
877i_rpcsvcdbm=''
878d_dirnamlen=''
879direntrytype=''
880i_dirent=''
a0d0e21e 881i_dld=''
b4eb6b3d
JH
882i_dlfcn=''
883i_fcntl=''
884i_float=''
758a5d79
JH
885i_fp=''
886i_fp_class=''
b4eb6b3d
JH
887i_gdbm=''
888d_grpasswd=''
889i_grp=''
b4eb6b3d
JH
890i_ieeefp=''
891i_inttypes=''
2765b840 892i_langinfo=''
b4eb6b3d
JH
893i_libutil=''
894i_limits=''
895i_locale=''
896i_machcthr=''
897i_malloc=''
1cd66f7c 898i_mallocmalloc=''
b4eb6b3d
JH
899i_math=''
900i_memory=''
901i_mntent=''
e74475c7
MHM
902d_gdbm_ndbm_h_uses_prototypes=''
903d_gdbmndbm_h_uses_prototypes=''
a33f2d9f 904d_ndbm=''
e74475c7 905d_ndbm_h_uses_prototypes=''
a33f2d9f
AD
906i_gdbm_ndbm=''
907i_gdbmndbm=''
b4eb6b3d
JH
908i_ndbm=''
909i_netdb=''
910i_neterrno=''
911i_netinettcp=''
912i_niin=''
913i_sysin=''
914i_poll=''
915i_prot=''
916i_pthread=''
917d_pwage=''
918d_pwchange=''
919d_pwclass=''
920d_pwcomment=''
921d_pwexpire=''
922d_pwgecos=''
923d_pwpasswd=''
924d_pwquota=''
925i_pwd=''
926i_sfio=''
927i_shadow=''
928i_socks=''
929i_stddef=''
930i_stdlib=''
931i_string=''
932strings=''
933i_sunmath=''
934i_sysaccess=''
935i_sysdir=''
936i_sysfile=''
937d_voidtty=''
938i_bsdioctl=''
939i_sysfilio=''
940i_sysioctl=''
941i_syssockio=''
942i_syslog=''
943i_sysmman=''
944i_sysmode=''
945i_sysmount=''
946i_sysndir=''
947i_sysparam=''
216dac04 948i_syspoll=''
b4eb6b3d
JH
949i_sysresrc=''
950i_syssecrt=''
951i_sysselct=''
952i_sysstat=''
953i_sysstatfs=''
954i_sysstatvfs=''
955i_systimes=''
956i_systypes=''
957i_sysuio=''
958i_sysun=''
959i_sysutsname=''
960i_sysvfs=''
961i_syswait=''
962i_sgtty=''
963i_termio=''
964i_termios=''
14b90194
JH
965d_tm_tm_gmtoff=''
966d_tm_tm_zone=''
b4eb6b3d
JH
967i_systime=''
968i_systimek=''
969i_time=''
970timeincl=''
971i_unistd=''
972i_ustat=''
973i_utime=''
974i_values=''
975i_stdarg=''
976i_varargs=''
977i_varhdr=''
978i_vfork=''
f3f1a2d8 979d_inc_version_list=''
b4eb6b3d
JH
980inc_version_list=''
981inc_version_list_init=''
982installprefix=''
983installprefixexp=''
984installstyle=''
985installusrbinperl=''
986intsize=''
987longsize=''
988shortsize=''
4b661809 989issymlink=''
2304df62 990libc=''
b4eb6b3d
JH
991ldlibpthname=''
992libperl=''
993shrpenv=''
994useshrplib=''
a0d0e21e 995glibpth=''
2304df62 996libpth=''
8e07c86e 997loclibpth=''
2304df62
AD
998plibpth=''
999xlibpth=''
1cfa4ec7 1000ignore_versioned_solibs=''
2304df62 1001libs=''
43999f95
JH
1002libsdirs=''
1003libsfiles=''
1004libsfound=''
13b3f787 1005libspath=''
85e6fe83 1006lns=''
b4eb6b3d
JH
1007d_PRIEUldbl=''
1008d_PRIFUldbl=''
1009d_PRIGUldbl=''
1010d_PRIeldbl=''
1011d_PRIfldbl=''
1012d_PRIgldbl=''
1013d_SCNfldbl=''
1014sPRIEUldbl=''
1015sPRIFUldbl=''
1016sPRIGUldbl=''
1017sPRIeldbl=''
1018sPRIfldbl=''
1019sPRIgldbl=''
1020sSCNfldbl=''
1021lseeksize=''
1022lseektype=''
d620c7b3 1023mad=''
00e74f14
NC
1024madlyh=''
1025madlyobj=''
1026madlysrc=''
f3f1a2d8
MB
1027make_set_make=''
1028d_mymalloc=''
1029freetype=''
b4eb6b3d
JH
1030mallocobj=''
1031mallocsrc=''
1032malloctype=''
9df442c2 1033usemallocwrap=''
b4eb6b3d
JH
1034usemymalloc=''
1035installman1dir=''
1036man1dir=''
1037man1direxp=''
1038man1ext=''
1039installman3dir=''
1040man3dir=''
1041man3direxp=''
1042man3ext=''
1043modetype=''
1044multiarch=''
1045mydomain=''
1046myhostname=''
1047phostname=''
2304df62
AD
1048c=''
1049n=''
b4eb6b3d
JH
1050d_eofnblk=''
1051eagain=''
1052o_nonblock=''
1053rd_nodata=''
2cc61e15 1054need_va_copy=''
b4eb6b3d
JH
1055netdb_hlen_type=''
1056netdb_host_type=''
1057netdb_name_type=''
1058netdb_net_type=''
1059groupcat=''
1060hostcat=''
1061passcat=''
1062orderlib=''
1063ranlib=''
1064d_perl_otherlibdirs=''
1065otherlibdirs=''
2304df62
AD
1066package=''
1067spackage=''
b4eb6b3d
JH
1068pager=''
1069api_revision=''
1070api_subversion=''
1071api_version=''
1072api_versionstring=''
1073patchlevel=''
151e6568 1074perl_patchlevel=''
b4eb6b3d
JH
1075revision=''
1076subversion=''
1077version=''
861eb78d 1078version_patchlevel_string=''
b4eb6b3d
JH
1079perl5=''
1080perladmin=''
1081perlpath=''
1082d_nv_preserves_uv=''
f607920a 1083d_nv_zero_is_allbits_zero=''
b4eb6b3d
JH
1084i16size=''
1085i16type=''
1086i32size=''
1087i32type=''
1088i64size=''
1089i64type=''
1090i8size=''
1091i8type=''
1092ivsize=''
1093ivtype=''
b68c599a 1094nv_overflows_integers_at=''
4137585d 1095nv_preserves_uv_bits=''
b4eb6b3d
JH
1096nvsize=''
1097nvtype=''
1098u16size=''
1099u16type=''
1100u32size=''
1101u32type=''
1102u64size=''
1103u64type=''
1104u8size=''
1105u8type=''
1106uvsize=''
1107uvtype=''
1108ivdformat=''
1109nvEUformat=''
1110nvFUformat=''
1111nvGUformat=''
1112nveformat=''
1113nvfformat=''
1114nvgformat=''
1115uvXUformat=''
1116uvoformat=''
1117uvuformat=''
1118uvxformat=''
1119pidtype=''
1120prefix=''
1121prefixexp=''
1122installprivlib=''
1123privlib=''
1124privlibexp=''
1125prototype=''
1126ptrsize=''
1127d_PRIXU64=''
1128d_PRId64=''
1129d_PRIi64=''
1130d_PRIo64=''
1131d_PRIu64=''
1132d_PRIx64=''
1133sPRIXU64=''
1134sPRId64=''
1135sPRIi64=''
1136sPRIo64=''
1137sPRIu64=''
1138sPRIx64=''
1139d_quad=''
1140quadkind=''
1141quadtype=''
1142uquadtype=''
1143drand01=''
1144randbits=''
1145randfunc=''
1146randseedtype=''
1147seedfunc=''
1148installscript=''
1149scriptdir=''
1150scriptdirexp=''
1151selectminbits=''
1152selecttype=''
8ff267be 1153sh=''
b4eb6b3d
JH
1154sig_count=''
1155sig_name=''
1156sig_name_init=''
1157sig_num=''
1158sig_num_init=''
76d3c696 1159sig_size=''
f3f1a2d8 1160d_sitearch=''
b4eb6b3d
JH
1161installsitearch=''
1162sitearch=''
1163sitearchexp=''
1164installsitebin=''
1165sitebin=''
1166sitebinexp=''
8d2cbf27
JH
1167installsitehtml1dir=''
1168sitehtml1dir=''
1169sitehtml1direxp=''
1170installsitehtml3dir=''
1171sitehtml3dir=''
1172sitehtml3direxp=''
b4eb6b3d
JH
1173installsitelib=''
1174sitelib=''
1175sitelib_stem=''
1176sitelibexp=''
91e123a8
JH
1177installsiteman1dir=''
1178siteman1dir=''
1179siteman1direxp=''
1180installsiteman3dir=''
1181siteman3dir=''
1182siteman3direxp=''
b4eb6b3d
JH
1183siteprefix=''
1184siteprefixexp=''
6e1038e0
MB
1185installsitescript=''
1186sitescript=''
1187sitescriptexp=''
b4eb6b3d
JH
1188sizesize=''
1189sizetype=''
a0d0e21e 1190so=''
b4eb6b3d 1191socksizetype=''
2304df62
AD
1192sharpbang=''
1193shsharp=''
1194spitshell=''
dfe9444c 1195src=''
b4eb6b3d
JH
1196ssizetype=''
1197startperl=''
2304df62 1198startsh=''
b4eb6b3d
JH
1199stdchar=''
1200d_stdio_stream_array=''
1201stdio_stream_array=''
1202sysman=''
81c4fd9e
MB
1203sGMTIME_max=''
1204sGMTIME_min=''
73e6e416
MB
1205sLOCALTIME_max=''
1206sLOCALTIME_min=''
5ff3f7a4 1207trnl=''
b4eb6b3d
JH
1208uidformat=''
1209uidsign=''
1210uidsize=''
1211uidtype=''
1212archname64=''
1213use64bitall=''
1214use64bitint=''
34f1896b
MB
1215dtrace=''
1216usedtrace=''
15b61c98 1217usefaststdio=''
b4eb6b3d
JH
1218ccflags_uselargefiles=''
1219ldflags_uselargefiles=''
1220libswanted_uselargefiles=''
1221uselargefiles=''
1222uselongdouble=''
1223usemorebits=''
1224usemultiplicity=''
2304df62 1225nm_opt=''
40a7a20a 1226nm_so_opt=''
2304df62
AD
1227runnm=''
1228usenm=''
b4eb6b3d 1229useperlio=''
29209bc5 1230usesocks=''
b4eb6b3d
JH
1231d_oldpthreads=''
1232use5005threads=''
1233useithreads=''
9514c62b 1234usereentrant=''
b4eb6b3d 1235usethreads=''
2304df62 1236incpath=''
2304df62
AD
1237mips_type=''
1238usrinc=''
d03b3b00 1239vaproto=''
b4eb6b3d
JH
1240d_vendorarch=''
1241installvendorarch=''
1242vendorarch=''
1243vendorarchexp=''
1244d_vendorbin=''
1245installvendorbin=''
1246vendorbin=''
1247vendorbinexp=''
8d2cbf27
JH
1248installvendorhtml1dir=''
1249vendorhtml1dir=''
1250vendorhtml1direxp=''
1251installvendorhtml3dir=''
1252vendorhtml3dir=''
1253vendorhtml3direxp=''
b4eb6b3d
JH
1254d_vendorlib=''
1255installvendorlib=''
1256vendorlib=''
1257vendorlib_stem=''
1258vendorlibexp=''
91e123a8
JH
1259installvendorman1dir=''
1260vendorman1dir=''
1261vendorman1direxp=''
1262installvendorman3dir=''
1263vendorman3dir=''
1264vendorman3direxp=''
b4eb6b3d
JH
1265usevendorprefix=''
1266vendorprefix=''
1267vendorprefixexp=''
6e1038e0
MB
1268d_vendorscript=''
1269installvendorscript=''
1270vendorscript=''
1271vendorscriptexp=''
d56c5707 1272versiononly=''
b4eb6b3d
JH
1273defvoidused=''
1274voidflags=''
3659ebf1
JH
1275yacc=''
1276yaccflags=''
2304df62
AD
1277CONFIG=''
1278
34f1896b 1279: Detect odd OSs
ecfc5424
AD
1280define='define'
1281undef='undef'
1282smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1283rmlist=''
1284
1285: We must find out about Eunice early
1286eunicefix=':'
1287if test -f /etc/unixtovms; then
1288 eunicefix=/etc/unixtovms
1289fi
1290if test -f /etc/unixtovms.exe; then
1291 eunicefix=/etc/unixtovms.exe
1292fi
1293
cfb04860 1294: Set executable suffix now -- needed before hints available
6153ba32
PG
1295if test -f "/libs/version.library"; then
1296: Amiga OS
1297 _exe=""
1298elif test -f "/system/gnu_library/bin/ar.pm"; then
1299: Stratus VOS
cfb04860 1300 _exe=".pm"
6153ba32
PG
1301elif test -n "$DJGPP"; then
1302: DOS DJGPP
cfb04860 1303 _exe=".exe"
5c728af0 1304elif test -d c:/. -o -n "$is_os2" ; then
506faf56 1305: OS/2 or cygwin
ba863942
JH
1306 _exe=".exe"
1307fi
868439a2 1308
1d8eaf8c 1309groupstype=''
b4eb6b3d 1310i_whoami=''
9da7673b
MB
1311: Trailing extension. Override this in a hint file, if needed.
1312: Extra object files, if any, needed on this platform.
1313archobjs=''
1314archname=''
64615a5e 1315libnames=''
732c9516
JH
1316: change the next line if compiling for Xenix/286 on Xenix/386
1317xlibpth='/usr/lib/386 /lib/386'
732c9516
JH
1318: Possible local library directories to search.
1319loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1320loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1321
1322: general looking path for locating libraries
5869b1f1 1323glibpth="/lib /usr/lib $xlibpth"
732c9516 1324glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
f7dd4e7f
JH
1325test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1326test -f /shlib/libc.so && glibpth="/shlib $glibpth"
faae14e6 1327test -d /usr/lib64 && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
732c9516
JH
1328
1329: Private path used by Configure to find libraries. Its value
1330: is prepended to libpth. This variable takes care of special
1331: machines, like the mips. Usually, it should be empty.
1332plibpth=''
1333
1cfa4ec7
GS
1334: default library list
1335libswanted=''
921b2963 1336: some systems want to use only the non-versioned libso:s
1cfa4ec7 1337ignore_versioned_solibs=''
ed140128
AD
1338: set usethreads on the Configure command line to enable threads.
1339usereentrant='undef'
1340: full support for void wanted by default
1341defvoidused=15
1342
1343: Possible local include directories to search.
1344: Set locincpth to "" in a hint file to defeat local include searches.
1345locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1346locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1347:
1348: no include file wanted by default
1349inclwanted=''
1350
1351: Enable -DEBUGGING and -DDEBUGGING from the command line
1352EBUGGING=''
1353DEBUGGING=old
1354
1355ccname=''
1356ccversion=''
1357perllibs=''
1358: set useposix=false in your hint file to disable the POSIX extension.
1359useposix=true
1360: set useopcode=false in your hint file to disable the Opcode extension.
1361useopcode=true
b4eb6b3d
JH
1362archname64=''
1363ccflags_uselargefiles=''
1364ldflags_uselargefiles=''
1365libswanted_uselargefiles=''
1366: set usemultiplicity on the Configure command line to enable multiplicity.
29209bc5 1367: set usesocks on the Configure command line to enable socks.
ecfc5424 1368: List of libraries we want.
15431986 1369: If anyone needs extra -lxxx, put those in a hint file.
6bdd71ef 1370libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
8119684f 1371libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1aef975c 1372: We probably want to search /usr/shlib before most other libraries.
94b6baf5 1373: This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
ecfc5424
AD
1374glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1375glibpth="/usr/shlib $glibpth"
1376: Do not use vfork unless overridden by a hint file.
1377usevfork=false
1378
8ff267be
PP
1379: Find the basic shell for Bourne shell scripts
1380case "$sh" in
1381'')
8ff267be
PP
1382 case "$SYSTYPE" in
1383 *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1384 *) xxx='/bin/sh';;
1385 esac
1386 if test -f "$xxx"; then
1387 sh="$xxx"
1388 else
1389 : Build up a list and do a single loop so we can 'break' out.
1390 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1391 for xxx in sh bash ksh pdksh ash; do
1392 for p in $pth; do
1393 try="$try ${p}/${xxx}"
1394 done
1395 done
1396 for xxx in $try; do
1397 if test -f "$xxx"; then
1398 sh="$xxx";
8ff267be 1399 break
a5a94ea5
JH
1400 elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1401 sh="$xxx";
1402 break
8ff267be
PP
1403 elif test -f "$xxx.exe"; then
1404 sh="$xxx";
8ff267be
PP
1405 break
1406 fi
1407 done
1408 fi
1409 ;;
1410esac
1411
1412case "$sh" in
a33c94aa 1413'') cat >&2 <<EOM
8ff267be 1414$me: Fatal Error: I can't find a Bourne Shell anywhere.
dfe9444c 1415
8ff267be 1416Usually it's in /bin/sh. How did you even get this far?
7f2de2d2 1417Please contact me (Perl Maintainers) at perlbug@perl.org and
dfe9444c 1418we'll try to straighten this all out.
8ff267be
PP
1419EOM
1420 exit 1
1421 ;;
1422esac
1423
760ac839 1424: see if sh knows # comments
73614538 1425if `$sh -c '#' >/dev/null 2>&1`; then
760ac839
LW
1426 shsharp=true
1427 spitshell=cat
760ac839 1428 xcat=/bin/cat
a931254c
JH
1429 test -f $xcat$_exe || xcat=/usr/bin/cat
1430 if test ! -f $xcat$_exe; then
4bdb8fb5 1431 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
a931254c 1432 if test -f $p/cat$_exe; then
1deb0a86 1433 xcat=$p/cat
3c728e00
JH
1434 break
1435 fi
1436 done
1deb0a86
JH
1437 if test ! -f $xcat$_exe; then
1438 echo "Can't find cat anywhere!"
3c728e00
JH
1439 exit 1
1440 fi
1441 fi
5440bc8e
JH
1442 echo "#!$xcat" >sharp
1443 $eunicefix sharp
1444 chmod +x sharp
1d8eaf8c 1445 ./sharp > today 2>/dev/null
760ac839 1446 if test -s today; then
760ac839
LW
1447 sharpbang='#!'
1448 else
5440bc8e
JH
1449 echo "#! $xcat" > sharp
1450 $eunicefix sharp
1451 chmod +x sharp
1d8eaf8c 1452 ./sharp > today 2>/dev/null
760ac839 1453 if test -s today; then
760ac839
LW
1454 sharpbang='#! '
1455 else
760ac839
LW
1456 sharpbang=': use '
1457 fi
1458 fi
1459else
dfe9444c 1460 echo " "
8ff267be 1461 echo "Your $sh doesn't grok # comments--I will strip them later on."
760ac839
LW
1462 shsharp=false
1463 cd ..
1464 echo "exec grep -v '^[ ]*#'" >spitshell
1465 chmod +x spitshell
1466 $eunicefix spitshell
1467 spitshell=`pwd`/spitshell
1468 cd UU
1469 echo "I presume that if # doesn't work, #! won't work either!"
1470 sharpbang=': use '
1471fi
5440bc8e 1472rm -f sharp today
760ac839
LW
1473
1474: figure out how to guarantee sh startup
8ff267be
PP
1475case "$startsh" in
1476'') startsh=${sharpbang}${sh} ;;
1477*)
760ac839 1478esac
5440bc8e 1479cat >sharp <<EOSS
760ac839
LW
1480$startsh
1481set abc
1482test "$?abc" != 1
1483EOSS
1484
5440bc8e
JH
1485chmod +x sharp
1486$eunicefix sharp
1487if ./sharp; then
8ff267be 1488 : echo "Yup, it does."
760ac839 1489else
dfe9444c
AD
1490 echo "Hmm... '$startsh' does not guarantee sh startup..."
1491 echo "You may have to fix up the shell scripts to make sure $sh runs them."
760ac839 1492fi
5440bc8e 1493rm -f sharp
760ac839 1494
aebf16e7
AD
1495: Save command line options in file UU/cmdline.opt for later use in
1496: generating config.sh.
1497cat > cmdline.opt <<EOSH
613d6c3e 1498: Configure command line arguments.
aebf16e7
AD
1499config_arg0='$0'
1500config_args='$*'
1501config_argc=$#
1502EOSH
1503argn=1
ee45ea83
IZ
1504args_exp=''
1505args_sep=''
aebf16e7
AD
1506for arg in "$@"; do
1507 cat >>cmdline.opt <<EOSH
1508config_arg$argn='$arg'
1509EOSH
ee45ea83
IZ
1510 cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1511$arg
1512EOC
1513 arg_exp=`cat cmdl.opt`
1514 args_exp="$args_exp$args_sep'$arg_exp'"
aebf16e7 1515 argn=`expr $argn + 1`
ee45ea83 1516 args_sep=' '
aebf16e7 1517done
ee45ea83 1518rm -f cmdl.opt
aebf16e7 1519
2304df62
AD
1520: produce awk script to parse command line options
1521cat >options.awk <<'EOF'
1522BEGIN {
02e93a22 1523 optstr = "A:dD:eEf:hKOrsSU:V"; # getopt-style specification
2304df62
AD
1524
1525 len = length(optstr);
1526 for (i = 1; i <= len; i++) {
1527 c = substr(optstr, i, 1);
1528 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1529 if (a == ":") {
1530 arg[c] = 1;
1531 i++;
1532 }
1533 opt[c] = 1;
1534 }
1535}
1536{
1537 expect = 0;
1538 str = $0;
1539 if (substr(str, 1, 1) != "-") {
1540 printf("'%s'\n", str);
1541 next;
1542 }
1543 len = length($0);
1544 for (i = 2; i <= len; i++) {
1545 c = substr(str, i, 1);
1546 if (!opt[c]) {
1547 printf("-%s\n", substr(str, i));
1548 next;
1549 }
1550 printf("-%s\n", c);
1551 if (arg[c]) {
1552 if (i < len)
1553 printf("'%s'\n", substr(str, i + 1));
1554 else
1555 expect = 1;
1556 next;
1557 }
1558 }
1559}
1560END {
1561 if (expect)
1562 print "?";
1563}
1564EOF
1565
1566: process the command line options
4633a7c4
LW
1567set X `for arg in "$@"; do echo "X$arg"; done |
1568 sed -e s/X// | awk -f options.awk`
2304df62
AD
1569eval "set $*"
1570shift
1571rm -f options.awk
1572
1573: set up default values
1574fastread=''
1575reuseval=false
1576config_sh=''
1577alldone=''
1578error=''
1579silent=''
1580extractsh=''
ecfc5424 1581override=''
16d20bd9 1582knowitall=''
02e93a22 1583rm -f optdef.sh posthint.sh
28757baa
PP
1584cat >optdef.sh <<EOS
1585$startsh
1586EOS
2304df62 1587
dfe9444c 1588
2304df62
AD
1589: option parsing
1590while test $# -gt 0; do
1591 case "$1" in
1592 -d) shift; fastread=yes;;
1593 -e) shift; alldone=cont;;
1594 -f)
1595 shift
1596 cd ..
1597 if test -r "$1"; then
1598 config_sh="$1"
1599 else
a0d0e21e 1600 echo "$me: cannot read config file $1." >&2
2304df62
AD
1601 error=true
1602 fi
1603 cd UU
1604 shift;;
3f30fabf 1605 --help|\
2304df62
AD
1606 -h) shift; error=true;;
1607 -r) shift; reuseval=true;;
dfe9444c 1608 -s) shift; silent=true; realsilent=true;;
2304df62 1609 -E) shift; alldone=exit;;
16d20bd9 1610 -K) shift; knowitall=true;;
ecfc5424 1611 -O) shift; override=true;;
dfe9444c 1612 -S) shift; silent=true; extractsh=true;;
a0d0e21e
LW
1613 -D)
1614 shift
1615 case "$1" in
1616 *=)
1617 echo "$me: use '-U symbol=', not '-D symbol='." >&2
1618 echo "$me: ignoring -D $1" >&2
1619 ;;
ecfc5424 1620 *=*) echo "$1" | \
1aef975c
AD
1621 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1622 *) echo "$1='define'" >> optdef.sh;;
a0d0e21e
LW
1623 esac
1624 shift
1625 ;;
1626 -U)
1627 shift
1628 case "$1" in
1aef975c 1629 *=) echo "$1" >> optdef.sh;;
a0d0e21e
LW
1630 *=*)
1631 echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1632 echo "$me: ignoring -U $1" >&2
1633 ;;
1aef975c 1634 *) echo "$1='undef'" >> optdef.sh;;
a0d0e21e
LW
1635 esac
1636 shift
1637 ;;
02e93a22
JH
1638 -A)
1639 shift
1640 xxx=''
1641 yyy="$1"
02e93a22 1642 zzz=''
5f83a3e9 1643 uuu=undef
02e93a22 1644 case "$yyy" in
f7c31117 1645 *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
5f83a3e9
JH
1646 case "$zzz" in
1647 *:*) zzz='' ;;
1648 *) xxx=append
613d6c3e 1649 zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
f7c31117 1650 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
5f83a3e9
JH
1651 esac
1652 ;;
1653 esac
1654 case "$xxx" in
1655 '') case "$yyy" in
f7c31117
JH
1656 *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1657 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1658 zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1659 yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1660 *) xxx=`echo "$yyy"|sed 's!:.*!!'`
1661 yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
5f83a3e9 1662 esac
613d6c3e 1663 ;;
5f83a3e9 1664 esac
02e93a22
JH
1665 case "$xxx" in
1666 append)
5f83a3e9 1667 echo "$yyy=\"\${$yyy}$zzz\"" >> posthint.sh ;;
02e93a22 1668 clear)
5f83a3e9 1669 echo "$yyy=''" >> posthint.sh ;;
02e93a22
JH
1670 define)
1671 case "$zzz" in
1672 '') zzz=define ;;
1673 esac
5f83a3e9 1674 echo "$yyy='$zzz'" >> posthint.sh ;;
02e93a22 1675 eval)
5f83a3e9 1676 echo "eval \"$yyy=$zzz\"" >> posthint.sh ;;
02e93a22 1677 prepend)
5f83a3e9 1678 echo "$yyy=\"$zzz\${$yyy}\"" >> posthint.sh ;;
02e93a22
JH
1679 undef)
1680 case "$zzz" in
1681 '') zzz="$uuu" ;;
1682 esac
5f83a3e9
JH
1683 echo "$yyy=$zzz" >> posthint.sh ;;
1684 *) echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
02e93a22 1685 esac
bde6b06b 1686 shift
02e93a22 1687 ;;
216dac04 1688 -V) echo "$me generated by metaconfig 3.5 PL0." >&2
5f83a3e9 1689 exit 0;;
2304df62 1690 --) break;;
a0d0e21e 1691 -*) echo "$me: unknown option $1" >&2; shift; error=true;;
2304df62
AD
1692 *) break;;
1693 esac
1694done
1695
1696case "$error" in
1697true)
1698 cat >&2 <<EOM
2afac517 1699Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
02e93a22 1700 [-U symbol] [-U symbol=] [-A command:symbol...]
2304df62
AD
1701 -d : use defaults for all answers.
1702 -e : go on without questioning past the production of config.sh.
1703 -f : specify an alternate default configuration file.
1704 -h : print this help message and exit (with an error status).
1705 -r : reuse C symbols value if possible (skips costly nm extraction).
1706 -s : silent mode, only echoes questions and essential information.
a0d0e21e
LW
1707 -D : define symbol to have some value:
1708 -D symbol symbol gets the value 'define'
1709 -D symbol=value symbol gets the value 'value'
3f30fabf
MB
1710 common used examples (see INSTALL for more info):
1711 -Duse64bitint use 64bit integers
b79e0b55 1712 -Duse64bitall use 64bit integers and pointers
3f30fabf 1713 -Dusethreads use thread support
b79e0b55 1714 -Dinc_version_list=none do not include older perl trees in @INC
3f30fabf
MB
1715 -DEBUGGING=none DEBUGGING options
1716 -Dcc=gcc choose your compiler
1717 -Dprefix=/opt/perl5 choose your destination
2304df62 1718 -E : stop at the end of questions, after having produced config.sh.
16d20bd9 1719 -K : do not use unless you know what you are doing.
ecfc5424 1720 -O : let -D and -U override definitions from loaded configuration file.
2304df62 1721 -S : perform variable substitutions on all .SH files (can mix with -f)
a0d0e21e
LW
1722 -U : undefine symbol:
1723 -U symbol symbol gets the value 'undef'
1724 -U symbol= symbol gets completely empty
3f30fabf 1725 e.g.: -Uversiononly
02e93a22 1726 -A : manipulate symbol after the platform specific hints have been applied:
2ac814f3
MB
1727 -A append:symbol=value append value to symbol
1728 -A symbol=value like append:, but with a separating space
1729 -A define:symbol=value define symbol to have value
1730 -A clear:symbol define symbol to be ''
1731 -A define:symbol define symbol to be 'define'
1732 -A eval:symbol=value define symbol to be eval of value
1733 -A prepend:symbol=value prepend value to symbol
1734 -A undef:symbol define symbol to be 'undef'
1735 -A undef:symbol= define symbol to be ''
3f30fabf 1736 e.g.: -A prepend:libswanted='cl pthread '
2ac814f3 1737 -A ccflags=-DSOME_MACRO
2304df62
AD
1738 -V : print version number and exit (with a zero status).
1739EOM
1740 exit 1
1741 ;;
1742esac
1743
dfe9444c
AD
1744: Sanity checks
1745case "$fastread$alldone" in
1746yescont|yesexit) ;;
1747*)
aaeb8e51
GS
1748 case "$extractsh" in
1749 true) ;;
1750 *)
1751 if test ! -t 0; then
1752 echo "Say 'sh Configure', not 'sh <Configure'"
1753 exit 1
1754 fi
1755 ;;
1756 esac
dfe9444c
AD
1757 ;;
1758esac
1759
2304df62
AD
1760exec 4>&1
1761case "$silent" in
1762true) exec 1>/dev/null;;
1763esac
1764
ecfc5424 1765: run the defines and the undefines, if any, but leave the file out there...
1aef975c
AD
1766touch optdef.sh
1767. ./optdef.sh
02e93a22
JH
1768: create the posthint manipulation script and leave the file out there...
1769touch posthint.sh
a0d0e21e 1770
2304df62 1771: set package name
34f1896b 1772package='perl5'
b4eb6b3d
JH
1773first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1774last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1775case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1776ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1777*) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1778esac
2304df62 1779
2304df62
AD
1780: Some greps do not return status, grrr.
1781echo "grimblepritz" >grimble
1782if grep blurfldyick grimble >/dev/null 2>&1 ; then
1783 contains=contains
1784elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1785 contains=grep
1786else
1787 contains=contains
1788fi
1789rm -f grimble
1790: the following should work in any shell
1791case "$contains" in
1792contains*)
1793 echo " "
1794 echo "AGH! Grep doesn't return a status. Attempting remedial action."
1795 cat >contains <<'EOSS'
1796grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1797EOSS
1798chmod +x contains
1799esac
1800
dfe9444c
AD
1801: Find the path to the source tree
1802case "$src" in
1803'') case "$0" in
b233458b
JH
1804 */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1805 case "$src" in
1806 /*) ;;
8504afb7 1807 .) ;;
b233458b
JH
1808 *) src=`cd ../$src && pwd` ;;
1809 esac
1810 ;;
dfe9444c
AD
1811 *) src='.';;
1812 esac;;
1813esac
1814case "$src" in
1815'') src=/
1816 rsrc=/
1817 ;;
34f1896b
MB
1818/*) rsrc="$src";;
1819*) rsrc="../$src";;
dfe9444c
AD
1820esac
1821if test -f $rsrc/Configure && \
34f1896b 1822 $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
dfe9444c
AD
1823then
1824 : found it, so we are ok.
1825else
1826 rsrc=''
1827 for src in . .. ../.. ../../.. ../../../..; do
1828 if test -f ../$src/Configure && \
1829 $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1830 then
1831 rsrc=../$src
1832 break
1833 fi
1834 done
1835fi
1836case "$rsrc" in
1837'')
1838 cat <<EOM >&4
1839
1840Sorry, I can't seem to locate the source dir for $package. Please start
1841Configure with an explicit path -- i.e. /some/path/Configure.
1842
1843EOM
1844 exit 1
1845 ;;
1846../.) rsrc='..';;
1847*)
1848 echo " "
1849 echo "Sources for $package found in \"$src\"." >&4
1850 ;;
1851esac
1852
1853: script used to extract .SH files with variable substitutions
1854cat >extract <<'EOS'
a02608de 1855PERL_CONFIG_SH=true
dfe9444c 1856echo "Doing variable substitutions on .SH files..."
24ccb310
JH
1857if test -f MANIFEST; then
1858 set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
dfe9444c
AD
1859else
1860 echo "(Looking for .SH files under the source directory.)"
6904989c 1861 set x `(cd "$src"; find . -name "*.SH" -print)`
dfe9444c
AD
1862fi
1863shift
1864case $# in
6904989c 18650) set x `(cd "$src"; echo *.SH)`; shift;;
dfe9444c 1866esac
6904989c 1867if test ! -f "$src/$1"; then
dfe9444c
AD
1868 shift
1869fi
1870mkdir_p='
1871name=$1;
1872create="";
1873while test $name; do
1874 if test ! -d "$name"; then
1875 create="$name $create";
1876 name=`echo $name | sed -e "s|^[^/]*$||"`;
1877 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1878 else
1879 name="";
1880 fi;
1881done;
1882for file in $create; do
1883 mkdir $file;
1884done
1885'
1886for file in $*; do
1887 case "$src" in
1888 ".")
1889 case "$file" in
1890 */*)
1891 dir=`expr X$file : 'X\(.*\)/'`
1892 file=`expr X$file : 'X.*/\(.*\)'`
6904989c 1893 (cd "$dir" && . ./$file)
dfe9444c
AD
1894 ;;
1895 *)
1896 . ./$file
1897 ;;
1898 esac
1899 ;;
1900 *)
1901 case "$file" in
1902 */*)
1903 dir=`expr X$file : 'X\(.*\)/'`
1904 file=`expr X$file : 'X.*/\(.*\)'`
1905 (set x $dir; shift; eval $mkdir_p)
6904989c 1906 sh <"$src/$dir/$file"
dfe9444c
AD
1907 ;;
1908 *)
6904989c 1909 sh <"$src/$file"
dfe9444c
AD
1910 ;;
1911 esac
1912 ;;
1913 esac
1914done
6904989c 1915if test -f "$src/config_h.SH"; then
dfe9444c
AD
1916 if test ! -f config.h; then
1917 : oops, they left it out of MANIFEST, probably, so do it anyway.
6904989c 1918 . "$src/config_h.SH"
dfe9444c
AD
1919 fi
1920fi
1921EOS
1922
1923: extract files and exit if asked to do so
1924case "$extractsh" in
1925true)
1926 case "$realsilent" in
1927 true) ;;
1928 *) exec 1>&4;;
1929 esac
1930 case "$config_sh" in
1931 '') config_sh='config.sh';;
1932 esac
1933 echo " "
1934 echo "Fetching answers from $config_sh..."
1935 cd ..
1936 . $config_sh
1937 test "$override" && . ./optdef.sh
1938 echo " "
1939 . UU/extract
1940 rm -rf UU
24ccb310 1941 echo "Extraction done."
dfe9444c
AD
1942 exit 0
1943 ;;
1944esac
1945
1946: Eunice requires " " instead of "", can you believe it
1947echo " "
1948: Here we go...
1949echo "Beginning of configuration questions for $package."
1950
1951trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1952
2304df62
AD
1953: first determine how to suppress newline on echo command
1954echo " "
1955echo "Checking echo to see how to suppress newlines..."
1956(echo "hi there\c" ; echo " ") >.echotmp
1957if $contains c .echotmp >/dev/null 2>&1 ; then
1958 echo "...using -n."
1959 n='-n'
1960 c=''
1961else
1962 cat <<'EOM'
1963...using \c
1964EOM
1965 n=''
1966 c='\c'
1967fi
1968echo $n "The star should be here-->$c"
1969echo '*'
1970rm -f .echotmp
1971
1972: Now test for existence of everything in MANIFEST
1973echo " "
6904989c 1974if test -f "$rsrc/MANIFEST"; then
2304df62 1975 echo "First let's make sure your kit is complete. Checking..." >&4
1d8eaf8c 1976 awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | \
776a38e3 1977 (split -l 50 2>/dev/null || split -50)
2304df62 1978 rm -f missing
dfe9444c 1979 tmppwd=`pwd`
2304df62 1980 for filelist in x??; do
776a38e3
MB
1981 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
1982 >/dev/null 2>>"$tmppwd/missing")
2304df62
AD
1983 done
1984 if test -s missing; then
1985 cat missing >&4
1986 cat >&4 <<'EOM'
1987
1988THIS PACKAGE SEEMS TO BE INCOMPLETE.
1989
1990You have the option of continuing the configuration process, despite the
1991distinct possibility that your kit is damaged, by typing 'y'es. If you
1992do, don't blame me if something goes wrong. I advise you to type 'n'o
7f2de2d2 1993and contact the author (perlbug@perl.org).
2304df62
AD
1994
1995EOM
1996 echo $n "Continue? [n] $c" >&4
1997 read ans
1998 case "$ans" in
1999 y*)
2000 echo "Continuing..." >&4
2001 rm -f missing
2002 ;;
2003 *)
2004 echo "ABORTING..." >&4
2005 kill $$
2006 ;;
2007 esac
2008 else
dfe9444c 2009 echo "Looks good..."
2304df62
AD
2010 fi
2011else
2012 echo "There is no MANIFEST file. I hope your kit is complete !"
2013fi
2014rm -f missing x??
2015
5ff3f7a4 2016: Find the appropriate value for a newline for tr
613d6c3e 2017echo " "
5ff3f7a4
GS
2018if test -n "$DJGPP"; then
2019 trnl='\012'
2020fi
2021if test X"$trnl" = X; then
2022 case "`echo foo|tr '\n' x 2>/dev/null`" in
2023 foox) trnl='\n' ;;
2024 esac
2025fi
2026if test X"$trnl" = X; then
2027 case "`echo foo|tr '\012' x 2>/dev/null`" in
2028 foox) trnl='\012' ;;
2029 esac
2030fi
2031if test X"$trnl" = X; then
8be2c24c
JH
2032 case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
2033 fooxy) trnl='\n\r' ;;
2034 esac
2035fi
2036if test X"$trnl" = X; then
5ff3f7a4
GS
2037 cat <<EOM >&2
2038
2039$me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2040
2041EOM
2042 exit 1
2043fi
2044
2304df62
AD
2045: compute the number of columns on the terminal for proper question formatting
2046case "$COLUMNS" in
2047'') COLUMNS='80';;
2048esac
2049
2050: set up the echo used in my read
2051myecho="case \"\$xxxm\" in
2052'') echo $n \"\$rp $c\" >&4;;
2053*) case \"\$rp\" in
2054 '') echo $n \"[\$xxxm] $c\";;
2055 *)
2056 if test \`echo \"\$rp [\$xxxm] \" | wc -c\` -ge $COLUMNS; then
2057 echo \"\$rp\" >&4
2058 echo $n \"[\$xxxm] $c\" >&4
2059 else
2060 echo $n \"\$rp [\$xxxm] $c\" >&4
2061 fi
2062 ;;
2063 esac;;
2064esac"
2065
2066: now set up to do reads with possible shell escape and default assignment
2067cat <<EOSC >myread
28757baa 2068$startsh
2304df62
AD
2069xxxm=\$dflt
2070$myecho
2071ans='!'
2072case "\$fastread" in
2073yes) case "\$dflt" in
2074 '') ;;
2075 *) ans='';
2076 case "\$silent-\$rp" in
2077 true-) ;;
2078 *) echo " " >&4;;
2079 esac;;
2080 esac;;
2081*) case "\$silent" in
2082 true) case "\$rp" in
2083 '') ans='';;
2084 esac;;
2085 esac;;
2086esac
2087while expr "X\$ans" : "X!" >/dev/null; do
2088 read answ
2089 set x \$xxxm
2090 shift
dfe9444c 2091 aok=''; eval "ans=\\"\$answ\\"" && aok=y
2304df62 2092 case "\$answ" in
dfe9444c
AD
2093 "!")
2094 sh 1>&4
2095 echo " "
2096 $myecho
2097 ;;
2098 !*)
2099 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2100 shift
2101 sh 1>&4 -c "\$*"
2102 echo " "
2103 $myecho
2104 ;;
2304df62
AD
2105 "\$ans")
2106 case "\$ans" in
ecfc5424
AD
2107 \\&*)
2108 set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2109 shift
2110 case "\$1" in
2111 -d)
2112 fastread=yes
40a7a20a 2113 echo "(OK, I'll run with -d after this question.)" >&4
ecfc5424
AD
2114 ;;
2115 -*)
40a7a20a 2116 echo "*** Sorry, \$1 not supported yet." >&4
ecfc5424
AD
2117 ;;
2118 esac
2119 $myecho
2120 ans=!
2121 ;;
2304df62
AD
2122 esac;;
2123 *)
2124 case "\$aok" in
2125 y)
2126 echo "*** Substitution done -- please confirm."
2127 xxxm="\$ans"
c9795ab7 2128 ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2304df62
AD
2129 xxxm="\$ans"
2130 ans=!
2131 ;;
2132 *)
2133 echo "*** Error -- try again."
2134 ans=!
2135 ;;
2136 esac
2137 $myecho
2138 ;;
2139 esac
2140 case "\$ans\$xxxm\$nostick" in
2141 '')
2142 ans=!
2143 $myecho
2144 ;;
2145 esac
2146done
2147case "\$ans" in
2148'') ans="\$xxxm";;
2149esac
2150EOSC
2151
2152: create .config dir to save info across Configure sessions
2153test -d ../.config || mkdir ../.config
2154cat >../.config/README <<EOF
2155This directory created by Configure to save information that should
dfe9444c 2156persist across sessions for $package.
2304df62
AD
2157
2158You may safely delete it if you wish.
2159EOF
2160
613d6c3e 2161: See if we are using a devel version and want that
9507cadf 2162xversion=`awk '/define[ ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
af960fef 2163case "$usedevel" in
1be1b388
MB
2164$define|true|[yY]*)
2165 usedevel="$define" ;;
9507cadf 2166*) case "$xversion" in
0107c034
JH
2167 *[13579])
2168 cat >&4 <<EOH
2169*** WHOA THERE!!! ***
2170
2171 This is an UNSTABLE DEVELOPMENT release.
9507cadf
JH
2172 The version of this $package distribution is $xversion, that is, odd,
2173 (as opposed to even) and that signifies a development release.
3d5d58b1 2174 If you want a maintenance release, you want an even-numbered version.
0107c034
JH
2175
2176 Do ***NOT*** install this into production use.
2177 Data corruption and crashes are possible.
2178
2179 It is most seriously suggested that you do not continue any further
2180 unless you want to help in developing and debugging Perl.
2181
6adc6a45
JH
2182 If you *still* want to build perl, you can answer 'y' now,
2183 or pass -Dusedevel to Configure.
2184
0107c034
JH
2185EOH
2186 rp='Do you really want to continue?'
2187 dflt='n'
2188 . ./myread
2189 case "$ans" in
8feeef0e
JH
2190 [yY]) echo >&4 "Okay, continuing."
2191 usedevel="$define" ;;
0107c034
JH
2192 *) echo >&4 "Okay, bye."
2193 exit 1
2194 ;;
2195 esac
2196 ;;
2197 esac
1be1b388 2198 usedevel="$undef"
0107c034
JH
2199 ;;
2200esac
8feeef0e
JH
2201case "$usedevel" in
2202$define|true|[yY]*)
2203 case "$versiononly" in
2204 '') versiononly="$define" ;;
2205 esac
2206 case "$installusrbinperl" in
2207 '') installusrbinperl="$undef" ;;
2208 esac
2209 ;;
2210esac
0107c034 2211
2304df62
AD
2212: general instructions
2213needman=true
2214firsttime=true
760ac839 2215user=`(logname) 2>/dev/null`
dfe9444c
AD
2216case "$user" in
2217'') user=`whoami 2>&1`;;
760ac839 2218esac
2304df62
AD
2219if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2220 firsttime=false
2221 echo " "
2222 rp='Would you like to see the instructions?'
2223 dflt=n
2224 . ./myread
2225 case "$ans" in
2226 [yY]*) ;;
2227 *) needman=false;;
2228 esac
2229fi
2230if $needman; then
2231 cat <<EOH
4e2a5f63 2232
2304df62 2233This installation shell script will examine your system and ask you questions
a0d0e21e 2234to determine how the perl5 package should be installed. If you get
2304df62
AD
2235stuck on a question, you may use a ! shell escape to start a subshell or
2236execute a command. Many of the questions will have default answers in square
2237brackets; typing carriage return will give you the default.
2238
2239On some of the questions which ask for file or directory names you are allowed
2240to use the ~name construct to specify the login directory belonging to "name",
2241even if you don't have a shell which knows about that. Questions where this is
2242allowed will be marked "(~name ok)".
2243
2244EOH
2245 rp=''
2246 dflt='Type carriage return to continue'
2247 . ./myread
2248 cat <<'EOH'
2249
2250The prompter used in this script allows you to use shell variables and
2251backticks in your answers. You may use $1, $2, etc... to refer to the words
2252in the default answer, as if the default line was a set of arguments given to a
2253script shell. This means you may also use $* to repeat the whole default line,
2254so you do not have to re-type everything to add something to the default.
2255
2256Everytime there is a substitution, you will have to confirm. If there is an
2257error (e.g. an unmatched backtick), the default answer will remain unchanged
2258and you will be prompted again.
2259
2260If you are in a hurry, you may run 'Configure -d'. This will bypass nearly all
2261the questions and use the computed defaults (or the previous answers if there
2262was already a config.sh file). Type 'Configure -h' for a list of options.
ecfc5424 2263You may also start interactively and then answer '& -d' at any prompt to turn
dfe9444c 2264on the non-interactive behaviour for the remainder of the execution.
2304df62
AD
2265
2266EOH
2267 . ./myread
2268 cat <<EOH
2269
2270Much effort has been expended to ensure that this shell script will run on any
2271Unix system. If despite that it blows up on yours, your best bet is to edit
40000a8c
AD
2272Configure and run it again. If you can't run Configure for some reason,
2273you'll have to generate a config.sh file by hand. Whatever problems you
7f2de2d2 2274have, let me (perlbug@perl.org) know how I blew it.
2304df62
AD
2275
2276This installation script affects things in two ways:
2277
22781) it may do direct variable substitutions on some of the files included
2279 in this kit.
22802) it builds a config.h file for inclusion in C programs. You may edit
2281 any of these files as the need arises after running this script.
2282
2283If you make a mistake on a question, there is no easy way to back up to it
2284currently. The easiest thing to do is to edit config.sh and rerun all the SH
2285files. Configure will offer to let you do this before it runs the SH files.
2286
2287EOH
2288 dflt='Type carriage return to continue'
2289 . ./myread
2290 case "$firsttime" in
2291 true) echo $user >>../.config/instruct;;
2292 esac
2293fi
2294
2304df62
AD
2295: find out where common programs are
2296echo " "
2297echo "Locating common programs..." >&4
2298cat <<EOSC >loc
2299$startsh
2300case \$# in
23010) exit 1;;
2302esac
2303thing=\$1
2304shift
2305dflt=\$1
2306shift
2307for dir in \$*; do
2308 case "\$thing" in
2309 .)
2310 if test -d \$dir/\$thing; then
2311 echo \$dir
2312 exit 0
2313 fi
2314 ;;
2315 *)
a0d0e21e 2316 for thisthing in \$dir/\$thing; do
ecfc5424 2317 : just loop through to pick last item
a0d0e21e 2318 done
25f94b33 2319 if test -f \$thisthing; then
a0d0e21e 2320 echo \$thisthing
2304df62 2321 exit 0
a5a94ea5
JH
2322 elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2323 echo \$thisthing
776a38e3 2324 exit 0
2304df62 2325 elif test -f \$dir/\$thing.exe; then
c4f23d77
AD
2326 if test -n "$DJGPP"; then
2327 echo \$dir/\$thing.exe
b921d661 2328 elif test "$eunicefix" != ":"; then
c4f23d77
AD
2329 : on Eunice apparently
2330 echo \$dir/\$thing
2331 fi
2d736872 2332 exit 0
2304df62
AD
2333 fi
2334 ;;
2335 esac
2336done
2337echo \$dflt
2338exit 1
2339EOSC
2340chmod +x loc
2341$eunicefix loc
2342loclist="
2343awk
2344cat
f8006fac 2345chmod
b4eb6b3d
JH
2346comm
2347cp
2304df62
AD
2348echo
2349expr
2350grep
a0d0e21e 2351ls
b4eb6b3d 2352mkdir
2304df62
AD
2353rm
2354sed
b4eb6b3d 2355sort
85e6fe83 2356touch
2304df62 2357tr
b4eb6b3d 2358uniq
2304df62
AD
2359"
2360trylist="
dfe9444c 2361ar
3659ebf1 2362bison
b4eb6b3d 2363byacc
2304df62 2364cpp
b4eb6b3d 2365csh
2304df62
AD
2366date
2367egrep
1fef16b3 2368gmake
8ff267be 2369gzip
b4eb6b3d 2370less
8ff267be 2371ln
3c728e00 2372make
b4eb6b3d 2373more
693762b4 2374nm
b4eb6b3d
JH
2375nroff
2376pg
2304df62
AD
2377test
2378uname
8ff267be 2379zip
2304df62 2380"
8e07c86e 2381pth=`echo $PATH | sed -e "s/$p_/ /g"`
2304df62
AD
2382pth="$pth /lib /usr/lib"
2383for file in $loclist; do
dfe9444c
AD
2384 eval xxx=\$$file
2385 case "$xxx" in
2386 /*|?:[\\/]*)
2387 if test -f "$xxx"; then
2388 : ok
2389 else
2390 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2391 xxx=`./loc $file $file $pth`
2392 fi
2393 ;;
2394 '') xxx=`./loc $file $file $pth`;;
2395 *) xxx=`./loc $xxx $xxx $pth`;;
2396 esac
a5a94ea5 2397 eval $file=$xxx$_exe
2304df62
AD
2398 eval _$file=$xxx
2399 case "$xxx" in
2400 /*)
2401 echo $file is in $xxx.
2402 ;;
8e07c86e
AD
2403 ?:[\\/]*)
2404 echo $file is in $xxx.
2405 ;;
2304df62 2406 *)
25f94b33
AD
2407 echo "I don't know where '$file' is, and my life depends on it." >&4
2408 echo "Go find a public domain implementation or fix your PATH setting!" >&4
4633a7c4 2409 exit 1
2304df62
AD
2410 ;;
2411 esac
2412done
2413echo " "
2414echo "Don't worry if any of the following aren't found..."
2415say=offhand
2416for file in $trylist; do
dfe9444c
AD
2417 eval xxx=\$$file
2418 case "$xxx" in
2419 /*|?:[\\/]*)
2420 if test -f "$xxx"; then
2421 : ok
2422 else
2423 echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2424 xxx=`./loc $file $file $pth`
2425 fi
2426 ;;
2427 '') xxx=`./loc $file $file $pth`;;
2428 *) xxx=`./loc $xxx $xxx $pth`;;
2429 esac
306a8474 2430 eval $file=$xxx$_exe
2304df62
AD
2431 eval _$file=$xxx
2432 case "$xxx" in
2433 /*)
2434 echo $file is in $xxx.
2435 ;;
8e07c86e
AD
2436 ?:[\\/]*)
2437 echo $file is in $xxx.
2438 ;;
2304df62
AD
2439 *)
2440 echo "I don't see $file out there, $say."
2441 say=either
2442 ;;
2443 esac
2444done
2445case "$egrep" in
1fef16b3 2446egrep)
2304df62
AD
2447 echo "Substituting grep for egrep."
2448 egrep=$grep
868439a2 2449 _egrep=$grep
2304df62
AD
2450 ;;
2451esac
3141af47
MB
2452case "$less" in
2453'') ;;
2454*) if $less -R </dev/null >/dev/null; then
2455 echo "Substituting less -R for less."
2456 less="$less -R"
2457 _less=$less
2458 fi
2459 ;;
2460esac
8ff267be 2461case "$ln" in
1fef16b3 2462ln)
8ff267be
PP
2463 echo "Substituting cp for ln."
2464 ln=$cp
868439a2 2465 _ln=$cp
8ff267be
PP
2466 ;;
2467esac
2e26f1d5 2468case "$make" in
613d6c3e 2469make)
2e26f1d5
JH
2470 case "$gmake" in
2471 gmake)
2472 echo "I can't find make or gmake, and my life depends on it." >&4
2473 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2474 exit 1
2475 ;;
2476 esac
2477 ;;
613d6c3e 2478esac
2e26f1d5
JH
2479case "$gmake" in
2480gmake) ;;
2481*) # We can't have osname yet.
1fef16b3
JH
2482 if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2483 # Assume that gmake, if found, is definitely GNU make
2484 # and prefer it over the system make.
2485 echo "Substituting gmake for make."
2486 make=$gmake
868439a2 2487 _make=$gmake
1fef16b3
JH
2488 fi
2489 ;;
a5a94ea5 2490esac
2304df62
AD
2491case "$test" in
2492test)
2493 echo "Hopefully test is built into your sh."
2494 ;;
2495*)
73614538 2496 if `sh -c "PATH= test true" >/dev/null 2>&1`; then
5d644a95 2497 echo "Using the test built into your sh."
2304df62
AD
2498 test=test
2499 _test=test
2500 fi
2501 ;;
2502esac
2503case "$echo" in
2504echo)
2505 echo "Hopefully echo is built into your sh."
2506 ;;
2507'') ;;
2508*)
2509 echo " "
2510echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2511 $echo $n "hi there$c" >foo1
2512 echo $n "hi there$c" >foo2
2513 if cmp foo1 foo2 >/dev/null 2>&1; then
2514 echo "They are compatible. In fact, they may be identical."
2515 else
2516 case "$n" in
2517 '-n') n='' c='\c';;
2518 *) n='-n' c='';;
2519 esac
2520 cat <<FOO
2521They are not compatible! You are probably running ksh on a non-USG system.
2522I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2523have echo built in and we may have to run some Bourne shell scripts. That
2524means I'll have to use '$n$c' to suppress newlines now. Life is ridiculous.
2525
2526FOO
2527 $echo $n "The star should be here-->$c"
2528 $echo "*"
2529 fi
2530 $rm -f foo1 foo2
2531 ;;
2532esac
2533
2f88d857
MB
2534# This question was auctioned at YAPC::Europe-2007 in Vienna
2535# I never promised you could answer it. I only auctioned the question.
2536cat <<FOO
2537The following message is sponsored by
2538
2539 Dresden.pm<--The stars should be here.
2540
2541Dear Perl user, system administrator or package
2542maintainer, the Perl community sends greetings to
2543you. Do you (emblematical) greet back [Y/n]? n
2544
2545FOO
2546
613d6c3e 2547: Check what type of C compiler we use
6b769f8f 2548cat <<EOS >trygcc
2573c5f9
JH
2549$startsh
2550EOS
6b769f8f 2551cat <<'EOSC' >>trygcc
2573c5f9
JH
2552case "$cc" in
2553'') ;;
2554*) $rm -f try try.*
2555 $cat >try.c <<EOM
2556int main(int argc, char *argv[]) {
2557 return 0;
2558}
2559EOM
e4778687 2560 if $cc -o try $ccflags $ldflags try.c; then
2573c5f9
JH
2561 :
2562 else
2563 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2564 despair=yes
2565 trygcc=yes
2566 case "$cc" in
2567 *gcc*) trygcc=no ;;
2568 esac
dce40316
AD
2569 # Skip this test because it gives a false match on output like:
2570 # ./trygcc: line 23: cc: command not found
2571 # case "`$cc -v -c try.c 2>&1`" in
2572 # *gcc*) trygcc=no ;;
2573 # esac
2573c5f9
JH
2574 if $test X"$trygcc" = Xyes; then
2575 if gcc -o try -c try.c; then
2576 echo " "
2577 echo "You seem to have a working gcc, though." >&4
dce40316
AD
2578 # Switching compilers may undo the work of hints files.
2579 # The most common problem is -D_REENTRANT for threads.
2580 # This heuristic catches that case, but gets false positives
2581 # if -Dusethreads was not actually specified. Better to
2582 # bail out here with a useful message than fail
2583 # mysteriously later. Should we perhaps just try to
2584 # re-invoke Configure -Dcc=gcc config_args ?
2585 if $test -f usethreads.cbu; then
2586 $cat >&4 <<EOM
2587
2588*** However, any setting of the C compiler flags (e.g. for thread support)
2589*** will be lost. It may be necessary for you to restart Configure and
2590*** add -Dcc=gcc to your Configure command line.
2591
2592EOM
2593 rp="Would you like to go ahead and try gcc anyway?"
2594 dflt=n
2595 else
2596 rp="Would you like to use it?"
2597 dflt=y
2598 fi
2573c5f9
JH
2599 if $test -f myread; then
2600 . ./myread
2601 else
2602 if $test -f UU/myread; then
2603 . ./UU/myread
2604 else
2605 echo "Cannot find myread, sorry. Aborting." >&2
2606 exit 1
2607 fi
2608 fi
2609 case "$ans" in
6371411c 2610 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2573c5f9
JH
2611 esac
2612 fi
2613 fi
6b769f8f
RB
2614 fi
2615 $rm -f try try.*
2616 ;;
2617esac
2618EOSC
2619
2620cat <<EOS >checkcc
2621$startsh
2622EOS
2623cat <<'EOSC' >>checkcc
2624case "$cc" in
2625'') ;;
2626*) $rm -f try try.*
2627 $cat >try.c <<EOM
2628int main(int argc, char *argv[]) {
2629 return 0;
2630}
2631EOM
2632 if $cc -o try $ccflags $ldflags try.c; then
2633 :
2634 else
2573c5f9 2635 if $test X"$despair" = Xyes; then
6b769f8f
RB
2636 echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2637 fi
2638 $cat >&4 <<EOM
5dd4fbdf
MB
2639You need to find a working C compiler.
2640Either (purchase and) install the C compiler supplied by your OS vendor,
2641or for a free C compiler try http://gcc.gnu.org/
2642I cannot continue any further, aborting.
2643EOM
6b769f8f 2644 exit 1
2573c5f9
JH
2645 fi
2646 $rm -f try try.*
2647 ;;
2648esac
2649EOSC
2650
a0d0e21e
LW
2651: determine whether symbolic links are supported
2652echo " "
2653$touch blurfl
2654if $ln -s blurfl sym > /dev/null 2>&1 ; then
2655 echo "Symbolic links are supported." >&4
818f00be 2656 lns="$ln -s"
a0d0e21e
LW
2657else
2658 echo "Symbolic links are NOT supported." >&4
2659 lns="$ln"
2660fi
2661$rm -f blurfl sym
2662
dafca956
JH
2663: determine whether symbolic links are supported
2664echo " "
2665case "$lns" in
18ea2752 2666*"ln"*" -s")
dafca956
JH
2667 echo "Checking how to test for symbolic links..." >&4
2668 $lns blurfl sym
4b661809 2669 if $test "X$issymlink" = X; then
2e2a97a6
JH
2670 case "$newsh" in
2671 '') sh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2672 *) $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2673 esac
5d644a95
MB
2674 if test $? = 0; then
2675 issymlink="test -h"
2e2a97a6
JH
2676 else
2677 echo "Your builtin 'test -h' may be broken." >&4
2678 case "$test" in
2679 /*) ;;
2680 *) pth=`echo $PATH | sed -e "s/$p_/ /g"`
2681 for p in $pth
2682 do
2683 if test -f "$p/$test"; then
2684 test="$p/$test"
2685 break
2686 fi
2687 done
2688 ;;
2689 esac
2690 case "$test" in
2691 /*)
2692 echo "Trying external '$test -h'." >&4
2693 issymlink="$test -h"
2694 if $test ! -h sym >/dev/null 2>&1; then
3c728e00 2695 echo "External '$test -h' is broken, too." >&4
2e2a97a6
JH
2696 issymlink=''
2697 fi
2698 ;;
2699 *) issymlink='' ;;
2700 esac
5d644a95
MB
2701 fi
2702 fi
4b661809 2703 if $test "X$issymlink" = X; then
dafca956 2704 if $test -L sym 2>/dev/null; then
5d644a95 2705 issymlink="$test -L"
2e2a97a6 2706 echo "The builtin '$test -L' worked." >&4
dafca956
JH
2707 fi
2708 fi
4b661809 2709 if $test "X$issymlink" != X; then
5d644a95 2710 echo "You can test for symbolic links with '$issymlink'." >&4
dafca956
JH
2711 else
2712 echo "I do not know how you can test for symbolic links." >&4
2713 fi
2714 $rm -f blurfl sym
2715 ;;
2716*) echo "No symbolic links, so not testing for their testing..." >&4
2717 ;;
2718esac
2719echo " "
2720
34f1896b 2721: Make symlinks util
dafca956
JH
2722case "$mksymlinks" in
2723$define|true|[yY]*)
2724 case "$src" in
2725 ''|'.') echo "Cannot create symlinks in the original directory." >&4
2726 exit 1
2727 ;;
4b661809 2728 *) case "$lns:$issymlink" in
f314eb9f 2729 *"ln"*" -s:"*"test -"?)
dafca956
JH
2730 echo "Creating the symbolic links..." >&4
2731 echo "(First creating the subdirectories...)" >&4
2732 cd ..
2733 awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2734 read directory
2735 test -z "$directory" && break
2736 mkdir -p $directory
2737 done
2738 # Sanity check 1.
2739 if test ! -d t/base; then
2740 echo "Failed to create the subdirectories. Aborting." >&4
2741 exit 1
2742 fi
2743 echo "(Then creating the symlinks...)" >&4
2744 awk '{print $1}' $src/MANIFEST | while true; do
2745 read filename
2746 test -z "$filename" && break
2747 if test -f $filename; then
5d644a95 2748 if $issymlink $filename; then
dafca956
JH
2749 rm -f $filename
2750 fi
2751 fi
2752 if test -f $filename; then
2753 echo "$filename already exists, not symlinking."
2754 else
2755 ln -s $src/$filename $filename
2756 fi
2757 done
2758 # Sanity check 2.
a0d24b8a
JH
2759 if test ! -f t/base/lex.t; then
2760 echo "Failed to create the symlinks (t/base/lex.t missing). Aborting." >&4
dafca956
JH
2761 exit 1
2762 fi
2763 cd UU
2764 ;;
2765 *) echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2766 ;;
2767 esac
2768 ;;
2769 esac
2770 ;;
2771esac
2772
613d6c3e 2773: Check for Cross-Compilation
5440bc8e
JH
2774case "$usecrosscompile" in
2775$define|true|[yY]*)
93bc48fa 2776 $echo "Cross-compiling..."
5440bc8e
JH
2777 croak=''
2778 case "$cc" in
2779 *-*-gcc) # A cross-compiling gcc, probably.
93bc48fa 2780 targetarch=`$echo $cc|$sed 's/-gcc$//'`
5440bc8e
JH
2781 ar=$targetarch-ar
2782 # leave out ld, choosing it is more complex
2783 nm=$targetarch-nm
2784 ranlib=$targetarch-ranlib
93bc48fa 2785 $echo 'extern int foo;' > try.c
f8006fac 2786 set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
93bc48fa
JH
2787 shift
2788 if $test $# -gt 0; then
2789 incpth="$incpth $*"
f8006fac
JH
2790 incpth="`$echo $incpth|$sed 's/^ //'`"
2791 echo "Guessing incpth '$incpth'." >&4
93bc48fa 2792 for i in $*; do
f8006fac 2793 j="`$echo $i|$sed 's,/include$,/lib,'`"
93bc48fa
JH
2794 if $test -d $j; then
2795 libpth="$libpth $j"
2796 fi
2797 done
f8006fac
JH
2798 libpth="`$echo $libpth|$sed 's/^ //'`"
2799 echo "Guessing libpth '$libpth'." >&4
93bc48fa
JH
2800 fi
2801 $rm -f try.c
5440bc8e
JH
2802 ;;
2803 esac
2804 case "$targetarch" in
93bc48fa
JH
2805 '') echo "Targetarch not defined." >&4; croak=y ;;
2806 *) echo "Using targetarch $targetarch." >&4 ;;
5440bc8e
JH
2807 esac
2808 case "$incpth" in
93bc48fa 2809 '') echo "Incpth not defined." >&4; croak=y ;;
f8006fac 2810 *) echo "Using incpth '$incpth'." >&4 ;;
5440bc8e
JH
2811 esac
2812 case "$libpth" in
93bc48fa 2813 '') echo "Libpth not defined." >&4; croak=y ;;
f8006fac 2814 *) echo "Using libpth '$libpth'." >&4 ;;
5440bc8e 2815 esac
93bc48fa
JH
2816 case "$usrinc" in
2817 '') for i in $incpth; do
2818 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2819 usrinc=$i
2820 echo "Guessing usrinc $usrinc." >&4
2821 break
2822 fi
2823 done
2824 case "$usrinc" in
2825 '') echo "Usrinc not defined." >&4; croak=y ;;
2826 esac
2827 ;;
2828 *) echo "Using usrinc $usrinc." >&4 ;;
5440bc8e 2829 esac
93bc48fa
JH
2830 case "$targethost" in
2831 '') echo "Targethost not defined." >&4; croak=y ;;
2832 *) echo "Using targethost $targethost." >&4
5440bc8e 2833 esac
93bc48fa
JH
2834 locincpth=' '
2835 loclibpth=' '
5440bc8e 2836 case "$croak" in
93bc48fa 2837 y) echo "Cannot continue, aborting." >&4; exit 1 ;;
5440bc8e
JH
2838 esac
2839 case "$src" in
2840 /*) run=$src/Cross/run
93c0359c 2841 targetmkdir=$src/Cross/mkdir
5440bc8e
JH
2842 to=$src/Cross/to
2843 from=$src/Cross/from
2844 ;;
93bc48fa 2845 *) pwd=`$test -f ../Configure & cd ..; pwd`
5440bc8e 2846 run=$pwd/Cross/run
f8006fac 2847 targetmkdir=$pwd/Cross/mkdir
5440bc8e
JH
2848 to=$pwd/Cross/to
2849 from=$pwd/Cross/from
2850 ;;
2851 esac
2852 case "$targetrun" in
2853 '') targetrun=ssh ;;
2854 esac
2855 case "$targetto" in
2856 '') targetto=scp ;;
2857 esac
2858 case "$targetfrom" in
2859 '') targetfrom=scp ;;
2860 esac
2861 run=$run-$targetrun
2862 to=$to-$targetto
2863 from=$from-$targetfrom
93bc48fa
JH
2864 case "$targetdir" in
2865 '') targetdir=/tmp
2866 echo "Guessing targetdir $targetdir." >&4
2867 ;;
2868 esac
5440bc8e 2869 case "$targetuser" in
93bc48fa
JH
2870 '') targetuser=root
2871 echo "Guessing targetuser $targetuser." >&4
2872 ;;
5440bc8e
JH
2873 esac
2874 case "$targetfrom" in
2875 scp) q=-q ;;
2876 *) q='' ;;
2877 esac
2878 case "$targetrun" in
2879 ssh|rsh)
2880 cat >$run <<EOF
2881#!/bin/sh
93c0359c
JH
2882case "\$1" in
2883-cwd)
2884 shift
2885 cwd=\$1
2886 shift
2887 ;;
2888esac
2889case "\$cwd" in
2890'') cwd=$targetdir ;;
2891esac
5440bc8e
JH
2892exe=\$1
2893shift
93c0359c
JH
2894if $test ! -f \$exe.xok; then
2895 $to \$exe
2896 $touch \$exe.xok
2897fi
2898$targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
5440bc8e
JH
2899EOF
2900 ;;
93bc48fa 2901 *) echo "Unknown targetrun '$targetrun'" >&4
5440bc8e
JH
2902 exit 1
2903 ;;
2904 esac
93c0359c
JH
2905 case "$targetmkdir" in
2906 */Cross/mkdir)
2907 cat >$targetmkdir <<EOF
2908#!/bin/sh
2909$targetrun -l $targetuser $targethost "mkdir -p \$@"
2910EOF
f8006fac 2911 $chmod a+rx $targetmkdir
93c0359c
JH
2912 ;;
2913 *) echo "Unknown targetmkdir '$targetmkdir'" >&4
2914 exit 1
2915 ;;
2916 esac
5440bc8e
JH
2917 case "$targetto" in
2918 scp|rcp)
2919 cat >$to <<EOF
2920#!/bin/sh
2921for f in \$@
2922do
93c0359c
JH
2923 case "\$f" in
2924 /*)
2925 $targetmkdir \`dirname \$f\`
2926 $targetto $q \$f $targetuser@$targethost:\$f || exit 1
2927 ;;
2928 *)
2929 $targetmkdir $targetdir/\`dirname \$f\`
2930 $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2931 ;;
2932 esac
5440bc8e
JH
2933done
2934exit 0
2935EOF
2936 ;;
2937 cp) cat >$to <<EOF
2938#!/bin/sh
93c0359c
JH
2939for f in \$@
2940do
2941 case "\$f" in
2942 /*)
2943 $mkdir -p $targetdir/\`dirname \$f\`
2944 $cp \$f $targetdir/\$f || exit 1
2945 ;;
2946 *)
2947 $targetmkdir $targetdir/\`dirname \$f\`
2948 $cp \$f $targetdir/\$f || exit 1
2949 ;;
2950 esac
2951done
2952exit 0
5440bc8e
JH
2953EOF
2954 ;;
93bc48fa 2955 *) echo "Unknown targetto '$targetto'" >&4
5440bc8e
JH
2956 exit 1
2957 ;;
2958 esac
2959 case "$targetfrom" in
2960 scp|rcp)
2961 cat >$from <<EOF
2962#!/bin/sh
2963for f in \$@
2964do
93c0359c 2965 $rm -f \$f
5440bc8e
JH
2966 $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2967done
2968exit 0
2969EOF
2970 ;;
2971 cp) cat >$from <<EOF
2972#!/bin/sh
2973for f in \$@
2974do
93c0359c 2975 $rm -f \$f
5440bc8e
JH
2976 cp $targetdir/\$f . || exit 1
2977done
2978exit 0
2979EOF
2980 ;;
93bc48fa 2981 *) echo "Unknown targetfrom '$targetfrom'" >&4
5440bc8e
JH
2982 exit 1
2983 ;;
2984 esac
93bc48fa
JH
2985 if $test ! -f $run; then
2986 echo "Target 'run' script '$run' not found." >&4
5440bc8e 2987 else
f8006fac 2988 $chmod a+rx $run
5440bc8e 2989 fi
93bc48fa
JH
2990 if $test ! -f $to; then
2991 echo "Target 'to' script '$to' not found." >&4
5440bc8e 2992 else
f8006fac 2993 $chmod a+rx $to
5440bc8e 2994 fi
93bc48fa
JH
2995 if $test ! -f $from; then
2996 echo "Target 'from' script '$from' not found." >&4
5440bc8e 2997 else
f8006fac 2998 $chmod a+rx $from
5440bc8e 2999 fi
93bc48fa 3000 if $test ! -f $run -o ! -f $to -o ! -f $from; then
5440bc8e
JH
3001 exit 1
3002 fi
3003 cat >&4 <<EOF
f8006fac
JH
3004Using '$run' for remote execution,
3005and '$from' and '$to'
93bc48fa 3006for remote file transfer.
5440bc8e
JH
3007EOF
3008 ;;
3009*) run=''
3010 to=:
3011 from=:
3012 usecrosscompile='undef'
3013 targetarch=''
3014 ;;
3015esac
3016
ecfc5424
AD
3017: see whether [:lower:] and [:upper:] are supported character classes
3018echo " "
ecfc5424
AD
3019case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
3020ABYZ)
3021 echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
3022 up='[:upper:]'
3023 low='[:lower:]'
3024 ;;
416d0bea
MB
3025*) # There is a discontinuity in EBCDIC between 'R' and 'S'
3026 # (0xd9 and 0xe2), therefore that is a nice testing point.
3027 if test "X$up" = X -o "X$low" = X; then
3028 case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
3029 rs) up='[A-Z]'
3030 low='[a-z]'
28e8609d
JH
3031 ;;
3032 esac
416d0bea 3033 fi
28e8609d 3034 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
3035 case "`echo RS | $tr R-S r-s 2>/dev/null`" in
3036 rs) up='A-Z'
28e8609d
JH
3037 low='a-z'
3038 ;;
3039 esac
416d0bea 3040 fi
28e8609d 3041 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
3042 case "`echo RS | od -x 2>/dev/null`" in
3043 *D9E2*|*d9e2*)
28e8609d
JH
3044 echo "Hey, this might be EBCDIC." >&4
3045 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
3046 case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
3047 rs) up='[A-IJ-RS-Z]'
3048 low='[a-ij-rs-z]'
28e8609d
JH
3049 ;;
3050 esac
3051 fi
3052 if test "X$up" = X -o "X$low" = X; then
416d0bea
MB
3053 case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3054 rs) up='A-IJ-RS-Z'
3055 low='a-ij-rs-z'
28e8609d
JH
3056 ;;
3057 esac
3058 fi
3059 ;;
3060 esac
3061 fi
3062esac
416d0bea
MB
3063case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3064rs)
28e8609d
JH
3065 echo "Using $up and $low to convert case." >&4
3066 ;;
ecfc5424 3067*)
28e8609d
JH
3068 echo "I don't know how to translate letters from upper to lower case." >&4
3069 echo "Your tr is not acting any way I know of." >&4
3070 exit 1
3071 ;;
ecfc5424
AD
3072esac
3073: set up the translation script tr, must be called with ./tr of course
3074cat >tr <<EOSC
3075$startsh
3076case "\$1\$2" in
3077'[A-Z][a-z]') exec $tr '$up' '$low';;
3078'[a-z][A-Z]') exec $tr '$low' '$up';;
3079esac
3080exec $tr "\$@"
3081EOSC
3082chmod +x tr
3083$eunicefix tr
3084
2304df62
AD
3085: Try to determine whether config.sh was made on this system
3086case "$config_sh" in
3087'')
43999f95
JH
3088myuname=`$uname -a 2>/dev/null`
3089$test -z "$myuname" && myuname=`hostname 2>/dev/null`
28e8609d
JH
3090# tr '[A-Z]' '[a-z]' would not work in EBCDIC
3091# because the A-Z/a-z are not consecutive.
34e09935 3092myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3eaeeeae 3093 ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
1aef975c 3094newmyuname="$myuname"
2304df62 3095dflt=n
16d20bd9
AD
3096case "$knowitall" in
3097'')
3098 if test -f ../config.sh; then
3099 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3100 eval "`grep myuname= ../config.sh`"
3101 fi
3102 if test "X$myuname" = "X$newmyuname"; then
3103 dflt=y
3104 fi
2304df62 3105 fi
16d20bd9
AD
3106 ;;
3107*) dflt=y;;
3108esac
2304df62
AD
3109
3110: Get old answers from old config file if Configure was run on the
3111: same system, otherwise use the hints.
3112hint=default
3113cd ..
3114if test -f config.sh; then
16d20bd9
AD
3115 echo " "
3116 rp="I see a config.sh file. Shall I use it to set the defaults?"
2304df62
AD
3117 . UU/myread
3118 case "$ans" in
f83701cd
AD
3119 n*|N*) echo "OK, I'll ignore it."
3120 mv config.sh config.sh.old
3121 myuname="$newmyuname"
3122 ;;
2304df62 3123 *) echo "Fetching default answers from your old config.sh file..." >&4
ecfc5424
AD
3124 tmp_n="$n"
3125 tmp_c="$c"
85cad39c 3126 tmp_sh="$sh"
2304df62
AD
3127 . ./config.sh
3128 cp config.sh UU
ecfc5424
AD
3129 n="$tmp_n"
3130 c="$tmp_c"
85cad39c
PP
3131 : Older versions did not always set $sh. Catch re-use of such
3132 : an old config.sh.
3133 case "$sh" in
3134 '') sh="$tmp_sh" ;;
3135 esac
2304df62
AD
3136 hint=previous
3137 ;;
3138 esac
3139fi
2573c5f9 3140. ./UU/checkcc
2304df62
AD
3141if test ! -f config.sh; then
3142 $cat <<EOM
3143
4e2a5f63
AD
3144First time through, eh? I have some defaults handy for some systems
3145that need some extra help getting the Configure answers right:
2304df62
AD
3146
3147EOM
dfe9444c 3148 (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/ /g' >&4
2304df62
AD
3149 dflt=''
3150 : Half the following guesses are probably wrong... If you have better
7f2de2d2 3151 : tests or hints, please send them to perlbug@perl.org
2304df62 3152 : The metaconfig authors would also appreciate a copy...
a0d0e21e 3153 $test -f /irix && osname=irix
85e6fe83
LW
3154 $test -f /xenix && osname=sco_xenix
3155 $test -f /dynix && osname=dynix
3156 $test -f /dnix && osname=dnix
5f05dabc
PP
3157 $test -f /lynx.os && osname=lynxos
3158 $test -f /unicos && osname=unicos && osvers=`$uname -r`
c71a9cee 3159 $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
7a4c00b4 3160 $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
85e6fe83 3161 $test -f /bin/mips && /bin/mips && osname=mips
ecfc5424
AD
3162 $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3163 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
a0d0e21e
LW
3164 $test -d /usr/apollo/bin && osname=apollo
3165 $test -f /etc/saf/_sactab && osname=svr4
85e6fe83 3166 $test -d /usr/include/minix && osname=minix
d54344fc 3167 $test -f /system/gnu_library/bin/ar.pm && osname=vos
e060872b 3168 if $test -d /MachTen -o -d /MachTen_Folder; then
dfe9444c 3169 osname=machten
4633a7c4 3170 if $test -x /sbin/version; then
dfe9444c 3171 osvers=`/sbin/version | $awk '{print $2}' |
4633a7c4
LW
3172 $sed -e 's/[A-Za-z]$//'`
3173 elif $test -x /usr/etc/version; then
dfe9444c 3174 osvers=`/usr/etc/version | $awk '{print $2}' |
4633a7c4
LW
3175 $sed -e 's/[A-Za-z]$//'`
3176 else
3177 osvers="$2.$3"
3178 fi
3179 fi
aaacdc8b
GS
3180
3181 $test -f /sys/posix.dll &&
3182 $test -f /usr/bin/what &&
3183 set X `/usr/bin/what /sys/posix.dll` &&
3184 $test "$3" = UWIN &&
3185 osname=uwin &&
3186 osvers="$5"
3187
2304df62
AD
3188 if $test -f $uname; then
3189 set X $myuname
3190 shift
3191
2304df62 3192 case "$5" in
85e6fe83 3193 fps*) osname=fps ;;
2304df62
AD
3194 mips*)
3195 case "$4" in
85e6fe83
LW
3196 umips) osname=umips ;;
3197 *) osname=mips ;;
2304df62 3198 esac;;
85e6fe83
LW
3199 [23]100) osname=mips ;;
3200 next*) osname=next ;;
ecfc5424 3201 i386*)
c6912327
JH
3202 tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3203 if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
619ffc2b
JH
3204 osname='sco'
3205 osvers=$tmp
3206 elif $test -f /etc/kconfig; then
ecfc5424 3207 osname=isc
bd628c73 3208 if test "$lns" = "$ln -s"; then
a0d0e21e
LW
3209 osvers=4
3210 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3211 osvers=3
2304df62 3212 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
a0d0e21e 3213 osvers=2
ecfc5424
AD
3214 fi
3215 fi
2000072c 3216 tmp=''
ecfc5424 3217 ;;
c4f23d77
AD
3218 pc*)
3219 if test -n "$DJGPP"; then
3220 osname=dos
3221 osvers=djgpp
3222 fi
3223 ;;
2304df62
AD
3224 esac
3225
3226 case "$1" in
a0d0e21e
LW
3227 aix) osname=aix
3228 tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3229 case "$tmp" in
e81c5c2a
NC
3230 # oslevel can fail with:
3231 # oslevel: Unable to acquire lock.
3232 *not\ found) osvers="$4"."$3" ;;
a0d0e21e
LW
3233 '<3240'|'<>3240') osvers=3.2.0 ;;
3234 '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3235 '=3250'|'>3250') osvers=3.2.5 ;;
1aef975c 3236 *) osvers=$tmp;;
a0d0e21e
LW
3237 esac
3238 ;;
aaacdc8b
GS
3239 bsd386) osname=bsd386
3240 osvers=`$uname -r`
3241 ;;
3242 cygwin*) osname=cygwin
3243 osvers="$3"
3244 ;;
23f87696
SZ
3245 *dc.osx) osname=dcosx
3246 osvers="$3"
3247 ;;
a0d0e21e
LW
3248 dnix) osname=dnix
3249 osvers="$3"
3250 ;;
3251 domainos) osname=apollo
3252 osvers="$3"
3253 ;;
a774dfe6
RSG
3254 dgux) osname=dgux
3255 osvers="$3"
3256 ;;
3257 dragonfly) osname=dragonfly
a0d0e21e
LW
3258 osvers="$3"
3259 ;;
760ac839 3260 dynixptx*) osname=dynixptx
e58e581d 3261 osvers=`echo "$4"|sed 's/^v//'`
760ac839 3262 ;;
a774dfe6 3263 freebsd) osname=freebsd
a0d0e21e 3264 osvers="$3" ;;
761ee4e8
BD
3265 genix) osname=genix ;;
3266 gnu) osname=gnu
3267 osvers="$3" ;;
a774dfe6 3268 hp*) osname=hpux
bfb7748a 3269 osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
a0d0e21e 3270 ;;
761ee4e8 3271 irix*) osname=irix
a0d0e21e
LW
3272 case "$3" in
3273 4*) osvers=4 ;;
3274 5*) osvers=5 ;;
ecfc5424 3275 *) osvers="$3" ;;
a0d0e21e
LW
3276 esac
3277 ;;
761ee4e8 3278 linux) osname=linux
a0d0e21e 3279 case "$3" in
a0d0e21e
LW
3280 *) osvers="$3" ;;
3281 esac
3282 ;;
761ee4e8 3283 MiNT) osname=mint
28e8609d
JH
3284 ;;
3285 netbsd*) osname=netbsd
ecfc5424
AD
3286 osvers="$3"
3287 ;;
4e81affe
MMIJG
3288 news-os) osvers="$3"
3289 case "$3" in
3290 4*) osname=newsos4 ;;
3291 *) osname=newsos ;;
3292 esac
3293 ;;
aaacdc8b 3294 next*) osname=next ;;
28bb1e2c 3295 nonstop-ux) osname=nonstopux ;;
65dc58a1
TM
3296 openbsd) osname=openbsd
3297 osvers="$3"
3298 ;;
5c728af0
IZ
3299 os2) osname=os2
3300 osvers="$4"
3301 ;;
aaacdc8b
GS
3302 POSIX-BC | posix-bc ) osname=posix-bc
3303 osvers="$3"
a0d0e21e 3304 ;;
ae3afa4e
TH
3305 powerux | power_ux | powermax_os | powermaxos | \
3306 powerunix | power_unix) osname=powerux
3307 osvers="$3"
3308 ;;
aaacdc8b
GS
3309 qnx) osname=qnx
3310 osvers="$4"
3311 ;;
a0d0e21e
LW
3312 solaris) osname=solaris
3313 case "$3" in
3314 5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
ecfc5424 3315 *) osvers="$3" ;;
a0d0e21e
LW
3316 esac
3317 ;;
85e6fe83
LW
3318 sunos) osname=sunos
3319 case "$3" in
85e6fe83
LW
3320 5*) osname=solaris
3321 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
a0d0e21e 3322 *) osvers="$3" ;;
2304df62
AD
3323 esac
3324 ;;
a0d0e21e 3325 titanos) osname=titanos
85e6fe83 3326 case "$3" in
a0d0e21e
LW
3327 1*) osvers=1 ;;
3328 2*) osvers=2 ;;
3329 3*) osvers=3 ;;
3330 4*) osvers=4 ;;
ecfc5424 3331 *) osvers="$3" ;;
2304df62
AD
3332 esac
3333 ;;
85e6fe83 3334 ultrix) osname=ultrix
ecfc5424 3335 osvers="$3"
2304df62 3336 ;;
28757baa 3337 osf1|mls+) case "$5" in
fed7345c
AD
3338 alpha)
3339 osname=dec_osf
fdd85a03 3340 osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' | tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
2aa76180
JH
3341 case "$osvers" in
3342 [1-9].[0-9]*) ;;
3343 *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3344 esac
ecfc5424
AD
3345 ;;
3346 hp*) osname=hp_osf1 ;;
3347 mips) osname=mips_osf1 ;;
85e6fe83
LW
3348 esac
3349 ;;
af1ff193 3350 # UnixWare 7.1.2 is known as Open UNIX 8
381c1bae 3351 openunix|unixware) osname=svr5
0337d152
A
3352 osvers="$4"
3353 ;;
3c728e00 3354 uts) osname=uts
a0d0e21e
LW
3355 osvers="$3"
3356 ;;
3c728e00
JH
3357 vos) osvers="$3"
3358 ;;
85e6fe83 3359 $2) case "$osname" in
2304df62 3360 *isc*) ;;
a0d0e21e 3361 *freebsd*) ;;
5f05dabc 3362 svr*)
a0d0e21e 3363 : svr4.x or possibly later
a774dfe6 3364 case "svr$3" in
a0d0e21e
LW
3365 ${osname}*)
3366 osname=svr$3
3367 osvers=$4
3368 ;;
3369 esac
3370 case "$osname" in
3371 svr4.0)
3372 : Check for ESIX
3373 if test -f /stand/boot ; then
3374 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
ecfc5424
AD
3375 if test -n "$INITPROG" -a -f "$INITPROG"; then
3376 isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3377 if test -n "$isesix"; then
a0d0e21e
LW
3378 osname=esix4
3379 fi
3380 fi
3381 fi
3382 ;;
3383 esac
3384 ;;
2304df62 3385 *) if test -f /etc/systemid; then
a0d0e21e
LW
3386 osname=sco
3387 set `echo $3 | $sed 's/\./ /g'` $4
c4f23d77 3388 if $test -f $src/hints/sco_$1_$2_$3.sh; then
85e6fe83 3389 osvers=$1.$2.$3
c4f23d77 3390 elif $test -f $src/hints/sco_$1_$2.sh; then
85e6fe83 3391 osvers=$1.$2
c4f23d77 3392 elif $test -f $src/hints/sco_$1.sh; then
85e6fe83 3393 osvers=$1
2304df62 3394 fi
a0d0e21e
LW
3395 else
3396 case "$osname" in
3397 '') : Still unknown. Probably a generic Sys V.
3398 osname="sysv"
3399 osvers="$3"
3400 ;;
3401 esac
2304df62
AD
3402 fi
3403 ;;
3404 esac
3405 ;;
a0d0e21e
LW
3406 *) case "$osname" in
3407 '') : Still unknown. Probably a generic BSD.
3408 osname="$1"
3409 osvers="$3"
3410 ;;
3411 esac
3412 ;;
2304df62
AD
3413 esac
3414 else
dfe9444c
AD
3415 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3416 (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3417 if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3418 osname=news_os
2304df62 3419 fi
dfe9444c 3420 $rm -f UU/kernel.what
5c728af0 3421 elif test -d c:/. -o -n "$is_os2" ; then
8e07c86e
AD
3422 set X $myuname
3423 osname=os2
3424 osvers="$5"
2304df62
AD
3425 fi
3426 fi
a774dfe6 3427
5440bc8e
JH
3428 case "$targetarch" in
3429 '') ;;
3430 *) hostarch=$osname
3431 osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3432 osvers=''
3433 ;;
3434 esac
3435
a0d0e21e
LW
3436 : Now look for a hint file osname_osvers, unless one has been
3437 : specified already.
3438 case "$hintfile" in
3439 ''|' ')
1e127011 3440 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
a0d0e21e 3441 : Also try without trailing minor version numbers.
1e127011
DD
3442 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3443 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3444 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3445 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
a0d0e21e
LW
3446 case "$file" in
3447 '') dflt=none ;;
3448 *) case "$osvers" in
3449 '') dflt=$file
3450 ;;
dfe9444c 3451 *) if $test -f $src/hints/$file.sh ; then
a0d0e21e 3452 dflt=$file
dfe9444c 3453 elif $test -f $src/hints/$xfile.sh ; then
a0d0e21e 3454 dflt=$xfile
dfe9444c 3455 elif $test -f $src/hints/$xxfile.sh ; then
a0d0e21e 3456 dflt=$xxfile
dfe9444c 3457 elif $test -f $src/hints/$xxxfile.sh ; then
a0d0e21e 3458 dflt=$xxxfile
dfe9444c 3459 elif $test -f $src/hints/$xxxxfile.sh ; then
a0d0e21e 3460 dflt=$xxxxfile
dfe9444c 3461 elif $test -f "$src/hints/${osname}.sh" ; then
a0d0e21e
LW
3462 dflt="${osname}"
3463 else
3464 dflt=none
3465 fi
3466 ;;
3467 esac
85e6fe83
LW
3468 ;;
3469 esac
4e2a5f63
AD
3470 if $test -f Policy.sh ; then
3471 case "$dflt" in
3472 *Policy*) ;;
3473 none) dflt="Policy" ;;
3474 *) dflt="Policy $dflt" ;;
3475 esac
3476 fi
85e6fe83 3477 ;;
a0d0e21e 3478 *)
ecfc5424 3479 dflt=`echo $hintfile | $sed 's/\.sh$//'`
a0d0e21e 3480 ;;
2304df62 3481 esac
1aef975c 3482
4e2a5f63
AD
3483 if $test -f Policy.sh ; then
3484 $cat <<EOM
3485
3486There's also a Policy hint file available, which should make the
3487site-specific (policy) questions easier to answer.
3488EOM
3489
3490 fi
3491
2304df62
AD
3492 $cat <<EOM
3493
3494You may give one or more space-separated answers, or "none" if appropriate.
a2d23ec2
MB
3495If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3496previous run of Configure, you may specify it as well as or instead of
3497OS-specific hints. If hints are provided for your OS, you should use them:
3498although Perl can probably be built without hints on many platforms, using
3499hints often improve performance and may enable features that Configure can't
3500set up on its own. If there are no hints that match your OS, specify "none";
3501DO NOT give a wrong version or a wrong OS.
2304df62
AD
3502
3503EOM
4e2a5f63 3504
2304df62 3505 rp="Which of these apply, if any?"
dfe9444c 3506 . UU/myread
85e6fe83
LW
3507 tans=$ans
3508 for file in $tans; do
4e2a5f63
AD
3509 if $test X$file = XPolicy -a -f Policy.sh; then
3510 . Policy.sh
3511 $cat Policy.sh >> UU/config.sh
3512 elif $test -f $src/hints/$file.sh; then
dfe9444c
AD
3513 . $src/hints/$file.sh
3514 $cat $src/hints/$file.sh >> UU/config.sh
5440bc8e 3515 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
2304df62
AD
3516 : nothing
3517 else
85e6fe83
LW
3518 : Give one chance to correct a possible typo.
3519 echo "$file.sh does not exist"
3520 dflt=$file
3521 rp="hint to use instead?"
dfe9444c 3522 . UU/myread
85e6fe83 3523 for file in $ans; do
dfe9444c
AD
3524 if $test -f "$src/hints/$file.sh"; then
3525 . $src/hints/$file.sh
3526 $cat $src/hints/$file.sh >> UU/config.sh
85e6fe83
LW
3527 elif $test X$ans = X -o X$ans = Xnone ; then
3528 : nothing
3529 else
3530 echo "$file.sh does not exist -- ignored."
3531 fi
3532 done
2304df62
AD
3533 fi
3534 done
85e6fe83 3535
2304df62 3536 hint=recommended
85e6fe83 3537 : Remember our hint file for later.
dfe9444c 3538 if $test -f "$src/hints/$file.sh" ; then
a0d0e21e 3539 hintfile="$file"
85e6fe83 3540 else
a0d0e21e 3541 hintfile=''
85e6fe83 3542 fi
2304df62
AD
3543fi
3544cd UU
3545;;
3546*)
3547 echo " "
3548 echo "Fetching default answers from $config_sh..." >&4
ecfc5424
AD
3549 tmp_n="$n"
3550 tmp_c="$c"
2304df62
AD
3551 cd ..
3552 cp $config_sh config.sh 2>/dev/null
a78b0d02 3553 chmod +w config.sh
2304df62
AD
3554 . ./config.sh
3555 cd UU
3556 cp ../config.sh .
ecfc5424
AD
3557 n="$tmp_n"
3558 c="$tmp_c"
2304df62
AD
3559 hint=previous
3560 ;;
3561esac
1aef975c 3562test "$override" && . ./optdef.sh
2304df62
AD
3563
3564: Restore computed paths
3565for file in $loclist $trylist; do
3566 eval $file="\$_$file"
3567done
3568
85e6fe83 3569cat << EOM
a0d0e21e 3570
85e6fe83 3571Configure uses the operating system name and version to set some defaults.
ecfc5424
AD
3572The default value is probably right if the name rings a bell. Otherwise,
3573since spelling matters for me, either accept the default or answer "none"
3574to leave it blank.
a0d0e21e 3575
85e6fe83 3576EOM
85e6fe83 3577case "$osname" in
a0d0e21e 3578 ''|' ')
85e6fe83 3579 case "$hintfile" in
a0d0e21e 3580 ''|' '|none) dflt=none ;;
ecfc5424 3581 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
85e6fe83
LW
3582 esac
3583 ;;
3584 *) dflt="$osname" ;;
3585esac
3586rp="Operating system name?"
3587. ./myread
3588case "$ans" in
ecfc5424
AD
3589none) osname='' ;;
3590*) osname=`echo "$ans" | $sed -e 's/[ ][ ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
85e6fe83 3591esac
8ff267be
PP
3592echo " "
3593case "$osvers" in
3594 ''|' ')
3595 case "$hintfile" in
3596 ''|' '|none) dflt=none ;;
3597 *) dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3598 dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3599 case "$dflt" in
3600 ''|' ') dflt=none ;;
3601 esac
3602 ;;
3603 esac
3604 ;;
3605 *) dflt="$osvers" ;;
3606esac
3607rp="Operating system version?"
3608. ./myread
3609case "$ans" in
3610none) osvers='' ;;
3611*) osvers="$ans" ;;
3612esac
3613
02e93a22
JH
3614
3615. ./posthint.sh
3616
2304df62 3617: who configured the system
59b83a6f 3618cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
dfe9444c
AD
3619case "$cf_by" in
3620"")
7c04078e 3621 cf_by=`(logname) 2>/dev/null`
dfe9444c 3622 case "$cf_by" in
7c04078e
GA
3623 "")
3624 cf_by=`(whoami) 2>/dev/null`
3625 case "$cf_by" in
3626 "") cf_by=unknown ;;
3627 esac ;;
8ff267be
PP
3628 esac ;;
3629esac
2304df62 3630
f3f1a2d8
MB
3631: decide how portable to be. Allow command line overrides.
3632case "$d_portable" in
3633"$undef") ;;
3634*) d_portable="$define" ;;
b4eb6b3d 3635esac
b4eb6b3d 3636
f3f1a2d8
MB
3637: set up shell script to do ~ expansion
3638cat >filexp <<EOSS
3639$startsh
3640: expand filename
3641case "\$1" in
f16e9d76 3642 \~/*|\~)
f3f1a2d8
MB
3643 echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3644 ;;
4137585d 3645 \~*)
f3f1a2d8
MB
3646 if $test -f /bin/csh; then
3647 /bin/csh -f -c "glob \$1"
3648 failed=\$?
3649 echo ""
3650 exit \$failed
3651 else
3652 name=\`$expr x\$1 : '..\([^/]*\)'\`
3653 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3654 if $test ! -d "\$dir"; then
3655 me=\`basename \$0\`
3656 echo "\$me: can't locate home directory for: \$name" >&2
3657 exit 1
3658 fi
3659 case "\$1" in
3660 */*)
3661 echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3662 ;;
3663 *)
3664 echo \$dir
3665 ;;
3666 esac
3667 fi
3668 ;;
3669*)
3670 echo \$1
3671 ;;
b29b105d 3672esac
f3f1a2d8
MB
3673EOSS
3674chmod +x filexp
3675$eunicefix filexp
b29b105d 3676
f3f1a2d8
MB
3677: now set up to get a file name
3678cat <<EOS >getfile
3679$startsh
3680EOS
3681cat <<'EOSC' >>getfile
3682tilde=''
3683fullpath=''
3684already=''
3685skip=''
3686none_ok=''
3687exp_file=''
3688nopath_ok=''
3689orig_rp="$rp"
3690orig_dflt="$dflt"
3691case "$gfpth" in
3692'') gfpth='.' ;;
b29b105d 3693esac
b29b105d 3694
f3f1a2d8
MB
3695case "$fn" in
3696*\(*)
3697 : getfile will accept an answer from the comma-separated list
3698 : enclosed in parentheses even if it does not meet other criteria.
3699 expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3700 fn=`echo $fn | sed 's/(.*)//'`
3701 ;;
b29b105d
JH
3702esac
3703
f3f1a2d8
MB
3704case "$fn" in
3705*:*)
3706 loc_file=`expr $fn : '.*:\(.*\)'`
3707 fn=`expr $fn : '\(.*\):.*'`
3708 ;;
b29b105d 3709esac
b29b105d 3710
f3f1a2d8
MB
3711case "$fn" in
3712*~*) tilde=true;;
3713esac
3714case "$fn" in
3715*/*) fullpath=true;;
3716esac
3717case "$fn" in
3718*+*) skip=true;;
3719esac
3720case "$fn" in
3721*n*) none_ok=true;;
3722esac
3723case "$fn" in
3724*e*) exp_file=true;;
3725esac
3726case "$fn" in
3727*p*) nopath_ok=true;;
b29b105d 3728esac
b29b105d 3729
f3f1a2d8
MB
3730case "$fn" in
3731*f*) type='File';;
3732*d*) type='Directory';;
3733*l*) type='Locate';;
3734esac
b29b105d 3735
f3f1a2d8
MB
3736what="$type"
3737case "$what" in
3738Locate) what='File';;
3739esac
b29b105d 3740
f3f1a2d8
MB
3741case "$exp_file" in
3742'')
3743 case "$d_portable" in
3744 "$define") ;;
3745 *) exp_file=true;;
b29b105d
JH
3746 esac
3747 ;;
3748esac
3749
f3f1a2d8
MB
3750cd ..
3751while test "$type"; do
3752 redo=''
3753 rp="$orig_rp"
3754 dflt="$orig_dflt"
3755 case "$tilde" in
3756 true) rp="$rp (~name ok)";;
3757 esac
3758 . UU/myread
3759 if test -f UU/getfile.ok && \
3760 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3761 then
3762 value="$ans"
3763 ansexp="$ans"
3764 break
3765 fi
3766 case "$ans" in
3767 none)
3768 value=''
3769 ansexp=''
3770 case "$none_ok" in
3771 true) type='';;
b29b105d
JH
3772 esac
3773 ;;
f3f1a2d8
MB
3774 *)
3775 case "$tilde" in
3776 '') value="$ans"
3777 ansexp="$ans";;
3778 *)
3779 value=`UU/filexp $ans`
3780 case $? in
3781 0)
3782 if test "$ans" != "$value"; then
3783 echo "(That expands to $value on this system.)"
3784 fi
3785 ;;
3786 *) value="$ans";;
3787 esac
3788 ansexp="$value"
3789 case "$exp_file" in
3790 '') value="$ans";;
3791 esac
3792 ;;
3793 esac
3794 case "$fullpath" in
3795 true)
3796 case "$ansexp" in
3797 /*) value="$ansexp" ;;
3798 [a-zA-Z]:/*) value="$ansexp" ;;
3799 *)
3800 redo=true
3801 case "$already" in
3802 true)
3803 echo "I shall only accept a full path name, as in /bin/ls." >&4
3804 echo "Use a ! shell escape if you wish to check pathnames." >&4
3805 ;;
3806 *)
3807 echo "Please give a full path name, starting with slash." >&4
3808 case "$tilde" in
3809 true)
3810 echo "Note that using ~name is ok provided it expands well." >&4
3811 already=true
3812 ;;
3813 esac
3814 esac
3815 ;;
3816 esac
3817 ;;
3818 esac
3819 case "$redo" in
3820 '')
3821 case "$type" in
3822 File)
3823 for fp in $gfpth; do
3824 if test "X$fp" = X.; then
3825 pf="$ansexp"
3826 else
3827 pf="$fp/$ansexp"
3828 fi
3829 if test -f "$pf"; then
3830 type=''
3831 elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3832 then
3833 echo "($value is not a plain file, but that's ok.)"
3834 type=''
3835 fi
3836 if test X"$type" = X; then
3837 value="$pf"
3838 break
3839 fi
3840 done
3841 ;;
3842 Directory)
3843 for fp in $gfpth; do
3844 if test "X$fp" = X.; then
3845 dir="$ans"
3846 direxp="$ansexp"
3847 else
3848 dir="$fp/$ansexp"
3849 direxp="$fp/$ansexp"
3850 fi
3851 if test -d "$direxp"; then
3852 type=''
3853 value="$dir"
3854 break
3855 fi
3856 done
3857 ;;
3858 Locate)
3859 if test -d "$ansexp"; then
3860 echo "(Looking for $loc_file in directory $value.)"
3861 value="$value/$loc_file"
3862 ansexp="$ansexp/$loc_file"
3863 fi
3864 if test -f "$ansexp"; then
3865 type=''
3866 fi
3867 case "$nopath_ok" in
3868 true) case "$value" in
3869 */*) ;;
3870 *) echo "Assuming $value will be in people's path."
3871 type=''
3872 ;;
3873 esac
3874 ;;
3875 esac
3876 ;;
3877 esac
b4eb6b3d 3878
f3f1a2d8
MB
3879 case "$skip" in
3880 true) type='';
3881 esac
3882
3883