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