perldelta: update module versions
[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_Gconvert=''
510 d_getaddrinfo=''
511 d_getcwd=''
512 d_getespwnam=''
513 d_getfsstat=''
514 d_getgrent=''
515 d_getgrent_r=''
516 getgrent_r_proto=''
517 d_getgrgid_r=''
518 getgrgid_r_proto=''
519 d_getgrnam_r=''
520 getgrnam_r_proto=''
521 d_getgrps=''
522 d_gethbyaddr=''
523 d_gethbyname=''
524 d_gethent=''
525 aphostname=''
526 d_gethname=''
527 d_phostname=''
528 d_uname=''
529 d_gethostbyaddr_r=''
530 gethostbyaddr_r_proto=''
531 d_gethostbyname_r=''
532 gethostbyname_r_proto=''
533 d_gethostent_r=''
534 gethostent_r_proto=''
535 d_gethostprotos=''
536 d_getitimer=''
537 d_getlogin=''
538 d_getlogin_r=''
539 getlogin_r_proto=''
540 d_getmnt=''
541 d_getmntent=''
542 d_getnameinfo=''
543 d_getnbyaddr=''
544 d_getnbyname=''
545 d_getnent=''
546 d_getnetbyaddr_r=''
547 getnetbyaddr_r_proto=''
548 d_getnetbyname_r=''
549 getnetbyname_r_proto=''
550 d_getnetent_r=''
551 getnetent_r_proto=''
552 d_getnetprotos=''
553 d_getpagsz=''
554 d_getpent=''
555 d_getpgid=''
556 d_getpgrp2=''
557 d_bsdgetpgrp=''
558 d_getpgrp=''
559 d_getppid=''
560 d_getprior=''
561 d_getpbyname=''
562 d_getpbynumber=''
563 d_getprotobyname_r=''
564 getprotobyname_r_proto=''
565 d_getprotobynumber_r=''
566 getprotobynumber_r_proto=''
567 d_getprotoent_r=''
568 getprotoent_r_proto=''
569 d_getprotoprotos=''
570 d_getprpwnam=''
571 d_getpwent=''
572 d_getpwent_r=''
573 getpwent_r_proto=''
574 d_getpwnam_r=''
575 getpwnam_r_proto=''
576 d_getpwuid_r=''
577 getpwuid_r_proto=''
578 d_getsent=''
579 d_getservbyname_r=''
580 getservbyname_r_proto=''
581 d_getservbyport_r=''
582 getservbyport_r_proto=''
583 d_getservent_r=''
584 getservent_r_proto=''
585 d_getservprotos=''
586 d_getspnam=''
587 d_getspnam_r=''
588 getspnam_r_proto=''
589 d_getsbyname=''
590 d_getsbyport=''
591 d_gmtime_r=''
592 gmtime_r_proto=''
593 d_gnulibc=''
594 gnulibc_version=''
595 d_hasmntopt=''
596 d_htonl=''
597 d_hypot=''
598 d_ilogb=''
599 d_ilogbl=''
600 d_inetaton=''
601 d_inetntop=''
602 d_inetpton=''
603 d_int64_t=''
604 d_isascii=''
605 d_isblank=''
606 d_isfinite=''
607 d_isfinitel=''
608 d_isinf=''
609 d_isinfl=''
610 d_isless=''
611 d_isnan=''
612 d_isnanl=''
613 d_isnormal=''
614 d_j0=''
615 d_j0l=''
616 d_killpg=''
617 d_lc_monetary_2008=''
618 d_lchown=''
619 d_ldbl_dig=''
620 d_lgamma=''
621 d_lgamma_r=''
622 d_libm_lib_version=''
623 d_link=''
624 d_llrint=''
625 d_llrintl=''
626 d_llround=''
627 d_llroundl=''
628 d_localtime_r=''
629 d_localtime_r_needs_tzset=''
630 localtime_r_proto=''
631 d_locconv=''
632 d_lockf=''
633 d_log1p=''
634 d_log2=''
635 d_logb=''
636 d_ldexpl=''
637 d_longdbl=''
638 longdblkind=''
639 longdblsize=''
640 d_longlong=''
641 longlongsize=''
642 d_lrint=''
643 d_lrintl=''
644 d_lround=''
645 d_lroundl=''
646 d_lseekproto=''
647 d_lstat=''
648 d_madvise=''
649 d_malloc_good_size=''
650 d_malloc_size=''
651 d_mblen=''
652 d_mbstowcs=''
653 d_mbtowc=''
654 d_memchr=''
655 d_memcmp=''
656 d_memcpy=''
657 d_memmem=''
658 d_memmove=''
659 d_memset=''
660 d_mkdir=''
661 d_mkdtemp=''
662 d_mkfifo=''
663 d_mkstemp=''
664 d_mkstemps=''
665 d_mktime=''
666 d_mmap=''
667 mmaptype=''
668 d_modfl=''
669 d_modflproto=''
670 d_mprotect=''
671 d_msg=''
672 d_msgctl=''
673 d_msgget=''
674 d_msghdr_s=''
675 d_msgrcv=''
676 d_msgsnd=''
677 d_msync=''
678 d_munmap=''
679 d_nan=''
680 d_nearbyint=''
681 d_duplocale=''
682 d_freelocale=''
683 d_newlocale=''
684 d_uselocale=''
685 i_xlocale=''
686 d_nextafter=''
687 d_nexttoward=''
688 d_nice=''
689 d_nl_langinfo=''
690 d_off64_t=''
691 d_open3=''
692 d_fpathconf=''
693 d_pathconf=''
694 d_pause=''
695 d_pipe=''
696 d_poll=''
697 d_portable=''
698 d_prctl=''
699 d_prctl_set_name=''
700 d_procselfexe=''
701 procselfexe=''
702 d_old_pthread_create_joinable=''
703 old_pthread_create_joinable=''
704 d_pthread_atfork=''
705 d_pthread_attr_setscope=''
706 d_pthread_yield=''
707 d_sched_yield=''
708 sched_yield=''
709 d_ptrdiff_t=''
710 d_qgcvt=''
711 d_random_r=''
712 random_r_proto=''
713 d_readdir64_r=''
714 readdir64_r_proto=''
715 d_readdir=''
716 d_rewinddir=''
717 d_seekdir=''
718 d_telldir=''
719 d_readdir_r=''
720 readdir_r_proto=''
721 d_readlink=''
722 d_readv=''
723 d_recvmsg=''
724 d_re_comp=''
725 d_regcmp=''
726 d_regcomp=''
727 d_remainder=''
728 d_remquo=''
729 d_rename=''
730 d_rint=''
731 d_rmdir=''
732 d_round=''
733 d_safebcpy=''
734 d_safemcpy=''
735 d_sanemcmp=''
736 d_sbrkproto=''
737 d_scalbn=''
738 d_scalbnl=''
739 d_select=''
740 d_sem=''
741 d_semctl=''
742 d_semget=''
743 d_semop=''
744 d_sendmsg=''
745 d_setegid=''
746 d_seteuid=''
747 d_setgrent=''
748 d_setgrent_r=''
749 setgrent_r_proto=''
750 d_setgrps=''
751 d_sethent=''
752 d_sethostent_r=''
753 sethostent_r_proto=''
754 d_setitimer=''
755 d_setlinebuf=''
756 d_setlocale=''
757 d_setlocale_r=''
758 setlocale_r_proto=''
759 d_setnent=''
760 d_setnetent_r=''
761 setnetent_r_proto=''
762 d_setpent=''
763 d_setpgid=''
764 d_setpgrp2=''
765 d_bsdsetpgrp=''
766 d_setpgrp=''
767 d_setprior=''
768 d_setproctitle=''
769 d_setprotoent_r=''
770 setprotoent_r_proto=''
771 d_setpwent=''
772 d_setpwent_r=''
773 setpwent_r_proto=''
774 d_setregid=''
775 d_setresgid=''
776 d_setresuid=''
777 d_setreuid=''
778 d_setrgid=''
779 d_setruid=''
780 d_setsent=''
781 d_setservent_r=''
782 setservent_r_proto=''
783 d_setsid=''
784 d_setvbuf=''
785 d_shm=''
786 d_shmat=''
787 d_shmatprototype=''
788 shmattype=''
789 d_shmctl=''
790 d_shmdt=''
791 d_shmget=''
792 d_sigaction=''
793 d_siginfo_si_addr=''
794 d_siginfo_si_band=''
795 d_siginfo_si_errno=''
796 d_siginfo_si_fd=''
797 d_siginfo_si_pid=''
798 d_siginfo_si_status=''
799 d_siginfo_si_uid=''
800 d_siginfo_si_value=''
801 d_signbit=''
802 d_sigprocmask=''
803 d_sigsetjmp=''
804 usesitecustomize=''
805 d_snprintf=''
806 d_vsnprintf=''
807 d_sockatmark=''
808 d_sockatmarkproto=''
809 d_ip_mreq=''
810 d_ip_mreq_source=''
811 d_ipv6_mreq=''
812 d_ipv6_mreq_source=''
813 d_msg_ctrunc=''
814 d_msg_dontroute=''
815 d_msg_oob=''
816 d_msg_peek=''
817 d_msg_proxy=''
818 d_oldsock=''
819 d_scm_rights=''
820 d_sin6_scope_id=''
821 d_sockaddr_in6=''
822 d_sockaddr_sa_len=''
823 d_socket=''
824 d_sockpair=''
825 sockethdr=''
826 socketlib=''
827 d_socklen_t=''
828 d_socks5_init=''
829 d_sprintf_returns_strlen=''
830 d_sqrtl=''
831 d_srand48_r=''
832 srand48_r_proto=''
833 d_srandom_r=''
834 srandom_r_proto=''
835 d_sresgproto=''
836 d_sresuproto=''
837 d_stat=''
838 d_statblks=''
839 d_statfs_f_flags=''
840 d_statfs_s=''
841 d_static_inline=''
842 perl_static_inline=''
843 d_fstatvfs=''
844 d_statvfs=''
845 d_stdio_cnt_lval=''
846 d_stdio_ptr_lval=''
847 d_stdio_ptr_lval_nochange_cnt=''
848 d_stdio_ptr_lval_sets_cnt=''
849 d_stdiobase=''
850 d_stdstdio=''
851 stdio_base=''
852 stdio_bufsiz=''
853 stdio_cnt=''
854 stdio_filbuf=''
855 stdio_ptr=''
856 d_index=''
857 d_strchr=''
858 d_strcoll=''
859 d_strctcpy=''
860 d_strerrm=''
861 d_strerror=''
862 d_sysernlst=''
863 d_syserrlst=''
864 d_strerror_r=''
865 strerror_r_proto=''
866 d_strftime=''
867 d_strlcat=''
868 d_strlcpy=''
869 d_strtod=''
870 d_strtol=''
871 d_strtold=''
872 d_strtoll=''
873 d_strtoq=''
874 d_strtoul=''
875 d_strtoull=''
876 d_strtouq=''
877 d_strxfrm=''
878 d_symlink=''
879 d_syscall=''
880 d_syscallproto=''
881 d_sysconf=''
882 d_system=''
883 d_tcgetpgrp=''
884 d_tcsetpgrp=''
885 d_telldirproto=''
886 d_tgamma=''
887 d_time=''
888 timetype=''
889 d_asctime64=''
890 d_ctime64=''
891 d_difftime64=''
892 d_gmtime64=''
893 d_localtime64=''
894 d_mktime64=''
895 d_timegm=''
896 clocktype=''
897 d_times=''
898 d_tmpnam_r=''
899 tmpnam_r_proto=''
900 d_trunc=''
901 d_truncate=''
902 d_truncl=''
903 d_ttyname_r=''
904 ttyname_r_proto=''
905 d_tzname=''
906 d_u32align=''
907 d_ualarm=''
908 d_umask=''
909 d_semctl_semid_ds=''
910 d_semctl_semun=''
911 d_union_semun=''
912 d_unordered=''
913 d_unsetenv=''
914 d_usleep=''
915 d_usleepproto=''
916 d_ustat=''
917 d_pseudofork=''
918 d_vfork=''
919 usevfork=''
920 d_voidsig=''
921 signal_t=''
922 d_volatile=''
923 d_charvspr=''
924 d_vprintf=''
925 d_wait4=''
926 d_waitpid=''
927 d_wcscmp=''
928 d_wcstombs=''
929 d_wcsxfrm=''
930 d_wctomb=''
931 d_writev=''
932 dlext=''
933 bin_ELF=''
934 cccdlflags=''
935 ccdlflags=''
936 dlsrc=''
937 ld=''
938 ld_can_script=''
939 lddlflags=''
940 usedl=''
941 doublesize=''
942 dtraceobject=''
943 ebcdic=''
944 fflushNULL=''
945 fflushall=''
946 fpossize=''
947 fpostype=''
948 gccansipedantic=''
949 gccosandvers=''
950 gccversion=''
951 gidformat=''
952 gidsign=''
953 gidsize=''
954 gidtype=''
955 groupstype=''
956 h_fcntl=''
957 h_sysfile=''
958 html1dir=''
959 html1direxp=''
960 installhtml1dir=''
961 html3dir=''
962 html3direxp=''
963 installhtml3dir=''
964 i_arpainet=''
965 i_assert=''
966 i_bfd=''
967 i_crypt=''
968 db_hashtype=''
969 db_prefixtype=''
970 db_version_major=''
971 db_version_minor=''
972 db_version_patch=''
973 i_db=''
974 i_dbm=''
975 i_rpcsvcdbm=''
976 d_dirnamlen=''
977 direntrytype=''
978 i_dirent=''
979 i_dlfcn=''
980 i_execinfo=''
981 i_fcntl=''
982 i_fenv=''
983 i_float=''
984 i_fp=''
985 i_fp_class=''
986 i_gdbm=''
987 d_grpasswd=''
988 i_grp=''
989 i_ieeefp=''
990 i_inttypes=''
991 i_langinfo=''
992 i_libutil=''
993 i_limits=''
994 i_locale=''
995 i_machcthr=''
996 i_malloc=''
997 i_mallocmalloc=''
998 i_math=''
999 i_memory=''
1000 i_mntent=''
1001 d_gdbm_ndbm_h_uses_prototypes=''
1002 d_gdbmndbm_h_uses_prototypes=''
1003 d_ndbm=''
1004 d_ndbm_h_uses_prototypes=''
1005 i_gdbm_ndbm=''
1006 i_gdbmndbm=''
1007 i_ndbm=''
1008 i_netdb=''
1009 i_neterrno=''
1010 i_netinettcp=''
1011 i_niin=''
1012 i_sysin=''
1013 i_poll=''
1014 i_prot=''
1015 i_pthread=''
1016 d_pwage=''
1017 d_pwchange=''
1018 d_pwclass=''
1019 d_pwcomment=''
1020 d_pwexpire=''
1021 d_pwgecos=''
1022 d_pwpasswd=''
1023 d_pwquota=''
1024 i_pwd=''
1025 i_quadmath=''
1026 i_shadow=''
1027 i_socks=''
1028 i_stdbool=''
1029 i_stddef=''
1030 i_stdint=''
1031 i_stdlib=''
1032 i_string=''
1033 strings=''
1034 i_sunmath=''
1035 i_sysaccess=''
1036 i_sysdir=''
1037 i_sysfile=''
1038 d_voidtty=''
1039 i_bsdioctl=''
1040 i_sysfilio=''
1041 i_sysioctl=''
1042 i_syssockio=''
1043 i_syslog=''
1044 i_sysmman=''
1045 i_sysmode=''
1046 i_sysmount=''
1047 i_sysndir=''
1048 i_sysparam=''
1049 i_syspoll=''
1050 i_sysresrc=''
1051 i_syssecrt=''
1052 i_sysselct=''
1053 i_sysstat=''
1054 i_sysstatfs=''
1055 i_sysstatvfs=''
1056 i_systimes=''
1057 i_systypes=''
1058 i_sysuio=''
1059 i_sysun=''
1060 i_sysutsname=''
1061 i_sysvfs=''
1062 i_syswait=''
1063 i_sgtty=''
1064 i_termio=''
1065 i_termios=''
1066 d_tm_tm_gmtoff=''
1067 d_tm_tm_zone=''
1068 i_systime=''
1069 i_systimek=''
1070 i_time=''
1071 timeincl=''
1072 i_unistd=''
1073 i_ustat=''
1074 i_utime=''
1075 i_values=''
1076 i_stdarg=''
1077 i_varargs=''
1078 i_varhdr=''
1079 i_vfork=''
1080 d_inc_version_list=''
1081 inc_version_list=''
1082 inc_version_list_init=''
1083 doubleinfbytes=''
1084 doublenanbytes=''
1085 longdblinfbytes=''
1086 longdblnanbytes=''
1087 installprefix=''
1088 installprefixexp=''
1089 installstyle=''
1090 installusrbinperl=''
1091 intsize=''
1092 longsize=''
1093 shortsize=''
1094 issymlink=''
1095 libc=''
1096 ldlibpthname=''
1097 libperl=''
1098 shrpenv=''
1099 useshrplib=''
1100 glibpth=''
1101 incpth=''
1102 libpth=''
1103 loclibpth=''
1104 plibpth=''
1105 xlibpth=''
1106 ignore_versioned_solibs=''
1107 libs=''
1108 libsdirs=''
1109 libsfiles=''
1110 libsfound=''
1111 libspath=''
1112 lns=''
1113 d_PRIEUldbl=''
1114 d_PRIFUldbl=''
1115 d_PRIGUldbl=''
1116 d_PRIeldbl=''
1117 d_PRIfldbl=''
1118 d_PRIgldbl=''
1119 d_SCNfldbl=''
1120 doublekind=''
1121 sPRIEUldbl=''
1122 sPRIFUldbl=''
1123 sPRIGUldbl=''
1124 sPRIeldbl=''
1125 sPRIfldbl=''
1126 sPRIgldbl=''
1127 sSCNfldbl=''
1128 lseeksize=''
1129 lseektype=''
1130 make_set_make=''
1131 d_mymalloc=''
1132 freetype=''
1133 mallocobj=''
1134 mallocsrc=''
1135 malloctype=''
1136 usemallocwrap=''
1137 usemymalloc=''
1138 installman1dir=''
1139 man1dir=''
1140 man1direxp=''
1141 man1ext=''
1142 installman3dir=''
1143 man3dir=''
1144 man3direxp=''
1145 man3ext=''
1146 doublemantbits=''
1147 longdblmantbits=''
1148 nvmantbits=''
1149 modetype=''
1150 multiarch=''
1151 mydomain=''
1152 myhostname=''
1153 phostname=''
1154 c=''
1155 n=''
1156 d_eofnblk=''
1157 eagain=''
1158 o_nonblock=''
1159 rd_nodata=''
1160 need_va_copy=''
1161 netdb_hlen_type=''
1162 netdb_host_type=''
1163 netdb_name_type=''
1164 netdb_net_type=''
1165 groupcat=''
1166 hostcat=''
1167 passcat=''
1168 orderlib=''
1169 ranlib=''
1170 d_perl_otherlibdirs=''
1171 otherlibdirs=''
1172 package=''
1173 spackage=''
1174 pager=''
1175 api_revision=''
1176 api_subversion=''
1177 api_version=''
1178 api_versionstring=''
1179 patchlevel=''
1180 perl_patchlevel=''
1181 revision=''
1182 subversion=''
1183 version=''
1184 version_patchlevel_string=''
1185 perl5=''
1186 perladmin=''
1187 perlpath=''
1188 d_nv_preserves_uv=''
1189 d_nv_zero_is_allbits_zero=''
1190 i16size=''
1191 i16type=''
1192 i32size=''
1193 i32type=''
1194 i64size=''
1195 i64type=''
1196 i8size=''
1197 i8type=''
1198 ivsize=''
1199 ivtype=''
1200 nv_overflows_integers_at=''
1201 nv_preserves_uv_bits=''
1202 nvsize=''
1203 nvtype=''
1204 u16size=''
1205 u16type=''
1206 u32size=''
1207 u32type=''
1208 u64size=''
1209 u64type=''
1210 u8size=''
1211 u8type=''
1212 uvsize=''
1213 uvtype=''
1214 ivdformat=''
1215 nvEUformat=''
1216 nvFUformat=''
1217 nvGUformat=''
1218 nveformat=''
1219 nvfformat=''
1220 nvgformat=''
1221 uvXUformat=''
1222 uvoformat=''
1223 uvuformat=''
1224 uvxformat=''
1225 pidtype=''
1226 prefix=''
1227 prefixexp=''
1228 installprivlib=''
1229 privlib=''
1230 privlibexp=''
1231 prototype=''
1232 ptrsize=''
1233 d_PRIXU64=''
1234 d_PRId64=''
1235 d_PRIi64=''
1236 d_PRIo64=''
1237 d_PRIu64=''
1238 d_PRIx64=''
1239 sPRIXU64=''
1240 sPRId64=''
1241 sPRIi64=''
1242 sPRIo64=''
1243 sPRIu64=''
1244 sPRIx64=''
1245 d_quad=''
1246 quadkind=''
1247 quadtype=''
1248 uquadtype=''
1249 drand01=''
1250 randbits=''
1251 randfunc=''
1252 randseedtype=''
1253 seedfunc=''
1254 installscript=''
1255 scriptdir=''
1256 scriptdirexp=''
1257 selectminbits=''
1258 selecttype=''
1259 sh=''
1260 targetsh=''
1261 sig_count=''
1262 sig_name=''
1263 sig_name_init=''
1264 sig_num=''
1265 sig_num_init=''
1266 sig_size=''
1267 d_sitearch=''
1268 installsitearch=''
1269 sitearch=''
1270 sitearchexp=''
1271 installsitebin=''
1272 sitebin=''
1273 sitebinexp=''
1274 installsitehtml1dir=''
1275 sitehtml1dir=''
1276 sitehtml1direxp=''
1277 installsitehtml3dir=''
1278 sitehtml3dir=''
1279 sitehtml3direxp=''
1280 installsitelib=''
1281 sitelib=''
1282 sitelib_stem=''
1283 sitelibexp=''
1284 installsiteman1dir=''
1285 siteman1dir=''
1286 siteman1direxp=''
1287 installsiteman3dir=''
1288 siteman3dir=''
1289 siteman3direxp=''
1290 siteprefix=''
1291 siteprefixexp=''
1292 installsitescript=''
1293 sitescript=''
1294 sitescriptexp=''
1295 sizesize=''
1296 sizetype=''
1297 d_libname_unique=''
1298 so=''
1299 socksizetype=''
1300 sharpbang=''
1301 shsharp=''
1302 spitshell=''
1303 src=''
1304 ssizetype=''
1305 st_ino_sign=''
1306 st_ino_size=''
1307 startperl=''
1308 startsh=''
1309 stdchar=''
1310 d_stdio_stream_array=''
1311 stdio_stream_array=''
1312 sysman=''
1313 sGMTIME_max=''
1314 sGMTIME_min=''
1315 sLOCALTIME_max=''
1316 sLOCALTIME_min=''
1317 trnl=''
1318 uidformat=''
1319 uidsign=''
1320 uidsize=''
1321 uidtype=''
1322 archname64=''
1323 use64bitall=''
1324 use64bitint=''
1325 usecbacktrace=''
1326 dtrace=''
1327 usedtrace=''
1328 usefaststdio=''
1329 usekernprocpathname=''
1330 ccflags_uselargefiles=''
1331 ldflags_uselargefiles=''
1332 libswanted_uselargefiles=''
1333 uselargefiles=''
1334 uselongdouble=''
1335 usemorebits=''
1336 usemultiplicity=''
1337 nm_opt=''
1338 nm_so_opt=''
1339 runnm=''
1340 usenm=''
1341 usensgetexecutablepath=''
1342 useperlio=''
1343 usequadmath=''
1344 usesocks=''
1345 d_oldpthreads=''
1346 use5005threads=''
1347 useithreads=''
1348 usereentrant=''
1349 usethreads=''
1350 incpath=''
1351 mips_type=''
1352 usrinc=''
1353 vaproto=''
1354 d_vendorarch=''
1355 installvendorarch=''
1356 vendorarch=''
1357 vendorarchexp=''
1358 d_vendorbin=''
1359 installvendorbin=''
1360 vendorbin=''
1361 vendorbinexp=''
1362 installvendorhtml1dir=''
1363 vendorhtml1dir=''
1364 vendorhtml1direxp=''
1365 installvendorhtml3dir=''
1366 vendorhtml3dir=''
1367 vendorhtml3direxp=''
1368 d_vendorlib=''
1369 installvendorlib=''
1370 vendorlib=''
1371 vendorlib_stem=''
1372 vendorlibexp=''
1373 installvendorman1dir=''
1374 vendorman1dir=''
1375 vendorman1direxp=''
1376 installvendorman3dir=''
1377 vendorman3dir=''
1378 vendorman3direxp=''
1379 usevendorprefix=''
1380 vendorprefix=''
1381 vendorprefixexp=''
1382 d_vendorscript=''
1383 installvendorscript=''
1384 vendorscript=''
1385 vendorscriptexp=''
1386 versiononly=''
1387 yacc=''
1388 yaccflags=''
1389 CONFIG=''
1390
1391 : Detect odd OSs
1392 define='define'
1393 undef='undef'
1394 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1395 rmlist=''
1396
1397 : We must find out about Eunice early
1398 eunicefix=':'
1399 if test -f /etc/unixtovms; then
1400         eunicefix=/etc/unixtovms
1401 fi
1402 if test -f /etc/unixtovms.exe; then
1403         eunicefix=/etc/unixtovms.exe
1404 fi
1405
1406 : Set executable suffix now -- needed before hints available
1407 if test -f "/libs/version.library"; then
1408 : Amiga OS
1409     _exe=""
1410 elif test -f "/system/gnu_library/bin/ar.pm"; then
1411 : Stratus VOS
1412     _exe=".pm"
1413 elif test -n "$DJGPP"; then
1414 : DOS DJGPP
1415     _exe=".exe"
1416 elif test -f /kern/cookiejar; then
1417 : MiNT
1418     _exe=""
1419 elif test -d c:/. -o -n "$is_os2" ; then
1420 : OS/2 or cygwin
1421     _exe=".exe"
1422 fi
1423
1424 groupstype=''
1425 i_whoami=''
1426 : Possible local include directories to search.
1427 : Set locincpth to "" in a hint file to defeat local include searches.
1428 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1429 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1430 :
1431 : no include file wanted by default
1432 inclwanted=''
1433
1434 : Enable -DEBUGGING and -DDEBUGGING from the command line
1435 EBUGGING=''
1436 DEBUGGING=''
1437
1438 : Trailing extension.  Override this in a hint file, if needed.
1439 : Extra object files, if any, needed on this platform.
1440 archobjs=''
1441 libnames=''
1442 : change the next line if compiling for Xenix/286 on Xenix/386
1443 xlibpth='/usr/lib/386 /lib/386'
1444 : Possible local library directories to search.
1445 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1446 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1447
1448 : general looking path for locating libraries
1449 glibpth="/lib /usr/lib $xlibpth"
1450 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1451 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1452 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1453 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1454
1455 : Private path used by Configure to find libraries.  Its value
1456 : is prepended to libpth. This variable takes care of special
1457 : machines, like the mips.  Usually, it should be empty.
1458 plibpth=''
1459
1460 : default library list
1461 libswanted=''
1462 : some systems want to use only the non-versioned libso:s
1463 ignore_versioned_solibs=''
1464 ccname=''
1465 ccversion=''
1466 perllibs=''
1467 : set useposix=false in your hint file to disable the POSIX extension.
1468 useposix=true
1469 : set useopcode=false in your hint file to disable the Opcode extension.
1470 useopcode=true
1471 archname64=''
1472 ccflags_uselargefiles=''
1473 ldflags_uselargefiles=''
1474 libswanted_uselargefiles=''
1475 : set usemultiplicity on the Configure command line to enable multiplicity.
1476 : set usesocks on the Configure command line to enable socks.
1477 archname=''
1478 : set usethreads on the Configure command line to enable threads.
1479 usereentrant='undef'
1480 : List of libraries we want.
1481 : If anyone needs extra -lxxx, put those in a hint file.
1482 libswanted="cl pthread socket bind inet nsl ndbm gdbm dbm db malloc dl ld"
1483 libswanted="$libswanted sun m crypt sec util c cposix posix ucb bsd BSD"
1484 : We probably want to search /usr/shlib before most other libraries.
1485 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1486 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1487 glibpth="/usr/shlib $glibpth"
1488 : Do not use vfork unless overridden by a hint file.
1489 usevfork=false
1490
1491 : Find the basic shell for Bourne shell scripts
1492 case "$sh" in
1493 '')
1494         case "$SYSTYPE" in
1495         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1496         *) xxx='/bin/sh';;
1497         esac
1498         if test -f "$xxx"; then
1499                 sh="$xxx"
1500         else
1501                 : Build up a list and do a single loop so we can 'break' out.
1502                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1503                 for xxx in sh bash ksh pdksh ash; do
1504                         for p in $pth; do
1505                                 try="$try ${p}/${xxx}"
1506                         done
1507                 done
1508                 for xxx in $try; do
1509                         if test -f "$xxx"; then
1510                                 sh="$xxx";
1511                                 break
1512                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1513                                 sh="$xxx";
1514                                 break
1515                         elif test -f "$xxx.exe"; then
1516                                 sh="$xxx";
1517                                 break
1518                         fi
1519                 done
1520         fi
1521         ;;
1522 esac
1523
1524 case "$sh" in
1525 '')     cat >&2 <<EOM
1526 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.
1527
1528 Usually it's in /bin/sh.  How did you even get this far?
1529 Please contact me (Perl Maintainers) at perlbug@perl.org and
1530 we'll try to straighten this all out.
1531 EOM
1532         exit 1
1533         ;;
1534 esac
1535
1536 : When cross-compiling we need to separate the sh-to-run-Configure-with from the sh-to-use-in-Perl
1537 : default both to the same thing, cross-compilers can then set targetsh differently if they like
1538 targetsh=$sh
1539
1540 : see if sh knows # comments
1541 if `$sh -c '#' >/dev/null 2>&1`; then
1542         shsharp=true
1543         spitshell=cat
1544         xcat=/bin/cat
1545         test -f $xcat$_exe || xcat=/usr/bin/cat
1546         if test ! -f $xcat$_exe; then
1547                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1548                         if test -f $p/cat$_exe; then
1549                                 xcat=$p/cat
1550                                 break
1551                         fi
1552                 done
1553                 if test ! -f $xcat$_exe; then
1554                         echo "Can't find cat anywhere!"
1555                         exit 1
1556                 fi
1557         fi
1558         echo "#!$xcat" >sharp
1559         $eunicefix sharp
1560         chmod +x sharp
1561         ./sharp > today 2>/dev/null
1562         if test -s today; then
1563                 sharpbang='#!'
1564         else
1565                 echo "#! $xcat" > sharp
1566                 $eunicefix sharp
1567                 chmod +x sharp
1568                 ./sharp > today 2>/dev/null
1569                 if test -s today; then
1570                         sharpbang='#! '
1571                 else
1572                         sharpbang=': use '
1573                 fi
1574         fi
1575 else
1576         echo " "
1577         echo "Your $sh doesn't grok # comments--I will strip them later on."
1578         shsharp=false
1579         cd ..
1580         echo "exec grep -v '^[  ]*#'" >spitshell
1581         chmod +x spitshell
1582         $eunicefix spitshell
1583         spitshell=`pwd`/spitshell
1584         cd UU
1585         echo "I presume that if # doesn't work, #! won't work either!"
1586         sharpbang=': use '
1587 fi
1588 rm -f sharp today
1589
1590 : figure out how to guarantee sh startup
1591 case "$startsh" in
1592 '') startsh=${sharpbang}${sh} ;;
1593 *)
1594 esac
1595 cat >sharp <<EOSS
1596 $startsh
1597 set abc
1598 test "$?abc" != 1
1599 EOSS
1600
1601 chmod +x sharp
1602 $eunicefix sharp
1603 if ./sharp; then
1604         : echo "Yup, it does."
1605 else
1606         echo "Hmm... '$startsh' does not guarantee sh startup..."
1607         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1608 fi
1609 rm -f sharp
1610
1611 : Save command line options in file UU/cmdline.opt for later use in
1612 : generating config.sh.
1613 cat > cmdline.opt <<EOSH
1614 : Configure command line arguments.
1615 config_arg0='$0'
1616 config_args='$*'
1617 config_argc=$#
1618 EOSH
1619 argn=1
1620 args_exp=''
1621 args_sep=''
1622 for arg in "$@"; do
1623         cat >>cmdline.opt <<EOSH
1624 config_arg$argn='$arg'
1625 EOSH
1626         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1627 $arg
1628 EOC
1629         arg_exp=`cat cmdl.opt`
1630         args_exp="$args_exp$args_sep'$arg_exp'"
1631         argn=`expr $argn + 1`
1632         args_sep=' '
1633 done
1634 rm -f cmdl.opt
1635
1636 : produce awk script to parse command line options
1637 cat >options.awk <<'EOF'
1638 BEGIN {
1639         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1640
1641         len = length(optstr);
1642         for (i = 1; i <= len; i++) {
1643                 c = substr(optstr, i, 1);
1644                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1645                 if (a == ":") {
1646                         arg[c] = 1;
1647                         i++;
1648                 }
1649                 opt[c] = 1;
1650         }
1651 }
1652 {
1653         expect = 0;
1654         str = $0;
1655         if (substr(str, 1, 1) != "-") {
1656                 printf("'%s'\n", str);
1657                 next;
1658         }
1659         len = length($0);
1660         for (i = 2; i <= len; i++) {
1661                 c = substr(str, i, 1);
1662                 if (!opt[c]) {
1663                         printf("-%s\n", substr(str, i));
1664                         next;
1665                 }
1666                 printf("-%s\n", c);
1667                 if (arg[c]) {
1668                         if (i < len)
1669                                 printf("'%s'\n", substr(str, i + 1));
1670                         else
1671                                 expect = 1;
1672                         next;
1673                 }
1674         }
1675 }
1676 END {
1677         if (expect)
1678                 print "?";
1679 }
1680 EOF
1681
1682 : process the command line options
1683 set X `for arg in "$@"; do echo "X$arg"; done |
1684         sed -e s/X// | awk -f options.awk`
1685 eval "set $*"
1686 shift
1687 rm -f options.awk
1688
1689 : set up default values
1690 fastread=''
1691 reuseval=false
1692 config_sh=''
1693 alldone=''
1694 error=''
1695 silent=''
1696 extractsh=''
1697 knowitall=''
1698 rm -f optdef.sh posthint.sh
1699 cat >optdef.sh <<EOS
1700 $startsh
1701 EOS
1702
1703
1704 : option parsing
1705 while test $# -gt 0; do
1706         case "$1" in
1707         -d) shift; fastread=yes;;
1708         -e) shift; alldone=cont;;
1709         -f)
1710                 shift
1711                 cd ..
1712                 if test -r "$1"; then
1713                         config_sh="$1"
1714                 else
1715                         echo "$me: cannot read config file $1." >&2
1716                         error=true
1717                 fi
1718                 cd UU
1719                 shift;;
1720         --help|\
1721         -h) shift; error=true;;
1722         -r) shift; reuseval=true;;
1723         -s) shift; silent=true; realsilent=true;;
1724         -E) shift; alldone=exit;;
1725         -K) shift; knowitall=true;;
1726         -O) shift;;
1727         -S) shift; silent=true; extractsh=true;;
1728         -D)
1729                 shift
1730                 case "$1" in
1731                 *=)
1732                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1733                         echo "$me: ignoring -D $1" >&2
1734                         ;;
1735                 *=*) echo "$1" | \
1736                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1737                 *) echo "$1='define'" >> optdef.sh;;
1738                 esac
1739                 shift
1740                 ;;
1741         -U)
1742                 shift
1743                 case "$1" in
1744                 *=) echo "$1" >> optdef.sh;;
1745                 *=*)
1746                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1747                         echo "$me: ignoring -U $1" >&2
1748                         ;;
1749                 *) echo "$1='undef'" >> optdef.sh;;
1750                 esac
1751                 shift
1752                 ;;
1753         -A)
1754             shift
1755             xxx=''
1756             yyy="$1"
1757             zzz=''
1758             uuu=undef
1759             case "$yyy" in
1760             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1761                  case "$zzz" in
1762                  *:*) zzz='' ;;
1763                  *)   xxx=append
1764                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1765                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1766                  esac
1767                  ;;
1768             esac
1769             case "$xxx" in
1770             '')  case "$yyy" in
1771                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1772                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1773                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1774                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1775                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1776                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1777                  esac
1778                  ;;
1779             esac
1780             case "$xxx" in
1781             append)
1782                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1783             clear)
1784                 echo "$yyy=''"                  >> posthint.sh ;;
1785             define)
1786                 case "$zzz" in
1787                 '') zzz=define ;;
1788                 esac
1789                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1790             eval)
1791                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1792             prepend)
1793                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1794             undef)
1795                 case "$zzz" in
1796                 '') zzz="$uuu" ;;
1797                 esac
1798                 echo "$yyy=$zzz"                >> posthint.sh ;;
1799             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1800             esac
1801             shift
1802             ;;
1803         -V) echo "$me generated by metaconfig 3.5 PL0." >&2
1804             exit 0;;
1805         --) break;;
1806         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1807         *) break;;
1808         esac
1809 done
1810
1811 case "$error" in
1812 true)
1813         cat >&2 <<EOM
1814 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1815                  [-U symbol] [-U symbol=] [-A command:symbol...]
1816   -d : use defaults for all answers.
1817   -e : go on without questioning past the production of config.sh.
1818   -f : specify an alternate default configuration file.
1819   -h : print this help message and exit (with an error status).
1820   -r : reuse C symbols value if possible (skips costly nm extraction).
1821   -s : silent mode, only echoes questions and essential information.
1822   -D : define symbol to have some value:
1823          -D symbol         symbol gets the value 'define'
1824          -D symbol=value   symbol gets the value 'value'
1825        common used examples (see INSTALL for more info):
1826          -Duse64bitint            use 64bit integers
1827          -Duse64bitall            use 64bit integers and pointers
1828          -Dusethreads             use thread support
1829          -Dinc_version_list=none  do not include older perl trees in @INC
1830          -DEBUGGING=none          DEBUGGING options
1831          -Dcc=gcc                 choose your compiler
1832          -Dprefix=/opt/perl5      choose your destination
1833   -E : stop at the end of questions, after having produced config.sh.
1834   -K : do not use unless you know what you are doing.
1835   -O : ignored for backward compatibility
1836   -S : perform variable substitutions on all .SH files (can mix with -f)
1837   -U : undefine symbol:
1838          -U symbol    symbol gets the value 'undef'
1839          -U symbol=   symbol gets completely empty
1840        e.g.:  -Uversiononly
1841   -A : manipulate symbol after the platform specific hints have been applied:
1842          -A append:symbol=value   append value to symbol
1843          -A symbol=value          like append:, but with a separating space
1844          -A define:symbol=value   define symbol to have value
1845          -A clear:symbol          define symbol to be ''
1846          -A define:symbol         define symbol to be 'define'
1847          -A eval:symbol=value     define symbol to be eval of value
1848          -A prepend:symbol=value  prepend value to symbol
1849          -A undef:symbol          define symbol to be 'undef'
1850          -A undef:symbol=         define symbol to be ''
1851        e.g.:  -A prepend:libswanted='cl pthread '
1852               -A ccflags=-DSOME_MACRO
1853   -V : print version number and exit (with a zero status).
1854 EOM
1855         exit 1
1856         ;;
1857 esac
1858
1859 : Sanity checks
1860 case "$fastread$alldone" in
1861 yescont|yesexit) ;;
1862 *)
1863         case "$extractsh" in
1864         true) ;;
1865         *)
1866                 if test ! -t 0; then
1867                         echo "Say 'sh Configure', not 'sh <Configure'"
1868                         exit 1
1869                 fi
1870                 ;;
1871         esac
1872         ;;
1873 esac
1874
1875 exec 4>&1
1876 case "$silent" in
1877 true) exec 1>/dev/null;;
1878 esac
1879
1880 : run the defines and the undefines, if any, but leave the file out there...
1881 touch optdef.sh
1882 grep '\\' optdef.sh >/dev/null 2>&1
1883 if test $? = 0; then
1884     echo "Configure does not support \\ in -D arguments"
1885     exit 1
1886 fi
1887 . ./optdef.sh
1888 : create the posthint manipulation script and leave the file out there...
1889 touch posthint.sh
1890
1891 : set package name
1892 package='perl5'
1893 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1894 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1895 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`"-"`echo AbyZ | tr '[:upper:]' '[:lower:]' 2>/dev/null`" in
1896 ABYZ-abyz) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1897 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1898 esac
1899
1900 : Some greps do not return status, grrr.
1901 echo "grimblepritz" >grimble
1902 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1903         contains=contains
1904 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1905         contains=grep
1906 else
1907         contains=contains
1908 fi
1909 rm -f grimble
1910 : the following should work in any shell
1911 case "$contains" in
1912 contains*)
1913         echo " "
1914         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1915         cat >contains <<'EOSS'
1916 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1917 EOSS
1918 chmod +x contains
1919 esac
1920
1921 : Find the path to the source tree
1922 case "$src" in
1923 '') case "$0" in
1924     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1925          case "$src" in
1926          /*)    ;;
1927          .)     ;;
1928          *)     src=`cd ../$src && pwd` ;;
1929          esac
1930          ;;
1931     *)   src='.';;
1932     esac;;
1933 esac
1934 case "$src" in
1935 '')     src=/
1936         rsrc=/
1937         ;;
1938 /*)     rsrc="$src";;
1939 *)      rsrc="../$src";;
1940 esac
1941 if test -f $rsrc/Configure && \
1942         $contains "^package='$package'\$" $rsrc/Configure >/dev/null 2>&1
1943 then
1944    : found it, so we are ok.
1945 else
1946         rsrc=''
1947         for src in . .. ../.. ../../.. ../../../..; do
1948                 if test -f ../$src/Configure && \
1949                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1950                 then
1951                         rsrc=../$src
1952                         break
1953                 fi
1954         done
1955 fi
1956 case "$rsrc" in
1957 '')
1958         cat <<EOM >&4
1959
1960 Sorry, I can't seem to locate the source dir for $package.  Please start
1961 Configure with an explicit path -- i.e. /some/path/Configure.
1962
1963 EOM
1964         exit 1
1965         ;;
1966 ../.)   rsrc='..';;
1967 *)
1968         echo " "
1969         echo "Sources for $package found in \"$src\"." >&4
1970         ;;
1971 esac
1972
1973 : script used to extract .SH files with variable substitutions
1974 cat >extract <<'EOS'
1975 PERL_CONFIG_SH=true
1976 echo "Doing variable substitutions on .SH files..."
1977 if test -f MANIFEST; then
1978         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1979 else
1980         echo "(Looking for .SH files under the source directory.)"
1981         set x `(cd "$src"; find . -name "*.SH" -print)`
1982 fi
1983 shift
1984 case $# in
1985 0) set x `(cd "$src"; echo *.SH)`; shift;;
1986 esac
1987 if test ! -f "$src/$1"; then
1988         shift
1989 fi
1990 mkdir_p='
1991 name=$1;
1992 create="";
1993 while test $name; do
1994         if test ! -d "$name"; then
1995                 create="$name $create";
1996                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1997                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1998         else
1999                 name="";
2000         fi;
2001 done;
2002 for file in $create; do
2003         mkdir $file;
2004 done
2005 '
2006 for file in $*; do
2007         case "$src" in
2008         ".")
2009                 case "$file" in
2010                 */*)
2011                         dir=`expr X$file : 'X\(.*\)/'`
2012                         file=`expr X$file : 'X.*/\(.*\)'`
2013                         (cd "$dir" && . ./$file)
2014                         ;;
2015                 *)
2016                         . ./$file
2017                         ;;
2018                 esac
2019                 ;;
2020         *)
2021                 case "$file" in
2022                 */*)
2023                         dir=`expr X$file : 'X\(.*\)/'`
2024                         file=`expr X$file : 'X.*/\(.*\)'`
2025                         (set x $dir; shift; eval $mkdir_p)
2026                         sh <"$src/$dir/$file"
2027                         ;;
2028                 *)
2029                         sh <"$src/$file"
2030                         ;;
2031                 esac
2032                 ;;
2033         esac
2034 done
2035 if test -f "$src/config_h.SH"; then
2036         if test ! -f config.h; then
2037         : oops, they left it out of MANIFEST, probably, so do it anyway.
2038         . "$src/config_h.SH"
2039         fi
2040 fi
2041 EOS
2042
2043 : extract files and exit if asked to do so
2044 case "$extractsh" in
2045 true)
2046         case "$realsilent" in
2047         true) ;;
2048         *) exec 1>&4;;
2049         esac
2050         case "$config_sh" in
2051         '') config_sh='config.sh';;
2052         esac
2053         echo " "
2054         echo "Fetching answers from $config_sh..."
2055         cd ..
2056         . $config_sh
2057         . UU/optdef.sh
2058         echo " "
2059         . UU/extract
2060         rm -rf UU
2061         echo "Extraction done."
2062         exit 0
2063         ;;
2064 esac
2065
2066 : Eunice requires " " instead of "", can you believe it
2067 echo " "
2068 : Here we go...
2069 echo "Beginning of configuration questions for $package."
2070
2071 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
2072
2073 : first determine how to suppress newline on echo command
2074 echo " "
2075 echo "Checking echo to see how to suppress newlines..."
2076 (echo "hi there\c" ; echo " ") >.echotmp
2077 if $contains c .echotmp >/dev/null 2>&1 ; then
2078         echo "...using -n."
2079         n='-n'
2080         c=''
2081 else
2082         cat <<'EOM'
2083 ...using \c
2084 EOM
2085         n=''
2086         c='\c'
2087 fi
2088 echo $n "The star should be here-->$c"
2089 echo '*'
2090 rm -f .echotmp
2091
2092 : Now test for existence of everything in MANIFEST
2093 echo " "
2094 if test -f "$rsrc/MANIFEST"; then
2095         echo "First let's make sure your kit is complete.  Checking..." >&4
2096         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | \
2097                 (split -l 50 2>/dev/null || split -50)
2098         rm -f missing
2099         tmppwd=`pwd`
2100         for filelist in x??; do
2101                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` \
2102                         >/dev/null 2>>"$tmppwd/missing")
2103         done
2104         if test -s missing; then
2105                 cat missing >&4
2106                 cat >&4 <<'EOM'
2107
2108 THIS PACKAGE SEEMS TO BE INCOMPLETE.
2109
2110 You have the option of continuing the configuration process, despite the
2111 distinct possibility that your kit is damaged, by typing 'y'es.  If you
2112 do, don't blame me if something goes wrong.  I advise you to type 'n'o
2113 and contact the author (perlbug@perl.org).
2114
2115 EOM
2116                 echo $n "Continue? [n] $c" >&4
2117                 read ans
2118                 case "$ans" in
2119                 y*)
2120                         echo "Continuing..." >&4
2121                         rm -f missing
2122                         ;;
2123                 *)
2124                         echo "ABORTING..." >&4
2125                         kill $$
2126                         ;;
2127                 esac
2128         else
2129                 echo "Looks good..."
2130         fi
2131 else
2132         echo "There is no MANIFEST file.  I hope your kit is complete !"
2133 fi
2134 rm -f missing x??
2135
2136 : Find the appropriate value for a newline for tr
2137 if test -n "$DJGPP"; then
2138        trnl='\012'
2139 fi
2140 if test X"$trnl" = X; then
2141         case "`echo foo | tr '\n' x 2>/dev/null`" in
2142         foox) trnl='\n' ;;
2143         esac
2144 fi
2145 if test X"$trnl" = X; then
2146         case "`echo foo | tr '\012' x 2>/dev/null`" in
2147         foox) trnl='\012' ;;
2148         esac
2149 fi
2150 if test X"$trnl" = X; then
2151        case "`echo foo | tr '\r\n' xy 2>/dev/null`" in
2152        fooxy) trnl='\n\r' ;;
2153        esac
2154 fi
2155 if test X"$trnl" = X; then
2156         cat <<EOM >&2
2157
2158 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
2159
2160 EOM
2161         exit 1
2162 fi
2163
2164 : compute the number of columns on the terminal for proper question formatting
2165 case "$COLUMNS" in
2166 '') COLUMNS='80';;
2167 esac
2168
2169 : set up the echo used in my read
2170 myecho="case \"\$xxxm\" in
2171 '') echo $n \"\$rp $c\" >&4;;
2172 *) case \"\$rp\" in
2173         '') echo $n \"[\$xxxm] $c\";;
2174         *)
2175                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2176                         echo \"\$rp\" >&4
2177                         echo $n \"[\$xxxm] $c\" >&4
2178                 else
2179                         echo $n \"\$rp [\$xxxm] $c\" >&4
2180                 fi
2181                 ;;
2182         esac;;
2183 esac"
2184
2185 : now set up to do reads with possible shell escape and default assignment
2186 cat <<EOSC >myread
2187 $startsh
2188 xxxm=\$dflt
2189 $myecho
2190 ans='!'
2191 case "\$fastread" in
2192 yes) case "\$dflt" in
2193         '') ;;
2194         *) ans='';
2195                 case "\$silent-\$rp" in
2196                 true-) ;;
2197                 *) echo " " >&4;;
2198                 esac;;
2199         esac;;
2200 *) case "\$silent" in
2201         true) case "\$rp" in
2202                 '') ans='';;
2203                 esac;;
2204         esac;;
2205 esac
2206 while expr "X\$ans" : "X!" >/dev/null; do
2207         read answ
2208         set x \$xxxm
2209         shift
2210         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2211         case  "\$answ" in
2212         "!")
2213                 sh 1>&4
2214                 echo " "
2215                 $myecho
2216                 ;;
2217         !*)
2218                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2219                 shift
2220                 sh 1>&4 -c "\$*"
2221                 echo " "
2222                 $myecho
2223                 ;;
2224         "\$ans")
2225                 case "\$ans" in
2226                 \\&*)
2227                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2228                         shift
2229                         case "\$1" in
2230                         -d)
2231                                 fastread=yes
2232                                 echo "(OK, I'll run with -d after this question.)" >&4
2233                                 ;;
2234                         -*)
2235                                 echo "*** Sorry, \$1 not supported yet." >&4
2236                                 ;;
2237                         esac
2238                         $myecho
2239                         ans=!
2240                         ;;
2241                 esac;;
2242         *)
2243                 case "\$aok" in
2244                 y)
2245                         echo "*** Substitution done -- please confirm."
2246                         xxxm="\$ans"
2247                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2248                         xxxm="\$ans"
2249                         ans=!
2250                         ;;
2251                 *)
2252                         echo "*** Error -- try again."
2253                         ans=!
2254                         ;;
2255                 esac
2256                 $myecho
2257                 ;;
2258         esac
2259         case "\$ans\$xxxm\$nostick" in
2260         '')
2261                 ans=!
2262                 $myecho
2263                 ;;
2264         esac
2265 done
2266 case "\$ans" in
2267 '') ans="\$xxxm";;
2268 esac
2269 EOSC
2270
2271 : create .config dir to save info across Configure sessions
2272 test -d ../.config || mkdir ../.config
2273 cat >../.config/README <<EOF
2274 This directory created by Configure to save information that should
2275 persist across sessions for $package.
2276
2277 You may safely delete it if you wish.
2278 EOF
2279
2280 : See if we are using a devel version and want that
2281 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2282 case "$usedevel" in
2283 $define|true|[yY]*)
2284     usedevel="$define" ;;
2285 *) case "$xversion" in
2286    *[13579])
2287         cat >&4 <<EOH
2288 *** WHOA THERE!!! ***
2289
2290     This is an UNSTABLE DEVELOPMENT release.
2291     The version of this $package distribution is $xversion, that is, odd,
2292     (as opposed to even) and that signifies a development release.
2293     If you want a maintenance release, you want an even-numbered version.
2294
2295     Do ***NOT*** install this into production use.
2296     Data corruption and crashes are possible.
2297
2298     It is most seriously suggested that you do not continue any further
2299     unless you want to help in developing and debugging Perl.
2300
2301     If you *still* want to build perl, you can answer 'y' now,
2302     or pass -Dusedevel to Configure.
2303
2304 EOH
2305         rp='Do you really want to continue?'
2306         dflt='n'
2307         . ./myread
2308         case "$ans" in
2309         [yY]) echo >&4 "Okay, continuing."
2310               usedevel="$define" ;;
2311         *) echo >&4 "Okay, bye."
2312            exit 1
2313            ;;
2314         esac
2315         ;;
2316     esac
2317     usedevel="$undef"
2318     ;;
2319 esac
2320 case "$usedevel" in
2321 $define|true|[yY]*)
2322         case "$versiononly" in
2323         '') versiononly="$define" ;;
2324         esac
2325         case "$installusrbinperl" in
2326         '') installusrbinperl="$undef" ;;
2327         esac
2328         ;;
2329 esac
2330
2331 : general instructions
2332 needman=true
2333 firsttime=true
2334 user=`(logname) 2>/dev/null`
2335 case "$user" in
2336 '') user=`whoami 2>&1`;;
2337 esac
2338 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2339         firsttime=false
2340         echo " "
2341         rp='Would you like to see the instructions?'
2342         dflt=n
2343         . ./myread
2344         case "$ans" in
2345         [yY]*) ;;
2346         *) needman=false;;
2347         esac
2348 fi
2349 if $needman; then
2350         cat <<EOH
2351
2352 This installation shell script will examine your system and ask you questions
2353 to determine how the perl5 package should be installed. If you get
2354 stuck on a question, you may use a ! shell escape to start a subshell or
2355 execute a command.  Many of the questions will have default answers in square
2356 brackets; typing carriage return will give you the default.
2357
2358 On some of the questions which ask for file or directory names you are allowed
2359 to use the ~name construct to specify the login directory belonging to "name",
2360 even if you don't have a shell which knows about that.  Questions where this is
2361 allowed will be marked "(~name ok)".
2362
2363 EOH
2364         rp=''
2365         dflt='Type carriage return to continue'
2366         . ./myread
2367         cat <<'EOH'
2368
2369 The prompter used in this script allows you to use shell variables and
2370 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2371 in the default answer, as if the default line was a set of arguments given to a
2372 script shell.  This means you may also use $* to repeat the whole default line,
2373 so you do not have to re-type everything to add something to the default.
2374
2375 Every time there is a substitution, you will have to confirm.  If there is an
2376 error (e.g. an unmatched backtick), the default answer will remain unchanged
2377 and you will be prompted again.
2378
2379 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2380 the questions and use the computed defaults (or the previous answers if there
2381 was already a config.sh file). Type 'Configure -h' for a list of options.
2382 You may also start interactively and then answer '& -d' at any prompt to turn
2383 on the non-interactive behaviour for the remainder of the execution.
2384
2385 EOH
2386         . ./myread
2387         cat <<EOH
2388
2389 Much effort has been expended to ensure that this shell script will run on any
2390 Unix system.  If despite that it blows up on yours, your best bet is to edit
2391 Configure and run it again.  If you can't run Configure for some reason,
2392 you'll have to generate a config.sh file by hand.  Whatever problems you
2393 have, let me (perlbug@perl.org) know how I blew it.
2394
2395 This installation script affects things in two ways:
2396
2397 1) it may do direct variable substitutions on some of the files included
2398    in this kit.
2399 2) it builds a config.h file for inclusion in C programs.  You may edit
2400    any of these files as the need arises after running this script.
2401
2402 If you make a mistake on a question, there is no easy way to back up to it
2403 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2404 files.  Configure will offer to let you do this before it runs the SH files.
2405
2406 EOH
2407         dflt='Type carriage return to continue'
2408         . ./myread
2409         case "$firsttime" in
2410         true) echo $user >>../.config/instruct;;
2411         esac
2412 fi
2413
2414 : Set 'sysroot' to change the logical root directory to your headers and libraries see man gcc
2415 : This is primarily meant for cross-compile environments, and may fail to be useful in other cases
2416 if test "X$sysroot" = X; then
2417     sysroot=""
2418 else
2419     case "$cc" in
2420         *gcc*|*g++*)
2421             echo "Using $sysroot to find your headers and libraries, adding to ccflags"
2422             # _sysroot is used in places where we need --sysroot=foo
2423             # but using the rest of the flags could cause issues.
2424             _sysroot="--sysroot=$sysroot";
2425             case "$ccflags" in
2426                 *sysroot*) ;;
2427                 'undef'|*)
2428                 ccflags="$ccflags $_sysroot"
2429             esac
2430             case "$ldflags" in
2431                 *sysroot*) ;;
2432                 'undef'|*)
2433                 ldflags="$ldflags $_sysroot"
2434             esac
2435             case "$cppflags" in
2436                 *sysroot*) ;;
2437                 'undef'|*)
2438                 cppflags="$cppflags $_sysroot"
2439             esac
2440             # lddlflags updated below in lddlflags section;
2441             # same with cccdlflags
2442             ;;
2443     esac
2444
2445     # Adjust some defaults to also use $sysroot
2446     for var in xlibpth loclibpth locincpth glibpth; do
2447         eval xxx=\$$var
2448         eval $var=''
2449         for path in $xxx; do
2450             eval $var=\"\$$var $sysroot$path\"
2451         done
2452     done
2453
2454 fi
2455
2456 : find out where common programs are
2457 echo " "
2458 echo "Locating common programs..." >&4
2459 cat <<EOSC >loc
2460 $startsh
2461 case \$# in
2462 0) exit 1;;
2463 esac
2464 thing=\$1
2465 shift
2466 dflt=\$1
2467 shift
2468 for dir in \$*; do
2469         case "\$thing" in
2470         .)
2471         if test -d \$dir/\$thing; then
2472                 echo \$dir
2473                 exit 0
2474         fi
2475         ;;
2476         *)
2477         for thisthing in \$dir/\$thing; do
2478                 : just loop through to pick last item
2479         done
2480         if test -f \$thisthing; then
2481                 echo \$thisthing
2482                 exit 0
2483         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2484                 echo \$thisthing
2485                 exit 0
2486         elif test -f \$dir/\$thing.exe; then
2487                 if test -n "$DJGPP"; then
2488                         echo \$dir/\$thing.exe
2489                 elif test "$eunicefix" != ":"; then
2490                         : on Eunice apparently
2491                         echo \$dir/\$thing
2492                 fi
2493                 exit 0
2494         fi
2495         ;;
2496         esac
2497 done
2498 echo \$dflt
2499 exit 1
2500 EOSC
2501 chmod +x loc
2502 $eunicefix loc
2503 loclist="
2504 awk
2505 cat
2506 chmod
2507 comm
2508 cp
2509 echo
2510 expr
2511 grep
2512 ls
2513 mkdir
2514 rm
2515 sed
2516 sort
2517 touch
2518 tr
2519 uniq
2520 "
2521 trylist="
2522 ar
2523 bison
2524 byacc
2525 cpp
2526 csh
2527 date
2528 egrep
2529 gmake
2530 gzip
2531 less
2532 ln
2533 make
2534 more
2535 nm
2536 nroff
2537 perl
2538 pg
2539 test
2540 uname
2541 zip
2542 "
2543 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2544 pth="$pth $sysroot/lib $sysroot/usr/lib"
2545 for file in $loclist; do
2546         eval xxx=\$$file
2547         case "$xxx" in
2548         /*|?:[\\/]*)
2549                 if test -f "$xxx"; then
2550                         : ok
2551                 else
2552                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2553                         xxx=`./loc $file $file $pth`
2554                 fi
2555                 ;;
2556         '') xxx=`./loc $file $file $pth`;;
2557         *) xxx=`./loc $xxx $xxx $pth`;;
2558         esac
2559         eval $file=$xxx$_exe
2560         eval _$file=$xxx
2561         case "$xxx" in
2562         /*)
2563                 echo $file is in $xxx.
2564                 ;;
2565         ?:[\\/]*)
2566                 echo $file is in $xxx.
2567                 ;;
2568         *)
2569                 echo "I don't know where '$file' is, and my life depends on it." >&4
2570                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2571                 exit 1
2572                 ;;
2573         esac
2574 done
2575 echo " "
2576 echo "Don't worry if any of the following aren't found..."
2577 say=offhand
2578 for file in $trylist; do
2579         eval xxx=\$$file
2580         case "$xxx" in
2581         /*|?:[\\/]*)
2582                 if test -f "$xxx"; then
2583                         : ok
2584                 else
2585                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2586                         xxx=`./loc $file $file $pth`
2587                 fi
2588                 ;;
2589         '') xxx=`./loc $file $file $pth`;;
2590         *) xxx=`./loc $xxx $xxx $pth`;;
2591         esac
2592         eval $file=$xxx$_exe
2593         eval _$file=$xxx
2594         case "$xxx" in
2595         /*)
2596                 echo $file is in $xxx.
2597                 ;;
2598         ?:[\\/]*)
2599                 echo $file is in $xxx.
2600                 ;;
2601         *)
2602                 echo "I don't see $file out there, $say."
2603                 say=either
2604                 ;;
2605         esac
2606 done
2607 case "$egrep" in
2608 egrep)
2609         echo "Substituting grep for egrep."
2610         egrep=$grep
2611         _egrep=$grep
2612         ;;
2613 esac
2614 case "$less" in
2615 '')     ;;
2616 *)      if $less -R </dev/null >/dev/null 2>&1; then
2617                echo "Substituting less -R for less."
2618                less="$less -R"
2619                _less=$less
2620         fi
2621         ;;
2622 esac
2623 case "$ln" in
2624 ln)
2625         echo "Substituting cp for ln."
2626         ln=$cp
2627         _ln=$cp
2628         ;;
2629 esac
2630 case "$make" in
2631 make)
2632         case "$gmake" in
2633         gmake)
2634         echo "I can't find make or gmake, and my life depends on it." >&4
2635         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2636         exit 1
2637         ;;
2638         esac
2639         ;;
2640 esac
2641 case "$gmake" in
2642 gmake)  ;;
2643 *)      # We can't have osname yet.
2644         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2645                 # Assume that gmake, if found, is definitely GNU make
2646                 # and prefer it over the system make.
2647                 echo "Substituting gmake for make."
2648                 make=$gmake
2649                 _make=$gmake
2650         fi
2651         ;;
2652 esac
2653 case "$test" in
2654 test)
2655         echo "Hopefully test is built into your sh."
2656         ;;
2657 *)
2658         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2659                 echo "Using the test built into your sh."
2660                 test=test
2661                 _test=test
2662         fi
2663         ;;
2664 esac
2665 case "$echo" in
2666 echo)
2667         echo "Hopefully echo is built into your sh."
2668         ;;
2669 '') ;;
2670 *)
2671         echo " "
2672 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2673         $echo $n "hi there$c" >foo1
2674         echo $n "hi there$c" >foo2
2675         if cmp foo1 foo2 >/dev/null 2>&1; then
2676                 echo "They are compatible.  In fact, they may be identical."
2677         else
2678                 case "$n" in
2679                 '-n') n='' c='\c';;
2680                 *) n='-n' c='';;
2681                 esac
2682                 cat <<FOO
2683 They are not compatible!  You are probably running ksh on a non-USG system.
2684 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2685 have echo built in and we may have to run some Bourne shell scripts.  That
2686 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2687
2688 FOO
2689                 $echo $n "The star should be here-->$c"
2690                 $echo "*"
2691         fi
2692         $rm -f foo1 foo2
2693         ;;
2694 esac
2695
2696 # This question was auctioned at YAPC::Europe-2007 in Vienna
2697 # I never promised you could answer it. I only auctioned the question.
2698 cat <<FOO
2699 The following message is sponsored by
2700
2701   Dresden.pm<--The stars should be here.
2702
2703 Dear Perl user, system administrator or package
2704 maintainer, the Perl community sends greetings to
2705 you. Do you (emblematical) greet back [Y/n]? n
2706
2707 FOO
2708
2709 : Check what type of C compiler we use
2710 cat <<EOS >trygcc
2711 $startsh
2712 EOS
2713 cat <<'EOSC' >>trygcc
2714 case "$cc" in
2715 '') ;;
2716 *)  $rm -f try try.*
2717     $cat >try.c <<EOM
2718 int main(int argc, char *argv[]) {
2719   return 0;
2720 }
2721 EOM
2722     if $cc -o try $ccflags $ldflags try.c; then
2723        :
2724     else
2725         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2726         despair=yes
2727         trygcc=yes
2728         case "$cc" in
2729         *gcc*) trygcc=no ;;
2730         esac
2731         # Skip this test because it gives a false match on output like:
2732         #    ./trygcc: line 23: cc: command not found
2733         # case "`$cc -v -c try.c 2>&1`" in
2734         # *gcc*) trygcc=no ;;
2735         # esac
2736         if $test X"$trygcc" = Xyes; then
2737             if gcc -o try -c try.c; then
2738                 echo " "
2739                 echo "You seem to have a working gcc, though." >&4
2740                 # Switching compilers may undo the work of hints files.
2741                 # The most common problem is -D_REENTRANT for threads.
2742                 # This heuristic catches that case, but gets false positives
2743                 # if -Dusethreads was not actually specified.  Better to
2744                 # bail out here with a useful message than fail
2745                 # mysteriously later. Should we perhaps just try to
2746                 # re-invoke Configure -Dcc=gcc config_args ?
2747                 if $test -f usethreads.cbu; then
2748                         $cat >&4 <<EOM
2749
2750 *** However, any setting of the C compiler flags (e.g. for thread support)
2751 *** will be lost.  It may be necessary for you to restart Configure and
2752 *** add -Dcc=gcc to your Configure command line.
2753
2754 EOM
2755                         rp="Would you like to go ahead and try gcc anyway?"
2756                         dflt=n
2757                 else
2758                         rp="Would you like to use it?"
2759                         dflt=y
2760                 fi
2761                 if $test -f myread; then
2762                     . ./myread
2763                 else
2764                     if $test -f UU/myread; then
2765                         . ./UU/myread
2766                     else
2767                         echo "Cannot find myread, sorry.  Aborting." >&2
2768                         exit 1
2769                     fi
2770                 fi
2771                 case "$ans" in
2772                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2773                 esac
2774             fi
2775         fi
2776     fi
2777     $rm -f try try.*
2778     ;;
2779 esac
2780 EOSC
2781
2782 cat <<EOS >checkcc
2783 $startsh
2784 EOS
2785 cat <<'EOSC' >>checkcc
2786 case "$cc" in
2787 '') ;;
2788 *)  $rm -f try try.*
2789     $cat >try.c <<EOM
2790 int main(int argc, char *argv[]) {
2791   return 0;
2792 }
2793 EOM
2794     if $cc -o try $ccflags $ldflags try.c; then
2795        :
2796     else
2797         if $test X"$despair" = Xyes; then
2798            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2799         fi
2800         $cat >&4 <<EOM
2801 You need to find a working C compiler.
2802 Either (purchase and) install the C compiler supplied by your OS vendor,
2803 or for a free C compiler try http://gcc.gnu.org/
2804 I cannot continue any further, aborting.
2805 EOM
2806         exit 1
2807     fi
2808     $rm -f try try.*
2809     ;;
2810 esac
2811 EOSC
2812
2813 : determine whether symbolic links are supported
2814 echo " "
2815 $touch blurfl
2816 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2817         echo "Symbolic links are supported." >&4
2818         lns="$ln -s"
2819 else
2820         echo "Symbolic links are NOT supported." >&4
2821         lns="$ln"
2822 fi
2823 $rm -f blurfl sym
2824
2825 : determine whether symbolic links are supported
2826 echo " "
2827 case "$lns" in
2828 *"ln"*" -s")
2829         echo "Checking how to test for symbolic links..." >&4
2830         $lns blurfl sym
2831         if $test "X$issymlink" = X; then
2832                 case "$newsh" in
2833                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2834                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2835                 esac
2836                 if test $? = 0; then
2837                         issymlink="test -h"
2838                 else
2839                         echo "Your builtin 'test -h' may be broken." >&4
2840                         case "$test" in
2841                         /*)     ;;
2842                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2843                                 for p in $pth
2844                                 do
2845                                         if test -f "$p/$test"; then
2846                                                 test="$p/$test"
2847                                                 break
2848                                         fi
2849                                 done
2850                                 ;;
2851                         esac
2852                         case "$test" in
2853                         /*)
2854                                 echo "Trying external '$test -h'." >&4
2855                                 issymlink="$test -h"
2856                                 if $test ! -h sym >/dev/null 2>&1; then
2857                                         echo "External '$test -h' is broken, too." >&4
2858                                         issymlink=''
2859                                 fi
2860                                 ;;
2861                         *)      issymlink='' ;;
2862                         esac
2863                 fi
2864         fi
2865         if $test "X$issymlink" = X; then
2866                 if $test -L sym 2>/dev/null; then
2867                         issymlink="$test -L"
2868                         echo "The builtin '$test -L' worked." >&4
2869                 fi
2870         fi
2871         if $test "X$issymlink" != X; then
2872                 echo "You can test for symbolic links with '$issymlink'." >&4
2873         else
2874                 echo "I do not know how you can test for symbolic links." >&4
2875         fi
2876         $rm -f blurfl sym
2877         ;;
2878 *)      echo "No symbolic links, so not testing for their testing..." >&4
2879         ;;
2880 esac
2881 echo " "
2882
2883 : Make symlinks util
2884 case "$mksymlinks" in
2885 $define|true|[yY]*)
2886         case "$src" in
2887         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2888                 exit 1
2889                 ;;
2890         *)      case "$lns:$issymlink" in
2891                 *"ln"*" -s:"*"test -"?)
2892                         echo "Creating the symbolic links..." >&4
2893                         cd ..
2894                         awk '{print $1}' $src/MANIFEST | sed -e 's:/\([^/]*\)$: \1:' |
2895                         awk 'NF == 1 {
2896                                 dir=".";
2897                                 file=$1 "";
2898                              }
2899                              NF == 2 {
2900                                 dir=$1 "";
2901                                 file=$2 "";
2902                              }
2903                              {
2904                                  print "# dir = ", dir, "file = ", file
2905                                  mf[dir] = mf[dir]" "source"/"dir"/"file;
2906                              } END {
2907                                  for (d in mf) {
2908                                      if (d != ".") { print("mkdir -p "d) }
2909                                      print("ln -sf "mf[d]" "d);
2910                                  }
2911                              }' source="$src" > UU/mksymlinks.$$
2912                         sh UU/mksymlinks.$$
2913                         rm UU/mksymlinks.$$
2914                         # Sanity check 1.
2915                         if test ! -d t/base; then
2916                                 echo "Failed to create the subdirectories.  Aborting." >&4
2917                                 exit 1
2918                         fi
2919                         # Sanity check 2.
2920                         if test ! -f t/base/lex.t; then
2921                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2922                                 exit 1
2923                         fi
2924                         if test ! -f win32/win32.c; then
2925                                 echo "Failed to create the symlinks (win32/win32.c missing).  Aborting." >&4
2926                                 exit 1
2927                         fi
2928                         cd UU
2929                         ;;
2930                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2931                         ;;
2932                 esac
2933                 ;;
2934         esac
2935         ;;
2936 esac
2937
2938 : Check for Cross-Compilation
2939 if $test "X$targethost" = "X"; then
2940     targethost=""
2941 fi
2942 if $test "X$targetenv" = "X"; then
2943     targetenv=""
2944 fi
2945 case "$usecrosscompile" in
2946 $define|true|[yY]*)
2947         $echo "Cross-compiling..."
2948         croak=''
2949         case "$cc" in
2950         *-gcc*|*-g++*) # A cross-compiling gcc, probably.
2951             # arm-linux-androideabi-gcc  -> arm-linux-androideabi
2952             # x86_64-w64-mingw32-gcc.exe -> x86_64-w64-mingw32
2953             targetarch=`$echo $cc|$sed 's/-g[c\+][c\+].*$//'`
2954             ar=`$echo $cc|$sed 's/-g[c\+][c\+]/-ar/'`
2955             # leave out ld, choosing it is more complex
2956             nm=`$echo $cc|$sed 's/-g[c\+][c\+]/-nm/'`
2957             ranlib=`$echo $cc|$sed 's/-g[c\+][c\+]/-ranlib/'`
2958             # We are in a weird spot. Just before us, some values
2959             # were 'saved', to be restored after the hints are
2960             # run.  This means that the changes we made to ar,
2961             # nm and ranlib will get reverted.
2962             # To avoid that, we hijack the saving mechanism and
2963             # have it save our new values.
2964             for file in ar nm ranlib; do
2965                 eval xxx=\$$file
2966                 eval $file=$xxx$_exe
2967                 eval _$file=$xxx
2968             done
2969         ;;
2970         esac
2971         case "$targetarch" in
2972         '') echo "Targetarch not defined." >&4; croak=y ;;
2973         *)  echo "Using targetarch $targetarch." >&4 ;;
2974         esac
2975         case "$targethost" in
2976         '') echo "Targethost not defined." >&4; croak=y ;;
2977         *)  echo "Using targethost $targethost." >&4
2978         esac
2979         locincpth=' '
2980         loclibpth=' '
2981         case "$croak" in
2982         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2983         esac
2984     : compile a host miniperl and generate_uudmap, unless we got passed them
2985     if $test "X$hostperl" = X; then
2986       echo "Building host miniperl and generate_uudmap binaries" >&4
2987       before_host=`pwd`
2988       cd ..
2989       cd $src
2990       src=`pwd`
2991       rm -rf $src/host
2992       mkdir $src/host
2993       cd $src/host
2994       $src/Configure -des -Dusedevel -Dmksymlinks
2995       $make miniperl
2996       case "$hostgenerate" in
2997       '') $make generate_uudmap
2998           hostgenerate=$src/host/generate_uudmap
2999           ;;
3000        "$undef") hostgenerate=''
3001           ;;
3002       esac
3003       hostperl=$src/host/miniperl
3004       cd $before_host
3005     fi
3006     hostosname=`$hostperl -le 'print $^O'`
3007     ;;
3008 *)
3009     usecrosscompile="$undef"
3010     ;;
3011 esac
3012
3013 : Define -Dtargethost=somecomputer to run compiled tests on another machine
3014 case "$targethost" in
3015     '') echo "Checking for cross-compile" >&4
3016     case "$usecrosscompile$multiarch" in
3017        *$define*) echo "Skipping the try tests in the rest of Configure as no targethost was defined when cross-compiling" >&4
3018          if [ -f Makefile ]; then
3019            echo " "
3020            echo "Now you must ensure config.sh, config.h and the generated headers exist and run a $make."
3021          else
3022            echo "Configure done."
3023          fi
3024        exit 0
3025        ;;
3026      *) echo "No targethost for running compiler tests against defined, running locally" >&4
3027         run=''
3028         to=:
3029         from=:
3030         ;;
3031     esac
3032     ;;
3033     *) echo "Using targethost $targethost." >&4
3034         case "$src" in
3035         /*) run=$src/Cross/run
3036             targetmkdir=$src/Cross/mkdir
3037             to=$src/Cross/to
3038             from=$src/Cross/from
3039             ;;
3040         *)  pwd=`$test -f ../Configure & cd ..; pwd`
3041             run=$pwd/Cross/run
3042             targetmkdir=$pwd/Cross/mkdir
3043             to=$pwd/Cross/to
3044             from=$pwd/Cross/from
3045             ;;
3046         esac
3047         case "$targetrun" in
3048         '') targetrun=ssh ;;
3049         esac
3050         case "$targetto" in
3051         '') targetto=scp ;;
3052         esac
3053         case "$targetfrom" in
3054         '') targetfrom=scp ;;
3055         esac
3056         run=$run-$targetrun
3057         to=$to-$targetto
3058         from=$from-$targetfrom
3059         case "$targetdir" in
3060         '')  targetdir=/tmp
3061              echo "Guessing targetdir $targetdir." >&4
3062              ;;
3063         esac
3064         case "$targetuser" in
3065         '')  targetuser=root
3066              echo "Guessing targetuser $targetuser." >&4
3067              ;;
3068         esac
3069         case "$targetport" in
3070         '')  targetport=22
3071              echo "Guessing targetport $targetport." >&4
3072              ;;
3073         esac
3074         case "$targetfrom" in
3075         scp)    q=-q ;;
3076         *)      q='' ;;
3077         esac
3078         case "$targetrun" in
3079         ssh|rsh)
3080             cat >$run <<EOF
3081 #!/bin/sh
3082 env=''
3083 case "\$1" in
3084 -cwd)
3085   shift
3086   cwd=\$1
3087   shift
3088   ;;
3089 esac
3090 case "\$1" in
3091 -env)
3092   shift
3093   env=\$1
3094   shift
3095   ;;
3096 esac
3097 case "\$cwd" in
3098 '') cwd=$targetdir ;;
3099 esac
3100 exe=\$1
3101 shift
3102 $to \$exe
3103 $targetrun -p $targetport -l $targetuser $targethost "cd \$cwd && \$env \$exe \$@"
3104 EOF
3105             ;;
3106         adb)
3107             $touch $run
3108             ;;
3109         *)  echo "Unknown targetrun '$targetrun'" >&4
3110             exit 1
3111             ;;
3112         esac
3113         case "$targetmkdir" in
3114         */Cross/mkdir)
3115             cat >$targetmkdir <<EOF
3116 #!/bin/sh
3117 $targetrun -p $targetport -l $targetuser $targethost "mkdir -p \$@"
3118 EOF
3119             $chmod a+rx $targetmkdir
3120             ;;
3121         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
3122             exit 1
3123             ;;
3124         esac
3125         case "$targetto" in
3126         scp|rcp)
3127             cat >$to <<EOF
3128 #!/bin/sh
3129 for f in \$@
3130 do
3131   case "\$f" in
3132   /*)
3133     $targetmkdir \`dirname \$f\`
3134     $targetto -P $targetport -r $q \$f $targetuser@$targethost:\$f           2>/dev/null  || exit 1
3135     ;;
3136   *)
3137     $targetmkdir $targetdir/\`dirname \$f\`
3138     $targetto -P $targetport -r $q \$f $targetuser@$targethost:$targetdir/\$f 2>/dev/null || exit 1
3139     ;;
3140   esac
3141 done
3142 exit 0
3143 EOF
3144             ;;
3145         cp) cat >$to <<EOF
3146 #!/bin/sh
3147 for f in \$@
3148 do
3149   case "\$f" in
3150   /*)
3151     $mkdir -p $targetdir/\`dirname \$f\`
3152     $cp \$f $targetdir/\$f || exit 1
3153     ;;
3154   *)
3155     $targetmkdir $targetdir/\`dirname \$f\`
3156     $cp \$f $targetdir/\$f || exit 1
3157     ;;
3158   esac
3159 done
3160 exit 0
3161 EOF
3162             ;;
3163         *)  echo "Unknown targetto '$targetto'" >&4
3164             exit 1
3165             ;;
3166         esac
3167         case "$targetfrom" in
3168         scp|rcp)
3169           cat >$from <<EOF
3170 #!/bin/sh
3171 for f in \$@
3172 do
3173   $rm -f \$f
3174   $targetfrom -P $targetport $q $targetuser@$targethost:$targetdir/\$f . || exit 1
3175 done
3176 exit 0
3177 EOF
3178             ;;
3179         cp) cat >$from <<EOF
3180 #!/bin/sh
3181 for f in \$@
3182 do
3183   $rm -f \$f
3184   cp $targetdir/\$f . || exit 1
3185 done
3186 exit 0
3187 EOF
3188             ;;
3189         *)  echo "Unknown targetfrom '$targetfrom'" >&4
3190             exit 1
3191             ;;
3192         esac
3193         if $test ! -f $run; then
3194             echo "Target 'run' script '$run' not found." >&4
3195         else
3196             $chmod a+rx $run
3197         fi
3198         if $test ! -f $to; then
3199             echo "Target 'to' script '$to' not found." >&4
3200         else
3201             $chmod a+rx $to
3202         fi
3203         if $test ! -f $from; then
3204             echo "Target 'from' script '$from' not found." >&4
3205         else
3206             $chmod a+rx $from
3207         fi
3208         if $test ! -f $run -o ! -f $to -o ! -f $from; then
3209             exit 1
3210         fi
3211         cat >&4 <<EOF
3212 Using '$run' for remote execution,
3213 and '$from' and '$to'
3214 for remote file transfer.
3215 EOF
3216         ;;
3217 *)      run=''
3218         to=:
3219         from=:
3220         usecrosscompile="$undef"
3221         targetarch=''
3222         ;;
3223 esac
3224
3225 : see whether [:lower:] and [:upper:] are supported character classes
3226 echo " "
3227 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`"-"`echo AbyZ | $tr '[:upper:]' '[:lower:]' 2>/dev/null`" in
3228 ABYZ-abyz)
3229         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
3230         up='[:upper:]'
3231         low='[:lower:]'
3232         ;;
3233 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
3234         # (0xd9 and 0xe2), therefore that is a nice testing point.
3235         if test "X$up" = X -o "X$low" = X; then
3236             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
3237             rs) up='[A-Z]'
3238                 low='[a-z]'
3239                 ;;
3240             esac
3241         fi
3242         if test "X$up" = X -o "X$low" = X; then
3243             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
3244             rs) up='A-Z'
3245                 low='a-z'
3246                 ;;
3247             esac
3248         fi
3249         if test "X$up" = X -o "X$low" = X; then
3250             case "`echo RS | od -x 2>/dev/null`" in
3251             *D9E2*|*d9e2*)
3252                 echo "Hey, this might be EBCDIC." >&4
3253                 if test "X$up" = X -o "X$low" = X; then
3254                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
3255                     rs) up='[A-IJ-RS-Z]'
3256                         low='[a-ij-rs-z]'
3257                         ;;
3258                     esac
3259                 fi
3260                 if test "X$up" = X -o "X$low" = X; then
3261                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3262                     rs) up='A-IJ-RS-Z'
3263                         low='a-ij-rs-z'
3264                         ;;
3265                     esac
3266                 fi
3267                 ;;
3268             esac
3269         fi
3270 esac
3271 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3272 rs)
3273     echo "Using $up and $low to convert case." >&4
3274     ;;
3275 *)
3276     echo "I don't know how to translate letters from upper to lower case." >&4
3277     echo "Your tr is not acting any way I know of." >&4
3278     exit 1
3279     ;;
3280 esac
3281 : set up the translation script tr, must be called with ./tr of course
3282 cat >tr <<EOSC
3283 $startsh
3284 case "\$1\$2" in
3285 '[A-Z][a-z]') exec $tr '$up' '$low';;
3286 '[a-z][A-Z]') exec $tr '$low' '$up';;
3287 esac
3288 exec $tr "\$@"
3289 EOSC
3290 chmod +x tr
3291 $eunicefix tr
3292
3293 : Try to determine whether config.sh was made on this system
3294 case "$config_sh" in
3295 '')
3296 myuname=`$uname -a 2>/dev/null`
3297 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3298 # Downcase everything to avoid ambiguity.
3299 # Remove slashes and single quotes so we can use parts of this in
3300 # directory and file names.
3301 # Remove newlines so myuname is sane to use elsewhere.
3302 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3303 # because the A-Z/a-z are not consecutive.
3304 myuname=`echo $myuname | $sed -e "s,['/],,g" | \
3305         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3306 newmyuname="$myuname"
3307 dflt=n
3308 case "$knowitall" in
3309 '')
3310         if test -f ../config.sh; then
3311                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3312                         eval "`grep myuname= ../config.sh`"
3313                 fi
3314                 if test "X$myuname" = "X$newmyuname"; then
3315                         dflt=y
3316                 fi
3317         fi
3318         ;;
3319 *) dflt=y;;
3320 esac
3321
3322 : Get old answers from old config file if Configure was run on the
3323 : same system, otherwise use the hints.
3324 hint=default
3325 cd ..
3326 if test -f config.sh; then
3327         echo " "
3328         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3329         . UU/myread
3330         case "$ans" in
3331         n*|N*) echo "OK, I'll ignore it."
3332                 mv config.sh config.sh.old
3333                 myuname="$newmyuname"
3334                 ;;
3335         *)  echo "Fetching default answers from your old config.sh file..." >&4
3336                 tmp_n="$n"
3337                 tmp_c="$c"
3338                 tmp_sh="$sh"
3339                 . ./config.sh
3340                 cp config.sh UU
3341                 n="$tmp_n"
3342                 c="$tmp_c"
3343                 : Older versions did not always set $sh.  Catch re-use of such
3344                 : an old config.sh.
3345                 case "$sh" in
3346                 '') sh="$tmp_sh" ;;
3347                 esac
3348                 hint=previous
3349                 ;;
3350         esac
3351 fi
3352 . ./UU/checkcc
3353 if test ! -f config.sh; then
3354         $cat <<EOM
3355
3356 First time through, eh?  I have some defaults handy for some systems
3357 that need some extra help getting the Configure answers right:
3358
3359 EOM
3360         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3361         dflt=''
3362         : Half the following guesses are probably wrong... If you have better
3363         : tests or hints, please send them to perlbug@perl.org
3364         : The metaconfig authors would also appreciate a copy...
3365         $test -f /irix && osname=irix
3366         $test -f /xenix && osname=sco_xenix
3367         $test -f /dynix && osname=dynix
3368         $test -f /dnix && osname=dnix
3369         $test -f /lynx.os && osname=lynxos
3370         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3371         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3372         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3373         $test -f /bin/mips && /bin/mips && osname=mips
3374         $test -d /usr/apollo/bin && osname=apollo
3375         $test -f /etc/saf/_sactab && osname=svr4
3376         $test -d /usr/include/minix && osname=minix && osvers=`$uname -r`
3377         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3378         $test -f /sys/utilities/MultiView && osname=amigaos
3379         if $test -d /MachTen -o -d /MachTen_Folder; then
3380                 osname=machten
3381                 if $test -x /sbin/version; then
3382                         osvers=`/sbin/version | $awk '{print $2}' |
3383                         $sed -e 's/[A-Za-z]$//'`
3384                 elif $test -x /usr/etc/version; then
3385                         osvers=`/usr/etc/version | $awk '{print $2}' |
3386                         $sed -e 's/[A-Za-z]$//'`
3387                 else
3388                         osvers="$2.$3"
3389                 fi
3390         fi
3391
3392         $test -f /sys/posix.dll &&
3393                 $test -f /usr/bin/what &&
3394                 set X `/usr/bin/what /sys/posix.dll` &&
3395                 $test "$3" = UWIN &&
3396                 osname=uwin &&
3397                 osvers="$5"
3398
3399         if $test -f $uname; then
3400                 set X $myuname
3401                 shift
3402
3403                 case "$5" in
3404                 fps*) osname=fps ;;
3405                 mips*)
3406                         case "$4" in
3407                         umips) osname=umips ;;
3408                         *) osname=mips ;;
3409                         esac;;
3410                 [23]100) osname=mips ;;
3411                 i386*)
3412                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3413                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3414                                 osname='sco'
3415                                 osvers=$tmp
3416                         elif $test -f /etc/kconfig; then
3417                                 osname=isc
3418                                 if test "$lns" = "$ln -s"; then
3419                                         osvers=4
3420                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3421                                         osvers=3
3422                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3423                                         osvers=2
3424                                 fi
3425                         fi
3426                         tmp=''
3427                         ;;
3428                 pc*)
3429                         if test -n "$DJGPP"; then
3430                                 osname=dos
3431                                 osvers=djgpp
3432                         fi
3433                         ;;
3434                 esac
3435
3436                 case "$1" in
3437                 aix) osname=aix
3438                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3439                         case "$tmp" in
3440                         # oslevel can fail with:
3441                         # oslevel: Unable to acquire lock.
3442                         *not\ found) osvers="$4"."$3" ;;
3443                         '<3240'|'<>3240') osvers=3.2.0 ;;
3444                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3445                         '=3250'|'>3250') osvers=3.2.5 ;;
3446                         *) osvers=$tmp;;
3447                         esac
3448                         ;;
3449                 bitrig) osname=bitrig
3450                         osvers="$3"
3451                         ;;
3452                 bsd386) osname=bsd386
3453                         osvers=`$uname -r`
3454                         ;;
3455                 cygwin*) osname=cygwin
3456                         osvers="$3"
3457                         ;;
3458                 *dc.osx) osname=dcosx
3459                         osvers="$3"
3460                         ;;
3461                 dnix) osname=dnix
3462                         osvers="$3"
3463                         ;;
3464                 domainos) osname=apollo
3465                         osvers="$3"
3466                         ;;
3467                 dgux)   osname=dgux
3468                         osvers="$3"
3469                         ;;
3470                 dragonfly) osname=dragonfly
3471                         osvers="$3"
3472                         ;;
3473                 dynixptx*) osname=dynixptx
3474                         osvers=`echo "$4"|sed 's/^v//'`
3475                         ;;
3476                 freebsd) osname=freebsd
3477                         osvers="$3" ;;
3478                 genix)  osname=genix ;;
3479                 gnu)    osname=gnu
3480                         osvers="$3" ;;
3481                 hp*)    osname=hpux
3482                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3483                         ;;
3484                 irix*)  osname=irix
3485                         case "$3" in
3486                         4*) osvers=4 ;;
3487                         5*) osvers=5 ;;
3488                         *)      osvers="$3" ;;
3489                         esac
3490                         ;;
3491                 linux)  osname=linux
3492                         case "$3" in
3493                         *)      osvers="$3" ;;
3494                         esac
3495                         $test -f /system/lib/libandroid.so && osname=linux-android
3496                         ;;
3497                 MiNT)   osname=mint
3498                         ;;
3499                 netbsd*) osname=netbsd
3500                         osvers="$3"
3501                         ;;
3502                 news-os) osvers="$3"
3503                         case "$3" in
3504                         4*) osname=newsos4 ;;
3505                         *) osname=newsos ;;
3506                         esac
3507                         ;;
3508                 nonstop-ux) osname=nonstopux ;;
3509                 openbsd) osname=openbsd
3510                         osvers="$3"
3511                         ;;
3512                 os2)    osname=os2
3513                         osvers="$4"
3514                         ;;
3515                 POSIX-BC | posix-bc ) osname=posix-bc
3516                         osvers="$3"
3517                         ;;
3518                 powerux | power_ux | powermax_os | powermaxos | \
3519                 powerunix | power_unix) osname=powerux
3520                         osvers="$3"
3521                         ;;
3522                 qnx) osname=qnx
3523                         osvers="$4"
3524                         ;;
3525                 solaris) osname=solaris
3526                         case "$3" in
3527                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3528                         *)      osvers="$3" ;;
3529                         esac
3530                         ;;
3531                 sunos) osname=sunos
3532                         case "$3" in
3533                         5*) osname=solaris
3534                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3535                         *)      osvers="$3" ;;
3536                         esac
3537                         ;;
3538                 titanos) osname=titanos
3539                         case "$3" in
3540                         1*) osvers=1 ;;
3541                         2*) osvers=2 ;;
3542                         3*) osvers=3 ;;
3543                         4*) osvers=4 ;;
3544                         *)      osvers="$3" ;;
3545                         esac
3546                         ;;
3547                 ultrix) osname=ultrix
3548                         osvers="$3"
3549                         ;;
3550                 osf1|mls+)      case "$5" in
3551                                 alpha)
3552                                         osname=dec_osf
3553                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3554                                         case "$osvers" in
3555                                         [1-9].[0-9]*) ;;
3556                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3557                                         esac
3558                                         ;;
3559                         hp*)    osname=hp_osf1  ;;
3560                         mips)   osname=mips_osf1 ;;
3561                         esac
3562                         ;;
3563                 # UnixWare 7.1.2 is known as Open UNIX 8
3564                 openunix|unixware) osname=svr5
3565                         osvers="$4"
3566                         ;;
3567                 uts)    osname=uts
3568                         osvers="$3"
3569                         ;;
3570                 vos) osvers="$3"
3571                         ;;
3572                 $2) case "$osname" in
3573                         *isc*) ;;
3574                         *freebsd*) ;;
3575                         svr*)
3576                                 : svr4.x or possibly later
3577                                 case "svr$3" in
3578                                 ${osname}*)
3579                                         osname=svr$3
3580                                         osvers=$4
3581                                         ;;
3582                                 esac
3583                                 case "$osname" in
3584                                 svr4.0)
3585                                         : Check for ESIX
3586                                         if test -f /stand/boot ; then
3587                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3588                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3589                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3590                                                         if test -n "$isesix"; then
3591                                                                 osname=esix4
3592                                                         fi
3593                                                 fi
3594                                         fi
3595                                         ;;
3596                                 esac
3597                                 ;;
3598                         *)      if test -f /etc/systemid; then
3599                                         osname=sco
3600                                         set `echo $3 | $sed 's/\./ /g'` $4
3601                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3602                                                 osvers=$1.$2.$3
3603                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3604                                                 osvers=$1.$2
3605                                         elif $test -f $src/hints/sco_$1.sh; then
3606                                                 osvers=$1
3607                                         fi
3608                                 else
3609                                         case "$osname" in
3610                                         '') : Still unknown.  Probably a generic Sys V.
3611                                                 osname="sysv"
3612                                                 osvers="$3"
3613                                                 ;;
3614                                         esac
3615                                 fi
3616                                 ;;
3617                         esac
3618                         ;;
3619                 *)      case "$osname" in
3620                         '') : Still unknown.  Probably a generic BSD.
3621                                 osname="$1"
3622                                 osvers="$3"
3623                                 ;;
3624                         esac
3625                         ;;
3626                 esac
3627         else
3628                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3629                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3630                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3631                                 osname=news_os
3632                         fi
3633                         $rm -f UU/kernel.what
3634                 elif test -d c:/. -o -n "$is_os2" ; then
3635                         set X $myuname
3636                         osname=os2
3637                         osvers="$5"
3638                 fi
3639         fi
3640
3641         case "$targetarch" in
3642         '') ;;
3643         *)  hostarch=$osname
3644             case "$targetarch" in
3645                 nto*|*-nto-*)
3646                     # Will load qnx.sh, which should change osname to nto
3647                     osname=qnx
3648                     osvers=''
3649                     ;;
3650                 *linux-android*)
3651                     # Catch arm-linux-androideabi, mipsel-linux-android,
3652                     # and i686-linux-android
3653                     osname=linux-android
3654                     osvers=''
3655                     ;;
3656                 *linux*)
3657                     # Something like arm-linux-gnueabihf is really just
3658                     # plain linux.
3659                     osname=linux
3660                     osvers=''
3661                     ;;
3662                 *solaris*|*sunos*)
3663                     osname=solaris
3664                     # XXX perhaps we should just assume
3665                     # osvers to be 2, or maybe take the value
3666                     # from targetarch. Using $run before the
3667                     # hints are run is somewhat icky.
3668                     set X `$run $uname -a 2>/dev/null`
3669                     shift
3670                     case "$3" in
3671                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3672                         *)  osvers="$3" ;;
3673                     esac
3674                     ;;
3675                 *)
3676                     osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3677                     osvers=''
3678                 ;;
3679             esac
3680             ;;
3681         esac
3682
3683         : Now look for a hint file osname_osvers, unless one has been
3684         : specified already.
3685         case "$hintfile" in
3686         ''|' ')
3687                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3688                 : Also try without trailing minor version numbers.
3689                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3690                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3691                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3692                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3693                 case "$file" in
3694                 '') dflt=none ;;
3695                 *)  case "$osvers" in
3696                         '') dflt=$file
3697                                 ;;
3698                         *)  if $test -f $src/hints/$file.sh ; then
3699                                         dflt=$file
3700                                 elif $test -f $src/hints/$xfile.sh ; then
3701                                         dflt=$xfile
3702                                 elif $test -f $src/hints/$xxfile.sh ; then
3703                                         dflt=$xxfile
3704                                 elif $test -f $src/hints/$xxxfile.sh ; then
3705                                         dflt=$xxxfile
3706                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3707                                         dflt=$xxxxfile
3708                                 elif $test -f "$src/hints/${osname}.sh" ; then
3709                                         dflt="${osname}"
3710                                 else
3711                                         dflt=none
3712                                 fi
3713                                 ;;
3714                         esac
3715                         ;;
3716                 esac
3717                 if $test -f Policy.sh ; then
3718                         case "$dflt" in
3719                         *Policy*) ;;
3720                         none) dflt="Policy" ;;
3721                         *) dflt="Policy $dflt" ;;
3722                         esac
3723                 fi
3724                 ;;
3725         *)
3726                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3727                 ;;
3728         esac
3729
3730         if $test -f Policy.sh ; then
3731                 $cat <<EOM
3732
3733 There's also a Policy hint file available, which should make the
3734 site-specific (policy) questions easier to answer.
3735 EOM
3736
3737         fi
3738
3739         $cat <<EOM
3740
3741 You may give one or more space-separated answers, or "none" if appropriate.
3742 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3743 previous run of Configure, you may specify it as well as or instead of
3744 OS-specific hints.  If hints are provided for your OS, you should use them:
3745 although Perl can probably be built without hints on many platforms, using
3746 hints often improve performance and may enable features that Configure can't
3747 set up on its own. If there are no hints that match your OS, specify "none";
3748 DO NOT give a wrong version or a wrong OS.
3749
3750 EOM
3751
3752         rp="Which of these apply, if any?"
3753         . UU/myread
3754         tans=$ans
3755         for file in $tans; do
3756                 if $test X$file = XPolicy -a -f Policy.sh; then
3757                         . Policy.sh
3758                         $cat Policy.sh >> UU/config.sh
3759                 elif $test -f $src/hints/$file.sh; then
3760                         . $src/hints/$file.sh
3761                         $cat $src/hints/$file.sh >> UU/config.sh
3762                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3763                         : nothing
3764                 else
3765                         : Give one chance to correct a possible typo.
3766                         echo "$file.sh does not exist"
3767                         dflt=$file
3768                         rp="hint to use instead?"
3769                         . UU/myread
3770                         for file in $ans; do
3771                                 if $test -f "$src/hints/$file.sh"; then
3772                                         . $src/hints/$file.sh
3773                                         $cat $src/hints/$file.sh >> UU/config.sh
3774                                 elif $test X$ans = X -o X$ans = Xnone ; then
3775                                         : nothing
3776                                 else
3777                                         echo "$file.sh does not exist -- ignored."
3778                                 fi
3779                         done
3780                 fi
3781         done
3782
3783         hint=recommended
3784         : Remember our hint file for later.
3785         if $test -f "$src/hints/$file.sh" ; then
3786                 hintfile="$file"
3787         else
3788                 hintfile=''
3789         fi
3790 fi
3791 cd UU
3792 ;;
3793 *)
3794         echo " "
3795         echo "Fetching default answers from $config_sh..." >&4
3796         tmp_n="$n"
3797         tmp_c="$c"
3798         cd ..
3799         cp $config_sh config.sh 2>/dev/null
3800         chmod +w config.sh
3801         . ./config.sh
3802         cd UU
3803         cp ../config.sh .
3804         n="$tmp_n"
3805         c="$tmp_c"
3806         hint=previous
3807         ;;
3808 esac
3809 . ./optdef.sh
3810
3811 : Restore computed paths
3812 for file in $loclist $trylist; do
3813         eval $file="\$_$file"
3814 done
3815
3816 cat << EOM
3817
3818 Configure uses the operating system name and version to set some defaults.
3819 The default value is probably right if the name rings a bell. Otherwise,
3820 since spelling matters for me, either accept the default or answer "none"
3821 to leave it blank.
3822
3823 EOM
3824 case "$osname" in
3825         ''|' ')
3826                 case "$hintfile" in
3827                 ''|' '|none) dflt=none ;;
3828                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3829                 esac
3830                 ;;
3831         *) dflt="$osname" ;;
3832 esac
3833 rp="Operating system name?"
3834 . ./myread
3835 case "$ans" in
3836 none)  osname='' ;;
3837 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3838 esac
3839 echo " "
3840 case "$osvers" in
3841         ''|' ')
3842                 case "$hintfile" in
3843                 ''|' '|none) dflt=none ;;
3844                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3845                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3846                         case "$dflt" in
3847                         ''|' ') dflt=none ;;
3848                         esac
3849                         ;;
3850                 esac
3851                 ;;
3852         *) dflt="$osvers" ;;
3853 esac
3854 rp="Operating system version?"
3855 . ./myread
3856 case "$ans" in
3857 none)  osvers='' ;;
3858 *) osvers="$ans" ;;
3859 esac
3860
3861
3862 . ./posthint.sh
3863
3864 : who configured the system
3865 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3866 case "$cf_by" in
3867 "")
3868         cf_by=`(logname) 2>/dev/null`
3869         case "$cf_by" in
3870         "")
3871                 cf_by=`(whoami) 2>/dev/null`
3872                 case "$cf_by" in
3873                 "") cf_by=unknown ;;
3874                 esac ;;
3875         esac ;;
3876 esac
3877
3878 : decide how portable to be.  Allow command line overrides.
3879 case "$d_portable" in
3880 "$undef") ;;
3881 *)      d_portable="$define" ;;
3882 esac
3883
3884 : set up shell script to do ~ expansion
3885 cat >filexp <<EOSS
3886 $startsh
3887 : expand filename
3888 case "\$1" in
3889  \~/*|\~)
3890         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3891         ;;
3892  \~*)
3893         if $test -f /bin/csh; then
3894                 /bin/csh -f -c "glob \$1"
3895                 failed=\$?
3896                 echo ""
3897                 exit \$failed
3898         else
3899                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3900                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3901                 if $test ! -d "\$dir"; then
3902                         me=\`basename \$0\`
3903                         echo "\$me: can't locate home directory for: \$name" >&2
3904                         exit 1
3905                 fi
3906                 case "\$1" in
3907                 */*)
3908                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3909                         ;;
3910                 *)
3911                         echo \$dir
3912                         ;;
3913                 esac
3914         fi
3915         ;;
3916 *)
3917         echo \$1
3918         ;;
3919 esac
3920 EOSS
3921 chmod +x filexp
3922 $eunicefix filexp
3923
3924 : now set up to get a file name
3925 cat <<EOS >getfile
3926 $startsh
3927 EOS
3928 cat <<'EOSC' >>getfile
3929 tilde=''
3930 fullpath=''
3931 already=''
3932 skip=''
3933 none_ok=''
3934 exp_file=''
3935 nopath_ok=''
3936 orig_rp="$rp"
3937 orig_dflt="$dflt"
3938 case "$gfpth" in
3939 '') gfpth='.' ;;
3940 esac
3941
3942 case "$fn" in
3943 *\(*)
3944         : getfile will accept an answer from the comma-separated list
3945         : enclosed in parentheses even if it does not meet other criteria.
3946         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3947         fn=`echo $fn | sed 's/(.*)//'`
3948         ;;
3949 esac
3950
3951 case "$fn" in
3952 *:*)
3953         loc_file=`expr $fn : '.*:\(.*\)'`
3954         fn=`expr $fn : '\(.*\):.*'`
3955         ;;
3956 esac
3957
3958 case "$fn" in
3959 *~*) tilde=true;;
3960 esac
3961 case "$fn" in
3962 */*) fullpath=true;;
3963 esac
3964 case "$fn" in
3965 *+*) skip=true;;
3966 esac
3967 case "$fn" in
3968 *n*) none_ok=true;;
3969 esac
3970 case "$fn" in
3971 *e*) exp_file=true;;
3972 esac
3973 case "$fn" in
3974 *p*) nopath_ok=true;;
3975 esac
3976
3977 case "$fn" in
3978 *f*) type='File';;
3979 *d*) type='Directory';;
3980 *l*) type='Locate';;
3981 esac
3982
3983 what="$type"
3984 case "$what" in
3985 Locate) what='File';;
3986 esac
3987
3988 case "$exp_file" in
3989 '')
3990         case "$d_portable" in
3991         "$define") ;;
3992         *) exp_file=true;;
3993         esac
3994         ;;
3995 esac
3996
3997 cd ..
3998 while test "$type"; do
3999         redo=''
4000         rp="$orig_rp"
4001         dflt="$orig_dflt"
4002         case "$tilde" in
4003         true) rp="$rp (~name ok)";;
4004         esac
4005         . UU/myread
4006         if test -f UU/getfile.ok && \
4007                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
4008         then
4009                 value="$ans"
4010                 ansexp="$ans"
4011                 break
4012         fi
4013         case "$ans" in
4014         none)
4015                 value=''
4016                 ansexp=''
4017                 case "$none_ok" in
4018                 true) type='';;
4019                 esac
4020                 ;;
4021         *)
4022                 case "$tilde" in
4023                 '') value="$ans"
4024                         ansexp="$ans";;
4025                 *)
4026                         value=`UU/filexp $ans`
4027                         case $? in
4028                         0)
4029                                 if test "$ans" != "$value"; then
4030                                         echo "(That expands to $value on this system.)"
4031                                 fi
4032                                 ;;
4033                         *) value="$ans";;
4034                         esac
4035                         ansexp="$value"
4036                         case "$exp_file" in
4037                         '') value="$ans";;
4038                         esac
4039                         ;;
4040                 esac
4041                 case "$fullpath" in
4042                 true)
4043                         case "$ansexp" in
4044                         /*) value="$ansexp" ;;
4045                         [a-zA-Z]:/*) value="$ansexp" ;;
4046                         *)
4047                                 redo=true
4048                                 case "$already" in
4049                                 true)
4050                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
4051                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
4052                                         ;;
4053                                 *)
4054                                 echo "Please give a full path name, starting with slash." >&4
4055                                         case "$tilde" in
4056                                         true)
4057                                 echo "Note that using ~name is ok provided it expands well." >&4
4058                                                 already=true
4059                                                 ;;
4060                                         esac
4061                                 esac
4062                                 ;;
4063                         esac
4064                         ;;
4065                 esac
4066                 case "$redo" in
4067                 '')
4068                         case "$type" in
4069                         File)
4070                                 for fp in $gfpth; do
4071                                         if test "X$fp" = X.; then
4072                                             pf="$ansexp"
4073                                         else    
4074                                             pf="$fp/$ansexp"
4075                                         fi
4076                                         if test -f "$pf"; then
4077                                                 type=''
4078                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
4079                                         then
4080                                                 echo "($value is not a plain file, but that's ok.)"
4081                                                 type=''
4082                                         fi
4083                                         if test X"$type" = X; then
4084                                             value="$pf"
4085                                             break
4086                                         fi
4087                                 done
4088                                 ;;
4089                         Directory)
4090                                 for fp in $gfpth; do
4091                                         if test "X$fp" = X.; then
4092                                             dir="$ans"
4093                                             direxp="$ansexp"
4094                                         else    
4095                                             dir="$fp/$ansexp"
4096                                             direxp="$fp/$ansexp"
4097                                         fi
4098                                         if test -d "$direxp"; then
4099                                                 type=''
4100                                                 value="$dir"
4101                                                 break
4102                                         fi
4103                                 done
4104                                 ;;
4105                         Locate)
4106                                 if test -d "$ansexp"; then
4107                                         echo "(Looking for $loc_file in directory $value.)"
4108                                         value="$value/$loc_file"
4109                                         ansexp="$ansexp/$loc_file"
4110                                 fi
4111                                 if test -f "$ansexp"; then
4112                                         type=''
4113                                 fi
4114                                 case "$nopath_ok" in
4115                                 true)   case "$value" in
4116                                         */*) ;;
4117                                         *)      echo "Assuming $value will be in people's path."
4118                                                 type=''
4119                                                 ;;
4120                                         esac
4121                                         ;;
4122                                 esac
4123                                 ;;
4124                         esac
4125
4126                         case "$skip" in
4127                         true) type='';
4128                         esac
4129
4130                         case "$type" in
4131                         '') ;;
4132                         *)
4133                                 if test "$fastread" = yes; then
4134                                         dflt=y
4135                                 else
4136                                         dflt=n
4137                                 fi
4138                                 rp="$what $value doesn't exist.  Use that name anyway?"
4139                                 . UU/myread
4140                                 dflt=''
4141                                 case "$ans" in
4142                                 y*) type='';;
4143                                 *) echo " ";;
4144                                 esac
4145                                 ;;
4146                         esac
4147                         ;;
4148                 esac
4149                 ;;
4150         esac
4151 done
4152 cd UU
4153 ans="$value"
4154 rp="$orig_rp"
4155 dflt="$orig_dflt"
4156 rm -f getfile.ok
4157 test "X$gfpthkeep" != Xy && gfpth=""
4158 EOSC
4159
4160 : determine root of directory hierarchy where package will be installed.
4161 case "$prefix" in
4162 '')
4163         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
4164         ;;
4165 *?/)
4166         dflt=`echo "$prefix" | sed 's/.$//'`
4167         ;;
4168 *)
4169         dflt="$prefix"
4170         ;;
4171 esac
4172 $cat <<EOM
4173
4174 By default, $package will be installed in $dflt/bin, manual pages
4175 under $dflt/man, etc..., i.e. with $dflt as prefix for all
4176 installation directories. Typically this is something like /usr/local.
4177 If you wish to have binaries under /usr/bin but other parts of the
4178 installation under /usr/local, that's ok: you will be prompted
4179 separately for each of the installation directories, the prefix being
4180 only used to set the defaults.
4181
4182 EOM
4183 fn=d~
4184 rp='Installation prefix to use?'
4185 . ./getfile
4186 oldprefix=''
4187 case "$prefix" in
4188 '') ;;
4189 *)
4190         case "$ans" in
4191         "$prefix") ;;
4192         *) oldprefix="$prefix";;
4193         esac
4194         ;;
4195 esac
4196 prefix="$ans"
4197 prefixexp="$ansexp"
4198
4199 : allow them to override the AFS root
4200 case "$afsroot" in
4201 '')     afsroot=/afs ;;
4202 *)      afsroot=$afsroot ;;
4203 esac
4204
4205 : is AFS running?
4206 echo " "
4207 case "$afs" in
4208 $define|true)   afs=true ;;
4209 $undef|false)   afs=false ;;
4210 *)      if $test -d $afsroot; then
4211                 afs=true
4212         else
4213                 afs=false
4214         fi
4215         ;;
4216 esac
4217 if $afs; then
4218         echo "AFS may be running... I'll be extra cautious then..." >&4
4219 else
4220         echo "AFS does not seem to be running..." >&4
4221 fi
4222
4223 : determine installation prefix for where package is to be installed.
4224 if $afs; then
4225 $cat <<EOM
4226
4227 Since you are running AFS, I need to distinguish the directory in which
4228 files will reside from the directory in which they are installed (and from
4229 which they are presumably copied to the former directory by occult means).
4230
4231 EOM
4232         case "$installprefix" in
4233         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
4234         *) dflt="$installprefix";;
4235         esac
4236 else
4237 $cat <<EOM
4238
4239 In some special cases, particularly when building $package for distribution,
4240 it is convenient to distinguish the directory in which files should be
4241 installed from the directory ($prefix) in which they will
4242 eventually reside.  For most users, these two directories are the same.
4243
4244 EOM
4245         case "$installprefix" in
4246         '') dflt=$prefix ;;
4247         *) dflt=$installprefix;;
4248         esac
4249 fi
4250 fn=d~
4251 rp='What installation prefix should I use for installing files?'
4252 . ./getfile
4253 installprefix="$ans"
4254 installprefixexp="$ansexp"
4255
4256 : Perform the prefixexp/installprefixexp correction if necessary
4257 cat <<EOS >installprefix
4258 $startsh
4259 EOS
4260 cat <<'EOSC' >>installprefix
4261 : Change installation prefix, if necessary.
4262 if $test X"$prefix" != X"$installprefix"; then
4263     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
4264 else
4265     eval "install${prefixvar}=\"\$${prefixvar}exp\""
4266 fi
4267 EOSC
4268 chmod +x installprefix
4269 $eunicefix installprefix
4270
4271 : Set variables such as privlib and privlibexp from the output of ./getfile
4272 : performing the prefixexp/installprefixexp correction if necessary.
4273 cat <<EOS >setprefixvar
4274 $startsh
4275 EOS
4276 cat <<'EOSC' >>setprefixvar
4277 eval "${prefixvar}=\"\$ans\""
4278 eval "${prefixvar}exp=\"\$ansexp\""
4279 . ./installprefix
4280 EOSC
4281 chmod +x setprefixvar
4282 $eunicefix setprefixvar
4283
4284 : set up the script used to warn in case of inconsistency
4285 cat <<EOS >whoa
4286 $startsh
4287 EOS
4288 cat <<'EOSC' >>whoa
4289 dflt=y
4290 case "$hint" in
4291     recommended)
4292         case "$hintfile" in
4293         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
4294                 ;;
4295         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
4296                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
4297                 ;;
4298         esac
4299         ;;
4300     *)  echo " "
4301         echo "*** WHOA THERE!!! ***" >&4
4302         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
4303         ;;
4304 esac
4305 rp="    Keep the $hint value?"
4306 . ./myread
4307 case "$ans" in
4308 y) td=$was; tu=$was;;
4309 esac
4310 EOSC
4311
4312 : function used to set '$1' to '$val'
4313 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4314 case "$val$was" in
4315 $define$undef) . ./whoa; eval "$var=\$td";;
4316 $undef$define) . ./whoa; eval "$var=\$tu";;
4317 *) eval "$var=$val";;
4318 esac'
4319
4320 : get the patchlevel
4321 echo " "
4322 echo "Getting the current patchlevel..." >&4
4323 if $test -r $rsrc/patchlevel.h;then
4324         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4325         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4326         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4327         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4328         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4329         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4330         perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4331 else
4332         revision=0
4333         patchlevel=0
4334         subversion=0
4335         api_revision=0
4336         api_version=0
4337         api_subversion=0
4338         perl_patchlevel=0
4339         $echo "(You do not have patchlevel.h.  Eek.)"
4340 fi
4341 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4342 version_patchlevel_string="version $patchlevel subversion $subversion"
4343 case "$perl_patchlevel" in
4344 0|'') ;;
4345 *)  perl_patchlevel=`echo $perl_patchlevel | sed 's/.* //'`
4346     version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel"
4347     ;;
4348 esac
4349
4350 $echo "(You have $package $version_patchlevel_string.)"
4351
4352 case "$osname" in
4353 dos|vms)
4354         : XXX Should be a Configure test for double-dots in filenames.
4355         version=`echo $revision $patchlevel $subversion | \
4356                  $awk '{ printf "%d_%d_%d", $1, $2, $3 }'`
4357         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4358                  $awk '{ printf "%d_%d_%d", $1, $2, $3 }'`
4359         ;;
4360 *)
4361         version=`echo $revision $patchlevel $subversion | \
4362                  $awk '{ printf "%d.%d.%d", $1, $2, $3 }'`
4363         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4364                  $awk '{ printf "%d.%d.%d", $1, $2, $3 }'`
4365         ;;
4366 esac
4367 : Special case the 5.005_xx maintenance series, which used 5.005
4368 : without any subversion label as a subdirectory in $sitelib
4369 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4370         api_versionstring='5.005'
4371 fi
4372
4373 : Do we want threads support and if so, what type
4374 case "$usethreads" in
4375 $define|true|[yY]*)     dflt='y';;
4376 *)     # Catch case where user specified ithreads or 5005threads but
4377        # forgot -Dusethreads (A.D. 4/2002)
4378        case "$useithreads$use5005threads" in
4379        *$define*)       dflt='y';;
4380        *)               dflt='n';;
4381        esac
4382        ;;
4383 esac
4384 cat <<EOM
4385
4386 Perl can be built to offer a form of threading support on some systems
4387 To do so, Configure can be run with -Dusethreads.
4388
4389 Note that Perl built with threading support runs slightly slower
4390 and uses slightly more memory than plain Perl.
4391
4392 If this doesn't make any sense to you, just accept the default '$dflt'.
4393 EOM
4394 rp='Build a threading Perl?'
4395 . ./myread
4396 case "$ans" in
4397 y|Y)    val="$define" ;;
4398 *)      val="$undef" ;;
4399 esac
4400 set usethreads
4401 eval $setvar
4402
4403 if $test $patchlevel -lt 9; then
4404     case "$usethreads" in
4405     $define)
4406         : Default to ithreads unless overridden on command line or with
4407         : old config.sh
4408         dflt='y'
4409         case "$use5005threads" in
4410                 $define|true|[yY]*)
4411                         echo "5.005 threads are no longer supported"
4412                         exit 1
4413                 ;;
4414         esac
4415         case "$useithreads" in
4416                 $undef|false|[nN]*) dflt='n';;
4417         esac
4418         rp='Use the newer interpreter-based ithreads?'
4419         . ./myread
4420         case "$ans" in
4421         y|Y)    val="$define" ;;
4422         *)      val="$undef" ;;
4423         esac
4424         set useithreads
4425         eval $setvar
4426         : Now set use5005threads to the opposite value.
4427         case "$useithreads" in
4428         $define) val="$undef" ;;
4429         *) val="$define" ;;
4430         esac
4431         set use5005threads
4432         eval $setvar
4433         ;;
4434     *)
4435         useithreads="$undef"
4436         use5005threads="$undef"
4437         ;;
4438     esac
4439
4440     case "$useithreads$use5005threads" in
4441     "$define$define")
4442         $cat >&4 <<EOM
4443
4444 You cannot have both the ithreads and the 5.005 threads enabled
4445 at the same time.  Disabling the 5.005 threads since they are
4446 much less stable than the ithreads.
4447
4448 EOM
4449         use5005threads="$undef"
4450         ;;
4451     esac
4452
4453 else
4454 : perl-5.9.x and later
4455
4456     if test X"$usethreads" = "X$define"; then
4457         case "$use5005threads" in
4458             $define|true|[yY]*)
4459                 $cat >&4 <<EOM
4460
4461 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4462
4463 EOM
4464             ;;
4465         esac
4466     fi
4467
4468     use5005threads="$undef"
4469     useithreads="$usethreads"
4470 fi
4471
4472 case "$d_oldpthreads" in
4473 '')     : Configure tests would be welcome here.  For now, assume undef.
4474         val="$undef" ;;
4475 *)      val="$d_oldpthreads" ;;
4476 esac
4477 set d_oldpthreads
4478 eval $setvar
4479
4480
4481 : Look for a hint-file generated 'call-back-unit'.  If the
4482 : user has specified that a threading perl is to be built,
4483 : we may need to set or change some other defaults.
4484 if $test -f usethreads.cbu; then
4485     echo "Your platform has some specific hints regarding threaded builds, using them..."
4486     . ./usethreads.cbu
4487 else
4488     case "$usethreads" in
4489         "$define"|true|[yY]*)
4490                 $cat <<EOM
4491 (Your platform does not have any specific hints for threaded builds.
4492  Assuming POSIX threads, then.)
4493 EOM
4494         ;;
4495     esac
4496 fi
4497
4498 : Check if multiplicity is required
4499 cat <<EOM
4500
4501 Perl can be built so that multiple Perl interpreters can coexist
4502 within the same Perl executable.
4503 EOM
4504
4505 case "$useithreads" in
4506 $define)
4507         cat <<EOM
4508 This multiple interpreter support is required for interpreter-based threads.
4509 EOM
4510         val="$define"
4511         ;;
4512 *)      case "$usemultiplicity" in
4513         $define|true|[yY]*)     dflt='y';;
4514         *) dflt='n';;
4515         esac
4516         echo " "
4517         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4518         rp='Build Perl for multiplicity?'
4519         . ./myread
4520         case "$ans" in
4521         y|Y)    val="$define" ;;
4522         *)      val="$undef" ;;
4523         esac
4524         ;;
4525 esac
4526 set usemultiplicity
4527 eval $setvar
4528
4529 : Check if morebits is requested
4530 case "$usemorebits" in
4531 "$define"|true|[yY]*)
4532         use64bitint="$define"
4533         uselongdouble="$define"
4534         usemorebits="$define"
4535         ;;
4536 *)      usemorebits="$undef"
4537         ;;
4538 esac
4539
4540 : Determine the C compiler to be used
4541 echo " "
4542 case "$cc" in
4543 '') dflt=cc;;
4544 *) dflt="$cc";;
4545 esac
4546 rp="Use which C compiler?"
4547 . ./myread
4548 cc="$ans"
4549
4550 : See whether they have no cc but they do have gcc
4551 . ./trygcc
4552 if $test -f cc.cbu; then
4553     . ./cc.cbu
4554 fi
4555 . ./checkcc
4556
4557 : make some quick guesses about what we are up against
4558 echo " "
4559 $echo $n "Hmm...  $c"
4560 echo exit 1 >bsd
4561 echo exit 1 >usg
4562 echo exit 1 >v7
4563 echo exit 1 >osf1
4564 echo exit 1 >eunice
4565 echo exit 1 >xenix
4566 echo exit 1 >venix
4567 echo exit 1 >os2
4568 d_bsd="$undef"
4569 $cat $sysroot/usr/include/signal.h $sysroot/usr/include/sys/signal.h >foo 2>/dev/null
4570 if test -f /osf_boot || $contains 'OSF/1' $sysroot/usr/include/ctype.h >/dev/null 2>&1
4571 then
4572         echo "Looks kind of like an OSF/1 system, but we'll see..."
4573         echo exit 0 >osf1
4574 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4575         xxx=`./loc addbib blurfl $pth`
4576         if $test -f $xxx; then
4577         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4578                 echo exit 0 >bsd
4579                 echo exit 0 >usg
4580         else
4581                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4582                         echo "Looks kind of like an extended USG system, but we'll see..."
4583                 else
4584                         echo "Looks kind of like a USG system, but we'll see..."
4585                 fi
4586                 echo exit 0 >usg
4587         fi
4588 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4589         echo "Looks kind of like a BSD system, but we'll see..."
4590         d_bsd="$define"
4591         echo exit 0 >bsd
4592 else
4593         echo "Looks kind of like a Version 7 system, but we'll see..."
4594         echo exit 0 >v7
4595 fi
4596 case "$eunicefix" in
4597 *unixtovms*)
4598         $cat <<'EOI'
4599 There is, however, a strange, musty smell in the air that reminds me of
4600 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4601 EOI
4602         echo exit 0 >eunice
4603         d_eunice="$define"
4604 : it so happens the Eunice I know will not run shell scripts in Unix format
4605         ;;
4606 *)
4607         echo " "
4608         echo "Congratulations.  You aren't running Eunice."
4609         d_eunice="$undef"
4610         ;;
4611 esac
4612 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4613 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4614 : semicolon as a patch separator
4615 case "$p_" in
4616 :) ;;
4617 *)
4618         $cat <<'EOI'
4619 I have the feeling something is not exactly right, however...don't tell me...
4620 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4621 (Or you may be running DOS with DJGPP.)
4622 EOI
4623         echo exit 0 >os2
4624         ;;
4625 esac
4626 if test -f /xenix; then
4627         echo "Actually, this looks more like a XENIX system..."
4628         echo exit 0 >xenix
4629         d_xenix="$define"
4630 else
4631         echo " "
4632         echo "It's not Xenix..."
4633         d_xenix="$undef"
4634 fi
4635 chmod +x xenix
4636 $eunicefix xenix
4637 if test -f /venix; then
4638         echo "Actually, this looks more like a VENIX system..."
4639         echo exit 0 >venix
4640 else
4641         echo " "
4642         if ./xenix; then
4643                 : null
4644         else
4645                 echo "Nor is it Venix..."
4646         fi
4647 fi
4648 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4649 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4650 $rm -f foo
4651
4652 : Check if we are using GNU gcc and what its version is
4653 echo " "
4654 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4655 $cat >try.c <<EOM
4656 #include <stdio.h>
4657 int main() {
4658 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4659 #ifdef __VERSION__
4660         printf("%s\n", __VERSION__);
4661 #else
4662         printf("%s\n", "1");
4663 #endif
4664 #endif
4665         return(0);
4666 }
4667 EOM
4668 if $cc -o try $ccflags $ldflags try.c; then
4669         gccversion=`$run ./try`
4670         case "$gccversion" in
4671         '') echo "You are not using GNU cc." ;;
4672         *)  echo "You are using GNU cc $gccversion."
4673             ccname=gcc
4674             ;;
4675         esac
4676 else
4677         echo " "
4678         echo "*** WHOA THERE!!! ***" >&4
4679         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4680         case "$knowitall" in
4681         '')
4682         echo "    You'd better start hunting for one and let me know about it." >&4
4683                 exit 1
4684                 ;;
4685         esac
4686 fi
4687 $rm -f try try.*
4688 case "$gccversion" in
4689 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4690 esac
4691 case "$gccversion" in
4692 '') gccosandvers='' ;;
4693 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4694    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4695    gccshortvers=''
4696    case "$gccosandvers" in
4697    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4698    $osname$osvers) ;; # looking good
4699    $osname*) cat <<EOM >&4
4700
4701 *** WHOA THERE!!! ***
4702
4703     Your gcc has not been compiled for the exact release of
4704     your operating system ($gccosandvers versus $osname$osvers).
4705
4706     In general it is a good idea to keep gcc synchronized with
4707     the operating system because otherwise serious problems
4708     may ensue when trying to compile software, like Perl.
4709
4710     I'm trying to be optimistic here, though, and will continue.
4711     If later during the configuration and build icky compilation
4712     problems appear (headerfile conflicts being the most common
4713     manifestation), I suggest reinstalling the gcc to match
4714     your operating system release.
4715
4716 EOM
4717       ;;
4718    *) gccosandvers='' ;; # failed to parse, better be silent
4719    esac
4720    ;;
4721 esac
4722 case "$ccname" in
4723 '') ccname="$cc" ;;
4724 esac
4725
4726 # gcc 3.* complain about adding -Idirectories that they already know about,
4727 # so we will take those off from locincpth.
4728 case "$gccversion" in
4729 3*)
4730     echo "main(){}">try.c
4731     for incdir in $locincpth; do
4732        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4733              grep '^c[cp]p*[01]: warning: changing search order '`
4734        if test "X$warn" != X; then
4735            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4736        fi
4737     done
4738     $rm -f try try.*
4739 esac
4740
4741 # gcc 4.9 by default does some optimizations that break perl.
4742 # see ticket 121505.
4743 #
4744 # The -fwrapv disables those optimizations (and probably others,) so
4745 # for gcc 4.9 (and later, since the optimizations probably won't go
4746 # away), add -fwrapv unless the user requests -fno-wrapv, which
4747 # disables -fwrapv, or if the user requests -fsanitize=undefined,
4748 # which turns the overflows -fwrapv ignores into runtime errors.
4749 case "$gccversion" in
4750 4.[3-9].*|4.[1-9][0-9]*|[5-9].*|[1-9][0-9]*)
4751     case "$ccflags" in
4752     *-fno-wrapv*|*-fsanitize=undefined*|*-fwrapv*) ;;
4753     *) ccflags="$ccflags -fwrapv" ;;
4754     esac
4755 esac
4756
4757 : What should the include directory be ?
4758 : Use sysroot if set, so findhdr looks in the right place.
4759 echo " "
4760 $echo $n "Hmm...  $c"
4761 dflt="$sysroot/usr/include"
4762 incpath=''
4763 mips_type=''
4764 if $test -f /bin/mips && /bin/mips; then
4765         echo "Looks like a MIPS system..."
4766         $cat >usr.c <<'EOCP'
4767 #ifdef SYSTYPE_BSD43
4768 /bsd43
4769 #endif
4770 EOCP
4771         if $cc $cppflags -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4772                 dflt='/bsd43/usr/include'
4773                 incpath='/bsd43'
4774                 mips_type='BSD 4.3'
4775         else
4776                 mips_type='System V'
4777         fi
4778         $rm -f usr.c usr.out
4779         echo "and you're compiling with the $mips_type compiler and libraries."
4780         xxx_prompt=y
4781         echo "exit 0" >mips
4782 else
4783         echo "Doesn't look like a MIPS system."
4784         xxx_prompt=n
4785         echo "exit 1" >mips
4786 fi
4787 chmod +x mips
4788 $eunicefix mips
4789 case "$usrinc" in
4790 '') ;;
4791 *) dflt="$usrinc";;
4792 esac
4793 case "$xxx_prompt" in
4794 y)      fn=d/
4795         echo " "
4796         rp='Where are the include files you want to use?'
4797         . ./getfile
4798         usrinc="$ans"
4799         ;;
4800 *)      usrinc="$dflt"
4801         ;;
4802 esac
4803
4804 : see how we invoke the C preprocessor
4805 echo " "
4806 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4807 cat <<'EOT' >testcpp.c
4808 #define ABC abc
4809 #define XYZ xyz
4810 ABC.XYZ
4811 EOT
4812 cd ..
4813 if test ! -f cppstdin; then
4814         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4815                 # AIX cc -E doesn't show the absolute headerfile
4816                 # locations but we'll cheat by using the -M flag.
4817                 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
4818         else
4819                 echo 'cat >.$$.c; '"$cc $cppflags"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4820         fi
4821 else
4822         echo "Keeping your $hint cppstdin wrapper."
4823 fi
4824 chmod 755 cppstdin
4825 wrapper=`pwd`/cppstdin
4826 ok='false'
4827 cd UU
4828
4829 if $test "X$cppstdin" != "X" && \
4830         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4831         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4832 then
4833         echo "You used to use $cppstdin $cppminus so we'll use that again."
4834         case "$cpprun" in
4835         '') echo "But let's see if we can live without a wrapper..." ;;
4836         *)
4837                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4838                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4839                 then
4840                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4841                         ok='true'
4842                 else
4843                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4844                 fi
4845                 ;;
4846         esac
4847 else
4848         case "$cppstdin" in
4849         '') ;;
4850         *)
4851                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4852                 ;;
4853         esac
4854 fi
4855
4856 if $ok; then
4857         : nothing
4858 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4859         $cc -E <testcpp.c >testcpp.out 2>&1; \
4860         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4861         echo "Yup, it does."
4862         x_cpp="$cc $cppflags -E"
4863         x_minus='';
4864 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4865         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4866         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4867         echo "Yup, it does."
4868         x_cpp="$cc $cppflags -E"
4869         x_minus='-';
4870 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4871         $cc -P <testcpp.c >testcpp.out 2>&1; \
4872         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4873         echo "Yipee, that works!"
4874         x_cpp="$cc $cppflags -P"
4875         x_minus='';
4876 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4877         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4878         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4879         echo "At long last!"
4880         x_cpp="$cc $cppflags -P"
4881         x_minus='-';
4882 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4883         $cpp <testcpp.c >testcpp.out 2>&1; \
4884         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4885         echo "It works!"
4886         x_cpp="$cpp $cppflags"
4887         x_minus='';
4888 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4889         $cpp - <testcpp.c >testcpp.out 2>&1; \
4890         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4891         echo "Hooray, it works!  I was beginning to wonder."
4892         x_cpp="$cpp $cppflags"
4893         x_minus='-';
4894 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4895         $wrapper <testcpp.c >testcpp.out 2>&1; \
4896         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4897         x_cpp="$wrapper"
4898         x_minus=''
4899         echo "Eureka!"
4900 else
4901         dflt=''
4902         rp="No dice.  I can't find a C preprocessor.  Name one:"
4903         . ./myread
4904         x_cpp="$ans"
4905         x_minus=''
4906         $x_cpp <testcpp.c >testcpp.out 2>&1
4907         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4908                 echo "OK, that will do." >&4
4909         else
4910 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4911                 exit 1
4912         fi
4913 fi
4914
4915 case "$ok" in
4916 false)
4917         cppstdin="$x_cpp"
4918         cppminus="$x_minus"
4919         cpprun="$x_cpp"
4920         cpplast="$x_minus"
4921         set X $x_cpp
4922         shift
4923         case "$1" in
4924         "$cpp")
4925                 echo "Perhaps can we force $cc -E using a wrapper..."
4926                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4927                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4928                 then
4929                         echo "Yup, we can."
4930                         cppstdin="$wrapper"
4931                         cppminus='';
4932                 else
4933                         echo "Nope, we'll have to live without it..."
4934                 fi
4935                 ;;
4936         esac
4937         case "$cpprun" in
4938         "$wrapper")
4939                 cpprun=''
4940                 cpplast=''
4941                 ;;
4942         esac
4943         ;;
4944 esac
4945
4946 case "$cppstdin" in
4947 "$wrapper"|'cppstdin') ;;
4948 *) $rm -f $wrapper;;
4949 esac
4950 $rm -f testcpp.c testcpp.out
4951
4952 : Adjust cppfilter for path component separator
4953 case "$osname" in
4954 vos) cppfilter="tr '\\\\>' '/' |" ;; # path component separator is >
4955 os2) cppfilter="sed -e 's|\\\\\\\\|/|g' |" ;; # path component separator is \
4956 *)   cppfilter='' ;;
4957 esac
4958
4959 : Use gcc to determine libpth and incpth
4960 # If using gcc or clang, we can get better values for libpth, incpth
4961 # and usrinc directly from the compiler.
4962 # Note that ccname for clang is also gcc.
4963 case "$ccname" in
4964     gcc)
4965         $echo 'extern int foo;' > try.c
4966         set X `$cppstdin -v try.c 2>&1 | $awk '/^#include </,/^End of search /'|$cppfilter $grep '/include'`
4967         shift
4968         if $test $# -gt 0; then
4969             incpth="$incpth $*"
4970             incpth="`$echo $incpth|$sed 's/^ //'`"
4971             for i in $*; do
4972                 j="`$echo $i|$sed 's,/include$,/lib,'`"
4973                 if $test -d $j; then
4974                     libpth="$libpth $j"
4975                 fi
4976             done
4977             libpth="`$echo $libpth|$sed 's/^ //'`"
4978             for xxx in $libpth $loclibpth $plibpth $glibpth; do
4979                 if $test -d $xxx; then
4980                     case " $libpth " in
4981                     *" $xxx "*) ;;
4982                     *) libpth="$libpth $xxx";;
4983                     esac
4984                 fi
4985             done
4986         fi
4987         $rm -f try.c
4988         case "$usrinc" in
4989         '') for i in $incpth; do
4990                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
4991                     usrinc="$i"
4992                     break
4993                 fi
4994             done
4995             ;;
4996         esac
4997
4998         case "$usecrosscompile" in
4999         $define|true|[yY]*)
5000             case "$incpth" in
5001                 '') echo "Incpth not defined." >&4; croak=y ;;
5002                 *)  echo "Using incpth '$incpth'." >&4 ;;
5003             esac
5004             case "$libpth" in
5005                 '') echo "Libpth not defined." >&4; croak=y ;;
5006                 *)  echo "Using libpth '$libpth'." >&4 ;;
5007             esac
5008             case "$usrinc" in
5009                 '') echo "Usrinc not defined." >&4; croak=y ;;
5010                 *)  echo "Using usrinc $usrinc." >&4 ;;
5011             esac
5012             case "$croak" in
5013                 y)
5014                 if test "X$sysroot" = X; then
5015                     echo "Cannot continue, aborting." >&4; exit 1
5016                 else
5017                     echo "Cross-compiling using sysroot $sysroot, failing to guess inc/lib paths is not fatal" >&4
5018                 fi
5019                 ;;
5020             esac
5021             ;;
5022         esac
5023     ;;
5024 esac
5025
5026 : Default value for incpth is just usrinc
5027 case "$incpth" in
5028 '') incpth="$usrinc";;
5029 esac
5030
5031 : Set private lib path
5032 case "$plibpth" in
5033 '') if ./mips; then
5034         plibpth="$incpath/usr/lib $sysroot/usr/local/lib $sysroot/usr/ccs/lib"
5035     fi;;
5036 esac
5037 case "$libpth" in
5038 ' ') dlist='';;
5039 '') dlist="$loclibpth $plibpth $glibpth";;
5040 *) dlist="$libpth";;
5041 esac
5042
5043 : Now check and see which directories actually exist, avoiding duplicates
5044 for xxx in $dlist
5045 do
5046     if $test -d $xxx; then
5047                 case " $libpth " in
5048                 *" $xxx "*) ;;
5049                 *) libpth="$libpth $xxx";;
5050                 esac
5051     fi
5052 done
5053 $cat <<'EOM'
5054
5055 Some systems have incompatible or broken versions of libraries.  Among
5056 the directories listed in the question below, please remove any you
5057 know not to be holding relevant libraries, and add any that are needed.
5058 Say "none" for none.
5059
5060 EOM
5061
5062 if test "X$sysroot" != X; then
5063     $cat <<EOM
5064 You have set sysroot to $sysroot, please supply the directories excluding sysroot
5065
5066 EOM
5067 fi
5068
5069 case "$libpth" in
5070 '') dflt='none';;
5071 *)
5072         set X $libpth
5073         shift
5074         dflt=${1+"$@"}
5075         ;;
5076 esac
5077 rp="Directories to use for library searches?"
5078 . ./myread
5079 case "$ans" in
5080 none) libpth=' ';;
5081 *) libpth="$ans";;
5082 esac
5083
5084 : compute shared library extension
5085 case "$so" in
5086 '')
5087         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
5088                 dflt='sl'
5089         else
5090                 dflt='so'
5091         fi
5092         ;;
5093 *) dflt="$so";;
5094 esac
5095 $cat <<EOM
5096
5097 On some systems, shared libraries may be available.  Answer 'none' if
5098 you want to suppress searching of shared libraries for the remainder
5099 of this configuration.
5100
5101 EOM
5102 rp='What is the file extension used for shared libraries?'
5103 . ./myread
5104 so="$ans"
5105
5106 : Does target system insist that shared library basenames are unique
5107 $cat << EOM
5108
5109 Some dynamic loaders assume that the *basename* of shared library filenames
5110 are globally unique.  We'll default this to undef as we assume your system
5111 is not this weird. Set to defined if you're on one of them.
5112
5113 EOM
5114
5115 dflt='n'
5116 rp='Make shared library basenames unique?'
5117 . ./myread
5118 case "$ans" in
5119 y|Y) val="$define" ;;
5120 *)   val="$undef"  ;;
5121 esac
5122 set d_libname_unique
5123 eval $setvar
5124
5125 : Define several unixisms.
5126 : Hints files or command line option can be used to override them.
5127 : The convoluted testing is in case hints files set either the old
5128 : or the new name.
5129 case "$_exe" in
5130 '')     case "$exe_ext" in
5131         '')     ;;
5132         *)      _exe="$exe_ext" ;;
5133         esac
5134         ;;
5135 esac
5136 case "$_a" in
5137 '')     case "$lib_ext" in
5138     '') _a='.a';;
5139         *)      _a="$lib_ext" ;;
5140         esac
5141         ;;
5142 esac
5143 case "$_o" in
5144 '') case "$obj_ext" in
5145         '')     _o='.o';;
5146         *)      _o="$obj_ext";;
5147         esac
5148         ;;
5149 esac
5150 case "$p_" in
5151 '') case "$path_sep" in
5152         '')     p_=':';;
5153         *)      p_="$path_sep";;
5154         esac
5155         ;;
5156 esac
5157 exe_ext=$_exe
5158 lib_ext=$_a
5159 obj_ext=$_o
5160 path_sep=$p_
5161
5162 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
5163
5164 : Which makefile gets called first.  This is used by make depend.
5165 case "$firstmakefile" in
5166 '') firstmakefile='makefile';;
5167 esac
5168
5169 : Check is we will use socks
5170 case "$usesocks" in
5171 $define|true|[yY]*)     dflt='y';;
5172 *) dflt='n';;
5173 esac
5174 cat <<EOM
5175
5176 Perl can be built to use the SOCKS proxy protocol library.  To do so,
5177 Configure must be run with -Dusesocks.  If you use SOCKS you also need
5178 to use the PerlIO abstraction layer, this will be implicitly selected.
5179
5180 If this doesn't make any sense to you, just accept the default '$dflt'.
5181 EOM
5182 rp='Build Perl for SOCKS?'
5183 . ./myread
5184 case "$ans" in
5185 y|Y)    val="$define" ;;
5186 *)      val="$undef" ;;
5187 esac
5188 set usesocks
5189 eval $setvar
5190
5191 : Check for uselongdouble support
5192 case "$ccflags" in
5193 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
5194 esac
5195
5196 case "$uselongdouble" in
5197 $define|true|[yY]*)     dflt='y';;
5198 *) dflt='n';;
5199 esac
5200 cat <<EOM
5201
5202 Perl can be built to take advantage of long doubles which
5203 (if available) may give more accuracy and range for floating point numbers.
5204
5205 If this doesn't make any sense to you, just accept the default '$dflt'.
5206 EOM
5207 rp='Try to use long doubles if available?'
5208 . ./myread
5209 case "$ans" in
5210 y|Y)    val="$define"   ;;
5211 *)      val="$undef"    ;;
5212 esac
5213 set uselongdouble
5214 eval $setvar
5215
5216 case "$uselongdouble" in
5217 true|[yY]*) uselongdouble="$define" ;;
5218 esac
5219
5220 : Look for a hint-file generated 'call-back-unit'.  If the
5221 : user has specified that long doubles should be used,
5222 : we may need to set or change some other defaults.
5223 if $test -f uselongdouble.cbu; then
5224     echo "Your platform has some specific hints regarding long doubles, using them..."
5225     . ./uselongdouble.cbu
5226 else
5227     case "$uselongdouble" in
5228         $define)
5229                 $cat <<EOM
5230 (Your platform does not have any specific hints for long doubles.)
5231 EOM
5232         ;;
5233     esac
5234 fi
5235
5236 : Check if quadmath is requested
5237 case "$usequadmath" in
5238 "$define"|true|[yY]*) usequadmath="$define" ;;
5239 *)                    usequadmath="$undef"  ;;
5240 esac
5241
5242 : Looking for optional libraries
5243 echo " "
5244 echo "Checking for optional libraries..." >&4
5245 case "$libs" in
5246 ' '|'') dflt='';;
5247 *) dflt="$libs";;
5248 esac
5249 case "$libswanted" in
5250 '') libswanted='c_s';;
5251 esac
5252 case "$usesocks" in
5253 "$define") libswanted="$libswanted socks5 socks5_sh" ;;
5254 esac
5255 case "$usecbacktrace" in
5256 "$define") libswanted="$libswanted bfd" ;;
5257 esac
5258 case "$usequadmath" in
5259 "$define") libswanted="$libswanted quadmath" ;;
5260 esac
5261 libsfound=''
5262 libsfiles=''
5263 libsdirs=''
5264 libspath=''
5265 for thisdir in $libpth $xlibpth; do
5266   test -d $thisdir && libspath="$libspath $thisdir"
5267 done
5268 for thislib in $libswanted; do
5269         for thisdir in $libspath; do
5270             xxx=''
5271             if $test ! -f "$xxx" -a "X$ignore_versioned_solibs" = "X"; then
5272                 xxx=`ls $thisdir/lib$thislib.$so.[0-9] 2>/dev/null|sed -n '$p'`
5273                 $test -f "$xxx" && eval $libscheck
5274                 $test -f "$xxx" && libstyle=shared
5275                 xxx=`ls $thisdir/lib$thislib.[0-9].$so 2>/dev/null|sed -n '$p'`
5276                 $test -f "$xxx" && eval $libscheck
5277                 $test -f "$xxx" && libstyle=shared
5278             fi
5279             if test ! -f "$xxx"; then
5280                 xxx=$thisdir/lib$thislib.$so
5281                 $test -f "$xxx" && eval $libscheck
5282                 $test -f "$xxx" && libstyle=shared
5283             fi
5284             if test ! -f "$xxx"; then
5285                 xxx=$thisdir/lib$thislib$_a
5286                 $test -f "$xxx" && eval $libscheck
5287                 $test -f "$xxx" && libstyle=static
5288             fi
5289             if test ! -f "$xxx"; then
5290                 xxx=$thisdir/$thislib$_a
5291                 $test -f "$xxx" && eval $libscheck
5292                 $test -f "$xxx" && libstyle=static
5293             fi
5294             if test ! -f "$xxx"; then
5295                 xxx=$thisdir/lib${thislib}_s$_a
5296                 $test -f "$xxx" && eval $libscheck
5297                 $test -f "$xxx" && libstyle=static
5298                 $test -f "$xxx" && thislib=${thislib}_s
5299             fi
5300             if test ! -f "$xxx"; then
5301                 xxx=$thisdir/Slib$thislib$_a
5302                 $test -f "$xxx" && eval $libscheck
5303                 $test -f "$xxx" && libstyle=static
5304             fi
5305             if $test -f "$xxx"; then
5306                 case "$libstyle" in
5307                 shared) echo "Found -l$thislib (shared)." ;;
5308                 static) echo "Found -l$thislib." ;;
5309                 *)      echo "Found -l$thislib ($libstyle)." ;;
5310                 esac
5311                 case " $dflt " in
5312                 *"-l$thislib "*);;
5313                 *) dflt="$dflt -l$thislib"
5314                    libsfound="$libsfound $xxx"
5315                    yyy=`basename $xxx`
5316                    libsfiles="$libsfiles $yyy"
5317                    yyy=`echo $xxx|$sed -e "s%/$yyy\\$%%"`
5318                    case " $libsdirs " in
5319                    *" $yyy "*) ;;
5320                    *) libsdirs="$libsdirs $yyy" ;;
5321                    esac
5322                    ;;
5323                 esac
5324                 break
5325             fi
5326         done
5327         if $test ! -f "$xxx"; then
5328             echo "No -l$thislib."
5329         fi
5330 done
5331 set X $dflt
5332 shift
5333 dflt="$*"
5334 case "$libs" in
5335 '') dflt="$dflt";;
5336 *) dflt="$libs";;
5337 esac
5338 case "$dflt" in
5339 ' '|'') dflt='none';;
5340 esac
5341
5342 $cat <<EOM
5343
5344 In order to compile $package on your machine, a number of libraries
5345 are usually needed.  Include any other special libraries here as well.
5346 Say "none" for none.  The default list is almost always right.
5347 EOM
5348
5349 echo " "
5350 rp="What libraries to use?"
5351 . ./myread
5352 case "$ans" in
5353 none) libs=' ';;
5354 *) libs="$ans";;
5355 esac
5356
5357 : determine optimization, if desired, or use for debug flag also
5358 case "$optimize" in
5359 ' '|$undef) dflt='none';;
5360 '') dflt='-O';;
5361 *) dflt="$optimize";;
5362 esac
5363 $cat <<EOH
5364
5365 By default, $package compiles with the -O flag to use the optimizer.
5366 Alternately, you might want to use the symbolic debugger, which uses
5367 the -g flag (on traditional Unix systems).  Either flag can be
5368 specified here.  To use neither flag, specify the word "none".
5369
5370 EOH
5371 rp="What optimizer/debugger flag should be used?"
5372 . ./myread
5373 optimize="$ans"
5374 case "$optimize" in
5375 'none') optimize=" ";;
5376 esac
5377
5378 : Check what DEBUGGING is required from the command line
5379 : -DEBUGGING      or -DDEBUGGING or
5380 : -DEBUGGING=both                       = -g + -DDEBUGGING
5381 : -DEBUGGING=-g   or -Doptimize=-g      = -g
5382 : -DEBUGGING=none or -UDEBUGGING        =
5383 : -DEBUGGING=old  or -DEBUGGING=default = ? $optimize
5384 case "$EBUGGING" in
5385 '')     ;;
5386 *)      DEBUGGING=$EBUGGING ;;
5387 esac
5388
5389 case "$DEBUGGING" in
5390 -g|both|$define)
5391     case "$optimize" in
5392         *-g*) ;;
5393         *)    optimize="$optimize -g" ;;
5394     esac ;;
5395 none|$undef)
5396     case "$optimize" in
5397         *-g*)   set `echo "X $optimize " | sed 's/ -g / /'`
5398                 shift
5399                 optimize="$*"
5400                 ;;
5401     esac ;;
5402 esac
5403
5404 dflt=''
5405 case "$DEBUGGING" in
5406 both|$define) dflt='-DDEBUGGING'
5407 esac
5408
5409 : argument order is deliberate, as the flag will start with - which set could
5410 : think is an option
5411 checkccflag='check=$1; flag=$2; callback=$3;
5412 echo " ";
5413 echo "Checking if your compiler accepts $flag" 2>&1;
5414 [ "X$sysroot" != "X" ] && echo "For sysroot = $sysroot";
5415 echo "int main(void) { return 0; }" > gcctest.c;
5416 if $cc $_sysroot -O2 $flag -o gcctest gcctest.c 2>gcctest.out && $run ./gcctest; then
5417     echo "Yes, it does." 2>&1;
5418     if $test -s gcctest.out ; then
5419         echo "But your platform does not like it:";
5420         cat gcctest.out;
5421     else
5422         case "$ccflags" in
5423         *$check*)
5424             echo "Leaving current flags $ccflags alone." 2>&1
5425             ;;
5426         *) dflt="$dflt $flag";
5427             eval $callback
5428             ;;
5429         esac
5430     fi
5431 else
5432     echo "Nope, it does not, but that is ok." 2>&1;
5433 fi
5434 '
5435
5436 : We will not override a previous value, but we might want to
5437 : augment a hint file
5438 case "$hint" in
5439 default|recommended)
5440         case "$gccversion" in
5441         1*) dflt="$dflt -fpcc-struct-return" ;;
5442         esac
5443         case "$optimize:$DEBUGGING" in
5444         *-g*:old) dflt="$dflt -DDEBUGGING";;
5445         esac
5446         case "$gccversion" in
5447         2*) if $test -d /etc/conf/kconfig.d &&
5448                         $contains _POSIX_VERSION $usrinc/sys/unistd.h >/dev/null 2>&1
5449                 then
5450                         # Interactive Systems (ISC) POSIX mode.
5451                         dflt="$dflt -posix"
5452                 fi
5453                 ;;
5454         esac
5455         case "$gccversion" in
5456         1*) ;;
5457         2.[0-8]*) ;;
5458         ?*)     set strict-aliasing -fno-strict-aliasing
5459                 eval $checkccflag
5460                 ;;
5461         esac
5462         # For gcc, adding -pipe speeds up compilations for some, but apparently
5463         # some assemblers can't read from stdin.  (It also slows down compilations
5464         # in other cases, but those are apparently rarer these days.)  AD 5/2004.
5465         case "$gccversion" in
5466         ?*)     set pipe -pipe
5467                 eval $checkccflag
5468                 ;;
5469         esac
5470
5471         # on x86_64 (at least) we require an extra library (libssp) in the
5472         # link command line. This library is not named, so I infer that it is
5473         # an implementation detail that may change. Hence the safest approach
5474         # is to add the flag to the flags passed to the compiler at link time,
5475         # as that way the compiler can do the right implementation dependant
5476         # thing. (NWC)
5477         case "$osname" in
5478         amigaos) ;; # -fstack-protector builds but doesn't work
5479         *)      case "$gccversion" in
5480                 ?*)     set stack-protector-strong -fstack-protector-strong
5481                         eval $checkccflag
5482                         case "$dflt" in
5483                         *-fstack-protector-strong*) ;; # It got added.
5484                         *) # Try the plain/older -fstack-protector.
5485                            set stack-protector -fstack-protector
5486                            eval $checkccflag
5487                            ;;
5488                         esac
5489                         ;;
5490                 esac
5491                 ;;
5492         esac
5493         ;;
5494 esac
5495
5496 case "$mips_type" in
5497 *BSD*|'') inclwanted="$locincpth $usrinc";;
5498 *) inclwanted="$locincpth $inclwanted $usrinc/bsd";;
5499 esac
5500 for thisincl in $inclwanted; do
5501         if $test -d $thisincl; then
5502                 if $test x$thisincl != x$usrinc; then
5503                         case "$dflt" in
5504                         *" -I$thisincl "*);;
5505                         *) dflt="$dflt -I$thisincl ";;
5506                         esac
5507                 fi
5508         fi
5509 done
5510
5511 inctest='if $contains $2 $usrinc/$1 >/dev/null 2>&1; then
5512         xxx=true;
5513 elif $contains $2 $usrinc/sys/$1 >/dev/null 2>&1; then
5514         xxx=true;
5515 else
5516         xxx=false;
5517 fi;
5518 if $xxx; then
5519         case "$dflt" in
5520         *$2*);;
5521         *) dflt="$dflt -D$2";;
5522         esac;
5523 fi'
5524
5525 set signal.h LANGUAGE_C; eval $inctest
5526
5527 case "$usesocks" in
5528 $define)
5529         ccflags="$ccflags -DSOCKS"
5530         ;;
5531 esac
5532
5533 case "$hint" in
5534 default|recommended) dflt="$ccflags $dflt" ;;
5535 *) dflt="$ccflags";;
5536 esac
5537
5538 case "$dflt" in
5539 ''|' ') dflt=none;;
5540 esac
5541
5542 $cat <<EOH
5543
5544 Your C compiler may want other flags.  For this question you should include
5545 -I/whatever and -DWHATEVER flags and any other flags used by the C compiler,
5546 but you should NOT include libraries or ld flags like -lwhatever.  If you
5547 want $package to honor its debug switch, you should include -DDEBUGGING here.
5548 Your C compiler might also need additional flags, such as -D_POSIX_SOURCE.
5549
5550 To use no flags, specify the word "none".
5551
5552 EOH
5553 set X $dflt
5554 shift
5555 dflt=${1+"$@"}
5556 rp="Any additional cc flags?"
5557 . ./myread
5558 case "$ans" in
5559 none) ccflags='';;
5560 *) ccflags="$ans";;
5561 esac
5562
5563 : the following weeds options from ccflags that are of no interest to cpp
5564 case "$cppflags" in
5565 '') cppflags="$ccflags" ;;
5566 *)  set X $ccflags; shift
5567     case " $cppflags " in
5568     *" $1 "*) ;;  # Try to avoid doubling the cppflags.
5569     *) cppflags="$cppflags $ccflags" ;;
5570     esac
5571     ;;
5572 esac
5573 case "$gccversion" in
5574 1*) cppflags="$cppflags -D__GNUC__"
5575 esac
5576 case "$mips_type" in
5577 '');;
5578 *BSD*) cppflags="$cppflags -DSYSTYPE_BSD43";;
5579 esac
5580 case "$cppflags" in
5581 '');;
5582 *)
5583         echo " "
5584         echo "Let me guess what the preprocessor flags are..." >&4
5585         set X $cppflags
5586         shift
5587         cppflags=''
5588         $cat >cpp.c <<'EOM'
5589 #define BLURFL foo
5590
5591 BLURFL xx LFRULB
5592 EOM
5593         previous=''
5594         for flag in $*
5595         do
5596                 case "$flag" in
5597                 -*) ftry="$flag";;
5598                 *) ftry="$previous $flag";;
5599                 esac
5600                 if $cppstdin -DLFRULB=bar $cppflags $ftry $cppminus <cpp.c \
5601                         >cpp1.out 2>/dev/null && \
5602                         $cpprun -DLFRULB=bar $cppflags $ftry $cpplast <cpp.c \
5603                         >cpp2.out 2>/dev/null && \
5604                         $contains 'foo.*xx.*bar' cpp1.out >/dev/null 2>&1 && \
5605                         $contains 'foo.*xx.*bar' cpp2.out >/dev/null 2>&1
5606                 then
5607                         cppflags="$cppflags $ftry"
5608                         previous=''
5609                 else
5610                         previous="$flag"
5611                 fi
5612         done
5613         set X $cppflags
5614         shift
5615         cppflags=${1+"$@"}
5616         case "$cppflags" in
5617         *-*)  echo "They appear to be: $cppflags";;
5618         esac
5619         $rm -f cpp.c cpp?.out
5620         ;;
5621 esac
5622
5623 : flags used in final linking phase
5624 case "$ldflags" in
5625 '') if ./venix; then
5626                 dflt='-i -z'
5627         else
5628                 dflt=''
5629         fi
5630         case "$ccflags" in
5631         *-posix*) dflt="$dflt -posix" ;;
5632         esac
5633         ;;
5634 *) dflt="$ldflags";;
5635 esac
5636 # See note above about -fstack-protector
5637 case "$ccflags" in
5638 *-fstack-protector-strong*)
5639         case "$dflt" in
5640         *-fstack-protector-strong*) ;; # Don't add it again
5641         *) dflt="$dflt -fstack-protector-strong" ;;
5642         esac
5643         ;;
5644 *-fstack-protector*)
5645         case "$dflt" in
5646         *-fstack-protector*) ;; # Don't add it again
5647         *) dflt="$dflt -fstack-protector" ;;
5648         esac
5649         ;;
5650 esac
5651
5652 : Try to guess additional flags to pick up local libraries.
5653 for thislibdir in $libpth; do
5654         case " $loclibpth " in
5655         *" $thislibdir "*)
5656                 case "$dflt " in
5657                 *"-L$thislibdir "*) ;;
5658                 *)  dflt="$dflt -L$thislibdir" ;;
5659                 esac
5660                 ;;
5661         esac
5662 done
5663
5664 case "$dflt" in
5665 '') dflt='none' ;;
5666 esac
5667
5668 $cat <<EOH
5669
5670 Your C linker may need flags.  For this question you should
5671 include -L/whatever and any other flags used by the C linker, but you
5672 should NOT include libraries like -lwhatever.
5673
5674 Make sure you include the appropriate -L/path flags if your C linker
5675 does not normally search all of the directories you specified above,
5676 namely
5677         $libpth
5678 To use no flags, specify the word "none".
5679
5680 EOH
5681
5682 rp="Any additional ld flags (NOT including libraries)?"
5683 . ./myread
5684 case "$ans" in
5685 none) ldflags='';;
5686 *) ldflags="$ans";;
5687 esac
5688 rmlist="$rmlist pdp11"
5689
5690 : coherency check
5691 echo " "
5692 echo "Checking your choice of C compiler and flags for coherency..." >&4
5693 $cat > try.c <<'EOF'
5694 #include <stdio.h>
5695 int main() { printf("Ok\n"); return(0); }
5696 EOF
5697 set X $cc -o try $optimize $ccflags $ldflags try.c $libs
5698 shift
5699 $cat >try.msg <<'EOM'
5700 I've tried to compile and run the following simple program:
5701
5702 EOM
5703 $cat try.c >> try.msg
5704
5705 $cat >> try.msg <<EOM
5706
5707 I used the command:
5708
5709         $*
5710         $run ./try
5711
5712 and I got the following output:
5713
5714 EOM
5715 dflt=y
5716 if $sh -c "$cc -o try $optimize $ccflags $ldflags try.c $libs" >>try.msg 2>&1; then
5717         if $sh -c "$run ./try " >>try.msg 2>&1; then
5718                 xxx=`$run ./try`
5719                 case "$xxx" in
5720                 "Ok") dflt=n ;;
5721                 *)    echo 'The program compiled OK, but produced no output.' >> try.msg ;;
5722                 esac
5723         else
5724                 echo "The program compiled OK, but exited with status $?." >>try.msg
5725                 rp="You have a problem.  Shall I abort Configure"
5726                 dflt=y
5727         fi
5728 else
5729         echo "I can't compile the test program." >>try.msg
5730         rp="You have a BIG problem.  Shall I abort Configure"
5731         dflt=y
5732 fi
5733 case "$dflt" in
5734 y)
5735         $cat try.msg >&4
5736         case "$knowitall" in
5737         '')
5738                 echo "(The supplied flags or libraries might be incorrect.)"
5739                 ;;
5740         *) dflt=n;;
5741         esac
5742         echo " "
5743         . ./myread
5744         case "$ans" in
5745         n*|N*) ;;
5746         *)      echo "Ok.  Stopping Configure." >&4
5747                 exit 1
5748                 ;;
5749         esac
5750         ;;
5751 n) echo "OK, that should do.";;
5752 esac
5753 $rm_try gcctest gcctest.out
5754
5755 : define a shorthand compile call
5756 compile='
5757 mc_file=$1;
5758 shift;
5759 case "$usedevel" in $define|true|[yY]*) if $test ! -f "${mc_file}.c"; then
5760 echo "Internal Configure script bug - compiler test file ${mc_file}.c is missing. Please report this to perlbug@perl.org" >&4;
5761 exit 1;
5762 fi;
5763 esac;
5764 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs > /dev/null 2>&1;'
5765 : define a shorthand compile call for compilations that should be ok.
5766 compile_ok='
5767 mc_file=$1;
5768 shift;
5769 $cc -o ${mc_file} $optimize $ccflags $ldflags $* ${mc_file}.c $libs;'
5770
5771 : determine filename position in cpp output
5772 echo " "
5773 echo "Computing filename position in cpp output for #include directives..." >&4
5774 case "$osname" in
5775 amigaos) fieldn=3 ;;  # Workaround for a bug in abc (pdksh).
5776 esac
5777 case "$fieldn" in
5778 '')
5779 case "$osname" in
5780 vos) testaccess=-e ;;
5781 *)   testaccess=-r ;;
5782 esac
5783 echo '#include <stdio.h>' > foo.c
5784 $cat >fieldn <<EOF
5785 $startsh
5786 $cppstdin $cppflags $cppminus <foo.c 2>/dev/null | \
5787 $grep '^[       ]*#.*stdio\.h' | \
5788 while read cline; do
5789         pos=1
5790         set \$cline
5791         while $test \$# -gt 0; do
5792                 if $test $testaccess \`echo \$1 | $tr -d '"'\`; then
5793                         echo "\$pos"
5794                         exit 0
5795                 fi
5796                 shift
5797                 pos=\`expr \$pos + 1\`
5798         done
5799 done
5800 EOF
5801 chmod +x fieldn
5802 fieldn=`./fieldn`
5803 $rm -f foo.c fieldn
5804 ;;
5805 esac
5806 case $fieldn in
5807 '') pos='???';;
5808 1) pos=first;;
5809 2) pos=second;;
5810 3) pos=third;;
5811 *) pos="${fieldn}th";;
5812 esac
5813 echo "Your cpp writes the filename in the $pos field of the line."
5814
5815 : locate header file
5816 $cat >findhdr <<EOF
5817 $startsh
5818 wanted=\$1
5819 name=''
5820 for usrincdir in $incpth
5821 do
5822         if test -f \$usrincdir/\$wanted; then
5823                 echo "\$usrincdir/\$wanted"
5824                 exit 0
5825         fi
5826 done
5827 awkprg='{ print \$$fieldn }'
5828 echo "#include <\$wanted>" > foo\$\$.c
5829 $cppstdin $cppminus $cppflags < foo\$\$.c 2>/dev/null | \
5830 $cppfilter $grep "^[    ]*#.*\$wanted" | \
5831 while read cline; do
5832         name=\`echo \$cline | $awk "\$awkprg" | $tr -d '"'\`
5833         case "\$name" in
5834         *[/\\\\]\$wanted) echo "\$name"; exit 1;;
5835         *[\\\\/]\$wanted) echo "\$name"; exit 1;;
5836         *) exit 2;;
5837         esac;
5838 done;
5839 #
5840 # status = 0: grep returned 0 lines, case statement not executed
5841 # status = 1: headerfile found
5842 # status = 2: while loop executed, no headerfile found
5843 #
5844 status=\$?
5845 $rm -f foo\$\$.c;
5846 if test \$status -eq 1; then
5847         exit 0;
5848 fi
5849 exit 1
5850 EOF
5851 chmod +x findhdr
5852
5853 : define an alternate in-header-list? function
5854 inhdr='echo " "; td=$define; tu=$undef; yyy=$@;
5855 cont=true; xxf="echo \"<\$1> found.\" >&4";
5856 case $# in 2) xxnf="echo \"<\$1> NOT found.\" >&4";;
5857 *) xxnf="echo \"<\$1> NOT found, ...\" >&4";;
5858 esac;
5859 case $# in 4) instead=instead;; *) instead="at last";; esac;
5860 while $test "$cont"; do
5861         xxx=`./findhdr $1`
5862         var=$2; eval "was=\$$2";
5863         if $test "$xxx" && $test -r "$xxx";
5864         then eval $xxf;
5865         eval "case \"\$$var\" in $undef) . ./whoa; esac"; eval "$var=\$td";
5866                 cont="";
5867         else eval $xxnf;
5868         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu"; fi;
5869         set $yyy; shift; shift; yyy=$@;
5870         case $# in 0) cont="";;
5871         2) xxf="echo \"but I found <\$1> $instead.\" >&4";
5872                 xxnf="echo \"and I did not find <\$1> either.\" >&4";;
5873         *) xxf="echo \"but I found <\$1\> instead.\" >&4";
5874                 xxnf="echo \"there is no <\$1>, ...\" >&4";;
5875         esac;
5876 done;
5877 while $test "$yyy";
5878 do set $yyy; var=$2; eval "was=\$$2";
5879         eval "case \"\$$var\" in $define) . ./whoa; esac"; eval "$var=\$tu";
5880         set $yyy; shift; shift; yyy=$@;
5881 done'
5882
5883 : see if stdlib is available
5884 set stdlib.h i_stdlib
5885 eval $inhdr
5886
5887 : check for lengths of integral types
5888 echo " "
5889 case "$intsize" in
5890 '')
5891         echo "Checking to see how big your integers are..." >&4
5892         $cat >try.c <<EOCP
5893 #include <stdio.h>
5894 #$i_stdlib I_STDLIB
5895 #ifdef I_STDLIB
5896 #include <stdlib.h>
5897 #endif
5898 int main()
5899 {
5900         printf("intsize=%d;\n", (int)sizeof(int));
5901         printf("longsize=%d;\n", (int)sizeof(long));
5902         printf("shortsize=%d;\n", (int)sizeof(short));
5903         exit(0);
5904 }
5905 EOCP
5906         set try
5907         if eval $compile_ok && $run ./try > /dev/null; then
5908                 eval `$run ./try`
5909                 echo "Your integers are $intsize bytes long."
5910                 echo "Your long integers are $longsize bytes long."
5911                 echo "Your short integers are $shortsize bytes long."
5912         else
5913                 $cat >&4 <<EOM
5914 !
5915 Help! I can't compile and run the intsize test program: please enlighten me!
5916 (This is probably a misconfiguration in your system or libraries, and
5917 you really ought to fix it.  Still, I'll try anyway.)
5918 !
5919 EOM
5920                 dflt=4
5921                 rp="What is the size of an integer (in bytes)?"
5922                 . ./myread
5923                 intsize="$ans"
5924                 dflt=$intsize
5925                 rp="What is the size of a long integer (in bytes)?"
5926                 . ./myread
5927                 longsize="$ans"
5928                 dflt=2
5929                 rp="What is the size of a short integer (in bytes)?"
5930                 . ./myread
5931                 shortsize="$ans"
5932         fi
5933         ;;
5934 esac
5935 $rm_try
5936
5937 : check for long long
5938 echo " "
5939 echo "Checking to see if you have long long..." >&4
5940 echo 'int main() { long long x = 7; return 0; }' > try.c
5941 set try
5942 if eval $compile; then
5943         val="$define"
5944         echo "You have long long."
5945 else
5946         val="$undef"
5947         echo "You do not have long long."
5948 fi
5949 $rm_try
5950 set d_longlong
5951 eval $setvar
5952
5953 : check for length of long long
5954 case "${d_longlong}${longlongsize}" in
5955 $define)
5956         echo " "
5957         echo "Checking to see how big your long longs are..." >&4
5958         $cat >try.c <<'EOCP'
5959 #include <stdio.h>
5960 int main()
5961 {
5962     printf("%d\n", (int)sizeof(long long));
5963     return(0);
5964 }
5965 EOCP
5966         set try
5967         if eval $compile_ok; then
5968                 longlongsize=`$run ./try`
5969                 echo "Your long longs are $longlongsize bytes long."
5970         else
5971                 dflt='8'
5972                 echo " "
5973                 echo "(I can't seem to compile the test program.  Guessing...)"
5974                 rp="What is the size of a long long (in bytes)?"
5975                 . ./myread
5976                 longlongsize="$ans"
5977         fi
5978         if $test "X$longsize" = "X$longlongsize"; then
5979                 echo "(That isn't any different from an ordinary long.)"
5980         fi
5981         ;;
5982 esac
5983 $rm_try
5984
5985 : see if inttypes.h is available
5986 : we want a real compile instead of Inhdr because some systems
5987 : have an inttypes.h which includes non-existent headers
5988 echo " "
5989 $cat >try.c <<EOCP
5990 #include <inttypes.h>
5991 int main() {
5992         static int32_t foo32 = 0x12345678;
5993 }
5994 EOCP
5995 set try
5996 if eval $compile; then
5997         echo "<inttypes.h> found." >&4
5998         val="$define"
5999 else
6000         echo "<inttypes.h> NOT found." >&4
6001         val="$undef"
6002 fi
6003 $rm_try
6004 set i_inttypes
6005 eval $setvar
6006
6007 : check for int64_t
6008 echo " "
6009 echo "Checking to see if you have int64_t..." >&4
6010 $cat >try.c <<EOCP
6011 #include <sys/types.h>
6012 #$i_inttypes I_INTTYPES
6013 #ifdef I_INTTYPES
6014 #include <inttypes.h>
6015 #endif
6016 int main() { int64_t x = 7; }
6017 EOCP
6018 set try
6019 if eval $compile; then
6020         val="$define"
6021         echo "You have int64_t."
6022 else
6023         val="$undef"
6024         echo "You do not have int64_t."
6025 fi
6026 $rm_try
6027 set d_int64_t
6028 eval $setvar
6029
6030 : Check if 64bit ints have a quad type
6031 echo " "
6032 echo "Checking which 64-bit integer type we could use..." >&4
6033
6034 case "$intsize" in
6035 8) val=int
6036    set quadtype
6037    eval $setvar
6038    val='"unsigned int"'
6039    set uquadtype
6040    eval $setvar
6041    quadkind=1
6042    ;;
6043 *) case "$longsize" in
6044    8) val=long
6045       set quadtype
6046       eval $setvar
6047       val='"unsigned long"'
6048       set uquadtype
6049       eval $setvar
6050       quadkind=2
6051       ;;
6052    *) case "$d_longlong:$longlongsize" in
6053       define:8)
6054         val='"long long"'
6055         set quadtype
6056         eval $setvar
6057         val='"unsigned long long"'
6058         set uquadtype
6059         eval $setvar
6060         quadkind=3
6061         ;;
6062       *) case "$d_int64_t" in
6063          define)
6064            val=int64_t
6065            set quadtype
6066            eval $setvar
6067            val=uint64_t
6068            set uquadtype
6069            eval $setvar
6070            quadkind=4
6071            ;;
6072          esac
6073          ;;
6074       esac
6075       ;;
6076    esac
6077    ;;
6078 esac
6079
6080 case "$quadtype" in
6081 '')     echo "Alas, no 64-bit integer types in sight." >&4
6082         d_quad="$undef"
6083         ;;
6084 *)      echo "We could use '$quadtype' for 64-bit integers." >&4
6085         d_quad="$define"
6086         ;;
6087 esac
6088
6089 : Do we want 64bit support
6090 case "$uselonglong" in
6091 "$define"|true|[yY]*)
6092         cat <<EOM >&4
6093
6094 *** Configure -Duselonglong is deprecated, using -Duse64bitint instead.
6095 EOM
6096         use64bitint="$define"
6097         ;;
6098 esac
6099 case "$use64bits" in
6100 "$define"|true|[yY]*)
6101         cat <<EOM >&4
6102
6103 *** Configure -Duse64bits is deprecated, using -Duse64bitint instead.
6104 EOM
6105         use64bitint="$define"
6106         ;;
6107 esac
6108 case "$use64bitints" in
6109 "$define"|true|[yY]*)
6110         cat <<EOM >&4
6111
6112 *** There is no Configure -Duse64bitints, using -Duse64bitint instead.
6113 EOM
6114         use64bitint="$define"
6115         ;;
6116 esac
6117 case "$use64bitsint" in
6118 "$define"|true|[yY]*)
6119         cat <<EOM >&4
6120
6121 *** There is no Configure -Duse64bitsint, using -Duse64bitint instead.
6122 EOM
6123         use64bitint="$define"
6124         ;;
6125 esac
6126 case "$uselonglongs" in
6127 "$define"|true|[yY]*)
6128         cat <<EOM >&4
6129
6130 *** There is no Configure -Duselonglongs, using -Duse64bitint instead.
6131 EOM
6132         use64bitint="$define"
6133         ;;
6134 esac
6135 case "$use64bitsall" in
6136 "$define"|true|[yY]*)
6137         cat <<EOM >&4
6138
6139 *** There is no Configure -Duse64bitsall, using -Duse64bitall instead.
6140 EOM
6141         use64bitall="$define"
6142         ;;
6143 esac
6144
6145 case "$ccflags" in
6146 *-DUSE_LONG_LONG*|*-DUSE_64_BIT_INT*|*-DUSE_64_BIT_ALL*) use64bitint="$define";;
6147 esac
6148 case "$use64bitall" in
6149 "$define"|true|[yY]*) use64bitint="$define" ;;
6150 esac
6151
6152 case "$longsize" in
6153 8) cat <<EOM
6154
6155 You have natively 64-bit long integers.
6156 EOM
6157    val="$define"
6158    ;;
6159 *) case "$use64bitint" in
6160    "$define"|true|[yY]*) dflt='y';;
6161    *) dflt='n';;
6162    esac
6163    case "$d_quad" in
6164    "$define") ;;
6165    *) dflt='n' ;;
6166    esac
6167    cat <<EOM
6168
6169 Perl can be built to take advantage of 64-bit integer types
6170 on some systems.  To do so, Configure can be run with -Duse64bitint.
6171 Choosing this option will most probably introduce binary incompatibilities.
6172
6173 If this doesn't make any sense to you, just accept the default '$dflt'.
6174 (The default has been chosen based on your configuration.)
6175 EOM
6176    rp='Try to use 64-bit integers, if available?'
6177    . ./myread
6178    case "$ans" in
6179    [yY]*) val="$define" ;;
6180    *)     val="$undef"  ;;
6181    esac
6182    ;;
6183 esac
6184 set use64bitint
6185 eval $setvar
6186
6187 case "$use64bitall" in
6188 "$define"|true|[yY]*) dflt='y' ;;
6189 *) case "$longsize" in
6190    8) dflt='y' ;;
6191    *) dflt='n' ;;
6192    esac
6193    ;;
6194 esac
6195 cat <<EOM
6196
6197 You may also choose to try maximal 64-bitness.  It means using as much
6198 64-bitness as possible on the platform.  This in turn means even more
6199 binary incompatibilities.  On the other hand, your platform may not
6200 have any more 64-bitness available than what you already have chosen.
6201
6202 If this doesn't make any sense to you, just accept the default '$dflt'.
6203 (The default has been chosen based on your configuration.)
6204 EOM
6205 rp='Try to use maximal 64-bit support, if available?'
6206 . ./myread
6207 case "$ans" in
6208 [yY]*) val="$define" ;;
6209 *)     val="$undef"  ;;
6210 esac
6211 set use64bitall
6212 eval $setvar
6213 case "$use64bitall" in
6214 "$define")
6215         case "$use64bitint" in
6216         "$undef")
6217                 cat <<EOM
6218
6219 Since you have chosen a maximally 64-bit build, I'm also turning on
6220 the use of 64-bit integers.
6221 EOM
6222                 use64bitint="$define" ;;
6223         esac
6224         ;;
6225 esac
6226
6227 : Look for a hint-file generated 'call-back-unit'.  If the
6228 : user has specified that a 64-bit perl is to be built,
6229 : we may need to set or change some other defaults.
6230 if $test -f use64bitint.cbu; then
6231         echo "Your platform has some specific hints regarding 64-bit integers, using them..."
6232         . ./use64bitint.cbu
6233 fi
6234 case "$use64bitint" in
6235 "$define"|true|[yY]*)
6236         : This test was common to all the OpenBSD forks, and seems harmless for
6237         : other platforms:
6238         echo " "
6239         echo "Checking if your C library has broken 64-bit functions..." >&4
6240         cat >try.c <<EOCP
6241 #include <stdio.h>
6242 typedef $uquadtype myULL;
6243 int main (void)
6244 {
6245     struct {
6246         double d;
6247         myULL  u;
6248     } *p, test[] = {
6249         {4294967303.15, 4294967303ULL},
6250         {4294967294.2,  4294967294ULL},
6251         {4294967295.7,  4294967295ULL},
6252         {0.0, 0ULL}
6253     };
6254     for (p = test; p->u; p++) {
6255         myULL x = (myULL)p->d;
6256         if (x != p->u) {
6257             printf("buggy\n");
6258             return 0;
6259         }
6260     }
6261     printf("ok\n");
6262     return 0;
6263 }
6264 EOCP
6265         set try
6266         if eval $compile_ok; then
6267             libcquad=`$run ./try`
6268             echo "Your C library's 64-bit functions are $libcquad."
6269         else
6270             echo "(I can't seem to compile the test program.)"
6271             echo "Assuming that your C library's 64-bit functions are ok."
6272             libcquad="ok"
6273         fi
6274         $rm_try
6275
6276         case "$libcquad" in
6277             buggy*)
6278                 cat >&4 <<EOM
6279
6280 *** You have a C library with broken 64-bit functions.
6281 *** 64-bit support does not work reliably in this configuration.
6282 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
6283 *** Cannot continue, aborting.
6284
6285 EOM
6286                 exit 1
6287                 ;;
6288         esac
6289         case "$longsize" in
6290         4) case "$archname64" in
6291            '') archname64=64int ;;
6292            esac
6293            ;;
6294         esac
6295         ;;
6296 esac
6297
6298 : Look for a hint-file generated 'call-back-unit'.  If the
6299 : user has specified that a maximally 64-bit perl is to be built,
6300 : we may need to set or change some other defaults.
6301 if $test -f use64bitall.cbu; then
6302         echo "Your platform has some specific hints regarding 64-bit builds, using them..."
6303         . ./use64bitall.cbu
6304 fi
6305 case "$use64bitall" in
6306 "$define"|true|[yY]*)
6307         case "$longsize" in
6308         4) case "$archname64" in
6309            ''|64int) archname64=64all ;;
6310            esac
6311            ;;
6312         esac
6313         ;;
6314 esac
6315
6316 case "$d_quad:$use64bitint" in
6317 $undef:$define)
6318         cat >&4 <<EOF
6319
6320 *** You have chosen to use 64-bit integers,
6321 *** but none can be found.
6322 *** Please rerun Configure without -Duse64bitint and/or -Dusemorebits.
6323 *** Cannot continue, aborting.
6324
6325 EOF
6326         exit 1
6327         ;;
6328 esac
6329
6330 : Check if we are using the GNU C library
6331 echo " "
6332 echo "Checking for GNU C Library..." >&4
6333 cat >try.c <<'EOCP'
6334 /* Find out version of GNU C library.  __GLIBC__ and __GLIBC_MINOR__
6335    alone are insufficient to distinguish different versions, such as
6336    2.0.6 and 2.0.7.  The function gnu_get_libc_version() appeared in
6337    libc version 2.1.0.      A. Dougherty,  June 3, 2002.
6338 */
6339 #include <stdio.h>
6340 int main(void)
6341 {
6342 #ifdef __GLIBC__
6343 #   ifdef __GLIBC_MINOR__
6344 #       if __GLIBC__ >= 2 && __GLIBC_MINOR__ >= 1 && !defined(__cplusplus)
6345 #           include <gnu/libc-version.h>
6346             printf("%s\n",  gnu_get_libc_version());
6347 #       else
6348             printf("%d.%d\n",  __GLIBC__, __GLIBC_MINOR__);
6349 #       endif
6350 #   else
6351         printf("%d\n",  __GLIBC__);
6352 #   endif
6353     return 0;
6354 #else
6355     return 1;
6356 #endif
6357 }
6358 EOCP
6359 set try
6360 if eval $compile_ok && $run ./try > glibc.ver; then
6361         val="$define"
6362         gnulibc_version=`$cat glibc.ver`
6363         echo "You are using the GNU C Library version $gnulibc_version"
6364 else
6365         val="$undef"
6366         gnulibc_version=''
6367         echo "You are not using the GNU C Library"
6368 fi
6369 $rm_try glibc.ver
6370 set d_gnulibc
6371 eval $setvar
6372
6373 : see if nm is to be used to determine whether a symbol is defined or not
6374 case "$usenm" in
6375 '')
6376         dflt=''
6377         case "$d_gnulibc" in
6378         "$define")
6379                 echo " "
6380                 echo "nm probably won't work on the GNU C Library." >&4
6381                 dflt=n
6382                 ;;
6383         esac
6384         case "$dflt" in
6385         '')
6386                 if $test "$osname" = aix -a "X$PASE" != "Xdefine" -a ! -f /lib/syscalls.exp; then
6387                         echo " "
6388                         echo "Whoops!  This is an AIX system without /lib/syscalls.exp!" >&4
6389                         echo "'nm' won't be sufficient on this system." >&4
6390                         dflt=n
6391                 fi
6392                 ;;
6393         esac
6394         case "$dflt" in
6395         '') dflt=`$egrep 'inlibc|csym' $rsrc/Configure | wc -l 2>/dev/null`
6396                 if $test $dflt -gt 20; then
6397                         dflt=y
6398                 else
6399                         dflt=n
6400                 fi
6401                 ;;
6402         esac
6403         ;;
6404 *)
6405         case "$usenm" in
6406         true|$define) dflt=y;;
6407         *) dflt=n;;
6408         esac
6409         ;;
6410 esac
6411 $cat <<EOM
6412
6413 I can use $nm to extract the symbols from your C libraries. This
6414 is a time consuming task which may generate huge output on the disk (up
6415 to 3 megabytes) but that should make the symbols extraction faster. The
6416 alternative is to skip the 'nm' extraction part and to compile a small
6417 test program instead to determine whether each symbol is present. If
6418 you have a fast C compiler and/or if your 'nm' output cannot be parsed,
6419 this may be the best solution.
6420
6421 You probably shouldn't let me use 'nm' if you are using the GNU C Library.
6422
6423 EOM
6424 rp="Shall I use $nm to extract C symbols from the libraries?"
6425 . ./myread
6426 case "$ans" in
6427 [Nn]*) usenm=false;;
6428 *) usenm=true;;
6429 esac
6430
6431 runnm=$usenm
6432 case "$reuseval" in
6433 true) runnm=false;;
6434 esac
6435
6436 : nm options which may be necessary
6437 case "$nm_opt" in
6438 '') if $test -f /mach_boot; then
6439                 nm_opt=''       # Mach
6440         elif $test -d /usr/ccs/lib; then
6441                 nm_opt='-p'     # Solaris (and SunOS?)
6442         elif $test -f /dgux; then
6443                 nm_opt='-p'     # DG-UX
6444         elif $test -f /lib64/rld; then
6445                 nm_opt='-p'     # 64-bit Irix
6446         else
6447                 nm_opt=''
6448         fi;;
6449 esac
6450
6451 : nm options which may be necessary for shared libraries but illegal
6452 : for archive libraries.  Thank you, Linux.
6453 case "$nm_so_opt" in
6454 '')     case "$myuname" in
6455         *linux*|gnu*)
6456                 if $nm --help | $grep 'dynamic' > /dev/null 2>&1; then
6457                         nm_so_opt='--dynamic'
6458                 fi
6459                 ;;
6460         esac
6461         ;;
6462 esac
6463
6464 : Figure out where the libc is located
6465 case "$runnm" in
6466 true)
6467 : get list of predefined functions in a handy place
6468 echo " "
6469 case "$libc" in
6470 '') libc=unknown
6471         case "$libs" in
6472         *-lc_s*) libc=`./loc libc_s$_a $libc $libpth`
6473         esac
6474         ;;
6475 esac
6476 case "$libs" in
6477 '') ;;
6478 *)  for thislib in $libs; do
6479         case "$thislib" in
6480         -lc|-lc_s)
6481                 : Handle C library specially below.
6482                 ;;
6483         -l*)
6484                 thislib=`echo $thislib | $sed -e 's/^-l//'`
6485                 if try=`./loc lib$thislib.$so.'*' X $libpth`; $test -f "$try"; then
6486                         :
6487                 elif try=`./loc lib$thislib.$so X $libpth`; $test -f "$try"; then
6488                         :
6489                 elif try=`./loc lib$thislib$_a X $libpth`; $test -f "$try"; then
6490                         :
6491                 elif try=`./loc $thislib$_a X $libpth`; $test -f "$try"; then
6492                         :
6493                 elif try=`./loc lib$thislib X $libpth`; $test -f "$try"; then
6494                         :
6495                 elif try=`./loc $thislib X $libpth`; $test -f "$try"; then
6496                         :
6497                 elif try=`./loc Slib$thislib$_a X $xlibpth`; $test -f "$try"; then
6498                         :
6499                 else
6500                         try=''
6501                 fi
6502                 libnames="$libnames $try"
6503                 ;;
6504         *) libnames="$libnames $thislib" ;;
6505         esac
6506         done
6507         ;;
6508 esac
6509 xxx=normal
6510 case "$libc" in
6511 unknown)
6512         set /lib/libc.$so
6513         for xxx in $libpth; do
6514                 $test -r $1 || set $xxx/libc.$so
6515                 : The messy sed command sorts on library version numbers.
6516                 $test -r $1 || \
6517                         set `echo blurfl; echo $xxx/libc.$so.[0-9]* | \
6518                         tr ' ' $trnl | egrep -v '\.[A-Za-z]*$' | $sed -e '
6519                                 h
6520                                 s/[0-9][0-9]*/0000&/g
6521                                 s/0*\([0-9][0-9][0-9][0-9][0-9]\)/\1/g
6522                                 G
6523                                 s/\n/ /' | \
6524                          $sort | $sed -e 's/^.* //'`
6525                 eval set \$$#
6526         done
6527         $test -r $1 || set $sysroot/usr/ccs/lib/libc.$so
6528         $test -r $1 || set $sysroot/lib/libsys_s$_a
6529         ;;
6530 *)
6531         set blurfl
6532         ;;
6533 esac
6534 if $test -r "$1"; then
6535         echo "Your (shared) C library seems to be in $1."
6536         libc="$1"
6537 elif $test -r /lib/libc && $test -r /lib/clib; then
6538         echo "Your C library seems to be in both /lib/clib and /lib/libc."
6539         xxx=apollo
6540         libc='/lib/clib /lib/libc'
6541         if $test -r /lib/syslib; then
6542                 echo "(Your math library is in /lib/syslib.)"
6543                 libc="$libc /lib/syslib"
6544         fi
6545 elif $test -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6546         echo "Your C library seems to be in $libc, as you said before."
6547 elif $test -r $incpath/usr/lib/libc$_a; then
6548         libc=$incpath/usr/lib/libc$_a;
6549         echo "Your C library seems to be in $libc.  That's fine."
6550 elif $test -r /lib/libc$_a; then
6551         libc=/lib/libc$_a;
6552         echo "Your C library seems to be in $libc.  You're normal."
6553 else
6554         if tans=`./loc libc$_a blurfl/dyick $libpth`; $test -r "$tans"; then
6555                 :
6556         elif tans=`./loc libc blurfl/dyick $libpth`; $test -r "$tans"; then
6557                 libnames="$libnames "`./loc clib blurfl/dyick $libpth`
6558         elif tans=`./loc clib blurfl/dyick $libpth`; $test -r "$tans"; then
6559                 :
6560         elif tans=`./loc Slibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6561                 :
6562         elif tans=`./loc Mlibc$_a blurfl/dyick $xlibpth`; $test -r "$tans"; then
6563                 :
6564         else
6565                 tans=`./loc Llibc$_a blurfl/dyick $xlibpth`
6566         fi
6567         if $test -r "$tans"; then
6568                 echo "Your C library seems to be in $tans, of all places."
6569                 libc=$tans
6570         else
6571                 libc='blurfl'
6572         fi
6573 fi
6574 if $test $xxx = apollo -o -r "$libc" || (test -h "$libc") >/dev/null 2>&1; then
6575         dflt="$libc"
6576         cat <<EOM
6577
6578 If the guess above is wrong (which it might be if you're using a strange
6579 compiler, or your machine supports multiple models), you can override it here.
6580
6581 EOM
6582 else
6583         dflt=''
6584         echo $libpth | $tr ' ' $trnl | $sort | $uniq > libpath
6585         cat >&4 <<EOM
6586 I can't seem to find your C library.  I've looked in the following places:
6587
6588 EOM
6589         $sed 's/^/      /' libpath
6590         cat <<EOM
6591
6592 None of these seems to contain your C library. I need to get its name...
6593
6594 EOM
6595 fi
6596 fn=f
6597 rp='Where is your C library?'
6598 . ./getfile
6599 libc="$ans"
6600
6601 echo " "
6602 echo $libc $libnames | $tr ' ' $trnl | $sort | $uniq > libnames
6603 set X `cat libnames`
6604 shift
6605 xxx=files
6606 case $# in 1) xxx=file; esac
6607 echo "Extracting names from the following $xxx for later perusal:" >&4
6608 echo " "
6609 $sed 's/^/      /' libnames >&4
6610 echo " "
6611 $echo $n "This may take a while...$c" >&4
6612
6613 for file in $*; do
6614         case $file in
6615         *$so*) $nm $nm_so_opt $nm_opt $file 2>/dev/null;;
6616         *) $nm $nm_opt $file 2>/dev/null;;
6617         esac
6618 done >libc.tmp
6619
6620 $echo $n ".$c"
6621 $grep fprintf libc.tmp > libc.ptf
6622 xscan='eval "<libc.ptf $com >libc.list"; $echo $n ".$c" >&4'
6623 xrun='eval "<libc.tmp $com >libc.list"; echo "done." >&4'
6624 xxx='[ADTSIWi]'
6625 if com="$sed -n -e 's/__IO//' -e 's/^.* $xxx  *//p'";\
6626         eval $xscan;\
6627         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6628                 eval $xrun
6629 elif com="$sed -n -e 's/^__*//' -e 's/^\([a-zA-Z_0-9$]*\).*xtern.*/\1/p'";\
6630         eval $xscan;\
6631         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6632                 eval $xrun
6633 elif com="$sed -n -e '/|UNDEF/d' -e '/FUNC..GL/s/^.*|__*//p'";\
6634         eval $xscan;\
6635         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6636                 eval $xrun
6637 elif com="$sed -n -e 's/^.* D __*//p' -e 's/^.* D //p'";\
6638         eval $xscan;\
6639         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6640                 eval $xrun
6641 elif com="$sed -n -e 's/^_//' -e 's/^\([a-zA-Z_0-9]*\).*xtern.*text.*/\1/p'";\
6642         eval $xscan;\
6643         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6644                 eval $xrun
6645 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p'";\
6646         eval $xscan;\
6647         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6648                 eval $xrun
6649 elif com="$grep '|' | $sed -n -e '/|COMMON/d' -e '/|DATA/d' \
6650                                 -e '/ file/d' -e 's/^\([^       ]*\).*/\1/p'";\
6651         eval $xscan;\
6652         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6653                 eval $xrun
6654 elif com="$sed -n -e 's/^.*|FUNC |GLOB .*|//p' -e 's/^.*|FUNC |WEAK .*|//p'";\
6655         eval $xscan;\
6656         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6657                 eval $xrun
6658 elif com="$sed -n -e 's/^__//' -e '/|Undef/d' -e '/|Proc/s/ .*//p'";\
6659         eval $xscan;\
6660         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6661                 eval $xrun
6662 elif com="$sed -n -e 's/^.*|Proc .*|Text *| *//p'";\
6663         eval $xscan;\
6664         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6665                 eval $xrun
6666 elif com="$sed -n -e '/Def. Text/s/.* \([^ ]*\)\$/\1/p'";\
6667         eval $xscan;\
6668         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6669                 eval $xrun
6670 elif com="$sed -n -e 's/^[-0-9a-f ]*_\(.*\)=.*/\1/p'";\
6671         eval $xscan;\
6672         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6673                 eval $xrun
6674 elif com="$sed -n -e 's/.*\.text n\ \ \ \.//p'";\
6675         eval $xscan;\
6676         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6677                 eval $xrun
6678 elif com="sed -n -e 's/^__.*//' -e 's/[       ]*D[    ]*[0-9]*.*//p'";\
6679         eval $xscan;\
6680         $contains '^fprintf$' libc.list >/dev/null 2>&1; then
6681                 eval $xrun
6682 else
6683         $nm -p $* 2>/dev/null >libc.tmp
6684         $grep fprintf libc.tmp > libc.ptf
6685         if com="$sed -n -e 's/^.* [ADTSIW]  *_[_.]*//p' -e 's/^.* [ADTSIW] //p'";\
6686                 eval $xscan; $contains '^fprintf$' libc.list >/dev/null 2>&1
6687         then
6688                 nm_opt='-p'
6689                 eval $xrun
6690         else
6691                 echo " "
6692                 echo "$nm didn't seem to work right. Trying $ar instead..." >&4
6693                 com=''
6694                 if $ar t $libc > libc.tmp && \
6695                         $contains '^fprintf$' libc.tmp >/dev/null 2>&1
6696                 then
6697                         for thisname in $libnames $libc; do
6698                                 $ar t $thisname >>libc.tmp
6699                         done
6700                         $sed -e "s/\\$_o\$//" < libc.tmp > libc.list
6701                         echo "Ok." >&4
6702                 elif test "X$osname" = "Xos2" && $ar tv $libc > libc.tmp; then
6703                         for thisname in $libnames $libc; do
6704                                 $ar tv $thisname >>libc.tmp
6705                                 emximp -o tmp.imp $thisname \
6706                                     2>/dev/null && \
6707                                     $sed -e 's/^\([_a-zA-Z0-9]*\) .*$/\1/p' \
6708                                     < tmp.imp >>libc.tmp
6709                                 $rm -f tmp.imp
6710                         done
6711                         $sed -e "s/\\$_o\$//" -e 's/^ \+//' < libc.tmp > libc.list
6712                         echo "Ok." >&4
6713                 else
6714                         echo "$ar didn't seem to work right." >&4
6715                         echo "Maybe this is a Cray...trying bld instead..." >&4
6716                         if  bld t $libc | \
6717                                 $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" > libc.list &&
6718                                 $test -s libc.list
6719                         then
6720                                 for thisname in $libnames; do
6721                                         bld t $libnames | \
6722                                         $sed -e 's/.*\///' -e "s/\\$_o:.*\$//" >>libc.list
6723                                         $ar t $thisname >>libc.tmp
6724                                 done
6725                                 echo "Ok." >&4
6726                         else
6727                                 echo "That didn't work either.  Giving up." >&4
6728                                 exit 1
6729                         fi
6730                 fi
6731         fi
6732 fi
6733 nm_extract="$com"
6734 case "$PASE" in
6735 define)
6736     echo " "
6737     echo "Since you are compiling for PASE, extracting more symbols from libc.a ...">&4
6738     dump -Tv /lib/libc.a | awk '$7 == "/unix" {print $5 " " $8}' | grep "^SV" | awk '{print $2}' >> libc.list
6739     ;;
6740 *)  if $test -f /lib/syscalls.exp; then
6741         echo " "
6742         echo "Also extracting names from /lib/syscalls.exp for good ole AIX..." >&4
6743         $sed -n 's/^\([^        ]*\)[   ]*syscall[0-9]*[        ]*$/\1/p' \
6744                 /lib/syscalls.exp >>libc.list
6745     fi
6746     ;;
6747 esac
6748 ;;
6749 esac
6750 $rm -f libnames libpath
6751
6752 : Check if we are using C++
6753 echo " "
6754 echo "Checking for C++..." >&4
6755 $cat >try.c <<'EOCP'
6756 #include <stdio.h>
6757 int main(void)
6758 {
6759 #ifdef __cplusplus
6760     return 0;
6761 #else
6762     return 1;
6763 #endif
6764 }
6765 EOCP
6766 set try
6767 if eval $compile_ok && $run ./try; then
6768         val="$define"
6769         echo "You are using a C++ compiler."
6770 else
6771         val="$undef"
6772         echo "You are not using a C++ compiler."
6773 fi
6774 $rm_try cplusplus$$
6775 set d_cplusplus
6776 eval $setvar
6777
6778 : is a C symbol defined?
6779 csym='tlook=$1;
6780 case "$3" in
6781 -v) tf=libc.tmp; tdc="";;
6782 -a) tf=libc.tmp; tdc="[]";;
6783 *) tlook="^$1\$"; tf=libc.list; tdc="()";;
6784 esac;
6785 case "$d_cplusplus" in
6786     $define)    extern_C="extern \"C\"" ;;
6787     *)          extern_C="extern"       ;;
6788 esac;
6789 tx=yes;
6790 case "$reuseval-$4" in
6791 true-) ;;
6792 true-*) tx=no; eval "tval=\$$4"; case "$tval" in "") tx=yes;; esac;;
6793 esac;
6794 case "$tx" in
6795 yes)
6796         tval=false;
6797         if $test "$runnm" = true; then
6798                 if $contains $tlook $tf >/dev/null 2>&1; then
6799                         tval=true;
6800                 elif $test "$mistrustnm" = compile -o "$mistrustnm" = run; then
6801                         echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p() && p() != (void *)main) return(0); else return(1); }"> try.c;
6802                         $cc -o try $optimize $ccflags $ldflags try.c >/dev/null 2>&1 $libs && tval=true;
6803                         $test "$mistrustnm" = run -a -x try && { $run ./try$_exe >/dev/null 2>&1 || tval=false; };
6804                         $rm_try;
6805                 fi;
6806         else
6807                 echo "$extern_C void *$1$tdc; void *(*(p()))$tdc { return &$1; } int main() { if(p() && p() != (void *)main) return(0); else return(1); }"> try.c;
6808                 $cc -o try $optimize $ccflags $ldflags try.c $libs >/dev/null 2>&1 && tval=true;
6809                 $rm_try;
6810         fi;
6811         ;;
6812 *)
6813         case "$tval" in
6814         $define) tval=true;;
6815         *) tval=false;;
6816         esac;
6817         ;;
6818 esac;
6819 eval "$2=$tval"'
6820
6821 : define an is-in-libc? function
6822 inlibc='echo " "; td=$define; tu=$undef;
6823 sym=$1; var=$2; eval "was=\$$2";
6824 tx=yes;
6825 case "$reuseval$was" in
6826 true) ;;
6827 true*) tx=no;;
6828 esac;
6829 case "$tx" in
6830 yes)
6831         set $sym tres -f;
6832         eval $csym;
6833         case "$tres" in
6834         true)
6835                 echo "$sym() found." >&4;
6836                 case "$was" in $undef) . ./whoa; esac; eval "$var=\$td";;
6837         *)
6838                 echo "$sym() NOT found." >&4;
6839                 case "$was" in $define) . ./whoa; esac; eval "$var=\$tu";;
6840         esac;;
6841 *)
6842         case "$was" in
6843         $define) echo "$sym() found." >&4;;
6844         *) echo "$sym() NOT found." >&4;;
6845         esac;;
6846 esac'
6847
6848 : check for length of double
6849 echo " "
6850 case "$doublesize" in
6851 '')
6852         echo "Checking to see how big your double precision numbers are..." >&4
6853         $cat >try.c <<EOCP
6854 #include <stdio.h>
6855 #$i_stdlib I_STDLIB
6856 #ifdef I_STDLIB
6857 #include <stdlib.h>
6858 #endif
6859 int main()
6860 {
6861     printf("%d\n", (int)sizeof(double));
6862     exit(0);
6863 }
6864 EOCP
6865         set try
6866         if eval $compile_ok; then
6867                 doublesize=`$run ./try`
6868                 echo "Your double is $doublesize bytes long."
6869         else
6870                 dflt='8'
6871                 echo "(I can't seem to compile the test program.  Guessing...)"
6872                 rp="What is the size of a double precision number (in bytes)?"
6873                 . ./myread
6874                 doublesize="$ans"
6875         fi
6876         ;;
6877 esac
6878 $rm_try
6879
6880 : see if this is a float.h system
6881 set float.h i_float
6882 eval $inhdr
6883
6884 : check for long doubles
6885 echo " "
6886 echo "Checking to see if you have long double..." >&4
6887 echo 'int main() { long double x = 7.0; }' > try.c
6888 set try
6889 if eval $compile; then
6890         val="$define"
6891         echo "You have long double."
6892 else
6893         val="$undef"
6894         echo "You do not have long double."
6895 fi
6896 $rm_try
6897 set d_longdbl
6898 eval $setvar
6899
6900 : see if ldexpl exists
6901 set ldexpl d_ldexpl
6902 eval $inlibc
6903
6904 : check for length of long double
6905 case "${d_longdbl}${longdblsize}" in
6906 $define)
6907         echo " "
6908         echo "Checking to see how big your long doubles are..." >&4
6909         $cat >try.c <<'EOCP'
6910 #include <stdio.h>
6911 int main()
6912 {
6913         printf("%d\n", sizeof(long double));
6914 }
6915 EOCP
6916         set try
6917         set try
6918         if eval $compile; then
6919                 longdblsize=`$run ./try`
6920                 echo "Your long doubles are $longdblsize bytes long."
6921         else
6922                 dflt='8'
6923                 echo " "
6924                 echo "(I can't seem to compile the test program.  Guessing...)" >&4
6925                 rp="What is the size of a long double (in bytes)?"
6926                 . ./myread
6927                 longdblsize="$ans"
6928         fi
6929         if $test "X$doublesize" = "X$longdblsize"; then
6930                 echo "That isn't any different from an ordinary double."
6931                 echo "I'll keep your setting anyway, but you may see some"
6932                 echo "harmless compilation warnings."
6933         fi
6934         ;;
6935 esac
6936 $rm_try
6937
6938 $echo "Checking the kind of long doubles you have..." >&4
6939 case "$d_longdbl" in
6940 define)
6941 $cat <<EOP >try.c
6942 #$i_float I_FLOAT
6943 #$i_stdlib I_STDLIB
6944 #define LONGDBLSIZE $longdblsize
6945 #define DOUBLESIZE $doublesize
6946 #ifdef I_FLOAT
6947 #include <float.h>
6948 #endif
6949 #ifdef I_STDLIB
6950 #include <stdlib.h>
6951 #endif
6952 #include <stdio.h>
6953 static const long double d = -0.1L;
6954 int main() {
6955   unsigned const char* b = (unsigned const char*)(&d);
6956 #if DOUBLESIZE == LONGDBLSIZE
6957   printf("0\n"); /* if it floats like double */
6958   exit(0);
6959 #endif
6960 #if (LDBL_MANT_DIG == 113 || FLT128_MANT_DIG == 113) && LONGDBLSIZE == 16
6961   if (b[0] == 0x9A && b[1] == 0x99 && b[15] == 0xBF) {
6962     /* IEEE 754 128-bit little-endian */
6963     printf("1\n");
6964     exit(0);
6965   }
6966   if (b[0] == 0xBF && b[14] == 0x99 && b[15] == 0x9A) {
6967     /* IEEE 128-bit big-endian, e.g. solaris sparc */
6968     printf("2\n");
6969     exit(0);
6970   }
6971 #endif
6972 /* For alignment 32-bit platforms have the 80 bits in 12 bytes,
6973  * while 64-bits platforms have it in 16 bytes.  The trailing bytes
6974  * cannot be trusted. */
6975 #if LDBL_MANT_DIG == 64 && (LONGDBLSIZE == 16 || LONGDBLSIZE == 12)
6976   if (b[0] == 0xCD && b[9] == 0xBF) {
6977     /* x86 80-bit little-endian, sizeof 12 (ILP32, Solaris x86)
6978      * or 16 (LP64, Linux and OS X), 4 or 6 bytes of padding.
6979      * Also known as "extended precision". */
6980     printf("3\n");
6981     exit(0);
6982   }
6983   if (b[0] == 0xBF && b[9] == 0xCD) {
6984     /* Is there ever big-endian 80-bit, really?
6985      *
6986      * The Motorola 68881 had another "extended precision" format:
6987      * sign:1 exp:15 zero:16 integer:1 mantissa:63
6988      * for total of 96 bits of bytes.  The zero bits were unused.
6989      * See "M68000 FAMILY PROGRAMMER’S REFERENCE MANUAL" for more details.
6990      * If it ever becomes relevant, this format should be allocated
6991      * a new doublekind code since it's quite different from the Intel x87.
6992      */
6993     printf("4\n");
6994     exit(0);
6995   }
6996 #endif
6997 #if (LDBL_MANT_DIG == 106 || LDBL_MANT_DIG == 107) && LONGDBLSIZE == 16
6998   /* software "double double", the 106 is 53+53.
6999    * but irix thinks it is 107. */
7000   if (b[0] == 0x9A && b[7] == 0x3C && b[8] == 0x9A && b[15] == 0xBF) {
7001     /* double double 128-bit fully little-endian,
7002      * little-endian doubles in little-endian order,
7003      * 9a 99 99 99 99 99 59 3c 9a 99 99 99 99 99 b9 bf */
7004     printf("5\n");
7005     exit(0);
7006   }
7007   if (b[0] == 0xBF && b[7] == 0x9A && b[8] == 0x3C && b[15] == 0x9A) {
7008  &nb