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