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