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