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