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