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