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