Un-TODO (and un-SKIP) tests in t/op/pat_thr.t that now pass.
[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.sourceforge.net/svnroot/dist/trunk/dist
18 #
19 #
20 # Though this script was generated by metaconfig, it is OK to send
21 # patches against it. It's up to the Configure pumpkin to backport
22 # the patch to the metaunits if it is accepted.
23 # See Porting/pumpkin.pod for more information on metaconfig.
24 #
25
26 # $Id: Head.U 6 2006-08-25 22:21:46Z rmanfredi $
27 #
28 # Generated on Wed Jan  9 22:02:14 CET 2008 [metaconfig 3.0 PL70]
29 # (with additional metaconfig patches by perlbug@perl.org)
30
31 cat >c1$$ <<EOF
32 ARGGGHHHH!!!!!
33
34 SCO csh still thinks true is false.  Write to SCO today and tell them that next
35 year Configure ought to "rm /bin/csh" unless they fix their blasted shell. :-)
36
37 (Actually, Configure ought to just patch csh in place.  Hmm.  Hmmmmm.  All
38 we'd have to do is go in and swap the && and || tokens, wherever they are.)
39
40 [End of diatribe. We now return you to your regularly scheduled programming...]
41 EOF
42 cat >c2$$ <<EOF
43
44 OOPS!  You naughty creature!  You didn't run Configure with sh!
45 I will attempt to remedy the situation by running sh for you...
46 EOF
47
48 true || cat c1$$ c2$$
49 true || exec sh $0 $argv:q
50
51 (exit $?0) || cat c2$$
52 (exit $?0) || exec sh $0 $argv:q
53 rm -f c1$$ c2$$
54
55 if test -f /dev/cputype -a -f /dev/drivers -a -f /dev/osversion; then
56         cat >&4 <<EOF
57 ***
58 *** I'm sorry but this system looks like Plan 9 and Plan 9 doesn't do
59 *** Configure that well.  (Plan 9 is close to UNIX but not close enough.)
60 *** Please read the README.plan9 for further instructions.
61 *** Cannot continue, aborting.
62 ***
63 EOF
64         exit 1
65 fi
66
67 if test ! -c /dev/null ; then
68         cat >&4 <<EOF
69 ***
70 *** I'm sorry, but /dev/null appears to be a file rather than a device.
71 *** Please consult your operating sytem's notes for making a device
72 *** in /dev.
73 *** Cannot continue, aborting.
74 ***
75 EOF
76         exit 1
77 fi
78
79 : compute my invocation name
80 me=$0
81 case "$0" in
82 */*)
83         me=`echo $0 | sed -e 's!.*/\(.*\)!\1!' 2>/dev/null`
84         test "$me" || me=$0
85         ;;
86 esac
87
88 : Proper separator for the PATH environment variable
89 p_=:
90 : On OS/2 this directory should exist if this is not floppy only system ":-]"
91 if test -d c:/. || ( uname -a | grep -i 'os\(/\|\)2' ) 2>&1 >/dev/null ; then
92         if test -n "$OS2_SHELL"; then
93                 p_=\;
94                 PATH=`cmd /c "echo %PATH%" | tr '\\\\' / `
95                 OS2_SHELL=`cmd /c "echo %OS2_SHELL%" | tr '\\\\' / | tr '[A-Z]' '[a-z]'`
96                 is_os2=yes
97         elif test -n "$DJGPP"; then
98                 case "X${MACHTYPE:-nonesuchmach}" in
99                 *cygwin) ;;
100                 *) p_=\; ;;
101                 esac
102         fi
103 fi
104
105 : Proper PATH setting
106 paths='/bin /usr/bin /usr/local/bin /usr/ucb /usr/local /usr/lbin'
107 paths="$paths /opt/bin /opt/local/bin /opt/local /opt/lbin"
108 paths="$paths /usr/5bin /etc /usr/gnu/bin /usr/new /usr/new/bin /usr/nbin"
109 paths="$paths /opt/gnu/bin /opt/new /opt/new/bin /opt/nbin"
110 paths="$paths /sys5.3/bin /sys5.3/usr/bin /bsd4.3/bin /bsd4.3/usr/ucb"
111 paths="$paths /bsd4.3/usr/bin /usr/bsd /bsd43/bin /opt/ansic/bin /usr/ccs/bin"
112 paths="$paths /etc /usr/lib /usr/ucblib /lib /usr/ccs/lib"
113 paths="$paths /sbin /usr/sbin /usr/libexec"
114 paths="$paths /system/gnu_library/bin"
115
116 for p in $paths
117 do
118         case "$p_$PATH$p_" in
119         *$p_$p$p_*) ;;
120         *) test -d $p && PATH=$PATH$p_$p ;;
121         esac
122 done
123
124 PATH=.$p_$PATH
125 export PATH
126
127 : shall we be using ksh?
128 inksh=''
129 needksh=''
130 avoidksh=''
131 newsh=/bin/ksh
132 changesh=''
133 if (PATH=.; alias -x) >/dev/null 2>&1; then
134                 inksh=true
135 fi
136 if test -f /hp-ux -a -f /bin/ksh; then
137         needksh='to avoid sh bug in "here document" expansion'
138 fi
139 if test -d /usr/lpp -a -f /usr/bin/bsh -a -f /usr/bin/uname; then
140         if test X`/usr/bin/uname -v` = X4; then
141                 avoidksh="to avoid AIX 4's /bin/sh"
142                 newsh=/usr/bin/bsh
143         fi
144 fi
145 if test -f /osf_boot -a -f /usr/sbin/setld; then
146         if test X`/usr/bin/uname -s` = XOSF1; then
147                 avoidksh="to avoid Digital UNIX' ksh"
148                 newsh=/bin/sh
149                 unset BIN_SH
150         fi
151 fi
152 case "$inksh/$needksh" in
153 /[a-z]*)
154                 ENV=''
155                 changesh=true
156                 reason="$needksh"
157         ;;
158 esac
159 case "$inksh/$avoidksh" in
160 true/[a-z]*)
161         changesh=true
162         reason="$avoidksh"
163         ;;
164 esac
165 case "$inksh/$needksh-$avoidksh-" in
166 true/--)
167                 cat <<EOM
168 (I see you are using the Korn shell.  Some ksh's blow up on $me,
169 mainly on older exotic systems.  If yours does, try the Bourne shell instead.)
170 EOM
171         ;;
172 esac
173 case "$changesh" in
174 true)
175         export newsh
176         echo "(Feeding myself to $newsh $reason.)"
177         case "$0" in
178         Configure|*/Configure) exec $newsh $0 "$@";;
179         *) exec $newsh Configure "$@";;
180         esac
181         ;;
182 esac
183 test -x "${newsh}" || unset newsh
184
185 : if needed, set CDPATH to a harmless value that is not chatty
186 : avoid bash 2.02 problems with empty CDPATH.
187 case "$CDPATH" in
188 '')     ;;
189 *)      case "$SHELL" in
190         *bash*) CDPATH='.' ;;
191         *) CDPATH='' ;;
192         esac
193         ;;
194 esac
195
196 : Configure runs within the UU subdirectory
197 test -d UU || mkdir UU
198 cd UU && rm -f ./*
199
200 ccname=''
201 ccversion=''
202 ccsymbols=''
203 cppccsymbols=''
204 cppsymbols=''
205 from=''
206 run=''
207 targetarch=''
208 to=''
209 usecrosscompile=''
210 mistrustnm=''
211 perllibs=''
212 dynamic_ext=''
213 extensions=''
214 known_extensions=''
215 nonxs_ext=''
216 static_ext=''
217 useopcode=''
218 useposix=''
219 extras=''
220 d_bsd=''
221 d_eunice=''
222 d_xenix=''
223 eunicefix=''
224 Mcc=''
225 ar=''
226 awk=''
227 bash=''
228 bison=''
229 byacc=''
230 cat=''
231 chgrp=''
232 chmod=''
233 chown=''
234 comm=''
235 compress=''
236 cp=''
237 cpio=''
238 cpp=''
239 csh=''
240 date=''
241 echo=''
242 egrep=''
243 emacs=''
244 expr=''
245 find=''
246 flex=''
247 gmake=''
248 grep=''
249 gzip=''
250 inews=''
251 ksh=''
252 less=''
253 line=''
254 lint=''
255 ln=''
256 lp=''
257 lpr=''
258 ls=''
259 mail=''
260 mailx=''
261 make=''
262 mkdir=''
263 more=''
264 mv=''
265 nm=''
266 nroff=''
267 perl=''
268 pg=''
269 pmake=''
270 pr=''
271 rm=''
272 rmail=''
273 sed=''
274 sendmail=''
275 shar=''
276 sleep=''
277 smail=''
278 sort=''
279 submit=''
280 tail=''
281 tar=''
282 tbl=''
283 tee=''
284 test=''
285 touch=''
286 tr=''
287 troff=''
288 uname=''
289 uniq=''
290 uuname=''
291 vi=''
292 zcat=''
293 zip=''
294 full_ar=''
295 full_sed=''
296 libswanted=''
297 hint=''
298 myuname=''
299 osname=''
300 osvers=''
301 Author=''
302 Date=''
303 Header=''
304 Id=''
305 Locker=''
306 Log=''
307 RCSfile=''
308 Revision=''
309 Source=''
310 State=''
311 _a=''
312 _exe=''
313 _o=''
314 archobjs=''
315 exe_ext=''
316 firstmakefile=''
317 lib_ext=''
318 obj_ext=''
319 path_sep=''
320 rm_try=''
321 afs=''
322 afsroot=''
323 alignbytes=''
324 ansi2knr=''
325 archlib=''
326 archlibexp=''
327 d_archlib=''
328 installarchlib=''
329 archname=''
330 myarchname=''
331 d_atolf=''
332 d_atoll=''
333 baserev=''
334 bin=''
335 binexp=''
336 initialinstalllocation=''
337 installbin=''
338 userelocatableinc=''
339 byteorder=''
340 cc=''
341 ccflags=''
342 cppflags=''
343 ldflags=''
344 lkflags=''
345 locincpth=''
346 optimize=''
347 cf_email=''
348 cf_by=''
349 cf_time=''
350 contains=''
351 cpp_stuff=''
352 cpplast=''
353 cppminus=''
354 cpprun=''
355 cppstdin=''
356 d__fwalk=''
357 d_access=''
358 d_accessx=''
359 d_aintl=''
360 d_alarm=''
361 asctime_r_proto=''
362 d_asctime_r=''
363 d_attribute_format=''
364 d_attribute_malloc=''
365 d_attribute_nonnull=''
366 d_attribute_noreturn=''
367 d_attribute_pure=''
368 d_attribute_unused=''
369 d_attribute_warn_unused_result=''
370 d_printf_format_null=''
371 d_bcmp=''
372 d_bcopy=''
373 d_builtin_choose_expr=''
374 d_builtin_expect=''
375 d_bzero=''
376 d_c99_variadic_macros=''
377 d_casti32=''
378 castflags=''
379 d_castneg=''
380 d_chown=''
381 d_chroot=''
382 d_chsize=''
383 d_class=''
384 d_clearenv=''
385 d_closedir=''
386 d_void_closedir=''
387 d_cmsghdr_s=''
388 d_const=''
389 d_copysignl=''
390 d_cplusplus=''
391 cryptlib=''
392 d_crypt=''
393 crypt_r_proto=''
394 d_crypt_r=''
395 d_csh=''
396 full_csh=''
397 d_ctermid=''
398 ctermid_r_proto=''
399 d_ctermid_r=''
400 ctime_r_proto=''
401 d_ctime_r=''
402 d_cuserid=''
403 d_dbl_dig=''
404 d_dbminitproto=''
405 d_difftime=''
406 d_dir_dd_fd=''
407 d_dirfd=''
408 d_dlerror=''
409 d_dlopen=''
410 d_dlsymun=''
411 d_dosuid=''
412 d_suidsafe=''
413 d_drand48_r=''
414 drand48_r_proto=''
415 d_drand48proto=''
416 d_dup2=''
417 d_eaccess=''
418 d_endgrent=''
419 d_endgrent_r=''
420 endgrent_r_proto=''
421 d_endhent=''
422 d_endhostent_r=''
423 endhostent_r_proto=''
424 d_endnent=''
425 d_endnetent_r=''
426 endnetent_r_proto=''
427 d_endpent=''
428 d_endprotoent_r=''
429 endprotoent_r_proto=''
430 d_endpwent=''
431 d_endpwent_r=''
432 endpwent_r_proto=''
433 d_endsent=''
434 d_endservent_r=''
435 endservent_r_proto=''
436 d_faststdio=''
437 d_fchdir=''
438 d_fchmod=''
439 d_fchown=''
440 d_fcntl=''
441 d_fcntl_can_lock=''
442 d_fd_macros=''
443 d_fd_set=''
444 d_fds_bits=''
445 d_fgetpos=''
446 d_finite=''
447 d_finitel=''
448 d_flexfnam=''
449 d_flock=''
450 d_flockproto=''
451 d_fork=''
452 d_fp_class=''
453 d_fpclass=''
454 d_fpclassify=''
455 d_fpclassl=''
456 d_fpos64_t=''
457 d_frexpl=''
458 d_fs_data_s=''
459 d_fseeko=''
460 d_fsetpos=''
461 d_fstatfs=''
462 d_fsync=''
463 d_ftello=''
464 d_ftime=''
465 d_gettimeod=''
466 d_futimes=''
467 d_Gconvert=''
468 d_getcwd=''
469 d_getespwnam=''
470 d_getfsstat=''
471 d_getgrent=''
472 d_getgrent_r=''
473 getgrent_r_proto=''
474 d_getgrgid_r=''
475 getgrgid_r_proto=''
476 d_getgrnam_r=''
477 getgrnam_r_proto=''
478 d_getgrps=''
479 d_gethbyaddr=''
480 d_gethbyname=''
481 d_gethent=''
482 aphostname=''
483 d_gethname=''
484 d_phostname=''
485 d_uname=''
486 d_gethostbyaddr_r=''
487 gethostbyaddr_r_proto=''
488 d_gethostbyname_r=''
489 gethostbyname_r_proto=''
490 d_gethostent_r=''
491 gethostent_r_proto=''
492 d_gethostprotos=''
493 d_getitimer=''
494 d_getlogin=''
495 d_getlogin_r=''
496 getlogin_r_proto=''
497 d_getmnt=''
498 d_getmntent=''
499 d_getnbyaddr=''
500 d_getnbyname=''
501 d_getnent=''
502 d_getnetbyaddr_r=''
503 getnetbyaddr_r_proto=''
504 d_getnetbyname_r=''
505 getnetbyname_r_proto=''
506 d_getnetent_r=''
507 getnetent_r_proto=''
508 d_getnetprotos=''
509 d_getpagsz=''
510 d_getpent=''
511 d_getpgid=''
512 d_getpgrp2=''
513 d_bsdgetpgrp=''
514 d_getpgrp=''
515 d_getppid=''
516 d_getprior=''
517 d_getpbyname=''
518 d_getpbynumber=''
519 d_getprotobyname_r=''
520 getprotobyname_r_proto=''
521 d_getprotobynumber_r=''
522 getprotobynumber_r_proto=''
523 d_getprotoent_r=''
524 getprotoent_r_proto=''
525 d_getprotoprotos=''
526 d_getprpwnam=''
527 d_getpwent=''
528 d_getpwent_r=''
529 getpwent_r_proto=''
530 d_getpwnam_r=''
531 getpwnam_r_proto=''
532 d_getpwuid_r=''
533 getpwuid_r_proto=''
534 d_getsent=''
535 d_getservbyname_r=''
536 getservbyname_r_proto=''
537 d_getservbyport_r=''
538 getservbyport_r_proto=''
539 d_getservent_r=''
540 getservent_r_proto=''
541 d_getservprotos=''
542 d_getspnam=''
543 d_getspnam_r=''
544 getspnam_r_proto=''
545 d_getsbyname=''
546 d_getsbyport=''
547 d_gmtime_r=''
548 gmtime_r_proto=''
549 d_gnulibc=''
550 gnulibc_version=''
551 d_hasmntopt=''
552 d_htonl=''
553 d_ilogbl=''
554 d_inetaton=''
555 d_int64_t=''
556 d_isascii=''
557 d_isfinite=''
558 d_isinf=''
559 d_isnan=''
560 d_isnanl=''
561 d_killpg=''
562 d_lchown=''
563 d_ldbl_dig=''
564 d_libm_lib_version=''
565 d_link=''
566 d_localtime_r=''
567 d_localtime_r_needs_tzset=''
568 localtime_r_proto=''
569 d_locconv=''
570 d_lockf=''
571 d_longdbl=''
572 longdblsize=''
573 d_longlong=''
574 longlongsize=''
575 d_lseekproto=''
576 d_lstat=''
577 d_madvise=''
578 d_malloc_good_size=''
579 d_malloc_size=''
580 d_mblen=''
581 d_mbstowcs=''
582 d_mbtowc=''
583 d_memchr=''
584 d_memcmp=''
585 d_memcpy=''
586 d_memmove=''
587 d_memset=''
588 d_mkdir=''
589 d_mkdtemp=''
590 d_mkfifo=''
591 d_mkstemp=''
592 d_mkstemps=''
593 d_mktime=''
594 d_mmap=''
595 mmaptype=''
596 d_modfl=''
597 d_modfl_pow32_bug=''
598 d_modflproto=''
599 d_mprotect=''
600 d_msg=''
601 d_msgctl=''
602 d_msgget=''
603 d_msghdr_s=''
604 d_msgrcv=''
605 d_msgsnd=''
606 d_msync=''
607 d_munmap=''
608 d_nice=''
609 d_nl_langinfo=''
610 d_off64_t=''
611 d_open3=''
612 d_fpathconf=''
613 d_pathconf=''
614 d_pause=''
615 d_pipe=''
616 d_poll=''
617 d_portable=''
618 d_procselfexe=''
619 procselfexe=''
620 d_old_pthread_create_joinable=''
621 old_pthread_create_joinable=''
622 d_pthread_atfork=''
623 d_pthread_attr_setscope=''
624 d_pthread_yield=''
625 d_sched_yield=''
626 sched_yield=''
627 d_qgcvt=''
628 d_random_r=''
629 random_r_proto=''
630 d_readdir64_r=''
631 readdir64_r_proto=''
632 d_readdir=''
633 d_rewinddir=''
634 d_seekdir=''
635 d_telldir=''
636 d_readdir_r=''
637 readdir_r_proto=''
638 d_readlink=''
639 d_readv=''
640 d_recvmsg=''
641 d_rename=''
642 d_rmdir=''
643 d_safebcpy=''
644 d_safemcpy=''
645 d_sanemcmp=''
646 d_sbrkproto=''
647 d_scalbnl=''
648 d_select=''
649 d_sem=''
650 d_semctl=''
651 d_semget=''
652 d_semop=''
653 d_sendmsg=''
654 d_setegid=''
655 d_seteuid=''
656 d_setgrent=''
657 d_setgrent_r=''
658 setgrent_r_proto=''
659 d_setgrps=''
660 d_sethent=''
661 d_sethostent_r=''
662 sethostent_r_proto=''
663 d_setitimer=''
664 d_setlinebuf=''
665 d_setlocale=''
666 d_setlocale_r=''
667 setlocale_r_proto=''
668 d_setnent=''
669 d_setnetent_r=''
670 setnetent_r_proto=''
671 d_setpent=''
672 d_setpgid=''
673 d_setpgrp2=''
674 d_bsdsetpgrp=''
675 d_setpgrp=''
676 d_setprior=''
677 d_setproctitle=''
678 d_setprotoent_r=''
679 setprotoent_r_proto=''
680 d_setpwent=''
681 d_setpwent_r=''
682 setpwent_r_proto=''
683 d_setregid=''
684 d_setresgid=''
685 d_setresuid=''
686 d_setreuid=''
687 d_setrgid=''
688 d_setruid=''
689 d_setsent=''
690 d_setservent_r=''
691 setservent_r_proto=''
692 d_setsid=''
693 d_setvbuf=''
694 d_sfio=''
695 usesfio=''
696 d_shm=''
697 d_shmat=''
698 d_shmatprototype=''
699 shmattype=''
700 d_shmctl=''
701 d_shmdt=''
702 d_shmget=''
703 d_sigaction=''
704 d_signbit=''
705 d_sigprocmask=''
706 d_sigsetjmp=''
707 usesitecustomize=''
708 d_snprintf=''
709 d_vsnprintf=''
710 d_sockatmark=''
711 d_sockatmarkproto=''
712 d_msg_ctrunc=''
713 d_msg_dontroute=''
714 d_msg_oob=''
715 d_msg_peek=''
716 d_msg_proxy=''
717 d_oldsock=''
718 d_scm_rights=''
719 d_socket=''
720 d_sockpair=''
721 sockethdr=''
722 socketlib=''
723 d_socklen_t=''
724 d_socks5_init=''
725 d_sprintf_returns_strlen=''
726 d_sqrtl=''
727 d_srand48_r=''
728 srand48_r_proto=''
729 d_srandom_r=''
730 srandom_r_proto=''
731 d_sresgproto=''
732 d_sresuproto=''
733 d_statblks=''
734 d_statfs_f_flags=''
735 d_statfs_s=''
736 d_fstatvfs=''
737 d_statvfs=''
738 d_stdio_cnt_lval=''
739 d_stdio_ptr_lval=''
740 d_stdio_ptr_lval_nochange_cnt=''
741 d_stdio_ptr_lval_sets_cnt=''
742 d_stdiobase=''
743 d_stdstdio=''
744 stdio_base=''
745 stdio_bufsiz=''
746 stdio_cnt=''
747 stdio_filbuf=''
748 stdio_ptr=''
749 d_index=''
750 d_strchr=''
751 d_strcoll=''
752 d_strctcpy=''
753 d_strerrm=''
754 d_strerror=''
755 d_sysernlst=''
756 d_syserrlst=''
757 d_strerror_r=''
758 strerror_r_proto=''
759 d_strftime=''
760 d_strlcat=''
761 d_strlcpy=''
762 d_strtod=''
763 d_strtol=''
764 d_strtold=''
765 d_strtoll=''
766 d_strtoq=''
767 d_strtoul=''
768 d_strtoull=''
769 d_strtouq=''
770 d_strxfrm=''
771 d_symlink=''
772 d_syscall=''
773 d_syscallproto=''
774 d_sysconf=''
775 d_system=''
776 d_tcgetpgrp=''
777 d_tcsetpgrp=''
778 d_telldirproto=''
779 d_time=''
780 timetype=''
781 clocktype=''
782 d_times=''
783 d_tmpnam_r=''
784 tmpnam_r_proto=''
785 d_truncate=''
786 d_ttyname_r=''
787 ttyname_r_proto=''
788 d_tzname=''
789 d_u32align=''
790 d_ualarm=''
791 d_umask=''
792 d_semctl_semid_ds=''
793 d_semctl_semun=''
794 d_union_semun=''
795 d_unordered=''
796 d_unsetenv=''
797 d_usleep=''
798 d_usleepproto=''
799 d_ustat=''
800 d_pseudofork=''
801 d_vfork=''
802 usevfork=''
803 d_voidsig=''
804 signal_t=''
805 d_volatile=''
806 d_charvspr=''
807 d_vprintf=''
808 d_wait4=''
809 d_waitpid=''
810 d_wcstombs=''
811 d_wctomb=''
812 d_writev=''
813 dlext=''
814 cccdlflags=''
815 ccdlflags=''
816 dlsrc=''
817 ld=''
818 lddlflags=''
819 usedl=''
820 doublesize=''
821 ebcdic=''
822 fflushNULL=''
823 fflushall=''
824 fpossize=''
825 fpostype=''
826 gccansipedantic=''
827 gccosandvers=''
828 gccversion=''
829 gidformat=''
830 gidsign=''
831 gidsize=''
832 gidtype=''
833 groupstype=''
834 h_fcntl=''
835 h_sysfile=''
836 html1dir=''
837 html1direxp=''
838 installhtml1dir=''
839 html3dir=''
840 html3direxp=''
841 installhtml3dir=''
842 i_arpainet=''
843 i_assert=''
844 i_crypt=''
845 db_hashtype=''
846 db_prefixtype=''
847 db_version_major=''
848 db_version_minor=''
849 db_version_patch=''
850 i_db=''
851 i_dbm=''
852 i_rpcsvcdbm=''
853 d_dirnamlen=''
854 direntrytype=''
855 i_dirent=''
856 i_dld=''
857 i_dlfcn=''
858 i_fcntl=''
859 i_float=''
860 i_fp=''
861 i_fp_class=''
862 i_gdbm=''
863 d_grpasswd=''
864 i_grp=''
865 i_ieeefp=''
866 i_inttypes=''
867 i_langinfo=''
868 i_libutil=''
869 i_limits=''
870 i_locale=''
871 i_machcthr=''
872 i_malloc=''
873 i_math=''
874 i_memory=''
875 i_mntent=''
876 i_ndbm=''
877 i_netdb=''
878 i_neterrno=''
879 i_netinettcp=''
880 i_niin=''
881 i_sysin=''
882 i_poll=''
883 i_prot=''
884 i_pthread=''
885 d_pwage=''
886 d_pwchange=''
887 d_pwclass=''
888 d_pwcomment=''
889 d_pwexpire=''
890 d_pwgecos=''
891 d_pwpasswd=''
892 d_pwquota=''
893 i_pwd=''
894 i_sfio=''
895 i_shadow=''
896 i_socks=''
897 i_stddef=''
898 i_stdlib=''
899 i_string=''
900 strings=''
901 i_sunmath=''
902 i_sysaccess=''
903 i_sysdir=''
904 i_sysfile=''
905 d_voidtty=''
906 i_bsdioctl=''
907 i_sysfilio=''
908 i_sysioctl=''
909 i_syssockio=''
910 i_syslog=''
911 i_sysmman=''
912 i_sysmode=''
913 i_sysmount=''
914 i_sysndir=''
915 i_sysparam=''
916 i_sysresrc=''
917 i_syssecrt=''
918 i_sysselct=''
919 i_sysstat=''
920 i_sysstatfs=''
921 i_sysstatvfs=''
922 i_systimes=''
923 i_systypes=''
924 i_sysuio=''
925 i_sysun=''
926 i_sysutsname=''
927 i_sysvfs=''
928 i_syswait=''
929 i_sgtty=''
930 i_termio=''
931 i_termios=''
932 d_tm_tm_gmtoff=''
933 d_tm_tm_zone=''
934 i_systime=''
935 i_systimek=''
936 i_time=''
937 timeincl=''
938 i_unistd=''
939 i_ustat=''
940 i_utime=''
941 i_values=''
942 i_stdarg=''
943 i_varargs=''
944 i_varhdr=''
945 i_vfork=''
946 d_inc_version_list=''
947 inc_version_list=''
948 inc_version_list_init=''
949 installprefix=''
950 installprefixexp=''
951 installstyle=''
952 installusrbinperl=''
953 intsize=''
954 longsize=''
955 shortsize=''
956 issymlink=''
957 libc=''
958 ldlibpthname=''
959 libperl=''
960 shrpenv=''
961 useshrplib=''
962 glibpth=''
963 libpth=''
964 loclibpth=''
965 plibpth=''
966 xlibpth=''
967 ignore_versioned_solibs=''
968 libs=''
969 libsdirs=''
970 libsfiles=''
971 libsfound=''
972 libspath=''
973 lns=''
974 d_PRIEUldbl=''
975 d_PRIFUldbl=''
976 d_PRIGUldbl=''
977 d_PRIeldbl=''
978 d_PRIfldbl=''
979 d_PRIgldbl=''
980 d_SCNfldbl=''
981 sPRIEUldbl=''
982 sPRIFUldbl=''
983 sPRIGUldbl=''
984 sPRIeldbl=''
985 sPRIfldbl=''
986 sPRIgldbl=''
987 sSCNfldbl=''
988 lseeksize=''
989 lseektype=''
990 mad=''
991 madlyh=''
992 madlyobj=''
993 madlysrc=''
994 make_set_make=''
995 d_mymalloc=''
996 freetype=''
997 mallocobj=''
998 mallocsrc=''
999 malloctype=''
1000 usemallocwrap=''
1001 usemymalloc=''
1002 installman1dir=''
1003 man1dir=''
1004 man1direxp=''
1005 man1ext=''
1006 installman3dir=''
1007 man3dir=''
1008 man3direxp=''
1009 man3ext=''
1010 modetype=''
1011 multiarch=''
1012 mydomain=''
1013 myhostname=''
1014 phostname=''
1015 c=''
1016 n=''
1017 d_eofnblk=''
1018 eagain=''
1019 o_nonblock=''
1020 rd_nodata=''
1021 need_va_copy=''
1022 netdb_hlen_type=''
1023 netdb_host_type=''
1024 netdb_name_type=''
1025 netdb_net_type=''
1026 groupcat=''
1027 hostcat=''
1028 passcat=''
1029 orderlib=''
1030 ranlib=''
1031 d_perl_otherlibdirs=''
1032 otherlibdirs=''
1033 package=''
1034 spackage=''
1035 pager=''
1036 api_revision=''
1037 api_subversion=''
1038 api_version=''
1039 api_versionstring=''
1040 patchlevel=''
1041 perl_patchlevel=''
1042 revision=''
1043 subversion=''
1044 version=''
1045 version_patchlevel_string=''
1046 perl5=''
1047 perladmin=''
1048 perlpath=''
1049 d_nv_preserves_uv=''
1050 d_nv_zero_is_allbits_zero=''
1051 i16size=''
1052 i16type=''
1053 i32size=''
1054 i32type=''
1055 i64size=''
1056 i64type=''
1057 i8size=''
1058 i8type=''
1059 ivsize=''
1060 ivtype=''
1061 nv_preserves_uv_bits=''
1062 nvsize=''
1063 nvtype=''
1064 u16size=''
1065 u16type=''
1066 u32size=''
1067 u32type=''
1068 u64size=''
1069 u64type=''
1070 u8size=''
1071 u8type=''
1072 uvsize=''
1073 uvtype=''
1074 ivdformat=''
1075 nvEUformat=''
1076 nvFUformat=''
1077 nvGUformat=''
1078 nveformat=''
1079 nvfformat=''
1080 nvgformat=''
1081 uvXUformat=''
1082 uvoformat=''
1083 uvuformat=''
1084 uvxformat=''
1085 pidtype=''
1086 prefix=''
1087 prefixexp=''
1088 installprivlib=''
1089 privlib=''
1090 privlibexp=''
1091 prototype=''
1092 ptrsize=''
1093 d_PRIXU64=''
1094 d_PRId64=''
1095 d_PRIi64=''
1096 d_PRIo64=''
1097 d_PRIu64=''
1098 d_PRIx64=''
1099 sPRIXU64=''
1100 sPRId64=''
1101 sPRIi64=''
1102 sPRIo64=''
1103 sPRIu64=''
1104 sPRIx64=''
1105 d_quad=''
1106 quadkind=''
1107 quadtype=''
1108 uquadtype=''
1109 drand01=''
1110 randbits=''
1111 randfunc=''
1112 randseedtype=''
1113 seedfunc=''
1114 installscript=''
1115 scriptdir=''
1116 scriptdirexp=''
1117 selectminbits=''
1118 selecttype=''
1119 sh=''
1120 sig_count=''
1121 sig_name=''
1122 sig_name_init=''
1123 sig_num=''
1124 sig_num_init=''
1125 sig_size=''
1126 d_sitearch=''
1127 installsitearch=''
1128 sitearch=''
1129 sitearchexp=''
1130 installsitebin=''
1131 sitebin=''
1132 sitebinexp=''
1133 installsitehtml1dir=''
1134 sitehtml1dir=''
1135 sitehtml1direxp=''
1136 installsitehtml3dir=''
1137 sitehtml3dir=''
1138 sitehtml3direxp=''
1139 installsitelib=''
1140 sitelib=''
1141 sitelib_stem=''
1142 sitelibexp=''
1143 installsiteman1dir=''
1144 siteman1dir=''
1145 siteman1direxp=''
1146 installsiteman3dir=''
1147 siteman3dir=''
1148 siteman3direxp=''
1149 siteprefix=''
1150 siteprefixexp=''
1151 installsitescript=''
1152 sitescript=''
1153 sitescriptexp=''
1154 sizesize=''
1155 sizetype=''
1156 so=''
1157 socksizetype=''
1158 sharpbang=''
1159 shsharp=''
1160 spitshell=''
1161 src=''
1162 ssizetype=''
1163 startperl=''
1164 startsh=''
1165 stdchar=''
1166 d_stdio_stream_array=''
1167 stdio_stream_array=''
1168 sysman=''
1169 trnl=''
1170 uidformat=''
1171 uidsign=''
1172 uidsize=''
1173 uidtype=''
1174 archname64=''
1175 use64bitall=''
1176 use64bitint=''
1177 usefaststdio=''
1178 ccflags_uselargefiles=''
1179 ldflags_uselargefiles=''
1180 libswanted_uselargefiles=''
1181 uselargefiles=''
1182 uselongdouble=''
1183 usemorebits=''
1184 usemultiplicity=''
1185 nm_opt=''
1186 nm_so_opt=''
1187 runnm=''
1188 usenm=''
1189 useperlio=''
1190 usesocks=''
1191 d_oldpthreads=''
1192 use5005threads=''
1193 useithreads=''
1194 usereentrant=''
1195 usethreads=''
1196 incpath=''
1197 mips_type=''
1198 usrinc=''
1199 d_vendorarch=''
1200 installvendorarch=''
1201 vendorarch=''
1202 vendorarchexp=''
1203 d_vendorbin=''
1204 installvendorbin=''
1205 vendorbin=''
1206 vendorbinexp=''
1207 installvendorhtml1dir=''
1208 vendorhtml1dir=''
1209 vendorhtml1direxp=''
1210 installvendorhtml3dir=''
1211 vendorhtml3dir=''
1212 vendorhtml3direxp=''
1213 d_vendorlib=''
1214 installvendorlib=''
1215 vendorlib=''
1216 vendorlib_stem=''
1217 vendorlibexp=''
1218 installvendorman1dir=''
1219 vendorman1dir=''
1220 vendorman1direxp=''
1221 installvendorman3dir=''
1222 vendorman3dir=''
1223 vendorman3direxp=''
1224 usevendorprefix=''
1225 vendorprefix=''
1226 vendorprefixexp=''
1227 d_vendorscript=''
1228 installvendorscript=''
1229 vendorscript=''
1230 vendorscriptexp=''
1231 versiononly=''
1232 defvoidused=''
1233 voidflags=''
1234 yacc=''
1235 yaccflags=''
1236 CONFIG=''
1237
1238 define='define'
1239 undef='undef'
1240 smallmach='pdp11 i8086 z8000 i80286 iAPX286'
1241 rmlist=''
1242
1243 : We must find out about Eunice early
1244 eunicefix=':'
1245 if test -f /etc/unixtovms; then
1246         eunicefix=/etc/unixtovms
1247 fi
1248 if test -f /etc/unixtovms.exe; then
1249         eunicefix=/etc/unixtovms.exe
1250 fi
1251
1252 : Set executable suffix now -- needed before hints available
1253 if test -f "/libs/version.library"; then
1254 : Amiga OS
1255     _exe=""
1256 elif test -f "/system/gnu_library/bin/ar.pm"; then
1257 : Stratus VOS
1258     _exe=".pm"
1259 elif test -n "$DJGPP"; then
1260 : DOS DJGPP
1261     _exe=".exe"
1262 elif test -d c:/. -o -n "$is_os2" ; then
1263 : OS/2 or cygwin
1264     _exe=".exe"
1265 fi
1266
1267 i_whoami=''
1268 : Trailing extension.  Override this in a hint file, if needed.
1269 : Extra object files, if any, needed on this platform.
1270 archobjs=''
1271 archname=''
1272 groupstype=''
1273 libnames=''
1274 : change the next line if compiling for Xenix/286 on Xenix/386
1275 xlibpth='/usr/lib/386 /lib/386'
1276 : Possible local library directories to search.
1277 loclibpth="/usr/local/lib /opt/local/lib /usr/gnu/lib"
1278 loclibpth="$loclibpth /opt/gnu/lib /usr/GNU/lib /opt/GNU/lib"
1279
1280 : general looking path for locating libraries
1281 glibpth="/lib /usr/lib $xlibpth"
1282 glibpth="$glibpth /usr/ccs/lib /usr/ucblib /usr/local/lib"
1283 test -f /usr/shlib/libc.so && glibpth="/usr/shlib $glibpth"
1284 test -f /shlib/libc.so     && glibpth="/shlib $glibpth"
1285 test -d /usr/lib64         && glibpth="$glibpth /lib64 /usr/lib64 /usr/local/lib64"
1286
1287 : Private path used by Configure to find libraries.  Its value
1288 : is prepended to libpth. This variable takes care of special
1289 : machines, like the mips.  Usually, it should be empty.
1290 plibpth=''
1291
1292 : default library list
1293 libswanted=''
1294 : some systems want to use only the non-versioned libso:s
1295 ignore_versioned_solibs=''
1296 siteman1dir=''
1297 siteman3dir=''
1298 sitescript=''
1299 : set usethreads on the Configure command line to enable threads.
1300 usereentrant='undef'
1301 : full support for void wanted by default
1302 defvoidused=15
1303
1304 : Possible local include directories to search.
1305 : Set locincpth to "" in a hint file to defeat local include searches.
1306 locincpth="/usr/local/include /opt/local/include /usr/gnu/include"
1307 locincpth="$locincpth /opt/gnu/include /usr/GNU/include /opt/GNU/include"
1308 :
1309 : no include file wanted by default
1310 inclwanted=''
1311
1312 : Enable -DEBUGGING and -DDEBUGGING from the command line
1313 EBUGGING=''
1314 DEBUGGING=old
1315
1316 ccname=''
1317 ccversion=''
1318 perllibs=''
1319 : set useposix=false in your hint file to disable the POSIX extension.
1320 useposix=true
1321 : set useopcode=false in your hint file to disable the Opcode extension.
1322 useopcode=true
1323 archname64=''
1324 ccflags_uselargefiles=''
1325 ldflags_uselargefiles=''
1326 libswanted_uselargefiles=''
1327 : set usemultiplicity on the Configure command line to enable multiplicity.
1328 : set usesocks on the Configure command line to enable socks.
1329 : List of libraries we want.
1330 : If anyone needs extra -lxxx, put those in a hint file.
1331 libswanted="sfio socket bind inet nsl nm ndbm gdbm dbm db malloc dl dld ld sun"
1332 libswanted="$libswanted m crypt sec util c cposix posix ucb bsd BSD"
1333 : We probably want to search /usr/shlib before most other libraries.
1334 : This is only used by the lib/ExtUtils/MakeMaker.pm routine extliblist.
1335 glibpth=`echo " $glibpth " | sed -e 's! /usr/shlib ! !'`
1336 glibpth="/usr/shlib $glibpth"
1337 : Do not use vfork unless overridden by a hint file.
1338 usevfork=false
1339
1340 : Find the basic shell for Bourne shell scripts
1341 case "$sh" in
1342 '')
1343         case "$SYSTYPE" in
1344         *bsd*|sys5*) xxx="/$SYSTYPE/bin/sh";;
1345         *) xxx='/bin/sh';;
1346         esac
1347         if test -f "$xxx"; then
1348                 sh="$xxx"
1349         else
1350                 : Build up a list and do a single loop so we can 'break' out.
1351                 pth=`echo $PATH | sed -e "s/$p_/ /g"`
1352                 for xxx in sh bash ksh pdksh ash; do
1353                         for p in $pth; do
1354                                 try="$try ${p}/${xxx}"
1355                         done
1356                 done
1357                 for xxx in $try; do
1358                         if test -f "$xxx"; then
1359                                 sh="$xxx";
1360                                 break
1361                         elif test "X$_exe" != X -a -f "$xxx$_exe"; then
1362                                 sh="$xxx";
1363                                 break
1364                         elif test -f "$xxx.exe"; then
1365                                 sh="$xxx";
1366                                 break
1367                         fi
1368                 done
1369         fi
1370         ;;
1371 esac
1372
1373 case "$sh" in
1374 '')     cat >&2 <<EOM
1375 $me:  Fatal Error:  I can't find a Bourne Shell anywhere.  
1376
1377 Usually it's in /bin/sh.  How did you even get this far?
1378 Please contact me (Perl Maintainers) at perlbug@perl.org and 
1379 we'll try to straighten this all out.
1380 EOM
1381         exit 1
1382         ;;
1383 esac
1384
1385 : see if sh knows # comments
1386 if `$sh -c '#' >/dev/null 2>&1`; then
1387         shsharp=true
1388         spitshell=cat
1389         xcat=/bin/cat
1390         test -f $xcat$_exe || xcat=/usr/bin/cat
1391         if test ! -f $xcat$_exe; then
1392                 for p in `echo $PATH | sed -e "s/$p_/ /g"` $paths; do
1393                         if test -f $p/cat$_exe; then
1394                                 xcat=$p/cat
1395                                 break
1396                         fi
1397                 done
1398                 if test ! -f $xcat$_exe; then
1399                         echo "Can't find cat anywhere!"
1400                         exit 1
1401                 fi
1402         fi
1403         echo "#!$xcat" >sharp
1404         $eunicefix sharp
1405         chmod +x sharp
1406         ./sharp > today
1407         if test -s today; then
1408                 sharpbang='#!'
1409         else
1410                 echo "#! $xcat" > sharp
1411                 $eunicefix sharp
1412                 chmod +x sharp
1413                 ./sharp > today
1414                 if test -s today; then
1415                         sharpbang='#! '
1416                 else
1417                         sharpbang=': use '
1418                 fi
1419         fi
1420 else
1421         echo " "
1422         echo "Your $sh doesn't grok # comments--I will strip them later on."
1423         shsharp=false
1424         cd ..
1425         echo "exec grep -v '^[  ]*#'" >spitshell
1426         chmod +x spitshell
1427         $eunicefix spitshell
1428         spitshell=`pwd`/spitshell
1429         cd UU
1430         echo "I presume that if # doesn't work, #! won't work either!"
1431         sharpbang=': use '
1432 fi
1433 rm -f sharp today
1434
1435 : figure out how to guarantee sh startup
1436 case "$startsh" in
1437 '') startsh=${sharpbang}${sh} ;;
1438 *)
1439 esac
1440 cat >sharp <<EOSS
1441 $startsh
1442 set abc
1443 test "$?abc" != 1
1444 EOSS
1445
1446 chmod +x sharp
1447 $eunicefix sharp
1448 if ./sharp; then
1449         : echo "Yup, it does."
1450 else
1451         echo "Hmm... '$startsh' does not guarantee sh startup..."
1452         echo "You may have to fix up the shell scripts to make sure $sh runs them."
1453 fi
1454 rm -f sharp
1455
1456 : Save command line options in file UU/cmdline.opt for later use in
1457 : generating config.sh.
1458 cat > cmdline.opt <<EOSH
1459 : Configure command line arguments.
1460 config_arg0='$0'
1461 config_args='$*'
1462 config_argc=$#
1463 EOSH
1464 argn=1
1465 args_exp=''
1466 args_sep=''
1467 for arg in "$@"; do
1468         cat >>cmdline.opt <<EOSH
1469 config_arg$argn='$arg'
1470 EOSH
1471         cat <<EOC | sed -e "s/'/'"'"'"'"'"'"'/g" > cmdl.opt
1472 $arg
1473 EOC
1474         arg_exp=`cat cmdl.opt`
1475         args_exp="$args_exp$args_sep'$arg_exp'"
1476         argn=`expr $argn + 1`
1477         args_sep=' '
1478 done
1479 rm -f cmdl.opt
1480
1481 : produce awk script to parse command line options
1482 cat >options.awk <<'EOF'
1483 BEGIN {
1484         optstr = "A:dD:eEf:hKOrsSU:V";  # getopt-style specification
1485
1486         len = length(optstr);
1487         for (i = 1; i <= len; i++) {
1488                 c = substr(optstr, i, 1);
1489                 if (i < len) a = substr(optstr, i + 1, 1); else a = "";
1490                 if (a == ":") {
1491                         arg[c] = 1;
1492                         i++;
1493                 }
1494                 opt[c] = 1;
1495         }
1496 }
1497 {
1498         expect = 0;
1499         str = $0;
1500         if (substr(str, 1, 1) != "-") {
1501                 printf("'%s'\n", str);
1502                 next;
1503         }
1504         len = length($0);
1505         for (i = 2; i <= len; i++) {
1506                 c = substr(str, i, 1);
1507                 if (!opt[c]) {
1508                         printf("-%s\n", substr(str, i));
1509                         next;
1510                 }
1511                 printf("-%s\n", c);
1512                 if (arg[c]) {
1513                         if (i < len)
1514                                 printf("'%s'\n", substr(str, i + 1));
1515                         else
1516                                 expect = 1;
1517                         next;
1518                 }
1519         }
1520 }
1521 END {
1522         if (expect)
1523                 print "?";
1524 }
1525 EOF
1526
1527 : process the command line options
1528 set X `for arg in "$@"; do echo "X$arg"; done |
1529         sed -e s/X// | awk -f options.awk`
1530 eval "set $*"
1531 shift
1532 rm -f options.awk
1533
1534 : set up default values
1535 fastread=''
1536 reuseval=false
1537 config_sh=''
1538 alldone=''
1539 error=''
1540 silent=''
1541 extractsh=''
1542 override=''
1543 knowitall=''
1544 rm -f optdef.sh posthint.sh
1545 cat >optdef.sh <<EOS
1546 $startsh
1547 EOS
1548
1549
1550 : option parsing
1551 while test $# -gt 0; do
1552         case "$1" in
1553         -d) shift; fastread=yes;;
1554         -e) shift; alldone=cont;;
1555         -f)
1556                 shift
1557                 cd ..
1558                 if test -r "$1"; then
1559                         config_sh="$1"
1560                 else
1561                         echo "$me: cannot read config file $1." >&2
1562                         error=true
1563                 fi
1564                 cd UU
1565                 shift;;
1566         --help|\
1567         -h) shift; error=true;;
1568         -r) shift; reuseval=true;;
1569         -s) shift; silent=true; realsilent=true;;
1570         -E) shift; alldone=exit;;
1571         -K) shift; knowitall=true;;
1572         -O) shift; override=true;;
1573         -S) shift; silent=true; extractsh=true;;
1574         -D)
1575                 shift
1576                 case "$1" in
1577                 *=)
1578                         echo "$me: use '-U symbol=', not '-D symbol='." >&2
1579                         echo "$me: ignoring -D $1" >&2
1580                         ;;
1581                 *=*) echo "$1" | \
1582                                 sed -e "s/'/'\"'\"'/g" -e "s/=\(.*\)/='\1'/" >> optdef.sh;;
1583                 *) echo "$1='define'" >> optdef.sh;;
1584                 esac
1585                 shift
1586                 ;;
1587         -U)
1588                 shift
1589                 case "$1" in
1590                 *=) echo "$1" >> optdef.sh;;
1591                 *=*)
1592                         echo "$me: use '-D symbol=val', not '-U symbol=val'." >&2
1593                         echo "$me: ignoring -U $1" >&2
1594                         ;;
1595                 *) echo "$1='undef'" >> optdef.sh;;
1596                 esac
1597                 shift
1598                 ;;
1599         -A)
1600             shift
1601             xxx=''
1602             yyy="$1"
1603             zzz=''
1604             uuu=undef
1605             case "$yyy" in
1606             *=*) zzz=`echo "$yyy"|sed 's!=.*!!'`
1607                  case "$zzz" in
1608                  *:*) zzz='' ;;
1609                  *)   xxx=append
1610                       zzz=" "`echo "$yyy"|sed 's!^[^=]*=!!'`
1611                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1612                  esac
1613                  ;;
1614             esac
1615             case "$xxx" in
1616             '')  case "$yyy" in
1617                  *:*) xxx=`echo "$yyy"|sed 's!:.*!!'`
1618                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'`
1619                       zzz=`echo "$yyy"|sed 's!^[^=]*=!!'`
1620                       yyy=`echo "$yyy"|sed 's!=.*!!'` ;;
1621                  *)   xxx=`echo "$yyy"|sed 's!:.*!!'`
1622                       yyy=`echo "$yyy"|sed 's!^[^:]*:!!'` ;;
1623                  esac
1624                  ;;
1625             esac
1626             case "$xxx" in
1627             append)
1628                 echo "$yyy=\"\${$yyy}$zzz\""    >> posthint.sh ;;
1629             clear)
1630                 echo "$yyy=''"                  >> posthint.sh ;;
1631             define)
1632                 case "$zzz" in
1633                 '') zzz=define ;;
1634                 esac
1635                 echo "$yyy='$zzz'"              >> posthint.sh ;;
1636             eval)
1637                 echo "eval \"$yyy=$zzz\""       >> posthint.sh ;;
1638             prepend)
1639                 echo "$yyy=\"$zzz\${$yyy}\""    >> posthint.sh ;;
1640             undef)
1641                 case "$zzz" in
1642                 '') zzz="$uuu" ;;
1643                 esac
1644                 echo "$yyy=$zzz"                >> posthint.sh ;;
1645             *)  echo "$me: unknown -A command '$xxx', ignoring -A $1" >&2 ;;
1646             esac
1647             shift
1648             ;;
1649         -V) echo "$me generated by metaconfig 3.0 PL70." >&2
1650             exit 0;;
1651         --) break;;
1652         -*) echo "$me: unknown option $1" >&2; shift; error=true;;
1653         *) break;;
1654         esac
1655 done
1656
1657 case "$error" in
1658 true)
1659         cat >&2 <<EOM
1660 Usage: $me [-dehrsEKOSV] [-f config.sh] [-D symbol] [-D symbol=value]
1661                  [-U symbol] [-U symbol=] [-A command:symbol...]
1662   -d : use defaults for all answers.
1663   -e : go on without questioning past the production of config.sh.
1664   -f : specify an alternate default configuration file.
1665   -h : print this help message and exit (with an error status).
1666   -r : reuse C symbols value if possible (skips costly nm extraction).
1667   -s : silent mode, only echoes questions and essential information.
1668   -D : define symbol to have some value:
1669          -D symbol         symbol gets the value 'define'
1670          -D symbol=value   symbol gets the value 'value'
1671        common used examples (see INSTALL for more info):
1672          -Duse64bitint            use 64bit integers
1673          -Duse64bitall            use 64bit integers and pointers
1674          -Dusethreads             use thread support
1675          -Dinc_version_list=none  do not include older perl trees in @INC
1676          -DEBUGGING=none          DEBUGGING options
1677          -Dcc=gcc                 choose your compiler
1678          -Dprefix=/opt/perl5      choose your destination
1679   -E : stop at the end of questions, after having produced config.sh.
1680   -K : do not use unless you know what you are doing.
1681   -O : let -D and -U override definitions from loaded configuration file.
1682   -S : perform variable substitutions on all .SH files (can mix with -f)
1683   -U : undefine symbol:
1684          -U symbol    symbol gets the value 'undef'
1685          -U symbol=   symbol gets completely empty
1686        e.g.:  -Uversiononly
1687   -A : manipulate symbol after the platform specific hints have been applied:
1688          -A append:symbol=value   append value to symbol
1689          -A symbol=value          like append:, but with a separating space
1690          -A define:symbol=value   define symbol to have value
1691          -A clear:symbol          define symbol to be ''
1692          -A define:symbol         define symbol to be 'define'
1693          -A eval:symbol=value     define symbol to be eval of value
1694          -A prepend:symbol=value  prepend value to symbol
1695          -A undef:symbol          define symbol to be 'undef'
1696          -A undef:symbol=         define symbol to be ''
1697        e.g.:  -A prepend:libswanted='cl pthread '
1698               -A ccflags=-DSOME_MACRO
1699   -V : print version number and exit (with a zero status).
1700 EOM
1701         exit 1
1702         ;;
1703 esac
1704
1705 : Sanity checks
1706 case "$fastread$alldone" in
1707 yescont|yesexit) ;;
1708 *)
1709         case "$extractsh" in
1710         true) ;;
1711         *)
1712                 if test ! -t 0; then
1713                         echo "Say 'sh Configure', not 'sh <Configure'"
1714                         exit 1
1715                 fi
1716                 ;;
1717         esac
1718         ;;
1719 esac
1720
1721 exec 4>&1
1722 case "$silent" in
1723 true) exec 1>/dev/null;;
1724 esac
1725
1726 : run the defines and the undefines, if any, but leave the file out there...
1727 touch optdef.sh
1728 . ./optdef.sh
1729 : create the posthint manipulation script and leave the file out there...
1730 touch posthint.sh
1731
1732 : set package name
1733 package=perl5
1734 first=`echo $package | sed -e 's/^\(.\).*/\1/'`
1735 last=`echo $package | sed -e 's/^.\(.*\)/\1/'`
1736 case "`echo AbyZ | tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
1737 ABYZ) spackage=`echo $first | tr '[:lower:]' '[:upper:]'`$last;;
1738 *) spackage=`echo $first | tr '[a-z]' '[A-Z]'`$last;;
1739 esac
1740
1741 : Some greps do not return status, grrr.
1742 echo "grimblepritz" >grimble
1743 if grep blurfldyick grimble >/dev/null 2>&1 ; then
1744         contains=contains
1745 elif grep grimblepritz grimble >/dev/null 2>&1 ; then
1746         contains=grep
1747 else
1748         contains=contains
1749 fi
1750 rm -f grimble
1751 : the following should work in any shell
1752 case "$contains" in
1753 contains*)
1754         echo " "
1755         echo "AGH!  Grep doesn't return a status.  Attempting remedial action."
1756         cat >contains <<'EOSS'
1757 grep "$1" "$2" >.greptmp && cat .greptmp && test -s .greptmp
1758 EOSS
1759 chmod +x contains
1760 esac
1761
1762 : Find the path to the source tree
1763 case "$src" in
1764 '') case "$0" in
1765     */*) src=`echo $0 | sed -e 's%/[^/][^/]*$%%'`
1766          case "$src" in
1767          /*)    ;;
1768          .)     ;;
1769          *)     src=`cd ../$src && pwd` ;;
1770          esac
1771          ;;
1772     *)   src='.';;
1773     esac;;
1774 esac
1775 case "$src" in
1776 '')     src=/
1777         rsrc=/
1778         ;;
1779 /*) rsrc="$src";;
1780 *) rsrc="../$src";;
1781 esac
1782 if test -f $rsrc/Configure && \
1783         $contains "^package=$package$" $rsrc/Configure >/dev/null 2>&1
1784 then
1785    : found it, so we are ok.
1786 else
1787         rsrc=''
1788         for src in . .. ../.. ../../.. ../../../..; do
1789                 if test -f ../$src/Configure && \
1790                         $contains "^package=$package$" ../$src/Configure >/dev/null 2>&1
1791                 then
1792                         rsrc=../$src
1793                         break
1794                 fi
1795         done
1796 fi
1797 case "$rsrc" in
1798 '')
1799         cat <<EOM >&4
1800
1801 Sorry, I can't seem to locate the source dir for $package.  Please start
1802 Configure with an explicit path -- i.e. /some/path/Configure.
1803
1804 EOM
1805         exit 1
1806         ;;
1807 ../.)   rsrc='..';;
1808 *)
1809         echo " "
1810         echo "Sources for $package found in \"$src\"." >&4
1811         ;;
1812 esac
1813
1814 : script used to extract .SH files with variable substitutions
1815 cat >extract <<'EOS'
1816 PERL_CONFIG_SH=true
1817 echo "Doing variable substitutions on .SH files..."
1818 if test -f MANIFEST; then
1819         set x `awk '{print $1}' < MANIFEST | grep '\.SH$'`
1820 else
1821         echo "(Looking for .SH files under the source directory.)"
1822         set x `(cd "$src"; find . -name "*.SH" -print)`
1823 fi
1824 shift
1825 case $# in
1826 0) set x `(cd "$src"; echo *.SH)`; shift;;
1827 esac
1828 if test ! -f "$src/$1"; then
1829         shift
1830 fi
1831 mkdir_p='
1832 name=$1;
1833 create="";
1834 while test $name; do
1835         if test ! -d "$name"; then
1836                 create="$name $create";
1837                 name=`echo $name | sed -e "s|^[^/]*$||"`;
1838                 name=`echo $name | sed -e "s|\(.*\)/.*|\1|"`;
1839         else
1840                 name="";
1841         fi;
1842 done;
1843 for file in $create; do
1844         mkdir $file;
1845 done
1846 '
1847 for file in $*; do
1848         case "$src" in
1849         ".")
1850                 case "$file" in
1851                 */*)
1852                         dir=`expr X$file : 'X\(.*\)/'`
1853                         file=`expr X$file : 'X.*/\(.*\)'`
1854                         (cd "$dir" && . ./$file)
1855                         ;;
1856                 *)
1857                         . ./$file
1858                         ;;
1859                 esac
1860                 ;;
1861         *)
1862                 case "$file" in
1863                 */*)
1864                         dir=`expr X$file : 'X\(.*\)/'`
1865                         file=`expr X$file : 'X.*/\(.*\)'`
1866                         (set x $dir; shift; eval $mkdir_p)
1867                         sh <"$src/$dir/$file"
1868                         ;;
1869                 *)
1870                         sh <"$src/$file"
1871                         ;;
1872                 esac
1873                 ;;
1874         esac
1875 done
1876 if test -f "$src/config_h.SH"; then
1877         if test ! -f config.h; then
1878         : oops, they left it out of MANIFEST, probably, so do it anyway.
1879         . "$src/config_h.SH"
1880         fi
1881 fi
1882 EOS
1883
1884 : extract files and exit if asked to do so
1885 case "$extractsh" in
1886 true)
1887         case "$realsilent" in
1888         true) ;;
1889         *) exec 1>&4;;
1890         esac
1891         case "$config_sh" in
1892         '') config_sh='config.sh';;
1893         esac
1894         echo " "
1895         echo "Fetching answers from $config_sh..."
1896         cd ..
1897         . $config_sh
1898         test "$override" && . ./optdef.sh
1899         echo " "
1900         . UU/extract
1901         rm -rf UU
1902         echo "Extraction done."
1903         exit 0
1904         ;;
1905 esac
1906
1907 : Eunice requires " " instead of "", can you believe it
1908 echo " "
1909 : Here we go...
1910 echo "Beginning of configuration questions for $package."
1911
1912 trap 'echo " "; test -d ../UU && rm -rf X $rmlist; exit 1' 1 2 3 15
1913
1914 : first determine how to suppress newline on echo command
1915 echo " "
1916 echo "Checking echo to see how to suppress newlines..."
1917 (echo "hi there\c" ; echo " ") >.echotmp
1918 if $contains c .echotmp >/dev/null 2>&1 ; then
1919         echo "...using -n."
1920         n='-n'
1921         c=''
1922 else
1923         cat <<'EOM'
1924 ...using \c
1925 EOM
1926         n=''
1927         c='\c'
1928 fi
1929 echo $n "The star should be here-->$c"
1930 echo '*'
1931 rm -f .echotmp
1932
1933 : Now test for existence of everything in MANIFEST
1934 echo " "
1935 if test -f "$rsrc/MANIFEST"; then
1936         echo "First let's make sure your kit is complete.  Checking..." >&4
1937         awk '$1 !~ /PACK[A-Z]+/ {print $1}' "$rsrc/MANIFEST" | (split -l 50 2>/dev/null || split -50)
1938         rm -f missing
1939         tmppwd=`pwd`
1940         for filelist in x??; do
1941                 (cd "$rsrc"; ls `cat "$tmppwd/$filelist"` >/dev/null 2>>"$tmppwd/missing")
1942         done
1943         if test -s missing; then
1944                 cat missing >&4
1945                 cat >&4 <<'EOM'
1946
1947 THIS PACKAGE SEEMS TO BE INCOMPLETE.
1948
1949 You have the option of continuing the configuration process, despite the
1950 distinct possibility that your kit is damaged, by typing 'y'es.  If you
1951 do, don't blame me if something goes wrong.  I advise you to type 'n'o
1952 and contact the author (perlbug@perl.org).
1953
1954 EOM
1955                 echo $n "Continue? [n] $c" >&4
1956                 read ans
1957                 case "$ans" in
1958                 y*)
1959                         echo "Continuing..." >&4
1960                         rm -f missing
1961                         ;;
1962                 *)
1963                         echo "ABORTING..." >&4
1964                         kill $$
1965                         ;;
1966                 esac
1967         else
1968                 echo "Looks good..."
1969         fi
1970 else
1971         echo "There is no MANIFEST file.  I hope your kit is complete !"
1972 fi
1973 rm -f missing x??
1974
1975 : Find the appropriate value for a newline for tr
1976 echo " "
1977 if test -n "$DJGPP"; then
1978        trnl='\012'
1979 fi
1980 if test X"$trnl" = X; then
1981         case "`echo foo|tr '\n' x 2>/dev/null`" in
1982         foox) trnl='\n' ;;
1983         esac
1984 fi
1985 if test X"$trnl" = X; then
1986         case "`echo foo|tr '\012' x 2>/dev/null`" in
1987         foox) trnl='\012' ;;
1988         esac
1989 fi
1990 if test X"$trnl" = X; then
1991        case "`echo foo|tr '\r\n' xy 2>/dev/null`" in
1992        fooxy) trnl='\n\r' ;;
1993        esac
1994 fi
1995 if test X"$trnl" = X; then
1996         cat <<EOM >&2
1997
1998 $me: Fatal Error: cannot figure out how to translate newlines with 'tr'.
1999
2000 EOM
2001         exit 1
2002 fi
2003
2004 : compute the number of columns on the terminal for proper question formatting
2005 case "$COLUMNS" in
2006 '') COLUMNS='80';;
2007 esac
2008
2009 : set up the echo used in my read
2010 myecho="case \"\$xxxm\" in
2011 '') echo $n \"\$rp $c\" >&4;;
2012 *) case \"\$rp\" in
2013         '') echo $n \"[\$xxxm] $c\";;
2014         *)
2015                 if test \`echo \"\$rp [\$xxxm]  \" | wc -c\` -ge $COLUMNS; then
2016                         echo \"\$rp\" >&4
2017                         echo $n \"[\$xxxm] $c\" >&4
2018                 else
2019                         echo $n \"\$rp [\$xxxm] $c\" >&4
2020                 fi
2021                 ;;
2022         esac;;
2023 esac"
2024
2025 : now set up to do reads with possible shell escape and default assignment
2026 cat <<EOSC >myread
2027 $startsh
2028 xxxm=\$dflt
2029 $myecho
2030 ans='!'
2031 case "\$fastread" in
2032 yes) case "\$dflt" in
2033         '') ;;
2034         *) ans='';
2035                 case "\$silent-\$rp" in
2036                 true-) ;;
2037                 *) echo " " >&4;;
2038                 esac;;
2039         esac;;
2040 *) case "\$silent" in
2041         true) case "\$rp" in
2042                 '') ans='';;
2043                 esac;;
2044         esac;;
2045 esac
2046 while expr "X\$ans" : "X!" >/dev/null; do
2047         read answ
2048         set x \$xxxm
2049         shift
2050         aok=''; eval "ans=\\"\$answ\\"" && aok=y
2051         case  "\$answ" in
2052         "!")
2053                 sh 1>&4
2054                 echo " "
2055                 $myecho
2056                 ;;
2057         !*)
2058                 set x \`expr "X\$ans" : "X!\(.*\)\$"\`
2059                 shift
2060                 sh 1>&4 -c "\$*"
2061                 echo " "
2062                 $myecho
2063                 ;;
2064         "\$ans")
2065                 case "\$ans" in
2066                 \\&*)
2067                         set x \`expr "X\$ans" : "X&\(.*\)\$"\`
2068                         shift
2069                         case "\$1" in
2070                         -d)
2071                                 fastread=yes
2072                                 echo "(OK, I'll run with -d after this question.)" >&4
2073                                 ;;
2074                         -*)
2075                                 echo "*** Sorry, \$1 not supported yet." >&4
2076                                 ;;
2077                         esac
2078                         $myecho
2079                         ans=!
2080                         ;;
2081                 esac;;
2082         *)
2083                 case "\$aok" in
2084                 y)
2085                         echo "*** Substitution done -- please confirm."
2086                         xxxm="\$ans"
2087                         ans=\`echo $n "\$ans$c" | tr '$trnl' ' '\`
2088                         xxxm="\$ans"
2089                         ans=!
2090                         ;;
2091                 *)
2092                         echo "*** Error -- try again."
2093                         ans=!
2094                         ;;
2095                 esac
2096                 $myecho
2097                 ;;
2098         esac
2099         case "\$ans\$xxxm\$nostick" in
2100         '')
2101                 ans=!
2102                 $myecho
2103                 ;;
2104         esac
2105 done
2106 case "\$ans" in
2107 '') ans="\$xxxm";;
2108 esac
2109 EOSC
2110
2111 : create .config dir to save info across Configure sessions
2112 test -d ../.config || mkdir ../.config
2113 cat >../.config/README <<EOF
2114 This directory created by Configure to save information that should
2115 persist across sessions for $package.
2116
2117 You may safely delete it if you wish.
2118 EOF
2119
2120 : See if we are using a devel version and want that
2121 xversion=`awk '/define[         ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
2122 case "$usedevel" in
2123 $define|true|[yY]*) ;;
2124 *) case "$xversion" in
2125    *[13579])
2126         cat >&4 <<EOH
2127 *** WHOA THERE!!! ***
2128
2129     This is an UNSTABLE DEVELOPMENT release.
2130     The version of this $package distribution is $xversion, that is, odd,
2131     (as opposed to even) and that signifies a development release.
2132     If you want a maintenance release, you want an even-numbered version.
2133
2134     Do ***NOT*** install this into production use.
2135     Data corruption and crashes are possible.
2136
2137     It is most seriously suggested that you do not continue any further
2138     unless you want to help in developing and debugging Perl.
2139
2140     If you *still* want to build perl, you can answer 'y' now,
2141     or pass -Dusedevel to Configure.
2142
2143 EOH
2144         rp='Do you really want to continue?'
2145         dflt='n'
2146         . ./myread
2147         case "$ans" in
2148         [yY]) echo >&4 "Okay, continuing."
2149               usedevel="$define" ;;
2150         *) echo >&4 "Okay, bye."
2151            exit 1
2152            ;;
2153         esac
2154         ;;
2155     esac
2156     ;;
2157 esac
2158 case "$usedevel" in
2159 $define|true|[yY]*)
2160         case "$versiononly" in
2161         '') versiononly="$define" ;;
2162         esac
2163         case "$installusrbinperl" in
2164         '') installusrbinperl="$undef" ;;
2165         esac
2166         ;;
2167 esac
2168
2169 : general instructions
2170 needman=true
2171 firsttime=true
2172 user=`(logname) 2>/dev/null`
2173 case "$user" in
2174 '') user=`whoami 2>&1`;;
2175 esac
2176 if $contains "^$user\$" ../.config/instruct >/dev/null 2>&1; then
2177         firsttime=false
2178         echo " "
2179         rp='Would you like to see the instructions?'
2180         dflt=n
2181         . ./myread
2182         case "$ans" in
2183         [yY]*) ;;
2184         *) needman=false;;
2185         esac
2186 fi
2187 if $needman; then
2188         cat <<EOH
2189
2190 This installation shell script will examine your system and ask you questions
2191 to determine how the perl5 package should be installed. If you get
2192 stuck on a question, you may use a ! shell escape to start a subshell or
2193 execute a command.  Many of the questions will have default answers in square
2194 brackets; typing carriage return will give you the default.
2195
2196 On some of the questions which ask for file or directory names you are allowed
2197 to use the ~name construct to specify the login directory belonging to "name",
2198 even if you don't have a shell which knows about that.  Questions where this is
2199 allowed will be marked "(~name ok)".
2200
2201 EOH
2202         rp=''
2203         dflt='Type carriage return to continue'
2204         . ./myread
2205         cat <<'EOH'
2206
2207 The prompter used in this script allows you to use shell variables and
2208 backticks in your answers.  You may use $1, $2, etc...  to refer to the words
2209 in the default answer, as if the default line was a set of arguments given to a
2210 script shell.  This means you may also use $* to repeat the whole default line,
2211 so you do not have to re-type everything to add something to the default.
2212
2213 Everytime there is a substitution, you will have to confirm.  If there is an
2214 error (e.g. an unmatched backtick), the default answer will remain unchanged
2215 and you will be prompted again.
2216
2217 If you are in a hurry, you may run 'Configure -d'.  This will bypass nearly all
2218 the questions and use the computed defaults (or the previous answers if there
2219 was already a config.sh file). Type 'Configure -h' for a list of options.
2220 You may also start interactively and then answer '& -d' at any prompt to turn
2221 on the non-interactive behaviour for the remainder of the execution.
2222
2223 EOH
2224         . ./myread
2225         cat <<EOH
2226
2227 Much effort has been expended to ensure that this shell script will run on any
2228 Unix system.  If despite that it blows up on yours, your best bet is to edit
2229 Configure and run it again.  If you can't run Configure for some reason,
2230 you'll have to generate a config.sh file by hand.  Whatever problems you
2231 have, let me (perlbug@perl.org) know how I blew it.
2232
2233 This installation script affects things in two ways:
2234
2235 1) it may do direct variable substitutions on some of the files included
2236    in this kit.
2237 2) it builds a config.h file for inclusion in C programs.  You may edit
2238    any of these files as the need arises after running this script.
2239
2240 If you make a mistake on a question, there is no easy way to back up to it
2241 currently.  The easiest thing to do is to edit config.sh and rerun all the SH
2242 files.  Configure will offer to let you do this before it runs the SH files.
2243
2244 EOH
2245         dflt='Type carriage return to continue'
2246         . ./myread
2247         case "$firsttime" in
2248         true) echo $user >>../.config/instruct;;
2249         esac
2250 fi
2251
2252 : find out where common programs are
2253 echo " "
2254 echo "Locating common programs..." >&4
2255 cat <<EOSC >loc
2256 $startsh
2257 case \$# in
2258 0) exit 1;;
2259 esac
2260 thing=\$1
2261 shift
2262 dflt=\$1
2263 shift
2264 for dir in \$*; do
2265         case "\$thing" in
2266         .)
2267         if test -d \$dir/\$thing; then
2268                 echo \$dir
2269                 exit 0
2270         fi
2271         ;;
2272         *)
2273         for thisthing in \$dir/\$thing; do
2274                 : just loop through to pick last item
2275         done
2276         if test -f \$thisthing; then
2277                 echo \$thisthing
2278                 exit 0
2279         elif test "X$_exe" != X -a -f \$thisthing$_exe; then
2280                 echo \$thisthing
2281                 exit 0
2282         elif test -f \$dir/\$thing.exe; then
2283                 if test -n "$DJGPP"; then
2284                         echo \$dir/\$thing.exe
2285                 elif test "$eunicefix" != ":"; then
2286                         : on Eunice apparently
2287                         echo \$dir/\$thing
2288                         exit 0
2289                 fi
2290                 exit 0
2291         fi
2292         ;;
2293         esac
2294 done
2295 echo \$dflt
2296 exit 1
2297 EOSC
2298 chmod +x loc
2299 $eunicefix loc
2300 loclist="
2301 awk
2302 cat
2303 chmod
2304 comm
2305 cp
2306 echo
2307 expr
2308 grep
2309 ls
2310 mkdir
2311 rm
2312 sed
2313 sort
2314 touch
2315 tr
2316 uniq
2317 "
2318 trylist="
2319 Mcc
2320 ar
2321 bison
2322 byacc
2323 cpp
2324 csh
2325 date
2326 egrep
2327 gmake
2328 gzip
2329 less
2330 ln
2331 make
2332 more
2333 nm
2334 nroff
2335 pg
2336 test
2337 uname
2338 zip
2339 "
2340 pth=`echo $PATH | sed -e "s/$p_/ /g"`
2341 pth="$pth /lib /usr/lib"
2342 for file in $loclist; do
2343         eval xxx=\$$file
2344         case "$xxx" in
2345         /*|?:[\\/]*)
2346                 if test -f "$xxx"; then
2347                         : ok
2348                 else
2349                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2350                         xxx=`./loc $file $file $pth`
2351                 fi
2352                 ;;
2353         '') xxx=`./loc $file $file $pth`;;
2354         *) xxx=`./loc $xxx $xxx $pth`;;
2355         esac
2356         eval $file=$xxx$_exe
2357         eval _$file=$xxx
2358         case "$xxx" in
2359         /*)
2360                 echo $file is in $xxx.
2361                 ;;
2362         ?:[\\/]*)
2363                 echo $file is in $xxx.
2364                 ;;
2365         *)
2366                 echo "I don't know where '$file' is, and my life depends on it." >&4
2367                 echo "Go find a public domain implementation or fix your PATH setting!" >&4
2368                 exit 1
2369                 ;;
2370         esac
2371 done
2372 echo " "
2373 echo "Don't worry if any of the following aren't found..."
2374 say=offhand
2375 for file in $trylist; do
2376         eval xxx=\$$file
2377         case "$xxx" in
2378         /*|?:[\\/]*)
2379                 if test -f "$xxx"; then
2380                         : ok
2381                 else
2382                         echo "WARNING: no $xxx -- ignoring your setting for $file." >&4
2383                         xxx=`./loc $file $file $pth`
2384                 fi
2385                 ;;
2386         '') xxx=`./loc $file $file $pth`;;
2387         *) xxx=`./loc $xxx $xxx $pth`;;
2388         esac
2389         eval $file=$xxx$_exe
2390         eval _$file=$xxx
2391         case "$xxx" in
2392         /*)
2393                 echo $file is in $xxx.
2394                 ;;
2395         ?:[\\/]*)
2396                 echo $file is in $xxx.
2397                 ;;
2398         *)
2399                 echo "I don't see $file out there, $say."
2400                 say=either
2401                 ;;
2402         esac
2403 done
2404 case "$egrep" in
2405 egrep)
2406         echo "Substituting grep for egrep."
2407         egrep=$grep
2408         _egrep=$grep
2409         ;;
2410 esac
2411 case "$ln" in
2412 ln)
2413         echo "Substituting cp for ln."
2414         ln=$cp
2415         _ln=$cp
2416         ;;
2417 esac
2418 case "$make" in
2419 make)
2420         case "$gmake" in
2421         gmake)
2422         echo "I can't find make or gmake, and my life depends on it." >&4
2423         echo "Go find a public domain implementation or fix your PATH setting!" >&4
2424         exit 1
2425         ;;
2426         esac
2427         ;;
2428 esac
2429 case "$gmake" in
2430 gmake)  ;;
2431 *)      # We can't have osname yet.
2432         if test -f "/system/gnu_library/bin/ar.pm"; then # Stratus VOS
2433                 # Assume that gmake, if found, is definitely GNU make
2434                 # and prefer it over the system make.
2435                 echo "Substituting gmake for make."
2436                 make=$gmake
2437                 _make=$gmake
2438         fi
2439         ;;
2440 esac
2441 case "$test" in
2442 test)
2443         echo "Hopefully test is built into your sh."
2444         ;;
2445 *)
2446         if `sh -c "PATH= test true" >/dev/null 2>&1`; then
2447                 echo "Using the test built into your sh."
2448                 test=test
2449                 _test=test
2450         fi
2451         ;;
2452 esac
2453 case "$echo" in
2454 echo)
2455         echo "Hopefully echo is built into your sh."
2456         ;;
2457 '') ;;
2458 *)
2459         echo " "
2460 echo "Checking compatibility between $echo and builtin echo (if any)..." >&4
2461         $echo $n "hi there$c" >foo1
2462         echo $n "hi there$c" >foo2
2463         if cmp foo1 foo2 >/dev/null 2>&1; then
2464                 echo "They are compatible.  In fact, they may be identical."
2465         else
2466                 case "$n" in
2467                 '-n') n='' c='\c';;
2468                 *) n='-n' c='';;
2469                 esac
2470                 cat <<FOO
2471 They are not compatible!  You are probably running ksh on a non-USG system.
2472 I'll have to use $echo instead of the builtin, since Bourne shell doesn't
2473 have echo built in and we may have to run some Bourne shell scripts.  That
2474 means I'll have to use '$n$c' to suppress newlines now.  Life is ridiculous.
2475
2476 FOO
2477                 $echo $n "The star should be here-->$c"
2478                 $echo "*"
2479         fi
2480         $rm -f foo1 foo2
2481         ;;
2482 esac
2483
2484 # This question was auctioned at YAPC::Europe-2007 in Vienna
2485 # I never promised you could answer it. I only auctioned the question.
2486 cat <<FOO
2487 The following message is sponsored by
2488
2489   Dresden.pm<--The stars should be here.
2490
2491 Dear Perl user, system administrator or package
2492 maintainer, the Perl community sends greetings to
2493 you. Do you (emblematical) greet back [Y/n]? n
2494
2495 FOO
2496
2497 : Check what type of C compiler we use
2498 cat <<EOS >trygcc
2499 $startsh
2500 EOS
2501 cat <<'EOSC' >>trygcc
2502 case "$cc" in
2503 '') ;;
2504 *)  $rm -f try try.*
2505     $cat >try.c <<EOM
2506 int main(int argc, char *argv[]) {
2507   return 0;
2508 }
2509 EOM
2510     if $cc -o try $ccflags $ldflags try.c; then
2511        :
2512     else
2513         echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2514         despair=yes
2515         trygcc=yes
2516         case "$cc" in
2517         *gcc*) trygcc=no ;;
2518         esac
2519         # Skip this test because it gives a false match on output like:
2520         #    ./trygcc: line 23: cc: command not found
2521         # case "`$cc -v -c try.c 2>&1`" in
2522         # *gcc*) trygcc=no ;;
2523         # esac
2524         if $test X"$trygcc" = Xyes; then
2525             if gcc -o try -c try.c; then
2526                 echo " "
2527                 echo "You seem to have a working gcc, though." >&4
2528                 # Switching compilers may undo the work of hints files.
2529                 # The most common problem is -D_REENTRANT for threads.
2530                 # This heuristic catches that case, but gets false positives
2531                 # if -Dusethreads was not actually specified.  Better to
2532                 # bail out here with a useful message than fail 
2533                 # mysteriously later. Should we perhaps just try to
2534                 # re-invoke Configure -Dcc=gcc config_args ?
2535                 if $test -f usethreads.cbu; then
2536                         $cat >&4 <<EOM 
2537
2538 *** However, any setting of the C compiler flags (e.g. for thread support)
2539 *** will be lost.  It may be necessary for you to restart Configure and
2540 *** add -Dcc=gcc to your Configure command line.
2541
2542 EOM
2543                         rp="Would you like to go ahead and try gcc anyway?"
2544                         dflt=n
2545                 else
2546                         rp="Would you like to use it?"
2547                         dflt=y
2548                 fi
2549                 if $test -f myread; then
2550                     . ./myread
2551                 else
2552                     if $test -f UU/myread; then
2553                         . ./UU/myread
2554                     else
2555                         echo "Cannot find myread, sorry.  Aborting." >&2
2556                         exit 1
2557                     fi
2558                 fi  
2559                 case "$ans" in
2560                 [yY]*) cc=gcc; ccname=gcc; ccflags=''; despair=no;
2561                 esac
2562             fi
2563         fi
2564     fi
2565     $rm -f try try.*
2566     ;;
2567 esac
2568 EOSC
2569
2570 cat <<EOS >checkcc
2571 $startsh
2572 EOS
2573 cat <<'EOSC' >>checkcc
2574 case "$cc" in        
2575 '') ;;
2576 *)  $rm -f try try.*              
2577     $cat >try.c <<EOM
2578 int main(int argc, char *argv[]) {
2579   return 0;
2580 }
2581 EOM
2582     if $cc -o try $ccflags $ldflags try.c; then
2583        :
2584     else
2585         if $test X"$despair" = Xyes; then
2586            echo "Uh-oh, the C compiler '$cc' doesn't seem to be working." >&4
2587         fi
2588         $cat >&4 <<EOM         
2589 You need to find a working C compiler.
2590 Either (purchase and) install the C compiler supplied by your OS vendor,
2591 or for a free C compiler try http://gcc.gnu.org/
2592 I cannot continue any further, aborting.
2593 EOM
2594         exit 1
2595     fi
2596     $rm -f try try.*
2597     ;;
2598 esac
2599 EOSC
2600
2601 : determine whether symbolic links are supported
2602 echo " "
2603 $touch blurfl
2604 if $ln -s blurfl sym > /dev/null 2>&1 ; then
2605         echo "Symbolic links are supported." >&4
2606         lns="$ln -s"
2607 else
2608         echo "Symbolic links are NOT supported." >&4
2609         lns="$ln"
2610 fi
2611 $rm -f blurfl sym
2612
2613 : determine whether symbolic links are supported
2614 echo " "
2615 case "$lns" in
2616 *"ln"*" -s")
2617         echo "Checking how to test for symbolic links..." >&4
2618         $lns blurfl sym
2619         if $test "X$issymlink" = X; then
2620                 case "$newsh" in
2621                 '') sh     -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2622                 *)  $newsh -c "PATH= test -h sym" >/dev/null 2>&1 ;;
2623                 esac
2624                 if test $? = 0; then
2625                         issymlink="test -h"
2626                 else
2627                         echo "Your builtin 'test -h' may be broken." >&4
2628                         case "$test" in
2629                         /*)     ;;
2630                         *)      pth=`echo $PATH | sed -e "s/$p_/ /g"`
2631                                 for p in $pth
2632                                 do
2633                                         if test -f "$p/$test"; then
2634                                                 test="$p/$test"
2635                                                 break
2636                                         fi
2637                                 done
2638                                 ;;
2639                         esac
2640                         case "$test" in
2641                         /*)
2642                                 echo "Trying external '$test -h'." >&4
2643                                 issymlink="$test -h"
2644                                 if $test ! -h sym >/dev/null 2>&1; then
2645                                         echo "External '$test -h' is broken, too." >&4
2646                                         issymlink=''
2647                                 fi
2648                                 ;;
2649                         *)      issymlink='' ;;
2650                         esac
2651                 fi              
2652         fi
2653         if $test "X$issymlink" = X; then
2654                 if $test -L sym 2>/dev/null; then
2655                         issymlink="$test -L"
2656                         echo "The builtin '$test -L' worked." >&4
2657                 fi
2658         fi
2659         if $test "X$issymlink" != X; then
2660                 echo "You can test for symbolic links with '$issymlink'." >&4
2661         else
2662                 echo "I do not know how you can test for symbolic links." >&4
2663         fi
2664         $rm -f blurfl sym
2665         ;;
2666 *)      echo "No symbolic links, so not testing for their testing..." >&4
2667         ;;
2668 esac
2669 echo " "
2670
2671
2672 case "$mksymlinks" in
2673 $define|true|[yY]*)
2674         case "$src" in
2675         ''|'.') echo "Cannot create symlinks in the original directory." >&4
2676                 exit 1
2677                 ;;
2678         *)      case "$lns:$issymlink" in
2679                 *"ln"*" -s:"*"test -"?)
2680                         echo "Creating the symbolic links..." >&4
2681                         echo "(First creating the subdirectories...)" >&4
2682                         cd ..
2683                         awk '{print $1}' $src/MANIFEST | grep / | sed 's:/[^/]*$::' | sort -u | while true; do
2684                                 read directory
2685                                 test -z "$directory" && break
2686                                 mkdir -p $directory
2687                         done
2688                         # Sanity check 1.
2689                         if test ! -d t/base; then
2690                                 echo "Failed to create the subdirectories.  Aborting." >&4
2691                                 exit 1
2692                         fi
2693                         echo "(Then creating the symlinks...)" >&4
2694                         awk '{print $1}' $src/MANIFEST | while true; do
2695                                 read filename
2696                                 test -z "$filename" && break
2697                                 if test -f $filename; then
2698                                         if $issymlink $filename; then
2699                                                 rm -f $filename
2700                                         fi
2701                                 fi
2702                                 if test -f $filename; then
2703                                         echo "$filename already exists, not symlinking."
2704                                 else
2705                                         ln -s $src/$filename $filename
2706                                 fi
2707                         done
2708                         # Sanity check 2.
2709                         if test ! -f t/base/lex.t; then
2710                                 echo "Failed to create the symlinks (t/base/lex.t missing).  Aborting." >&4
2711                                 exit 1
2712                         fi
2713                         cd UU
2714                         ;;
2715                 *)      echo "(I cannot figure out how to do symbolic links, ignoring mksymlinks)." >&4
2716                         ;;
2717                 esac
2718                 ;;
2719         esac
2720         ;;
2721 esac
2722
2723 : Check for Cross-Compilation
2724 case "$usecrosscompile" in
2725 $define|true|[yY]*)
2726         $echo "Cross-compiling..."
2727         croak=''
2728         case "$cc" in
2729         *-*-gcc) # A cross-compiling gcc, probably.
2730             targetarch=`$echo $cc|$sed 's/-gcc$//'`
2731             ar=$targetarch-ar
2732             # leave out ld, choosing it is more complex
2733             nm=$targetarch-nm
2734             ranlib=$targetarch-ranlib
2735             $echo 'extern int foo;' > try.c
2736             set X `$cc -v -E try.c 2>&1 | $awk '/^#include </,/^End of search /'|$grep '/include'`
2737             shift
2738             if $test $# -gt 0; then
2739                 incpth="$incpth $*"
2740                 incpth="`$echo $incpth|$sed 's/^ //'`"
2741                 echo "Guessing incpth '$incpth'." >&4
2742                 for i in $*; do
2743                     j="`$echo $i|$sed 's,/include$,/lib,'`"
2744                     if $test -d $j; then
2745                         libpth="$libpth $j"
2746                     fi
2747                 done   
2748                 libpth="`$echo $libpth|$sed 's/^ //'`"
2749                 echo "Guessing libpth '$libpth'." >&4
2750             fi
2751             $rm -f try.c
2752             ;;
2753         esac
2754         case "$targetarch" in
2755         '') echo "Targetarch not defined." >&4; croak=y ;;
2756         *)  echo "Using targetarch $targetarch." >&4 ;;
2757         esac
2758         case "$incpth" in
2759         '') echo "Incpth not defined." >&4; croak=y ;;
2760         *)  echo "Using incpth '$incpth'." >&4 ;;
2761         esac
2762         case "$libpth" in
2763         '') echo "Libpth not defined." >&4; croak=y ;;
2764         *)  echo "Using libpth '$libpth'." >&4 ;;
2765         esac
2766         case "$usrinc" in
2767         '') for i in $incpth; do
2768                 if $test -f $i/errno.h -a -f $i/stdio.h -a -f $i/time.h; then
2769                     usrinc=$i
2770                     echo "Guessing usrinc $usrinc." >&4
2771                     break
2772                 fi
2773             done
2774             case "$usrinc" in
2775             '') echo "Usrinc not defined." >&4; croak=y ;;
2776             esac
2777             ;;
2778         *)  echo "Using usrinc $usrinc." >&4 ;;
2779         esac
2780         case "$targethost" in
2781         '') echo "Targethost not defined." >&4; croak=y ;;
2782         *)  echo "Using targethost $targethost." >&4
2783         esac
2784         locincpth=' '
2785         loclibpth=' '
2786         case "$croak" in
2787         y) echo "Cannot continue, aborting." >&4; exit 1 ;;
2788         esac
2789         case "$src" in
2790         /*) run=$src/Cross/run
2791             targetmkdir=$src/Cross/mkdir
2792             to=$src/Cross/to
2793             from=$src/Cross/from
2794             ;;
2795         *)  pwd=`$test -f ../Configure & cd ..; pwd`
2796             run=$pwd/Cross/run
2797             targetmkdir=$pwd/Cross/mkdir
2798             to=$pwd/Cross/to
2799             from=$pwd/Cross/from
2800             ;;
2801         esac
2802         case "$targetrun" in
2803         '') targetrun=ssh ;;
2804         esac
2805         case "$targetto" in
2806         '') targetto=scp ;;
2807         esac
2808         case "$targetfrom" in
2809         '') targetfrom=scp ;;
2810         esac
2811         run=$run-$targetrun
2812         to=$to-$targetto
2813         from=$from-$targetfrom
2814         case "$targetdir" in
2815         '')  targetdir=/tmp
2816              echo "Guessing targetdir $targetdir." >&4
2817              ;;
2818         esac
2819         case "$targetuser" in
2820         '')  targetuser=root
2821              echo "Guessing targetuser $targetuser." >&4
2822              ;;
2823         esac
2824         case "$targetfrom" in
2825         scp)    q=-q ;;
2826         *)      q='' ;;
2827         esac
2828         case "$targetrun" in
2829         ssh|rsh)
2830             cat >$run <<EOF
2831 #!/bin/sh
2832 case "\$1" in
2833 -cwd)
2834   shift
2835   cwd=\$1
2836   shift
2837   ;;
2838 esac
2839 case "\$cwd" in
2840 '') cwd=$targetdir ;;
2841 esac
2842 exe=\$1
2843 shift
2844 if $test ! -f \$exe.xok; then
2845   $to \$exe
2846   $touch \$exe.xok
2847 fi
2848 $targetrun -l $targetuser $targethost "cd \$cwd && ./\$exe \$@"
2849 EOF
2850             ;;
2851         *)  echo "Unknown targetrun '$targetrun'" >&4
2852             exit 1
2853             ;;
2854         esac
2855         case "$targetmkdir" in
2856         */Cross/mkdir)
2857             cat >$targetmkdir <<EOF
2858 #!/bin/sh
2859 $targetrun -l $targetuser $targethost "mkdir -p \$@"
2860 EOF
2861             $chmod a+rx $targetmkdir
2862             ;;
2863         *)  echo "Unknown targetmkdir '$targetmkdir'" >&4
2864             exit 1
2865             ;;
2866         esac
2867         case "$targetto" in
2868         scp|rcp)
2869             cat >$to <<EOF
2870 #!/bin/sh
2871 for f in \$@
2872 do
2873   case "\$f" in
2874   /*)
2875     $targetmkdir \`dirname \$f\`
2876     $targetto $q \$f $targetuser@$targethost:\$f            || exit 1
2877     ;;
2878   *)
2879     $targetmkdir $targetdir/\`dirname \$f\`
2880     $targetto $q \$f $targetuser@$targethost:$targetdir/\$f || exit 1
2881     ;;
2882   esac
2883 done
2884 exit 0
2885 EOF
2886             ;;
2887         cp) cat >$to <<EOF
2888 #!/bin/sh
2889 for f in \$@
2890 do
2891   case "\$f" in
2892   /*)
2893     $mkdir -p $targetdir/\`dirname \$f\`
2894     $cp \$f $targetdir/\$f || exit 1
2895     ;;
2896   *)
2897     $targetmkdir $targetdir/\`dirname \$f\`
2898     $cp \$f $targetdir/\$f || exit 1
2899     ;;
2900   esac
2901 done
2902 exit 0
2903 EOF
2904             ;;
2905         *)  echo "Unknown targetto '$targetto'" >&4
2906             exit 1
2907             ;;
2908         esac
2909         case "$targetfrom" in
2910         scp|rcp)
2911           cat >$from <<EOF
2912 #!/bin/sh
2913 for f in \$@
2914 do
2915   $rm -f \$f
2916   $targetfrom $q $targetuser@$targethost:$targetdir/\$f . || exit 1
2917 done
2918 exit 0
2919 EOF
2920             ;;
2921         cp) cat >$from <<EOF
2922 #!/bin/sh
2923 for f in \$@
2924 do
2925   $rm -f \$f
2926   cp $targetdir/\$f . || exit 1
2927 done
2928 exit 0
2929 EOF
2930             ;;
2931         *)  echo "Unknown targetfrom '$targetfrom'" >&4
2932             exit 1
2933             ;;
2934         esac
2935         if $test ! -f $run; then
2936             echo "Target 'run' script '$run' not found." >&4
2937         else
2938             $chmod a+rx $run
2939         fi
2940         if $test ! -f $to; then
2941             echo "Target 'to' script '$to' not found." >&4
2942         else
2943             $chmod a+rx $to
2944         fi
2945         if $test ! -f $from; then
2946             echo "Target 'from' script '$from' not found." >&4
2947         else
2948             $chmod a+rx $from
2949         fi
2950         if $test ! -f $run -o ! -f $to -o ! -f $from; then
2951             exit 1
2952         fi
2953         cat >&4 <<EOF
2954 Using '$run' for remote execution,
2955 and '$from' and '$to'
2956 for remote file transfer.
2957 EOF
2958         ;;
2959 *)      run=''
2960         to=:
2961         from=:
2962         usecrosscompile='undef'
2963         targetarch=''
2964         ;;
2965 esac
2966
2967 : see whether [:lower:] and [:upper:] are supported character classes
2968 echo " "
2969 case "`echo AbyZ | $tr '[:lower:]' '[:upper:]' 2>/dev/null`" in
2970 ABYZ)
2971         echo "Good, your tr supports [:lower:] and [:upper:] to convert case." >&4
2972         up='[:upper:]'
2973         low='[:lower:]'
2974         ;;
2975 *)      # There is a discontinuity in EBCDIC between 'R' and 'S'
2976         # (0xd9 and 0xe2), therefore that is a nice testing point.
2977         if test "X$up" = X -o "X$low" = X; then
2978             case "`echo RS | $tr '[R-S]' '[r-s]' 2>/dev/null`" in
2979             rs) up='[A-Z]'
2980                 low='[a-z]'
2981                 ;;
2982             esac
2983         fi
2984         if test "X$up" = X -o "X$low" = X; then
2985             case "`echo RS | $tr R-S r-s 2>/dev/null`" in
2986             rs) up='A-Z'
2987                 low='a-z'
2988                 ;;
2989             esac
2990         fi
2991         if test "X$up" = X -o "X$low" = X; then
2992             case "`echo RS | od -x 2>/dev/null`" in
2993             *D9E2*|*d9e2*)
2994                 echo "Hey, this might be EBCDIC." >&4
2995                 if test "X$up" = X -o "X$low" = X; then
2996                     case "`echo RS | $tr '[A-IJ-RS-Z]' '[a-ij-rs-z]' 2>/dev/null`" in
2997                     rs) up='[A-IJ-RS-Z]'
2998                         low='[a-ij-rs-z]'
2999                         ;;
3000                     esac
3001                 fi
3002                 if test "X$up" = X -o "X$low" = X; then
3003                     case "`echo RS | $tr A-IJ-RS-Z a-ij-rs-z 2>/dev/null`" in
3004                     rs) up='A-IJ-RS-Z'
3005                         low='a-ij-rs-z'
3006                         ;;
3007                     esac
3008                 fi
3009                 ;;
3010             esac
3011         fi
3012 esac
3013 case "`echo RS | $tr \"$up\" \"$low\" 2>/dev/null`" in
3014 rs)
3015     echo "Using $up and $low to convert case." >&4
3016     ;;
3017 *)
3018     echo "I don't know how to translate letters from upper to lower case." >&4
3019     echo "Your tr is not acting any way I know of." >&4
3020     exit 1
3021     ;;
3022 esac
3023 : set up the translation script tr, must be called with ./tr of course
3024 cat >tr <<EOSC
3025 $startsh
3026 case "\$1\$2" in
3027 '[A-Z][a-z]') exec $tr '$up' '$low';;
3028 '[a-z][A-Z]') exec $tr '$low' '$up';;
3029 esac
3030 exec $tr "\$@"
3031 EOSC
3032 chmod +x tr
3033 $eunicefix tr
3034
3035 : Try to determine whether config.sh was made on this system
3036 case "$config_sh" in
3037 '')
3038 myuname=`$uname -a 2>/dev/null`
3039 $test -z "$myuname" && myuname=`hostname 2>/dev/null`
3040 # tr '[A-Z]' '[a-z]' would not work in EBCDIC
3041 # because the A-Z/a-z are not consecutive.
3042 myuname=`echo $myuname | $sed -e 's/^[^=]*=//' -e "s,['/],,g" | \
3043         ./tr '[A-Z]' '[a-z]' | $tr $trnl ' '`
3044 newmyuname="$myuname"
3045 dflt=n
3046 case "$knowitall" in
3047 '')
3048         if test -f ../config.sh; then
3049                 if $contains myuname= ../config.sh >/dev/null 2>&1; then
3050                         eval "`grep myuname= ../config.sh`"
3051                 fi
3052                 if test "X$myuname" = "X$newmyuname"; then
3053                         dflt=y
3054                 fi
3055         fi
3056         ;;
3057 *) dflt=y;;
3058 esac
3059
3060 : Get old answers from old config file if Configure was run on the
3061 : same system, otherwise use the hints.
3062 hint=default
3063 cd ..
3064 if test -f config.sh; then
3065         echo " "
3066         rp="I see a config.sh file.  Shall I use it to set the defaults?"
3067         . UU/myread
3068         case "$ans" in
3069         n*|N*) echo "OK, I'll ignore it."
3070                 mv config.sh config.sh.old
3071                 myuname="$newmyuname"
3072                 ;;
3073         *)  echo "Fetching default answers from your old config.sh file..." >&4
3074                 tmp_n="$n"
3075                 tmp_c="$c"
3076                 tmp_sh="$sh"
3077                 . ./config.sh
3078                 cp config.sh UU
3079                 n="$tmp_n"
3080                 c="$tmp_c"
3081                 : Older versions did not always set $sh.  Catch re-use of such
3082                 : an old config.sh.
3083                 case "$sh" in
3084                 '') sh="$tmp_sh" ;;
3085                 esac
3086                 hint=previous
3087                 ;;
3088         esac
3089 fi
3090 . ./UU/checkcc
3091 if test ! -f config.sh; then
3092         $cat <<EOM
3093
3094 First time through, eh?  I have some defaults handy for some systems
3095 that need some extra help getting the Configure answers right:
3096
3097 EOM
3098         (cd $src/hints; ls -C *.sh) | $sed 's/\.sh/   /g' >&4
3099         dflt=''
3100         : Half the following guesses are probably wrong... If you have better
3101         : tests or hints, please send them to perlbug@perl.org
3102         : The metaconfig authors would also appreciate a copy...
3103         $test -f /irix && osname=irix
3104         $test -f /xenix && osname=sco_xenix
3105         $test -f /dynix && osname=dynix
3106         $test -f /dnix && osname=dnix
3107         $test -f /lynx.os && osname=lynxos
3108         $test -f /unicos && osname=unicos && osvers=`$uname -r`
3109         $test -f /unicosmk && osname=unicosmk && osvers=`$uname -r`
3110         $test -f /unicosmk.ar && osname=unicosmk && osvers=`$uname -r`
3111         $test -f /bin/mips && /bin/mips && osname=mips
3112         $test -d /NextApps && set X `hostinfo | grep 'NeXT Mach.*:' | \
3113                 $sed -e 's/://' -e 's/\./_/'` && osname=next && osvers=$4
3114         $test -d /usr/apollo/bin && osname=apollo
3115         $test -f /etc/saf/_sactab && osname=svr4
3116         $test -d /usr/include/minix && osname=minix
3117         $test -f /system/gnu_library/bin/ar.pm && osname=vos
3118         if $test -d /MachTen -o -d /MachTen_Folder; then
3119                 osname=machten
3120                 if $test -x /sbin/version; then
3121                         osvers=`/sbin/version | $awk '{print $2}' |
3122                         $sed -e 's/[A-Za-z]$//'`
3123                 elif $test -x /usr/etc/version; then
3124                         osvers=`/usr/etc/version | $awk '{print $2}' |
3125                         $sed -e 's/[A-Za-z]$//'`
3126                 else
3127                         osvers="$2.$3"
3128                 fi
3129         fi
3130
3131         $test -f /sys/posix.dll &&
3132                 $test -f /usr/bin/what &&
3133                 set X `/usr/bin/what /sys/posix.dll` &&
3134                 $test "$3" = UWIN &&
3135                 osname=uwin &&
3136                 osvers="$5"
3137
3138         if $test -f $uname; then
3139                 set X $myuname
3140                 shift
3141
3142                 case "$5" in
3143                 fps*) osname=fps ;;
3144                 mips*)
3145                         case "$4" in
3146                         umips) osname=umips ;;
3147                         *) osname=mips ;;
3148                         esac;;
3149                 [23]100) osname=mips ;;
3150                 next*) osname=next ;;
3151                 i386*)
3152                         tmp=`/bin/uname -X 2>/dev/null|awk '/3\.2v[45]/{ print $(NF) }'`
3153                         if $test "$tmp" != "" -a "$3" = "3.2" -a -f '/etc/systemid'; then
3154                                 osname='sco'
3155                                 osvers=$tmp
3156                         elif $test -f /etc/kconfig; then
3157                                 osname=isc
3158                                 if test "$lns" = "$ln -s"; then
3159                                         osvers=4
3160                                 elif $contains _SYSV3 /usr/include/stdio.h > /dev/null 2>&1 ; then
3161                                         osvers=3
3162                                 elif $contains _POSIX_SOURCE /usr/include/stdio.h > /dev/null 2>&1 ; then
3163                                         osvers=2
3164                                 fi
3165                         fi
3166                         tmp=''
3167                         ;;
3168                 pc*)
3169                         if test -n "$DJGPP"; then
3170                                 osname=dos
3171                                 osvers=djgpp
3172                         fi
3173                         ;;
3174                 esac
3175
3176                 case "$1" in
3177                 aix) osname=aix
3178                         tmp=`( (oslevel) 2>/dev/null || echo "not found") 2>&1`
3179                         case "$tmp" in
3180                         # oslevel can fail with:
3181                         # oslevel: Unable to acquire lock.
3182                         *not\ found) osvers="$4"."$3" ;;
3183                         '<3240'|'<>3240') osvers=3.2.0 ;;
3184                         '=3240'|'>3240'|'<3250'|'<>3250') osvers=3.2.4 ;;
3185                         '=3250'|'>3250') osvers=3.2.5 ;;
3186                         *) osvers=$tmp;;
3187                         esac
3188                         ;;
3189                 bsd386) osname=bsd386
3190                         osvers=`$uname -r`
3191                         ;;
3192                 cygwin*) osname=cygwin
3193                         osvers="$3"
3194                         ;;
3195                 *dc.osx) osname=dcosx
3196                         osvers="$3"
3197                         ;;
3198                 dnix) osname=dnix
3199                         osvers="$3"
3200                         ;;
3201                 domainos) osname=apollo
3202                         osvers="$3"
3203                         ;;
3204                 dgux)   osname=dgux
3205                         osvers="$3"
3206                         ;;
3207                 dragonfly) osname=dragonfly
3208                         osvers="$3"
3209                         ;;
3210                 dynixptx*) osname=dynixptx
3211                         osvers=`echo "$4"|sed 's/^v//'`
3212                         ;;
3213                 freebsd) osname=freebsd
3214                         osvers="$3" ;;
3215                 genix)  osname=genix ;;
3216                 gnu)    osname=gnu
3217                         osvers="$3" ;;
3218                 hp*)    osname=hpux
3219                         osvers=`echo "$3" | $sed 's,.*\.\([0-9]*\.[0-9]*\),\1,'`
3220                         ;;
3221                 irix*)  osname=irix
3222                         case "$3" in
3223                         4*) osvers=4 ;;
3224                         5*) osvers=5 ;;
3225                         *)      osvers="$3" ;;
3226                         esac
3227                         ;;
3228                 linux)  osname=linux
3229                         case "$3" in
3230                         *)      osvers="$3" ;;
3231                         esac
3232                         ;;
3233                 MiNT)   osname=mint
3234                         ;;
3235                 netbsd*) osname=netbsd
3236                         osvers="$3"
3237                         ;;
3238                 news-os) osvers="$3"
3239                         case "$3" in
3240                         4*) osname=newsos4 ;;
3241                         *) osname=newsos ;;
3242                         esac
3243                         ;;
3244                 next*) osname=next ;;
3245                 nonstop-ux) osname=nonstopux ;;
3246                 openbsd) osname=openbsd
3247                         osvers="$3"
3248                         ;;
3249                 os2)    osname=os2
3250                         osvers="$4"
3251                         ;;
3252                 POSIX-BC | posix-bc ) osname=posix-bc
3253                         osvers="$3"
3254                         ;;
3255                 powerux | power_ux | powermax_os | powermaxos | \
3256                 powerunix | power_unix) osname=powerux
3257                         osvers="$3"
3258                         ;;
3259                 qnx) osname=qnx
3260                         osvers="$4"
3261                         ;;
3262                 solaris) osname=solaris
3263                         case "$3" in
3264                         5*) osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3265                         *)      osvers="$3" ;;
3266                         esac
3267                         ;;
3268                 sunos) osname=sunos
3269                         case "$3" in
3270                         5*) osname=solaris
3271                                 osvers=`echo $3 | $sed 's/^5/2/g'` ;;
3272                         *)      osvers="$3" ;;
3273                         esac
3274                         ;;
3275                 titanos) osname=titanos
3276                         case "$3" in
3277                         1*) osvers=1 ;;
3278                         2*) osvers=2 ;;
3279                         3*) osvers=3 ;;
3280                         4*) osvers=4 ;;
3281                         *)      osvers="$3" ;;
3282                         esac
3283                         ;;
3284                 ultrix) osname=ultrix
3285                         osvers="$3"
3286                         ;;
3287                 osf1|mls+)      case "$5" in
3288                                 alpha)
3289                                         osname=dec_osf
3290                                         osvers=`sizer -v | awk -FUNIX '{print $2}' | awk '{print $1}' |  tr '[A-Z]' '[a-z]' | sed 's/^[xvt]//'`
3291                                         case "$osvers" in
3292                                         [1-9].[0-9]*) ;;
3293                                         *) osvers=`echo "$3" | sed 's/^[xvt]//'` ;;
3294                                         esac
3295                                         ;;
3296                         hp*)    osname=hp_osf1  ;;
3297                         mips)   osname=mips_osf1 ;;
3298                         esac
3299                         ;;
3300                 # UnixWare 7.1.2 is known as Open UNIX 8
3301                 openunix|unixware) osname=svr5
3302                         osvers="$4"
3303                         ;;
3304                 uts)    osname=uts
3305                         osvers="$3"
3306                         ;;
3307                 vos) osvers="$3"
3308                         ;;
3309                 $2) case "$osname" in
3310                         *isc*) ;;
3311                         *freebsd*) ;;
3312                         svr*)
3313                                 : svr4.x or possibly later
3314                                 case "svr$3" in
3315                                 ${osname}*)
3316                                         osname=svr$3
3317                                         osvers=$4
3318                                         ;;
3319                                 esac
3320                                 case "$osname" in
3321                                 svr4.0)
3322                                         : Check for ESIX
3323                                         if test -f /stand/boot ; then
3324                                                 eval `grep '^INITPROG=[a-z/0-9]*$' /stand/boot`
3325                                                 if test -n "$INITPROG" -a -f "$INITPROG"; then
3326                         isesix=`strings -a $INITPROG|grep 'ESIX SYSTEM V/386 Release 4.0'`
3327                                                         if test -n "$isesix"; then
3328                                                                 osname=esix4
3329                                                         fi
3330                                                 fi
3331                                         fi
3332                                         ;;
3333                                 esac
3334                                 ;;
3335                         *)      if test -f /etc/systemid; then
3336                                         osname=sco
3337                                         set `echo $3 | $sed 's/\./ /g'` $4
3338                                         if $test -f $src/hints/sco_$1_$2_$3.sh; then
3339                                                 osvers=$1.$2.$3
3340                                         elif $test -f $src/hints/sco_$1_$2.sh; then
3341                                                 osvers=$1.$2
3342                                         elif $test -f $src/hints/sco_$1.sh; then
3343                                                 osvers=$1
3344                                         fi
3345                                 else
3346                                         case "$osname" in
3347                                         '') : Still unknown.  Probably a generic Sys V.
3348                                                 osname="sysv"
3349                                                 osvers="$3"
3350                                                 ;;
3351                                         esac
3352                                 fi
3353                                 ;;
3354                         esac
3355                         ;;
3356                 *)      case "$osname" in
3357                         '') : Still unknown.  Probably a generic BSD.
3358                                 osname="$1"
3359                                 osvers="$3"
3360                                 ;;
3361                         esac
3362                         ;;
3363                 esac
3364         else
3365                 if test -f /vmunix -a -f $src/hints/news_os.sh; then
3366                         (what /vmunix | UU/tr '[A-Z]' '[a-z]') > UU/kernel.what 2>&1
3367                         if $contains news-os UU/kernel.what >/dev/null 2>&1; then
3368                                 osname=news_os
3369                         fi
3370                         $rm -f UU/kernel.what
3371                 elif test -d c:/. -o -n "$is_os2" ; then
3372                         set X $myuname
3373                         osname=os2
3374                         osvers="$5"
3375                 fi
3376         fi
3377
3378         case "$targetarch" in
3379         '') ;;
3380         *)  hostarch=$osname
3381             osname=`echo $targetarch|sed 's,^[^-]*-,,'`
3382             osvers=''
3383             ;;
3384         esac
3385
3386         : Now look for a hint file osname_osvers, unless one has been
3387         : specified already.
3388         case "$hintfile" in
3389         ''|' ')
3390                 file=`echo "${osname}_${osvers}" | $sed -e 's%\.%_%g' -e 's%_$%%'`
3391                 : Also try without trailing minor version numbers.
3392                 xfile=`echo $file | $sed -e 's%_[^_]*$%%'`
3393                 xxfile=`echo $xfile | $sed -e 's%_[^_]*$%%'`
3394                 xxxfile=`echo $xxfile | $sed -e 's%_[^_]*$%%'`
3395                 xxxxfile=`echo $xxxfile | $sed -e 's%_[^_]*$%%'`
3396                 case "$file" in
3397                 '') dflt=none ;;
3398                 *)  case "$osvers" in
3399                         '') dflt=$file
3400                                 ;;
3401                         *)  if $test -f $src/hints/$file.sh ; then
3402                                         dflt=$file
3403                                 elif $test -f $src/hints/$xfile.sh ; then
3404                                         dflt=$xfile
3405                                 elif $test -f $src/hints/$xxfile.sh ; then
3406                                         dflt=$xxfile
3407                                 elif $test -f $src/hints/$xxxfile.sh ; then
3408                                         dflt=$xxxfile
3409                                 elif $test -f $src/hints/$xxxxfile.sh ; then
3410                                         dflt=$xxxxfile
3411                                 elif $test -f "$src/hints/${osname}.sh" ; then
3412                                         dflt="${osname}"
3413                                 else
3414                                         dflt=none
3415                                 fi
3416                                 ;;
3417                         esac
3418                         ;;
3419                 esac
3420                 if $test -f Policy.sh ; then
3421                         case "$dflt" in
3422                         *Policy*) ;;
3423                         none) dflt="Policy" ;;
3424                         *) dflt="Policy $dflt" ;;
3425                         esac
3426                 fi
3427                 ;;
3428         *)
3429                 dflt=`echo $hintfile | $sed 's/\.sh$//'`
3430                 ;;
3431         esac
3432
3433         if $test -f Policy.sh ; then
3434                 $cat <<EOM
3435
3436 There's also a Policy hint file available, which should make the
3437 site-specific (policy) questions easier to answer.
3438 EOM
3439
3440         fi
3441
3442         $cat <<EOM
3443
3444 You may give one or more space-separated answers, or "none" if appropriate.
3445 If you have a handcrafted Policy.sh file or a Policy.sh file generated by a
3446 previous run of Configure, you may specify it as well as or instead of
3447 OS-specific hints.  If hints are provided for your OS, you should use them:
3448 although Perl can probably be built without hints on many platforms, using
3449 hints often improve performance and may enable features that Configure can't
3450 set up on its own. If there are no hints that match your OS, specify "none";
3451 DO NOT give a wrong version or a wrong OS.
3452
3453 EOM
3454
3455         rp="Which of these apply, if any?"
3456         . UU/myread
3457         tans=$ans
3458         for file in $tans; do
3459                 if $test X$file = XPolicy -a -f Policy.sh; then
3460                         . Policy.sh
3461                         $cat Policy.sh >> UU/config.sh
3462                 elif $test -f $src/hints/$file.sh; then
3463                         . $src/hints/$file.sh
3464                         $cat $src/hints/$file.sh >> UU/config.sh
3465                 elif $test X"$tans" = X -o X"$tans" = Xnone ; then
3466                         : nothing
3467                 else
3468                         : Give one chance to correct a possible typo.
3469                         echo "$file.sh does not exist"
3470                         dflt=$file
3471                         rp="hint to use instead?"
3472                         . UU/myread
3473                         for file in $ans; do
3474                                 if $test -f "$src/hints/$file.sh"; then
3475                                         . $src/hints/$file.sh
3476                                         $cat $src/hints/$file.sh >> UU/config.sh
3477                                 elif $test X$ans = X -o X$ans = Xnone ; then
3478                                         : nothing
3479                                 else
3480                                         echo "$file.sh does not exist -- ignored."
3481                                 fi
3482                         done
3483                 fi
3484         done
3485
3486         hint=recommended
3487         : Remember our hint file for later.
3488         if $test -f "$src/hints/$file.sh" ; then
3489                 hintfile="$file"
3490         else
3491                 hintfile=''
3492         fi
3493 fi
3494 cd UU
3495 ;;
3496 *)
3497         echo " "
3498         echo "Fetching default answers from $config_sh..." >&4
3499         tmp_n="$n"
3500         tmp_c="$c"
3501         cd ..
3502         cp $config_sh config.sh 2>/dev/null
3503         chmod +w config.sh
3504         . ./config.sh
3505         cd UU
3506         cp ../config.sh .
3507         n="$tmp_n"
3508         c="$tmp_c"
3509         hint=previous
3510         ;;
3511 esac
3512 test "$override" && . ./optdef.sh
3513
3514 : Restore computed paths
3515 for file in $loclist $trylist; do
3516         eval $file="\$_$file"
3517 done
3518
3519 cat << EOM
3520
3521 Configure uses the operating system name and version to set some defaults.
3522 The default value is probably right if the name rings a bell. Otherwise,
3523 since spelling matters for me, either accept the default or answer "none"
3524 to leave it blank.
3525
3526 EOM
3527 case "$osname" in
3528         ''|' ')
3529                 case "$hintfile" in
3530                 ''|' '|none) dflt=none ;;
3531                 *)  dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/_.*$//'` ;;
3532                 esac
3533                 ;;
3534         *) dflt="$osname" ;;
3535 esac
3536 rp="Operating system name?"
3537 . ./myread
3538 case "$ans" in
3539 none)  osname='' ;;
3540 *) osname=`echo "$ans" | $sed -e 's/[   ][      ]*/_/g' | ./tr '[A-Z]' '[a-z]'`;;
3541 esac
3542 echo " "
3543 case "$osvers" in
3544         ''|' ')
3545                 case "$hintfile" in
3546                 ''|' '|none) dflt=none ;;
3547                 *)      dflt=`echo $hintfile | $sed -e 's/\.sh$//' -e 's/^[^_]*//'`
3548                         dflt=`echo $dflt | $sed -e 's/^_//' -e 's/_/./g'`
3549                         case "$dflt" in
3550                         ''|' ') dflt=none ;;
3551                         esac
3552                         ;;
3553                 esac
3554                 ;;
3555         *) dflt="$osvers" ;;
3556 esac
3557 rp="Operating system version?"
3558 . ./myread
3559 case "$ans" in
3560 none)  osvers='' ;;
3561 *) osvers="$ans" ;;
3562 esac
3563
3564
3565 . ./posthint.sh
3566
3567 : who configured the system
3568 cf_time=`LC_ALL=C; LANGUAGE=C; export LC_ALL; export LANGUAGE; $date 2>&1`
3569 case "$cf_by" in
3570 "")
3571         cf_by=`(logname) 2>/dev/null`
3572         case "$cf_by" in
3573         "")
3574                 cf_by=`(whoami) 2>/dev/null`
3575                 case "$cf_by" in
3576                 "") cf_by=unknown ;;
3577                 esac ;;
3578         esac ;;
3579 esac
3580
3581 : decide how portable to be.  Allow command line overrides.
3582 case "$d_portable" in
3583 "$undef") ;;
3584 *)      d_portable="$define" ;;
3585 esac
3586
3587 : set up shell script to do ~ expansion
3588 cat >filexp <<EOSS
3589 $startsh
3590 : expand filename
3591 case "\$1" in
3592  ~/*|~)
3593         echo \$1 | $sed "s|~|\${HOME-\$LOGDIR}|"
3594         ;;
3595  ~*)
3596         if $test -f /bin/csh; then
3597                 /bin/csh -f -c "glob \$1"
3598                 failed=\$?
3599                 echo ""
3600                 exit \$failed
3601         else
3602                 name=\`$expr x\$1 : '..\([^/]*\)'\`
3603                 dir=\`$sed -n -e "/^\${name}:/{s/^[^:]*:[^:]*:[^:]*:[^:]*:[^:]*:\([^:]*\).*"'\$'"/\1/" -e p -e q -e '}' </etc/passwd\`
3604                 if $test ! -d "\$dir"; then
3605                         me=\`basename \$0\`
3606                         echo "\$me: can't locate home directory for: \$name" >&2
3607                         exit 1
3608                 fi
3609                 case "\$1" in
3610                 */*)
3611                         echo \$dir/\`$expr x\$1 : '..[^/]*/\(.*\)'\`
3612                         ;;
3613                 *)
3614                         echo \$dir
3615                         ;;
3616                 esac
3617         fi
3618         ;;
3619 *)
3620         echo \$1
3621         ;;
3622 esac
3623 EOSS
3624 chmod +x filexp
3625 $eunicefix filexp
3626
3627 : now set up to get a file name
3628 cat <<EOS >getfile
3629 $startsh
3630 EOS
3631 cat <<'EOSC' >>getfile
3632 tilde=''
3633 fullpath=''
3634 already=''
3635 skip=''
3636 none_ok=''
3637 exp_file=''
3638 nopath_ok=''
3639 orig_rp="$rp"
3640 orig_dflt="$dflt"
3641 case "$gfpth" in
3642 '') gfpth='.' ;;
3643 esac
3644
3645 case "$fn" in
3646 *\(*)
3647         : getfile will accept an answer from the comma-separated list
3648         : enclosed in parentheses even if it does not meet other criteria.
3649         expr "$fn" : '.*(\(.*\)).*' | $tr ',' $trnl >getfile.ok
3650         fn=`echo $fn | sed 's/(.*)//'`
3651         ;;
3652 esac
3653
3654 case "$fn" in
3655 *:*)
3656         loc_file=`expr $fn : '.*:\(.*\)'`
3657         fn=`expr $fn : '\(.*\):.*'`
3658         ;;
3659 esac
3660
3661 case "$fn" in
3662 *~*) tilde=true;;
3663 esac
3664 case "$fn" in
3665 */*) fullpath=true;;
3666 esac
3667 case "$fn" in
3668 *+*) skip=true;;
3669 esac
3670 case "$fn" in
3671 *n*) none_ok=true;;
3672 esac
3673 case "$fn" in
3674 *e*) exp_file=true;;
3675 esac
3676 case "$fn" in
3677 *p*) nopath_ok=true;;
3678 esac
3679
3680 case "$fn" in
3681 *f*) type='File';;
3682 *d*) type='Directory';;
3683 *l*) type='Locate';;
3684 esac
3685
3686 what="$type"
3687 case "$what" in
3688 Locate) what='File';;
3689 esac
3690
3691 case "$exp_file" in
3692 '')
3693         case "$d_portable" in
3694         "$define") ;;
3695         *) exp_file=true;;
3696         esac
3697         ;;
3698 esac
3699
3700 cd ..
3701 while test "$type"; do
3702         redo=''
3703         rp="$orig_rp"
3704         dflt="$orig_dflt"
3705         case "$tilde" in
3706         true) rp="$rp (~name ok)";;
3707         esac
3708         . UU/myread
3709         if test -f UU/getfile.ok && \
3710                 $contains "^$ans\$" UU/getfile.ok >/dev/null 2>&1
3711         then
3712                 value="$ans"
3713                 ansexp="$ans"
3714                 break
3715         fi
3716         case "$ans" in
3717         none)
3718                 value=''
3719                 ansexp=''
3720                 case "$none_ok" in
3721                 true) type='';;
3722                 esac
3723                 ;;
3724         *)
3725                 case "$tilde" in
3726                 '') value="$ans"
3727                         ansexp="$ans";;
3728                 *)
3729                         value=`UU/filexp $ans`
3730                         case $? in
3731                         0)
3732                                 if test "$ans" != "$value"; then
3733                                         echo "(That expands to $value on this system.)"
3734                                 fi
3735                                 ;;
3736                         *) value="$ans";;
3737                         esac
3738                         ansexp="$value"
3739                         case "$exp_file" in
3740                         '') value="$ans";;
3741                         esac
3742                         ;;
3743                 esac
3744                 case "$fullpath" in
3745                 true)
3746                         case "$ansexp" in
3747                         /*) value="$ansexp" ;;
3748                         [a-zA-Z]:/*) value="$ansexp" ;;
3749                         *)
3750                                 redo=true
3751                                 case "$already" in
3752                                 true)
3753                                 echo "I shall only accept a full path name, as in /bin/ls." >&4
3754                                 echo "Use a ! shell escape if you wish to check pathnames." >&4
3755                                         ;;
3756                                 *)
3757                                 echo "Please give a full path name, starting with slash." >&4
3758                                         case "$tilde" in
3759                                         true)
3760                                 echo "Note that using ~name is ok provided it expands well." >&4
3761                                                 already=true
3762                                                 ;;
3763                                         esac
3764                                 esac
3765                                 ;;
3766                         esac
3767                         ;;
3768                 esac
3769                 case "$redo" in
3770                 '')
3771                         case "$type" in
3772                         File)
3773                                 for fp in $gfpth; do
3774                                         if test "X$fp" = X.; then
3775                                             pf="$ansexp"
3776                                         else    
3777                                             pf="$fp/$ansexp"
3778                                         fi
3779                                         if test -f "$pf"; then
3780                                                 type=''
3781                                         elif test -r "$pf" || (test -h "$pf") >/dev/null 2>&1
3782                                         then
3783                                                 echo "($value is not a plain file, but that's ok.)"
3784                                                 type=''
3785                                         fi
3786                                         if test X"$type" = X; then
3787                                             value="$pf"
3788                                             break
3789                                         fi
3790                                 done
3791                                 ;;
3792                         Directory)
3793                                 for fp in $gfpth; do
3794                                         if test "X$fp" = X.; then
3795                                             dir="$ans"
3796                                             direxp="$ansexp"
3797                                         else    
3798                                             dir="$fp/$ansexp"
3799                                             direxp="$fp/$ansexp"
3800                                         fi
3801                                         if test -d "$direxp"; then
3802                                                 type=''
3803                                                 value="$dir"
3804                                                 break
3805                                         fi
3806                                 done
3807                                 ;;
3808                         Locate)
3809                                 if test -d "$ansexp"; then
3810                                         echo "(Looking for $loc_file in directory $value.)"
3811                                         value="$value/$loc_file"
3812                                         ansexp="$ansexp/$loc_file"
3813                                 fi
3814                                 if test -f "$ansexp"; then
3815                                         type=''
3816                                 fi
3817                                 case "$nopath_ok" in
3818                                 true)   case "$value" in
3819                                         */*) ;;
3820                                         *)      echo "Assuming $value will be in people's path."
3821                                                 type=''
3822                                                 ;;
3823                                         esac
3824                                         ;;
3825                                 esac
3826                                 ;;
3827                         esac
3828
3829                         case "$skip" in
3830                         true) type='';
3831                         esac
3832
3833                         case "$type" in
3834                         '') ;;
3835                         *)
3836                                 if test "$fastread" = yes; then
3837                                         dflt=y
3838                                 else
3839                                         dflt=n
3840                                 fi
3841                                 rp="$what $value doesn't exist.  Use that name anyway?"
3842                                 . UU/myread
3843                                 dflt=''
3844                                 case "$ans" in
3845                                 y*) type='';;
3846                                 *) echo " ";;
3847                                 esac
3848                                 ;;
3849                         esac
3850                         ;;
3851                 esac
3852                 ;;
3853         esac
3854 done
3855 cd UU
3856 ans="$value"
3857 rp="$orig_rp"
3858 dflt="$orig_dflt"
3859 rm -f getfile.ok
3860 test "X$gfpthkeep" != Xy && gfpth=""
3861 EOSC
3862
3863 : determine root of directory hierarchy where package will be installed.
3864 case "$prefix" in
3865 '')
3866         dflt=`./loc . /usr/local /usr/local /local /opt /usr`
3867         ;;
3868 *?/)
3869         dflt=`echo "$prefix" | sed 's/.$//'`
3870         ;;
3871 *)
3872         dflt="$prefix"
3873         ;;
3874 esac
3875 $cat <<EOM
3876
3877 By default, $package will be installed in $dflt/bin, manual pages
3878 under $dflt/man, etc..., i.e. with $dflt as prefix for all
3879 installation directories. Typically this is something like /usr/local.
3880 If you wish to have binaries under /usr/bin but other parts of the
3881 installation under /usr/local, that's ok: you will be prompted
3882 separately for each of the installation directories, the prefix being
3883 only used to set the defaults.
3884
3885 EOM
3886 fn=d~
3887 rp='Installation prefix to use?'
3888 . ./getfile
3889 oldprefix=''
3890 case "$prefix" in
3891 '') ;;
3892 *)
3893         case "$ans" in
3894         "$prefix") ;;
3895         *) oldprefix="$prefix";;
3896         esac
3897         ;;
3898 esac
3899 prefix="$ans"
3900 prefixexp="$ansexp"
3901
3902 case "$afsroot" in
3903 '')     afsroot=/afs ;;
3904 *)      afsroot=$afsroot ;;
3905 esac
3906
3907 : is AFS running?
3908 echo " "
3909 case "$afs" in
3910 $define|true)   afs=true ;;
3911 $undef|false)   afs=false ;;
3912 *)      if test -d $afsroot; then
3913                 afs=true
3914         else
3915                 afs=false
3916         fi
3917         ;;
3918 esac
3919 if $afs; then
3920         echo "AFS may be running... I'll be extra cautious then..." >&4
3921 else
3922         echo "AFS does not seem to be running..." >&4
3923 fi
3924
3925 : determine installation prefix for where package is to be installed.
3926 if $afs; then 
3927 $cat <<EOM
3928
3929 Since you are running AFS, I need to distinguish the directory in which
3930 files will reside from the directory in which they are installed (and from
3931 which they are presumably copied to the former directory by occult means).
3932
3933 EOM
3934         case "$installprefix" in
3935         '') dflt=`echo $prefix | sed 's#^/afs/#/afs/.#'`;;
3936         *) dflt="$installprefix";;
3937         esac
3938 else
3939 $cat <<EOM
3940
3941 In some special cases, particularly when building $package for distribution,
3942 it is convenient to distinguish the directory in which files should be
3943 installed from the directory ($prefix) in which they will
3944 eventually reside.  For most users, these two directories are the same.
3945
3946 EOM
3947         case "$installprefix" in
3948         '') dflt=$prefix ;;
3949         *) dflt=$installprefix;;
3950         esac
3951 fi
3952 fn=d~
3953 rp='What installation prefix should I use for installing files?'
3954 . ./getfile
3955 installprefix="$ans"
3956 installprefixexp="$ansexp"
3957
3958 : Perform the prefixexp/installprefixexp correction if necessary
3959 cat <<EOS >installprefix
3960 $startsh
3961 EOS
3962 cat <<'EOSC' >>installprefix
3963 : Change installation prefix, if necessary.
3964 if $test X"$prefix" != X"$installprefix"; then
3965     eval "install${prefixvar}=\`echo \$${prefixvar}exp | sed \"s#^\$prefixexp#\$installprefixexp#\"\`"
3966 else
3967     eval "install${prefixvar}=\"\$${prefixvar}exp\""
3968 fi
3969 EOSC
3970 chmod +x installprefix
3971 $eunicefix installprefix
3972
3973 : Set variables such as privlib and privlibexp from the output of ./getfile
3974 : performing the prefixexp/installprefixexp correction if necessary.
3975 cat <<EOS >setprefixvar
3976 $startsh
3977 EOS
3978 cat <<'EOSC' >>setprefixvar
3979 eval "${prefixvar}=\"\$ans\""
3980 eval "${prefixvar}exp=\"\$ansexp\""
3981 . ./installprefix
3982 EOSC
3983 chmod +x setprefixvar
3984 $eunicefix setprefixvar
3985
3986 : set up the script used to warn in case of inconsistency
3987 cat <<EOS >whoa
3988 $startsh
3989 EOS
3990 cat <<'EOSC' >>whoa
3991 dflt=y
3992 case "$hint" in
3993     recommended)
3994         case "$hintfile" in
3995         '')     echo "The $hint value for \$$var on this machine was \"$was\"!" >&4
3996                 ;;
3997         *)      echo "Hmm.  Based on the hints in hints/$hintfile.sh, " >&4
3998                 echo "the $hint value for \$$var on this machine was \"$was\"!" >&4
3999                 ;;
4000         esac
4001         ;;
4002     *)  echo " "
4003         echo "*** WHOA THERE!!! ***" >&4
4004         echo "    The $hint value for \$$var on this machine was \"$was\"!" >&4
4005         ;;
4006 esac
4007 rp="    Keep the $hint value?"
4008 . ./myread
4009 case "$ans" in
4010 y) td=$was; tu=$was;;
4011 esac
4012 EOSC
4013
4014 : function used to set $1 to $val
4015 setvar='var=$1; eval "was=\$$1"; td=$define; tu=$undef;
4016 case "$val$was" in
4017 $define$undef) . ./whoa; eval "$var=\$td";;
4018 $undef$define) . ./whoa; eval "$var=\$tu";;
4019 *) eval "$var=$val";;
4020 esac'
4021
4022 case "$usesocks" in
4023 $define|true|[yY]*)     dflt='y';;
4024 *) dflt='n';;
4025 esac
4026 cat <<EOM
4027
4028 Perl can be built to use the SOCKS proxy protocol library.  To do so,
4029 Configure must be run with -Dusesocks.  If you use SOCKS you also need
4030 to use the PerlIO abstraction layer, this will be implicitly selected.
4031
4032 If this doesn't make any sense to you, just accept the default '$dflt'.
4033 EOM
4034 rp='Build Perl for SOCKS?'
4035 . ./myread
4036 case "$ans" in
4037 y|Y)    val="$define" ;;
4038 *)      val="$undef" ;;
4039 esac
4040 set usesocks
4041 eval $setvar
4042
4043 case "$usesocks" in
4044 $define|true|[yY]*) useperlio="$define";;
4045 esac
4046
4047 case "$useperlio" in
4048 $define|true|[yY]*|'')  dflt='y';;
4049 *) dflt='n';;
4050 esac
4051 cat <<EOM
4052
4053 Previous version of $package used the standard IO mechanisms as
4054 defined in <stdio.h>.  Versions 5.003_02 and later of $package allow
4055 alternate IO mechanisms via the PerlIO abstraction layer, but the
4056 stdio mechanism is still available if needed.  The abstraction layer
4057 can use AT&T's sfio (if you already have sfio installed) or regular stdio.
4058 Using PerlIO with sfio may cause problems with some extension modules.
4059
4060 If this doesn't make any sense to you, just accept the default '$dflt'.
4061 EOM
4062 rp='Use the PerlIO abstraction layer?'
4063 . ./myread
4064 case "$ans" in
4065 y|Y) 
4066         val="$define"
4067         ;;
4068 *)      
4069         echo "Ok, doing things the stdio way."
4070         val="$undef"
4071         ;;
4072 esac
4073 set useperlio
4074 eval $setvar 
4075
4076 case "$usesocks" in
4077 $define|true|[yY]*)
4078         case "$useperlio" in
4079         $define|true|[yY]*) ;;
4080         *)      cat >&4 <<EOM
4081
4082 You are using the SOCKS proxy protocol library which means that you
4083 should also use the PerlIO layer.  You may be headed for trouble.
4084
4085 EOM
4086                 ;;
4087         esac
4088         ;;
4089 esac
4090
4091         
4092 : get the patchlevel
4093 echo " "
4094 echo "Getting the current patchlevel..." >&4
4095 if $test -r $rsrc/patchlevel.h;then
4096         revision=`awk '/define[         ]+PERL_REVISION/ {print $3}' $rsrc/patchlevel.h`
4097         patchlevel=`awk '/define[       ]+PERL_VERSION/ {print $3}' $rsrc/patchlevel.h`
4098         subversion=`awk '/define[       ]+PERL_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4099         api_revision=`awk '/define[     ]+PERL_API_REVISION/ {print $3}' $rsrc/patchlevel.h`
4100         api_version=`awk '/define[      ]+PERL_API_VERSION/ {print $3}' $rsrc/patchlevel.h`
4101         api_subversion=`awk '/define[   ]+PERL_API_SUBVERSION/ {print $3}' $rsrc/patchlevel.h`
4102         perl_patchlevel=`egrep ',"(MAINT|SMOKE)[0-9][0-9]*"' $rsrc/patchlevel.h|tail -1|sed 's/[^0-9]//g'`
4103 else
4104         revision=0
4105         patchlevel=0
4106         subversion=0
4107         api_revision=0
4108         api_version=0
4109         api_subversion=0
4110         perl_patchlevel=0
4111         $echo "(You do not have patchlevel.h.  Eek.)"
4112 fi
4113 if $test -r $rsrc/.patch ; then
4114         if $test "X$perl_patchlevel" = "X" || $test "`cat $rsrc/.patch`" -gt "$perl_patchlevel" ; then
4115                 perl_patchlevel=`cat $rsrc/.patch`
4116         fi
4117 fi
4118 : Define a handy string here to avoid duplication in myconfig.SH and configpm.
4119 version_patchlevel_string="version $patchlevel subversion $subversion"
4120 case "$perl_patchlevel" in
4121 0|'') ;;
4122 *) version_patchlevel_string="$version_patchlevel_string patch $perl_patchlevel" ;;
4123 esac
4124
4125 $echo "(You have $package $version_patchlevel_string.)"
4126
4127 case "$osname" in
4128 dos|vms)
4129         : XXX Should be a Configure test for double-dots in filenames.
4130         version=`echo $revision $patchlevel $subversion | \
4131                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4132         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4133                  $awk '{ printf "%d_%d_%d\n", $1, $2, $3 }'`
4134         ;;
4135 *)
4136         version=`echo $revision $patchlevel $subversion | \
4137                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4138         api_versionstring=`echo $api_revision $api_version $api_subversion | \
4139                  $awk '{ printf "%d.%d.%d\n", $1, $2, $3 }'`
4140         ;;
4141 esac
4142 : Special case the 5.005_xx maintenance series, which used 5.005
4143 : without any subversion label as a subdirectory in $sitelib
4144 if test "${api_revision}${api_version}${api_subversion}" = "550"; then
4145         api_versionstring='5.005'
4146 fi
4147
4148 : Do we want threads support and if so, what type
4149 case "$usethreads" in
4150 $define|true|[yY]*)     dflt='y';;
4151 *)     # Catch case where user specified ithreads or 5005threads but
4152        # forgot -Dusethreads (A.D. 4/2002)
4153        case "$useithreads$use5005threads" in
4154        *$define*)
4155                 case "$useperlio" in
4156                 "$define")      dflt='y' ;;
4157                 *)              dflt='n' ;;
4158                 esac
4159                 ;;
4160        *)       dflt='n';;
4161        esac
4162        ;;
4163 esac
4164 cat <<EOM
4165
4166 Perl can be built to take advantage of threads on some systems.
4167 To do so, Configure can be run with -Dusethreads.
4168
4169 Note that Perl built with threading support runs slightly slower
4170 and uses more memory than plain Perl. The current implementation
4171 is believed to be stable, but it is fairly new, and so should be
4172 treated with caution.
4173
4174 If this doesn't make any sense to you, just accept the default '$dflt'.
4175 EOM
4176 rp='Build a threading Perl?'
4177 . ./myread
4178 case "$ans" in
4179 y|Y)    val="$define" ;;
4180 *)      val="$undef" ;;
4181 esac
4182 set usethreads
4183 eval $setvar
4184
4185 if $test $patchlevel -lt 9; then
4186     case "$usethreads" in
4187     $define)
4188         $cat <<EOM
4189
4190 Since release 5.6, Perl has had two different threading implementations,
4191 the newer interpreter-based version (ithreads) with one interpreter per
4192 thread, and the older 5.005 version (5005threads).
4193 The 5005threads version is effectively unmaintained and will probably be
4194 removed in Perl 5.10, so there should be no need to build a Perl using it
4195 unless needed for backwards compatibility with some existing 5.005threads
4196 code.
4197
4198 EOM
4199         : Default to ithreads unless overridden on command line or with
4200         : old config.sh
4201         dflt='y'
4202         case "$use5005threads" in
4203                 $define|true|[yY]*) dflt='n';;
4204         esac
4205         case "$useithreads" in
4206                 $undef|false|[nN]*) dflt='n';;
4207         esac
4208         rp='Use the newer interpreter-based ithreads?'
4209         . ./myread
4210         case "$ans" in
4211         y|Y)    val="$define" ;;
4212         *)      val="$undef" ;;
4213         esac
4214         set useithreads
4215         eval $setvar
4216         : Now set use5005threads to the opposite value.
4217         case "$useithreads" in
4218         $define) val="$undef" ;;
4219         *) val="$define" ;;
4220         esac
4221         set use5005threads
4222         eval $setvar
4223         ;;
4224     *)
4225         useithreads="$undef"
4226         use5005threads="$undef"
4227         ;;
4228     esac
4229
4230     case "$useithreads$use5005threads" in
4231     "$define$define")
4232         $cat >&4 <<EOM
4233
4234 You cannot have both the ithreads and the 5.005 threads enabled
4235 at the same time.  Disabling the 5.005 threads since they are
4236 much less stable than the ithreads.
4237
4238 EOM
4239         use5005threads="$undef"
4240         ;;
4241     esac
4242
4243 else
4244 : perl-5.9.x and later
4245
4246     if test X"$usethreads" = "X$define"; then
4247         case "$use5005threads" in
4248             $define|true|[yY]*)
4249                 $cat >&4 <<EOM
4250
4251 5.005 threads has been removed for 5.10.  Perl will be built using ithreads.
4252
4253 EOM
4254             ;;
4255         esac
4256     fi
4257
4258     use5005threads="$undef"
4259     useithreads="$usethreads"
4260 fi
4261
4262 if test X"$usethreads" = "X$define" -a "X$useperlio" = "Xundef"; then
4263         cat >&4 <<EOF
4264 ***
4265 *** To build with ithreads you must also use the PerlIO layer.
4266 *** Cannot continue, aborting.
4267 ***
4268 EOF
4269         exit 1
4270 fi
4271
4272 case "$d_oldpthreads" in
4273 '')     : Configure tests would be welcome here.  For now, assume undef.
4274         val="$undef" ;;
4275 *)      val="$d_oldpthreads" ;;
4276 esac
4277 set d_oldpthreads
4278 eval $setvar
4279
4280
4281 : Look for a hint-file generated 'call-back-unit'.  If the
4282 : user has specified that a threading perl is to be built,
4283 : we may need to set or change some other defaults.
4284 if $test -f usethreads.cbu; then
4285     echo "Your platform has some specific hints regarding threaded builds, using them..."
4286     . ./usethreads.cbu
4287 else
4288     case "$usethreads" in
4289         "$define"|true|[yY]*)
4290                 $cat <<EOM
4291 (Your platform does not have any specific hints for threaded builds.
4292  Assuming POSIX threads, then.)
4293 EOM
4294         ;;
4295     esac
4296 fi
4297
4298 cat <<EOM
4299
4300 Perl can be built so that multiple Perl interpreters can coexist
4301 within the same Perl executable.
4302 EOM
4303
4304 case "$useithreads" in
4305 $define)
4306         cat <<EOM
4307 This multiple interpreter support is required for interpreter-based threads.
4308 EOM
4309         val="$define"
4310         ;;
4311 *)      case "$usemultiplicity" in
4312         $define|true|[yY]*)     dflt='y';;
4313         *) dflt='n';;
4314         esac
4315         echo " "
4316         echo "If this doesn't make any sense to you, just accept the default '$dflt'."
4317         rp='Build Perl for multiplicity?'
4318         . ./myread
4319         case "$ans" in
4320         y|Y)    val="$define" ;;
4321         *)      val="$undef" ;;
4322         esac
4323         ;;
4324 esac
4325 set usemultiplicity
4326 eval $setvar
4327
4328
4329 case "$usemorebits" in
4330 "$define"|true|[yY]*)
4331         use64bitint="$define"
4332         uselongdouble="$define"
4333         usemorebits="$define"
4334         ;;
4335 *)      usemorebits="$undef"
4336         ;;
4337 esac
4338
4339 : make some quick guesses about what we are up against
4340 echo " "
4341 $echo $n "Hmm...  $c"
4342 echo exit 1 >bsd
4343 echo exit 1 >usg
4344 echo exit 1 >v7
4345 echo exit 1 >osf1
4346 echo exit 1 >eunice
4347 echo exit 1 >xenix
4348 echo exit 1 >venix
4349 echo exit 1 >os2
4350 d_bsd="$undef"
4351 $cat /usr/include/signal.h /usr/include/sys/signal.h >foo 2>/dev/null
4352 if test -f /osf_boot || $contains 'OSF/1' /usr/include/ctype.h >/dev/null 2>&1
4353 then
4354         echo "Looks kind of like an OSF/1 system, but we'll see..."
4355         echo exit 0 >osf1
4356 elif test `echo abc | $tr a-z A-Z` = Abc ; then
4357         xxx=`./loc addbib blurfl $pth`
4358         if $test -f $xxx; then
4359         echo "Looks kind of like a USG system with BSD features, but we'll see..."
4360                 echo exit 0 >bsd
4361                 echo exit 0 >usg
4362         else
4363                 if $contains SIGTSTP foo >/dev/null 2>&1 ; then
4364                         echo "Looks kind of like an extended USG system, but we'll see..."
4365                 else
4366                         echo "Looks kind of like a USG system, but we'll see..."
4367                 fi
4368                 echo exit 0 >usg
4369         fi
4370 elif $contains SIGTSTP foo >/dev/null 2>&1 ; then
4371         echo "Looks kind of like a BSD system, but we'll see..."
4372         d_bsd="$define"
4373         echo exit 0 >bsd
4374 else
4375         echo "Looks kind of like a Version 7 system, but we'll see..."
4376         echo exit 0 >v7
4377 fi
4378 case "$eunicefix" in
4379 *unixtovms*)
4380         $cat <<'EOI'
4381 There is, however, a strange, musty smell in the air that reminds me of
4382 something...hmm...yes...I've got it...there's a VMS nearby, or I'm a Blit.
4383 EOI
4384         echo exit 0 >eunice
4385         d_eunice="$define"
4386 : it so happens the Eunice I know will not run shell scripts in Unix format
4387         ;;
4388 *)
4389         echo " "
4390         echo "Congratulations.  You aren't running Eunice."
4391         d_eunice="$undef"
4392         ;;
4393 esac
4394 : Detect OS2.  The p_ variable is set above in the Head.U unit.
4395 : Note that this also -- wrongly -- detects e.g. dos-djgpp, which also uses
4396 : semicolon as a patch separator
4397 case "$p_" in
4398 :) ;;
4399 *)
4400         $cat <<'EOI'
4401 I have the feeling something is not exactly right, however...don't tell me...
4402 lemme think...does HAL ring a bell?...no, of course, you're only running OS/2!
4403 (Or you may be running DOS with DJGPP.)
4404 EOI
4405         echo exit 0 >os2
4406         ;;
4407 esac
4408 if test -f /xenix; then
4409         echo "Actually, this looks more like a XENIX system..."
4410         echo exit 0 >xenix
4411         d_xenix="$define"
4412 else
4413         echo " "
4414         echo "It's not Xenix..."
4415         d_xenix="$undef"
4416 fi
4417 chmod +x xenix
4418 $eunicefix xenix
4419 if test -f /venix; then
4420         echo "Actually, this looks more like a VENIX system..."
4421         echo exit 0 >venix
4422 else
4423         echo " "
4424         if ./xenix; then
4425                 : null
4426         else
4427                 echo "Nor is it Venix..."
4428         fi
4429 fi
4430 chmod +x bsd usg v7 osf1 eunice xenix venix os2
4431 $eunicefix bsd usg v7 osf1 eunice xenix venix os2
4432 $rm -f foo
4433
4434 case "$cc" in
4435 '') dflt=cc;;
4436 *) dflt="$cc";;
4437 esac
4438 rp="Use which C compiler?"
4439 . ./myread
4440 cc="$ans"
4441
4442 : See if they have not cc but they do have gcc
4443 . ./trygcc
4444 : Look for a hint-file generated 'call-back-unit'.  Now that the
4445 : user has specified the compiler, we may need to set or change some
4446 : other defaults.
4447 if $test -f cc.cbu; then
4448     . ./cc.cbu
4449 fi
4450 . ./checkcc
4451
4452 : Check if we are using GNU gcc and what its version is
4453 echo " "
4454 echo "Checking for GNU cc in disguise and/or its version number..." >&4
4455 $cat >try.c <<EOM
4456 #include <stdio.h>
4457 int main() {
4458 #if defined(__GNUC__) && !defined(__INTEL_COMPILER)
4459 #ifdef __VERSION__
4460         printf("%s\n", __VERSION__);
4461 #else
4462         printf("%s\n", "1");
4463 #endif
4464 #endif
4465         return(0);
4466 }
4467 EOM
4468 if $cc -o try $ccflags $ldflags try.c; then
4469         gccversion=`$run ./try`
4470         case "$gccversion" in
4471         '') echo "You are not using GNU cc." ;;
4472         *)  echo "You are using GNU cc $gccversion."
4473             ccname=gcc
4474             ;;
4475         esac
4476 else
4477         echo " "
4478         echo "*** WHOA THERE!!! ***" >&4
4479         echo "    Your C compiler \"$cc\" doesn't seem to be working!" >&4
4480         case "$knowitall" in
4481         '')
4482         echo "    You'd better start hunting for one and let me know about it." >&4
4483                 exit 1
4484                 ;;
4485         esac
4486 fi
4487 $rm -f try try.*
4488 case "$gccversion" in
4489 1*) cpp=`./loc gcc-cpp $cpp $pth` ;;
4490 esac
4491 case "$gccversion" in
4492 '') gccosandvers='' ;;
4493 *) gccshortvers=`echo "$gccversion"|sed 's/ .*//'`
4494    gccosandvers=`$cc -v 2>&1|grep '/specs$'|sed "s!.*/[^-/]*-[^-/]*-\([^-/]*\)/$gccshortvers/specs!\1!"`
4495    gccshortvers=''
4496    case "$gccosandvers" in
4497    $osname) gccosandvers='' ;; # linux gccs seem to have no linux osvers, grr
4498    $osname$osvers) ;; # looking good
4499    $osname*) cat <<EOM >&4
4500
4501 *** WHOA THERE!!! ***
4502
4503     Your gcc has not been compiled for the exact release of
4504     your operating system ($gccosandvers versus $osname$osvers).
4505
4506     In general it is a good idea to keep gcc synchronized with
4507     the operating system because otherwise serious problems
4508     may ensue when trying to compile software, like Perl.
4509
4510     I'm trying to be optimistic here, though, and will continue.
4511     If later during the configuration and build icky compilation
4512     problems appear (headerfile conflicts being the most common
4513     manifestation), I suggest reinstalling the gcc to match
4514     your operating system release.
4515
4516 EOM
4517       ;;
4518    *) gccosandvers='' ;; # failed to parse, better be silent
4519    esac
4520    ;;
4521 esac
4522 case "$ccname" in
4523 '') ccname="$cc" ;;
4524 esac
4525
4526 # gcc 3.* complain about adding -Idirectories that they already know about,
4527 # so we will take those off from locincpth.
4528 case "$gccversion" in
4529 3*)
4530     echo "main(){}">try.c
4531     for incdir in $locincpth; do
4532        warn=`$cc $ccflags -I$incdir -c try.c 2>&1 | \
4533              grep '^c[cp]p*[01]: warning: changing search order '`
4534        if test "X$warn" != X; then
4535            locincpth=`echo " $locincpth " | sed "s! $incdir ! !"`
4536        fi
4537     done
4538     $rm -f try try.*
4539 esac
4540
4541 : What should the include directory be ?
4542 echo " "
4543 $echo $n "Hmm...  $c"
4544 dflt='/usr/include'
4545 incpath=''
4546 mips_type=''
4547 if $test -f /bin/mips && /bin/mips; then
4548         echo "Looks like a MIPS system..."
4549         $cat >usr.c <<'EOCP'
4550 #ifdef SYSTYPE_BSD43
4551 /bsd43
4552 #endif
4553 EOCP
4554         if cc -E usr.c > usr.out && $contains / usr.out >/dev/null 2>&1; then
4555                 dflt='/bsd43/usr/include'
4556                 incpath='/bsd43'
4557                 mips_type='BSD 4.3'
4558         else
4559                 mips_type='System V'
4560         fi
4561         $rm -f usr.c usr.out
4562         echo "and you're compiling with the $mips_type compiler and libraries."
4563         xxx_prompt=y
4564         echo "exit 0" >mips
4565 else
4566         echo "Doesn't look like a MIPS system."
4567         xxx_prompt=n
4568         echo "exit 1" >mips
4569 fi
4570 chmod +x mips
4571 $eunicefix mips
4572 case "$usrinc" in
4573 '') ;;
4574 *) dflt="$usrinc";;
4575 esac
4576 case "$xxx_prompt" in
4577 y)      fn=d/
4578         echo " "
4579         rp='Where are the include files you want to use?'
4580         . ./getfile
4581         usrinc="$ans"
4582         ;;
4583 *)      usrinc="$dflt"
4584         ;;
4585 esac
4586
4587 : see how we invoke the C preprocessor
4588 echo " "
4589 echo "Now, how can we feed standard input to your C preprocessor..." >&4
4590 cat <<'EOT' >testcpp.c
4591 #define ABC abc
4592 #define XYZ xyz
4593 ABC.XYZ
4594 EOT
4595 cd ..
4596 if test ! -f cppstdin; then
4597         if test "X$osname" = "Xaix" -a "X$gccversion" = X; then
4598                 # AIX cc -E doesn't show the absolute headerfile
4599                 # locations but we'll cheat by using the -M flag.
4600                 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
4601         else
4602                 echo 'cat >.$$.c; '"$cc"' -E ${1+"$@"} .$$.c; rm .$$.c' >cppstdin
4603         fi
4604 else
4605         echo "Keeping your $hint cppstdin wrapper."
4606 fi
4607 chmod 755 cppstdin
4608 wrapper=`pwd`/cppstdin
4609 ok='false'
4610 cd UU
4611
4612 if $test "X$cppstdin" != "X" && \
4613         $cppstdin $cppminus <testcpp.c >testcpp.out 2>&1 && \
4614         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4615 then
4616         echo "You used to use $cppstdin $cppminus so we'll use that again."
4617         case "$cpprun" in
4618         '') echo "But let's see if we can live without a wrapper..." ;;
4619         *)
4620                 if $cpprun $cpplast <testcpp.c >testcpp.out 2>&1 && \
4621                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4622                 then
4623                         echo "(And we'll use $cpprun $cpplast to preprocess directly.)"
4624                         ok='true'
4625                 else
4626                         echo "(However, $cpprun $cpplast does not work, let's see...)"
4627                 fi
4628                 ;;
4629         esac
4630 else
4631         case "$cppstdin" in
4632         '') ;;
4633         *)
4634                 echo "Good old $cppstdin $cppminus does not seem to be of any help..."
4635                 ;;
4636         esac
4637 fi
4638
4639 if $ok; then
4640         : nothing
4641 elif echo 'Maybe "'"$cc"' -E" will work...'; \
4642         $cc -E <testcpp.c >testcpp.out 2>&1; \
4643         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4644         echo "Yup, it does."
4645         x_cpp="$cc -E"
4646         x_minus='';
4647 elif echo 'Nope...maybe "'"$cc"' -E -" will work...'; \
4648         $cc -E - <testcpp.c >testcpp.out 2>&1; \
4649         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4650         echo "Yup, it does."
4651         x_cpp="$cc -E"
4652         x_minus='-';
4653 elif echo 'Nope...maybe "'"$cc"' -P" will work...'; \
4654         $cc -P <testcpp.c >testcpp.out 2>&1; \
4655         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4656         echo "Yipee, that works!"
4657         x_cpp="$cc -P"
4658         x_minus='';
4659 elif echo 'Nope...maybe "'"$cc"' -P -" will work...'; \
4660         $cc -P - <testcpp.c >testcpp.out 2>&1; \
4661         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4662         echo "At long last!"
4663         x_cpp="$cc -P"
4664         x_minus='-';
4665 elif echo 'No such luck, maybe "'$cpp'" will work...'; \
4666         $cpp <testcpp.c >testcpp.out 2>&1; \
4667         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4668         echo "It works!"
4669         x_cpp="$cpp"
4670         x_minus='';
4671 elif echo 'Nixed again...maybe "'$cpp' -" will work...'; \
4672         $cpp - <testcpp.c >testcpp.out 2>&1; \
4673         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4674         echo "Hooray, it works!  I was beginning to wonder."
4675         x_cpp="$cpp"
4676         x_minus='-';
4677 elif echo 'Uh-uh.  Time to get fancy.  Trying a wrapper...'; \
4678         $wrapper <testcpp.c >testcpp.out 2>&1; \
4679         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4680         x_cpp="$wrapper"
4681         x_minus=''
4682         echo "Eureka!"
4683 else
4684         dflt=''
4685         rp="No dice.  I can't find a C preprocessor.  Name one:"
4686         . ./myread
4687         x_cpp="$ans"
4688         x_minus=''
4689         $x_cpp <testcpp.c >testcpp.out 2>&1
4690         if $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1 ; then
4691                 echo "OK, that will do." >&4
4692         else
4693 echo "Sorry, I can't get that to work.  Go find one and rerun Configure." >&4
4694                 exit 1
4695         fi
4696 fi
4697
4698 case "$ok" in
4699 false)
4700         cppstdin="$x_cpp"
4701         cppminus="$x_minus"
4702         cpprun="$x_cpp"
4703         cpplast="$x_minus"
4704         set X $x_cpp
4705         shift
4706         case "$1" in
4707         "$cpp")
4708                 echo "Perhaps can we force $cc -E using a wrapper..."
4709                 if $wrapper <testcpp.c >testcpp.out 2>&1; \
4710                         $contains 'abc.*xyz' testcpp.out >/dev/null 2>&1
4711                 then
4712                         echo "Yup, we can."
4713                         cppstdin="$wrapper"
4714                         cppminus='';
4715                 else
4716                         echo "Nope, we'll have to live without it..."
4717                 fi
4718                 ;;
4719         esac
4720         case "$cpprun" in
4721         "$wrapper")
4722                 cpprun=''
4723                 cpplast=''
4724                 ;;
4725         esac
4726         ;;
4727 esac
4728
4729 case "$cppstdin" in
4730 "$wrapper"|'cppstdin') ;;
4731 *) $rm -f $wrapper;;
4732 esac
4733 $rm -f testcpp.c testcpp.out
4734
4735 : Set private lib path
4736 case "$plibpth" in
4737 '') if ./mips; then
4738                 plibpth="$incpath/usr/lib /usr/local/lib /usr/ccs/lib"
4739         fi;;
4740 esac
4741 case "$libpth" in
4742 ' ') dlist='';;
4743 '') dlist="$loclibpth $plibpth $glibpth";;
4744 *) dlist="$libpth";;
4745 esac
4746
4747 : Now check and see which directories actually exist, avoiding duplicates
4748 libpth=''
4749 for xxx in $dlist
4750 do
4751     if $test -d $xxx; then
4752                 case " $libpth " in
4753                 *" $xxx "*) ;;
4754                 *) libpth="$libpth $xxx";;
4755                 esac
4756     fi
4757 done
4758 $cat <<'EOM'
4759
4760 Some systems have incompatible or broken versions of libraries.  Among
4761 the directories listed in the question below, please remove any you
4762 know not to be holding relevant libraries, and add any that are needed.
4763 Say "none" for none.
4764
4765 EOM
4766 case "$libpth" in
4767 '') dflt='none';;
4768 *)
4769         set X $libpth
4770         shift
4771         dflt=${1+"$@"}
4772         ;;
4773 esac
4774 rp="Directories to use for library searches?"
4775 . ./myread
4776 case "$ans" in
4777 none) libpth=' ';;
4778 *) libpth="$ans";;
4779 esac
4780
4781 : compute shared library extension
4782 case "$so" in
4783 '')
4784         if xxx=`./loc libc.sl X $libpth`; $test -f "$xxx"; then
4785                 dflt='sl'
4786         else
4787                 dflt='so'
4788         fi
4789         ;;
4790 *) dflt="$so";;
4791 esac
4792 $cat <<EOM
4793
4794 On some systems, shared libraries may be available.  Answer 'none' if
4795 you want to suppress searching of shared libraries for the remainder
4796 of this configuration.
4797
4798 EOM
4799 rp='What is the file extension used for shared libraries?'
4800 . ./myread
4801 so="$ans"
4802
4803 : Define several unixisms.
4804 : Hints files or command line option can be used to override them.
4805 : The convoluted testing is in case hints files set either the old
4806 : or the new name.
4807 case "$_exe" in
4808 '')     case "$exe_ext" in
4809         '')     ;;
4810         *)      _exe="$exe_ext" ;;
4811         esac
4812         ;;
4813 esac
4814 case "$_a" in
4815 '')     case "$lib_ext" in
4816     '') _a='.a';;
4817         *)      _a="$lib_ext" ;;
4818         esac
4819         ;;
4820 esac
4821 case "$_o" in
4822 '') case "$obj_ext" in
4823         '')     _o='.o';;
4824         *)      _o="$obj_ext";;
4825         esac
4826         ;;
4827 esac
4828 case "$p_" in
4829 '') case "$path_sep" in
4830         '')     p_=':';;
4831         *)      p_="$path_sep";;
4832         esac
4833         ;;
4834 esac
4835 exe_ext=$_exe
4836 lib_ext=$_a
4837 obj_ext=$_o
4838 path_sep=$p_
4839
4840 rm_try="$rm -f try try$_exe a.out .out try.[cho] try.$_o core core.try* try.core*"
4841
4842 : Which makefile gets called first.  This is used by make depend.
4843 case "$firstmakefile" in
4844 '') firstmakefile='makefile';;
4845 esac
4846
4847 case "$ccflags" in
4848 *-DUSE_LONG_DOUBLE*|*-DUSE_MORE_BITS*) uselongdouble="$define" ;;
4849 esac
4850
4851 case "$uselongdouble" in
4852 $define|true|[yY]*)     dflt='y';;
4853 *) dflt='n';;
4854 esac
4855 cat <<EOM
4856
4857 Perl can be built to take advantage of long doubles which
4858 (if available) may give more accuracy and range for floating point numbers.
4859