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