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