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