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