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