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