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