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