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