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