This is a live mirror of the Perl 5 development currently hosted at https://github.com/perl/perl5
fix comment for upstream meta
[perl5.git] / Configure
1 #! /bin/sh
2 #
3 # If these # comments don't work, trim them. Don't worry about any other
4 # shell scripts, Configure will trim # comments from them for you.
5 #
6 # (If you are trying to port this package to a machine without sh,
7 # I would suggest you have a look at the prototypical config_h.SH file
8 # and edit it to reflect your system. Some packages may include samples
9 # of config.h for certain machines, so you might look for one of those.)
10 #
11 # Yes, you may rip this off to use in other distribution packages. This
12 # script belongs to the public domain and cannot be copyrighted.
13 #
14 # Note: this Configure script was generated automatically by the tool
15 # called "metaconfig". Rather than working with this copy of Configure,
16 # you may wish to get metaconfig. Perl uses a modified version of this
17 # tool, available in the "dist" folder in the checkout of the git repo
18 #    $ git clone https://github.com/perl5-metaconfig/metaconfig metaconfig
19 # The original dist package (including metaconfig) is available on github:
20 #    $ git clone https://github.com/rmanfredi/dist.git dist-git
21 #
22 # Though this script was generated by metaconfig from metaunits, it is
23 # OK to send patches against Configure itself. It's up to the Configure
24 # pumpkin to backport the patch to the metaunits if it is accepted.
25 # For more information on patching Configure, see pod/perlhack.pod
26 #
27 # The metaunits are also available from the public github repository:
28 #     https://github.com/perl5-metaconfig/metaconfig/tree/master/U
29 #
30 # See Porting/pumpkin.pod for more information on metaconfig.
31
32 # Generated using [metaconfig 3.5 PL0]
33 # (with additional metaconfig patches by perlbug@perl.org)
34
35 cat >c1$$ <<EOF
36 ARGGGHHHH!!!!!
37
38 SCO csh still thinks true is false.  Write to SCO today and tell them that next
39 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
40
41 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
42 we'd have to do is go in and swap the && and || tokens, wherever they are.)
43
44 [End of diatribe. We now return you to your regularly scheduled programming...]
45 EOF
46 cat >c2$$ <<EOF
47
48 OOPS!  You naughty creature!  You didn't run Configure with sh!
49 I will attempt to remedy the situation by running sh for you...
50 EOF
51
52 true || cat c1$$ c2$$
53 true || exec sh $0 $argv:q
54
55 (exit $?0) || cat c2$$
56 (exit $?0) || exec sh $0 $argv:q
57 rm -f c1$$ c2$$
58
59 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
60         cat <<EOF
61 ***
62 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
63 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
64 *** Please read the README.plan9 for further instructions.
65 *** Cannot continue, aborting.
66 ***
67 EOF
68         exit 1
69 fi
70
71 if test -f /sys/utilities/MultiView ; then
72         # AmigaOS, test -c for /dev/null is not useful
73         :
74 elif test ! -c /dev/null ; then
75         cat <<EOF
76 ***
77 *** I'm sorry, but /dev/null appears to be a file rather than a device.
78 *** Please consult your operating sytem's notes for making a device
79 *** in /dev.
80 *** Cannot continue, aborting.
81 ***
82 EOF
83         exit 1
84 fi
85
86 : compute my invocation name
87 me=$0
88 case "$0" in
89 */*)
90         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
91         test "$me" || me=$0
92         ;;
93 esac
94
95 : Proper separator for the PATH environment variable
96 p_=:
97 : On OS/2 this directory should exist if this is not floppy only system ":-]"
98 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' 2>&1 ) 2>&1 >/dev/null ; then
99         if test -n "$OS2_SHELL"; then
100                 p_=\;
101                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
102                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
103                 is_os2=yes
104         elif test -n "$DJGPP"; then
105                 case "X${MACHTYPE:-nonesuchmach}" in
106                 *cygwin|*msys) ;;
107                 *) p_=\; ;;
108                 esac
109         fi
110 fi
111
112 : Proper PATH setting
113 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
114 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
115 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
116 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
117 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
118 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
119 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
120 paths="$paths /sbin /usr/sbin /usr/libexec"
121 paths="$paths /system/gnu_library/bin"
122
123 for p in $paths
124 do
125         case "$p_$PATH$p_" in
126         *$p_$p$p_*) ;;
127         *) test -d $p && PATH=$PATH$p_$p ;;
128         esac
129 done
130
131 PATH=.$p_$PATH
132 export PATH
133
134 : shall we be using ksh?
135 inksh=''
136 needksh=''
137 avoidksh=''
138 newsh=/bin/ksh
139 changesh=''
140 if (PATH=.; alias -x) >/dev/null 2>&1; then
141                 inksh=true
142 fi
143 if test -f /hp-ux -a -f /bin/ksh; then
144         needksh='to avoid sh bug in "here document" expansion'
145 fi
146 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
147         if test X`/usr/bin/uname -v` = X4; then
148                 avoidksh="to avoid AIX 4's /bin/sh"
149                 newsh=/usr/bin/bsh
150         fi
151 fi
152 if test -f /osf_boot -a -f /usr/sbin/setld; then
153         if test X`/usr/bin/uname -s` = XOSF1; then
154                 avoidksh="to avoid Digital UNIX' ksh"
155                 newsh=/bin/sh
156                 unset BIN_SH
157         fi
158 fi
159 case "$inksh/$needksh" in
160 /[a-z]*)
161                 ENV=''
162                 changesh=true
163                 reason="$needksh"
164         ;;
165 esac
166 case "$inksh/$avoidksh" in
167 true/[a-z]*)
168         changesh=true
169         reason="$avoidksh"
170         ;;
171 esac
172 case "$inksh/$needksh-$avoidksh-" in
173 true/--)
174                 cat <<EOM
175 (I see you are using the Korn shell.  Some ksh's blow up on $me,
176 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
177 EOM
178         ;;
179 esac
180 case "$changesh" in
181 true)
182         export newsh
183         echo "(Feeding myself to $newsh $reason.)"
184         case "$0" in
185         Configure|*/Configure) exec $newsh $0 "$@";;
186         *) exec $newsh Configure "$@";;
187         esac
188         ;;
189 esac
190 test -x "${newsh}" || unset newsh
191
192 : if needed, set CDPATH to a harmless value that is not chatty
193 : avoid bash 2.02 problems with empty CDPATH.
194 case "$CDPATH" in
195 '')     ;;
196 *)      case "$SHELL" in
197         *bash*) CDPATH='.' ;;
198         *) CDPATH='' ;;
199         esac
200         ;;
201 esac
202
203 : Configure runs within the UU subdirectory
204 test -d UU || mkdir UU
205 cd UU && rm -f ./*
206
207 ccname=''
208 ccversion=''
209 ccsymbols=''
210 cppccsymbols=''
211 cppsymbols=''
212 from=''
213 hostgenerate=''
214 hostosname=''
215 hostperl=''
216 run=''
217 targetarch=''
218 targetdir=''
219 targetenv=''
220 targethost=''
221 targetmkdir=''
222 targetport=''
223 to=''
224 usecrosscompile=''
225 extern_C=''
226 mistrustnm=''
227 usedevel=''
228 perllibs=''
229 dynamic_ext=''
230 extensions=''
231 known_extensions=''
232 nonxs_ext=''
233 static_ext=''
234 useopcode=''
235 useposix=''
236 extras=''
237 d_bsd=''
238 d_eunice=''
239 d_xenix=''
240 eunicefix=''
241 ar=''
242 awk=''
243 bash=''
244 bison=''
245 byacc=''
246 cat=''
247 chgrp=''
248 chmod=''
249 chown=''
250 comm=''
251 compress=''
252 cp=''
253 cpio=''
254 cpp=''
255 csh=''
256 date=''
257 echo=''
258 egrep=''
259 emacs=''
260 expr=''
261 find=''
262 flex=''
263 gmake=''
264 grep=''
265 gzip=''
266 inews=''
267 ksh=''
268 less=''
269 line=''
270 lint=''
271 ln=''
272 lp=''
273 lpr=''
274 ls=''
275 mail=''
276 mailx=''
277 make=''
278 mkdir=''
279 more=''
280 mv=''
281 nm=''
282 nroff=''
283 perl=''
284 pg=''
285 pmake=''
286 pr=''
287 rm=''
288 rmail=''
289 sed=''
290 sendmail=''
291 shar=''
292 sleep=''
293 smail=''
294 sort=''
295 submit=''
296 tail=''
297 tar=''
298 tbl=''
299 tee=''
300 test=''
301 touch=''
302 tr=''
303 troff=''
304 uname=''
305 uniq=''
306 uuname=''
307 vi=''
308 zcat=''
309 zip=''
310 full_ar=''
311 full_sed=''
312 libswanted=''
313 hint=''
314 myuname=''
315 osname=''
316 osvers=''
317 Author=''
318 Date=''
319 Header=''
320 Id=''
321 Locker=''
322 Log=''
323 RCSfile=''
324 Revision=''
325 Source=''
326 State=''
327 sysroot=''
328 _a=''
329 _exe=''
330 _o=''
331 archobjs=''
332 exe_ext=''
333 firstmakefile=''
334 lib_ext=''
335 obj_ext=''
336 path_sep=''
337 rm_try=''
338 afs=''
339 afsroot=''
340 alignbytes=''
341 ansi2knr=''
342 archlib=''
343 archlibexp=''
344 d_archlib=''
345 installarchlib=''
346 archname=''
347 myarchname=''
348 useversionedarchname=''
349 d_atolf=''
350 d_atoll=''
351 baserev=''
352 bin=''
353 binexp=''
354 initialinstalllocation=''
355 installbin=''
356 userelocatableinc=''
357 byteorder=''
358 cc=''
359 ccflags=''
360 cppflags=''
361 ldflags=''
362 lkflags=''
363 locincpth=''
364 optimize=''
365 cf_email=''
366 cf_by=''
367 cf_time=''
368 charbits=''
369 charsize=''
370 contains=''
371 cpp_stuff=''
372 cpplast=''
373 cppminus=''
374 cpprun=''
375 cppstdin=''
376 d__fwalk=''
377 d_access=''
378 d_accessx=''
379 d_acosh=''
380 d_aintl=''
381 d_alarm=''
382 asctime_r_proto=''
383 d_asctime_r=''
384 d_asinh=''
385 d_atanh=''
386 d_attribute_deprecated=''
387 d_attribute_format=''
388 d_attribute_malloc=''
389 d_attribute_nonnull=''
390 d_attribute_noreturn=''
391 d_attribute_pure=''
392 d_attribute_unused=''
393 d_attribute_warn_unused_result=''
394 d_printf_format_null=''
395 d_backtrace=''
396 d_bcmp=''
397 d_bcopy=''
398 d_builtin_choose_expr=''
399 d_builtin_expect=''
400 d_bzero=''
401 d_c99_variadic_macros=''
402 d_casti32=''
403 castflags=''
404 d_castneg=''
405 d_cbrt=''
406 d_chown=''
407 d_chroot=''
408 d_chsize=''
409 d_class=''
410 d_clearenv=''
411 d_closedir=''
412 d_void_closedir=''
413 d_cmsghdr_s=''
414 d_const=''
415 d_copysign=''
416 d_copysignl=''
417 d_cplusplus=''
418 cryptlib=''
419 d_crypt=''
420 crypt_r_proto=''
421 d_crypt_r=''
422 d_csh=''
423 full_csh=''
424 d_ctermid=''
425 ctermid_r_proto=''
426 d_ctermid_r=''
427 ctime_r_proto=''
428 d_ctime_r=''
429 d_cuserid=''
430 d_dbl_dig=''
431 d_dbminitproto=''
432 d_difftime=''
433 d_dir_dd_fd=''
434 d_dirfd=''
435 d_dladdr=''
436 d_dlerror=''
437 d_dlopen=''
438 d_dlsymun=''
439 d_dosuid=''
440 d_suidsafe=''
441 d_drand48_r=''
442 drand48_r_proto=''
443 d_drand48proto=''
444 d_dup2=''
445 d_eaccess=''
446 d_endgrent=''
447 d_endgrent_r=''
448 endgrent_r_proto=''
449 d_endhent=''
450 d_endhostent_r=''
451 endhostent_r_proto=''
452 d_endnent=''
453 d_endnetent_r=''
454 endnetent_r_proto=''
455 d_endpent=''
456 d_endprotoent_r=''
457 endprotoent_r_proto=''
458 d_endpwent=''
459 d_endpwent_r=''
460 endpwent_r_proto=''
461 d_endsent=''
462 d_endservent_r=''
463 endservent_r_proto=''
464 d_erf=''
465 d_erfc=''
466 d_exp2=''
467 d_expm1=''
468 d_faststdio=''
469 d_fchdir=''
470 d_fchmod=''
471 d_fchown=''
472 d_fcntl=''
473 d_fcntl_can_lock=''
474 d_fd_macros=''
475 d_fd_set=''
476 d_fds_bits=''
477 d_fdclose=''
478 d_fdim=''
479 d_fegetround=''
480 d_fgetpos=''
481 d_finite=''
482 d_finitel=''
483 d_flexfnam=''
484 d_flock=''
485 d_flockproto=''
486 d_fma=''
487 d_fmax=''
488 d_fmin=''
489 d_fork=''
490 d_fp_class=''
491 d_fp_classl=''
492 d_fpclass=''
493 d_fp_classify=''
494 d_fpclassify=''
495 d_fpclassl=''
496 d_fpgetround=''
497 d_fpos64_t=''
498 d_frexpl=''
499 d_fs_data_s=''
500 d_fchmodat=''
501 d_linkat=''
502 d_openat=''
503 d_renameat=''
504 d_unlinkat=''
505 d_fseeko=''
506 d_fsetpos=''
507 d_fstatfs=''
508 d_fsync=''
509 d_ftello=''
510 d_ftime=''
511 d_gettimeod=''
512 d_futimes=''
513 d_gai_strerror=''
514 d_Gconvert=''
515 d_getaddrinfo=''
516 d_getcwd=''
517 d_getespwnam=''
518 d_getfsstat=''
519 d_getgrent=''
520 d_getgrent_r=''
521 getgrent_r_proto=''
522 d_getgrgid_r=''
523 getgrgid_r_proto=''
524 d_getgrnam_r=''
525 getgrnam_r_proto=''
526 d_getgrps=''
527 d_gethbyaddr=''
528 d_gethbyname=''
529 d_gethent=''
530 aphostname=''
531 d_gethname=''
532 d_phostname=''
533 d_uname=''
534 d_gethostbyaddr_r=''
535 gethostbyaddr_r_proto=''
536 d_gethostbyname_r=''
537 gethostbyname_r_proto=''
538 d_gethostent_r=''
539 gethostent_r_proto=''
540 d_gethostprotos=''
541 d_getitimer=''
542 d_getlogin=''
543 d_getlogin_r=''
544 getlogin_r_proto=''
545 d_getmnt=''
546 d_getmntent=''
547 d_getnameinfo=''
548 d_getnbyaddr=''
549 d_getnbyname=''
550 d_getnent=''
551 d_getnetbyaddr_r=''
552 getnetbyaddr_r_proto=''
553 d_getnetbyname_r=''
554 getnetbyname_r_proto=''
555 d_getnetent_r=''
556 getnetent_r_proto=''
557 d_getnetprotos=''
558 d_getpagsz=''
559 d_getpent=''
560 d_getpgid=''
561 d_getpgrp2=''
562 d_bsdgetpgrp=''
563 d_getpgrp=''
564 d_getppid=''
565 d_getprior=''
566 d_getpbyname=''
567 d_getpbynumber=''
568 d_getprotobyname_r=''
569 getprotobyname_r_proto=''
570 d_getprotobynumber_r=''
571 getprotobynumber_r_proto=''
572 d_getprotoent_r=''
573 getprotoent_r_proto=''
574 d_getprotoprotos=''
575 d_getprpwnam=''
576 d_getpwent=''
577 d_getpwent_r=''
578 getpwent_r_proto=''
579 d_getpwnam_r=''
580 getpwnam_r_proto=''
581 d_getpwuid_r=''
582 getpwuid_r_proto=''
583 d_getsent=''
584 d_getservbyname_r=''
585 getservbyname_r_proto=''
586 d_getservbyport_r=''
587 getservbyport_r_proto=''
588 d_getservent_r=''
589 getservent_r_proto=''
590 d_getservprotos=''
591 d_getspnam=''
592 d_getspnam_r=''
593 getspnam_r_proto=''
594 d_getsbyname=''
595 d_getsbyport=''
596 d_gmtime_r=''
597 gmtime_r_proto=''
598 d_gnulibc=''
599 gnulibc_version=''
600 d_hasmntopt=''
601 d_htonl=''
602 d_hypot=''
603 d_ilogb=''
604 d_ilogbl=''
605 d_inetaton=''
606 d_inetntop=''
607 d_inetpton=''
608 d_int64_t=''
609 d_isascii=''
610 d_isblank=''
611 d_isfinite=''
612 d_isfinitel=''
613 d_isinf=''
614 d_isinfl=''
615 d_isless=''
616 d_isnan=''
617 d_isnanl=''
618 d_isnormal=''
619 d_j0=''
620 d_j0l=''
621 d_killpg=''
622 d_lc_monetary_2008=''
623 d_lchown=''
624 d_ldbl_dig=''
625 d_lgamma=''
626 d_lgamma_r=''
627 d_libm_lib_version=''
628 d_link=''
629 d_llrint=''
630 d_llrintl=''
631 d_llround=''
632 d_llroundl=''
633 d_localtime_r=''
634 d_localtime_r_needs_tzset=''
635 localtime_r_proto=''
636 d_locconv=''
637 d_lockf=''
638 d_log1p=''
639 d_log2=''
640 d_logb=''
641 d_ldexpl=''
642 d_long_double_style_ieee=''
643 d_long_double_style_ieee_doubledouble=''
644 d_long_double_style_ieee_extended=''
645 d_long_double_style_ieee_std=''
646 d_long_double_style_vax=''
647 d_longdbl=''
648 longdblkind=''
649 longdblsize=''
650 d_longlong=''
651 longlongsize=''
652 d_lrint=''
653 d_lrintl=''
654 d_lround=''
655 d_lroundl=''
656 d_lseekproto=''
657 d_lstat=''
658 d_madvise=''
659 d_malloc_good_size=''
660 d_malloc_size=''
661 d_mblen=''
662 d_mbstowcs=''
663 d_mbtowc=''
664 d_memchr=''
665 d_memcmp=''
666 d_memcpy=''
667 d_memmem=''
668 d_memmove=''
669 d_memrchr=''
670 d_memset=''
671 d_mkdir=''
672 d_mkdtemp=''
673 d_mkfifo=''
674 d_mkstemp=''
675 d_mkstemps=''
676 d_mktime=''
677 d_mmap=''
678 mmaptype=''
679 d_modfl=''
680 d_modflproto=''
681 d_mprotect=''
682 d_msg=''
683 d_msgctl=''
684 d_msgget=''
685 d_msghdr_s=''
686 d_msgrcv=''
687 d_msgsnd=''
688 d_msync=''
689 d_munmap=''
690 d_nan=''
691 d_nearbyint=''
692 d_duplocale=''
693 d_freelocale=''
694 d_newlocale=''
695 d_querylocale=''
696 d_uselocale=''
697 i_xlocale=''
698 d_nextafter=''
699 d_nexttoward=''
700 d_nice=''
701 d_nl_langinfo=''
702 d_off64_t=''
703 d_open3=''
704 d_fpathconf=''
705 d_pathconf=''
706 d_pause=''
707 d_pipe=''
708 d_poll=''
709 d_portable=''
710 d_prctl=''
711 d_prctl_set_name=''
712 d_procselfexe=''
713 procselfexe=''
714 d_old_pthread_create_joinable=''
715 old_pthread_create_joinable=''
716 d_pthread_atfork=''
717 d_pthread_attr_setscope=''
718 d_pthread_yield=''
719 d_sched_yield=''
720 sched_yield=''
721 d_ptrdiff_t=''
722 d_qgcvt=''
723 d_random_r=''
724 random_r_proto=''
725 d_readdir64_r=''
726 readdir64_r_proto=''
727 d_readdir=''
728 d_rewinddir=''
729 d_seekdir=''
730 d_telldir=''
731 d_readdir_r=''
732 readdir_r_proto=''
733 d_readlink=''
734 d_readv=''
735 d_recvmsg=''
736 d_re_comp=''
737 d_regcmp=''
738 d_regcomp=''
739 d_remainder=''
740 d_remquo=''
741 d_rename=''
742 d_rint=''
743 d_rmdir=''
744 d_round=''
745 d_safebcpy=''
746 d_safemcpy=''
747 d_sanemcmp=''
748 d_sbrkproto=''
749 d_scalbn=''
750 d_scalbnl=''
751 d_select=''
752 d_sem=''
753 d_semctl=''
754 d_semget=''
755 d_semop=''
756 d_sendmsg=''
757 d_setegid=''
758 d_seteuid=''
759 d_setgrent=''
760 d_setgrent_r=''
761 setgrent_r_proto=''
762 d_setgrps=''
763 d_sethent=''
764 d_sethostent_r=''
765 sethostent_r_proto=''
766 d_setitimer=''
767 d_setlinebuf=''
768 d_setlocale=''
769 d_setlocale_r=''
770 setlocale_r_proto=''
771 d_setnent=''
772 d_setnetent_r=''
773 setnetent_r_proto=''
774 d_setpent=''
775 d_setpgid=''
776 d_setpgrp2=''
777 d_bsdsetpgrp=''
778 d_setpgrp=''
779 d_setprior=''
780 d_setproctitle=''
781 d_setprotoent_r=''
782 setprotoent_r_proto=''
783 d_setpwent=''
784 d_setpwent_r=''
785 setpwent_r_proto=''
786 d_setregid=''
787 d_setresgid=''
788 d_setresuid=''
789 d_setreuid=''
790 d_setrgid=''
791 d_setruid=''
792 d_setsent=''
793 d_setservent_r=''
794 setservent_r_proto=''
795 d_setsid=''
796 d_setvbuf=''
797 d_shm=''
798 d_shmat=''
799 d_shmatprototype=''
800 shmattype=''
801 d_shmctl=''
802 d_shmdt=''
803 d_shmget=''
804 d_sigaction=''
805 d_siginfo_si_addr=''
806 d_siginfo_si_band=''
807 d_siginfo_si_errno=''
808 d_siginfo_si_fd=''
809 d_siginfo_si_pid=''
810 d_siginfo_si_status=''
811 d_siginfo_si_uid=''
812 d_siginfo_si_value=''
813 d_signbit=''
814 d_sigprocmask=''
815 d_sigsetjmp=''
816 usesitecustomize=''
817 d_snprintf=''
818 d_vsnprintf=''
819 d_sockatmark=''
820 d_sockatmarkproto=''
821 d_ip_mreq=''
822 d_ip_mreq_source=''
823 d_ipv6_mreq=''
824 d_ipv6_mreq_source=''
825 d_msg_ctrunc=''
826 d_msg_dontroute=''
827 d_msg_oob=''
828 d_msg_peek=''
829 d_msg_proxy=''
830 d_oldsock=''
831 d_scm_rights=''
832 d_sin6_scope_id=''
833 d_sockaddr_in6=''
834 d_sockaddr_sa_len=''
835 d_socket=''
836 d_sockpair=''
837 sockethdr=''
838 socketlib=''
839 d_socklen_t=''
840 d_socks5_init=''
841 d_sprintf_returns_strlen=''
842 d_sqrtl=''
843 d_srand48_r=''
844 srand48_r_proto=''
845 d_srandom_r=''
846 srandom_r_proto=''
847 d_sresgproto=''
848 d_sresuproto=''
849 d_stat=''
850 d_statblks=''
851 d_statfs_f_flags=''
852 d_statfs_s=''
853 d_static_inline=''
854 perl_static_inline=''
855 d_fstatvfs=''
856 d_statvfs=''
857 d_stdio_cnt_lval=''
858 d_stdio_ptr_lval=''
859 d_stdio_ptr_lval_nochange_cnt=''
860 d_stdio_ptr_lval_sets_cnt=''
861 d_stdiobase=''
862 d_stdstdio=''
863 stdio_base=''
864 stdio_bufsiz=''
865 stdio_cnt=''
866 stdio_filbuf=''
867 stdio_ptr=''
868 d_index=''
869 d_strchr=''
870 d_strcoll=''
871 d_strctcpy=''
872 d_strerrm=''
873 d_strerror=''
874 d_sysernlst=''
875 d_syserrlst=''
876 d_strerror_l=''
877 d_strerror_r=''
878 strerror_r_proto=''
879 d_strftime=''
880 d_strlcat=''
881 d_strlcpy=''
882 d_strtod=''
883 d_strtol=''
884 d_strtold=''
885 d_strtoll=''
886 d_strtoq=''
887 d_strtoul=''
888 d_strtoull=''
889 d_strtouq=''
890 d_strxfrm=''
891 d_symlink=''
892 d_syscall=''
893 d_syscallproto=''
894 d_sysconf=''
895 d_system=''
896 d_tcgetpgrp=''
897 d_tcsetpgrp=''
898 d_telldirproto=''
899 d_tgamma=''
900 d_time=''
901 timetype=''
902 d_asctime64=''
903 d_ctime64=''
904 d_difftime64=''
905 d_gmtime64=''
906 d_localtime64=''
907 d_mktime64=''
908 d_timegm=''
909 clocktype=''
910 d_times=''
911 d_tmpnam_r=''
912 tmpnam_r_proto=''
913 d_trunc=''
914 d_truncate=''
915 d_truncl=''
916 d_ttyname_r=''
917 ttyname_r_proto=''
918 d_tzname=''
919 d_u32align=''
920 d_ualarm=''
921 d_umask=''
922 d_semctl_semid_ds=''
923 d_semctl_semun=''
924 d_union_semun=''
925 d_unordered=''
926 d_unsetenv=''
927 d_usleep=''
928 d_usleepproto=''
929 d_ustat=''
930 d_pseudofork=''
931 d_vfork=''
932 usevfork=''
933 d_voidsig=''
934 signal_t=''
935 d_volatile=''
936 d_charvspr=''
937 d_vprintf=''
938 d_wait4=''
939 d_waitpid=''
940 d_wcscmp=''
941 d_wcstombs=''
942 d_wcsxfrm=''
943 d_wctomb=''
944 d_writev=''
945 default_inc_excludes_dot=''
946 dlext=''
947 bin_ELF=''
948 cccdlflags=''
949 ccdlflags=''
950 dlsrc=''
951 ld=''
952 ld_can_script=''
953 lddlflags=''
954 usedl=''
955 doublesize=''
956 dtraceobject=''
957 dtracexnolibs=''
958 ebcdic=''
959 fflushNULL=''
960 fflushall=''
961 fpossize=''
962 fpostype=''
963 gccansipedantic=''
964 gccosandvers=''
965 gccversion=''
966 gidformat=''
967 gidsign=''
968 gidsize=''
969 gidtype=''
970 groupstype=''
971 h_fcntl=''
972 h_sysfile=''
973 html1dir=''
974 html1direxp=''
975 installhtml1dir=''
976 html3dir=''
977 html3direxp=''
978 installhtml3dir=''
979 i_arpainet=''
980 i_assert=''
981 i_bfd=''
982 i_crypt=''
983 db_hashtype=''
984 db_prefixtype=''
985 db_version_major=''
986 db_version_minor=''
987 db_version_patch=''
988 i_db=''
989 i_dbm=''
990 i_rpcsvcdbm=''
991 d_dirnamlen=''
992 direntrytype=''
993 i_dirent=''
994 i_dlfcn=''
995 i_execinfo=''
996 i_fcntl=''
997 i_fenv=''
998 i_float=''
999 i_fp=''
1000 i_fp_class=''
1001 i_gdbm=''
1002 d_grpasswd=''
1003 i_grp=''
1004 i_ieeefp=''
1005 i_inttypes=''
1006 i_langinfo=''
1007 i_libutil=''
1008 i_limits=''
1009 i_locale=''
1010 i_machcthr=''
1011 i_malloc=''
1012 i_mallocmalloc=''
1013 i_math=''
1014 i_memory=''
1015 i_mntent=''
1016 d_gdbm_ndbm_h_uses_prototypes=''
1017 d_gdbmndbm_h_uses_prototypes=''
1018 d_ndbm=''
1019 d_ndbm_h_uses_prototypes=''
1020 i_gdbm_ndbm=''
1021 i_gdbmndbm=''
1022 i_ndbm=''
1023 i_netdb=''
1024 i_neterrno=''
1025 i_netinettcp=''
1026 i_niin=''
1027 i_sysin=''
1028 i_poll=''
1029 i_prot=''
1030 i_pthread=''
1031 d_pwage=''
1032 d_pwchange=''
1033 d_pwclass=''
1034 d_pwcomment=''
1035 d_pwexpire=''
1036 d_pwgecos=''
1037 d_pwpasswd=''
1038 d_pwquota=''
1039 i_pwd=''
1040 i_quadmath=''
1041 i_shadow=''
1042 i_socks=''
1043 i_stdbool=''
1044 i_stddef=''
1045 i_stdint=''
1046 i_stdlib=''
1047 i_string=''
1048 strings=''
1049 i_sunmath=''
1050 i_sysaccess=''
1051 i_sysdir=''
1052 i_sysfile=''
1053 d_voidtty=''
1054 i_bsdioctl=''
1055 i_sysfilio=''
1056 i_sysioctl=''
1057 i_syssockio=''
1058 i_syslog=''
1059 i_sysmman=''
1060 i_sysmode=''
1061 i_sysmount=''
1062 i_sysndir=''
1063 i_sysparam=''
1064 i_syspoll=''
1065 i_sysresrc=''
1066 i_syssecrt=''
1067 i_sysselct=''
1068 i_sysstat=''
1069 i_sysstatfs=''
1070 i_sysstatvfs=''
1071 i_systimes=''
1072 i_systypes=''
1073 i_sysuio=''
1074 i_sysun=''
1075 i_sysutsname=''
1076 i_sysvfs=''
1077 i_syswait=''
1078 i_sgtty=''
1079 i_termio=''
1080 i_termios=''
1081 d_tm_tm_gmtoff=''
1082 d_tm_tm_zone=''
1083 i_systime=''
1084 i_systimek=''
1085 i_time=''
1086 timeincl=''
1087 i_unistd=''
1088 i_ustat=''
1089 i_utime=''
1090 i_values=''
1091 i_stdarg=''
1092 i_varargs=''
1093 i_varhdr=''
1094 i_vfork=''
1095 d_inc_version_list=''
1096 inc_version_list=''
1097 inc_version_list_init=''
1098 doubleinfbytes=''
1099 doublenanbytes=''
1100 longdblinfbytes=''
1101 longdblnanbytes=''
1102 installprefix=''
1103 installprefixexp=''
1104 installstyle=''
1105 installusrbinperl=''
1106 intsize=''
1107 longsize=''
1108 shortsize=''
1109 issymlink=''
1110 libc=''
1111 ldlibpthname=''
1112 libperl=''
1113 shrpenv=''
1114 useshrplib=''
1115 glibpth=''
1116 incpth=''
1117 libpth=''
1118 loclibpth=''
1119 plibpth=''
1120 xlibpth=''
1121 ignore_versioned_solibs=''
1122 libs=''
1123 libsdirs=''
1124 libsfiles=''
1125 libsfound=''
1126 libspath=''
1127 lns=''
1128 d_PRIEUldbl=''
1129 d_PRIFUldbl=''
1130 d_PRIGUldbl=''
1131 d_PRIeldbl=''
1132 d_PRIfldbl=''
1133 d_PRIgldbl=''
1134 d_SCNfldbl=''
1135 d_double_has_inf=''
1136 d_double_has_nan=''
1137 d_double_has_negative_zero=''
1138 d_double_has_subnormals=''
1139 d_double_style_cray=''
1140 d_double_style_ibm=''
1141 d_double_style_ieee=''
1142 d_double_style_vax=''
1143 doublekind=''
1144 sPRIEUldbl=''
1145 sPRIFUldbl=''
1146 sPRIGUldbl=''
1147 sPRIeldbl=''
1148 sPRIfldbl=''
1149 sPRIgldbl=''
1150 sSCNfldbl=''
1151 lseeksize=''
1152 lseektype=''
1153 make_set_make=''
1154 d_mymalloc=''
1155 freetype=''
1156 mallocobj=''
1157 mallocsrc=''
1158 malloctype=''
1159 usemallocwrap=''
1160 usemymalloc=''
1161 installman1dir=''
1162 man1dir=''
1163 man1direxp=''
1164 man1ext=''
1165 installman3dir=''
1166 man3dir=''
1167 man3direxp=''
1168 man3ext=''
1169 doublemantbits=''
1170 longdblmantbits=''
1171 nvmantbits=''
1172 modetype=''
1173 multiarch=''
1174 mydomain=''
1175 myhostname=''
1176 phostname=''
1177 c=''
1178 n=''
1179 d_eofnblk=''
1180 eagain=''
1181 o_nonblock=''
1182 rd_nodata=''
1183 need_va_copy=''
1184 netdb_hlen_type=''
1185 netdb_host_type=''
1186 netdb_name_type=''
1187 netdb_net_type=''
1188 groupcat=''
1189 hostcat=''
1190 passcat=''
1191 orderlib=''
1192 ranlib=''
1193 d_perl_otherlibdirs=''
1194 otherlibdirs=''
1195 package=''
1196 spackage=''
1197 pager=''
1198 api_revision=''
1199 api_subversion=''
1200 api_version=''
1201 api_versionstring=''
1202 patchlevel=''
1203 perl_patchlevel=''
1204 revision=''
1205 subversion=''
1206 version=''
1207 version_patchlevel_string=''
1208 perl5=''
1209 perladmin=''
1210 perlpath=''
1211 d_nv_preserves_uv=''
1212 d_nv_zero_is_allbits_zero=''
1213 i16size=''
1214 i16type=''
1215 i32size=''
1216 i32type=''
1217 i64size=''
1218 i64type=''
1219 i8size=''
1220 i8type=''
1221 ivsize=''
1222 ivtype=''
1223 nv_overflows_integers_at=''
1224 nv_preserves_uv_bits=''
1225 nvsize=''
1226 nvtype=''
1227 u16size=''
1228 u16type=''
1229 u32size=''
1230 u32type=''
1231 u64size=''
1232 u64type=''
1233 u8size=''
1234 u8type=''
1235 uvsize=''
1236 uvtype=''
1237 ivdformat=''
1238 nvEUformat=''
1239 nvFUformat=''
1240 nvGUformat=''
1241 nveformat=''
1242 nvfformat=''
1243 nvgformat=''
1244 uvXUformat=''
1245 uvoformat=''
1246 uvuformat=''
1247 uvxformat=''
1248 pidtype=''
1249 prefix=''
1250 prefixexp=''
1251 installprivlib=''
1252 privlib=''
1253 privlibexp=''
1254 prototype=''
1255 ptrsize=''
1256 d_PRIXU64=''
1257 d_PRId64=''
1258 d_PRIi64=''
1259 d_PRIo64=''
1260 d_PRIu64=''
1261 d_PRIx64=''
1262 sPRIXU64=''
1263 sPRId64=''
1264 sPRIi64=''
1265 sPRIo64=''
1266 sPRIu64=''
1267 sPRIx64=''
1268 d_quad=''
1269 quadkind=''
1270 quadtype=''
1271 uquadtype=''
1272 drand01=''
1273 randbits=''
1274 randfunc=''
1275 randseedtype=''
1276 seedfunc=''
1277 installscript=''
1278 scriptdir=''
1279 scriptdirexp=''
1280 selectminbits=''
1281 selecttype=''
1282 sh=''
1283 targetsh=''
1284 sig_count=''
1285 sig_name=''
1286 sig_name_init=''
1287 sig_num=''
1288 sig_num_init=''
1289 sig_size=''
1290 d_sitearch=''
1291 installsitearch=''
1292 sitearch=''
1293 sitearchexp=''
1294 installsitebin=''
1295 sitebin=''
1296 sitebinexp=''
1297 installsitehtml1dir=''
1298 sitehtml1dir=''
1299 sitehtml1direxp=''
1300 installsitehtml3dir=''
1301 sitehtml3dir=''
1302 sitehtml3direxp=''
1303 installsitelib=''
1304 sitelib=''
1305 sitelib_stem=''
1306 sitelibexp=''
1307 installsiteman1dir=''
1308 siteman1dir=''
1309 siteman1direxp=''
1310 installsiteman3dir=''
1311 siteman3dir=''
1312 siteman3direxp=''
1313 siteprefix=''
1314 siteprefixexp=''
1315 installsitescript=''
1316 sitescript=''
1317 sitescriptexp=''
1318 sizesize=''
1319 sizetype=''
1320 d_libname_unique=''
1321 so=''
1322 socksizetype=''
1323 sharpbang=''
1324 shsharp=''
1325 spitshell=''
1326 src=''
1327 ssizetype=''
1328 st_ino_sign=''
1329 st_ino_size=''
1330 startperl=''
1331 startsh=''
1332 stdchar=''
1333 d_stdio_stream_array=''
1334 stdio_stream_array=''
1335 sysman=''
1336 sGMTIME_max=''
1337 sGMTIME_min=''
1338 sLOCALTIME_max=''
1339 sLOCALTIME_min=''
1340 trnl=''
1341 uidformat=''
1342 uidsign=''
1343 uidsize=''
1344 uidtype=''
1345 archname64=''
1346 use64bitall=''
1347 use64bitint=''
1348 usecbacktrace=''
1349 dtrace=''
1350 usedtrace=''
1351 usefaststdio=''
1352 usekernprocpathname=''
1353 ccflags_uselargefiles=''
1354 ldflags_uselargefiles=''
1355 libswanted_uselargefiles=''
1356 uselargefiles=''
1357 uselongdouble=''
1358 usemorebits=''
1359 usemultiplicity=''
1360 nm_opt=''
1361 nm_so_opt=''
1362 runnm=''
1363 usenm=''
1364 usensgetexecutablepath=''
1365 useperlio=''
1366 usequadmath=''
1367 usesocks=''
1368 d_oldpthreads=''
1369 use5005threads=''
1370 useithreads=''
1371 usereentrant=''
1372 usethreads=''
1373 incpath=''
1374 mips_type=''
1375 usrinc=''
1376 vaproto=''
1377 d_vendorarch=''
1378 installvendorarch=''
1379 vendorarch=''
1380 vendorarchexp=''
1381 d_vendorbin=''
1382 installvendorbin=''
1383 vendorbin=''
1384 vendorbinexp=''
1385 installvendorhtml1dir=''
1386 vendorhtml1dir=''
1387 vendorhtml1direxp=''
1388 installvendorhtml3dir=''
1389 vendorhtml3dir=''
1390 vendorhtml3direxp=''
1391 d_vendorlib=''
1392 installvendorlib=''
1393 vendorlib=''
1394 vendorlib_stem=''
1395 vendorlibexp=''
1396 installvendorman1dir=''
1397 vendorman1dir=''
1398 vendorman1direxp=''
1399 installvendorman3dir=''
1400 vendorman3dir=''
1401 vendorman3direxp=''
1402 usevendorprefix=''
1403 vendorprefix=''
1404 vendorprefixexp=''
1405 d_vendorscript=''
1406 installvendorscript=''
1407 vendorscript=''
1408 vendorscriptexp=''
1409 versiononly=''
1410 yacc=''
1411 yaccflags=''
1412 CONFIG=''
1413
1414 : Detect odd OSs
1415 define='define'
1416 undef='undef'
1417 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1418 rmlist=''
1419
1420 : We must find out about Eunice early
1421 eunicefix=':'
1422 if test -f /etc/unixtovms; then
1423         eunicefix=/etc/unixtovms
1424 fi
1425 if test -f /etc/unixtovms.exe; then
1426         eunicefix=/etc/unixtovms.exe
1427 fi
1428
1429 : Set executable suffix now -- needed before hints available
1430 if test -f "/libs/version.library"; then
1431 : Amiga OS
1432     _exe=""
1433 elif test -f "/system/gnu_library/bin/ar.pm"; then
1434 : Stratus VOS
1435     _exe=".pm"
1436 elif test -n "$DJGPP"; then
1437 : DOS DJGPP
1438     _exe=".exe"
1439 elif test -f /kern/cookiejar; then
1440 : MiNT
1441     _exe=""
1442 elif test -d c:/. -o -n "$is_os2" ; then
1443 : OS/2 or cygwin
1444     _exe=".exe"
1445 fi
1446
1447 groupstype=''
1448 i_whoami=''
1449 : Possible local include directories to search.
1450 : Set locincpth to "" in a hint file to defeat local include searches.
1451 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1452 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1453 :
1454 : no include file wanted by default
1455 inclwanted=''
1456
1457 : Enable -DEBUGGING and -DDEBUGGING from the command line
1458 EBUGGING=''
1459 DEBUGGING=''
1460
1461 : Trailing extension.  Override this in a hint file, if needed.
1462 : Extra object files, if any, needed on this platform.
1463 archobjs=''
1464 libnames=''
1465 : change the next line if compiling for Xenix/286 on Xenix/386
1466 xlibpth='/usr/lib/386 /lib/386'
1467 : Possible local library directories to search.
1468 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1469 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1470
1471 : general looking path for locating libraries
1472 glibpth="/lib /usr/lib $xlibpth"
1473 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1474 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1475 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1476 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1477
1478 : Private path used by Configure to find libraries.  Its value
1479 : is prepended to libpth. This variable takes care of special
1480 : machines, like the mips.  Usually, it should be empty.
1481 plibpth=''
1482
1483 : default library list
1484 libswanted=''
1485 : some systems want to use only the non-versioned libso:s
1486 ignore_versioned_solibs=''
1487 ccname=''
1488 ccversion=''
1489 perllibs=''
1490 : set useposix=false in your hint file to disable the POSIX extension.
1491 useposix=true
1492 : set useopcode=false in your hint file to disable the Opcode extension.
1493 useopcode=true
1494 archname64=''
1495 ccflags_uselargefiles=''
1496 ldflags_uselargefiles=''
1497 libswanted_uselargefiles=''
1498 : set usemultiplicity on the Configure command line to enable multiplicity.
1499 : set usesocks on the Configure command line to enable socks.
1500 archname=''
1501 : set usethreads on the Configure command line to enable threads.
1502 usereentrant='undef'
1503 : List of libraries we want.
1504 : If anyone needs extra -lxxx, put those in a hint file.
1505 libswanted="cl pthread socket bind inet nsl ndbm gdbm dbm db malloc dl ld"
1506 libswanted="$libswanted sun m crypt sec util c cposix posix ucb bsd BSD"
1507 : We probably want to search /usr/shlib before most other libraries.
1508 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1509 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1510 glibpth="/usr/shlib $glibpth"
1511 : Do not use vfork unless overridden by a hint file.
1512 usevfork=false
1513
1514 : Find the basic shell for Bourne shell scripts
1515 case "$sh" in
1516 '')
1517         case "$SYSTYPE" in
1518         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1519         *) xxx='/bin/sh';;
1520         esac
1521         if test -f "$xxx"; then
1522                 sh="$xxx"
1523         else
1524                 : Build up a list and do a single loop so we can 'break' out.
1525                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1526                 for xxx in sh bash ksh pdksh ash; do
1527                         for p in $pth; do
1528                                 try="$try ${p}/${xxx}"
1529                         done
1530                 done
1531                 for xxx in $try; do
1532                         if test -f "$xxx"; then
1533                                 sh="$xxx";
1534                                 break
1535                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1536                                 sh="$xxx";
1537                                 break
1538                         elif test -f "$xxx.exe"; then
1539                                 sh="$xxx";
1540                                 break
1541                         fi
1542                 done
1543         fi
1544         ;;
1545 esac
1546
1547 case "$sh" in
1548 '')     cat >&2 <<EOM
1549 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.
1550
1551 Usually it's in /bin/sh.  How did you even get this far?
1552 Please contact me (Perl Maintainers) at perlbug@perl.org and
1553 we'll try to straighten this all out.
1554 EOM
1555         exit 1
1556         ;;
1557 esac
1558
1559 : When cross-compiling we need to separate the sh-to-run-Configure-with from the sh-to-use-in-Perl
1560 : default both to the same thing, cross-compilers can then set targetsh differently if they like
1561 targetsh=$sh
1562
1563 : see if sh knows # comments
1564 if `$sh -c '#' >/dev/null 2>&1`; then
1565         shsharp=true
1566         spitshell=cat
1567         xcat=/bin/cat
1568         test -f $xcat$_exe || xcat=/usr/bin/cat
1569         if test ! -f $xcat$_exe; then
1570                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1571                         if test -f $p/cat$_exe; then
1572                                 xcat=$p/cat
1573                                 break
1574                         fi
1575                 done
1576                 if test ! -f $xcat$_exe; then
1577                         echo "Can't find cat anywhere!"
1578                         exit 1
1579                 fi
1580         fi
1581         echo "#!$xcat" >sharp
1582         $eunicefix sharp
1583         chmod +x sharp
1584         ./sharp > today 2>/dev/null
1585         if test -s today; then
1586                 sharpbang='#!'
1587         else
1588                 echo "#! $xcat" > sharp
1589                 $eunicefix sharp
1590                 chmod +x sharp
1591                 ./sharp > today 2>/dev/null
1592                 if test -s today; then
1593                         sharpbang='#! '
1594                 else
1595                         sharpbang=': use '
1596                 fi
1597         fi
1598 else
1599         echo " "
1600         echo "Your $sh doesn't grok # comments--I will strip them later on."
1601         shsharp=false
1602         cd ..
1603         echo "exec grep -v '^[  ]*#'" >spitshell
1604         chmod +x spitshell
1605         $eunicefix spitshell
1606         spitshell=`pwd`/spitshell
1607         cd UU
1608         echo "I presume that if # doesn't work, #! won't work either!"
1609         sharpbang=': use '
1610 fi
1611 rm -f sharp today
1612
1613 : figure out how to guarantee sh startup
1614 case "$startsh" in
1615 '') startsh=${sharpbang}${sh} ;;
1616 *)
1617 esac
1618 cat >sharp <<EOSS
1619 $startsh
1620 set abc
1621 test "$?abc" != 1
1622 EOSS
1623
1624 chmod +x sharp
1625 $eunicefix sharp
1626 if ./sharp; then
1627         : echo "Yup, it does."
1628 else
1629         echo "Hmm... '$startsh' does not guarantee sh startup..."
1630         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1631 fi
1632 rm -f sharp
1633
1634 : Save command line options in file UU/cmdline.opt for later use in
1635 : generating config.sh.
1636 cat > cmdline.opt <<EOSH
1637 : Configure command line arguments.
1638 config_arg0='$0'
1639 config_args='$*'
1640 config_argc=$#
1641 EOSH
1642 argn=1
1643 args_exp=''
1644 args_sep=''
1645 for arg in "$@"; do
1646         cat >>cmdline.opt <<EOSH
1647 config_arg$argn='$arg'
1648 EOSH
1649         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1650 $arg
1651 EOC
1652         arg_exp=`cat cmdl.opt`
1653         args_exp="$args_exp$args_sep'$arg_exp'"
1654         argn=`expr $argn + 1`
1655         args_sep=' '
1656 done
1657 rm -f cmdl.opt
1658
1659 : produce awk script to parse command line options
1660 cat >options.awk <<'EOF'
1661 BEGIN {
1662         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1663
1664         len = length(optstr);
1665         for (i = 1; i <= len; i++) {
1666                 c = substr(optstr, i, 1);
1667                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1668                 if (a == ":") {
1669                         arg[c] = 1;
1670                         i++;
1671                 }
1672                 opt[c] = 1;
1673         }
1674 }
1675 {
1676         expect = 0;
1677         str = $0;
1678         if (substr(str, 1, 1) != "-") {
1679                 printf("'%s'\n", str);
1680                 next;
1681         }
1682         len = length($0);
1683         for (i = 2; i <= len; i++) {
1684                 c = substr(str, i, 1);
1685                 if (!opt[c]) {
1686                         printf("-%s\n", substr(str, i));
1687                         next;
1688                 }
1689                 printf("-%s\n", c);
1690                 if (arg[c]) {
1691                         if (i < len)
1692                                 printf("'%s'\n", substr(str, i + 1));
1693                         else
1694                                 expect = 1;
1695                         next;
1696                 }
1697         }
1698 }
1699 END {
1700         if (expect)
1701                 print "?";
1702 }
1703 EOF
1704
1705 : process the command line options
1706 set X `for arg in "$@"; do echo "X$arg"; done |
1707         sed -e s/X// | awk -f options.awk`
1708 eval "set $*"
1709 shift
1710 rm -f options.awk
1711
1712 : set up default values
1713 fastread=''
1714 reuseval=false
1715 config_sh=''
1716 alldone=''
1717 error=''
1718 silent=''
1719 extractsh=''
1720 knowitall=''
1721 rm -f optdef.sh posthint.sh
1722 cat >optdef.sh <<EOS
1723 $startsh
1724 EOS
1725
1726
1727 : option parsing
1728 while test $# -gt 0; do
1729         case "$1" in
1730         -d) shift; fastread=yes;;
1731         -e) shift; alldone=cont;;
1732         -f)
1733                 shift
1734                 cd ..
1735                 if test -r "$1"; then
1736                         config_sh="$1"
1737                 else
1738                         echo "$me: cannot read config file $1." >&2
1739                         error=true
1740                 fi
1741                 cd UU
1742                 shift;;
1743         --help|\
1744         -h) shift; error=true;;
1745         -r) shift; reuseval=true;;
1746         -s) shift; silent=true; realsilent=true;;
1747         -E) shift; alldone=exit;;
1748         -K) shift; knowitall=true;;
1749         -O) shift;;
1750         -S) shift; silent=true; extractsh=true;;
1751         -D)
1752                 shift
1753                 case "$1" in
1754                 *=)
1755                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1756                         echo "$me: ignoring -D $1" >&2
1757                         ;;
1758                 *=*) echo "$1" | \
1759                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1760                 *) echo "$1='define'" >> optdef.sh;;
1761                 esac
1762                 shift
1763                 ;;
1764         -U)
1765                 shift
1766                 case "$1" in
1767                 *=) echo "$1" >> optdef.sh;;
1768                 *=*)
1769                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1770                         echo "$me: ignoring -U $1" >&2
1771                         ;;
1772                 *) echo "$1='undef'" >> optdef.sh;;
1773                 esac
1774                 shift
1775                 ;;
1776         -A)
1777             shift
1778             xxx=''
1779             yyy="$1"
1780             zzz=''
1781             uuu=undef
1782             case "$yyy" in
1783             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1784                  case "$zzz" in
1785                  *:*) zzz='' ;;
1786                  *)   xxx=append
1787                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1788                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1789                  esac
1790                  ;;
1791             esac
1792             case "$xxx" in
1793             '')  case "$yyy" in
1794                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1795                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1796                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1797                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1798                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1799                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1800                  esac
1801                  ;;
1802             esac
1803             case "$xxx" in
1804             append)
1805                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1806             clear)
1807                 echo "$yyy=''"                  >> posthint.sh ;;
1808             define)
1809                 case "$zzz" in
1810                 '') zzz=define ;;
1811                 esac
1812                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1813             eval)
1814                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1815             prepend)
1816                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1817             undef)
1818                 case "$zzz" in
1819                 '') zzz="$uuu" ;;
1820                 esac
1821                 echo "$yyy=$zzz"                >> posthint.sh ;;
1822             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1823             esac
1824             shift
1825             ;;
1826         -V) echo "$me generated by metaconfig 3.5 PL0." >&2
1827             exit 0;;
1828         --) break;;
1829         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1830         *) break;;
1831         esac
1832 done
1833
1834 case "$error" in
1835 true)
1836         cat >&2 <<EOM
1837 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1838                  [-U symbol] [-U symbol=] [-A command:symbol...]
1839   -d : use defaults for all answers.
1840   -e : go on without questioning past the production of config.sh.
1841   -f : specify an alternate default configuration file.
1842   -h : print this help message and exit (with an error status).
1843   -r : reuse C symbols value if possible (skips costly nm extraction).
1844   -s : silent mode, only echoes questions and essential information.
1845   -D : define symbol to have some value:
1846          -D symbol         symbol gets the value 'define'
1847          -D symbol=value   symbol gets the value 'value'
1848        common used examples (see INSTALL for more info):
1849          -Duse64bitint            use 64bit integers
1850          -Duse64bitall            use 64bit integers and pointers
1851          -Dusethreads             use thread support
1852          -Dinc_version_list=none  do not include older perl trees in @INC
1853          -DEBUGGING=none          DEBUGGING options
1854          -Dcc=gcc                 choose your compiler
1855          -Dprefix=/opt/perl5      choose your destination
1856   -E : stop at the end of questions, after having produced config.sh.
1857   -K : do not use unless you know what you are doing.
1858   -O : ignored for backward compatibility
1859   -S : perform variable substitutions on all .SH files (can mix with -f)
1860   -U : undefine symbol:
1861          -U symbol    symbol gets the value 'undef'
1862          -U symbol=   symbol gets completely empty
1863        e.g.:  -Uversiononly
1864   -A : manipulate symbol after the platform specific hints have been applied:
1865          -A append:symbol=value   append value to symbol
1866          -A symbol=value          like append:, but with a separating space
1867          -A define:symbol=value   define symbol to have value
1868          -A clear:symbol          define symbol to be ''
1869          -A define:symbol         define symbol to be 'define'
1870          -A eval:symbol=value     define symbol to be eval of value
1871          -A prepend:symbol=value  prepend value to symbol
1872          -A undef:symbol          define symbol to be 'undef'
1873          -A undef:symbol=         define symbol to be ''
1874        e.g.:  -A prepend:libswanted='cl pthread '
1875               -A ccflags=-DSOME_MACRO
1876   -V : print version number and exit (with a zero status).
1877 EOM
1878         exit 1
1879         ;;
1880 esac
1881
1882 : Sanity checks
1883 case "$fastread$alldone" in
1884 yescont|yesexit) ;;
1885 *)
1886         case "$extractsh" in
1887         true) ;;
1888         *)
1889                 if test ! -t 0; then
1890                         echo "Say 'sh Configure', not 'sh <Configure'"
1891                         exit 1
1892                 fi
1893                 ;;
1894         esac
1895         ;;
1896 esac
1897
1898 exec 4>&1
1899 case "$silent" in
1900 true) exec 1>/dev/null;;
1901 esac
1902
1903 : run the defines and the undefines, if any, but leave the file out there...
1904 touch optdef.sh
1905 grep '\\' optdef.sh >/dev/null 2>&1
1906 if test $? = 0; then
1907     echo "Configure does not support \\ in -D arguments"
1908     exit 1
1909 fi
1910 . ./optdef.sh
1911 : create the posthint manipulation script and leave the file out there...
1912 touch posthint.sh
1913
1914 : set package name
1915 package='perl5'
1916 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1917 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1918 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`"-"`echo AbyZ | tr '[:upper:]' '[:lower:]' 2>/dev/null`" in
1919 ABYZ-abyz) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1920 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1921 esac
1922
1923 : Some greps do not return status, grrr.
1924 echo "grimblepritz" >grimble
1925 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1926         contains=contains
1927 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1928         contains=grep
1929 else
1930         contains=contains
1931 fi
1932 rm -f grimble
1933 : the following should work in any shell
1934 case "$contains" in
1935 contains*)
1936         echo " "
1937         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1938         cat >contains <<'EOSS'
1939 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1940 EOSS
1941 chmod +x contains
1942 esac
1943
1944 : Find the path to the source tree
1945 case "$src" in
1946 '') case "$0" in
1947     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1948          case "$src" in
1949          /*)    ;;
1950          .)     ;;
1951          *)     src=`cd ../$src && pwd` ;;
1952          esac
1953          ;;
1954     *)   src='.';;
1955     esac;;
1956 esac
1957 case "$src" in
1958 '')     src=/
1959         rsrc=/
1960         ;;
1961 /*)     rsrc="$src";;
1962 *)      rsrc="../$src";;
1963 esac
1964 if test -f $rsrc/Configure && \
1965         $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
1966 then
1967    : found it, so we are ok.
1968 else
1969         rsrc=''
1970         for src in . .. ../.. ../../.. ../../../..; do
1971                 if test -f ../$src/Configure && \
1972                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1973                 then
1974                         rsrc=../$src
1975                         break
1976                 fi
1977         done
1978 fi
1979 case "$rsrc" in
1980 '')
1981         cat <<EOM >&4
1982
1983 Sorry, I can't seem to locate the source dir for $package.  Please start
1984 Configure with an explicit path -- i.e. /some/path/Configure.
1985
1986 EOM
1987         exit 1
1988         ;;
1989 ../.)   rsrc='..';;
1990 *)
1991         echo " "
1992         echo "Sources for $package found in \"$src\"." >&4
1993         ;;
1994 esac
1995
1996 : script used to extract .SH files with variable substitutions
1997 cat >extract <<'EOS'
1998 PERL_CONFIG_SH=true
1999 echo "Doing variable substitutions on .SH files..."
2000 if test -f MANIFEST; then
2001         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
2002 else
2003         echo "(Looking for .SH files under the source directory.)"
2004         set x `(cd "$src"; find . -name "*.SH" -print)`
2005 fi
2006 shift
2007 case $# in
2008 0) set x `(cd "$src"; echo *.SH)`; shift;;
2009 esac
2010 if test ! -f "$src/$1"; then
2011         shift
2012 fi
2013 mkdir_p='
2014 name=$1;
2015 create="";
2016 while test $name; do
2017         if test ! -d "$name"; then
2018                 create="$name $create";
2019                 name=`echo $name | sed -e "s|^[^/]*$||"`;
2020                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
2021         else
2022                 name="";
2023         fi;
2024 done;
2025 for file in $create; do
2026         mkdir $file;
2027 done
2028 '
2029 for file in $*; do
2030         case "$src" in
2031         ".")
2032                 case "$file" in
2033                 */*)
2034                         dir=`expr X$file : 'X\(.*\)/'`
2035                         file=`expr X$file : 'X.*/\(.*\)'`
2036                         (cd "$dir" && . ./$file)
2037                         ;;
2038                 *)
2039                         . ./$file
2040                         ;;
2041                 esac
2042                 ;;
2043         *)
2044                 case "$file" in
2045                 */*)
2046                         dir=`expr X$file : 'X\(.*\)/'`
2047                         file=`expr X$file : 'X.*/\(.*\)'`
2048                         (set x $dir; shift; eval $mkdir_p)
2049                         sh <"$src/$dir/$file"
2050                         ;;
2051                 *)
2052                         sh <"$src/$file"
2053                         ;;
2054                 esac
2055                 ;;
2056         esac
2057 done
2058 if test -f "$src/config_h.SH"; then
2059         if test ! -f config.h; then
2060         : oops, they left it out of MANIFEST, probably, so do it anyway.
2061         . "$src/config_h.SH"
2062         fi
2063 fi
2064 EOS
2065
2066 : extract files and exit if asked to do so
2067 case "$extractsh" in
2068 true)
2069         case "$realsilent" in
2070         true) ;;
2071         *) exec 1>&4;;
2072         esac
2073         case "$config_sh" in
2074         '') config_sh='config.sh';;
2075         esac
2076         echo " "
2077         echo "Fetching answers from $config_sh..."
2078         cd ..
2079         . $config_sh
2080         . UU/optdef.sh
2081         echo " "
2082         . UU/extract
2083         rm -rf UU
2084         echo "Extraction done."
2085         exit 0
2086         ;;
2087 esac
2088
2089 : Eunice requires " " instead of "", can you believe it
2090 echo " "
2091 : Here we go...
2092 echo "Beginning of configuration questions for $package."
2093
2094 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
2095
2096 : first determine how to suppress newline on echo command
2097 echo " "
2098 echo "Checking echo to see how to suppress newlines..."
2099 (echo "hi there\c" ; echo " ") >.echotmp
2100 if $contains c .echotmp >/dev/null 2>&1 ; then
2101         echo "...using -n."
2102         n='-n'
2103         c=''
2104 else
2105         cat <<'EOM'
2106 ...using \c
2107 EOM
2108         n=''
2109         c='\c'
2110 fi
2111 echo $n "The star should be here-->$c"
2112 echo '*'
2113 rm -f .echotmp
2114
2115 : Now test for existence of everything in MANIFEST
2116 echo " "
2117 if test -f "$rsrc/MANIFEST"; then
2118         echo "First let's make sure your kit is complete.  Checking..." >&4
2119         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | \
2120                 (split -l 50 2>/dev/null || split -50)
2121         rm -f missing
2122         tmppwd=`pwd`
2123         for filelist in x??; do
2124                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
2125                         >/dev/null 2>>"$tmppwd/missing")
2126         done
2127         if test -s missing; then
2128                 cat missing >&4
2129                 cat >&4 <<'EOM'
2130
2131 THIS PACKAGE SEEMS TO BE INCOMPLETE.
2132
2133 You have the option of continuing the configuration process, despite the
2134 distinct possibility that your kit is damaged, by typing 'y'es.  If you
2135 do, don't blame me if something goes wrong.  I advise you to type 'n'o
2136 and contact the author (perlbug@perl.org).
2137
2138 EOM
2139                 echo $n "Continue? [n] $c" >&4
2140                 read ans
2141                 case "$ans" in
2142                 y*)
2143                         echo "Continuing..." >&4
2144                         rm -f missing
2145                         ;;
2146                 *)
2147                         echo "ABORTING..." >&4
2148                         kill $$
2149                         ;;
2150                 esac
2151         else
2152                 echo "Looks good..."
2153         fi
2154 else
2155         echo "There is no MANIFEST file.  I hope your kit is complete !"
2156 fi
2157 rm -f missing x??
2158
2159 : Find the appropriate value for a newline for tr
2160 if test -n "$DJGPP"; then
2161        trnl='\012'
2162 fi
2163 if test X"$trnl" = X; then
2164         case "`echo foo | tr '\n' x 2>/dev/null`" in
2165         foox) trnl='\n' ;;
2166         esac
2167 fi
2168 if test X"$trnl" = X; then
2169         case "`echo foo | tr '\012' x 2>/dev/null`" in
2170         foox) trnl='\012' ;;
2171         esac
2172 fi
2173 if test X"$trnl" = X; then
2174        case "`echo foo | tr '\r\n' xy 2>/dev/null`" in
2175        fooxy) trnl='\n\r' ;;
2176        esac
2177 fi
2178 if test X"$trnl" = X; then
2179         cat <<EOM >&2
2180
2181 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2182
2183 EOM
2184         exit 1
2185 fi
2186
2187 : compute the number of columns on the terminal for proper question formatting
2188 case "$COLUMNS" in
2189 '') COLUMNS='80';;
2190 esac
2191
2192 : set up the echo used in my read
2193 myecho="case \"\$xxxm\" in
2194 '') echo $n \"\$rp $c\" >&4;;
2195 *) case \"\$rp\" in
2196         '') echo $n \"[\$xxxm] $c\";;
2197         *)
2198                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2199                         echo \"\$rp\" >&4
2200                         echo $n \"[\$xxxm] $c\" >&4
2201                 else
2202                         echo $n \"\$rp [\$xxxm] $c\" >&4
2203                 fi
2204                 ;;
2205         esac;;
2206 esac"
2207
2208 : now set up to do reads with possible shell escape and default assignment
2209 cat <<EOSC >myread
2210 $startsh
2211 xxxm=\$dflt
2212 $myecho
2213 ans='!'
2214 case "\$fastread" in
2215 yes) case "\$dflt" in
2216         '') ;;
2217         *) ans='';
2218                 case "\$silent-\$rp" in
2219                 true-) ;;
2220                 *) echo " " >&4;;
2221                 esac;;
2222         esac;;
2223 *) case "\$silent" in
2224         true) case "\$rp" in
2225                 '') ans='';;
2226                 esac;;
2227         esac;;
2228 esac
2229 while expr "X\$ans" : "X!" >/dev/null; do
2230         read answ
2231         set x \$xxxm
2232         shift
2233         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2234         case  "\$answ" in
2235         "!")
2236                 sh 1>&4
2237                 echo " "
2238                 $myecho
2239                 ;;
2240         !*)
2241                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2242                 shift
2243                 sh 1>&4 -c "\$*"
2244                 echo " "
2245                 $myecho
2246                 ;;
2247         "\$ans")
2248                 case "\$ans" in
2249                 \\&*)
2250                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2251                         shift
2252                         case "\$1" in
2253                         -d)
2254                                 fastread=yes
2255                                 echo "(OK, I'll run with -d after this question.)" >&4
2256                                 ;;
2257                         -*)
2258                                 echo "*** Sorry, \$1 not supported yet." >&4
2259                                 ;;
2260                         esac
2261                         $myecho
2262                         ans=!
2263                         ;;
2264                 esac;;
2265         *)
2266                 case "\$aok" in
2267                 y)
2268                         echo "*** Substitution done -- please confirm."
2269                         xxxm="\$ans"
2270                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2271                         xxxm="\$ans"
2272                         ans=!
2273                         ;;
2274                 *)
2275                         echo "*** Error -- try again."
2276                         ans=!
2277                         ;;
2278                 esac
2279                 $myecho
2280                 ;;
2281         esac
2282         case "\$ans\$xxxm\$nostick" in
2283         '')
2284                 ans=!
2285                 $myecho
2286                 ;;
2287         esac
2288 done
2289 case "\$ans" in
2290 '') ans="\$xxxm";;
2291 esac
2292 EOSC
2293
2294 : create .config dir to save info across Configure sessions
2295 test -d ../.config || mkdir ../.config
2296 cat >../.config/README <<EOF
2297 This directory created by Configure to save information that should
2298 persist across sessions for $package.
2299
2300 You may safely delete it if you wish.
2301 EOF
2302
2303 : See if we are using a devel version and want that
2304 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2305 case "$usedevel" in
2306 $define|true|[yY]*)
2307     usedevel="$define" ;;
2308 *) case "$xversion" in
2309    *[13579])
2310         cat >&4 <<EOH
2311 *** WHOA THERE!!! ***
2312
2313     This is an UNSTABLE DEVELOPMENT release.
2314     The version of this $package distribution is $xversion, that is, odd,
2315     (as opposed to even) and that signifies a development release.
2316     If you want a maintenance release, you want an even-numbered version.
2317
2318     Do ***NOT*** install this into production use.
2319     Data corruption and crashes are possible.
2320
2321     It is most seriously suggested that you do not continue any further
2322     unless you want to help in developing and debugging Perl.
2323
2324     If you *still* want to build perl, you can answer 'y' now,
2325     or pass -Dusedevel to Configure.
2326
2327 EOH
2328         rp='Do you really want to continue?'
2329         dflt='n'
2330         . ./myread
2331         case "$ans" in
2332         [yY]) echo >&4 "Okay, continuing."
2333               usedevel="$define" ;;
2334         *) echo >&4 "Okay, bye."
2335            exit 1
2336            ;;
2337         esac
2338         ;;
2339     esac
2340     usedevel="$undef"
2341     ;;
2342 esac
2343 case "$usedevel" in
2344 $define|true|[yY]*)
2345         case "$versiononly" in
2346         '') versiononly="$define" ;;
2347         esac
2348         case "$installusrbinperl" in
2349         '') installusrbinperl="$undef" ;;
2350         esac
2351         ;;
2352 esac
2353
2354 : general instructions
2355 needman=true
2356 firsttime=true
2357 user=`(logname) 2>/dev/null`
2358 case "$user" in
2359 '') user=`whoami 2>&1`;;
2360 esac
2361 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2362         firsttime=false
2363         echo " "
2364         rp='Would you like to see the instructions?'
2365         dflt=n
2366         . ./myread
2367         case "$ans" in
2368         [yY]*) ;;
2369         *) needman=false;;
2370         esac
2371 fi
2372 if $needman; then
2373         cat <<EOH
2374
2375 This installation shell script will examine your system and ask you questions
2376 to determine how the perl5 package should be installed. If you get
2377 stuck on a question, you may use a ! shell escape to start a subshell or
2378 execute a command.  Many of the questions will have default answers in square
2379 brackets; typing carriage return will give you the default.
2380
2381 On some of the questions which ask for file or directory names you are allowed
2382 to use the ~name construct to specify the login directory belonging to "name",
2383 even if you don't have a shell which knows about that.  Questions where this is
2384 allowed will be marked "(~name ok)".
2385
2386 EOH
2387         rp=''
2388         dflt='Type carriage return to continue'
2389         . ./myread
2390         cat <<'EOH'
2391
2392 The prompter used in this script allows you to use shell variables and
2393 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2394 in the default answer, as if the default line was a set of arguments given to a
2395 script shell.  This means you may also use $* to repeat the whole default line,
2396 so you do not have to re-type everything to add something to the default.
2397
2398 Every time there is a substitution, you will have to confirm.  If there is an
2399 error (e.g. an unmatched backtick), the default answer will remain unchanged
2400 and you will be prompted again.
2401
2402 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2403 the questions and use the computed defaults (or the previous answers if there
2404 was already a config.sh file). Type 'Configure -h' for a list of options.
2405 You may also start interactively and then answer '& -d' at any prompt to turn
2406 on the non-interactive behaviour for the remainder of the execution.
2407
2408 EOH
2409         . ./myread
2410         cat <<EOH
2411
2412 Much effort has been expended to ensure that this shell script will run on any
2413 Unix system.  If despite that it blows up on yours, your best bet is to edit
2414 Configure and run it again.  If you can't run Configure for some reason,
2415 you'll have to generate a config.sh file by hand.  Whatever problems you
2416 have, let me (perlbug@perl.org) know how I blew it.
2417
2418 This installation script affects things in two ways:
2419
2420 1) it may do direct variable substitutions on some of the files included
2421    in this kit.
2422 2) it builds a config.h file for inclusion in C programs.  You may edit
2423    any of these files as the need arises after running this script.
2424
2425 If you make a mistake on a question, there is no easy way to back up to it
2426 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2427 files.  Configure will offer to let you do this before it runs the SH files.
2428
2429 EOH
2430         dflt='Type carriage return to continue'
2431         . ./myread
2432         case "$firsttime" in
2433         true) echo $user >>../.config/instruct;;
2434         esac
2435 fi
2436
2437 : Set 'sysroot' to change the logical root directory to your headers and libraries see man gcc
2438 : This is primarily meant for cross-compile environments, and may fail to be useful in other cases
2439 if test "X$sysroot" = X; then
2440     sysroot=""
2441 else
2442     case "$cc" in
2443         *gcc*|*g++*)
2444             echo "Using $sysroot to find your headers and libraries, adding to ccflags"
2445             # _sysroot is used in places where we need --sysroot=foo
2446             # but using the rest of the flags could cause issues.
2447             _sysroot="--sysroot=$sysroot";
2448             case "$ccflags" in
2449                 *sysroot*) ;;
2450                 'undef'|*)
2451                 ccflags="$ccflags $_sysroot"
2452             esac
2453             case "$ldflags" in
2454                 *sysroot*) ;;
2455                 'undef'|*)
2456                 ldflags="$ldflags $_sysroot"
2457             esac
2458             case "$cppflags" in
2459                 *sysroot*) ;;
2460                 'undef'|*)
2461                 cppflags="$cppflags $_sysroot"
2462             esac
2463             # lddlflags updated below in lddlflags section;
2464             # same with cccdlflags
2465             ;;
2466     esac
2467
2468     # Adjust some defaults to also use $sysroot
2469     for var in xlibpth loclibpth locincpth glibpth; do
2470         eval xxx=\$$var
2471         eval $var=''
2472         for path in $xxx; do
2473             eval $var=\"\$$var $sysroot$path\"
2474         done
2475     done
2476
2477 fi
2478
2479 : find out where common programs are
2480 echo " "
2481 echo "Locating common programs..." >&4
2482 cat <<EOSC >loc
2483 $startsh
2484 case \$# in
2485 0) exit 1;;
2486 esac
2487 thing=\$1
2488 shift
2489 dflt=\$1
2490 shift
2491 for dir in \$*; do
2492         case "\$thing" in
2493         .)
2494         if test -d \$dir/\$thing; then
2495                 echo \$dir
2496                 exit 0
2497         fi
2498         ;;
2499         *)
2500         for thisthing in \$dir/\$thing; do
2501                 : just loop through to pick last item
2502         done
2503         if test -f \$thisthing; then
2504                 echo \$thisthing
2505                 exit 0
2506         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2507                 echo \$thisthing
2508                 exit 0
2509         elif test -f \$dir/\$thing.exe; then
2510                 if test -n "$DJGPP"; then
2511                         echo \$dir/\$thing.exe
2512                 elif test "$eunicefix" != ":"; then
2513                         : on Eunice apparently
2514                         echo \$dir/\$thing
2515                 fi
2516                 exit 0
2517         fi
2518         ;;
2519         esac
2520 done
2521 echo \$dflt
2522 exit 1
2523 EOSC
2524 chmod +x loc
2525 $eunicefix loc
2526 loclist="
2527 awk
2528 cat
2529 chmod
2530 comm
2531 cp
2532 echo
2533 expr
2534 grep
2535 ls
2536 mkdir
2537 rm
2538 sed
2539 sort
2540 touch
2541 tr
2542 uniq
2543 "
2544 trylist="
2545 ar
2546 bison
2547 byacc
2548 cpp
2549 csh
2550 date
2551 egrep
2552 gmake
2553 gzip
2554 less
2555 ln
2556 make
2557 more
2558 nm
2559 nroff
2560 perl
2561 pg
2562 test
2563 uname
2564 zip
2565 "
2566 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2567 pth="$pth $sysroot/lib $sysroot/usr/lib"
2568 for file in $loclist; do
2569         eval xxx=\$$file
2570         case "$xxx" in
2571         /*|?:[\\/]*)
2572                 if test -f "$xxx"; then
2573                         : ok
2574                 else
2575                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2576                         xxx=`./loc $file $file $pth`
2577                 fi
2578                 ;;
2579         '') xxx=`./loc $file $file $pth`;;
2580         *) xxx=`./loc $xxx $xxx $pth`;;
2581         esac
2582         eval $file=$xxx$_exe
2583         eval _$file=$xxx
2584         case "$xxx" in
2585         /*)
2586                 echo $file is in $xxx.
2587                 ;;
2588         ?:[\\/]*)
2589                 echo $file is in $xxx.
2590                 ;;
2591         *)
2592                 echo "I don't know where '$file' is, and my life depends on it." >&4
2593                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2594                 exit 1
2595                 ;;
2596         esac
2597 done
2598 echo " "
2599 echo "Don't worry if any of the following aren't found..."
2600 say=offhand
2601 for file in $trylist; do
2602         eval xxx=\$$file
2603         case "$xxx" in
2604         /*|?:[\\/]*)
2605                 if test -f "$xxx"; then
2606                         : ok
2607                 else
2608                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2609                         xxx=`./loc $file $file $pth`
2610                 fi
2611                 ;;
2612         '') xxx=`./loc $file $file $pth`;;
2613         *) xxx=`./loc $xxx $xxx $pth`;;
2614         esac
2615         eval $file=$xxx$_exe
2616         eval _$file=$xxx
2617         case "$xxx" in
2618         /*)
2619                 echo $file is in $xxx.
2620                 ;;
2621         ?:[\\/]*)
2622                 echo $file is in $xxx.
2623                 ;;
2624         *)
2625                 echo "I don't see $file out there, $say."
2626                 say=either
2627                 ;;
2628         esac
2629 done
2630 case "$egrep" in
2631 egrep)
2632         echo "Substituting grep for egrep."
2633         egrep=$grep
2634         _egrep=$grep
2635         ;;
2636 esac
2637 case "$less" in
2638 '')     ;;
2639 *)      if $less -R </dev/null >/dev/null 2>&1; then
2640                echo "Substituting less -R for less."
2641                less="$less -R"
2642                _less=$less
2643         fi
2644         ;;
2645 esac
2646 case "$ln" in
2647 ln)
2648         echo "Substituting cp for ln."
2649         ln=$cp
2650         _ln=$cp
2651         ;;
2652 esac
2653 case "$make" in
2654 make)
2655         case "$gmake" in
2656         gmake)
2657         echo "I can't find make or gmake, and my life depends on it." >&4
2658         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2659         exit 1
2660         ;;
2661         esac
2662         ;;
2663 esac
2664 case "$gmake" in
2665 gmake)  ;;
2666 *)      # We can't have osname yet.
2667         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2668                 # Assume that gmake, if found, is definitely GNU make
2669                 # and prefer it over the system make.
2670                 echo "Substituting gmake for make."
2671                 make=$gmake
2672                 _make=$gmake
2673         fi
2674         ;;
2675 esac
2676 case "$test" in
2677 test)
2678         echo "Hopefully test is built into your sh."
2679         ;;
2680 *)
2681         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2682                 echo "Using the test built into your sh."
2683                 test=test
2684                 _test=test
2685         fi
2686         ;;
2687 esac
2688 case "$echo" in
2689 echo)
2690         echo "Hopefully echo is built into your sh."
2691         ;;
2692 '') ;;
2693 *)
2694         echo " "
2695 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2696         $echo $n "hi there$c" >foo1
2697         echo $n "hi there$c" >foo2
2698         if cmp foo1 foo2 >/dev/null 2>&1; then
2699                 echo "They are compatible.  In fact, they may be identical."
2700         else
2701                 case "$n" in
2702                 '-n') n='' c='\c';;
2703                 *) n='-n' c='';;
2704                 esac
2705                 cat <<FOO
2706 They are not compatible!  You are probably running ksh on a non-USG system.
2707 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2708 have echo built in and we may have to run some Bourne shell scripts.  That
2709 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2710
2711 FOO
2712                 $echo $n "The star should be here-->$c"
2713                 $echo "*"
2714         fi
2715         $rm -f foo1 foo2
2716         ;;
2717 esac
2718
2719 # This question was auctioned at YAPC::Europe-2007 in Vienna
2720 # I never promised you could answer it. I only auctioned the question.
2721 cat <<FOO
2722 The following message is sponsored by
2723
2724   Dresden.pm<--The stars should be here.
2725
2726 Dear Perl user, system administrator or package
2727 maintainer, the Perl community sends greetings to
2728 you. Do you (emblematical) greet back [Y/n]? n
2729
2730 FOO
2731
2732 : Check what type of C compiler we use
2733 cat <<EOS >trygcc
2734 $startsh
2735 EOS
2736 cat <<'EOSC' >>trygcc
2737 case "$cc" in
2738 '') ;;
2739 *)  $rm -f try try.*
2740     $cat >try.c <<EOM
2741 int main(int argc, char *argv[]) {
2742   return 0;
2743 }
2744 EOM
2745     if $cc -o try $ccflags $ldflags try.c; then
2746        :
2747     else
2748         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2749         despair=yes
2750         trygcc=yes
2751         case "$cc" in
2752         *gcc*) trygcc=no ;;
2753         esac
2754         # Skip this test because it gives a false match on output like:
2755         #    ./trygcc: line 23: cc: command not found
2756         # case "`$cc -v -c try.c 2>&1`" in
2757         # *gcc*) trygcc=no ;;
2758         # esac
2759         if $test X"$trygcc" = Xyes; then
2760             if gcc -o try -c try.c; then
2761                 echo " "
2762                 echo "You seem to have a working gcc, though." >&4
2763                 # Switching compilers may undo the work of hints files.
2764                 # The most common problem is -D_REENTRANT for threads.
2765                 # This heuristic catches that case, but gets false positives
2766                 # if -Dusethreads was not actually specified.  Better to
2767                 # bail out here with a useful message than fail
2768                 # mysteriously later. Should we perhaps just try to
2769                 # re-invoke Configure -Dcc=gcc config_args ?
2770                 if $test -f usethreads.cbu; then
2771                         $cat >&4 <<EOM
2772
2773 *** However, any setting of the C compiler flags (e.g. for thread support)
2774 *** will be lost.  It may be necessary for you to restart Configure and
2775 *** add -Dcc=gcc to your Configure command line.
2776
2777 EOM
2778                         rp="Would you like to go ahead and try gcc anyway?"
2779                         dflt=n
2780                 else
2781                         rp="Would you like to use it?"
2782                         dflt=y
2783                 fi
2784                 if $test -f myread; then
2785                     . ./myread
2786                 else
2787                     if $test -f UU/myread; then
2788                         . ./UU/myread
2789                     else
2790                         echo "Cannot find myread, sorry.  Aborting." >&2
2791                         exit 1
2792                     fi
2793                 fi
2794                 case "$ans" in
2795                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2796                 esac
2797             fi
2798         fi
2799     fi
2800     $rm -f try try.*
2801     ;;
2802 esac
2803 EOSC
2804
2805 cat <<EOS >checkcc
2806 $startsh
2807 EOS
2808 cat <<'EOSC' >>checkcc
2809 case "$cc" in
2810 '') ;;
2811 *)  $rm -f try try.*
2812     $cat >try.c <<EOM
2813 int main(int argc, char *argv[]) {
2814   return 0;
2815 }
2816 EOM
2817     if $cc -o try $ccflags $ldflags try.c; then
2818        :
2819     else
2820         if $test X"$despair" = Xyes; then
2821            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2822         fi
2823         $cat >&4 <<EOM
2824 You need to find a working C compiler.
2825 Either (purchase and) install the C compiler supplied by your OS vendor,
2826 or for a free C compiler try http://gcc.gnu.org/
2827 I cannot continue any further, aborting.
2828 EOM
2829         exit 1
2830     fi
2831     $rm -f try try.*
2832     ;;
2833 esac
2834 EOSC
2835
2836 : determine whether symbolic links are supported
2837 echo " "
2838 $touch blurfl
2839 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2840         echo "Symbolic links are supported." >&4
2841         lns="$ln -s"
2842 else
2843         echo "Symbolic links are NOT supported." >&4
2844         lns="$ln"
2845 fi
2846 $rm -f blurfl sym
2847
2848 : determine whether symbolic links are supported
2849 echo " "
2850 case "$lns" in
2851 *"ln"*" -s")
2852         echo "Checking how to test for symbolic links..." >&4
2853         $lns blurfl sym
2854         if $test "X$issymlink" = X; then
2855                 case "$newsh" in
2856                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2857                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2858                 esac
2859                 if test $? = 0; then
2860                         issymlink="test -h"
2861                 else
2862                         echo "Your builtin 'test -h' may be broken." >&4
2863                         case "$test" in
2864                         /*)     ;;
2865                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2866                                 for p in $pth
2867                                 do
2868                                         if test -f "$p/$test"; then
2869                                                 test="$p/$test"
2870                                                 break
2871                                         fi
2872                                 done
2873                                 ;;
2874                         esac
2875                         case "$test" in
2876                         /*)
2877                                 echo "Trying external '$test -h'." >&4
2878                                 issymlink="$test -h"
2879                                 if $test ! -h sym >/dev/null 2>&1; then
2880                                         echo "External '$test -h' is broken, too." >&4
2881                                         issymlink=''
2882                                 fi
2883                                 ;;
2884                         *)      issymlink='' ;;
2885                         esac
2886                 fi
2887         fi
2888         if $test "X$issymlink" = X; then
2889                 if $test -L sym 2>/dev/null; then
2890                         issymlink="$test -L"
2891                         echo "The builtin '$test -L' worked." >&4
2892                 fi
2893         fi
2894         if $test "X$issymlink" != X; then
2895                 echo "You can test for symbolic links with '$issymlink'." >&4
2896         else
2897                 echo "I do not know how you can test for symbolic links." >&4
2898         fi
2899         $rm -f blurfl sym
2900         ;;
2901 *)      echo "No symbolic links, so not testing for their testing..." >&4
2902         ;;
2903 esac
2904
2905 : Make symlinks util
2906 case "$mksymlinks" in
2907 $define|true|[yY]*)
2908         case "$src" in
2909         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2910                 exit 1
2911                 ;;
2912         *)      case "$lns:$issymlink" in
2913                 *"ln"*" -s:"*"test -"?)
2914                         echo "Creating the symbolic links..." >&4
2915                         cd ..
2916                         awk '{print $1}' $src/MANIFEST | sed -e 's:/\([^/]*\)$: \1:' |
2917                         awk 'NF == 1 {
2918                                 dir=".";
2919                                 file=$1 "";
2920                              }
2921                              NF == 2 {
2922                                 dir=$1 "";
2923                                 file=$2 "";
2924                              }
2925                              {
2926                                  print "# dir = ", dir, "file = ", file
2927                                  mf[dir] = mf[dir]" "source"/"dir"/"file;
2928                              } END {
2929                                  for (d in mf) {
2930                                      if (d != ".") { print("mkdir -p "d) }
2931                                      print("ln -sf "mf[d]" "d);
2932                                  }
2933                              }' source="$src" > UU/mksymlinks.$$
2934                         sh UU/mksymlinks.$$
2935                         rm UU/mksymlinks.$$
2936                         # Sanity check 1.
2937                         if test ! -d t/base; then
2938                                 echo "Failed to create the subdirectories.  Aborting." >&4
2939                                 exit 1
2940                         fi
2941                         # Sanity check 2.
2942                         if test ! -f t/base/lex.t; then
2943                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2944                                 exit 1
2945                         fi
2946                         if test ! -f win32/win32.c; then
2947                                 echo "Failed to create the symlinks (win32/win32.c missing).  Aborting." >&4
2948                                 exit 1
2949                         fi
2950                         cd UU
2951                         ;;
2952                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2953                         ;;
2954                 esac
2955                 ;;
2956         esac
2957         ;;
2958 esac
2959
2960 : Check for Cross-Compilation
2961 if $test "X$targethost" = "X"; then
2962     targethost=""
2963 fi
2964 if $test "X$targetenv" = "X"; then
2965     targetenv=""
2966 fi
2967 case "$usecrosscompile" in
2968 $define|true|[yY]*)
2969         $echo "Cross-compiling..."
2970         croak=''
2971         case "$cc" in
2972         *-gcc*|*-g++*) # A cross-compiling gcc, probably.
2973             # arm-linux-androideabi-gcc  -> arm-linux-androideabi
2974             # x86_64-w64-mingw32-gcc.exe -> x86_64-w64-mingw32
2975             targetarch=`$echo $cc|$sed 's/-g[c\+][c\+].*$//'`
2976             ar=`$echo $cc|$sed 's/-g[c\+][c\+]/-ar/'`
2977             # leave out ld, choosing it is more complex
2978             nm=`$echo $cc|$sed 's/-g[c\+][c\+]/-nm/'`
2979             ranlib=`$echo $cc|$sed 's/-g[c\+][c\+]/-ranlib/'`
2980             # We are in a weird spot. Just before us, some values
2981             # were 'saved', to be restored after the hints are
2982             # run.  This means that the changes we made to ar,
2983             # nm and ranlib will get reverted.
2984             # To avoid that, we hijack the saving mechanism and
2985             # have it save our new values.
2986             for file in ar nm ranlib; do
2987                 eval xxx=\$$file
2988                 eval $file=$xxx$_exe
2989                 eval _$file=$xxx
2990             done
2991         ;;
2992         esac
2993         case "$targetarch" in
2994         '') echo "Targetarch not defined." >&4; croak=y ;;
2995         *)  echo "Using targetarch $targetarch." >&4 ;;
2996         esac
2997         case "$targethost" in
2998         '') echo "Targethost not defined." >&4; croak=n ;;
2999         *)  echo "Using targethost $targethost." >&4
3000         esac
3001         locincpth=' '
3002         loclibpth=' '
3003         case "$croak" in
3004         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
3005         esac
3006     : compile a host miniperl and generate_uudmap, unless we got passed them
3007     if $test "X$hostperl" = X; then
3008       echo "Building host miniperl and generate_uudmap binaries" >&4
3009       before_host=`pwd`
3010       cd ..
3011       cd $src
3012       src=`pwd`
3013       rm -rf $src/host
3014       mkdir $src/host
3015       cd $src/host
3016       $src/Configure -des -Dusedevel -Dmksymlinks
3017       $make miniperl
3018       case "$hostgenerate" in
3019       '') $make generate_uudmap
3020           hostgenerate=$src/host/generate_uudmap
3021           ;;
3022        "$undef") hostgenerate=''
3023           ;;
3024       esac
3025       hostperl=$src/host/miniperl
3026       cd $before_host
3027     fi
3028     hostosname=`$hostperl -le 'print $^O'`
3029     ;;
3030 *)
3031     usecrosscompile="$undef"
3032     ;;
3033 esac
3034
3035 : Define -Dtargethost=somecomputer to run compiled tests on another machine
3036 case "$targethost" in
3037     '') echo "Checking for cross-compile" >&4
3038     case "$usecrosscompile$multiarch" in
3039        *$define*) echo "Skipping the try tests in the rest of Configure as no targethost was defined when cross-compiling" >&4
3040          if [ -f Makefile ]; then
3041            echo " "
3042            echo "Now you must ensure config.sh, config.h and the generated headers exist and run a $make."
3043          else
3044            echo "Configure done."
3045          fi
3046        exit 0
3047        ;;
3048      *) echo "No targethost for running compiler tests against defined, running locally" >&4
3049         run=''
3050         to=:
3051         from=:
3052         ;;
3053     esac
3054     ;;
3055     *) echo "Using targethost $targethost." >&4
3056         case "$src" in
3057         /*) run=$src/Cross/run
3058             targetmkdir=$src/Cross/mkdir
3059             to=$src/Cross/to
3060             from=$src/Cross/from
3061             ;;
3062         *)  pwd=`$test -f ../Configure & cd ..; pwd`
3063             run=$pwd/Cross/run
3064             targetmkdir=$pwd/Cross/mkdir
3065             to=$pwd/Cross/to
3066             from=$pwd/Cross/from
3067             ;;
3068         esac
3069         case "$targetrun" in
3070         '') targetrun=ssh ;;
3071         esac
3072         case "$targetto" in
3073         '') targetto=scp ;;
3074         esac
3075         case "$targetfrom" in
3076         '') targetfrom=scp ;;
3077         esac
3078         run=$run-$targetrun
3079         to=$to-$targetto
3080         from=$from-$targetfrom
3081         case "$targetdir" in
3082         '')  targetdir=/tmp
3083              echo "Guessing targetdir $targetdir." >&4
3084              ;;
3085         esac
3086         case "$targetuser" in
3087         '')  targetuser=root
3088              echo "Guessing targetuser $targetuser." >&4
3089              ;;
3090         esac
3091         case "$targetport" in
3092         '')  targetport=22
3093              echo "Guessing targetport $targetport." >&4
3094              ;;
3095         esac
3096         case "$targetfrom" in
3097         scp)    q=-q ;;
3098         *)      q='' ;;
3099         esac
3100         case "$targetrun" in
3101         ssh|rsh)
3102             cat >$run <<EOF
3103 #!/bin/sh
3104 env=''
3105 case "\$1" in
3106 -cwd)
3107   shift
3108   cwd=\$1
3109   shift
3110   ;;
3111 esac
3112 case "\$1" in
3113 -env)
3114   shift
3115   env=\$1
3116   shift
3117   ;;
3118 esac
3119 case "\$cwd" in
3120 '') cwd=$targetdir ;;
3121 esac
3122 exe=\$1
3123 shift
3124 $to \$exe
3125 $targetrun -p $targetport -l $targetuser $targethost "cd \$cwd && \$env \$exe \$@"
3126 EOF
3127             ;;
3128         adb)
3129             $touch $run
3130             ;;
3131         *)  echo "Unknown targetrun '$targetrun'" >&4
3132             exit 1
3133             ;;
3134         esac
3135         case "$targetmkdir" in
3136         */Cross/mkdir)
3137             cat >$targetmkdir <<EOF
3138 #!/bin/sh
3139 $targetrun -p $targetport -l $targetuser $targethost "mkdir -p \$@"
3140 EOF
3141             $chmod a+rx $targetmkdir
3142             ;;
3143         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
3144             exit 1
3145             ;;
3146         esac
3147         case "$targetto" in
3148         scp|rcp)
3149             cat >$to <<EOF
3150 #!/bin/sh
3151 for f in \$@
3152 do
3153   case "\$f" in
3154   /*)
3155     $targetmkdir \`dirname \$f\`
3156     $targetto -P $targetport -r $q \$f $targetuser@$targethost:\$f           2>/dev/null  || exit 1
3157     ;;
3158   *)
3159     $targetmkdir $targetdir/\`dirname \$f\`
3160     $targetto -P $targetport -r $q \$f $targetuser@$targethost:$targetdir/\$f 2>/dev/null || exit 1
3161     ;;
3162   esac
3163 done
3164 exit 0
3165 EOF
3166             ;;
3167         cp) cat >$to <<EOF
3168 #!/bin/sh
3169 for f in \$@
3170 do
3171   case "\$f" in
3172   /*)
3173     $mkdir -p $targetdir/\`dirname \$f\`
3174     $cp \$f $targetdir/\$f || exit 1
3175     ;;
3176   *)
3177     $targetmkdir $targetdir/\`dirname \$f\`
3178     $cp \$f $targetdir/\$f || exit 1
3179     ;;
3180   esac
3181 done
3182 exit 0
3183 EOF
3184             ;;
3185         *)  echo "Unknown targetto '$targetto'" >&4
3186             exit 1
3187             ;;
3188         esac
3189         case "$targetfrom" in
3190         scp|rcp)
3191           cat >$from <<EOF
3192 #!/bin/sh
3193 for f in \$@
3194 do
3195   $rm -f \$f
3196   $targetfrom -P $targetport $q $targetuser@$targethost:$targetdir/\$f . || exit 1
3197 done
3198 exit 0
3199 EOF
3200             ;;
3201         cp) cat >$from <<EOF
3202 #!/bin/sh
3203 for f in \$@
3204 do
3205   $rm -f \$f
3206   cp $targetdir/\$f . || exit 1
3207 done
3208 exit 0
3209 EOF
3210             ;;
3211         *)  echo "Unknown targetfrom '$targetfrom'" >&4
3212             exit 1
3213             ;;
3214         esac
3215         if $test ! -f $run; then
3216             echo "Target 'run' script '$run' not found." >&4
3217         else
3218             $chmod a+rx $run
3219         fi
3220         if $test ! -f $to; then
3221             echo "Target 'to' script '$to' not found." >&4
3222         else
3223             $chmod a+rx $to
3224         fi
3225         if $test ! -f $from; then
3226             echo "Target 'from' script '$from' not found." >&4
3227         else
3228             $chmod a+rx $from
3229         fi
3230         if $test ! -f $run -o ! -f $to -o ! -f $from; then
3231             exit 1
3232         fi
3233         cat >&4 <<EOF
3234 Using '$run' for remote execution,
3235 and '$from' and '$to'
3236 for remote file transfer.
3237 EOF
3238         ;;
3239 *)      run=''
3240         to=:
3241         from=:
3242         usecrosscompile="$undef"
3243         targetarch=''
3244         ;;
3245 esac
3246
3247 : see whether [:lower:] and [:upper:] are supported character classes
3248 echo " "
3249 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`"-"`echo AbyZ | $tr '[:upper:]' '[:lower:]' 2>/dev/null`" in
3250 ABYZ-abyz)
3251         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
3252         up='[:upper:]'
3253         low='[:lower:]'
3254         ;;
3255 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
3256         # (0xd9 and 0xe2), therefore that is a nice testing point.
3257         if test "X$up" = X -o "X$low" = X; then
3258             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
3259             rs) up='[A-Z]'
3260                 low='[a-z]'
3261                 ;;
3262             esac
3263         fi
3264         if test "X$up" = X -o "X$low" = X; then
3265             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
3266             rs) up='A-Z'
3267                 low='a-z'
3268                 ;;
3269             esac
3270         fi
3271         if test "X$up" = X -o "X$low" = X; then
3272             case "`echo RS | od -x 2>/dev/null`" in
3273             *D9E2*|*d9e2*)
3274                 echo "Hey, this might be EBCDIC." >&4
3275                 if test "X$up" = X -o "X$low" = X; then
3276                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
3277                     rs) up='[A-IJ-RS-Z]'
3278                         low='[a-ij-rs-z]'
3279                         ;;
3280                     esac
3281                 fi
3282                 if test "X$up" = X -o "X$low" = X; then
3283                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3284                     rs) up='A-IJ-RS-Z'
3285                         low='a-ij-rs-z'
3286                         ;;
3287                     esac
3288                 fi
3289                 ;;
3290             esac
3291         fi
3292 esac
3293 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3294 rs)
3295     echo "Using $up and $low to convert case." >&4
3296     ;;
3297 *)
3298     echo "I don't know how to translate letters from upper to lower case." >&4
3299     echo "Your tr is not acting any way I know of." >&4
3300     exit 1
3301     ;;
3302 esac
3303 : set up the translation script tr, must be called with ./tr of course
3304 cat >tr <<EOSC
3305 $startsh
3306 case "\$1\$2" in
3307 '[A-Z][a-z]') exec $tr '$up' '$low';;
3308 '[a-z][A-Z]') exec $tr '$low' '$up';;
3309 esac
3310 exec $tr "\$@"
3311 EOSC
3312 chmod +x tr
3313 $eunicefix tr
3314
3315 : Try to determine whether config.sh was made on this system
3316 case "$config_sh" in
3317 '')
3318 myuname=`$uname -a 2>/dev/null`
3319 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3320 # Downcase everything to avoid ambiguity.
3321 # Remove slashes and single quotes so we can use parts of this in
3322 # directory and file names.
3323 # Remove newlines so myuname is sane to use elsewhere.
3324 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3325 # because the A-Z/a-z are not consecutive.
3326 myuname=`echo $myuname | $sed -e "s,['/],,g" | \
3327         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3328 newmyuname="$myuname"
3329 dflt=n
3330 case "$knowitall" in
3331 '')
3332         if test -f ../config.sh; then
3333                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3334                         eval "`grep myuname= ../config.sh`"
3335                 fi
3336                 if test "X$myuname" = "X$newmyuname"; then
3337                         dflt=y
3338                 fi
3339         fi
3340         ;;
3341 *) dflt=y;;
3342 esac
3343
3344 : Get old answers from old config file if Configure was run on the
3345 : same system, otherwise use the hints.
3346 hint=default
3347 cd ..
3348 if test -f config.sh; then
3349         echo " "
3350         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3351         . UU/myread
3352         case "$ans" in
3353         n*|N*) echo "OK, I'll ignore it."
3354                 mv config.sh config.sh.old
3355                 myuname="$newmyuname"
3356                 ;;
3357         *)  echo "Fetching default answers from your old config.sh file..." >&4
3358                 tmp_n="$n"
3359                 tmp_c="$c"
3360                 tmp_sh="$sh"
3361                 . ./config.sh
3362                 cp config.sh UU
3363                 n="$tmp_n"
3364                 c="$tmp_c"
3365                 : Older versions did not always set $sh.  Catch re-use of such
3366                 : an old config.sh.
3367                 case "$sh" in
3368                 '') sh="$tmp_sh" ;;
3369                 esac
3370                 hint=previous
3371                 ;;
3372         esac
3373 fi
3374 . ./UU/checkcc
3375 if test ! -f config.sh; then
3376         $cat <<EOM
3377
3378 First time through, eh?  I have some defaults handy for some systems
3379 that need some extra help getting the Configure answers right:
3380
3381 EOM
3382         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3383         dflt=''
3384         : Half the following guesses are probably wrong... If you have better
3385         : tests or hints, please send them to perlbug@perl.org
3386         : The metaconfig authors would also appreciate a copy...
3387         $test -f /irix && osname=irix
3388         $test -f /xenix && osname=sco_xenix
3389         $test -f /dynix && osname=dynix
3390         $test -f /dnix && osname=dnix
3391         $test -f /lynx.os && osname=lynxos
3392         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3393         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3394         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3395         $test -f /bin/mips && /bin/mips && osname=mips
3396         $test -d /usr/apollo/bin && osname=apollo
3397         $test -f /etc/saf/_sactab && osname=svr4
3398         $test -d /usr/include/minix && osname=minix && osvers=`$uname -r`
3399         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3400         $test -f /sys/utilities/MultiView && osname=amigaos
3401         if $test -d /MachTen -o -d /MachTen_Folder; then
3402                 osname=machten
3403                 if $test -x /sbin/version; then
3404                         osvers=`/sbin/version | $awk '{print $2}' |
3405                         $sed -e 's/[A-Za-z]$//'`
3406                 elif $test -x /usr/etc/version; then
3407                         osvers=`/usr/etc/version | $awk '{print $2}' |
3408                         $sed -e 's/[A-Za-z]$//'`
3409                 else
3410                         osvers="$2.$3"
3411                 fi
3412         fi
3413
3414         $test -f /sys/posix.dll &&
3415                 $test -f /usr/bin/what &&
3416                 set X `/usr/bin/what /sys/posix.dll` &&
3417                 $test "$3" = UWIN &&
3418                 osname=uwin &&
3419                 osvers="$5"
3420
3421         if $test -f $uname; then
3422                 set X $myuname
3423                 shift
3424
3425                 case "$5" in
3426                 fps*) osname=fps ;;
3427                 mips*)
3428                         case "$4" in
3429                         umips) osname=umips ;;
3430                         *) osname=mips ;;
3431                         esac;;
3432                 [23]100) osname=mips ;;
3433                 i386*)
3434                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3435                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3436                                 osname='sco'
3437                                 osvers=$tmp
3438                         elif $test -f /etc/kconfig; then
3439                                 osname=isc
3440                                 if test "$lns" = "$ln -s"; then
3441                                         osvers=4
3442                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3443                                         osvers=3
3444                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3445                                         osvers=2
3446                                 fi
3447                         fi
3448                         tmp=''
3449                         ;;
3450                 pc*)
3451                         if test -n "$DJGPP"; then
3452                                 osname=dos
3453                                 osvers=djgpp
3454                         fi
3455                         ;;
3456                 esac
3457
3458                 case "$1" in
3459                 aix) osname=aix
3460                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3461                         case "$tmp" in
3462                         # oslevel can fail with:
3463                         # oslevel: Unable to acquire lock.
3464                         *not\ found) osvers="$4"."$3" ;;
3465                         '<3240'|'<>3240') osvers=3.2.0 ;;
3466                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3467                         '=3250'|'>3250') osvers=3.2.5 ;;
3468                         *) osvers=$tmp;;
3469                         esac
3470                         ;;
3471                 bitrig) osname=bitrig
3472                         osvers="$3"
3473                         ;;
3474                 bsd386) osname=bsd386
3475                         osvers=`$uname -r`
3476                         ;;
3477                 cygwin*) osname=cygwin
3478                         osvers="$3"
3479                         ;;
3480                 *dc.osx) osname=dcosx
3481                         osvers="$3"
3482                         ;;
3483                 dnix) osname=dnix
3484                         osvers="$3"
3485                         ;;
3486                 domainos) osname=apollo
3487                         osvers="$3"
3488                         ;;
3489                 dgux)   osname=dgux
3490                         osvers="$3"
3491                         ;;
3492                 dragonfly) osname=dragonfly
3493                         osvers="$3"
3494                         ;;
3495                 dynixptx*) osname=dynixptx
3496                         osvers=`echo "$4"|sed 's/^v//'`
3497                         ;;
3498                 freebsd) osname=freebsd
3499                         osvers="$3" ;;
3500                 genix)  osname=genix ;;
3501                 gnu)    osname=gnu
3502                         osvers="$3" ;;
3503                 hp*)    osname=hpux
3504                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3505                         ;;
3506                 irix*)  osname=irix
3507                         case "$3" in
3508                         4*) osvers=4 ;;
3509                         5*) osvers=5 ;;
3510                         *)      osvers="$3" ;;
3511                         esac
3512                         ;;
3513                 linux)  osname=linux
3514                         case "$3" in
3515                         *)      osvers="$3" ;;
3516                         esac
3517                         $test -f /system/lib/libandroid.so && osname=linux-android
3518                         ;;
3519                 MiNT)   osname=mint
3520                         ;;
3521                 netbsd*) osname=netbsd
3522                         osvers="$3"
3523                         ;;
3524                 news-os) osvers="$3"
3525                         case "$3" in
3526                         4*) osname=newsos4 ;;
3527                         *) osname=newsos ;;
3528                         esac
3529                         ;;
3530                 nonstop-ux) osname=nonstopux ;;
3531                 openbsd) osname=openbsd
3532                         osvers="$3"
3533                         ;;
3534                 os2)    osname=os2
3535                         osvers="$4"
3536                         ;;
3537                 POSIX-BC | posix-bc ) osname=posix-bc
3538                         osvers="$3"
3539                         ;;
3540                 powerux | power_ux | powermax_os | powermaxos | \
3541                 powerunix | power_unix) osname=powerux
3542                         osvers="$3"
3543                         ;;
3544                 qnx) osname=qnx
3545                         osvers="$4"
3546                         ;;
3547                 solaris) osname=solaris
3548                         case "$3" in
3549                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3550                         *)      osvers="$3" ;;
3551                         esac
3552                         ;;
3553                 sunos) osname=sunos
3554                         case "$3" in
3555                         5*) osname=solaris
3556                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3557                         *)      osvers="$3" ;;
3558                         esac
3559                         ;;
3560                 titanos) osname=titanos
3561                         case "$3" in
3562                         1*) osvers=1 ;;
3563                         2*) osvers=2 ;;
3564                         3*) osvers=3 ;;
3565                         4*) osvers=4 ;;
3566                         *)      osvers="$3" ;;
3567                         esac
3568                         ;;
3569                 ultrix) osname=ultrix
3570                         osvers="$3"
3571                         ;;
3572                 osf1|mls+)      case "$5" in
3573                                 alpha)
3574                                         osname=dec_osf
3575                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3576                                         case "$osvers" in
3577                                         [1-9].[0-9]*) ;;
3578                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3579                                         esac
3580                                         ;;
3581                         hp*)    osname=hp_osf1  ;;
3582                         mips)   osname=mips_osf1 ;;
3583                         esac
3584                         ;;
3585                 # UnixWare 7.1.2 is known as Open UNIX 8
3586                 openunix|unixware) osname=svr5
3587                         osvers="$4"
3588                         ;;
3589                 uts)    osname=uts
3590                         osvers="$3"
3591                         ;;
3592                 vos) osvers="$3"
3593                         ;;
3594                 $2) case "$osname" in
3595                         *isc*) ;;
3596                         *freebsd*) ;;
3597                         svr*)
3598                                 : svr4.x or possibly later
3599                                 case "svr$3" in
3600                                 ${osname}*)
3601                                         osname=svr$3
3602                                         osvers=$4
3603                                         ;;
3604                                 esac
3605                                 case "$osname" in
3606                                 svr4.0)
3607                                         : Check for ESIX
3608                                         if test -f /stand/boot ; then
3609                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3610                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3611                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3612                                                         if test -n "$isesix"; then
3613                                                                 osname=esix4
3614                                                         fi
3615                                                 fi
3616                                         fi
3617                                         ;;
3618                                 esac
3619                                 ;;
3620                         *)      if test -f /etc/systemid; then
3621                                         osname=sco
3622                                         set `echo $3 | $sed 's/\./ /g'` $4
3623                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3624                                                 osvers=$1.$2.$3
3625                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3626                                                 osvers=$1.$2
3627                                         elif $test -f $src/hints/sco_$1.sh; then
3628                                                 osvers=$1
3629                                         fi
3630                                 else
3631                                         case "$osname" in
3632                                         '') : Still unknown.  Probably a generic Sys V.
3633                                                 osname="sysv"
3634                                                 osvers="$3"
3635                                                 ;;
3636                                         esac
3637                                 fi
3638                                 ;;
3639                         esac
3640                         ;;
3641                 *)      case "$osname" in
3642                         '') : Still unknown.  Probably a generic BSD.
3643                                 osname="$1"
3644                                 osvers="$3"
3645                                 ;;
3646                         esac
3647                         ;;
3648                 esac
3649         else
3650                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3651                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3652                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3653                                 osname=news_os
3654                         fi
3655                         $rm -f UU/kernel.what
3656                 elif test -d c:/. -o -n "$is_os2" ; then
3657                         set X $myuname
3658                         osname=os2
3659                         osvers="$5"
3660                 fi
3661         fi
3662
3663         case "$targetarch" in
3664         '') ;;
3665         *)  hostarch=$osname
3666             case "$targetarch" in
3667                 nto*|*-nto-*)
3668                     # Will load qnx.sh, which should change osname to nto
3669                     osname=qnx
3670                     osvers=''
3671                     ;;
3672                 *linux-android*)
3673                     # Catch arm-linux-androideabi, mipsel-linux-android,
3674                     # and i686-linux-android
3675                     osname=linux-android
3676                     osvers=''
3677                     ;;
3678                 *linux*)
3679                     # Something like arm-linux-gnueabihf is really just
3680                     # plain linux.
3681                     osname=linux
3682                     osvers=''
3683                     ;;
3684                 *solaris*|*sunos*)
3685                     osname=solaris
3686                     # XXX perhaps we should just assume
3687                     # osvers to be 2, or maybe take the value
3688                     # from targetarch. Using $run before the
3689                     # hints are run is somewhat icky.
3690                     set X `$run $uname -a 2>/dev/null`
3691                     shift
3692                     case "$3" in
3693                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3694                         *)  osvers="$3" ;;
3695                     esac
3696                     ;;
3697                 *)
3698                     osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3699                     osvers=''
3700                 ;;
3701             esac
3702             ;;
3703         esac
3704
3705         : Now look for a hint file osname_osvers, unless one has been
3706         : specified already.
3707         case "$hintfile" in
3708         ''|' ')
3709                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3710                 : Also try without trailing minor version numbers.
3711                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3712                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3713                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3714                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3715                 case "$file" in
3716                 '') dflt=none ;;
3717                 *)  case "$osvers" in
3718                         '') dflt=$file
3719                                 ;;
3720                         *)  if $test -f $src/hints/$file.sh ; then
3721                                         dflt=$file
3722                                 elif $test -f $src/hints/$xfile.sh ; then
3723                                         dflt=$xfile
3724                                 elif $test -f $src/hints/$xxfile.sh ; then
3725                                         dflt=$xxfile
3726                                 elif $test -f $src/hints/$xxxfile.sh ; then
3727                                         dflt=$xxxfile
3728                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3729                                         dflt=$xxxxfile
3730                                 elif $test -f "$src/hints/${osname}.sh" ; then
3731                                         dflt="${osname}"
3732                                 else
3733                                         dflt=none
3734                                 fi
3735                                 ;;
3736                         esac
3737                         ;;
3738                 esac
3739                 if $test -f Policy.sh ; then
3740                         case "$dflt" in
3741                         *Policy*) ;;
3742                         none) dflt="Policy" ;;
3743                         *) dflt="Policy $dflt" ;;
3744                         esac
3745                 fi
3746                 ;;
3747         *)
3748                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3749                 ;;
3750         esac
3751
3752         if $test -f Policy.sh ; then
3753                 $cat <<EOM
3754
3755 There's also a Policy hint file available, which should make the
3756 site-specific (policy) questions easier to answer.
3757 EOM
3758
3759         fi
3760
3761         $cat <<EOM
3762
3763 You may give one or more space-separated answers, or "none" if appropriate.
3764 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3765 previous run of Configure, you may specify it as well as or instead of
3766 OS-specific hints.  If hints are provided for your OS, you should use them:
3767 although Perl can probably be built without hints on many platforms, using
3768 hints often improve performance and may enable features that Configure can't
3769 set up on its own. If there are no hints that match your OS, specify "none";
3770 DO NOT give a wrong version or a wrong OS.
3771
3772 EOM
3773
3774         rp="Which of these apply, if any?"
3775         . UU/myread
3776         tans=$ans
3777         for file in $tans; do
3778                 if $test X$file = XPolicy -a -f Policy.sh; then
3779                         . Policy.sh
3780                         $cat Policy.sh >> UU/config.sh
3781                 elif $test -f $src/hints/$file.sh; then
3782                         . $src/hints/$file.sh
3783                         $cat $src/hints/$file.sh >> UU/config.sh
3784                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3785                         : nothing
3786                 else
3787                         : Give one chance to correct a possible typo.
3788                         echo "$file.sh does not exist"
3789                         dflt=$file
3790                         rp="hint to use instead?"
3791                         . UU/myread
3792                         for file in $ans; do
3793                                 if $test -f "$src/hints/$file.sh"; then
3794                                         . $src/hints/$file.sh
3795                                         $cat $src/hints/$file.sh >> UU/config.sh
3796                                 elif $test X$ans = X -o X$ans = Xnone ; then
3797                                         : nothing
3798                                 else
3799                                         echo "$file.sh does not exist -- ignored."
3800                                 fi
3801                         done
3802                 fi
3803         done
3804
3805         hint=recommended
3806         : Remember our hint file for later.
3807         if $test -f "$src/hints/$file.sh" ; then
3808                 hintfile="$file"
3809         else
3810                 hintfile=''
3811         fi
3812 fi
3813 cd UU
3814 ;;
3815 *)
3816         echo " "
3817         echo "Fetching default answers from $config_sh..." >&4
3818         tmp_n="$n"
3819         tmp_c="$c"
3820         cd ..
3821         cp $config_sh config.sh 2>/dev/null
3822         chmod +w config.sh
3823         . ./config.sh
3824         cd UU
3825         cp ../config.sh .
3826         n="$tmp_n"
3827         c="$tmp_c"
3828         hint=previous
3829         ;;
3830 esac
3831 . ./optdef.sh
3832
3833 : Restore computed paths
3834 for file in $loclist $trylist; do
3835         eval $file="\$_$file"
3836 done
3837
3838 cat << EOM
3839
3840 Configure uses the operating system name and version to set some defaults.
3841 The default value is probably right if the name rings a bell. Otherwise,
3842 since spelling matters for me, either accept the default or answer "none"
3843 to leave it blank.
3844
3845 EOM
3846 case "$osname" in
3847         ''|' ')
3848                 case "$hintfile" in
3849                 ''|' '|none) dflt=none ;;
3850                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3851                 esac
3852                 ;;
3853         *) dflt="$osname" ;;
3854 esac
3855 rp="Operating system name?"
3856 . ./myread
3857 case "$ans" in
3858 none)  osname='' ;;
3859 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3860 esac
3861 echo " "
3862 case "$osvers" in
3863         ''|' ')
3864                 case "$hintfile" in
3865                 ''|' '|none) dflt=none ;;
3866                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3867                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3868                         case "$dflt" in
3869                         ''|' ') dflt=none ;;
3870                         esac
3871                         ;;
3872                 esac
3873                 ;;
3874         *) dflt="$osvers" ;;
3875 esac
3876 rp="Operating system version?"
3877 . ./myread
3878 case "$ans" in
3879 none)  osvers='' ;;
3880 *) osvers="$ans" ;;
3881 esac
3882
3883
3884 . ./posthint.sh
3885
3886 : who configured the system
3887 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3888 case "$cf_by" in
3889 "")
3890         cf_by=`(logname) 2>/dev/null`
3891         case "$cf_by" in
3892         "")
3893                 cf_by=`(whoami) 2>/dev/null`
3894                 case "$cf_by" in
3895                 "") cf_by=unknown ;;
3896                 esac ;;
3897         esac ;;
3898 esac
3899
3900 : decide how portable to be.  Allow command line overrides.
3901 case "$d_portable" in
3902 "$undef") ;;
3903 *)      d_portable="$define" ;;
3904 esac
3905
3906 : set up shell script to do ~ expansion
3907 cat >filexp <<EOSS
3908 $startsh
3909 : expand filename
3910 case "\$1" in
3911  \~/*|\~)
3912         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3913         ;;
3914  \~*)
3915         if $test -f /bin/csh; then
3916                 /bin/csh -f -c "glob \$1"
3917                 failed=\$?
3918                 echo ""
3919                 exit \$failed
3920         else
3921                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3922                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3923                 if $test ! -d "\$dir"; then
3924                         me=\`basename \$0\`
3925                         echo "\$me: can't locate home directory for: \$name" >&2
3926                         exit 1
3927                 fi
3928                 case "\$1" in
3929                 */*)
3930                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3931                         ;;
3932                 *)
3933                         echo \$dir
3934                         ;;
3935                 esac
3936         fi
3937         ;;
3938 *)
3939         echo \$1
3940         ;;
3941 esac
3942 EOSS
3943 chmod +x filexp
3944 $eunicefix filexp
3945
3946 : now set up to get a file name
3947 cat <<EOS >getfile
3948 $startsh
3949 EOS
3950 cat <<'EOSC' >>getfile
3951 tilde=''
3952 fullpath=''
3953 already=''
3954 skip=''
3955 none_ok=''
3956 exp_file=''
3957 nopath_ok=''
3958 orig_rp="$rp"
3959 orig_dflt="$dflt"
3960 case "$gfpth" in
3961 '') gfpth='.' ;;
3962 esac
3963
3964 case "$fn" in
3965 *\(*)
3966         : getfile will accept an answer from the comma-separated list
3967         : enclosed in parentheses even if it does not meet other criteria.
3968         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3969         fn=`echo $fn | sed 's/(.*)//'`
3970         ;;
3971 esac
3972
3973 case "$fn" in
3974 *:*)
3975         loc_file=`expr $fn : '.*:\(.*\)'`
3976         fn=`expr $fn : '\(.*\):.*'`
3977         ;;
3978 esac
3979
3980 case "$fn" in
3981 *~*) tilde=true;;
3982 esac
3983 case "$fn" in
3984 */*) fullpath=true;;
3985 esac
3986 case "$fn" in
3987 *+*) skip=true;;
3988 esac
3989 case "$fn" in
3990 *n*) none_ok=true;;
3991 esac
3992 case "$fn" in
3993 *e*) exp_file=true;;
3994 esac
3995 case "$fn" in
3996 *p*) nopath_ok=true;;
3997 esac
3998
3999 case "$fn" in
4000 *f*) type='File';;
4001 *d*) type='Directory';;
4002 *l*) type='Locate';;
4003 esac
4004
4005 what="$type"
4006 case "$what" in
4007 Locate) what='File';;
4008 esac
4009
4010 case "$exp_file" in
4011 '')
4012         case "$d_portable" in
4013         "$define") ;;
4014         *) exp_file=true;;
4015         esac
4016         ;;
4017 esac
4018
4019 cd ..
4020 while test "$type"; do
4021         redo=''
4022         rp="$orig_rp"
4023         dflt="$orig_dflt"
4024         case "$tilde" in
4025         true) rp="$rp (~name ok)";;
4026         esac
4027         . UU/myread
4028         if test -f UU/getfile.ok && \
4029                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4030         then
4031                 value="$ans"
4032                 ansexp="$ans"
4033                 break
4034         fi
4035         case "$ans" in
4036         none)
4037                 value=''
4038                 ansexp=''
4039                 case "$none_ok" in
4040                 true) type='';;
4041                 esac
4042                 ;;
4043         *)
4044                 case "$tilde" in
4045                 '') value="$ans"
4046                         ansexp="$ans";;
4047                 *)
4048                         value=`UU/filexp $ans`
4049                         case $? in
4050                         0)
4051                                 if test "$ans" != "$value"; then
4052                                         echo "(That expands to $value on this system.)"
4053                                 fi
4054                                 ;;
4055                         *) value="$ans";;
4056                         esac
4057                         ansexp="$value"
4058                         case "$exp_file" in
4059                         '') value="$ans";;
4060                         esac
4061                         ;;
4062                 esac
4063                 case "$fullpath" in
4064                 true)
4065                         case "$ansexp" in
4066                         /*) value="$ansexp" ;;
4067                         [a-zA-Z]:/*) value="$ansexp" ;;
4068                         *)
4069                                 redo=true
4070                                 case "$already" in
4071                                 true)
4072                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4073                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4074                                         ;;
4075                                 *)
4076                                 echo "Please give a full path name, starting with slash." >&4
4077                                         case "$tilde" in
4078                                         true)
4079                                 echo "Note that using ~name is ok provided it expands well." >&4
4080                                                 already=true
4081                                                 ;;
4082                                         esac
4083                                 esac
4084                                 ;;
4085                         esac
4086                         ;;
4087                 esac
4088                 case "$redo" in
4089                 '')
4090                         case "$type" in
4091                         File)
4092                                 for fp in $gfpth; do
4093                                         if test "X$fp" = X.; then
4094                                             pf="$ansexp"
4095                                         else    
4096                                             pf="$fp/$ansexp"
4097                                         fi
4098                                         if test -f "$pf"; then
4099                                                 type=''
4100                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4101                                         then
4102                                                 echo "($value is not a plain file, but that's ok.)"
4103                                                 type=''
4104                                         fi
4105                                         if test X"$type" = X; then
4106                                             value="$pf"
4107                                             break
4108                                         fi
4109                                 done
4110                                 ;;
4111                         Directory)
4112                                 for fp in $gfpth; do
4113                                         if test "X$fp" = X.; then
4114                                             dir="$ans"
4115                                             direxp="$ansexp"
4116                                         else    
4117                                             dir="$fp/$ansexp"
4118                                             direxp="$fp/$ansexp"
4119                                         fi
4120                                         if test -d "$direxp"; then
4121                                                 type=''
4122                                                 value="$dir"
4123                                                 break
4124                                         fi
4125                                 done
4126                                 ;;
4127                         Locate)
4128                                 if test -d "$ansexp"; then
4129                                         echo "(Looking for $loc_file in directory $value.)"
4130                                         value="$value/$loc_file"
4131                                         ansexp="$ansexp/$loc_file"
4132                                 fi
4133                                 if test -f "$ansexp"; then
4134                                         type=''
4135                                 fi
4136                                 case "$nopath_ok" in
4137                                 true)   case "$value" in
4138                                         */*) ;;
4139                                         *)      echo "Assuming $value will be in people's path."
4140                                                 type=''
4141                                                 ;;
4142                                         esac
4143                                         ;;
4144                                 esac
4145                                 ;;
4146                         esac
4147
4148                         case "$skip" in
4149                         true) type='';
4150                         esac
4151
4152                         case "$type" in
4153                         '') ;;
4154                         *)
4155                                 if test "$fastread" = yes; then
4156                                         dflt=y
4157                                 else
4158                                         dflt=n
4159                                 fi
4160                                 rp="$what $value doesn't exist.  Use that name anyway?"
4161                                 . UU/myread
4162                                 dflt=''
4163                                 case "$ans" in
4164                                 y*) type='';;
4165                                 *) echo " ";;
4166                                 esac
4167                                 ;;
4168                         esac
4169                         ;;
4170                 esac
4171                 ;;
4172         esac
4173 done
4174 cd UU
4175 ans="$value"
4176 rp="$orig_rp"
4177 dflt="$orig_dflt"
4178 rm -f getfile.ok
4179 test "X$gfpthkeep" != Xy && gfpth=""
4180 EOSC
4181
4182 : determine root of directory hierarchy where package will be installed.
4183 case "$prefix" in
4184 '')
4185         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4186         ;;
4187 *?/)
4188         dflt=`echo "$prefix" | sed 's/.$//'`
4189         ;;
4190 *)
4191         dflt="$prefix"
4192         ;;
4193 esac
4194 $cat <<EOM
4195
4196 By default, $package will be installed in $dflt/bin, manual pages
4197 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4198 installation directories. Typically this is something like /usr/local.
4199 If you wish to have binaries under /usr/bin but other parts of the
4200 installation under /usr/local, that's ok: you will be prompted
4201 separately for each of the installation directories, the prefix being
4202 only used to set the defaults.
4203
4204 EOM
4205 fn=d~
4206 rp='Installation prefix to use?'
4207 . ./getfile
4208 oldprefix=''
4209 case "$prefix" in
4210 '') ;;
4211 *)
4212         case "$ans" in
4213         "$prefix") ;;
4214         *) oldprefix="$prefix";;
4215         esac
4216         ;;
4217 esac
4218 prefix="$ans"
4219 prefixexp="$ansexp"
4220
4221 : allow them to override the AFS root
4222 case "$afsroot" in
4223 '')     afsroot=/afs ;;
4224 *)      afsroot=$afsroot ;;
4225 esac
4226
4227 : is AFS running?
4228 echo " "
4229 case "$afs" in
4230 $define|true)   afs=true ;;
4231 $undef|false)   afs=false ;;
4232 *)      if $test -d $afsroot; then
4233                 afs=true
4234         else
4235                 afs=false
4236         fi
4237         ;;
4238 esac
4239 if $afs; then
4240         echo "AFS may be running... I'll be extra cautious then..." >&4
4241 else
4242         echo "AFS does not seem to be running..." >&4
4243 fi
4244
4245 : determine installation prefix for where package is to be installed.
4246 if $afs; then
4247 $cat <<EOM
4248
4249 Since you are running AFS, I need to distinguish the directory in which
4250 files will reside from the directory in which they are installed (and from
4251 which they are presumably copied to the former directory by occult means).
4252
4253 EOM
4254         case "$installprefix" in
4255         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4256         *) dflt="$installprefix";;
4257         esac
4258 else
4259 $cat <<EOM
4260
4261 In some special cases, particularly when building $package for distribution,
4262 it is convenient to distinguish the directory in which files should be
4263 installed from the directory ($prefix) in which they will
4264 eventually reside.  For most users, these two directories are the same.
4265
4266 EOM
4267         case "$installprefix" in
4268         '') dflt=$prefix ;;
4269         *) dflt=$installprefix;;
4270         esac
4271 fi
4272 fn=d~
4273 rp='What installation prefix should I use for installing files?'
4274 . ./getfile
4275 installprefix="$ans"
4276 installprefixexp="$ansexp"
4277
4278 : Perform the prefixexp/installprefixexp correction if necessary
4279 cat <<EOS >installprefix
4280 $startsh
4281 EOS
4282 cat <<'EOSC' >>installprefix
4283 : Change installation prefix, if necessary.
4284 if $test X"$prefix" != X"$installprefix"; then
4285     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
4286 else
4287     eval "install${prefixvar}=\"\$${prefixvar}exp\""
4288 fi
4289 EOSC
4290 chmod +x installprefix
4291 $eunicefix installprefix
4292
4293 : Set variables such as privlib and privlibexp from the output of ./getfile
4294 : performing the prefixexp/installprefixexp correction if necessary.
4295 cat <<EOS >setprefixvar
4296 $startsh
4297 EOS
4298 cat <<'EOSC' >>setprefixvar
4299 eval "${prefixvar}=\"\$ans\""
4300 eval "${prefixvar}exp=\"\$ansexp\""
4301 . ./installprefix
4302 EOSC
4303 chmod +x setprefixvar
4304 $eunicefix setprefixvar
4305
4306 : set up the script used to warn in case of inconsistency
4307 cat <<EOS >whoa
4308 $startsh
4309 EOS
4310 cat <<'EOSC' >>whoa
4311 dflt=y
4312 case "$hint" in
4313     recommended)
4314         case "$hintfile" in
4315         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
4316                 ;;
4317         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
4318                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4319                 ;;
4320         esac
4321         ;;
4322     *)  echo " "
4323         echo "*** WHOA THERE!!! ***" >&4
4324         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
4325         ;;
4326 esac
4327 rp="    Keep the $hint value?"
4328 . ./myread
4329 case "$ans" in
4330 y) td=$was; tu=$was;;
4331 esac
4332 EOSC
4333
4334 : function used to set '$1' to '$val'
4335 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4336 case "$val$was" in
4337 $define$undef) . ./whoa; eval "$var=\$td";;
4338 $undef$define) . ./whoa; eval "$var=\$tu";;
4339 *) eval "$var=$val";;
4340 esac'
4341
4342 : get the patchlevel
4343 echo " "
4344 echo "Getting the current patchlevel..." >&4
4345 if $test -r $rsrc/patchlevel.h;then
4346         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4347         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4348         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4349         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4350         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4351         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4352         perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4353 else
4354         revision=0
4355         patchlevel=0
4356         subversion=0
4357         api_revision=0
4358         api_version=0
4359         api_subversion=0
4360         perl_patchlevel=0
4361         $echo "(You do not have patchlevel.h.  Eek.)"
4362 fi
4363 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4364 version_patchlevel_string="version $patchlevel subversion $subversion"
4365 case "$perl_patchlevel" in
4366 0|'') ;;
4367 *)  perl_patchlevel=`echo $perl_patchlevel | sed 's/.* //'`
4368     version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel"
4369     ;;
4370 esac
4371
4372 $echo "(You have $package $version_patchlevel_string.)"
4373
4374 case "$osname" in
4375 dos|vms)
4376         : XXX Should be a Configure test for double-dots in filenames.
4377         version=`echo $revision $patchlevel $subversion | \
4378                  $awk '{ printf "%d_%d_%d", $1, $2, $3 }'`
4379         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4380                  $awk '{ printf "%d_%d_%d", $1, $2, $3 }'`
4381         ;;
4382 *)
4383         version=`echo $revision $patchlevel $subversion | \
4384                  $awk '{ printf "%d.%d.%d", $1, $2, $3 }'`
4385         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4386                  $awk '{ printf "%d.%d.%d", $1, $2, $3 }'`
4387         ;;
4388 esac
4389 : Special case the 5.005_xx maintenance series, which used 5.005
4390 : without any subversion label as a subdirectory in $sitelib
4391 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4392         api_versionstring='5.005'
4393 fi
4394
4395 : Do we want threads support and if so, what type
4396 case "$usethreads" in
4397 $define|true|[yY]*)     dflt='y';;
4398 *)     # Catch case where user specified ithreads or 5005threads but
4399        # forgot -Dusethreads (A.D. 4/2002)
4400        case "$useithreads$use5005threads" in
4401        *$define*)       dflt='y';;
4402        *)               dflt='n';;
4403        esac
4404        ;;
4405 esac
4406 cat <<EOM
4407
4408 Perl can be built to offer a form of threading support on some systems
4409 To do so, Configure can be run with -Dusethreads.
4410
4411 Note that Perl built with threading support runs slightly slower
4412 and uses slightly more memory than plain Perl.
4413
4414 If this doesn't make any sense to you, just accept the default '$dflt'.
4415 EOM
4416 rp='Build a threading Perl?'
4417 . ./myread
4418 case "$ans" in
4419 y|Y)    val="$define" ;;
4420 *)      val="$undef" ;;
4421 esac
4422 set usethreads
4423 eval $setvar
4424
4425 if $test $patchlevel -lt 9; then
4426     case "$usethreads" in
4427     $define)
4428         : Default to ithreads unless overridden on command line or with
4429         : old config.sh
4430         dflt='y'
4431         case "$use5005threads" in
4432                 $define|true|[yY]*)
4433                         echo "5.005 threads are no longer supported"
4434                         exit 1
4435                 ;;
4436         esac
4437         case "$useithreads" in
4438                 $undef|false|[nN]*) dflt='n';;
4439         esac
4440         rp='Use the newer interpreter-based ithreads?'
4441         . ./myread
4442         case "$ans" in
4443         y|Y)    val="$define" ;;
4444         *)      val="$undef" ;;
4445         esac
4446         set useithreads
4447         eval $setvar
4448         : Now set use5005threads to the opposite value.
4449         case "$useithreads" in
4450         $define) val="$undef" ;;
4451         *) val="$define" ;;
4452         esac
4453         set use5005threads
4454         eval $setvar
4455         ;;
4456     *)
4457         useithreads="$undef"
4458         use5005threads="$undef"
4459         ;;
4460     esac
4461
4462     case "$useithreads$use5005threads" in
4463     "$define$define")
4464         $cat >&4 <<EOM
4465
4466 You cannot have both the ithreads and the 5.005 threads enabled
4467 at the same time.  Disabling the 5.005 threads since they are
4468 much less stable than the ithreads.
4469
4470 EOM
4471         use5005threads="$undef"
4472         ;;
4473     esac
4474
4475 else
4476 : perl-5.9.x and later
4477
4478     if test X"$usethreads" = "X$define"; then
4479         case "$use5005threads" in
4480             $define|true|[yY]*)
4481                 $cat >&4 <<EOM
4482
4483 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4484
4485 EOM
4486             ;;
4487         esac
4488     fi
4489
4490     use5005threads="$undef"
4491     useithreads="$usethreads"
4492 fi
4493
4494 case "$d_oldpthreads" in
4495 '')     : Configure tests would be welcome here.  For now, assume undef.
4496         val="$undef" ;;
4497 *)      val="$d_oldpthreads" ;;
4498 esac
4499 set d_oldpthreads
4500 eval $setvar
4501
4502
4503 : Look for a hint-file generated 'call-back-unit'.  If the
4504 : user has specified that a threading perl is to be built,
4505 : we may need to set or change some other defaults.
4506 if $test -f usethreads.cbu; then
4507     echo "Your platform has some specific hints regarding threaded builds, using them..."
4508     . ./usethreads.cbu
4509 else
4510     case "$usethreads" in
4511         "$define"|true|[yY]*)
4512                 $cat <<EOM
4513 (Your platform does not have any specific hints for threaded builds.
4514  Assuming POSIX threads, then.)
4515 EOM
4516         ;;
4517     esac
4518 fi
4519
4520 : Check if multiplicity is required
4521 cat <<EOM
4522
4523 Perl can be built so that multiple Perl interpreters can coexist
4524 within the same Perl executable.
4525 EOM
4526
4527 case "$useithreads" in
4528 $define)
4529         cat <<EOM
4530 This multiple interpreter support is required for interpreter-based threads.
4531 EOM
4532         val="$define"
4533         ;;
4534 *)      case "$usemultiplicity" in
4535         $define|true|[yY]*)     dflt='y';;
4536         *) dflt='n';;
4537         esac
4538         echo " "
4539         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4540         rp='Build Perl for multiplicity?'
4541         . ./myread
4542         case "$ans" in
4543         y|Y)    val="$define" ;;
4544         *)      val="$undef" ;;
4545         esac
4546         ;;
4547 esac
4548 set usemultiplicity
4549 eval $setvar
4550
4551 : Check if morebits is requested
4552 case "$usemorebits" in
4553 "$define"|true|[yY]*)
4554         use64bitint="$define"
4555         uselongdouble="$define"
4556         usemorebits="$define"
4557         ;;
4558 *)      usemorebits="$undef"
4559         ;;
4560 esac
4561
4562 : Determine the C compiler to be used
4563 echo " "
4564 case "$cc" in
4565 '') dflt=cc;;
4566 *) dflt="$cc";;
4567 esac
4568 rp="Use which C compiler?"
4569 . ./myread
4570 cc="$ans"
4571
4572 : See whether they have no cc but they do have gcc
4573 . ./trygcc
4574 if $test -f cc.cbu; then
4575     . ./cc.cbu
4576 fi
4577 . ./checkcc
4578
4579 : make some quick guesses about what we are up against
4580 echo " "
4581 $echo $n "Hmm...  $c"
4582 echo exit 1 >bsd
4583 echo exit 1 >usg
4584 echo exit 1 >v7
4585 echo exit 1 >osf1
4586 echo exit 1 >eunice
4587 echo exit 1 >xenix
4588 echo exit 1 >venix
4589 echo exit 1 >os2
4590 d_bsd="$undef"
4591 $cat $sysroot/usr/include/signal.h $sysroot/usr/include/sys/signal.h >foo 2>/dev/null
4592 if test -f /osf_boot || $contains 'OSF/1' $sysroot/usr/include/ctype.h >/dev/null 2>&1
4593 then
4594         echo "Looks kind of like an OSF/1 system, but we'll see..."
4595         echo exit 0 >osf1
4596 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4597         xxx=`./loc addbib blurfl $pth`
4598         if $test -f $xxx; then
4599         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4600                 echo exit 0 >bsd
4601                 echo exit 0 >usg
4602         else
4603                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4604                         echo "Looks kind of like an extended USG system, but we'll see..."
4605                 else
4606                         echo "Looks kind of like a USG system, but we'll see..."
4607                 fi
4608                 echo exit 0 >usg
4609         fi
4610 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4611         echo "Looks kind of like a BSD system, but we'll see..."
4612         d_bsd="$define"
4613         echo exit 0 >bsd
4614 else
4615         echo "Looks kind of like a Version 7 system, but we'll see..."
4616         echo exit 0 >v7
4617 fi
4618 case "$eunicefix" in
4619 *unixtovms*)
4620         $cat <<'EOI'
4621 There is, however, a strange, musty smell in the air that reminds me of
4622 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4623 EOI
4624         echo exit 0 >eunice
4625         d_eunice="$define"
4626 : it so happens the Eunice I know will not run shell scripts in Unix format
4627         ;;
4628 *)
4629         echo " "
4630         echo "Congratulations.  You aren't running Eunice."
4631         d_eunice="$undef"
4632         ;;
4633 esac
4634 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4635 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4636 : semicolon as a patch separator
4637 case "$p_" in
4638 :) ;;
4639 *)
4640         $cat <<'EOI'
4641 I have the feeling something is not exactly right, however...don't tell me...
4642 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4643 (Or you may be running DOS with DJGPP.)
4644 EOI
4645         echo exit 0 >os2
4646         ;;
4647 esac
4648 if test -f /xenix; then
4649         echo "Actually, this looks more like a XENIX system..."
4650         echo exit 0 >xenix
4651         d_xenix="$define"
4652 else
4653         echo " "
4654         echo "It's not Xenix..."
4655         d_xenix="$undef"
4656 fi
4657 chmod +x xenix
4658 $eunicefix xenix
4659 if test -f /venix; then
4660         echo "Actually, this looks more like a VENIX system..."
4661         echo exit 0 >venix
4662 else
4663         echo " "
4664         if ./xenix; then
4665                 : null
4666         else
4667                 echo "Nor is it Venix..."
4668         fi
4669 fi
4670 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4671 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4672 $rm -f foo
4673
4674 : Check if we are using GNU gcc and what its version is
4675 echo " "
4676 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4677 $cat >try.c <<EOM
4678 #include <stdio.h>
4679 int main() {
4680 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4681 #ifdef __VERSION__
4682         printf("%s\n", __VERSION__);
4683 #else
4684         printf("%s\n", "1");
4685 #endif
4686 #endif
4687         return(0);
4688 }
4689 EOM
4690 if $cc -o try $ccflags $ldflags try.c; then
4691         gccversion=`$run ./try`
4692         case "$gccversion" in
4693         '') echo "You are not using GNU cc." ;;
4694         *)  echo "You are using GNU cc $gccversion."
4695             ccname=gcc
4696             ;;
4697         esac
4698 else
4699         echo " "
4700         echo "*** WHOA THERE!!! ***" >&4
4701         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4702         case "$knowitall" in
4703         '')
4704         echo "    You'd better start hunting for one and let me know about it." >&4
4705                 exit 1
4706                 ;;
4707         esac
4708 fi
4709 $rm -f try try.*
4710 case "$gccversion" in
4711 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4712 esac
4713 case "$gccversion" in
4714 '') gccosandvers='' ;;
4715 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4716    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4717    gccshortvers=''
4718    case "$gccosandvers" in
4719    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4720    $osname$osvers) ;; # looking good
4721    $osname*) cat <<EOM >&4
4722
4723 *** WHOA THERE!!! ***
4724
4725     Your gcc has not been compiled for the exact release of
4726     your operating system ($gccosandvers versus $osname$osvers).
4727
4728     In general it is a good idea to keep gcc synchronized with
4729     the operating system because otherwise serious problems
4730     may ensue when trying to compile software, like Perl.
4731
4732     I'm trying to be optimistic here, though, and will continue.
4733     If later during the configuration and build icky compilation
4734     problems appear (headerfile conflicts being the most common
4735     manifestation), I suggest reinstalling the gcc to match
4736     your operating system release.
4737
4738 EOM
4739       ;;
4740    *) gccosandvers='' ;; # failed to parse, better be silent
4741    esac
4742    ;;
4743 esac
4744 case "$ccname" in
4745 '') ccname="$cc" ;;
4746 esac
4747
4748 # gcc 3.* complain about adding -Idirectories that they already know about,
4749 # so we will take those off from locincpth.
4750 case "$gccversion" in
4751 3*)
4752     echo "main(){}">try.c
4753     for incdir in $locincpth; do
4754        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4755              grep '^c[cp]p*[01]: warning: changing search order '`
4756        if test "X$warn" != X; then
4757            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4758        fi
4759     done
4760     $rm -f try try.*
4761 esac
4762
4763 # gcc 4.9 by default does some optimizations that break perl.
4764 # see ticket 121505.
4765 #
4766 # The -fwrapv disables those optimizations (and probably others,) so
4767 # for gcc 4.9 (and later, since the optimizations probably won't go
4768 # away), add -fwrapv unless the user requests -fno-wrapv, which
4769 # disables -fwrapv, or if the user requests -fsanitize=undefined,
4770 # which turns the overflows -fwrapv ignores into runtime errors.
4771 case "$gccversion" in
4772 4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*)
4773     case "$ccflags" in
4774     *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;;
4775     *) ccflags="$ccflags -fwrapv" ;;
4776     esac
4777 esac
4778
4779 : What should the include directory be ?
4780 : Use sysroot if set, so findhdr looks in the right place.
4781 echo " "
4782 $echo $n "Hmm...  $c"
4783 dflt="$sysroot/usr/include"
4784 incpath=''
4785 mips_type=''
4786 if $test -f /bin/mips && /bin/mips; then
4787         echo "Looks like a MIPS system..."
4788         $cat >usr.c <<'EOCP'
4789 #ifdef SYSTYPE_BSD43
4790 /bsd43
4791 #endif
4792 EOCP
4793         if $cc $cppflags -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4794                 dflt='/bsd43/usr/include'
4795                 incpath='/bsd43'
4796                 mips_type='BSD 4.3'
4797         else
4798                 mips_type='System V'
4799         fi
4800         $rm -f usr.c usr.out
4801         echo "and you're compiling with the $mips_type compiler and libraries."
4802         xxx_prompt=y
4803         echo "exit 0" >mips
4804 else
4805         echo "Doesn't look like a MIPS system."
4806         xxx_prompt=n
4807         echo "exit 1" >mips
4808 fi
4809 chmod +x mips
4810 $eunicefix mips
4811 case "$usrinc" in
4812 '') ;;
4813 *) dflt="$usrinc";;
4814 esac
4815 case "$xxx_prompt" in
4816 y)      fn=d/
4817         echo " "
4818         rp='Where are the include files you want to use?'
4819         . ./getfile
4820         usrinc="$ans"
4821         ;;
4822 *)      usrinc="$dflt"
4823         ;;
4824 esac
4825
4826 : see how we invoke the C preprocessor
4827 echo " "
4828 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4829 cat <<'EOT' >testcpp.c
4830 #define ABC abc
4831 #define XYZ xyz
4832 ABC.XYZ
4833 EOT
4834 cd ..
4835 if test ! -f cppstdin; then
4836         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4837                 # AIX cc -E doesn't show the absolute headerfile
4838                 # locations but we'll cheat by using the -M flag.
4839                 echo 'cat >.$$.c; rm -f .$$.u; '"$cc"' ${1+"$@"} -M -c .$$.c 2>/dev/null; test -s .$$.u && awk '"'"'$2 ~ /\.h$/ { print "# 0 \""$2"\"" }'"'"' .$$.u; rm -f .$$.o .$$.u; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' > cppstdin
4840         else
4841                 echo 'cat >.$$.c; '"$cc $cppflags"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4842         fi
4843 else
4844         echo "Keeping your $hint cppstdin wrapper."
4845 fi
4846 chmod 755 cppstdin
4847 wrapper=`pwd`/cppstdin
4848 ok='false'
4849 cd UU
4850
4851 if $test "X$cppstdin" != "X" && \
4852         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4853         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4854 then
4855         echo "You used to use $cppstdin $cppminus so we'll use that again."
4856         case "$cpprun" in
4857         '') echo "But let's see if we can live without a wrapper..." ;;
4858         *)