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